diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..f9dbfe0c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,9 @@ +--- +version: 2 +updates: + - package-ecosystem: "pip" + directory: "/" + schedule: + interval: "weekly" + allow: + - dependency-type: "direct" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9bef3025..95628584 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,6 +17,8 @@ jobs: uses: "actions/checkout@v2" - name: "Setup environment" uses: "networktocode/gh-action-setup-poetry-environment@v2" + with: + python-version: "3.11" - name: "Linting: black" run: "poetry run invoke black" bandit: @@ -28,6 +30,8 @@ jobs: uses: "actions/checkout@v2" - name: "Setup environment" uses: "networktocode/gh-action-setup-poetry-environment@v2" + with: + python-version: "3.11" - name: "Linting: bandit" run: "poetry run invoke bandit" needs: @@ -41,6 +45,8 @@ jobs: uses: "actions/checkout@v2" - name: "Setup environment" uses: "networktocode/gh-action-setup-poetry-environment@v2" + with: + python-version: "3.11" - name: "Type-Hints: mypy" run: "poetry run invoke mypy" needs: @@ -54,6 +60,8 @@ jobs: uses: "actions/checkout@v2" - name: "Setup environment" uses: "networktocode/gh-action-setup-poetry-environment@v2" + with: + python-version: "3.11" - name: "Linting: pydocstyle" run: "poetry run invoke pydocstyle" needs: @@ -67,6 +75,8 @@ jobs: uses: "actions/checkout@v2" - name: "Setup environment" uses: "networktocode/gh-action-setup-poetry-environment@v2" + with: + python-version: "3.11" - name: "Linting: flake8" run: "poetry run invoke flake8" needs: @@ -80,6 +90,8 @@ jobs: uses: "actions/checkout@v2" - name: "Setup environment" uses: "networktocode/gh-action-setup-poetry-environment@v2" + with: + python-version: "3.11" - name: "Linting: yamllint" run: "poetry run invoke yamllint" needs: @@ -88,7 +100,7 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.7", "3.8", "3.9", "3.10"] + python-version: ["3.8", "3.9", "3.10", "3.11"] runs-on: "ubuntu-20.04" env: PYTHON_VER: "${{ matrix.python-version }}" @@ -125,7 +137,7 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.7"] + python-version: ["3.11"] env: PYTHON_VER: "${{ matrix.python-version }}" steps: @@ -161,7 +173,7 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.7", "3.8", "3.9", "3.10"] + python-version: ["3.8", "3.9", "3.10", "3.11"] runs-on: "ubuntu-20.04" env: PYTHON_VER: "${{ matrix.python-version }}" @@ -208,7 +220,7 @@ jobs: - name: "Set up Python" uses: "actions/setup-python@v2" with: - python-version: "3.9" + python-version: "3.11" - name: "Install Python Packages" run: "pip install poetry" - name: "Set env" @@ -237,7 +249,7 @@ jobs: - name: "Set up Python" uses: "actions/setup-python@v2" with: - python-version: "3.9" + python-version: "3.11" - name: "Install Python Packages" run: "pip install poetry" - name: "Set env" diff --git a/.github/workflows/oui_filepull.yml b/.github/workflows/oui_filepull.yml index fb77c97c..ab396a64 100644 --- a/.github/workflows/oui_filepull.yml +++ b/.github/workflows/oui_filepull.yml @@ -1,7 +1,7 @@ --- name: "OUI-Updates" -on: # yamllint disable-line rule:truthy +on: # yamllint disable-line rule:truthy schedule: - cron: "0 8 * * 4" @@ -11,19 +11,20 @@ jobs: env: BRANCH_NAME: "OUI_Updates" steps: - - name: "Delete existing branch" - run: "git branch -D $BRANCH_NAME || true" # Checkout repo - name: "Check out code" uses: "actions/checkout@v2" with: ref: "develop" + # Delete old branch if it exists + - name: "Delete existing branch" + run: "git branch -D $BRANCH_NAME || true" # Create branch for Flatbot - name: "Create Flatbot branch" run: "git checkout -b $BRANCH_NAME" # Push new branch so Flatbot can make its commit - name: "Push Flatbot branch" - run: "git push --set-upstream origin $BRANCH_NAME" + run: "git push -f --set-upstream origin $BRANCH_NAME" # This step installs Deno, which is a new Javascript runtime that improves on Node. Can be used for an optional postprocessing step - name: "Setup deno" uses: "denoland/setup-deno@main" diff --git a/.github/workflows/proto_filepull.yml b/.github/workflows/proto_filepull.yml index 587afff7..bf02c00c 100644 --- a/.github/workflows/proto_filepull.yml +++ b/.github/workflows/proto_filepull.yml @@ -1,7 +1,7 @@ --- name: "Protocol-Updates" -on: # yamllint disable-line rule:truthy +on: # yamllint disable-line rule:truthy schedule: - cron: "0 8 * * 4" @@ -16,12 +16,15 @@ jobs: uses: "actions/checkout@v2" with: ref: "develop" + # Delete old branch if it exists + - name: "Delete existing branch" + run: "git branch -D $BRANCH_NAME || true" # Create branch for Flatbot - name: "Create Flatbot branch" run: "git checkout -b $BRANCH_NAME" # Push new branch so Flatbot can make its commit - name: "Push Flatbot branch" - run: "git push --set-upstream origin $BRANCH_NAME" + run: "git push -f --set-upstream origin $BRANCH_NAME" # Install Black - name: "Install Python Black" run: "pip install black" diff --git a/development_scripts.py b/development_scripts.py index c77fc8a0..326633a0 100644 --- a/development_scripts.py +++ b/development_scripts.py @@ -106,6 +106,18 @@ "_dict": lib_mapper.SCRAPLI_LIB_MAPPER_REVERSE, "_file": "docs/user/lib_mapper/scrapli_reverse.md", }, + "hierconfig": { + "header_src": "HIERCONFIG", + "header_dst": "NORMALIZED", + "_dict": lib_mapper.HIERCONFIG_LIB_MAPPER, + "_file": "docs/user/lib_mapper/hierconfig.md", + }, + "hierconfig_reverse": { + "header_src": "NORMALIZED", + "header_dst": "HIERCONFIG", + "_dict": lib_mapper.HIERCONFIG_LIB_MAPPER_REVERSE, + "_file": "docs/user/lib_mapper/hierconfig_reverse.md", + }, }, "PARSER_MAPPER_TEMPLATE": { "default": { diff --git a/docs/admin/release_notes/version_1.3.md b/docs/admin/release_notes/version_1.3.md index ba891d81..e527abb5 100644 --- a/docs/admin/release_notes/version_1.3.md +++ b/docs/admin/release_notes/version_1.3.md @@ -7,6 +7,7 @@ - Added first getter feature with Napalm Getter feature. - Converted to mkdocs docs. - Added Citrix NetScaler Parser. +- Removed support for Python 3.6. ## [v1.3.0] - 2022-11 @@ -22,4 +23,8 @@ - [#152](https://github.com/networktocode/netutils/pull/152) Converted to mkdocs docs. - [#154](https://github.com/networktocode/netutils/pull/154) Update testing mock strategy for config parsers. - [#155](https://github.com/networktocode/netutils/pull/155) Update links to render properly on rtd and pypi. -- [#159](https://github.com/networktocode/netutils/pull/159) Change how dunder version is created. \ No newline at end of file +- [#159](https://github.com/networktocode/netutils/pull/159) Change how dunder version is created. + +### Removed + +- [#152](https://github.com/networktocode/netutils/pull/152) Removed support for Python 3.6. diff --git a/docs/admin/release_notes/version_1.5.md b/docs/admin/release_notes/version_1.5.md new file mode 100755 index 00000000..18c0317b --- /dev/null +++ b/docs/admin/release_notes/version_1.5.md @@ -0,0 +1,49 @@ +# v1.5 Release Notes + +## Release Overview + +- Added Mikrotik, fastiron, and Panos parsers. +- Added function to allow conversion from Panos curly bracket to set format. +- Updated Interface mappings for FourHundredGigabitEthernet and TwoGigabitEthernet. +- Added Encryption/Decryption/Comparison for Cisco & Juniper Type 9. +- Added Regex functions to primarily be used wihin your Jinja2 environment. + +## Announcements + +- Deprecation of compare_type5, compare_type7, encrypt_type7, encrypt_type5, and decrypt_type7 in favor of vendor namespaced functions, such as compare_cisco_type5 and decrypt_cisco_type7 to take place on netutils 2.0. +- Support for Python 3.7 is dropped. + +## [v1.5.0] - 2023-07 + +### Added + +- [#223](https://github.com/networktocode/netutils/pull/223) Interface abbreviation for TwoGigabitEthernet. +- [#227](https://github.com/networktocode/netutils/pull/227) Add functions for encrypting and decrypting junipter $9$ type passwords. +- [#244](https://github.com/networktocode/netutils/pull/244) Added Mikrotik RouterOS Parser. +- [#252](https://github.com/networktocode/netutils/pull/252) New lib mapper to translate between normalized network OS names and names used by hier_config. +- [#253](https://github.com/networktocode/netutils/pull/253) Add encrypt_type9 (changed to encrypt_cisco_type9) function to netutils.password. +- [#261](https://github.com/networktocode/netutils/pull/261) Added function get_upgrade_path to provide the step upgrade path of to a new version. +- [#262](https://github.com/networktocode/netutils/pull/262) Added Palo Alto networks panos parser. +- [#262](https://github.com/networktocode/netutils/pull/262) Added Palo Alto brace to set conversion function. +- [#264](https://github.com/networktocode/netutils/pull/264) Added Ruckus fastiron parser. +- [#285](https://github.com/networktocode/netutils/pull/285) Added FourHundredGigabitEthernet to REVERSE_MAPPING. +- [#318](https://github.com/networktocode/netutils/pull/318) Added Regex functions to primarily be used wihin your Jinja2 environment. + +### Changed + +- [#213](https://github.com/networktocode/netutils/pull/213) Clarify when Python 3.6 support was dropped. +- [#286](https://github.com/networktocode/netutils/pull/286) Move password helper names to be namespaced with vendor information. Assign new name to old name to not break semver. +- [#317](https://github.com/networktocode/netutils/pull/317) Dropped Python 3.6 and bump version of dev dependencies. + + +### Fixed + +- [#217](https://github.com/networktocode/netutils/pull/217) Moved where deletion of branch took place in workflow. +- [#218](https://github.com/networktocode/netutils/pull/218) Create dependabot.yml to fix itdependsabot. +- [#219](https://github.com/networktocode/netutils/pull/219) Fix vlanlist_to_config failing on empty list. +- [#224](https://github.com/networktocode/netutils/pull/224) Add Interface type for Cisco App-hosting port. +- [#284](https://github.com/networktocode/netutils/pull/284) Add -f to flatbot branch pushes. +- [#304](https://github.com/networktocode/netutils/pull/304) Update hier_config docs and add fastiron to NAPALM mapper. +- [#305](https://github.com/networktocode/netutils/pull/305) Fixed OS Version docs showing in mkdocs. +- [#316](https://github.com/networktocode/netutils/pull/316) Update panos conversion function to strip out `devices localhost.localdomain`. +- [#317](https://github.com/networktocode/netutils/pull/317) Fix Citrix mock tests file location to correctly run. \ No newline at end of file diff --git a/docs/dev/attribution.md b/docs/dev/attribution.md index 135ecf6e..aabb6b3a 100644 --- a/docs/dev/attribution.md +++ b/docs/dev/attribution.md @@ -13,16 +13,16 @@ Influencers In many instances variables and function names were reused, but the code was built from scratch to avoid any potential licensing issues. Functions that were known to be rewritten and their known origin. -| Function | Origin | -| ---------------- | ------- | -| asn_to_int | NAPALM | -| is_ip | IPCal | -| ip_to_bin | IPCal | -| get_usable_range | IPCal | -| encrypt_type7 | unknown | -| decrypt_type7 | unknown | -| vlan_to_list | Ansible | -| sanitize_config | NAPALM | +| Function | Origin | +| ------------------- | ------- | +| asn_to_int | NAPALM | +| is_ip | IPCal | +| ip_to_bin | IPCal | +| get_usable_range | IPCal | +| encrypt_cisco_type7 | unknown | +| decrypt_cisco_type7 | unknown | +| vlan_to_list | Ansible | +| sanitize_config | NAPALM | Relevant PR's diff --git a/docs/dev/code_reference/os_version.md b/docs/dev/code_reference/os_version.md new file mode 100644 index 00000000..268e7da3 --- /dev/null +++ b/docs/dev/code_reference/os_version.md @@ -0,0 +1,5 @@ +# OS Version + +::: netutils.os_version + options: + show_submodules: True \ No newline at end of file diff --git a/docs/dev/code_reference/regex.md b/docs/dev/code_reference/regex.md new file mode 100644 index 00000000..9c18b84c --- /dev/null +++ b/docs/dev/code_reference/regex.md @@ -0,0 +1,5 @@ +# Regex + +::: netutils.regex + options: + show_submodules: True \ No newline at end of file diff --git a/docs/dev/dev_config.md b/docs/dev/dev_config.md index a6ec9673..86901d56 100644 --- a/docs/dev/dev_config.md +++ b/docs/dev/dev_config.md @@ -26,6 +26,10 @@ The section banners have been simplified to extract the section header itself. T As the NetScaler configuration uses each line to make a specific configuration change there is no support for parent/child relationships in the parser. +### Palo Alto Conversion + +The conversion from curly to set format via the `paloalto_panos_brace_to_set` function strips any usage of `devices localhost.localdomain`. This will be evaluated in the future to be configurable but it is the current intention. + ### Duplicate Line Detection In some circumstances replacing lines, such as secrets without uniqueness in the replacement, will result in duplicated lines that are invalid configuration, such as:: diff --git a/docs/dev/include_parser_list.md b/docs/dev/include_parser_list.md index 65279f72..721a2255 100644 --- a/docs/dev/include_parser_list.md +++ b/docs/dev/include_parser_list.md @@ -13,5 +13,8 @@ | fortinet_fortios | netutils.config.parser.FortinetConfigParser | | juniper_junos | netutils.config.parser.JunosConfigParser | | linux | netutils.config.parser.LINUXConfigParser | +| mikrotik_routeros | netutils.config.parser.RouterOSConfigParser | | mrv_optiswitch | netutils.config.parser.OptiswitchConfigParser | -| nokia_sros | netutils.config.parser.NokiaConfigParser | \ No newline at end of file +| nokia_sros | netutils.config.parser.NokiaConfigParser | +| paloalto_panos | netutils.config.parser.PaloAltoNetworksConfigParser | +| ruckus_fastiron | netutils.config.parser.FastironConfigParser | \ No newline at end of file diff --git a/docs/requirements.txt b/docs/requirements.txt index f403e1aa..8e223b74 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,8 +1,8 @@ -mkdocs==1.3.1 +mkdocs==1.4.3 # Material for MkDocs theme -mkdocs-material==8.3.9 +mkdocs-material==8.5.8 # Render custom markdown for version added/changed/remove notes mkdocs-version-annotations==1.0.0 # Automatic documentation from sources, for MkDocs -mkdocstrings==0.19 -mkdocstrings-python==0.7.1 \ No newline at end of file +mkdocstrings==0.22.0 +mkdocstrings-python==1.1.2 \ No newline at end of file diff --git a/docs/user/include_jinja_list.md b/docs/user/include_jinja_list.md index 219e04db..4be27d36 100644 --- a/docs/user/include_jinja_list.md +++ b/docs/user/include_jinja_list.md @@ -16,6 +16,7 @@ | feature_compliance | netutils.config.compliance.feature_compliance | | find_unordered_cfg_lines | netutils.config.compliance.find_unordered_cfg_lines | | section_config | netutils.config.compliance.section_config | +| paloalto_panos_brace_to_set | netutils.config.conversion.paloalto_panos_brace_to_set | | fqdn_to_ip | netutils.dns.fqdn_to_ip | | is_fqdn_resolvable | netutils.dns.is_fqdn_resolvable | | abbreviated_interface_name | netutils.interface.abbreviated_interface_name | @@ -51,13 +52,28 @@ | mac_to_format | netutils.mac.mac_to_format | | mac_to_int | netutils.mac.mac_to_int | | mac_type | netutils.mac.mac_type | +| get_upgrade_path | netutils.os_version.get_upgrade_path | +| compare_cisco_type5 | netutils.password.compare_cisco_type5 | +| compare_cisco_type7 | netutils.password.compare_cisco_type7 | +| compare_cisco_type9 | netutils.password.compare_cisco_type9 | | compare_type5 | netutils.password.compare_type5 | | compare_type7 | netutils.password.compare_type7 | +| decrypt_cisco_type7 | netutils.password.decrypt_cisco_type7 | +| decrypt_juniper_type9 | netutils.password.decrypt_juniper_type9 | | decrypt_type7 | netutils.password.decrypt_type7 | +| encrypt_cisco_type5 | netutils.password.encrypt_cisco_type5 | +| encrypt_cisco_type7 | netutils.password.encrypt_cisco_type7 | +| encrypt_cisco_type9 | netutils.password.encrypt_cisco_type9 | +| encrypt_juniper_type9 | netutils.password.encrypt_juniper_type9 | | encrypt_type5 | netutils.password.encrypt_type5 | | encrypt_type7 | netutils.password.encrypt_type7 | | get_hash_salt | netutils.password.get_hash_salt | | tcp_ping | netutils.ping.tcp_ping | +| regex_findall | netutils.regex.regex_findall | +| regex_match | netutils.regex.regex_match | +| regex_search | netutils.regex.regex_search | +| regex_split | netutils.regex.regex_split | +| regex_sub | netutils.regex.regex_sub | | longest_prefix_match | netutils.route.longest_prefix_match | | uptime_seconds_to_string | netutils.time.uptime_seconds_to_string | | uptime_string_to_seconds | netutils.time.uptime_string_to_seconds | diff --git a/docs/user/lib_mapper/hierconfig.md b/docs/user/lib_mapper/hierconfig.md new file mode 100644 index 00000000..24ebb3e9 --- /dev/null +++ b/docs/user/lib_mapper/hierconfig.md @@ -0,0 +1,8 @@ +| HIERCONFIG | | NORMALIZED | +| ---------- | -- | ------ | +| eos | → | arista_eos | +| fastiron | → | ruckus_fastiron | +| ios | → | cisco_ios | +| iosxe | → | cisco_xe | +| iosxr | → | cisco_xr | +| nxos | → | cisco_nxos | \ No newline at end of file diff --git a/docs/user/lib_mapper/hierconfig_reverse.md b/docs/user/lib_mapper/hierconfig_reverse.md new file mode 100644 index 00000000..e0d18b83 --- /dev/null +++ b/docs/user/lib_mapper/hierconfig_reverse.md @@ -0,0 +1,8 @@ +| NORMALIZED | | HIERCONFIG | +| ---------- | -- | ------ | +| arista_eos | → | eos | +| cisco_ios | → | ios | +| cisco_nxos | → | nxos | +| cisco_xe | → | iosxe | +| cisco_xr | → | iosxr | +| ruckus_fastiron | → | fastiron | \ No newline at end of file diff --git a/docs/user/lib_mapper/napalm.md b/docs/user/lib_mapper/napalm.md index 2e2a792f..4216e4c0 100644 --- a/docs/user/lib_mapper/napalm.md +++ b/docs/user/lib_mapper/napalm.md @@ -12,5 +12,6 @@ | nxos | → | cisco_nxos | | nxos_ssh | → | cisco_nxos | | panos | → | paloalto_panos | +| ros | → | mikrotik_routeros | | sros | → | nokia_sros | | vyos | → | brocade_vyos | \ No newline at end of file diff --git a/docs/user/lib_mapper/napalm_reverse.md b/docs/user/lib_mapper/napalm_reverse.md index 0cb9f5af..a4b7b8b3 100644 --- a/docs/user/lib_mapper/napalm_reverse.md +++ b/docs/user/lib_mapper/napalm_reverse.md @@ -11,5 +11,6 @@ | fortinet | → | fortios | | huawei_vrp | → | huawei | | juniper_junos | → | junos | +| mikrotik_routeros | → | ros | | nokia_sros | → | sros | | paloalto_panos | → | panos | \ No newline at end of file diff --git a/docs/user/lib_upgrade_paths.md b/docs/user/lib_upgrade_paths.md new file mode 100644 index 00000000..0e0d9b7d --- /dev/null +++ b/docs/user/lib_upgrade_paths.md @@ -0,0 +1,10 @@ +# Upgrade Paths + +The `UPGRADE_PATHS` definition in constants is maintained based on the following rules: + +* They are not considered vendor recommendations, instead an interpretation based on the open source contributor. +* There is no expectation they will be updated, as such issues requesting updates will be closed but PRs to update--following the below rules--will be accepted. +* The lists can only be modified by added to during any patch or minor version. +* The list cannot be modified in any other way. +* Generate a new versioned list, e.g. PANOS_OFFICIAL_V2 vs PANOS_OFFICIAL_V1 and create an alternate list. +* During major version changes (e.g. 1.x.x to 2.x.x) lists may be removed. diff --git a/docs/user/lib_use_cases.md b/docs/user/lib_use_cases.md index 47e49876..2e01aa04 100644 --- a/docs/user/lib_use_cases.md +++ b/docs/user/lib_use_cases.md @@ -54,12 +54,12 @@ The following function will help in deploying list of VLANs and match the config You may want to compare a known password with a given encrypted password. This can help in verifying if the passwords are as expected for compliance reasons. ```python ->>> from netutils.password import compare_type5 +>>> from netutils.password import compare_cisco_type5 >>> ->>> compare_type5("cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") +>>> compare_cisco_type5("cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") True >>> ->>> compare_type5("not_cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") +>>> compare_cisco_type5("not_cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") False >>> ``` diff --git a/docs/user/lib_use_cases_jinja_filters.md b/docs/user/lib_use_cases_jinja_filters.md index d433d54d..8cdd4756 100644 --- a/docs/user/lib_use_cases_jinja_filters.md +++ b/docs/user/lib_use_cases_jinja_filters.md @@ -1,6 +1,6 @@ # Netutils to Jinja2 Filters -In an effort to simplify the process of adding netutils' functions to jinja2 as filters we have created a convenience function. Let's go through how you could add the filters to your jinja2 environment. +In an effort to simplify the process of adding netutils' functions to Jinja2 as filters we have created a convenience function. Let's go through how you could add the filters to your Jinja2 environment. Here is the current folder structure. ```bash @@ -58,7 +58,7 @@ class FilterModule(object): ## ipaddress Convenience Functions -When adding the netutils functions to your jinja2 environment, you also gain access to the built-in ipaddress python library using these three jinja2 filters. +When adding the netutils functions to your Jinja2 environment, you also gain access to the built-in ipaddress python library using these three Jinja2 filters. ```python "ipaddress_address": "ip.ipaddress_address", @@ -108,6 +108,78 @@ When you run `jinja2_environment.py` the output will be: The version of 192.168.0.1/24 is IPv4. ``` +## regex Convenience Functions + +When adding the netutils functions to your Jinja2 environment, you also gain access to the built-in `re` python library using these Jinja2 filters. + +```python + "regex_findall": "regex.regex_findall", + "regex_match": "regex.regex_match", + "regex_search": "regex.regex_search", + "regex_split": "regex.regex_split", + "regex_sub": "regex.regex_sub", +``` + +These functions will always return a json serializable object and not a complex object like `re.Match` or similar to better serve the primary use case of functions to be used as Jinja2 filters. After all, they are simply small wrappers around Python `re` functions, the Python provided `re` functionality should be preferred when not using Jinja2 or similar templating language. + +Below is code that you can drop into your Python shell to help bring to life how these regex functions can be used. + +```python +from jinja2 import Environment, BaseLoader +from netutils.utils import jinja2_convenience_function + +env = Environment(loader=BaseLoader()) +env.filters.update(jinja2_convenience_function()) + +DATA = { + "device": "USSCAMS07", + "comma_seperated_devices": "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01" +} + +TEMPLATE_STRING = """ +{% set device_details = '([A-Z]{2})([A-Z]{2})([A-Z]{3})(\d*)' | regex_match(device) %} + +Country: {{ ('^([A-Z]{2})([A-Z]{2})([A-Z]{3})(\d*)' | regex_search(device))[0] }} +STATE: {{ device_details[1] }} +FUNCTION: {{ device_details[2] }} + +ALL DEVICES: +{% for router in ',' | regex_split(comma_seperated_devices) -%} + - {{ router }} +{% endfor %} + +ONLY ROUTERS: +{% for router in ',' | regex_split(comma_seperated_devices) -%} +{% if '-RT' | regex_search(router) -%} + - {{ router }} +{% endif -%} +{% endfor %} +""" + +template = env.from_string(TEMPLATE_STRING, DATA) +result = template.render() +print(result) +``` + +Which would result in the following output. + +```text +Country: US +STATE: SC +FUNCTION: AMS + +ALL DEVICES: +- NYC-RT01 +- NYC-RT02 +- SFO-SW01 +- SFO-RT01 + +ONLY ROUTERS: +- NYC-RT01 +- NYC-RT02 +- SFO-RT01 +``` + ## Netutils to Jinja2 Filters List @@ -115,6 +187,6 @@ The below list shows what jinja2 filters are added when you add them using the p !!! note - The jinja2 filter names match the python function names. + The Jinja2 filter names match the python function names. --8<-- "docs/user/include_jinja_list.md" \ No newline at end of file diff --git a/docs/user/lib_use_cases_lib_mapper.md b/docs/user/lib_use_cases_lib_mapper.md index f73e4e24..8987d1de 100644 --- a/docs/user/lib_use_cases_lib_mapper.md +++ b/docs/user/lib_use_cases_lib_mapper.md @@ -86,3 +86,8 @@ Another use case could be using an example like the above in an Ansible filter. ## Reverse Scrapli Mapper --8<-- "docs/user/lib_mapper/scrapli_reverse.md" +## Hier Config Mapper +--8<-- "docs/user/lib_mapper/hierconfig.md" + +## Reverse Hier Config Mapper +--8<-- "docs/user/lib_mapper/hierconfig_reverse.md" \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index ffc12202..981c82da 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -100,6 +100,7 @@ nav: - Jinja Filters: "user/lib_use_cases_jinja_filters.md" - Library Mapper: "user/lib_use_cases_lib_mapper.md" - Protocol Mapper: "user/lib_use_cases_protocol_mappers.md" + - Upgrade Paths: "user/lib_upgrade_paths.md" - Getting Started: "user/lib_getting_started.md" - Frequently Asked Questions: "user/faq.md" - Administrator Guide: @@ -133,9 +134,11 @@ nav: - Library Helpers: "dev/code_reference/lib_helpers.md" - Library Mapping: "dev/code_reference/lib_mapping.md" - Mac Address: "dev/code_reference/mac.md" + - OS Version: "dev/code_reference/os_version.md" - Password: "dev/code_reference/password.md" - Ping: "dev/code_reference/ping.md" - Protocol Mapper: "dev/code_reference/protocol_mapper.md" + - Regex: "dev/code_reference/regex.md" - Route: "dev/code_reference/route.md" - Time: "dev/code_reference/time.md" - Utils: "dev/code_reference/utils.md" diff --git a/netutils/__init__.py b/netutils/__init__.py index e8a44b14..df4d8a29 100644 --- a/netutils/__init__.py +++ b/netutils/__init__.py @@ -1,9 +1,7 @@ """Initialization file for library.""" -try: - from importlib import metadata # type: ignore[attr-defined] -except ImportError: - # Python version < 3.8 - import importlib_metadata as metadata # type: ignore[no-redef] + +from importlib import metadata + __version__ = metadata.version(__name__) diff --git a/netutils/config/compliance.py b/netutils/config/compliance.py index 59e176bd..4cafc783 100644 --- a/netutils/config/compliance.py +++ b/netutils/config/compliance.py @@ -2,6 +2,8 @@ import typing as t +from netutils.config.utils import _open_file_config + from . import parser # pylint: disable=relative-beyond-top-level parser_map: t.Dict[str, t.Type[parser.BaseConfigParser]] = { @@ -20,8 +22,12 @@ "aruba_aoscx": parser.ArubaConfigParser, "mrv_optiswitch": parser.OptiswitchConfigParser, "extreme_netiron": parser.NetironConfigParser, + "paloalto_panos": parser.PaloAltoNetworksConfigParser, + "mikrotik_routeros": parser.RouterOSConfigParser, + "ruckus_fastiron": parser.FastironConfigParser, } + # TODO: Once support for 3.7 is dropped, there should be a typing.TypedDict for this which should then also be used # as the return type for a bunch of the following methods. default_feature: t.Dict[str, t.Union[str, bool, None]] = { @@ -106,15 +112,6 @@ def _is_feature_ordered_compliant(feature_intended_cfg: str, feature_actual_cfg: return False -def _open_file_config(cfg_path: str) -> str: - """Open config file from local disk.""" - # This might fail, raising an IOError - with open(cfg_path, encoding="utf-8") as filehandler: - device_cfg = filehandler.read() - - return device_cfg.strip() - - def compliance( features: t.List[t.Dict[str, t.Union[str, bool, t.List[str]]]], backup: str, diff --git a/netutils/config/conversion.py b/netutils/config/conversion.py new file mode 100644 index 00000000..23325a2f --- /dev/null +++ b/netutils/config/conversion.py @@ -0,0 +1,98 @@ +"""Configuration conversion methods for different network operating systems.""" + +import typing as t + +from netutils.config.utils import _open_file_config + +conversion_map: t.Dict[str, t.List[str]] = { + "paloalto_panos": ["paloalto_panos_brace_to_set"], +} + + +def paloalto_panos_brace_to_set(cfg: str, cfg_type: str = "file") -> str: + r"""Convert Palo Alto Brace format configuration to set format. + + Args: + cfg: Configuration as a string + cfg_type: A string that is effectively a choice between `file` and `string`. Defaults to `file`. + + Returns: + str: Converted configuration as a string. + + Examples: + >>> config = ''' + ... config { + ... mgt-config { + ... users { + ... admin { + ... phash *; + ... permissions { + ... role-based { + ... superuser yes; + ... } + ... } + ... public-key thisisasuperduperlongbase64encodedstring; + ... } + ... panadmin { + ... permissions { + ... role-based { + ... superuser yes; + ... } + ... } + ... phash passwordhash; + ... } + ... } + ... } + ... }''' + >>> paloalto_panos_brace_to_set(cfg=config, cfg_type='string') == \ + ... '''set mgt-config users admin phash * + ... set mgt-config users admin permissions role-based superuser yes + ... set mgt-config users admin public-key thisisasuperduperlongbase64encodedstring + ... set mgt-config users panadmin permissions role-based superuser yes + ... set mgt-config users panadmin phash passwordhash''' + True + """ + stack: t.List[str] = [] + cfg_value: t.List[str] = [] + cfg_string: str = "" + + if cfg_type not in ["file", "string"]: + raise ValueError("The variable `cfg_type` must be either `file` or `string`.") + if cfg_type == "file": + cfg_list = _open_file_config(cfg).splitlines() + else: + cfg_list = cfg.splitlines() + + for i, line in enumerate(cfg_list): + line = line.strip() + if line.endswith(";") and not line.endswith('";'): + line = line.split(";", 1)[0] + line = "".join(str(s) for s in stack) + line + line = line.split("config ", 1)[1] + line = "set " + line + cfg_value.append(line.strip()) + elif line.endswith('login-banner "') or line.endswith('content "'): + _first_banner_line = "".join(str(s) for s in stack) + line + cfg_value.append("set " + _first_banner_line.split("config ", 1)[1]) + + for banner_line in cfg_list[i + 1:]: # fmt: skip + if '"' in banner_line: + banner_line = banner_line.split(";", 1)[0] + cfg_value.append(banner_line.strip()) + break + cfg_value.append(banner_line.strip()) + elif line.endswith("{"): + stack.append(line[:-1]) + elif line == "}" and len(stack) > 0: + stack.pop() + + for _l, _line in enumerate(cfg_value): + cfg_string += _line + if _l < len(cfg_value) - 1: + cfg_string += "\n" + + # Filter out 'devices localhost.local domain' from the entire cfg_string + # TODO: Add flagging capability to disable this behavior + cfg_string = cfg_string.replace("devices localhost.localdomain ", "") + + return cfg_string diff --git a/netutils/config/parser.py b/netutils/config/parser.py index a07d56fa..90c3e139 100644 --- a/netutils/config/parser.py +++ b/netutils/config/parser.py @@ -6,6 +6,7 @@ from collections import namedtuple from netutils.banner import normalise_delimiter_caret_c +from netutils.config.conversion import paloalto_panos_brace_to_set ConfigLine = namedtuple("ConfigLine", "config_line,parents") @@ -13,9 +14,6 @@ class BaseConfigParser: """Base class for parsers.""" - # pylint: disable=abstract-method - # The pylint disable on the previous line can be removed once support for Python 3.7 is dropped. - comment_chars = ["!"] banner_start = ["banner", "vacant-message"] @@ -50,8 +48,8 @@ def build_config_relationship(self) -> t.List[ConfigLine]: class BaseSpaceConfigParser(BaseConfigParser): """Base parser class for config syntax that demarcates using spaces/indentation.""" + # TODO: Review if this can be removed # pylint: disable=abstract-method - # The pylint disable on the previous line can be removed once support for Python 3.7 is dropped. comment_chars = ["!"] banner_start = ["banner", "vacant-message"] @@ -291,7 +289,7 @@ def build_config_relationship(self) -> t.List[ConfigLine]: >>> config = ( ... "interface Ethernet1/1\n" ... " vlan 10\n" - ... " no shutdown" + ... " no shutdown\n" ... "interface Ethernet1/2\n" ... " shutdown\n" ... ) @@ -300,8 +298,9 @@ def build_config_relationship(self) -> t.List[ConfigLine]: ... [ ... ConfigLine(config_line='interface Ethernet1/1', parents=()), ... ConfigLine(config_line=' vlan 10', parents=('interface Ethernet1/1',)), - ... ConfigLine(config_line=' no shutdowninterface Ethernet1/2', parents=('interface Ethernet1/1',)), - ... ConfigLine(config_line=' shutdown', parents=('interface Ethernet1/1',)) + ... ConfigLine(config_line=' no shutdown', parents=('interface Ethernet1/1',)), + ... ConfigLine(config_line='interface Ethernet1/2', parents=(),), + ... ConfigLine(config_line=' shutdown', parents=('interface Ethernet1/2',)) ... ] True """ @@ -411,12 +410,9 @@ def find_children_w_parents( return config -class BaseBraceConfigParser(BaseConfigParser): +class BaseBraceConfigParser(BaseConfigParser): # pylint: disable=abstract-method """Base parser class for config syntax that demarcates using braces.""" - # pylint: disable=abstract-method - # The pylint disable on the previous line can be removed once support for Python 3.7 is dropped. - multiline_delimiters: t.List[str] = [] @property @@ -764,7 +760,7 @@ def __init__(self, config: str): """ super().__init__(self._clean_config_f5(config)) - def _clean_config_f5(self, config_text: str) -> str: # pylint: disable=no-self-use + def _clean_config_f5(self, config_text: str) -> str: """Removes all configuration items with 'ltm rule'. iRules are essentially impossible to parse with the lack of uniformity, @@ -989,7 +985,7 @@ def __init__(self, config: str): self.uncommon_data = self._get_uncommon_lines(config) super(FortinetConfigParser, self).__init__(config) - def is_end_next(self, line: str) -> bool: # pylint: disable=no-self-use + def is_end_next(self, line: str) -> bool: """Determine if line has 'end' or 'next' in it. Args: @@ -1010,7 +1006,7 @@ def is_end_next(self, line: str) -> bool: # pylint: disable=no-self-use return True return False - def _parse_out_offending(self, config: str) -> str: # pylint: disable=no-self-use + def _parse_out_offending(self, config: str) -> str: """Preprocess out strings that offend the normal spaced configuration syntax. Args: @@ -1040,7 +1036,7 @@ def config_lines_only(self) -> str: self._config = "\n".join(config_lines) return self._config - def _get_uncommon_lines(self, config: str) -> t.Dict[str, str]: # pylint: disable=no-self-use + def _get_uncommon_lines(self, config: str) -> t.Dict[str, str]: """Regex to find replacemsg lines which can contain html/css data. Args: @@ -1108,7 +1104,7 @@ def banner_end(self) -> str: """Demarcate End of Banner char(s).""" raise NotImplementedError("Nokia SROS platform doesn't have a banner.") - def _is_section_title(self, line: str) -> bool: # pylint: disable=no-self-use + def _is_section_title(self, line: str) -> bool: """Determine if line is a section title in banner. Args: @@ -1121,7 +1117,7 @@ def _is_section_title(self, line: str) -> bool: # pylint: disable=no-self-use return True return False - def _get_section_title(self, line: str) -> t.Union[str, bool]: # pylint: disable=no-self-use + def _get_section_title(self, line: str) -> t.Union[str, bool]: """Determine section title from banner. Args: @@ -1375,3 +1371,207 @@ class NetironConfigParser(BaseSpaceConfigParser): def banner_end(self) -> str: """Demarcate End of Banner char(s).""" raise NotImplementedError("Extreme Netiron platform doesn't have a banner.") + + +class RouterOSConfigParser(BaseSpaceConfigParser): + """Mikrotik RouterOS config parser.""" + + comment_chars: t.List[str] = ["#"] + banner_start: t.List[str] = ["/system note set note=", "set note="] + + @property + def banner_end(self) -> str: + """Demarcate End of Banner char(s).""" + raise NotImplementedError("Mikrotik platform uses system note as a banner.") + + def is_banner_end(self, line: str) -> bool: + """Determine if end of banner.""" + if line.endswith('"') or line.startswith("/"): + return True + return False + + def _build_banner(self, config_line: str) -> t.Optional[str]: + """Handle banner config lines. + + Args: + config_line: The start of the banner (system note) config. + + Returns: + The next configuration line in the configuration text or None when banner end is the end of the config text. + + Raises: + ValueError: When the parser is unable to identify the End of the Banner. + """ + banner_config = [config_line] + for line in self.generator_config: + if not self.is_banner_end(line): + banner_config.append(line) + else: + banner_config.append(line) + line = "\n".join(banner_config) + self._update_config_lines(line) + try: + return next(self.generator_config) + except StopIteration: + return None + raise ValueError("Unable to parse banner (system note) end.") + + +class PaloAltoNetworksConfigParser(BaseSpaceConfigParser): + """Palo Alto Networks config parser.""" + + comment_chars: t.List[str] = [] + banner_start: t.List[str] = [ + 'set system login-banner "', + 'login-banner "', + 'set deviceconfig system login-banner "', + ] + banner_end = '"' + + def is_banner_end(self, line: str) -> bool: + """Determine if end of banner.""" + if line.endswith('"') or line.startswith('";') or line.startswith("set") or line.endswith(self.banner_end): + return True + return False + + def _build_banner(self, config_line: str) -> t.Optional[str]: + """Handle banner config lines. + + Args: + config_line: The start of the banner config. + + Returns: + The next configuration line in the configuration text or None + + Raises: + ValueError: When the parser is unable to identify the end of the Banner. + """ + self._update_config_lines(config_line) + self._current_parents += (config_line,) + banner_config = [] + for line in self.generator_config: + if not self.is_banner_end(line): + banner_config.append(line) + else: + line = normalise_delimiter_caret_c(self.banner_end, line) + banner_config.append(line.strip()) + line = "\n".join(banner_config) + if line.endswith("^C"): + banner, end, _ = line.rpartition("^C") + line = banner.rstrip() + end + self._update_config_lines(line.strip()) + self._current_parents = self._current_parents[:-1] + try: + return next(self.generator_config) + except StopIteration: + return None + + raise ValueError("Unable to parse banner end.") + + def build_config_relationship(self) -> t.List[ConfigLine]: # pylint: disable=too-many-branches + r"""Parse text of config lines and find their parents. + + Examples: + >>> config = ( + ... "set deviceconfig system hostname firewall1\n" + ... "set deviceconfig system panorama local-panorama panorama-server 10.0.0.1\n" + ... "set deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2\n" + ... "set deviceconfig setting config rematch yes\n" + ... ) + >>> config_tree = PaloAltoNetworksConfigParser(config) + >>> config_tree.build_config_relationship() == \ + ... [ + ... ConfigLine(config_line="set deviceconfig system hostname firewall1", parents=()), + ... ConfigLine(config_line="set deviceconfig system panorama local-panorama panorama-server 10.0.0.1", parents=()), + ... ConfigLine(config_line="set deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2", parents=()), + ... ConfigLine(config_line="set deviceconfig setting config rematch yes", parents=()), + ... ] + True + """ + # assume configuration does not need conversion + _needs_conversion = False + + # if config is in palo brace format, convert to set + if self.config_lines_only is not None: + for line in self.config_lines_only: + if line.endswith("{"): + _needs_conversion = True + if _needs_conversion: + converted_config = paloalto_panos_brace_to_set(cfg=self.config, cfg_type="string") + list_config = converted_config.splitlines() + self.generator_config = (line for line in list_config) + + # build config relationships + for line in self.generator_config: + if not line[0].isspace(): + self._current_parents = () + if self.is_banner_start(line): + line = self._build_banner(line) # type: ignore + else: + previous_config = self.config_lines[-1] + self._current_parents = (previous_config.config_line,) + self.indent_level = self.get_leading_space_count(line) + if not self.is_banner_start(line): + line = self._build_nested_config(line) # type: ignore + else: + line = self._build_banner(line) # type: ignore + if line is not None and line[0].isspace(): + line = self._build_nested_config(line) # type: ignore + else: + self._current_parents = () + + if line is None: + break + elif self.is_banner_start(line): + line = self._build_banner(line) # type: ignore + + self._update_config_lines(line) + return self.config_lines + + +class FastironConfigParser(CiscoConfigParser): + """Ruckus FastIron ICX config parser.""" + + comment_chars: t.List[str] = ["!"] + banner_start: t.List[str] = ["banner motd", "banner"] + regex_banner = re.compile(r"^banner(\smotd)?\s+(?P\S)") + + def __init__(self, config: str): + """Create ConfigParser Object. + + Args: + config (str): The config text to parse. + """ + super(FastironConfigParser, self).__init__(config) + + def _build_banner(self, config_line: str) -> t.Optional[str]: + """Handle banner config lines. + + Args: + config_line: The start of the banner config. + + Returns: + The next configuration line in the configuration text or None + + Raises: + ValueError: When the parser is unable to identify the end of the Banner. + """ + self._update_config_lines(config_line) + self._current_parents += (config_line,) + banner_config = [] + for line in self.generator_config: + if not self.is_banner_end(line): + banner_config.append(line) + else: + banner_config.append(line) + line = "\n".join(banner_config) + if line.endswith(self.banner_end): + banner, end, _ = line.rpartition(self.banner_end) + line = banner.rstrip() + end + self._update_config_lines(line) + self._current_parents = self._current_parents[:-1] + try: + return next(self.generator_config) + except StopIteration: + return None + raise ValueError("Unable to parse banner end.") diff --git a/netutils/config/utils.py b/netutils/config/utils.py new file mode 100644 index 00000000..a153d48a --- /dev/null +++ b/netutils/config/utils.py @@ -0,0 +1,10 @@ +"""Utility functions for working with device configurations.""" + + +def _open_file_config(cfg_path: str) -> str: + """Open config file from local disk.""" + # This might fail, raising an IOError + with open(cfg_path, encoding="utf-8") as filehandler: + device_cfg = filehandler.read() + + return device_cfg.strip() diff --git a/netutils/constants.py b/netutils/constants.py index a430c409..dd6d7c60 100644 --- a/netutils/constants.py +++ b/netutils/constants.py @@ -1,9 +1,13 @@ """Constant definitions used in project.""" -from netutils.data_files.protocol_mappings import PROTOCOLS # noqa: F401 # pylint:disable=unused-import +from netutils.data_files.protocol_mappings import ( # noqa: F401 # pylint:disable=unused-import + PROTOCOLS, +) # This variable provides mapping for known interface variants, to the associated long form. BASE_INTERFACES = { + "Ap": "AppGigabitEthernet", + "ap": "AppGigabitEthernet", "ATM": "ATM", "AT": "ATM", "B": "Bdi", @@ -142,7 +146,7 @@ DEFAULT_MAC_FORMAT = "MAC_DOT_FOUR" # A dictionary to describe the MAC format to it's characteristics. -MAC_CREATE = dict( +MAC_CREATE = dict( # pylint: disable=use-dict-literal MAC_COLON_TWO={"count": 2, "char": ":"}, MAC_COLON_FOUR={"count": 4, "char": ":"}, MAC_DASH_TWO={"count": 2, "char": "-"}, @@ -153,7 +157,7 @@ ) # A dictionary to describe the MAC format REGEX pattern. -MAC_REGEX = dict( +MAC_REGEX = dict( # pylint: disable=use-dict-literal MAC_COLON_TWO=r"([a-fA-F0-9]{2}[:]){5}([a-fA-F0-9]{2})", MAC_COLON_FOUR=r"([a-fA-F0-9]{4}[:]){2}([a-fA-F0-9]{4})", MAC_DASH_TWO=r"([a-fA-F0-9]{2}[\-]){5}([a-fA-F0-9]{2})", @@ -167,12 +171,14 @@ # This variable maps a full interface name, to an opinionated shortened name. REVERSE_MAPPING = { + "AppGigabitEthernet": "Ap", "ATM": "At", "EOBC": "EO", "Ethernet": "Et", "FastEthernet": "Fa", "Fddi": "FD", "FortyGigabitEthernet": "Fo", + "FourHundredGigabitEthernet": "FH", "GigabitEthernet": "Gi", "HundredGigabitEthernet": "Hu", "Loopback": "Lo", @@ -185,7 +191,7 @@ "Sync": "Sy", "TenGigabitEthernet": "Te", "Tunnel": "Tu", - "TwoGigabitEthernet": "Two", + "TwoGigabitEthernet": "Tw", "TwentyFiveGigE": "Twe", "Virtual-Access": "Vi", "Virtual-Template": "Vt", @@ -204,8 +210,14 @@ # These are base level filters to provide documentation of how a SANITIZE_FILTERS can be used, This is a private variable, and subject # to change without notice between revisions. _PROVIDED_SANITIZE_FILTERS = [ - {"regex": r"(username\s+\S+\spassword\s+5\s+)\S+(\s+role\s+\S+)", "replace": "\\1\\2"}, - {"regex": r"(username\s+\S+\s+privilege\s+15\s+password\s+0\s+)\S+", "replace": "\\1"}, + { + "regex": r"(username\s+\S+\spassword\s+5\s+)\S+(\s+role\s+\S+)", + "replace": "\\1\\2", + }, + { + "regex": r"(username\s+\S+\s+privilege\s+15\s+password\s+0\s+)\S+", + "replace": "\\1", + }, ] # {0xffffffff ^ ((1 << i) - 1) for i in range(32)} @@ -405,3 +417,29 @@ r"((?P\d+)m)?((?P\d+)s)" ), # pylint: disable=implicit-str-concat ] + +# Do not modify list, see UPGRADE_PATHS documentation on the versioning of this +UPGRADE_PATHS = { + "PANOS_OFFICIAL_V1": [ + "8.0.0", + "8.0.20", + "8.1.0", + "8.1.24-h1", + "9.0.0", + "9.0.16-h3", + "9.1.0", + "9.1.15-h1", + "10.0.0", + "10.0.12", + "10.1.0", + "10.1.9", + ], + "PANOS_MAJOR_ONLY_V1": [ + "8.0.0", + "8.1.0", + "9.0.0", + "9.1.0", + "10.0.0", + "10.1.0", + ], +} diff --git a/netutils/data_files/oui_mappings.py b/netutils/data_files/oui_mappings.py index 0d080bc1..3b24a80c 100644 --- a/netutils/data_files/oui_mappings.py +++ b/netutils/data_files/oui_mappings.py @@ -306,7 +306,7 @@ "00012d": "Komodo Technology", "00012e": "PC Partner Ltd.", "00012f": "Twinhead International Corp", - "000130": "Extreme Networks, Inc.", + "000130": "Extreme Networks Headquarters", "000131": "Bosch Security Systems, Inc.", "000132": "Dranetz - BMI", "000133": "KYOWA Electronic Instruments C", @@ -613,7 +613,7 @@ "000260": "Accordion Networks, Inc.", "000261": "Tilgin AB", "000262": "Soyo Group Soyo Com Tech Co., Ltd", - "000263": "UPS Manufacturing SRL", + "000263": "RPS S.p.A.", "000264": "AudioRamp.com", "000265": "Virditech Co. Ltd.", "000266": "Thermalogic Corporation", @@ -1176,7 +1176,7 @@ "000493": "Tsinghua Unisplendour Co., Ltd.", "000494": "Breezecom, Ltd.", "000495": "Tejas Networks India Limited", - "000496": "Extreme Networks, Inc.", + "000496": "Extreme Networks Headquarters", "000497": "MacroSystem Digital Video AG", "000498": "Mahi Networks", "000499": "Chino Corporation", @@ -1191,7 +1191,7 @@ "0004a2": "L.S.I. Japan Co., Ltd.", "0004a3": "Microchip Technology Inc.", "0004a4": "NetEnabled, Inc.", - "0004a5": "Barco Projection Systems NV", + "0004a5": "Barco NV", "0004a6": "SAF Tehnika Ltd.", "0004a7": "FabiaTech Corporation", "0004a8": "Broadmax Technologies, Inc.", @@ -2204,7 +2204,7 @@ "0008b6": "RouteFree, Inc.", "0008b7": "HIT Incorporated", "0008b8": "E.F. Johnson", - "0008b9": "Kaonmedia CO., LTD.", + "0008b9": "Kaon Group Co., Ltd.", "0008ba": "Erskine Systems Ltd", "0008bb": "NetExcell", "0008bc": "Ilevo AB", @@ -2743,7 +2743,7 @@ "000ad4": "CoreBell Systems Inc.", "000ad5": "Brainchild Electronic Co., Ltd.", "000ad6": "BeamReach Networks", - "000ad7": "Origin ELECTRIC CO.,LTD.", + "000ad7": "Origin Co., Ltd.", "000ad8": "IPCserv Technology Corp.", "000ad9": "Sony Corporation", "000ada": "Vindicator Technologies", @@ -3271,7 +3271,7 @@ "000ce9": "BLOOMBERG L.P.", "000cea": "aphona Kommunikationssysteme", "000ceb": "CNMP Networks, Inc.", - "000cec": "Orolia USA", + "000cec": "Safran Trusted 4D Inc.", "000ced": "Real Digital Media", "000cee": "jp-embedded", "000cef": "Open Networks Engineering Ltd", @@ -3348,7 +3348,7 @@ "000d36": "Wu Han Routon Electronic Co., Ltd", "000d37": "WIPLUG", "000d38": "NISSIN INC.", - "000d39": "Network Electronics", + "000d39": "Nevion", "000d3a": "Microsoft Corp.", "000d3b": "Microelectronics Technology Inc.", "000d3c": "i.Tech Dynamic Ltd", @@ -3659,7 +3659,7 @@ "000e6f": "IRIS Corporation Berhad", "000e70": "in2 Networks", "000e71": "Gemstar Technology Development Ltd.", - "000e72": "CTS electronics", + "000e72": "Arca Technologies S.r.l.", "000e73": "Tpack A/S", "000e74": "Solar Telecom. Tech", "000e75": "New York Air Brake Corp.", @@ -4034,7 +4034,7 @@ "000fe7": "Lutron Electronics Co., Inc.", "000fe8": "Lobos, Inc.", "000fe9": "GW TECHNOLOGIES CO.,LTD.", - "000fea": "Giga-Byte Technology Co.,LTD.", + "000fea": "GIGA-BYTE TECHNOLOGY CO.,LTD.", "000feb": "Cylon Controls", "000fec": "ARKUS Inc.", "000fed": "Anam Electronics Co., Ltd", @@ -4478,7 +4478,7 @@ "0011a6": "Sypixx Networks", "0011a7": "Infilco Degremont Inc.", "0011a8": "Quest Technologies", - "0011a9": "MOIMSTONE Co., LTD", + "0011a9": "Nurivoice Co., Ltd", "0011aa": "Uniclass Technology, Co., LTD", "0011ab": "TRUSTABLE TECHNOLOGY CO.,LTD.", "0011ac": "Simtec Electronics", @@ -4684,7 +4684,7 @@ "001274": "NIT lab", "001275": "Sentilla Corporation", "001276": "CG Power Systems Ireland Limited", - "001277": "Korenix Technologies Co., Ltd.", + "001277": "Beijer Electronics Corp.", "001278": "International Bar Code", "001279": "Hewlett Packard", "00127a": "Sanyu Industry Co.,Ltd.", @@ -5163,7 +5163,7 @@ "001454": "Symwave", "001455": "Coder Electronics Corporation", "001456": "Edge Products", - "001457": "T-VIPS AS", + "001457": "Nevion", "001458": "HS Automatic ApS", "001459": "Moram Co., Ltd.", "00145a": "Westermo Neratec AG", @@ -5829,7 +5829,7 @@ "0016f3": "CAST Information Co., Ltd", "0016f4": "Eidicom Co., Ltd.", "0016f5": "Dalian Golden Hualu Digital Technology Co.,Ltd", - "0016f6": "Video Products Group", + "0016f6": "Nevion", "0016f7": "L-3 Communications, Aviation Recorders", "0016f8": "AVIQTECH TECHNOLOGY CO., LTD.", "0016f9": "CETRTA POT, d.o.o., Kranj", @@ -6122,7 +6122,7 @@ "001819": "Cisco Systems, Inc", "00181a": "AVerMedia Information Inc.", "00181b": "TaiJin Metal Co., Ltd.", - "00181c": "Exterity Limited", + "00181c": "VITEC", "00181d": "ASIA ELECTRONICS CO.,LTD", "00181e": "GDX Technologies Ltd.", "00181f": "Palmmicro Communications", @@ -6267,7 +6267,7 @@ "0018aa": "Protec Fire Detection plc", "0018ab": "BEIJING LHWT MICROELECTRONICS INC.", "0018ac": "Shanghai Jiao Da HISYS Technology Co. Ltd.", - "0018ad": "NIDEC SANKYO CORPORATION", + "0018ad": "NIDEC INSTRUMENTS CORPORATION", "0018ae": "TVT CO.,LTD", "0018af": "Samsung Electronics Co.,Ltd", "0018b0": "Nortel Networks", @@ -6468,7 +6468,7 @@ "001974": "16063", "001975": "Beijing Huisen networks technology Inc", "001976": "Xipher Technologies, LLC", - "001977": "Extreme Networks, Inc.", + "001977": "Extreme Networks Headquarters", "001978": "Datum Systems, Inc.", "001979": "Nokia Danmark A/S", "00197a": "MAZeT GmbH", @@ -6479,7 +6479,7 @@ "00197f": "PLANTRONICS, INC.", "001980": "Gridpoint Systems", "001981": "Vivox Inc", - "001982": "SmarDTV", + "001982": "SmarDTV Corporation", "001983": "CCT R&D Limited", "001984": "ESTIC Corporation", "001985": "IT Watchdogs, Inc", @@ -8382,7 +8382,7 @@ "0020f9": "PARALINK NETWORKS, INC.", "0020fa": "GDE SYSTEMS, INC.", "0020fb": "OCTEL COMMUNICATIONS CORP.", - "0020fc": "MATROX", + "0020fc": "Matrox Central Services Inc", "0020fd": "ITV TECHNOLOGIES, INC.", "0020fe": "TOPWARE INC. / GRAND COMPUTER", "0020ff": "SYMMETRICAL TECHNOLOGIES", @@ -10229,11 +10229,13 @@ "0035ff": "Texas Instruments", "003676": "ARRIS Group, Inc.", "0036be": "Northwest Towers", + "0036d7": "Keltron IOT Corp.", "0036f8": "Conti Temic microelectronic GmbH", "0036fe": "SuperVision", "00376d": "Murata Manufacturing Co., Ltd.", "0037b7": "Sagemcom Broadband SAS", "0038df": "Cisco Systems, Inc", + "003969": "Air-Weigh Incorporated", "003a7d": "Cisco Systems, Inc", "003a98": "Cisco Systems, Inc", "003a99": "Cisco Systems, Inc", @@ -10408,7 +10410,7 @@ "00409b": "HAL COMPUTER SYSTEMS INC.", "00409c": "TRANSWARE", "00409d": "DigiBoard", - "00409e": "CONCURRENT TECHNOLOGIES LTD.", + "00409e": "Concurrent Technologies Ltd.", "00409f": "Telco Systems, Inc. ", "0040a0": "GOLDSTAR CO., LTD.", "0040a1": "ERGO COMPUTING", @@ -10715,7 +10717,7 @@ "0050c8": "Addonics Technologies, Inc.", "0050c9": "MASPRO DENKOH CORP.", "0050ca": "DZS Inc.", - "0050cb": "JETTER", + "0050cb": "Bucher Automation AG", "0050cc": "Seagate Cloud Systems Inc", "0050cd": "DIGIANSWER A/S", "0050ce": "LG INTERNATIONAL CORP.", @@ -11057,6 +11059,7 @@ "006440": "Cisco Systems, Inc", "0064a6": "Maquet CardioVascular", "0064af": "Dish Technologies Corp", + "00651e": "Amcrest Technologies", "006619": "Huawei Device Co., Ltd.", "00664b": "HUAWEI TECHNOLOGIES CO.,LTD", "006762": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -11288,7 +11291,7 @@ "0080b5": "UNITED NETWORKS INC.", "0080b6": "Mercury Systems – Trusted Mission Solutions, Inc. ", "0080b7": "STELLAR COMPUTER", - "0080b8": "DMG MORI B.U.G. CO., LTD.", + "0080b8": "DMG MORI Digital Co., LTD", "0080b9": "ARCHE TECHNOLIGIES INC.", "0080ba": "PTE, LTD", "0080bb": "HUGHES LAN SYSTEMS", @@ -11655,6 +11658,7 @@ "009acd": "HUAWEI TECHNOLOGIES CO.,LTD", "009ad2": "Cisco Systems, Inc", "009c02": "Hewlett Packard", + "009cc0": "vivo Mobile Communication Co., Ltd.", "009d6b": "Murata Manufacturing Co., Ltd.", "009d8e": "CARDIAC RECORDERS, INC.", "009e1e": "Cisco Systems, Inc", @@ -11873,7 +11877,7 @@ "00a0d2": "ALLIED TELESIS INTERNATIONAL CORPORATION", "00a0d3": "INSTEM COMPUTER SYSTEMS, LTD.", "00a0d4": "RADIOLAN, INC.", - "00a0d5": "Sierra Wireless", + "00a0d5": "Sierra Wireless, ULC", "00a0d6": "SBE, Inc.", "00a0d7": "KASTEN CHASE APPLIED RESEARCH", "00a0d8": "SPECTRA - TEK", @@ -12292,11 +12296,12 @@ "00c585": "Apple, Inc.", "00c5db": "Datatech Sistemas Digitales Avanzados SL", "00c610": "Apple, Inc.", + "00c711": "ITEL MOBILE LIMITED", "00c88b": "Cisco Systems, Inc", "00cae5": "Cisco Systems, Inc", "00cb00": "Private", "00cb51": "Sagemcom Broadband SAS", - "00cb7a": "Technicolor CH USA Inc.", + "00cb7a": "Vantiva USA LLC", "00cbb4": "SHENZHEN ATEKO PHOTOELECTRICITY CO.,LTD", "00cbbd": "Cambridge Broadband Networks Group", "00cc34": "Juniper Networks", @@ -12431,7 +12436,7 @@ "00d079": "Cisco Systems, Inc", "00d07a": "AMAQUEST COMPUTER CORP.", "00d07b": "COMCAM INTERNATIONAL INC", - "00d07c": "KOYO ELECTRONICS INC. CO.,LTD.", + "00d07c": "JTEKT ELECTRONICS CORPORATION", "00d07d": "COSINE COMMUNICATIONS", "00d07e": "KEYCORP LTD.", "00d07f": "STRATEGY & TECHNOLOGY, LIMITED", @@ -12580,7 +12585,7 @@ "00db45": "THAMWAY CO.,LTD.", "00db70": "Apple, Inc.", "00dbdf": "Intel Corporate", - "00dcb2": "Extreme Networks, Inc.", + "00dcb2": "Extreme Networks Headquarters", "00dd00": "UNGERMANN-BASS INC.", "00dd01": "UNGERMANN-BASS INC.", "00dd02": "UNGERMANN-BASS INC.", @@ -12629,7 +12634,7 @@ "00e019": "ING. GIORDANO ELETTRONICA", "00e01a": "COMTEC SYSTEMS. CO., LTD.", "00e01b": "SPHERE COMMUNICATIONS, INC.", - "00e01c": "Cradlepoint, Inc", + "00e01c": "CradlePoint, Inc", "00e01d": "WebTV NETWORKS, INC.", "00e01e": "Cisco Systems, Inc", "00e01f": "AVIDIA Systems, Inc.", @@ -12644,7 +12649,7 @@ "00e028": "APTIX CORPORATION", "00e029": "STANDARD MICROSYSTEMS CORP.", "00e02a": "TANDBERG TELEVISION AS", - "00e02b": "Extreme Networks, Inc.", + "00e02b": "Extreme Networks Headquarters", "00e02c": "AST COMPUTER", "00e02d": "InnoMediaLogic, Inc.", "00e02e": "SPC ELECTRONICS CORPORATION", @@ -12867,7 +12872,8 @@ "00e421": "Sony Interactive Entertainment Inc.", "00e5e4": "Sichuan Tianyi Comheart Telecom Co.,LTD", "00e5f1": "BUFFALO.INC", - "00e60e": "Extreme Networks, Inc.", + "00e60e": "Extreme Networks Headquarters", + "00e63a": "Ruckus Wireless", "00e666": "ARIMA Communications Corp.", "00e6d3": "NIXDORF COMPUTER CORP.", "00e6e8": "Netzin Technology Corporation,.Ltd.", @@ -12880,6 +12886,7 @@ "00ebd8": "MERCUSYS TECHNOLOGIES CO., LTD.", "00ec0a": "Xiaomi Communications Co Ltd", "00edb8": "KYOCERA Corporation ", + "00ee01": "Enablers Solucoes e Consultoria em Dispositivos", "00eeab": "Cisco Systems, Inc", "00eebd": "HTC Corporation", "00f051": "KWB Gmbh", @@ -12899,6 +12906,7 @@ "00f82c": "Cisco Systems, Inc", "00f860": "PT. Panggung Electric Citrabuana", "00f871": "Demant A/S", + "00f952": "HUAWEI TECHNOLOGIES CO.,LTD", "00fa21": "Samsung Electronics Co.,Ltd", "00fa3b": "CLOOS ELECTRONIC GMBH", "00fab6": "Kontakt Micro-Location Sp z o.o.", @@ -12934,6 +12942,7 @@ "0405dd": "Shenzhen Cultraview Digital Technology Co., Ltd", "04072e": "VTech Electronics Ltd.", "040973": "Hewlett Packard Enterprise", + "040986": "Arcadyan Corporation", "0409a5": "HFR, Inc.", "040a83": "Alcatel-Lucent", "040ae0": "XMIT AG COMPUTER NETWORKS", @@ -12943,6 +12952,7 @@ "040ec2": "ViewSonic Mobile China Limited", "04106b": "Xiaomi Communications Co Ltd", "041119": "IEEE Registration Authority", + "041471": "HUAWEI TECHNOLOGIES CO.,LTD", "041552": "Apple, Inc.", "0415d9": "Viwone", "0417b6": "Smart Innovation LLC", @@ -12987,7 +12997,8 @@ "0434f6": "Mobility Technologies Communication Co., Ltd.", "043604": "Gyeyoung I&T", "0436b8": "I&C Technology", - "043855": "SCOPUS INTERNATIONAL-BELGIUM", + "043855": "Scopus International Pvt. Ltd.", + "0438dc": "China Unicom Online Information Technology Co.,Ltd", "043926": "China Dragon Technology Limited", "043a0d": "SM Optics S.r.l.", "043ce8": "Shenzhen SuperElectron Technology Co.,Ltd.", @@ -13006,6 +13017,7 @@ "04489a": "Apple, Inc.", "04495d": "Huawei Device Co., Ltd.", "044a50": "limited company", + "044a6a": "niliwi nanjing big data Co,.Ltd", "044a6c": "HUAWEI TECHNOLOGIES CO.,LTD", "044ac6": "Aipon Electronics Co., Ltd", "044ba5": "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", @@ -13031,6 +13043,7 @@ "0456e5": "Intel Corporate", "04572f": "Sertel Electronics UK Ltd", "045747": "GoPro", + "045791": "Shenzhenshi Xinzhongxin Technology Co.Ltd", "04586f": "Sichuan Whayer information industry Co.,LTD", "045a95": "Nokia Corporation", "045c06": "Zmodo Technology Corporation", @@ -13082,10 +13095,12 @@ "047e23": "China Mobile IOT Company Limited", "047e4a": "moobox CO., Ltd.", "047f0e": "Barrot Technology Co.,LTD", + "0480a7": "ShenZhen TianGang Micro Technology CO.LTD", "04819b": "SKY UK LIMITED", "0481ae": "Clack Corporation", "04848a": "7INOVA TECHNOLOGY LIMITED", "048680": "Quectel Wireless Solutions Co.,Ltd.", + "048727": "Silicon Laboratories", "04885f": "HUAWEI TECHNOLOGIES CO.,LTD", "04888c": "Eifelwerk Butler Systeme GmbH", "0488e2": "Beats Electronics LLC", @@ -13127,6 +13142,7 @@ "04a741": "Cisco Systems, Inc", "04a81c": "HUAWEI TECHNOLOGIES CO.,LTD", "04a82a": "Nokia Corporation", + "04a959": "New H3C Technologies Co., Ltd", "04aae1": "BEIJING MICROVISION TECHNOLOGY CO.,LTD", "04ab08": "Shenzhen Skyworth Digital Technology CO., Ltd", "04ab18": "ELECOM CO.,LTD.", @@ -13187,6 +13203,7 @@ "04cf4b": "Intel Corporate", "04cf8c": "XIAOMI Electronics,CO.,LTD", "04d13a": "Xiaomi Communications Co Ltd", + "04d168": "Sunplus Technology Co., Ltd.", "04d16e": "IEEE Registration Authority", "04d320": "ITEL MOBILE LIMITED", "04d395": "Motorola Mobility LLC, a Lenovo Company", @@ -13257,7 +13274,7 @@ "04f993": "Infinix mobility limited", "04f9d9": "Co.,Ltd", "04f9f8": "TP-LINK TECHNOLOGIES CO.,LTD.", - "04fa3f": "Opticore Inc.", + "04fa3f": "OptiCore Inc.", "04fa83": "Qingdao Haier Technology Co.,Ltd", "04fe31": "Samsung Electronics Co.,Ltd", "04fe7f": "Cisco Systems, Inc", @@ -13451,6 +13468,7 @@ "081ff3": "Cisco Systems, Inc", "0821ef": "Samsung Electronics Co.,Ltd", "0823b2": "vivo Mobile Communication Co., Ltd.", + "0823c6": "HUAWEI TECHNOLOGIES CO.,LTD", "082522": "ADVANSEE", "082525": "Xiaomi Communications Co Ltd", "082573": "Apple, Inc.", @@ -13470,6 +13488,7 @@ "0830ce": "Fiberhome Telecommunication Technologies Co.,LTD", "08318b": "HUAWEI TECHNOLOGIES CO.,LTD", "0831a4": "Huawei Device Co., Ltd.", + "0833ed": "ASKEY COMPUTER CORP", "08351b": "Shenzhen Jialihua Electronic Technology Co., Ltd", "083571": "CASwell INC.", "0835b2": "CoreEdge Networks Co., Ltd", @@ -13550,8 +13569,10 @@ "086e9c": "Huawei Device Co., Ltd.", "086f48": "Shenzhen iComm Semiconductor CO.,LTD", "087045": "Apple, Inc.", + "087073": "HUAWEI TECHNOLOGIES CO.,LTD", "087190": "Intel Corporate", "087402": "Apple, Inc.", + "087458": "Fiberhome Telecommunication Technologies Co.,LTD", "0874f6": "Winterhalter Gastronom GmbH", "087572": "Obelux Oy", "087618": "ViE Technologies Sdn. Bhd.", @@ -13562,11 +13583,12 @@ "087999": "AIM GmbH", "087a4c": "HUAWEI TECHNOLOGIES CO.,LTD", "087b12": "Sagemcom Broadband SAS", + "087b87": "Cisco Systems, Inc", "087baa": "SVYAZKOMPLEKTSERVICE, LLC", "087c39": "Amazon Technologies Inc.", "087cbe": "Quintic Corp.", "087d21": "Altasec technology corporation", - "087e64": "Technicolor CH USA Inc.", + "087e64": "Vantiva USA LLC", "087f98": "vivo Mobile Communication Co., Ltd.", "088039": "Cisco SPVTG", "0881b2": "Technology Co., Ltd", @@ -13585,13 +13607,14 @@ "088e90": "Intel Corporate", "088edc": "Apple, Inc.", "088f2c": "Amber Technology Ltd.", + "088fc3": "CO., LTD. ", "0890ba": "Danlaw Inc", "089115": "Amazon Technologies Inc.", "0891a3": "Amazon Technologies Inc.", "089204": "Dell Inc.", "089356": "HUAWEI TECHNOLOGIES CO.,LTD", "0894ef": "Corporation", - "08952a": "Technicolor CH USA Inc.", + "08952a": "Vantiva USA LLC", "089542": "Apple, Inc.", "0896ad": "Cisco Systems, Inc", "0896d7": "AVM GmbH", @@ -13613,7 +13636,7 @@ "08a189": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "08a5c8": "Sunnovo International Limited", "08a6bc": "Amazon Technologies Inc.", - "08a7c0": "Technicolor CH USA Inc.", + "08a7c0": "Vantiva USA LLC", "08a842": "Huawei Device Co., Ltd.", "08a8a1": "Cyclotronics Power Concepts, Inc", "08a95a": "AzureWave Technology Inc.", @@ -13661,6 +13684,7 @@ "08cd9b": "samtec automotive electronics & software GmbH", "08d09f": "Cisco Systems, Inc", "08d0b7": "Qingdao Hisense Communications Co.,Ltd.", + "08d1f9": "Espressif Inc.", "08d23e": "Intel Corporate", "08d29a": "Proformatique", "08d34b": "Co., Ltd.", @@ -13682,7 +13706,7 @@ "08e84f": "HUAWEI TECHNOLOGIES CO.,LTD", "08e9f6": "AMPAK Technology,Inc.", "08ea40": "SHENZHEN BILIAN ELECTRONIC CO.,LTD", - "08ea44": "Extreme Networks, Inc.", + "08ea44": "Extreme Networks Headquarters", "08eb29": "Jiangsu Huitong Group Co.,Ltd.", "08eb74": "HUMAX Co., Ltd.", "08ebed": "World Elite Technology Co.,LTD", @@ -13696,6 +13720,7 @@ "08ee8b": "Samsung Electronics Co.,Ltd", "08ef3b": "MCS Logic Inc.", "08efab": "SAYME WIRELESS SENSOR NETWORK", + "08f01e": "eero inc.", "08f1b3": "Cisco Meraki", "08f1b7": "Towerstream Corpration", "08f1ea": "Hewlett Packard Enterprise", @@ -13710,6 +13735,7 @@ "08f7e9": "HRCP Research and Development Partnership", "08f80d": "IEEE Registration Authority", "08f8bc": "Apple, Inc.", + "08f9e0": "Espressif Inc.", "08fa28": "HUAWEI TECHNOLOGIES CO.,LTD", "08fa79": "vivo Mobile Communication Co., Ltd.", "08fae0": "Fohhn Audio AG", @@ -13720,8 +13746,9 @@ "08ff24": "Shenzhen Skyworth Digital Technology CO., Ltd", "08ff44": "Apple, Inc.", "0c014b": "zte corporation", + "0c01c8": "DENSO Co.,Ltd", "0c01db": "Infinix mobility limited", - "0c0227": "Technicolor CH USA Inc.", + "0c0227": "Vantiva USA LLC", "0c02bd": "Samsung Electronics Co.,Ltd", "0c0400": "Jantar d.o.o.", "0c0535": "Juniper Systems", @@ -13754,6 +13781,7 @@ "0c2576": "LONGCHEER TELECOMMUNICATION LIMITED", "0c2724": "Cisco Systems, Inc", "0c2755": "Valuable Techologies Limited", + "0c298f": "Tesla,Inc.", "0c29ef": "Dell Inc.", "0c2a69": "electric imp, incorporated", "0c2a86": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -13820,11 +13848,14 @@ "0c62a6": "Hui Zhou Gaoshengda Technology Co.,LTD", "0c63fc": "Nanjing Signway Technology Co., Ltd", "0c6422": "Beijing Wiseasy Technology Co.,Ltd.", + "0c659a": "Panasonic Automotive Systems Company of America", + "0c6714": "TECHNOLOGIES CORPORATION", "0c6803": "Cisco Systems, Inc", "0c6abc": "Fiberhome Telecommunication Technologies Co.,LTD", "0c6ae6": "Stanley Security Solutions", "0c6e4f": "PrimeVOLT Co., Ltd.", "0c6f9c": "Shaw Communications Inc.", + "0c7043": "Sony Interactive Entertainment Inc.", "0c704a": "HUAWEI TECHNOLOGIES CO.,LTD", "0c715d": "Samsung Electronics Co.,Ltd", "0c718c": "TCT mobile ltd", @@ -13839,6 +13870,7 @@ "0c7523": "BEIJING GEHUA CATV NETWORK CO.,LTD", "0c756c": "Anaren Microwave, Inc.", "0c75bd": "Cisco Systems, Inc", + "0c75d2": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "0c771a": "Apple, Inc.", "0c7a15": "Intel Corporate", "0c7bc8": "Cisco Meraki", @@ -13864,6 +13896,7 @@ "0c8610": "Juniper Networks", "0c8629": "IEEE Registration Authority", "0c86c7": "Limited", + "0c8772": "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "0c8910": "Samsung Electronics Co.,Ltd", "0c8a87": "AgLogica Holdings, Inc", "0c8b7d": "Vizio, Inc", @@ -13874,6 +13907,7 @@ "0c8c69": "Shenzhen elink smart Co., ltd", "0c8c8f": "Kamo Technology Limited", "0c8cdc": "Suunto Oy", + "0c8d7a": "RADiflow", "0c8d98": "TOP EIGHT IND CORP", "0c8dca": "Samsung Electronics Co.,Ltd", "0c8ddb": "Cisco Meraki", @@ -13896,6 +13930,7 @@ "0c9a3c": "Intel Corporate", "0c9a42": "FN-LINK TECHNOLOGY LIMITED", "0c9b13": "Shanghai Magic Mobile Telecommunication Co.Ltd.", + "0c9b78": "Extreme Networks Headquarters", "0c9d56": "Consort Controls Ltd", "0c9d92": "ASUSTek COMPUTER INC.", "0c9e91": "Sankosha Corporation", @@ -13910,6 +13945,7 @@ "0caaee": "Ansjer Electronics Co., Ltd.", "0cac05": "Unitend Technologies Inc.", "0cac8a": "Sagemcom Broadband SAS", + "0cae5f": "Silicon Laboratories", "0cae7d": "Texas Instruments", "0caebd": "Edifier International", "0caf31": "Cisco Systems, Inc", @@ -13930,6 +13966,7 @@ "0cb8e8": "Sdn. Bhd.", "0cb912": "JM-DATA GmbH", "0cb937": "Ubee Interactive Co., Limited", + "0cb983": "Honor Device Co., Ltd.", "0cbc9f": "Apple, Inc.", "0cbd51": "TCT mobile ltd", "0cbd75": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", @@ -14000,6 +14037,7 @@ "0ceee6": "Hon Hai Precision Ind. Co.,Ltd.", "0cef7c": "AnaCom Inc", "0cefaf": "IEEE Registration Authority", + "0ceff6": "Silicon Laboratories", "0cf019": "Malgn Technology Co., Ltd.", "0cf0b4": "Globalsat International Technology Ltd", "0cf346": "Xiaomi Communications Co Ltd", @@ -14028,6 +14066,7 @@ "1005b1": "ARRIS Group, Inc.", "1005ca": "Cisco Systems, Inc", "1005e1": "Nokia", + "10061c": "Espressif Inc.", "100645": "Sagemcom Broadband SAS", "1006ed": "Cisco Systems, Inc", "10071d": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -14058,6 +14097,8 @@ "1012fb": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "101331": "Technicolor Delivery Technologies Belgium NV", "1013ee": "Justec International Technology INC.", + "1015c1": "Technology Co., Ltd.", + "101849": "WEIFANG GOERTEK ELECTRONICS CO.,LTD", "10189e": "Elmo Motion Control", "101965": "New H3C Technologies Co., Ltd", "101b54": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -14072,6 +14113,8 @@ "1027be": "TVIP", "1027f5": "TP-Link Corporation Limited", "102831": "Morion Inc.", + "102834": "SALZ Automation GmbH", + "102874": "Shenzhen Jingxun Technology Co., Ltd.", "102959": "Apple, Inc.", "1029ab": "Samsung Electronics Co.,Ltd", "102ab3": "Xiaomi Communications Co Ltd", @@ -14093,7 +14136,7 @@ "10321d": "HUAWEI TECHNOLOGIES CO.,LTD", "10327e": "Huawei Device Co., Ltd.", "103378": "FLECTRON Co., LTD", - "1033bf": "Technicolor CH USA Inc.", + "1033bf": "Vantiva USA LLC", "10341b": "Spacelink", "10364a": "Boston Dynamics", "103711": "NORBIT ITS", @@ -14154,7 +14197,7 @@ "105fd4": "Tendyron Corporation", "10604b": "Hewlett Packard", "1062c9": "Adatis GmbH & Co. KG", - "1062d0": "Technicolor CH USA Inc.", + "1062d0": "Vantiva USA LLC", "1062e5": "Hewlett Packard", "1062eb": "D-Link International", "10634b": "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", @@ -14173,6 +14216,7 @@ "107100": "Huawei Device Co., Ltd.", "1071b3": "Zyxel Communications Corporation", "1071f9": "Cloud Telecomputers, LLC", + "1071fa": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "107223": "TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO ", "1073eb": "Infiniti Electro-Optics", "10746f": "MOTOROLA SOLUTIONS MALAYSIA SDN. BHD.", @@ -14187,6 +14231,7 @@ "1078d2": "Elitegroup Computer Systems Co.,Ltd.", "107a86": "U&U ENGINEERING INC.", "107b44": "ASUSTek COMPUTER INC.", + "107b93": "Co., Ltd.", "107ba4": "Olive & Dove Co.,Ltd.", "107bce": "Nokia", "107bef": "Zyxel Communications Corporation", @@ -14207,6 +14252,7 @@ "108ee0": "Samsung Electronics Co.,Ltd", "108ffe": "HUAWEI TECHNOLOGIES CO.,LTD", "1091a8": "Espressif Inc.", + "1091d1": "Intel Corporate", "109266": "Samsung Electronics Co.,Ltd", "109397": "ARRIS Group, Inc.", "1093e9": "Apple, Inc.", @@ -14223,6 +14269,7 @@ "109add": "Apple, Inc.", "109c70": "Prusa Research s.r.o.", "109d7a": "Huawei Device Co., Ltd.", + "109d9c": "EM Microelectronic", "109e3a": "Zhejiang Tmall Technology Co., Ltd.", "109f41": "Apple, Inc.", "109f4f": "New H3C Intelligence Terminal Co., Ltd.", @@ -14238,7 +14285,7 @@ "10a5d0": "Murata Manufacturing Co., Ltd.", "10a659": "Mobile Create Co.,Ltd.", "10a743": "SK Mtek Limited", - "10a793": "Technicolor CH USA Inc.", + "10a793": "Vantiva USA LLC", "10a829": "Cisco Systems, Inc", "10a932": "Beijing Cyber Cloud Technology Co. ,Ltd.", "10ae60": "Amazon Technologies Inc.", @@ -14272,7 +14319,7 @@ "10c07c": "Blu-ray Disc Association", "10c172": "HUAWEI TECHNOLOGIES CO.,LTD", "10c22f": "China Entropy Co., Ltd.", - "10c25a": "Technicolor CH USA Inc.", + "10c25a": "Vantiva USA LLC", "10c2ba": "UTT Co., Ltd.", "10c37b": "ASUSTek COMPUTER INC.", "10c3ab": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -14288,6 +14335,7 @@ "10c753": "Qingdao Intelligent&Precise Electronics Co.,Ltd.", "10c9ca": "Ace Technology Corp.", "10ca81": "PRECIA", + "10cabf": "Texas Instruments", "10cc1b": "Liverock technologies,INC", "10ccdb": "AXIMUM PRODUITS ELECTRONIQUES", "10cd6e": "FISYS", @@ -14325,11 +14373,13 @@ "10e6ae": "Source Technologies, LLC", "10e77a": "STMicrolectronics International NV", "10e7c6": "Hewlett Packard", + "10e83a": "FIBERX DISTRIBUIDORA DE PRODUTOS DE TELECOMUNICACAO LTDA", "10e840": "CO., LTD.", "10e878": "Nokia", "10e8a7": "Wistron Neweb Corporation", "10e8ee": "PhaseSpace", "10e953": "Huawei Device Co., Ltd.", + "10e992": "INGRAM MICRO SERVICES", "10ea59": "Cisco SPVTG", "10ec81": "Samsung Electronics Co.,Ltd", "10eed9": "Canoga Perkins Corporation", @@ -14351,6 +14401,7 @@ "10fc54": "Shany Electronic Co., Ltd. ", "10fcb6": "mirusystems CO.,LTD", "10feed": "TP-LINK TECHNOLOGIES CO.,LTD.", + "10ffe0": "GIGA-BYTE TECHNOLOGY CO.,LTD.", "1100aa": "Private", "111111": "Private", "140020": "Co.,Ltd. ", @@ -14387,6 +14438,7 @@ "14169d": "Cisco Systems, Inc", "14169e": "Wingtech Group (HongKong)Limited", "14172a": "Fiberhome Telecommunication Technologies Co.,LTD", + "141844": "Xenon Smart Teknoloji Ltd.", "141877": "Dell Inc.", "1418c3": "Intel Corporate", "141973": "Beijing Yunyi Times Technology Co.,Ltd", @@ -14415,6 +14467,7 @@ "142bd6": "Guangdong Appscomm Co.,Ltd", "142c78": "GooWi Wireless Technology Co., Limited", "142d27": "Hon Hai Precision Ind. Co.,Ltd.", + "142d41": "Silicon Laboratories", "142d4d": "Apple, Inc.", "142d79": "Fiberhome Telecommunication Technologies Co.,LTD", "142d8b": "Incipio Technologies, Inc", @@ -14426,6 +14479,8 @@ "1430c6": "Motorola Mobility LLC, a Lenovo Company", "1432d1": "Samsung Electronics Co.,Ltd", "143365": "TEM Mobile Limited", + "143375": "Zyxel Communications Corporation", + "1434f6": "LV SOLUTION SDN. BHD.", "14358b": "Mediabridge Products, LLC.", "1435b3": "Future Designs, Inc.", "143605": "Nokia Corporation", @@ -14518,6 +14573,7 @@ "148473": "Cisco Systems, Inc", "148477": "New H3C Technologies Co., Ltd", "148509": "Apple, Inc.", + "148554": "Earda Technologies co Ltd", "14857f": "Intel Corporate", "148692": "TP-LINK TECHNOLOGIES CO.,LTD.", "14876a": "Apple, Inc.", @@ -14541,12 +14597,14 @@ "14962d": "New H3C Technologies Co., Ltd", "1496e5": "Samsung Electronics Co.,Ltd", "149877": "Apple, Inc.", - "14987d": "Technicolor CH USA Inc.", + "14987d": "Vantiva USA LLC", + "14993e": "Xiaomi Communications Co Ltd", "1499e2": "Apple, Inc.", "149a10": "Microsoft Corporation", "149b2f": "JiangSu ZhongXie Intelligent Technology co., LTD", "149bd7": "MULI MUWAI FURNITURE QIDONG CO., LTD", "149bf3": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", + "149cef": "Texas Instruments", "149d09": "HUAWEI TECHNOLOGIES CO.,LTD", "149d99": "Apple, Inc.", "149e5d": "JSC IB Reform", @@ -14587,12 +14645,13 @@ "14b457": "Silicon Laboratories", "14b484": "Samsung Electronics Co.,Ltd", "14b73d": "ARCHEAN Technologies", - "14b7f8": "Technicolor CH USA Inc.", + "14b7f8": "Vantiva USA LLC", "14b837": "Shenzhen YOUHUA Technology Co., Ltd", "14b968": "HUAWEI TECHNOLOGIES CO.,LTD", "14bb6e": "Samsung Electronics Co.,Ltd", "14bd61": "Apple, Inc.", "14c03e": "ARRIS Group, Inc.", + "14c050": "GUANGDONG GENIUS TECHNOLOGY CO., LTD.", "14c089": "DUNE HD LTD", "14c0a1": "UCloud Technology Co., Ltd.", "14c126": "Nokia Corporation", @@ -14606,6 +14665,7 @@ "14c88b": "Apple, Inc.", "14c913": "LG Electronics", "14c9cf": "Sigmastar Technology Ltd.", + "14ca56": "zte corporation", "14caa0": "Hu&Co", "14cb19": "HP Inc.", "14cb65": "Microsoft Corporation", @@ -14622,6 +14682,7 @@ "14d4fe": "ARRIS Group, Inc.", "14d64d": "D-Link International", "14d76e": "CONCH ELECTRONIC Co.,Ltd", + "14d864": "TP-LINK TECHNOLOGIES CO.,LTD.", "14dae9": "ASUSTek COMPUTER INC.", "14db85": "S NET MEDIA", "14dc51": "Xiamen Cheerzing IOT Technology Co.,Ltd.", @@ -14724,7 +14785,7 @@ "1832a2": "LAON TECHNOLOGY CO., LTD.", "18339d": "Cisco Systems, Inc", "183451": "Apple, Inc.", - "1834af": "Kaonmedia CO., LTD.", + "1834af": "Kaon Group Co., Ltd.", "1835d1": "ARRIS Group, Inc.", "183672": "Shaoxing ShunChuang Technology CO.,LTD", "1836fc": "Elecsys International Corporation", @@ -14749,6 +14810,7 @@ "18422f": "Alcatel Lucent", "1842d4": "Wuhan Hosan Telecommunication Technology Co.,Ltd", "184462": "Riava Networks, Inc.", + "1844cf": "B+L Industrial Measurements GmbH", "1844e6": "zte corporation", "184516": "Texas Instruments", "184593": "Taicang T&W Electronics", @@ -14760,6 +14822,7 @@ "1848be": "Amazon Technologies Inc.", "1848ca": "Murata Manufacturing Co., Ltd.", "1848d8": "Fastback Networks", + "1849f8": "Extreme Networks Headquarters", "184a53": "Apple, Inc.", "184a6f": "Alcatel-Lucent Shanghai Bell Co., Ltd", "184b0d": "Ruckus Wireless", @@ -14774,6 +14837,7 @@ "184f5d": "JRC Mobility Inc.", "18502a": "SOARNEX", "185207": "Sichuan Tianyi Comheart Telecom Co.,LTD", + "18523d": "Xiamen Jiwu Technology CO.,Ltd", "185253": "Pixord Corporation", "185282": "Fiberhome Telecommunication Technologies Co.,LTD", "185345": "Nokia", @@ -14803,6 +14867,7 @@ "186472": "Aruba, a Hewlett Packard Enterprise Company", "186571": "Co., Ltd.", "186590": "Apple, Inc.", + "1865c7": "Dongguan YIMO Technology Co.LTD", "1866c7": "Shenzhen Libre Technology Co., Ltd", "1866da": "Dell Inc.", "1866e3": "Veros Systems, Inc.", @@ -14816,6 +14881,7 @@ "1869d4": "Samsung Electronics Co.,Ltd", "1869d8": "Tuya Smart Inc.", "1869da": "China Mobile Group Device Co.,Ltd.", + "186a81": "Sagemcom Broadband SAS", "186d99": "Adanis Inc.", "186f2d": "Shenzhen Sundray Technologies Company Limited", "18703b": "Huawei Device Co., Ltd.", @@ -14831,8 +14897,10 @@ "187a93": "AMICCOM Electronics Corporation", "187c0b": "Ruckus Wireless", "187c81": "Valeo Vision Systems", + "187caa": "China Mobile Group Device Co.,Ltd.", "187eb9": "Apple, Inc.", "187ed5": "shenzhen kaism technology Co. Ltd", + "188025": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "188090": "Cisco Systems, Inc", "1880ce": "Barberry Solutions Ltd", "1880f5": "Alcatel-Lucent Shanghai Bell Co., Ltd", @@ -14879,7 +14947,9 @@ "18a3e8": "Fiberhome Telecommunication Technologies Co.,LTD", "18a4a9": "Vanu Inc.", "18a59c": "IEEE Registration Authority", + "18a5ff": "Arcadyan Corporation", "18a6f7": "TP-LINK TECHNOLOGIES CO.,LTD.", + "18a788": "Shenzhen MEK Intellisys Pte Ltd", "18a7f1": "Qingdao Haier Technology Co.,Ltd", "18a905": "Hewlett Packard", "18a958": "PROVISION THAI CO., LTD.", @@ -14897,6 +14967,7 @@ "18af61": "Apple, Inc.", "18af8f": "Apple, Inc.", "18af9f": "DIGITRONIC Automationsanlagen GmbH", + "18afa1": "Shenzhen Yifang Network Technology Co., Ltd.", "18b169": "Sonicwall", "18b185": "Co., Ltd.", "18b209": "Torrey Pines Logic, Inc", @@ -14919,6 +14990,7 @@ "18bf1c": "Jiangsu Huitong Group Co.,Ltd.", "18bfb3": "Samsung Electronics Co., Ltd., Memory Division", "18c007": "Huawei Device Co., Ltd.", + "18c009": "New H3C Technologies Co., Ltd", "18c04d": "GIGA-BYTE TECHNOLOGY CO.,LTD.", "18c086": "Broadcom", "18c19d": "Sdn. Bhd.", @@ -14955,6 +15027,7 @@ "18d9ef": "Shuttle Inc.", "18dbf2": "Dell Inc.", "18dc56": "Co.,Ltd", + "18de50": "Tuya Smart Inc.", "18ded7": "HUAWEI TECHNOLOGIES CO.,LTD", "18dfb4": "BOSUNG POWERTEC CO.,LTD.", "18dfc1": "Aetheros", @@ -14988,9 +15061,11 @@ "18f46b": "Telenor Connexion AB", "18f643": "Apple, Inc.", "18f650": "Multimedia Pacific Limited", + "18f697": "Axiom Memory Solutions, Inc.", "18f76b": "Zhejiang Winsight Technology CO.,LTD", "18f87a": "i3 International Inc.", "18f87f": "Wha Yu Industrial Co., Ltd.", + "18f935": "Cisco Systems, Inc", "18f9c4": "BAE Systems", "18fa6f": "ISC applied systems corp", "18fab7": "Apple, Inc.", @@ -15127,6 +15202,7 @@ "1c5ee6": "SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.", "1c5f2b": "D-Link International", "1c5fff": "Beijing Ereneben Information Technology Co.,Ltd Shenzhen Branch", + "1c6066": "TEJAS NETWORKS LTD", "1c60d2": "Fiberhome Telecommunication Technologies Co.,LTD", "1c60de": "MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "1c61b4": "TP-Link Corporation Limited", @@ -15171,6 +15247,7 @@ "1c7b23": "Qingdao Hisense Communications Co.,Ltd.", "1c7c11": "EID ", "1c7c45": "Vitek Industrial Video Products, Inc.", + "1c7c98": "NEC Platforms, Ltd.", "1c7cc7": "Coriant GmbH", "1c7d22": "FUJIFILM Business Innovation Corp.", "1c7e51": "3bumen.com", @@ -15180,6 +15257,7 @@ "1c8341": "Hefei Bitland Information Technology Co.Ltd", "1c83b0": "Linked IP GmbH", "1c8464": "FORMOSA WIRELESS COMMUNICATION CORP.", + "1c860b": "Guangdong Taiying Technology Co.,Ltd", "1c8682": "Apple, Inc.", "1c869a": "Samsung Electronics Co.,Ltd", "1c86ad": "MCT CO., LTD.", @@ -15213,11 +15291,11 @@ "1c9c26": "Zoovel Technologies", "1c9c8c": "Juniper Networks", "1c9d3e": "Sdn. Bhd.", - "1c9d72": "Technicolor CH USA Inc.", + "1c9d72": "Vantiva USA LLC", "1c9dc2": "Espressif Inc.", "1c9e46": "Apple, Inc.", "1c9ecb": "Beijing Nari Smartchip Microelectronics Company Limited", - "1c9ecc": "Technicolor CH USA Inc.", + "1c9ecc": "Vantiva USA LLC", "1c9f4e": "COMPANY LIMITED", "1ca0b8": "Hon Hai Precision Industry Co., Ltd.", "1ca0d3": "IEEE Registration Authority", @@ -15231,6 +15309,7 @@ "1caa07": "Cisco Systems, Inc", "1cab01": "Innovolt", "1cab34": "New H3C Technologies Co., Ltd", + "1cab48": "TECNO MOBILE LIMITED", "1caba7": "Apple, Inc.", "1cabc0": "Hitron Technologies. Inc", "1cadd1": "Bosung Electronics Co., Ltd.", @@ -15268,6 +15347,7 @@ "1cc586": "Absolute Acoustics", "1cc63c": "Arcadyan Technology Corporation", "1cc72d": "Shenzhen Huapu Digital CO.,Ltd", + "1cc992": "Honor Device Co., Ltd.", "1cca41": "AO ", "1ccae3": "IEEE Registration Authority", "1ccb99": "TCT mobile ltd", @@ -15321,6 +15401,7 @@ "1cff59": "Sichuan Tianyi Comheart Telecom Co.,LTD", "20014f": "Linea Research Ltd", "2002af": "Murata Manufacturing Co., Ltd.", + "2002fe": "Hangzhou Dangbei Network Technology Co., Ltd", "20040f": "Dell Inc.", "2004f3": "Honor Device Co., Ltd.", "200505": "RADMAX COMMUNICATION PRIVATE LIMITED", @@ -15330,6 +15411,7 @@ "200a0d": "IEEE Registration Authority", "200a5e": "Xiangshan Giant Eagle Technology Developing Co., Ltd.", "200b16": "Texas Instruments", + "200b74": "AzureWave Technology Inc.", "200bc5": "Cisco Systems, Inc", "200bc7": "HUAWEI TECHNOLOGIES CO.,LTD", "200bcf": "Nintendo Co.,Ltd", @@ -15345,11 +15427,13 @@ "2012d5": "Scientech Materials Corporation", "2013e0": "Samsung Electronics Co.,Ltd", "201582": "Apple, Inc.", + "2015de": "Samsung Electronics Co.,Ltd", "20163d": "Sdn. Bhd.", "201642": "Microsoft Corporation", "2016b9": "Intel Corporate", "2016d8": "Liteon Technology Corporation", "201742": "LG Electronics", + "201746": "Paradromics, Inc.", "20180e": "Shenzhen Sunchip Technology Co., Ltd", "201a06": "CO., LTD. ", "201a94": "Apple, Inc.", @@ -15393,6 +15477,7 @@ "203956": "HMD Global Oy", "203a07": "Cisco Systems, Inc", "203a43": "Intel Corporate", + "203aeb": "zte corporation", "203aef": "Sivantos GmbH", "203b69": "vivo Mobile Communication Co., Ltd.", "203cae": "Apple, Inc.", @@ -15409,6 +15494,7 @@ "204569": "ITEL MOBILE LIMITED", "2046a1": "VECOW Co., Ltd", "204747": "Dell Inc.", + "2047b5": "Sagemcom Broadband SAS", "2047da": "Xiaomi Communications Co Ltd", "2047ed": "SKY UK LIMITED", "204aaa": "Hanscan Spain S.A.", @@ -15459,11 +15545,12 @@ "206a94": "Hitron Technologies. Inc", "206aff": "Atlas Elektronik UK Limited", "206be7": "TP-LINK TECHNOLOGIES CO.,LTD.", - "206c8a": "Extreme Networks, Inc.", + "206c8a": "Extreme Networks Headquarters", "206d31": "FIREWALLA INC", "206e9c": "Samsung Electronics Co.,Ltd", "206fec": "Braemac CA LLC", "20719e": "SF Technology Co.,Ltd", + "2072a9": "Beijing Xiaomi Electronics Co.,Ltd", "207355": "ARRIS Group, Inc.", "207454": "vivo Mobile Communication Co., Ltd.", "2074cf": "Shenzhen Voxtech Co.,Ltd", @@ -15491,6 +15578,7 @@ "208756": "SIEMENS AG", "2087ac": "AES motomation", "2087ec": "HUAWEI TECHNOLOGIES CO.,LTD", + "208810": "Dell Inc.", "20896f": "Fiberhome Telecommunication Technologies Co.,LTD", "208984": "CO., LTD. ", "208986": "zte corporation", @@ -15503,6 +15591,7 @@ "209148": "Texas Instruments", "20918a": "PROFALUX", "2091d9": "I'M SPA", + "2091df": "Apple, Inc.", "20934d": "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "20968a": "Information Technology Co., Ltd.", "209727": "TELTONIKA NETWORKS UAB", @@ -15514,7 +15603,7 @@ "209be6": "Guangzhou Shiyuan Electronic Technology Company Limited", "209cb4": "Aruba, a Hewlett Packard Enterprise Company", "209e79": "Universal Electronics, Inc.", - "209ef7": "Extreme Networks, Inc.", + "209ef7": "Extreme Networks Headquarters", "20a171": "Amazon Technologies Inc.", "20a2e4": "Apple, Inc.", "20a2e7": "Lee-Dickens Ltd", @@ -15543,9 +15632,11 @@ "20b730": "TeconGroup, Inc", "20b780": "Toshiba Visual Solutions Corporation Co.,Ltd", "20b7c0": "OMICRON electronics GmbH", + "20b82b": "Sagemcom Broadband SAS", "20b868": "Motorola Mobility LLC, a Lenovo Company", "20ba36": "u-blox AG", "20bb76": "COL GIOVANNI PAOLO SpA", + "20bbbc": "Hangzhou Ezviz Software Co.,Ltd.", "20bbc0": "Cisco Systems, Inc", "20bbc6": "Jabil Circuit Hungary Ltd.", "20becd": "eero inc.", @@ -15592,6 +15683,7 @@ "20e09c": "Nokia", "20e2a8": "Apple, Inc.", "20e407": "Spark srl", + "20e46f": "vivo Mobile Communication Co., Ltd.", "20e52a": "NETGEAR", "20e564": "ARRIS Group, Inc.", "20e6df": "eero inc.", @@ -15617,6 +15709,7 @@ "20f543": "Hui Zhou Gaoshengda Technology Co.,LTD", "20f597": "Maasiv, LLC", "20f77c": "vivo Mobile Communication Co., Ltd.", + "20f83b": "Nabu Casa, Inc.", "20f85e": "Delta Electronics", "20fabb": "Cambridge Executive Limited", "20fadb": "Co.,Ltd.", @@ -15676,10 +15769,11 @@ "241eeb": "Apple, Inc.", "241f2c": "Calsys, Inc.", "241fa0": "HUAWEI TECHNOLOGIES CO.,LTD", - "241fbd": "Extreme Networks, Inc.", + "241fbd": "Extreme Networks Headquarters", "2420c7": "Sagemcom Broadband SAS", "242124": "Nokia", "2421ab": "Sony Corporation", + "242361": "vivo Mobile Communication Co., Ltd.", "24240e": "Apple, Inc.", "242642": "SHARP Corporation.", "2426ba": "Shenzhen Toptel Technology Co., Ltd.", @@ -15720,6 +15814,7 @@ "24497b": "Innovative Converged Devices Inc", "244b03": "Samsung Electronics Co.,Ltd", "244b81": "Samsung Electronics Co.,Ltd", + "244bf1": "HUAWEI TECHNOLOGIES CO.,LTD", "244bfe": "ASUSTek COMPUTER INC.", "244c07": "HUAWEI TECHNOLOGIES CO.,LTD", "244cab": "Espressif Inc.", @@ -15761,6 +15856,7 @@ "2469a5": "HUAWEI TECHNOLOGIES CO.,LTD", "246aab": "IT-IS International", "246c60": "Huawei Device Co., Ltd.", + "246c84": "Cisco Systems, Inc", "246c8a": "YUKAI Engineering", "246e96": "Dell Inc.", "246f28": "Espressif Inc.", @@ -15850,7 +15946,7 @@ "24bcf8": "HUAWEI TECHNOLOGIES CO.,LTD", "24be05": "Hewlett Packard", "24be18": "DADOUTEK COMPANY LIMITED", - "24bf74": "Private", + "24bf74": "Hamamatsu Photonics K.K.", "24c0b3": "RSF", "24c17a": "BEIJING IACTIVE NETWORK CO.,LTD", "24c1bd": "CRRC DALIAN R&D CO.,LTD.", @@ -15890,6 +15986,7 @@ "24dbad": "ShopperTrak RCT Corporation", "24dbed": "Samsung Electronics Co.,Ltd", "24dc0f": "Phytium Technology Co.,Ltd.", + "24dcc3": "Espressif Inc.", "24dec6": "Aruba, a Hewlett Packard Enterprise Company", "24df6a": "HUAWEI TECHNOLOGIES CO.,LTD", "24dfa7": "Hangzhou BroadLink Technology Co.,Ltd", @@ -15899,7 +15996,7 @@ "24e3de": "China Telecom Fufu Information Technology Co., Ltd.", "24e43f": "Wenzhou Kunmei Communication Technology Co.,Ltd.", "24e4c8": "Fiberhome Telecommunication Technologies Co.,LTD", - "24e4ce": "Kaonmedia CO., LTD.", + "24e4ce": "Kaon Group Co., Ltd.", "24e50f": "Google, Inc.", "24e5aa": "Philips Oral Healthcare, Inc.", "24e6ba": "JSC Zavod im. Kozitsky", @@ -15936,6 +16033,7 @@ "24fd0d": "Intelbras", "24fd52": "Liteon Technology Corporation", "24fd5b": "SmartThings, Inc.", + "24fdfa": "Private", "24fe9a": "CyberTAN Technology Inc.", "28011c": "zte corporation", "28022e": "Apple, Inc.", @@ -15997,6 +16095,7 @@ "283152": "HUAWEI TECHNOLOGIES CO.,LTD", "283166": "vivo Mobile Communication Co., Ltd.", "28317e": "Hongkong Nano IC Technologies Co., Ltd", + "2831f8": "HUAWEI TECHNOLOGIES CO.,LTD", "2832c5": "HUMAX Co., Ltd.", "283334": "Huawei Device Co., Ltd.", "283410": "Enigma Diagnostics Limited", @@ -16065,10 +16164,12 @@ "286ed4": "HUAWEI TECHNOLOGIES CO.,LTD", "286f40": "Tonly Technology Co. Ltd ", "286f7f": "Cisco Systems, Inc", + "286fb9": "Nokia Shanghai Bell Co., Ltd.", "28704e": "Ubiquiti Inc", "287184": "Spire Payments", "2872c5": "Smartmatic Corp", "2872f0": "ATHENA", + "2873f6": "Amazon Technologies Inc.", "2874f5": "Nokia Solutions and Networks GmbH & Co. KG", "2875d8": "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "287610": "IgniteNet", @@ -16092,16 +16193,19 @@ "28840e": "silicon valley immigration service ", "2884fa": "SHARP Corporation", "28852d": "Touch Networks", + "2885bb": "Zen Exim Pvt. Ltd.", "2887ba": "TP-Link Corporation Limited", "288915": "CashGuard Sverige AB", "288a1c": "Juniper Networks", "288cb8": "zte corporation", + "288eb9": "Wacom Co.,Ltd.", "288eec": "Apple, Inc.", "288ff6": "Apple, Inc.", "2891d0": "Stage Tec Entwicklungsgesellschaft für professionelle Audiotechnik mbH", "28924a": "Hewlett Packard", "28937d": "Sichuan Tianyi Comheart Telecom Co.,LTD", "2893fe": "Cisco Systems, Inc", + "289401": "NETGEAR", "28940f": "Cisco Systems, Inc", "2894af": "Samhwa Telecom", "2897b8": "myenergi Ltd", @@ -16122,7 +16226,7 @@ "28a1eb": "CO.,LTD", "28a241": "exlar corp", "28a24b": "Juniper Networks", - "28a331": "Sierra Wireless", + "28a331": "Sierra Wireless, ULC", "28a53f": "vivo Mobile Communication Co., Ltd.", "28a574": "Miller Electric Mfg. Co.", "28a5ee": "Shenzhen SDGI CATV Co., Ltd", @@ -16148,13 +16252,14 @@ "28ba18": "NextNav, LLC", "28bab5": "Samsung Electronics Co.,Ltd", "28bb59": "RNET Technologies, Inc.", + "28bbed": "Co., Ltd.", "28bc05": "BLU Products Inc", "28bc18": "SourcingOverseas Co. Ltd", "28bc56": "EMAC, Inc.", "28bd89": "Google, Inc.", "28be03": "TCT mobile ltd", "28be43": "vivo Mobile Communication Co., Ltd.", - "28be9b": "Technicolor CH USA Inc.", + "28be9b": "Vantiva USA LLC", "28bef3": "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "28bf89": "Fiberhome Telecommunication Technologies Co.,LTD", "28c01b": "Shenzhen Skyworth Digital Technology CO., Ltd", @@ -16202,6 +16307,7 @@ "28d98a": "Hangzhou Konke Technology Co.,Ltd.", "28d997": "Yuduan Mobile Co., Ltd.", "28db81": "Shanghai Guao Electronic Technology Co., Ltd", + "28dba7": "Silicon Laboratories", "28de65": "Aruba, a Hewlett Packard Enterprise Company", "28dea8": "zte corporation", "28dee5": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -16217,6 +16323,7 @@ "28e476": "Pi-Coral", "28e5b0": "HUAWEI TECHNOLOGIES CO.,LTD", "28e608": "Tokheim", + "28e6a9": "Samsung Electronics Co.,Ltd", "28e6e9": "SIS Sat Internet Services GmbH", "28e71d": "Arista Networks", "28e794": "Microtime Computer Inc.", @@ -16224,7 +16331,9 @@ "28e98e": "Mitsubishi Electric Corporation", "28ea0b": "Microsoft Corporation", "28ea2d": "Apple, Inc.", + "28eb0a": "Rolling Wireless S.a.r.l. Luxembourg", "28eba6": "Nex-T LLC", + "28ec22": "eero inc.", "28ec95": "Apple, Inc.", "28ec9a": "Texas Instruments", "28ed58": "JAG Jakob AG", @@ -16258,6 +16367,7 @@ "28fede": "COMESTA, Inc.", "28ff3c": "Apple, Inc.", "28ff3e": "zte corporation", + "28ff5f": "Co.,Ltd.", "28ffb2": "Toshiba Corp.", "2c002a": "Shenzhen TINNO Mobile Technology Corp.", "2c002c": "UNOWHY", @@ -16284,6 +16394,7 @@ "2c10c1": "Nintendo Co., Ltd.", "2c1165": "Silicon Laboratories", "2c15bf": "Samsung Electronics Co.,Ltd", + "2c15d9": "HUAWEI TECHNOLOGIES CO.,LTD", "2c15e1": "Co., Ltd.", "2c16bd": "IEEE Registration Authority", "2c1809": "Apple, Inc.", @@ -16342,6 +16453,8 @@ "2c3afd": "AVM Audiovisuelles Marketing und Computersysteme GmbH", "2c3b70": "AzureWave Technology Inc.", "2c3bfd": "Netstor Technology Co., Ltd.", + "2c3c05": "Marinesync Corp", + "2c3ebf": "HOSIN Global Electronics Co., Ltd.", "2c3ecf": "Cisco Systems, Inc", "2c3f0b": "Cisco Meraki", "2c3f38": "Cisco Systems, Inc", @@ -16356,10 +16469,12 @@ "2c4401": "Samsung Electronics Co.,Ltd", "2c441b": "Spectrum Medical Limited", "2c44fd": "Hewlett Packard", + "2c459a": "Limited", "2c4759": "Beijing MEGA preponderance Science & Technology Co. Ltd", "2c4835": "IEEE Registration Authority", "2c4881": "vivo Mobile Communication Co., Ltd.", "2c4a11": "Ciena Corporation", + "2c4c15": "Juniper Networks", "2c4cc6": "Murata Manufacturing Co., Ltd.", "2c4d54": "ASUSTek COMPUTER INC.", "2c4d79": "WEIFANG GOERTEK ELECTRONICS CO.,LTD", @@ -16459,7 +16574,9 @@ "2c97ed": "Sony Imaging Products & Solutions Inc.", "2c9811": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "2c9924": "ARRIS Group, Inc.", + "2c9975": "Samsung Electronics Co.,Ltd", "2c9aa4": "Eolo SpA", + "2c9c58": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "2c9d1e": "HUAWEI TECHNOLOGIES CO.,LTD", "2c9d65": "vivo Mobile Communication Co., Ltd.", "2c9e00": "Sony Interactive Entertainment Inc.", @@ -16487,6 +16604,7 @@ "2cab00": "HUAWEI TECHNOLOGIES CO.,LTD", "2cab25": "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "2cab33": "Texas Instruments", + "2cab46": "Ruckus Wireless", "2caba4": "Cisco SPVTG", "2cabeb": "Cisco Systems, Inc", "2cac44": "CONEXTOP", @@ -16497,18 +16615,21 @@ "2cb0fd": "Shenzhen MiaoMing Intelligent Technology Co.,Ltd", "2cb115": "Sdn. Bhd.", "2cb21a": "Co., Ltd.", + "2cb301": "Honor Device Co., Ltd.", "2cb43a": "Apple, Inc.", "2cb693": "Radware", "2cb69d": "RED Digital Cinema", "2cb6c8": "Raisecom Technology CO., LTD", "2cb8ed": "SonicWall", "2cbaba": "Samsung Electronics Co.,Ltd", + "2cbaca": "Cosonic Electroacoustic Technology Co., Ltd.", "2cbc87": "Apple, Inc.", "2cbe08": "Apple, Inc.", "2cbe97": "Ingenieurbuero Bickele und Buehler GmbH", "2cbeeb": "Nothing Technology Limited", "2cc253": "Apple, Inc.", "2cc260": "Oracle Corporation ", + "2cc3e6": "SHENZHEN BILIAN ELECTRONIC CO.,LTD", "2cc407": "machineQ", "2cc546": "Huawei Device Co., Ltd.", "2cc548": "IAdea Corporation", @@ -16576,6 +16697,7 @@ "2cfdb3": "Tonly Technology Co. Ltd ", "2cfdb4": "Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd", "2cfe4f": "Xiaomi Communications Co Ltd", + "2cfee2": "Qingdao Hisense Communications Co.,Ltd.", "2cff65": "Oki Electric Industry Co., Ltd.", "2cffee": "vivo Mobile Communication Co., Ltd.", "3003c8": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", @@ -16610,6 +16732,7 @@ "301a30": "Mako Networks Ltd", "301aba": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "301b97": "Lierda Science & Technology Group Co.,Ltd", + "301d49": "Firmus Technologies Pty Ltd", "301f48": "zte corporation", "301f9a": "IEEE Registration Authority", "30215b": "Shenzhen Ostar Display Electronic Co.,Ltd", @@ -16622,6 +16745,8 @@ "302952": "Hillstone Networks Inc", "3029be": "Shanghai MRDcom Co.,Ltd", "302bdc": "Top-Unum Electronics Co., LTD", + "302f1e": "SIEMENS AG", + "3030f9": "Espressif Inc.", "30317d": "Hosiden Corporation", "303180": "Shenzhen Skyworth Digital Technology CO., Ltd", "303235": "Qingdao Intelligent&Precise Electronics Co.,Ltd.", @@ -16671,6 +16796,7 @@ "304f00": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "304f75": "DZS Inc.", "305075": "GN Audio A/S", + "3050ce": "Xiaomi Communications Co Ltd", "3050fd": "Co.,Ltd", "3051f8": "BYK-Gardner GmbH", "30525a": "NST Co., LTD", @@ -16690,6 +16816,7 @@ "305d38": "Beissbarth ", "305da6": "ADVALY SYSTEM Inc.", "305f77": "New H3C Technologies Co., Ltd", + "30600a": "CIG SHANGHAI CO LTD", "306023": "ARRIS Group, Inc.", "306112": "PAV GmbH", "306118": "Paradom Inc.", @@ -16711,6 +16838,7 @@ "30786b": "TIANJIN Golden Pentagon Electronics Co., Ltd.", "3078c2": "Innowireless / QUCELL Networks", "3078d3": "Virgilant Technologies Ltd.", + "307a57": "Inc", "307bac": "New H3C Technologies Co., Ltd", "307bc9": "SHENZHEN BILIAN ELECTRONIC CO.,LTD", "307c30": "RIM", @@ -16783,6 +16911,7 @@ "30b1b5": "Arcadyan Corporation", "30b216": "Hitachi Energy Germany AG", "30b237": "GD Midea Air-Conditioning Equipment Co.,Ltd.", + "30b29f": "EVIDENT CORPORATION", "30b346": "CJSC NORSI-TRANS", "30b3a2": "Shenzhen Heguang Measurement & Control Technology Co.,Ltd", "30b49e": "TP-LINK TECHNOLOGIES CO.,LTD.", @@ -16829,6 +16958,7 @@ "30de86": "Cedac Software S.r.l.", "30df17": "ALPSALPINE CO,.LTD", "30df8d": "SHENZHEN GONGJIN ELECTRONICS CO.,LT", + "30e04f": "Apple, Inc.", "30e090": "Genevisio Ltd.", "30e171": "Hewlett Packard", "30e1f1": "Intelbras", @@ -16887,6 +17017,7 @@ "340b40": "MIOS ELETTRONICA SRL", "340ced": "Moduel AB", "340f66": "Web Sensing LLC", + "3410f4": "Silicon Laboratories", "341290": "Treeview Co.,Ltd.", "341298": "Apple, Inc.", "3412f9": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -16952,6 +17083,7 @@ "34466f": "HiTEM Engineering", "3446ec": "Huawei Device Co., Ltd.", "34479a": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", + "3447d4": "Chengdu Quanjing Intelligent Technology Co.,Ltd", "3448ed": "Dell Inc.", "34495b": "Sagemcom Broadband SAS", "344ac3": "HuNan ZiKun Information Technology CO., Ltd", @@ -16960,6 +17092,7 @@ "344ca4": "amazipoint technology Ltd.", "344cc8": "Echodyne Corp", "344dea": "zte corporation", + "344e2f": "LEAR", "344f3f": "IO-Power Technology Co., Ltd.", "344f5c": "R&M AG", "344f69": "EKINOPS SAS", @@ -16983,6 +17116,7 @@ "345d10": "Wytek", "345d9e": "Sagemcom Broadband SAS", "345da8": "Cisco Systems, Inc", + "345e08": "Roku, Inc", "3460f9": "TP-Link Corporation Limited", "346178": "The Boeing Company", "346288": "Cisco Systems, Inc", @@ -16994,6 +17128,7 @@ "34684a": "Teraworks Co., Ltd.", "346893": "Tecnovideo Srl", "346895": "Hon Hai Precision Ind. Co.,Ltd.", + "3468b5": "Texas Instruments", "346987": "zte corporation", "346ac2": "HUAWEI TECHNOLOGIES CO.,LTD", "346b46": "Sagemcom Broadband SAS", @@ -17004,6 +17139,7 @@ "346e8a": "Ecosense", "346e9d": "Ericsson AB", "346f24": "AzureWave Technology Inc.", + "346f71": "TenaFe Inc. ", "346f90": "Cisco Systems, Inc", "346f92": "White Rodgers Division", "346fed": "Enovation Controls", @@ -17038,15 +17174,18 @@ "3484e4": "Texas Instruments", "348511": "Shenzhen Skyworth Digital Technology CO., Ltd", "348518": "Espressif Inc.", - "348584": "Extreme Networks, Inc.", + "348584": "Extreme Networks Headquarters", "34862a": "Heinz Lackmann GmbH & Co KG", "34865d": "Espressif Inc.", "34873d": "Quectel Wireless Solutions Co.,Ltd.", + "348818": "Cisco Systems, Inc", "34885d": "Logitech Far East", "348a12": "Aruba, a Hewlett Packard Enterprise Company", "348a7b": "Samsung Electronics Co.,Ltd", "348aae": "Sagemcom Broadband SAS", "348b75": "LIMITED", + "348c5e": "Apple, Inc.", + "348d52": "Sichuan Tianyi Comheart Telecom Co.,LTD", "348f27": "Ruckus Wireless", "34916f": "UserGate Ltd.", "3492c2": "Square Route Co., Ltd.", @@ -17098,6 +17237,7 @@ "34b472": "Espressif Inc.", "34b571": "PLDS", "34b5a3": "CIG SHANGHAI CO LTD", + "34b7da": "Espressif Inc.", "34b7fd": "Guangzhou Younghead Electronic Technology Co.,Ltd", "34b883": "Cisco Systems, Inc", "34b98d": "Xiaomi Communications Co Ltd", @@ -17141,16 +17281,19 @@ "34d262": "SZ DJI TECHNOLOGY CO.,LTD", "34d270": "Amazon Technologies Inc.", "34d2c4": "RENA GmbH Print Systeme", + "34d4e3": "Atom Power, Inc.", "34d693": "Huawei Device Co., Ltd.", "34d712": "Smartisan Digital Co., Ltd", "34d737": "IBG Industriebeteiligungsgesellschaft mbH &b Co. KG", "34d772": "Xiamen Yudian Automation Technology Co., Ltd ", "34d7b4": "Tributary Systems, Inc.", + "34d856": "Shenzhen Skyworth Digital Technology CO., Ltd", "34d954": "WiBotic Inc.", "34dab7": "zte corporation", "34dac1": "Co., Ltd.", "34db9c": "Sagemcom Broadband SAS", "34dbfd": "Cisco Systems, Inc", + "34dc99": "New H3C Technologies Co., Ltd", "34dd04": "Minut AB", "34dd7e": "Umeox Innovations Co.,Ltd", "34de1a": "Intel Corporate", @@ -17175,12 +17318,14 @@ "34e9fe": "Metis Co., Ltd.", "34ea34": "HangZhou Gubei Electronics Technology Co.,Ltd", "34eae7": "Shanghai High-Flying Electronics Technology Co., Ltd", + "34ecb6": "Phyplus Microelectronics Limited", "34ed0b": "Shanghai XZ-COM.CO.,Ltd.", "34ed1b": "Cisco Systems, Inc", "34ee2a": "ConMet", "34ef44": "2Wire Inc", "34ef8b": "NTT Communications Corporation", "34efb6": "Edgecore Networks Corporation", + "34f043": "Samsung Electronics Co.,Ltd", "34f0ca": "Shenzhen Linghangyuan Digital Technology Co.,Ltd.", "34f150": "Hui Zhou Gaoshengda Technology Co.,LTD", "34f223": "Fujian Newland Communication Science Technology Co.,Ltd.", @@ -17240,7 +17385,7 @@ "381730": "Ulrich Lippert GmbH & Co KG", "381766": "PROMZAKAZ LTD.", "3817c3": "Hewlett Packard Enterprise", - "3817e1": "Technicolor CH USA Inc.", + "3817e1": "Vantiva USA LLC", "38184c": "Sony Home Entertainment&Sound Products Inc", "38192f": "Nokia Corporation", "381a52": "Seiko Epson Corporation", @@ -17272,19 +17417,21 @@ "382c4a": "ASUSTek COMPUTER INC.", "382dd1": "Samsung Electronics Co.,Ltd", "382de8": "Samsung Electronics Co.,Ltd", + "38315a": "Rinnai", "3831ac": "WEG", "3835fb": "Sagemcom Broadband SAS", "38378b": "HUAWEI TECHNOLOGIES CO.,LTD", "38384b": "vivo Mobile Communication Co., Ltd.", "3838a6": "Arista Networks", "38396c": "Huawei Device Co., Ltd.", + "38398f": "Silicon Laboratories", "383a21": "IEEE Registration Authority", "383b26": "Jiangsu Qinheng Co., Ltd.", "383bc8": "2Wire Inc", "383c9c": "Fujian Newland Payment Technology Co.,Ltd.", "383d5b": "Fiberhome Telecommunication Technologies Co.,LTD", "383f10": "DBL Technology Ltd.", - "383fb3": "Technicolor CH USA Inc.", + "383fb3": "Vantiva USA LLC", "38420b": "Sonos, Inc.", "384233": "Wildeboer Bauteile GmbH", "3842a6": "Ingenieurbuero Stahlkopf", @@ -17299,6 +17446,7 @@ "3847bc": "HUAWEI TECHNOLOGIES CO.,LTD", "3847f2": "Recogni Inc", "38484c": "Apple, Inc.", + "384a80": "Samsung Electronics Co.,Ltd", "384b24": "SIEMENS AG", "384b5b": "ZTRON TECHNOLOGY LIMITED", "384b76": "AIRTAME ApS", @@ -17368,6 +17516,7 @@ "3888a4": "Apple, Inc.", "38892c": "Apple, Inc.", "3889dc": "Opticon Sensors Europe B.V.", + "388a06": "Samsung Electronics Co.,Ltd", "388a21": "UAB Teltonika Telematics", "388ab7": "ITC Networks", "388abe": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", @@ -17381,6 +17530,7 @@ "3891b7": "Cisco Systems, Inc", "3891d5": "Hangzhou H3C Technologies Co., Limited", "3891fb": "Xenox Holding BV", + "38922e": "ArrayComm", "389461": "Sdn. Bhd.", "389496": "Samsung Electronics Co.,Ltd", "3894e0": "Syrotech Networks. Ltd.", @@ -17391,6 +17541,7 @@ "3898d8": "MERITECH CO.,LTD", "3898e9": "Huawei Device Co., Ltd.", "389af6": "Samsung Electronics Co.,Ltd", + "389cb2": "Apple, Inc.", "389d92": "Seiko Epson Corporation", "389e80": "zte corporation", "389f5a": "C-Kur TV Inc.", @@ -17414,6 +17565,7 @@ "38ab16": "NPO RTT LLC", "38ab41": "Texas Instruments", "38ac3d": "Nephos Inc", + "38ad2b": "Hitron Technologies. Inc", "38ad8e": "New H3C Technologies Co., Ltd", "38adbe": "New H3C Technologies Co., Ltd", "38af29": "Zhejiang Dahua Technology Co., Ltd.", @@ -17444,6 +17596,7 @@ "38bf2f": "Espec Corp.", "38bf33": "NEC CASIO Mobile Communications", "38c096": "ALPSALPINE CO,.LTD", + "38c0ea": "Fortinet, Inc.", "38c2ba": "CCTV NEOTECH", "38c4e8": "NSS Sp. z o.o.", "38c70a": "WiFiSong", @@ -17473,6 +17626,7 @@ "38e08e": "Mitsubishi Electric Corporation", "38e1aa": "zte corporation", "38e26e": "ShenZhen Sweet Rain Electronics Co.,Ltd.", + "38e2ca": "Katun Corporation", "38e2dd": "zte corporation", "38e39f": "Motorola Mobility LLC, a Lenovo Company", "38e3c5": "Taicang T&W Electronics", @@ -17503,6 +17657,8 @@ "38f557": "JOLATA, INC.", "38f597": "home2net GmbH", "38f601": "Solid State Storage Technology Corporation", + "38f6cf": "zte corporation", + "38f6ed": "EVK DI Kerschhaggl GmbH", "38f708": "National Resource Management, Inc.", "38f73d": "Amazon Technologies Inc.", "38f7b2": "SEOJUN ELECTRIC", @@ -17514,6 +17670,7 @@ "38f8ca": "OWIN Inc.", "38f8f6": "Adtran Inc", "38f9d3": "Apple, Inc.", + "38f9f5": "Garmin International", "38faca": "Co.,Ltd", "38fb14": "HUAWEI TECHNOLOGIES CO.,LTD", "38fc34": "Huawei Device Co., Ltd.", @@ -17538,15 +17695,19 @@ "3c0754": "Apple, Inc.", "3c0771": "Sony Corporation", "3c081e": "Beijing Yupont Electric Power Technology Co.,Ltd", + "3c08cd": "Juniper Networks", "3c08f6": "Cisco Systems, Inc", "3c096d": "Powerhouse Dynamics", + "3c0af3": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "3c0b4f": "Yandex Services AG", "3c0c48": "Servergy, Inc.", "3c0c7d": "Tiny Mesh AS", "3c0cdb": "UNION MAN TECHNOLOGY CO.,LTD", + "3c0d2c": "Liquid-Markets GmbH", "3c0e23": "Cisco Systems, Inc", "3c0fc1": "KBC Networks", "3c1040": "daesung network", + "3c1060": "Fiberhome Telecommunication Technologies Co.,LTD", "3c106f": "ALBAHITH TECHNOLOGIES ", "3c10e6": "PHAZR Inc.", "3c11b2": "Fraunhofer FIT", @@ -17562,6 +17723,7 @@ "3c1915": "GFI Chrono Time", "3c195e": "Samsung Electronics Co.,Ltd", "3c197d": "Ericsson AB", + "3c19cb": "TECNO MOBILE LIMITED", "3c1a0f": "ClearSky Data", "3c1a57": "Cardiopulmonary Corp", "3c1a79": "Huayuan Technology CO.,LTD", @@ -17586,7 +17748,9 @@ "3c2c94": "HangZhou Delan Technology Co.,Ltd)", "3c2c99": "Edgecore Networks Corporation", "3c2ca6": "Beijing Xiaomi Electronics Co.,Ltd", + "3c2d9e": "Vantiva - Connected Home", "3c2db7": "Texas Instruments", + "3c2ef5": "Silicon Laboratories", "3c2ef9": "Apple, Inc.", "3c2eff": "Apple, Inc.", "3c2f3a": "SFORZATO Corp.", @@ -17595,6 +17759,7 @@ "3c3174": "Google, Inc.", "3c3178": "Qolsys Inc.", "3c3300": "Shenzhen Bilian electronic CO.,LTD", + "3c3332": "D-Link Corporation", "3c3556": "Cognitec Systems GmbH", "3c363d": "Nokia Corporation", "3c36e4": "ARRIS Group, Inc.", @@ -17628,6 +17793,7 @@ "3c4e56": "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "3c510e": "Cisco Systems, Inc", "3c5282": "Hewlett Packard", + "3c52a1": "TP-Link Corporation Limited", "3c53d7": "CEDES AG", "3c5447": "HUAWEI TECHNOLOGIES CO.,LTD", "3c5576": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", @@ -17687,7 +17853,7 @@ "3c806b": "Hunan Voc Acoustics Technology Co., Ltd.", "3c80aa": "Ransnet Singapore Pte Ltd", "3c81d8": "Sagemcom Broadband SAS", - "3c82c0": "Technicolor CH USA Inc.", + "3c82c0": "Vantiva USA LLC", "3c831e": "CKD Corporation", "3c8375": "Microsoft Corporation", "3c83b5": "Advance Vision Electronics Co. Ltd.", @@ -17724,7 +17890,7 @@ "3c98bf": "Quest Controls, Inc.", "3c998c": "Houwa System Design Corp.", "3c99f7": "Lansentechnology AB", - "3c9a77": "Technicolor CH USA Inc.", + "3c9a77": "Vantiva USA LLC", "3c9bc6": "Huawei Device Co., Ltd.", "3c9bd6": "Vizio, Inc", "3c9c0f": "Intel Corporate", @@ -17761,7 +17927,7 @@ "3cb53d": "HUNAN GOKE MICROELECTRONICS CO.,LTD", "3cb6b7": "vivo Mobile Communication Co., Ltd.", "3cb72b": "PLUMgrid Inc", - "3cb74b": "Technicolor CH USA Inc.", + "3cb74b": "Vantiva USA LLC", "3cb792": "Hitachi Maxell, Ltd., Optronics Division", "3cb87a": "Private", "3cb9a6": "Belden Deutschland GmbH", @@ -17773,6 +17939,7 @@ "3cbdd8": "LG ELECTRONICS INC", "3cbee1": "NIKON CORPORATION", "3cbf60": "Apple, Inc.", + "3cc03e": "HUAWEI TECHNOLOGIES CO.,LTD", "3cc079": "Shenzhen One-Nine Intelligent Electronic Science and Technology Co., Ltd", "3cc0c6": "d&b audiotechnik GmbH", "3cc12c": "AES Corporation", @@ -17782,6 +17949,7 @@ "3cc786": "DONGGUAN HUARONG COMMUNICATION TECHNOLOGIES CO.,LTD.", "3cc99e": "Huiyang Technology Co., Ltd", "3cca87": "Iders Incorporated", + "3ccb4d": "Avikus Co., Ltd", "3ccb7c": "TCT mobile ltd", "3ccd36": "Apple, Inc.", "3ccd57": "Beijing Xiaomi Mobile Software Co., Ltd", @@ -17807,6 +17975,7 @@ "3cdf1e": "Cisco Systems, Inc", "3cdfa9": "ARRIS Group, Inc.", "3cdfbd": "HUAWEI TECHNOLOGIES CO.,LTD", + "3ce002": "Texas Instruments", "3ce038": "Omnifi Inc.", "3ce064": "Texas Instruments", "3ce072": "Apple, Inc.", @@ -17824,7 +17993,9 @@ "3cea4f": "2Wire Inc", "3ceaf9": "JUBIXCOLTD", "3ceafb": "NSE AG", + "3cecde": "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "3cecef": "Super Micro Computer, Inc.", + "3cef42": "TCT mobile ltd", "3cef8c": "Zhejiang Dahua Technology Co., Ltd.", "3cf011": "Intel Corporate", "3cf392": "Virtualtek. Co. Ltd", @@ -17842,6 +18013,7 @@ "3cf862": "Intel Corporate", "3cf9f0": "zte corporation", "3cfa06": "Microsoft Corporation", + "3cfa30": "Palo Alto Networks", "3cfa43": "HUAWEI TECHNOLOGIES CO.,LTD", "3cfad3": "IEEE Registration Authority", "3cfb5c": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -17862,11 +18034,13 @@ "400d10": "ARRIS Group, Inc.", "400e67": "Tremol Ltd.", "400ef3": "zte corporation", + "400fc1": "Vantiva USA LLC", "401175": "IEEE Registration Authority", "4011c3": "Samsung Electronics Co.,Ltd", "4011dc": "Sonance", "4012e4": "Compass-EOS", "4013d9": "Global ES", + "401482": "Cisco Systems, Inc", "4014ad": "Huawei Device Co., Ltd.", "401597": "Protect America, Inc.", "40163b": "Samsung Electronics Co.,Ltd", @@ -17875,7 +18049,7 @@ "4016fa": "EKM Metering", "4017e2": "INTAI TECHNOLOGY CORP.", "4017f6": "TKH SECURITY,S.L.U.", - "4018b1": "Extreme Networks, Inc.", + "4018b1": "Extreme Networks Headquarters", "4018d7": "Smartronix, Inc.", "401920": "Movon Corporation", "401a58": "Wistron Neweb Corporation", @@ -17891,6 +18065,7 @@ "402619": "Apple, Inc.", "40270b": "Mobileeco Co., Ltd", "402814": "RFI Engineering", + "402a8f": "Shanghai High-Flying Electronics Technology Co., Ltd", "402b50": "ARRIS Group, Inc.", "402b69": "Kumho Electric Inc.", "402ba1": "Sony Corporation", @@ -17982,11 +18157,12 @@ "407183": "Juniper Networks", "407496": "aFUN TECHNOLOGY INC.", "4074e0": "Intel Corporate", - "4075c3": "Technicolor CH USA Inc.", + "4075c3": "Vantiva USA LLC", "4076a9": "Huawei Device Co., Ltd.", "4077a9": "New H3C Technologies Co., Ltd", "40786a": "Motorola Mobility LLC, a Lenovo Company", "407875": "IMBEL - Industria de Material Belico do Brasil", + "407912": "Texas Instruments", "407a80": "Nokia Corporation", "407b1b": "Mettle Networks Inc.", "407c7d": "Nokia", @@ -17996,10 +18172,12 @@ "408256": "Continental Automotive GmbH", "40831d": "Apple, Inc.", "4083de": "Zebra Technologies Inc", + "408432": "Microchip Technology Inc.", "408493": "Clavister AB", "40862e": "JDM MOBILE INTERNET SOLUTION CO., LTD.", + "4086cb": "D-Link Corporation", "408805": "Motorola Mobility LLC, a Lenovo Company", - "40882f": "Extreme Networks, Inc.", + "40882f": "Extreme Networks Headquarters", "4088e0": "Beijing Ereneben Information Technology Limited Shenzhen Branch", "4089a8": "WiredIQ, LLC", "408a9a": "TITENG CO., Ltd.", @@ -18023,6 +18201,7 @@ "40987b": "Aisino Corporation", "4098ad": "Apple, Inc.", "409922": "AzureWave Technology Inc.", + "409a30": "TECNO MOBILE LIMITED", "409b0d": "Shenzhen Yourf Kwan Industrial Co., Ltd", "409b21": "Nokia", "409bcd": "D-Link International", @@ -18066,8 +18245,10 @@ "40b6b1": "SUNGSAM CO,.Ltd", "40b6e7": "Huawei Device Co., Ltd.", "40b7f3": "ARRIS Group, Inc.", + "40b7fc": "Phyplus Microelectronics Limited", "40b837": "Sony Corporation", "40b89a": "Hon Hai Precision Ind. Co.,Ltd.", + "40b8c2": "OSMOZIS", "40b93c": "Hewlett Packard Enterprise", "40ba61": "ARIMA Communications Corp.", "40bc60": "Apple, Inc.", @@ -18104,7 +18285,9 @@ "40d3ae": "Samsung Electronics Co.,Ltd", "40d40e": "Biodata Ltd", "40d4bd": "SK Networks Service CO., LTD.", + "40d4f6": "Honor Device Co., Ltd.", "40d559": "MICRO S.E.R.I.", + "40d563": "HANA Electronics", "40d63c": "Equitech Industrial(DongGuan)Co.,Ltd", "40d855": "IEEE Registration Authority", "40d95a": "AMPAK Technology,Inc.", @@ -18118,6 +18301,7 @@ "40e171": "Jiangsu Huitong Group Co.,Ltd.", "40e1e4": "Nokia Solutions and Networks GmbH & Co. KG", "40e230": "AzureWave Technology Inc.", + "40e317": "Extreme Networks Headquarters", "40e3d6": "Aruba, a Hewlett Packard Enterprise Company", "40e64b": "Apple, Inc.", "40e730": "DEY Storage Systems, Inc.", @@ -18125,6 +18309,7 @@ "40eace": "FOUNDER BROADBAND NETWORK SERVICE CO.,LTD", "40ec99": "Intel Corporate", "40ecf8": "Siemens AG", + "40ed00": "TP-Link Corporation Limited", "40ed98": "IEEE Registration Authority", "40edcf": "Apple, Inc.", "40ee15": "Ltd.", @@ -18139,6 +18324,7 @@ "40f2e9": "IBM", "40f308": "Murata Manufacturing Co., Ltd.", "40f385": "IEEE Registration Authority", + "40f3b0": "Texas Instruments", "40f407": "Nintendo Co., Ltd.", "40f413": "Rubezh", "40f420": "Sichuan Tianyi Comheart Telecom Co.,LTD", @@ -18165,6 +18351,7 @@ "440377": "IEEE Registration Authority", "4403a7": "Cisco Systems, Inc", "440444": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", + "44053f": "Sagemcom Broadband SAS", "4405e8": "twareLAB", "44070b": "Google, Inc.", "4409b8": "CO., LTD.", @@ -18184,12 +18371,14 @@ "44184f": "Fitview", "4418fd": "Apple, Inc.", "4419b6": "Hangzhou Hikvision Digital Technology Co.,Ltd.", + "441a4c": "xFusion Digital Technologies Co.,Ltd.", "441aac": "Elektrik Uretim AS EOS", "441afa": "New H3C Technologies Co., Ltd", "441b88": "Apple, Inc.", - "441c12": "Technicolor CH USA Inc.", + "441c12": "Vantiva USA LLC", "441c7f": "Motorola Mobility LLC, a Lenovo Company", "441ca8": "Hon Hai Precision Ind. Co.,Ltd.", + "441db1": "APTIV SERVICES US, LLC", "441e91": "ARVIDA Intelligent Electronics Technology Co.,Ltd.", "441e98": "Ruckus Wireless", "441ea1": "Hewlett Packard", @@ -18213,12 +18402,14 @@ "44322a": "Avaya Inc", "443262": "zte corporation", "4432c2": "GOAL Co., Ltd.", - "4432c8": "Technicolor CH USA Inc.", + "4432c8": "Vantiva USA LLC", "44334c": "Shenzhen Bilian electronic CO.,LTD", "44348f": "MXT INDUSTRIAL LTDA", "4434a7": "ARRIS Group, Inc.", "44356f": "Neterix Ltd", "443583": "Apple, Inc.", + "4435d3": "GD Midea Air-Conditioning Equipment Co.,Ltd.", + "44365d": "Shenzhen HippStor Technology Co., Ltd", "443708": "MRV Comunications", "443719": "2 Save Energy Ltd", "44376f": "Young Electric Sign Co", @@ -18264,6 +18455,7 @@ "4456b7": "Spawn Labs, Inc", "4456e2": "Sichuan Tianyi Comheart Telecom Co.,LTD", "445829": "Cisco SPVTG", + "445925": "Square Inc.", "445943": "zte corporation", "44599f": "Criticare Systems, Inc", "4459e3": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -18278,7 +18470,7 @@ "446132": "ecobee inc", "44619c": "FONsystem co. ltd.", "446246": "Comat AG", - "446370": "Electronics Technology Co., Ltd", + "446370": "Electronics Technology co., ltd", "44643c": "Cisco Systems, Inc", "44650d": "Amazon Technologies Inc.", "44656a": "Industry Co., Ltd", @@ -18293,6 +18485,7 @@ "446a2e": "HUAWEI TECHNOLOGIES CO.,LTD", "446ab7": "ARRIS Group, Inc.", "446c24": "Reallin Electronic Co.,Ltd", + "446d05": "NoTraffic", "446d57": "Liteon Technology Corporation", "446d6c": "Samsung Electronics Co.,Ltd", "446d7f": "Amazon Technologies Inc.", @@ -18381,6 +18574,7 @@ "44b433": "tide.co.,ltd", "44b462": "Pvt Ltd", "44b4b2": "Amazon Technologies Inc.", + "44b59c": "Tenet Networks Private Limited", "44b6be": "Cisco Systems, Inc", "44b7d0": "Microchip Technology Inc.", "44b994": "Douglas Lighting Controls", @@ -18417,14 +18611,17 @@ "44d4e0": "Sony Corporation", "44d506": "Sichuan Tianyi Comheart Telecom Co.,LTD", "44d5a5": "AddOn Computer", + "44d5c1": "EM Microelectronic", "44d5cc": "Amazon Technologies Inc.", "44d5f2": "IEEE Registration Authority", "44d63d": "Talari Networks", "44d6e1": "Snuza International Pty. Ltd.", + "44d77e": "Robert Bosch GmbH", "44d791": "HUAWEI TECHNOLOGIES CO.,LTD", "44d832": "AzureWave Technology Inc.", "44d878": "Hui Zhou Gaoshengda Technology Co.,LTD", "44d884": "Apple, Inc.", + "44d980": "EVERYBOT INC.", "44d9e7": "Ubiquiti Inc", "44da30": "Apple, Inc.", "44db60": "Nanjing Baihezhengliu Technology Co., Ltd", @@ -18442,6 +18639,7 @@ "44e517": "Intel Corporate", "44e66e": "Apple, Inc.", "44e6b0": "China Mobile IOT Company Limited", + "44e761": "Infinix mobility limited", "44e8a5": "Myreka Technologies Sdn. Bhd.", "44e968": "HUAWEI TECHNOLOGIES CO.,LTD", "44e9dd": "Sagemcom Broadband SAS", @@ -18456,7 +18654,7 @@ "44ee30": "Budelmann Elektronik GmbH", "44efbf": "China Dragon Technology Limited", "44efcf": "UGENE SOLUTION inc.", - "44f034": "Kaonmedia CO., LTD.", + "44f034": "Kaon Group Co., Ltd.", "44f09e": "Apple, Inc.", "44f21b": "Apple, Inc.", "44f436": "zte corporation", @@ -18465,13 +18663,15 @@ "44f4e7": "Cohesity Inc", "44f849": "Union Pacific Railroad", "44f971": "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", + "44fa66": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "44fb42": "Apple, Inc.", "44fb5a": "zte corporation", "44fda3": "Everysight LTD.", "44fe3b": "Arcadyan Corporation", "44ffba": "zte corporation", + "480020": "Aruba, a Hewlett Packard Enterprise Company", "480031": "HUAWEI TECHNOLOGIES CO.,LTD", - "480033": "Technicolor CH USA Inc.", + "480033": "Vantiva USA LLC", "48007d": "DTS ELEKTRONIK SAN. TIC. LTD. STI.", "4801c5": "Co., Ltd", "48022a": "B-Link Electronic Limited", @@ -18498,7 +18698,8 @@ "48188d": "WEIFANG GOERTEK ELECTRONICS CO.,LTD", "4818fa": "Nocsys", "481a84": "Pointer Telocation Ltd", - "481b40": "Technicolor CH USA Inc.", + "481b40": "Vantiva USA LLC", + "481ba4": "Cisco Systems, Inc", "481bd2": "Intron Scientific co., ltd.", "481cb9": "SZ DJI TECHNOLOGY CO.,LTD", "481d70": "Cisco SPVTG", @@ -18528,12 +18729,15 @@ "482e72": "Cisco Systems, Inc", "482f6b": "Aruba, a Hewlett Packard Enterprise Company", "482fd7": "HUAWEI TECHNOLOGIES CO.,LTD", + "483133": "Robert Bosch Elektronika Kft.", "483177": "Nintendo Co.,Ltd", + "4831b7": "Espressif Inc.", "4831db": "Huawei Device Co., Ltd.", "4833dd": "ZENNIO AVANCE Y TECNOLOGIA, S.L.", "48343d": "IEP GmbH", "48352b": "Apple, Inc.", "48352e": "Shenzhen Wolck Network Product Co.,LTD", + "483543": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "48365f": "Wintecronics Ltd.", "483871": "Huawei Device Co., Ltd.", "4838b6": "Auhui Taoyun Technology Co., Ltd", @@ -18544,12 +18748,14 @@ "483e5e": "TECHNOLOGIES CORPORATION", "483fda": "Espressif Inc.", "483fe9": "HUAWEI TECHNOLOGIES CO.,LTD", + "48417b": "Nokia Solutions and Networks GmbH & Co. KG", "48435a": "HUAWEI TECHNOLOGIES CO.,LTD", "48437c": "Apple, Inc.", "4843dd": "Amazon Technologies Inc.", "484487": "Cisco SPVTG", "4844f7": "Samsung Electronics Co.,Ltd", "484520": "Intel Corporate", + "4845cf": "LLC Proizvodstvennaya Kompania TransService", "48468d": "Zepcam B.V.", "4846c1": "FN-LINK TECHNOLOGY LIMITED", "4846f1": "Uros Oy", @@ -18559,7 +18765,7 @@ "484a30": "George Robotics Limited", "484ae9": "Hewlett Packard Enterprise", "484baa": "Apple, Inc.", - "484bd4": "Technicolor CH USA Inc.", + "484bd4": "Vantiva USA LLC", "484c29": "HUAWEI TECHNOLOGIES CO.,LTD", "484c86": "Huawei Device Co., Ltd.", "484d7e": "Dell Inc.", @@ -18573,6 +18779,7 @@ "485261": "SOREEL", "485415": "NET RULES TECNOLOGIA EIRELI", "485519": "Espressif Inc.", + "485541": "Iskratel d.o.o.", "48555c": "Wu Qi Technologies,Inc.", "48555e": "Shenzhen Skyworth Digital Technology CO., Ltd", "48555f": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -18591,6 +18798,7 @@ "485d60": "AzureWave Technology Inc.", "485deb": "Just Add Power", "485ded": "Sichuan Tianyi Comheart Telecom Co.,LTD", + "485f08": "TP-LINK TECHNOLOGIES CO.,LTD.", "485f99": "Limited", "4860bc": "Apple, Inc.", "4861a3": "Concern Axion JSC", @@ -18640,6 +18848,7 @@ "48872d": "SHEN ZHEN DA XIA LONG QUE TECHNOLOGY CO.,LTD", "488759": "Xiaomi Communications Co Ltd", "488764": "vivo Mobile Communication Co., Ltd.", + "4887b8": "TCL King Electrical Appliances(Huizhou)Co.,Ltd", "488803": "ManTechnology Inc.", "48881e": "EthoSwitch LLC", "488899": "Shenzhen SuperElectron Technology Co.,Ltd.", @@ -18657,10 +18866,12 @@ "489153": "Weinmann Geräte für Medizin GmbH + Co. KG", "4891d5": "Cisco Systems, Inc", "4891f6": "Shenzhen Reach software technology CO.,LTD", + "4893dc": "UNIWAY INFOCOM PVT LTD", "489507": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "4898ca": "Sichuan AI-Link Technology Co., Ltd.", "489a42": "Technomate Ltd", - "489bd5": "Extreme Networks, Inc.", + "489a5b": "Shenzhen iComm Semiconductor CO.,LTD", + "489bd5": "Extreme Networks Headquarters", "489be0": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", "489be2": "SCI Innovations Ltd", "489d18": "Flashbay Limited", @@ -18708,7 +18919,7 @@ "48bd3d": "New H3C Technologies Co., Ltd", "48bd4a": "HUAWEI TECHNOLOGIES CO.,LTD", "48bda7": "Honor Device Co., Ltd.", - "48bdce": "Technicolor CH USA Inc.", + "48bdce": "Vantiva USA LLC", "48be2d": "Symanitron", "48bf6b": "Apple, Inc.", "48bf74": "Baicells Technologies Co.,LTD", @@ -18718,6 +18929,7 @@ "48c1ee": "Honor Device Co., Ltd.", "48c35a": "LENOVO(BEIJING)CO., LTD.", "48c3b0": "Pharos Co.Ltd", + "48c461": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "48c58d": "Lear Corporation GmbH", "48c663": "GTO Access Systems LLC", "48c796": "Samsung Electronics Co.,Ltd", @@ -18732,6 +18944,7 @@ "48d24f": "Sagemcom Broadband SAS", "48d343": "ARRIS Group, Inc.", "48d35d": "Private", + "48d475": "Lampuga GmbH", "48d539": "HUAWEI TECHNOLOGIES CO.,LTD", "48d54c": "Jeda Networks", "48d6d5": "Google, Inc.", @@ -18742,6 +18955,7 @@ "48d875": "China TransInfo Technology Co., Ltd", "48d890": "FN-LINK TECHNOLOGY LIMITED", "48d8fe": "ClarIDy Solutions, Inc.", + "48da35": "IEEE Registration Authority", "48da96": "Eddy Smart Home Solutions Inc.", "48db50": "HUAWEI TECHNOLOGIES CO.,LTD", "48dc2d": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -18777,7 +18991,7 @@ "48f317": "Private", "48f3f3": "Co., Ltd", "48f47d": "TechVision Holding Internation Limited", - "48f7c0": "Technicolor CH USA Inc.", + "48f7c0": "Vantiva USA LLC", "48f7f1": "Nokia", "48f8b3": "Cisco-Linksys, LLC", "48f8db": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -18814,6 +19028,7 @@ "4c11ae": "Espressif Inc.", "4c11bf": "Zhejiang Dahua Technology Co., Ltd.", "4c1265": "ARRIS Group, Inc.", + "4c12e8": "VIETNAM POST AND TELECOMMUNICATION INDUSTRY TECHNOLOGY JOIN STOCK COMPANY", "4c1365": "Emplus Technologies", "4c1480": "NOREGON SYSTEMS, INC", "4c14a3": "Co., Ltd.", @@ -18837,7 +19052,7 @@ "4c2219": "YUANFUDAO HK LIMTED", "4c2258": "cozybit, Inc.", "4c22f3": "Arcadyan Corporation", - "4c231a": "Extreme Networks, Inc.", + "4c231a": "Extreme Networks Headquarters", "4c2498": "Texas Instruments", "4c24ce": "Sichuan AI-Link Technology Co., Ltd.", "4c2578": "Nokia Corporation", @@ -18870,10 +19085,12 @@ "4c3fd3": "Texas Instruments", "4c4088": "SANSHIN ELECTRONICS CO.,LTD.", "4c421e": "Cisco Systems, Inc", + "4c4341": "Calix Inc.", "4c445b": "Intel Corporate", "4c4576": "Information Technology Co.,Ltd.", "4c48da": "Beijing Autelan Technology Co.,Ltd", "4c494f": "zte corporation", + "4c496c": "Intel Corporate", "4c49e3": "Xiaomi Communications Co Ltd", "4c4b68": "Mobile Device, Inc. ", "4c4bf9": "IEEE Registration Authority", @@ -18901,23 +19118,28 @@ "4c5dcd": "Oy Finnish Electric Vehicle Technologies Ltd", "4c5e0c": "Routerboard.com", "4c5ed3": "Unisyue Technologies Co; LTD.", + "4c5f70": "Intel Corporate", "4c5fd2": "Alcatel-Lucent", "4c60d5": "airPointe of New Hampshire", "4c60de": "NETGEAR", "4c617e": "Huawei Device Co., Ltd.", "4c6255": "SANMINA-SCI SYSTEM DE MEXICO S.A. DE C.V.", "4c627b": "SmartCow AI Technologies Taiwan Ltd.", + "4c62cd": "Nokia", + "4c62df": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "4c6371": "Xiaomi Communications Co Ltd", "4c63ad": "Huawei Device Co., Ltd.", "4c63eb": "Ltd", "4c64d9": "Guangdong Leawin Group Co., Ltd", "4c65a8": "IEEE Registration Authority", + "4c66a6": "Samsung Electronics Co.,Ltd", "4c6af6": "HMD Global Oy", "4c6be8": "Apple, Inc.", "4c6c13": "IoT Company Solucoes Tecnologicas Ltda", "4c6d58": "Juniper Networks", "4c6e6e": "Comnect Technology CO.,LTD", "4c6f9c": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", + "4c70cc": "Blyott NV", "4c710c": "Cisco Systems, Inc", "4c710d": "Cisco Systems, Inc", "4c7167": "PoLabs d.o.o.", @@ -18971,6 +19193,7 @@ "4c962d": "Fresh AB", "4c968a": "Wacom Co.,Ltd.", "4c98ef": "Zeo", + "4c9992": "vivo Mobile Communication Co., Ltd.", "4c9b63": "LG Innotek", "4c9d22": "ACES Co.,Ltd", "4c9e6c": "BROADEX TECHNOLOGIES CO.LTD", @@ -18978,6 +19201,7 @@ "4c9ee4": "Hanyang Navicom Co.,Ltd.", "4c9eff": "Zyxel Communications Corporation", "4ca003": "VITEC", + "4ca0d4": "Co., Ltd.", "4ca161": "Rain Bird Corporation", "4ca3a7": "TECNO MOBILE LIMITED", "4ca515": "Baikal Electronics JSC", @@ -19033,6 +19257,7 @@ "4cc452": "Shang Hai Tyd. Electon Technology Ltd.", "4cc53e": "Zyxel Communications Corporation", "4cc602": "Radios, Inc.", + "4cc64c": "Beijing Xiaomi Mobile Software Co., Ltd", "4cc681": "Shenzhen Aisat Electronic Co., Ltd.", "4cc7d6": "FLEXTRONICS MANUFACTURING(ZHUHAI)CO.,LTD.", "4cc844": "Maipu Communication Technology Co.,Ltd.", @@ -19048,10 +19273,13 @@ "4cd0cb": "HUAWEI TECHNOLOGIES CO.,LTD", "4cd0dd": "HUAWEI TECHNOLOGIES CO.,LTD", "4cd1a1": "HUAWEI TECHNOLOGIES CO.,LTD", + "4cd2fb": "UNIONMAN TECHNOLOGY CO.,LTD", "4cd3af": "HMD Global Oy", "4cd577": "CHONGQING FUGUI ELECTRONICS CO.,LTD.", + "4cd587": "Aruba, a Hewlett Packard Enterprise Company", "4cd629": "HUAWEI TECHNOLOGIES CO.,LTD", "4cd637": "Qsono Electronics Co., Ltd", + "4cd717": "Dell Inc.", "4cd7b6": "Helmer Scientific", "4cd98f": "Dell Inc.", "4cd9c4": "Co. Ltd", @@ -19060,6 +19288,7 @@ "4cdd7d": "LHP Telematics LLC", "4cdf3d": "TEAM ENGINEERS ADVANCE TECHNOLOGIES INDIA PVT LTD", "4ce0db": "Xiaomi Communications Co Ltd", + "4ce136": "Private", "4ce173": "IEEE Registration Authority", "4ce175": "Cisco Systems, Inc", "4ce176": "Cisco Systems, Inc", @@ -19074,8 +19303,10 @@ "4ce9e4": "New H3C Technologies Co., Ltd", "4ceaae": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "4ceb42": "Intel Corporate", + "4ceb76": "Murrelektronik GmbH", "4cebbd": "CHONGQING FUGUI ELECTRONICS CO.,LTD.", "4cebd6": "Espressif Inc.", + "4cec0f": "Cisco Systems, Inc", "4cecef": "Soraa, Inc.", "4cedde": "ASKEY COMPUTER CORP", "4cedfb": "ASUSTek COMPUTER INC.", @@ -19105,13 +19336,14 @@ "50016b": "HUAWEI TECHNOLOGIES CO.,LTD", "5001bb": "Samsung Electronics Co.,Ltd", "5001d9": "HUAWEI TECHNOLOGIES CO.,LTD", + "500238": "Nokia Shanghai Bell Co., Ltd.", "500291": "Espressif Inc.", "5004b8": "HUAWEI TECHNOLOGIES CO.,LTD", "50053d": "CyWee Group Ltd", "500604": "Cisco Systems, Inc", "5006ab": "Cisco Systems, Inc", "5007c3": "Amazon Technologies Inc.", - "500959": "Technicolor CH USA Inc.", + "500959": "Vantiva USA LLC", "5009e5": "Drimsys,Inc", "500a52": "Huiwan Technologies Co. Ltd", "500b26": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -19127,6 +19359,7 @@ "501479": "iRobot Corporation ", "5014b5": "Richfit Information Technology Co., Ltd", "5014c1": "HUAWEI TECHNOLOGIES CO.,LTD", + "5016f4": "Motorola Mobility LLC, a Lenovo Company", "5017ff": "Cisco Systems, Inc", "50184c": "Platina Systems Inc.", "501aa5": "GN Netcom A/S", @@ -19191,6 +19424,7 @@ "503f56": "Syncmold Enterprise Corp", "503f98": "CMITECH", "504061": "Nokia", + "504074": "Alarm.com", "50411c": "AMPAK Technology,Inc.", "504172": "HUAWEI TECHNOLOGIES CO.,LTD", "5041b9": "I-O DATA DEVICE,INC.", @@ -19202,6 +19436,7 @@ "50464a": "HUAWEI TECHNOLOGIES CO.,LTD", "50465d": "ASUSTek COMPUTER INC.", "5046ae": "MERCURY CORPORATION", + "50482c": "IEEE Registration Authority", "504877": "Honor Device Co., Ltd.", "5048eb": "BEIJING HAIHEJINSHENG NETWORK TECHNOLOGY CO. LTD.", "504921": "Cisco Systems, Inc", @@ -19306,6 +19541,7 @@ "508d6f": "CHAHOO Limited", "508e49": "Xiaomi Communications Co Ltd", "508f4c": "Xiaomi Communications Co Ltd", + "5091e3": "TP-Link Corporation Limited", "5092b9": "Samsung Electronics Co.,Ltd", "50934f": "Gradual Tecnologia Ltda.", "509551": "ARRIS Group, Inc.", @@ -19324,6 +19560,7 @@ "509f3b": "OI ELECTRIC CO.,LTD", "50a009": "Xiaomi Communications Co Ltd", "50a015": "Shenzhen Yipingfang Network Technology Co., Ltd.", + "50a030": "IEEE Registration Authority", "50a054": "Actineon", "50a0a4": "Nokia", "50a0bf": "Alba Fiber Systems Inc.", @@ -19380,6 +19617,7 @@ "50d213": "CviLux Corporation", "50d274": "Steffes Corporation", "50d2f5": "Beijing Xiaomi Mobile Software Co., Ltd", + "50d33b": "cloudnineinfo", "50d37f": "Yu Fly Mikly Way Science and Technology Co., Ltd.", "50d45c": "Amazon Technologies Inc.", "50d4f7": "TP-LINK TECHNOLOGIES CO.,LTD.", @@ -19394,6 +19632,7 @@ "50dcfc": "ECOCOM", "50dd4f": "Automation Components, Inc", "50de06": "Apple, Inc.", + "50de19": "IEEE Registration Authority", "50df95": "Lytx", "50e039": "Zyxel Communications Corporation", "50e085": "Intel Corporate", @@ -19401,6 +19640,9 @@ "50e0ef": "Nokia", "50e14a": "Private", "50e24e": "zte corporation", + "50e478": "Sichuan AI-Link Technology Co., Ltd.", + "50e4e0": "Aruba, a Hewlett Packard Enterprise Company", + "50e538": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "50e549": "GIGA-BYTE TECHNOLOGY CO.,LTD.", "50e636": "AVM Audiovisuelles Marketing und Computersysteme GmbH", "50e666": "Shenzhen Techtion Electronics Co., Ltd.", @@ -19419,6 +19661,7 @@ "50f003": "Open Stack, Inc.", "50f0d3": "Samsung Electronics Co.,Ltd", "50f14a": "Texas Instruments", + "50f222": "EM Microelectronic", "50f261": "Photon Sail Technologies", "50f43c": "Leeo Inc", "50f4eb": "Apple, Inc.", @@ -19436,6 +19679,7 @@ "50fc30": "Treehouse Labs", "50fc9f": "Samsung Electronics Co.,Ltd", "50fdd5": "SJI Industry Company", + "50fe0c": "AzureWave Technology Inc.", "50fef2": "Sify Technologies Ltd", "50ff20": "Keenetic Limited", "50ff99": "IEEE Registration Authority", @@ -19454,6 +19698,7 @@ "54077d": "NETGEAR", "54083b": "IEEE Registration Authority", "540910": "Apple, Inc.", + "540929": "Inventus Power Eletronica do Brasil LTDA", "540955": "zte corporation", "54098d": "deister electronic GmbH", "540df9": "Huawei Device Co., Ltd.", @@ -19467,8 +19712,10 @@ "541149": "vivo Mobile Communication Co., Ltd.", "541159": "Nettrix Information Industry co.LTD", "54115f": "Atamo Pty Ltd", + "5412cb": "HUAWEI TECHNOLOGIES CO.,LTD", "541310": "HUAWEI TECHNOLOGIES CO.,LTD", "541379": "Hon Hai Precision Ind. Co.,Ltd.", + "5413ca": "ITEL MOBILE LIMITED", "541473": "Wingtech Group (HongKong)Limited", "5414a7": "Nanjing Qinheng Microelectronics Co., Ltd.", "5414f3": "Intel Corporate", @@ -19486,6 +19733,7 @@ "54211d": "Huawei Device Co., Ltd.", "542160": "Alula", "54219d": "Samsung Electronics Co.,Ltd", + "542259": "HUAWEI TECHNOLOGIES CO.,LTD", "5422f8": "zte corporation", "5425ea": "HUAWEI TECHNOLOGIES CO.,LTD", "542696": "Apple, Inc.", @@ -19505,7 +19753,9 @@ "542f8a": "TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO ", "543131": "Raster Vision Ltd", "5431d4": "TGW Mechanics GmbH", + "543204": "Espressif Inc.", "5432c7": "Apple, Inc.", + "5433c6": "Mist Systems, Inc.", "5433cb": "Apple, Inc.", "5434ef": "HUAWEI TECHNOLOGIES CO.,LTD", "543530": "Hon Hai Precision Ind. Co.,Ltd.", @@ -19523,6 +19773,7 @@ "544249": "Sony Corporation", "5443b2": "Espressif Inc.", "544408": "Nokia Corporation", + "54443b": "HUAWEI TECHNOLOGIES CO.,LTD", "5444a3": "Samsung Electronics Co.,Ltd", "544538": "Texas Instruments", "544617": "zte corporation", @@ -19535,10 +19786,12 @@ "54489c": "CDOUBLES ELECTRONICS CO. LTD.", "5448e6": "Beijing Xiaomi Mobile Software Co., Ltd", "5449df": "Peloton Interactive, Inc", + "5449fc": "Ubee Interactive Co., Limited", "544a00": "Cisco Systems, Inc", "544a05": "wenglor sensoric gmbh", "544a16": "Texas Instruments", "544b8c": "Juniper Networks", + "544c8a": "Microsoft Corporation", "544e45": "Private", "544e90": "Apple, Inc.", "54511b": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -19552,6 +19805,7 @@ "545aa6": "Espressif Inc.", "545dd9": "EDISTEC", "545ebd": "NL Technologies", + "545fa7": "Jibaiyou Technology Co.,Ltd.", "545fa9": "Teracom Limited", "546009": "Google, Inc.", "546172": "ZODIAC AEROSPACE SAS", @@ -19581,6 +19835,7 @@ "5474e6": "Webtech Wireless", "547595": "TP-LINK TECHNOLOGIES CO.,LTD.", "5475d0": "Cisco Systems, Inc", + "5476b2": "Raisecom Technology CO., LTD", "547787": "Earda Technologies co Ltd", "54778a": "Hewlett Packard Enterprise", "54781a": "Cisco Systems, Inc", @@ -19609,6 +19864,7 @@ "548c81": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "548ca0": "Liteon Technology Corporation", "548d5a": "Intel Corporate", + "5491af": "IEEE Registration Authority", "549209": "HUAWEI TECHNOLOGIES CO.,LTD", "5492be": "Samsung Electronics Co.,Ltd", "549359": "SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.", @@ -19636,7 +19892,7 @@ "54a51b": "HUAWEI TECHNOLOGIES CO.,LTD", "54a54b": "NSC Communications Siberia Ltd", "54a619": "Alcatel-Lucent Shanghai Bell Co., Ltd", - "54a65c": "Technicolor CH USA Inc.", + "54a65c": "Vantiva USA LLC", "54a6db": "Huawei Device Co., Ltd.", "54a703": "TP-LINK TECHNOLOGIES CO.,LTD.", "54a9c8": "Home Control Singapore Pte Ltd", @@ -19661,6 +19917,7 @@ "54be53": "zte corporation", "54bef7": "PEGATRON CORPORATION", "54bf64": "Dell Inc.", + "54c078": "Infinix mobility limited", "54c250": "Iskratel d.o.o.", "54c33e": "Ciena Corporation", "54c415": "Hangzhou Hikvision Digital Technology Co.,Ltd.", @@ -19691,6 +19948,7 @@ "54dc1d": "Co.,Ltd", "54ded0": "Sevio Srl", "54df00": "Ulterius Technologies, LLC", + "54df1b": "Vestel Elektronik San ve Tic. A.S.", "54df24": "Fiberhome Telecommunication Technologies Co.,LTD", "54df63": "Intrakey technologies GmbH", "54e005": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -19725,6 +19983,7 @@ "54f15f": "Sichuan AI-Link Technology Co., Ltd.", "54f201": "Samsung Electronics Co.,Ltd", "54f294": "Huawei Device Co., Ltd.", + "54f29f": "HUNAN FN-LINK TECHNOLOGY LIMITED", "54f5b6": "ORIENTAL PACIFIC INTERNATIONAL LIMITED", "54f607": "Huawei Device Co., Ltd.", "54f666": "Berthold Technologies GmbH and Co.KG", @@ -19732,6 +19991,7 @@ "54f6e2": "HUAWEI TECHNOLOGIES CO.,LTD", "54f82a": "u-blox AG", "54f876": "ABB AG", + "54f8f0": "Tesla Inc", "54fa3e": "Samsung Electronics Co.,Ltd", "54fa96": "Nokia Solutions and Networks GmbH & Co. KG", "54fb58": "WISEWARE, Lda", @@ -19747,6 +20007,7 @@ "5804cb": "Tianjin Huisun Technology Co.,Ltd.", "580528": "LABRIS NETWORKS", "580556": "Elettronica GF S.r.L.", + "5807f8": "Nokia Solutions and Networks GmbH & Co. KG", "5808fa": "Fiber Optic & telecommunication INC.", "580943": "Private", "5809e5": "Kivic Inc.", @@ -19776,7 +20037,7 @@ "5820b1": "Hewlett Packard", "582136": "KMB systems, s.r.o.", "5821e9": "TWPI", - "58238c": "Technicolor CH USA Inc.", + "58238c": "Vantiva USA LLC", "582429": "Google, Inc.", "582575": "HUAWEI TECHNOLOGIES CO.,LTD", "58278c": "BUFFALO.INC", @@ -19796,12 +20057,14 @@ "58355d": "Huawei Device Co., Ltd.", "58356b": "TECNO MOBILE LIMITED", "5835d9": "Cisco Systems, Inc", + "583653": "Apple, Inc.", "583879": "RICOH COMPANY, LTD.", "583bd9": "Fiberhome Telecommunication Technologies Co.,LTD", "583cc6": "Omneality Ltd.", "58404e": "Apple, Inc.", "584120": "TP-LINK TECHNOLOGIES CO.,LTD.", "5842e4": "Baxter International Inc", + "5843ab": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "584498": "Xiaomi Communications Co Ltd", "58454c": "Ericsson AB", "58468f": "Koncar Electronics and Informatics", @@ -19825,11 +20088,12 @@ "5853c0": "Beijing Guang Runtong Technology Development Company co.,Ltd", "585595": "Apple, Inc.", "5855ca": "Apple, Inc.", + "58569f": "Cisco Systems, Inc", "5856c2": "HUAWEI TECHNOLOGIES CO.,LTD", "5856e8": "ARRIS Group, Inc.", "58570d": "Danfoss Solar Inverters", - "5858cd": "Extreme Networks, Inc.", - "5859c2": "Extreme Networks, Inc.", + "5858cd": "Extreme Networks Headquarters", + "5859c2": "Extreme Networks Headquarters", "585b69": "TVT CO., LTD", "585ff6": "zte corporation", "58605f": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -19843,6 +20107,8 @@ "58671a": "Barnes&Noble", "58677f": "Clare Controls Inc.", "58685d": "Tempo Australia Pty Ltd", + "586861": "VIASAT, INCORPORATED", + "58687a": "Sagemcom Broadband SAS", "58696c": "Ruijie Networks Co.,LTD", "5869f9": "Fusion Transactive Ltd.", "586ab1": "Hangzhou H3C Technologies Co., Limited", @@ -19858,6 +20124,7 @@ "587521": "CJSC RTSoft", "587675": "Beijing ECHO Technologies Co.,Ltd", "5876ac": "TECHNOLOGIES CORPORATION", + "5876b3": "Ubee Interactive Co., Limited", "5876c5": "DIGI I'S LTD", "587a4d": "Stonesoft Corporation", "587a62": "Texas Instruments", @@ -19880,6 +20147,7 @@ "58879f": "Huawei Device Co., Ltd.", "5887e2": "Shenzhen Coship Electronics Co., Ltd.", "588a5a": "Dell Inc.", + "588b1c": "Cisco Systems, Inc", "588bf3": "Zyxel Communications Corporation", "588d09": "Cisco Systems, Inc", "588d64": "Xi'an Clevbee Technology Co.,Ltd", @@ -19900,7 +20168,7 @@ "58957e": "Huawei Device Co., Ltd.", "5895d8": "IEEE Registration Authority", "58961d": "Intel Corporate", - "589630": "Technicolor CH USA Inc.", + "589630": "Vantiva USA LLC", "58971e": "Cisco Systems, Inc", "5897bd": "Cisco Systems, Inc", "589835": "Technicolor Delivery Technologies Belgium NV", @@ -19913,12 +20181,15 @@ "589ec6": "Gigaset Communications GmbH", "58a023": "Intel Corporate", "58a0cb": "TrackNet, Inc", + "58a15f": "Texas Instruments", + "58a2e1": "Mellanox Technologies, Inc.", "58a48e": "PixArt Imaging Inc.", "58a639": "Samsung Electronics Co.,Ltd", "58a76f": "iD corporation", "58a839": "Intel Corporate", "58a87b": "Fitbit, Inc.", "58ac78": "Cisco Systems, Inc", + "58ad12": "Apple, Inc.", "58ae2b": "Huawei Device Co., Ltd.", "58aea8": "HUAWEI TECHNOLOGIES CO.,LTD", "58aef1": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -19948,6 +20219,7 @@ "58c232": "NEC Corporation", "58c356": "EM Microelectronic", "58c38b": "Samsung Electronics Co.,Ltd", + "58c41e": "IEEE Registration Authority", "58c57e": "Fiberhome Telecommunication Technologies Co.,LTD", "58c583": "ITEL MOBILE LIMITED", "58c5cb": "Samsung Electronics Co.,Ltd", @@ -19956,12 +20228,15 @@ "58c876": "Information Technology Co., Ltd.", "58c935": "Chiun Mai Communication System, Inc", "58cb52": "Google, Inc.", + "58cdc9": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "58ce2a": "Intel Corporate", "58cf4b": "Lufkin Industries", "58cf79": "Espressif Inc.", "58d061": "HUAWEI TECHNOLOGIES CO.,LTD", "58d071": "BW Broadcast", "58d08f": "IEEE 1904.1 Working Group", + "58d237": "Sichuan Tianyi Comheart Telecom Co.,LTD", + "58d312": "zte corporation", "58d349": "Apple, Inc.", "58d391": "Quectel Wireless Solutions Co.,Ltd.", "58d50a": "Murata Manufacturing Co., Ltd.", @@ -20031,8 +20306,9 @@ "5c0c0e": "Guizhou Huaxintong Semiconductor Technology Co Ltd", "5c0cbb": "CELIZION Inc.", "5c0ce6": "Nintendo Co.,Ltd", - "5c0e8b": "Extreme Networks, Inc.", + "5c0e8b": "Extreme Networks Headquarters", "5c0ffb": "Amino Communications Ltd", + "5c101e": "zte corporation", "5c10c5": "Samsung Electronics Co.,Ltd", "5c1193": "Seal One AG", "5c1437": "Thyssenkrupp Aufzugswerke GmbH", @@ -20052,7 +20328,7 @@ "5c20d0": "Asoni Communication Co., Ltd.", "5c2167": "Rockwell Automation", "5c22c4": "DAE EUN ELETRONICS CO., LTD", - "5c22da": "Technicolor CH USA Inc.", + "5c22da": "Vantiva USA LLC", "5c2316": "Squirrels Research Labs LLC", "5c2443": "O-Sung Telecom Co., Ltd.", "5c2479": "Baltech AG", @@ -20062,6 +20338,7 @@ "5c2623": "WaveLynx Technologies Corporation", "5c2763": "Itibia Technologies", "5c27d4": "Shenzhen Qihu Intelligent Technology Company Limited", + "5c2886": "Corporation", "5c2aef": "r2p Asia-Pacific Pty Ltd", "5c2bf5": "Vivint Wireless Inc. ", "5c2e59": "Samsung Electronics Co.,Ltd", @@ -20072,6 +20349,7 @@ "5c32c5": "Teracom Ltd.", "5c3327": "Spazio Italia srl", "5c335c": "Swissphone Telecom AG", + "5c337b": "Google, Inc.", "5c338e": "Alpha Networks Inc.", "5c3400": "Hisense Electric Co.,Ltd", "5c345b": "Hangzhou Hikvision Digital Technology Co.,Ltd.", @@ -20148,17 +20426,20 @@ "5c6f4f": "S.A. SISTEL", "5c6f69": "Broadcom Limited", "5c7017": "Apple, Inc.", + "5c7075": "HUAWEI TECHNOLOGIES CO.,LTD", "5c710d": "Cisco Systems, Inc", "5c7545": "Wayties, Inc.", "5c75af": "Fitbit, Inc.", "5c75c6": "China Mobile Group Device Co.,Ltd.", - "5c7695": "Technicolor CH USA Inc.", + "5c7695": "Vantiva USA LLC", "5c76d5": "Nokia", "5c7757": "Haivision Network Video", "5c7776": "TCT mobile ltd", "5c78f8": "Huawei Device Co., Ltd.", + "5c7b5c": "Shenzhen SDMC Technology CO.,Ltd.", "5c7d5e": "HUAWEI TECHNOLOGIES CO.,LTD", - "5c7d7d": "Technicolor CH USA Inc.", + "5c7d7d": "Vantiva USA LLC", + "5c7df3": "Fiberhome Telecommunication Technologies Co.,LTD", "5c80b6": "Intel Corporate", "5c81a7": "Network Devices Pty Ltd", "5c8382": "Nokia", @@ -20295,13 +20576,16 @@ "5ce3b6": "Fiberhome Telecommunication Technologies Co.,LTD", "5ce42a": "Intel Corporate", "5ce50c": "Beijing Xiaomi Mobile Software Co., Ltd", + "5ce688": "VECOS Europe B.V.", "5ce747": "HUAWEI TECHNOLOGIES CO.,LTD", "5ce7a0": "Nokia", "5ce7bf": "New Singularity International Technical Development Co.,Ltd", "5ce883": "HUAWEI TECHNOLOGIES CO.,LTD", "5ce8b7": "Oraimo Technology Limited", + "5ce8d3": "Signalinks Communication Technology Co., Ltd", "5ce8eb": "Samsung Electronics Co.,Ltd", "5ce91e": "Apple, Inc.", + "5ce931": "TP-Link Corporation Limited", "5cea1d": "Hon Hai Precision Ind. Co.,Ltd.", "5ceb4e": "R. STAHL HMI Systems GmbH", "5ceb68": "Cheerstar Technology Co., Ltd", @@ -20362,6 +20646,7 @@ "601466": "zte corporation", "6014b3": "CyberTAN Technology Inc.", "601521": "Redarc Electronics", + "60152b": "Palo Alto Networks", "601592": "IEEE Registration Authority", "6015c7": "IdaTech", "601803": "Co., Ltd.", @@ -20373,6 +20658,7 @@ "601929": "CORP.", "601970": "HUIZHOU QIAOXING ELECTRONICS TECHNOLOGY CO., LTD.", "601971": "ARRIS Group, Inc.", + "601ac7": "Nintendo Co.,Ltd", "601b52": "Vodafone Italia S.p.A.", "601d0f": "Midnite Solar", "601d91": "Motorola Mobility LLC, a Lenovo Company", @@ -20393,6 +20679,7 @@ "602a1b": "JANCUS", "602a54": "CardioTek B.V.", "602ad0": "Cisco SPVTG", + "602b58": "EM Microelectronic", "602e20": "HUAWEI TECHNOLOGIES CO.,LTD", "6030d4": "Apple, Inc.", "60313b": "Sunnovo International Limited", @@ -20410,14 +20697,16 @@ "60391f": "ABB Ltd", "603a7c": "TP-LINK TECHNOLOGIES CO.,LTD.", "603aaf": "Samsung Electronics Co.,Ltd", - "603d26": "Technicolor CH USA Inc.", + "603d26": "Vantiva USA LLC", "603d29": "HUAWEI TECHNOLOGIES CO.,LTD", + "603e5f": "Apple, Inc.", "603e7b": "Gafachi, Inc.", "603eca": "Cambridge Medical Robotics Ltd", "603fc5": "COX CO., LTD", "60427f": "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "60447a": "Water-i.d. GmbH", "6044f5": "Easy Digital Ltd.", + "60452e": "Intel Corporate", "60455e": "Liptel s.r.o.", "6045bd": "Microsoft", "6045cb": "ASUSTek COMPUTER INC.", @@ -20440,7 +20729,7 @@ "6055f9": "Espressif Inc.", "605661": "IXECLOUD Tech", "60567d": "AM Telecom co., Ltd.", - "605699": "Marelli Morocco LLC SARL", + "605699": "MAGNETI MARELLI S.E. S.p.A.", "605718": "Intel Corporate", "605747": "CIG SHANGHAI CO LTD", "60577d": "eero inc.", @@ -20458,6 +20747,7 @@ "606405": "Texas Instruments", "606453": "AOD Co.,Ltd.", "6064a1": "RADiflow Ltd.", + "606682": "SHENZHEN ATEKO PHOTOELECTRICITY CO.,LTD", "606720": "Intel Corporate", "60684e": "Samsung Electronics Co.,Ltd", "606944": "Apple, Inc.", @@ -20479,6 +20769,8 @@ "60735c": "Cisco Systems, Inc", "6073bc": "zte corporation", "60748d": "Atmaca Elektronik", + "6074f4": "Private", + "607623": "Shenzhen E-Superlink Technology Co., Ltd", "607688": "Velodyne", "607771": "Texas Instruments", "6077e2": "Samsung Electronics Co.,Ltd", @@ -20516,6 +20808,7 @@ "609217": "Apple, Inc.", "6092f5": "ARRIS Group, Inc.", "609316": "Apple, Inc.", + "609532": "Zebra Technologies Inc.", "6095bd": "Apple, Inc.", "6095ce": "IEEE Registration Authority", "609620": "Private", @@ -20563,13 +20856,16 @@ "60b76e": "Google, Inc.", "60b933": "Deutron Electronics Corp.", "60b982": "RO.VE.R. Laboratories S.p.A.", + "60b9c0": "Cisco Systems, Inc", "60ba18": "nextLAP GmbH", "60bb0c": "Beijing HuaqinWorld Technology Co,Ltd", "60bc4c": "EWM Hightec Welding GmbH", + "60bd2c": "Taicang T&W Electronics", "60bd91": "Move Innovation", "60beb4": "S-Bluetech co., limited", "60beb5": "Motorola Mobility LLC, a Lenovo Company", "60bec4": "Apple, Inc.", + "60c01e": "V&G Information System Co.,Ltd", "60c0bf": "ON Semiconductor", "60c1cb": "Fujian Great Power PLC Equipment Co.,Ltd", "60c397": "2Wire Inc", @@ -20579,9 +20875,11 @@ "60c5e6": "Skullcandy", "60c658": "PHYTRONIX Co.,Ltd.", "60c727": "Digiboard Eletronica da Amazonia Ltda", + "60c78d": "Juniper Networks", "60c798": "Verifone", "60c7be": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", "60c980": "Trymus", + "60c9aa": "Nokia", "60cbfb": "AirScape Inc.", "60cda9": "Abloomy", "60cdc5": "Taiwan Carol Electronics., Ltd", @@ -20611,6 +20909,8 @@ "60db15": "New H3C Technologies Co., Ltd", "60db2a": "HNS", "60db98": "Calix Inc.", + "60dbef": "Unify Software and Solutions GmbH & Co. KG", + "60dc81": "AltoBeam Inc.", "60dd70": "Apple, Inc.", "60dd8e": "Intel Corporate", "60de35": "GITSN, Inc.", @@ -20655,6 +20955,7 @@ "60fb42": "Apple, Inc.", "60fcf1": "Private", "60fd56": "WOORISYSTEMS CO., Ltd", + "60fda6": "Apple, Inc.", "60fe1e": "China Palms Telecom.Ltd", "60fe20": "2Wire Inc", "60fec5": "Apple, Inc.", @@ -20663,6 +20964,7 @@ "60ffdd": "C.E. ELECTRONICS, INC", "64002d": "Powerlinq Co., LTD", "64006a": "Dell Inc.", + "64009c": "Insulet Corporation", "6400f1": "Cisco Systems, Inc", "6401fb": "Landis+Gyr GmbH", "6402cb": "ARRIS Group, Inc.", @@ -20686,7 +20988,7 @@ "641084": "HEXIUM Technical Development Co., Ltd.", "6411a4": "Motorola Mobility LLC, a Lenovo Company", "641225": "Cisco Systems, Inc", - "641236": "Technicolor CH USA Inc.", + "641236": "Vantiva USA LLC", "641269": "ARRIS Group, Inc.", "641331": "Co. Ltd.", "64135a": "Itectra A/S", @@ -20697,8 +20999,11 @@ "64168d": "Cisco Systems, Inc", "6416f0": "HUAWEI TECHNOLOGIES CO.,LTD", "641759": "Intellivision Holdings, LLC", + "6417cd": "Samsung Electronics Co.,Ltd", "641a22": "Heliospectra AB", "641aba": "Dryad Networks GmbH", + "641b2f": "Samsung Electronics Co.,Ltd", + "641c10": "Texas Instruments", "641c67": "DIGIBRAS INDUSTRIA DO BRASILS/A", "641cae": "Samsung Electronics Co.,Ltd", "641cb0": "Samsung Electronics Co.,Ltd", @@ -20736,6 +21041,7 @@ "6437a4": "TOKYOSHUHA CO.,LTD.", "643ab1": "Sichuan Tianyi Comheart Telecom Co.,LTD", "643aea": "Cisco Systems, Inc", + "643e0a": "HUAWEI TECHNOLOGIES CO.,LTD", "643e8c": "HUAWEI TECHNOLOGIES CO.,LTD", "643f5f": "Exablaze", "644212": "Shenzhen Water World Information Co.,Ltd.", @@ -20747,7 +21053,9 @@ "644bc3": "Shanghai WOASiS Telecommunications Ltd., Co.", "644bf0": "CalDigit, Inc", "644c36": "Intel Corporate", + "644c69": "CONPROVE", "644d70": "dSPACE GmbH", + "644ed7": "HP Inc.", "644f42": "JETTER CO., Ltd.", "644f74": "LENUS Co., Ltd.", "644fb0": "Hyunjin.com", @@ -20762,6 +21070,7 @@ "64557f": "NSFOCUS Information Technology Co., Ltd.", "6455b1": "ARRIS Group, Inc.", "645601": "TP-LINK TECHNOLOGIES CO.,LTD.", + "645725": "Hui Zhou Gaoshengda Technology Co.,LTD", "6457e5": "Beijing Royaltech Co.,Ltd", "6458ad": "China Mobile IOT Company Limited", "6459f8": "Vodafone Omnitel B.V.", @@ -20788,7 +21097,9 @@ "6465c0": "Nuvon, Inc", "646624": "Sagemcom Broadband SAS", "6466b3": "TP-LINK TECHNOLOGIES CO.,LTD.", + "6466d8": "Samsung Electronics Co.,Ltd", "646707": "Beijing Omnific Technology, Ltd.", + "6467cd": "HUAWEI TECHNOLOGIES CO.,LTD", "64680c": "Comtrend Corporation", "646876": "Edifier International", "64694e": "Texas Instruments", @@ -20828,6 +21139,7 @@ "64808b": "VG Controls, Inc.", "648099": "Intel Corporate", "648125": "Alphatron Marine BV", + "648505": "zte corporation", "648788": "Juniper Networks", "6487d7": "ADB Broadband Italia", "6488ff": "Sichuan Changhong Electric Ltd.", @@ -20843,8 +21155,9 @@ "64995d": "LGE ", "649968": "Elentec", "6499a0": "AG Elektronik AB", - "649a08": "Shenzhen SuperElectron Technology Co.,LTD", + "649a08": "Shenzhen SuperElectron Technology Co.,Ltd.", "649a12": "P2 Mobile Technologies Limited", + "649a63": "Ring LLC", "649abe": "Apple, Inc.", "649b24": "V Technology Co., Ltd.", "649c81": "Qualcomm Inc.", @@ -20877,7 +21190,7 @@ "64b2b4": "Fiberhome Telecommunication Technologies Co.,LTD", "64b310": "Samsung Electronics Co.,Ltd", "64b370": "PowerComm Solutions LLC", - "64b379": "Private", + "64b379": "Jiangsu Viscore Technologies Co.,Ltd", "64b473": "Xiaomi Communications Co Ltd", "64b5c6": "Nintendo Co.,Ltd", "64b5f2": "Samsung Electronics Co.,Ltd", @@ -20911,7 +21224,7 @@ "64cbe9": "LG Innotek", "64cc22": "Arcadyan Corporation", "64cc2e": "Xiaomi Communications Co Ltd", - "64ce6e": "Sierra Wireless", + "64ce6e": "Sierra Wireless, ULC", "64cf13": "Weigao Nikkiso(Weihai)Dialysis Equipment Co.,Ltd", "64cfd9": "Texas Instruments", "64d0d6": "Samsung Electronics Co.,Ltd", @@ -20929,6 +21242,7 @@ "64d954": "Taicang T&W Electronics", "64d989": "Cisco Systems, Inc", "64daa0": "Robert Bosch Smart Home GmbH", + "64daed": "eero inc.", "64db18": "OpenPattern", "64db38": "zte corporation", "64db43": "Mobility Technologies Communication Co., Ltd.", @@ -20948,9 +21262,11 @@ "64e172": "Shenzhen Qihoo Intelligent Technology Co.,Ltd", "64e204": "NTN Technical Service Corporation", "64e220": "Qisda Corporation", + "64e4a5": "LG Electronics", "64e599": "EFM Networks", "64e625": "Woxu Wireless Co., Ltd", "64e682": "Apple, Inc.", + "64e738": "Zhejiang SUPCON Technology Co., Ltd.", "64e7d8": "Samsung Electronics Co.,Ltd", "64e833": "Espressif Inc.", "64e84f": "Serialway Communication Technology Co. Ltd", @@ -20978,6 +21294,7 @@ "64f970": "Kenade Electronics Technology Co.,LTD.", "64f987": "Avvasi Inc.", "64f9c0": "ANALOG DEVICES", + "64fb01": "Zhongshan Camry Electronic Company Limited", "64fb50": "RoomReady/Zdi, Inc.", "64fb81": "IEEE Registration Authority", "64fb92": "PPC Broadband Inc.", @@ -20997,6 +21314,7 @@ "681295": "Lupine Lighting Systems GmbH", "681324": "Huawei Device Co., Ltd.", "6813e2": "Eltex Enterprise LTD", + "6813f3": "Amazon Technologies Inc.", "681401": "Hon Hai Precision Ind. Co.,Ltd.", "681590": "Sagemcom Broadband SAS", "6815d3": "Zaklady Elektroniki i Mechaniki Precyzyjnej R&G S.A.", @@ -21005,6 +21323,7 @@ "6818d9": "Hill AFB - CAPRE Group", "68193f": "Digital Airways", "6819ac": "Guangzhou Xianyou Intelligent Technogoly CO., LTD", + "681a7c": "Sichuan Tianyi Comheart Telecom Co.,LTD", "681aa4": "Shenzhen Skyworth Digital Technology CO., Ltd", "681ab2": "zte corporation", "681bef": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -21017,14 +21336,17 @@ "68215f": "Edgecore Networks Corporation", "68228e": "Juniper Networks", "68234b": "Nihon Dengyo Kousaku", + "6823f4": "Shenzhen Jinlangxin Technology Co., Ltd", "682624": "Ergatta", "68262a": "Sichuan Tianyi Comheart Telecom Co.,LTD", "682719": "Microchip Technology Inc.", "682737": "Samsung Electronics Co.,Ltd", "68275f": "zte corporation", "6828ba": "Dejai", + "6828cf": "Aruba, a Hewlett Packard Enterprise Company", "6828f6": "Vubiq Networks, Inc.", "6829dc": "Ficosa Electronics S.L.U.", + "682c4f": "leerang corporation", "682c7b": "Cisco Systems, Inc", "682d83": "SHENZHEN DINGHE COMMUNICATION COMPANY", "682ddc": "Wuhan Changjiang Electro-Communication Equipment CO.,LTD", @@ -21053,6 +21375,7 @@ "6843d7": "Agilecom Photonics Solutions Guangdong Limited", "684571": "Huawei Device Co., Ltd.", "6845f1": "TOSHIBA CLIENT SOLUTIONS CO., LTD.", + "684724": "EM Microelectronic", "684749": "Texas Instruments", "684898": "Samsung Electronics Co.,Ltd", "684992": "Cisco Meraki", @@ -21064,6 +21387,7 @@ "684ca8": "Shenzhen Herotel Tech. Co., Ltd.", "684e05": "HUNAN FN-LINK TECHNOLOGY LIMITED", "684f64": "Dell Inc.", + "68505d": "Halo Technologies", "6851b7": "PowerCloud Systems, Inc.", "6852d6": "UGame Technology Co.,Ltd", "68536c": "SPnS Co.,Ltd", @@ -21074,6 +21398,7 @@ "6854ed": "Alcatel-Lucent", "6854f5": "enLighted Inc", "6854fd": "Amazon Technologies Inc.", + "6855d4": "Seiko Epson Corporation", "68572d": "Tuya Smart Inc.", "685811": "Fiberhome Telecommunication Technologies Co.,LTD", "6858c5": "ZF TRW Automotive", @@ -21099,6 +21424,7 @@ "686dbc": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "686e23": "Wi3 Inc.", "686e48": "Prophet Electronic Technology Corp.,Ltd", + "687161": "Cisco Systems, Inc", "687251": "Ubiquiti Inc", "6872c3": "Samsung Electronics Co.,Ltd", "6872dc": "CETORY.TV Company Limited", @@ -21108,8 +21434,10 @@ "6877da": "zte corporation", "687848": "WESTUNITIS CO., LTD.", "68784c": "Nortel Networks", + "687909": "Cisco Systems, Inc", "687912": "IEEE Registration Authority", "687924": "ELS-GmbH & Co. KG", + "6879dd": "Ltd", "6879ed": "SHARP Corporation", "687a64": "Intel Corporate", "687cc8": "Measurement Systems S. de R.L.", @@ -21162,6 +21490,7 @@ "689ce2": "Cisco Systems, Inc", "689e0b": "Cisco Systems, Inc", "689e19": "Texas Instruments", + "689e29": "zte corporation", "689e6a": "Huawei Device Co., Ltd.", "689ff0": "zte corporation", "68a03e": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -21224,6 +21553,7 @@ "68d925": "ProSys Development Services", "68d927": "HUAWEI TECHNOLOGIES CO.,LTD", "68d93c": "Apple, Inc.", + "68da73": "IEEE Registration Authority", "68db54": "Co., Ltd.", "68db67": "Nantong Coship Electronics Co., Ltd.", "68db96": "OPWILL Technologies CO .,LTD", @@ -21231,7 +21561,9 @@ "68dbf5": "Amazon Technologies Inc.", "68dce8": "PacketStorm Communications", "68dd26": "Shanghai Focus Vision Security Technology Co.,Ltd", + "68ddb7": "TP-LINK TECHNOLOGIES CO.,LTD.", "68ddd9": "HMD Global Oy", + "68dece": "Fiberhome Telecommunication Technologies Co.,LTD", "68dfdd": "Xiaomi Communications Co Ltd", "68e154": "SiMa.ai", "68e166": "Private", @@ -21239,6 +21571,7 @@ "68e209": "HUAWEI TECHNOLOGIES CO.,LTD", "68e41f": "Unglaube Identech GmbH", "68e478": "Qingdao Haier Technology Co.,Ltd", + "68e59e": "Cisco Systems, Inc", "68e74a": "Texas Instruments", "68e7c2": "Samsung Electronics Co.,Ltd", "68e8eb": "Linktel Technologies Co.,Ltd", @@ -21255,6 +21588,7 @@ "68ef43": "Apple, Inc.", "68efbd": "Cisco Systems, Inc", "68f06d": "ALONG INDUSTRIAL CO., LIMITED", + "68f0b5": "Honor Device Co., Ltd.", "68f0bc": "Shenzhen LiWiFi Technology Co., Ltd", "68f0d0": "SkyBell Technologies Inc.", "68f125": "Data Controls Inc.", @@ -21276,7 +21610,8 @@ "6c0273": "Shenzhen Jin Yun Video Equipment Co., Ltd.", "6c02e0": "HP Inc.", "6c0309": "Cisco Systems, Inc", - "6c0370": "Extreme Networks, Inc.", + "6c0370": "Extreme Networks Headquarters", + "6c03b5": "Cisco Systems, Inc", "6c0460": "RBH Access Technologies Inc.", "6c047a": "HUAWEI TECHNOLOGIES CO.,LTD", "6c05d5": "Ethertronics Inc", @@ -21317,11 +21652,12 @@ "6c1ed7": "vivo Mobile Communication Co., Ltd.", "6c2056": "Cisco Systems, Inc", "6c21a2": "AMPAK Technology, Inc.", + "6c221a": "AltoBeam Inc.", "6c22ab": "Ainsworth Game Technology", "6c2316": "TATUNG Technology Inc.,", "6c23b9": "Sony Corporation", "6c23cb": "Wattty Corporation", - "6c2408": "Electronics Technology Co., Ltd", + "6c2408": "Electronics Technology co., ltd", "6c2483": "Microsoft Mobile Oy", "6c24a6": "vivo Mobile Communication Co., Ltd.", "6c25b9": "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.", @@ -21331,6 +21667,7 @@ "6c2995": "Intel Corporate", "6c29d2": "Cisco Systems, Inc", "6c2acb": "Paxton Access Ltd", + "6c2adf": "IEEE Registration Authority", "6c2b59": "Dell Inc.", "6c2c06": "OOO NPP Systemotechnika-NN", "6c2cdc": "Co.,Ltd", @@ -21368,6 +21705,7 @@ "6c442a": "HUAWEI TECHNOLOGIES CO.,LTD", "6c4598": "Antex Electronic Corp.", "6c4760": "Sunitec Enterprise Co.,Ltd", + "6c48a6": "Fiberhome Telecommunication Technologies Co.,LTD", "6c49c1": "o2ones Co., Ltd.", "6c4a39": "BITA", "6c4a74": "AERODISK LLC", @@ -21375,6 +21713,7 @@ "6c4b7f": "Vossloh-Schwabe Deutschland GmbH", "6c4b90": "LiteON", "6c4bb4": "HUMAX Co., Ltd.", + "6c4ce2": "Intel Corporate", "6c4d51": "Shenzhen Ceres Technology Co., Ltd.", "6c4d73": "Apple, Inc.", "6c4e86": "Third Millennium Systems Ltd.", @@ -21384,7 +21723,7 @@ "6c54cd": "LAMPEX ELECTRONICS LIMITED", "6c5563": "Samsung Electronics Co.,Ltd", "6c558d": "HUAWEI TECHNOLOGIES CO.,LTD", - "6c55e8": "Technicolor CH USA Inc.", + "6c55e8": "Vantiva USA LLC", "6c5640": "BLU Products Inc", "6c5697": "Amazon Technologies Inc.", "6c5779": "Aclima, Inc.", @@ -21407,14 +21746,17 @@ "6c6126": "Rinicom Holdings", "6c61f4": "SFR", "6c626d": "Micro-Star INT'L CO., LTD", + "6c6286": "Nokia", "6c639c": "ARRIS Group, Inc.", "6c641a": "Penguin Computing", "6c6567": "BELIMO Automation AG", "6c67ef": "HUAWEI TECHNOLOGIES CO.,LTD", + "6c68a4": "Guangzhou V-Solution Telecommunication Technology Co.,Ltd.", "6c6a77": "Intel Corporate", "6c6c0f": "HUAWEI TECHNOLOGIES CO.,LTD", "6c6cd3": "Cisco Systems, Inc", "6c6d09": "Kyowa Electronics Co.,Ltd.", + "6c6e07": "CE LINK LIMITED", "6c6efe": "Core Logic Inc.", "6c6f18": "Stereotaxis, Inc.", "6c7039": "Novar GmbH", @@ -21437,6 +21779,7 @@ "6c8336": "Samsung Electronics Co.,Ltd", "6c8366": "Nanjing SAC Power Grid Automation Co., Ltd.", "6c8686": "Technonia", + "6c8720": "New H3C Technologies Co., Ltd", "6c8814": "Intel Corporate", "6c8aec": "Nantong Coship Electronics Co., Ltd.", "6c8b2f": "zte corporation", @@ -21471,6 +21814,7 @@ "6c9e7c": "Fiberhome Telecommunication Technologies Co.,LTD", "6ca0b4": "SKY UK LIMITED", "6ca100": "Intel Corporate", + "6ca367": "Avlinkpro", "6ca401": "essensys plc", "6ca4d1": "Fiberhome Telecommunication Technologies Co.,LTD", "6ca604": "ARRIS Group, Inc.", @@ -21507,6 +21851,7 @@ "6cb2fd": "Texas Instruments", "6cb311": "Shenzhen Lianrui Electronics Co.,Ltd", "6cb350": "Anhui comhigher tech co.,ltd", + "6cb456": "Espressif Inc.", "6cb4a7": "Landauer, Inc.", "6cb4fd": "Huawei Device Co., Ltd.", "6cb56b": "HUMAX Co., Ltd.", @@ -21571,12 +21916,14 @@ "6ceca1": "SHENZHEN CLOU ELECTRONICS CO. LTD.", "6ceceb": "Texas Instruments", "6ced51": "NEXCONTROL Co.,Ltd", + "6ceef7": "shenzhen scodeno technology co., Ltd.", "6cefc6": "SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.", "6cf049": "GIGA-BYTE TECHNOLOGY CO.,LTD.", "6cf17e": "Zhejiang Uniview Technologies Co.,Ltd.", "6cf373": "Samsung Electronics Co.,Ltd", "6cf37f": "Aruba, a Hewlett Packard Enterprise Company", "6cf5e8": "Mooredoll Inc.", + "6cf6da": "Intel Corporate", "6cf712": "Nokia Solutions and Networks GmbH & Co. KG", "6cf784": "Xiaomi Communications Co Ltd", "6cf97c": "Nanoptix Inc.", @@ -21584,6 +21931,7 @@ "6cfa58": "Avaya Inc", "6cfa89": "Cisco Systems, Inc", "6cfaa7": "AMPAK Technology, Inc.", + "6cfbed": "GN Audio A/S", "6cfdb9": "Proware Technologies Co Ltd.", "6cfe54": "Intel Corporate", "6cffbe": "MPB Communications Inc.", @@ -21592,7 +21940,7 @@ "7001b5": "Cisco Systems, Inc", "700258": "01DB-METRAVIB", "70033f": "Pimax Technology(ShangHai)Co.,Ltd", - "70037e": "Technicolor CH USA Inc.", + "70037e": "Vantiva USA LLC", "70039f": "Espressif Inc.", "70041d": "Espressif Inc.", "700433": "California Things Inc.", @@ -21653,6 +22001,7 @@ "702ed9": "Guangzhou Shiyuan Electronics Co., Ltd.", "702f35": "HUAWEI TECHNOLOGIES CO.,LTD", "702f4b": "Steelcase Inc.", + "702f86": "Marquardt GmbH", "702f97": "Aava Mobile Oy", "703018": "Avaya Inc", "70305d": "Ubiquoss Inc", @@ -21662,6 +22011,7 @@ "703217": "Intel Corporate", "7032d5": "Athena Wireless Communications Inc", "703509": "Cisco Systems, Inc", + "7036b2": "Focusai Corp", "703811": "Siemens Mobility Limited", "7038b4": "Low Tech Solutions", "7038ee": "Avaya Inc", @@ -21718,11 +22068,12 @@ "705812": "Panasonic Corporation AVC Networks Company", "705846": "Trig Avionics Limited", "705896": "InShow Technology", + "7058a4": "Actiontec Electronics Inc.", "705957": "Medallion Instrumentation Systems", "705986": "OOO TTV", "705a0f": "Hewlett Packard", "705a6f": "IEEE Registration Authority", - "705a9e": "Technicolor CH USA Inc.", + "705a9e": "Vantiva USA LLC", "705aac": "Samsung Electronics Co.,Ltd", "705ab6": "CO., LTD. ", "705b2e": "M2Communication Inc.", @@ -21784,6 +22135,7 @@ "707e43": "ARRIS Group, Inc.", "707ede": "NASTEC LTD.", "708105": "Cisco Systems, Inc", + "708185": "New H3C Technologies Co., Ltd", "7081eb": "Apple, Inc.", "70820e": "as electronics GmbH", "70828e": "OleumTech Corporation", @@ -21810,9 +22162,11 @@ "70918f": "Weber-Stephen Products LLC", "7091f3": "Universal Electronics, Inc.", "709383": "Intelligent Optical Network High Tech CO.,LTD.", + "7093c1": "eero inc.", "7093f8": "Space Monkey, Inc.", "709741": "Arcadyan Corporation", "709756": "Happyelectronics Co.,Ltd", + "709883": "SHENZHEN KAYAN ELECTRONICS., LTD.", "70991c": "Shenzhen Honesty Electronics Co.,Ltd", "709a0b": "Italian Institute of Technology", "709ba5": "Shenzhen Y&D Electronics Co.,LTD.", @@ -21893,6 +22247,7 @@ "70d6b6": "Metrum Technologies", "70d823": "Intel Corporate", "70d880": "Upos System sp. z o.o.", + "70d8c2": "Intel Corporate", "70d923": "vivo Mobile Communication Co., Ltd.", "70d931": "Co.,Ltd.", "70da17": "Austrian Audio GmbH", @@ -21911,6 +22266,7 @@ "70e24c": "SAE IT-systems GmbH & Co. KG", "70e284": "Corporation", "70e422": "Cisco Systems, Inc", + "70e46e": "Lytx", "70e56e": "Texas Instruments", "70e72c": "Apple, Inc.", "70e843": "Beijing C&W Optical Communication Technology Co.,Ltd.", @@ -21979,6 +22335,7 @@ "74258a": "Hangzhou H3C Technologies Co., Limited", "7426ac": "Cisco Systems, Inc", "7426ff": "zte corporation", + "74272c": "Advanced Micro Devices, Inc.", "74273c": "Co., LTD", "7427ea": "Elitegroup Computer Systems Co.,Ltd.", "742857": "Mayfield Robotics", @@ -21995,6 +22352,7 @@ "743174": "Apple, Inc.", "743256": "NT-ware Systemprg GmbH", "7432c2": "KYOLIS", + "743357": "vivo Mobile Communication Co., Ltd.", "7433a6": "Shenzhen SuperElectron Technology Co.,Ltd.", "743400": "MTG Co., Ltd.", "74342b": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -22007,7 +22365,7 @@ "7438b7": "CANON INC.", "743a20": "New H3C Technologies Co., Ltd", "743a65": "NEC Corporation", - "743aef": "Kaonmedia CO., LTD.", + "743aef": "Kaon Group Co., Ltd.", "743af4": "Intel Corporate", "743c18": "Taicang T&W Electronics", "743e2b": "Ruckus Wireless", @@ -22025,17 +22383,20 @@ "744687": "Kingsignal Technology Co., Ltd.", "7446a0": "Hewlett Packard", "7446b3": "Texas Instruments", + "7449d2": "New H3C Technologies Co., Ltd", "744aa4": "zte corporation", "744be9": "EXPLORER HYPERTECH CO.,LTD", "744ca1": "Liteon Technology Corporation", "744d28": "Routerboard.com", "744d6d": "HUAWEI TECHNOLOGIES CO.,LTD", "744d79": "Arrive Systems Inc.", + "744dbd": "Espressif Inc.", "74504e": "New H3C Technologies Co., Ltd", "7451ba": "Xiaomi Communications Co Ltd", "745327": "COMMSEN CO., LIMITED", "7453a8": "ACL Airshop BV", "745427": "SHENZHEN FAST TECHNOLOGIES CO.,LTD", + "74546b": "hangzhou zhiyi communication co., ltd", "74547d": "Cisco SPVTG", "745612": "ARRIS Group, Inc.", "74563c": "GIGA-BYTE TECHNOLOGY CO.,LTD.", @@ -22049,13 +22410,14 @@ "745c4b": "GN Audio A/S", "745c9f": "TCT mobile ltd", "745cfa": "Shenzhen Shunrui Gaojie Technology Co., Ltd.", + "745d22": "Electronics Technology co., ltd", "745d43": "BSH Hausgeraete GmbH", "745d68": "Fiberhome Telecommunication Technologies Co.,LTD", "745e1c": "PIONEER CORPORATION", "745f00": "Samsung Semiconductor Inc.", "745f90": "LAM Technologies", "745fae": "TSL PPL", - "74604c": "RØDE", + "74604c": "RODE", "7460fa": "HUAWEI TECHNOLOGIES CO.,LTD", "74614b": "Chongqing Huijiatong Information Technology Co., Ltd.", "7463c2": "Huawei Device Co., Ltd.", @@ -22063,7 +22425,7 @@ "74650c": "Apple, Inc.", "7465d1": "Atlinks", "746630": "T:mi Ytti", - "7467f7": "Extreme Networks, Inc.", + "7467f7": "Extreme Networks Headquarters", "74694a": "Sichuan Tianyi Comheart Telecom Co.,LTD", "746a3a": "Aperi Corporation", "746a89": "Rezolt Corporation", @@ -22090,6 +22452,7 @@ "74767d": "shenzhen kexint technology co.,ltd", "747818": "Jurumani Solutions", "747827": "Dell Inc.", + "7478a6": "Fortinet, Inc.", "747a90": "Murata Manufacturing Co., Ltd.", "747b7a": "ETH Inc.", "747d24": "Co., Ltd.", @@ -22131,6 +22494,7 @@ "749050": "Renesas Electronics Corporation", "74911a": "Ruckus Wireless", "7491bd": "Four systems Co.,Ltd.", + "7492ba": "Movesense Ltd", "7493a4": "Zebra Technologies Corp.", "7493da": "ASKEY COMPUTER CORP", "74943d": "AgJunction", @@ -22140,6 +22504,7 @@ "749637": "Todaair Electronic Co., Ltd", "749779": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "749781": "zte corporation", + "74978e": "Nova Labs", "749975": "IBM Corporation", "749ac0": "Cachengo, Inc.", "749be8": "Hitron Technologies. Inc", @@ -22159,6 +22524,7 @@ "74a4a7": "QRS Music Technologies, Inc.", "74a4b5": "Powerleader Science and Technology Co. Ltd.", "74a528": "HUAWEI TECHNOLOGIES CO.,LTD", + "74a58c": "Texas Instruments", "74a6cd": "Apple, Inc.", "74a78e": "zte corporation", "74a7ea": "Amazon Technologies Inc.", @@ -22176,6 +22542,7 @@ "74b725": "Huawei Device Co., Ltd.", "74b7b3": "Shenzhen YOUHUA Technology Co., Ltd", "74b7e6": "Zegna-Daidong Limited", + "74b80f": "Zipline International Inc.", "74b839": "Texas Instruments", "74b91e": "Nanjing Bestway Automation System Co., Ltd", "74b9eb": "JinQianMao Technology Co.,Ltd.", @@ -22189,8 +22556,10 @@ "74c17d": "Infinix mobility limited", "74c246": "Amazon Technologies Inc.", "74c330": "SHENZHEN FAST TECHNOLOGIES CO.,LTD", + "74c530": "vivo Mobile Communication Co., Ltd.", "74c621": "Zhejiang Hite Renewable Energy Co.,LTD", "74c63b": "AzureWave Technology Inc.", + "74c76e": "RTK-TECHNOLOGIES, LLC", "74c929": "Zhejiang Dahua Technology Co., Ltd.", "74c99a": "Ericsson AB", "74c9a3": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -22214,8 +22583,8 @@ "74d6cb": "New H3C Technologies Co., Ltd", "74d6e5": "Huawei Device Co., Ltd.", "74d6ea": "Texas Instruments", - "74d713": "Huaqin Technology Co.,Ltd", - "74d7ca": "Panasonic Corporation Automotive", + "74d713": "Huaqin Technology Co. LTD", + "74d7ca": "Panasonic Automotive Systems Co.,Ltd", "74d83e": "Intel Corporate", "74d850": "Evrisko Systems", "74d873": "GUANGDONG GENIUS TECHNOLOGY CO., LTD.", @@ -22336,11 +22705,13 @@ "7828ca": "Sonos, Inc.", "7829ed": "ASKEY COMPUTER CORP", "782a79": "Sdn. Bhd.", + "782af8": "IETHCOM INFORMATION TECHNOLOGY CO., LTD.", "782b46": "Intel Corporate", "782b64": "Bose Corporation", "782bcb": "Dell Inc.", "782c29": "New H3C Technologies Co., Ltd", "782d7e": "TRENDnet, Inc.", + "782dad": "HUAWEI TECHNOLOGIES CO.,LTD", "782e56": "China Mobile Group Device Co.,Ltd.", "782eef": "Nokia Corporation", "782f17": "Xlab Co.,Ltd", @@ -22374,6 +22745,9 @@ "784561": "CyberTAN Technology Inc.", "7845b3": "Huawei Device Co., Ltd.", "7845c4": "Dell Inc.", + "78465c": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", + "78465f": "Fiberhome Telecommunication Technologies Co.,LTD", + "78467d": "SKAIChips", "7846c4": "DAEHAP HYPER-TECH", "7846d4": "Samsung Electronics Co.,Ltd", "78471d": "Samsung Electronics Co.,Ltd", @@ -22446,7 +22820,7 @@ "787a6f": "Juice Technology AG", "787b8a": "Apple, Inc.", "787d48": "ITEL MOBILE LIMITED", - "787d53": "Extreme Networks, Inc.", + "787d53": "Extreme Networks Headquarters", "787df3": "Sterlite Technologies Limited", "787e61": "Apple, Inc.", "787f62": "GiK mbH", @@ -22470,6 +22844,7 @@ "788c54": "Ping Communication", "788c77": "LEXMARK INTERNATIONAL, INC.", "788cb5": "TP-Link Corporation Limited", + "788daf": "Sagemcom Broadband SAS", "788df7": "Hitron Technologies. Inc", "788e33": "Jiangsu SEUIC Technology Co.,Ltd", "7890a2": "zte corporation", @@ -22482,16 +22857,18 @@ "7895eb": "ITEL MOBILE LIMITED", "789682": "zte corporation", "789684": "ARRIS Group, Inc.", - "7896a3": "Extreme Networks, Inc.", + "7896a3": "Extreme Networks Headquarters", "7897c3": "DINGXIN INFORMATION TECHNOLOGY CO.,LTD", "7898e8": "D-Link International", "7898fd": "Q9 Networks Inc.", "78995c": "Nationz Technologies Inc", "789966": "Musilab Electronics (DongGuan)Co.,Ltd.", "78998f": "MEDILINE ITALIA SRL", + "789a18": "Routerboard.com", "789c85": "August Home, Inc.", "789ce7": "Shenzhen Aikede Technology Co., Ltd", "789ed0": "Samsung Electronics Co.,Ltd", + "789f38": "Shenzhen Feasycom Co., Ltd", "789f4c": "HOERBIGER Elektronik GmbH", "789f70": "Apple, Inc.", "789f87": "Siemens AG I IA PP PRM", @@ -22600,6 +22977,7 @@ "78ddd6": "c-scape", "78ddd9": "Guangzhou Shiyuan Electronics Co., Ltd. ", "78dee4": "Texas Instruments", + "78df72": "Shanghai Imilab Technology Co.Ltd", "78e103": "Amazon Technologies Inc.", "78e22c": "Huawei Device Co., Ltd.", "78e2bd": "Vodafone Automotive S.p.A.", @@ -22621,6 +22999,7 @@ "78f1c6": "Cisco Systems, Inc", "78f235": "Sichuan AI-Link Technology Co., Ltd.", "78f238": "Samsung Electronics Co.,Ltd", + "78f276": "Inc.", "78f29e": "PEGATRON CORPORATION", "78f557": "HUAWEI TECHNOLOGIES CO.,LTD", "78f5e5": "BEGA Gantenbrink-Leuchten KG", @@ -22709,6 +23088,7 @@ "7c2edd": "Samsung Electronics Co.,Ltd", "7c2f80": "Gigaset Communications GmbH", "7c310e": "Cisco Systems, Inc", + "7c3180": "SMK corporation", "7c336e": "MEG Electronics Inc.", "7c33f9": "HUAWEI TECHNOLOGIES CO.,LTD", "7c3548": "Transcend Information", @@ -22759,6 +23139,7 @@ "7c5cf8": "Intel Corporate", "7c604a": "Avelon", "7c6097": "HUAWEI TECHNOLOGIES CO.,LTD", + "7c6130": "Apple, Inc.", "7c6166": "Amazon Technologies Inc.", "7c6193": "HTC Corporation", "7c6305": "Amazon Technologies Inc.", @@ -22772,6 +23153,7 @@ "7c696b": "Atmosic Technologies", "7c69f6": "Cisco Systems, Inc", "7c6a60": "China Mobile Group Device Co.,Ltd.", + "7c6a8a": "SINOBONDER Technology Co., Ltd.", "7c6ab3": "IBC TECHNOLOGIES INC.", "7c6ac3": "GatesAir, Inc", "7c6adb": "SafeTone Technology Co.,Ltd", @@ -22794,7 +23176,9 @@ "7c726e": "Ericsson AB", "7c72e4": "Unikey Technologies", "7c738b": "Cocoon Alarm Ltd", + "7c7398": "Espressif Inc.", "7c73eb": "Huawei Device Co., Ltd.", + "7c752d": "Samsung Electronics Co.,Ltd", "7c7630": "Shenzhen YOUHUA Technology Co., Ltd", "7c7635": "Intel Corporate", "7c7668": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -22831,13 +23215,13 @@ "7c942a": "HUAWEI TECHNOLOGIES CO.,LTD", "7c949f": "Shenzhen iComm Semiconductor CO.,LTD", "7c94b2": "Philips Healthcare PCCI", - "7c95b1": "Extreme Networks, Inc.", + "7c95b1": "Extreme Networks Headquarters", "7c95f3": "Cisco Systems, Inc", "7c96d2": "Fihonest communication co.,Ltd", "7c9763": "Openmatics s.r.o.", "7c97e1": "Huawei Device Co., Ltd.", "7c9a1d": "Apple, Inc.", - "7c9a54": "Technicolor CH USA Inc.", + "7c9a54": "Vantiva USA LLC", "7c9a9b": "VSE valencia smart energy", "7c9ebd": "Espressif Inc.", "7c9f07": "CIG SHANGHAI CO LTD", @@ -22867,6 +23251,7 @@ "7cb232": "Hui Zhou Gaoshengda Technology Co.,LTD", "7cb25c": "Acacia Communications", "7cb27d": "Intel Corporate", + "7cb30a": "zte corporation", "7cb37b": "Qingdao Intelligent&Precise Electronics Co.,Ltd.", "7cb542": "ACES Technology", "7cb566": "Intel Corporate", @@ -22880,6 +23265,7 @@ "7cbb8a": "Nintendo Co., Ltd.", "7cbc84": "IEEE Registration Authority", "7cbd06": "AE REFUsol", + "7cbf77": "SPEEDTECH CORP.", "7cbf88": "Mobilicom LTD", "7cbfae": "Sdn. Bhd.", "7cbfb1": "ARRIS Group, Inc.", @@ -22971,6 +23357,7 @@ "7cfadf": "Apple, Inc.", "7cfc16": "Apple, Inc.", "7cfc3c": "Visteon Corporation", + "7cfcfd": "Fiberhome Telecommunication Technologies Co.,LTD", "7cfd6b": "Xiaomi Communications Co Ltd", "7cfd82": "GUANGDONG GENIUS TECHNOLOGY CO., LTD.", "7cfe28": "Salutron Inc.", @@ -22991,6 +23378,7 @@ "800588": "Ruijie Networks Co.,LTD", "8005df": "Montage Technology Group Limited", "80071b": "VSOLUTION TELECOMMUNICATION TECHNOLOGY CO.,LTD.", + "800794": "Samsung Electronics Co.,Ltd", "8007a2": "Esson Technology Inc.", "800902": "Keysight Technologies, Inc.", "800a06": "COMTEC co.,ltd", @@ -23028,10 +23416,11 @@ "802511": "ITEL MOBILE LIMITED", "802689": "D-Link International", "80276c": "Cisco Systems, Inc", - "802994": "Technicolor CH USA Inc.", + "802994": "Vantiva USA LLC", "802aa8": "Ubiquiti Inc", "802afa": "Germaneers GmbH", "802bf9": "Hon Hai Precision Ind. Co.,Ltd.", + "802d1a": "zte corporation", "802dbf": "Cisco Systems, Inc", "802de1": "Solarbridge Technologies", "802e14": "azeti Networks AG", @@ -23070,6 +23459,7 @@ "8045dd": "Intel Corporate", "804731": "Packet Design, Inc.", "804786": "Samsung Electronics Co.,Ltd", + "80482c": "Wyze Labs Inc", "8048a5": "Sichuan Tianyi Comheart Telecom Co.,LTD", "804971": "Apple, Inc.", "804a14": "Apple, Inc.", @@ -23133,6 +23523,7 @@ "807459": "K's Co.,Ltd.", "807484": "Limited", "80751f": "SKY UK LIMITED", + "807677": "hangzhou puwell cloud tech co., ltd.", "807693": "Newag SA", "8076c2": "GD Midea Air-Conditioning Equipment Co.,Ltd.", "8077a4": "TECNO MOBILE LIMITED", @@ -23151,6 +23542,7 @@ "807de3": "Chongqing Sichuan Instrument Microcircuit Co.LTD.", "807eb4": "Shenzhen SuperElectron Technology Co.,Ltd.", "807ff8": "Juniper Networks", + "80802c": "Fortinet, Inc.", "8081a5": "Co.,Ltd", "808223": "Apple, Inc.", "808287": "ATCOM Technology Co.Ltd.", @@ -23164,7 +23556,7 @@ "808abd": "Samsung Electronics Co.,Ltd", "808af7": "Nanoleaf", "808b5c": "Shenzhen Runhuicheng Technology Co., Ltd", - "808c97": "Kaonmedia CO., LTD.", + "808c97": "Kaon Group Co., Ltd.", "808db7": "Hewlett Packard Enterprise", "808f1d": "TP-LINK TECHNOLOGIES CO.,LTD.", "808fe8": "Intelbras", @@ -23174,6 +23566,7 @@ "80929f": "Apple, Inc.", "809393": "Xapt GmbH", "80946c": "TOKYO RADAR CORPORATION", + "809562": "Extreme Networks Headquarters", "809621": "Lenovo", "8096b1": "ARRIS Group, Inc.", "8096ca": "Hon Hai Precision Ind. Co.,Ltd.", @@ -23190,6 +23583,7 @@ "80a589": "AzureWave Technology Inc.", "80a796": "Neuralink Corp.", "80a85d": "Osterhout Design Group", + "80a997": "Apple, Inc.", "80aaa4": "USAG", "80ab4d": "Nokia Solutions and Networks GmbH & Co. KG", "80ac7c": "Sichuan AI-Link Technology Co., Ltd.", @@ -23201,7 +23595,7 @@ "80b03d": "Apple, Inc.", "80b07b": "zte corporation", "80b219": "ELEKTRON TECHNOLOGY UK LIMITED", - "80b234": "Technicolor CH USA Inc.", + "80b234": "Vantiva USA LLC", "80b289": "Forworld Electronics Ltd.", "80b32a": "UK Grid Solutions Ltd", "80b575": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -23214,6 +23608,8 @@ "80b946": "Nokia", "80b95c": "ELFTECH Co., Ltd.", "80b97a": "eero inc.", + "80b989": "Apple, Inc.", + "80ba16": "Micas Networks Inc.", "80baac": "TeleAdapt Ltd", "80bae6": "Neets", "80bbeb": "Satmap Systems Ltd", @@ -23222,13 +23618,14 @@ "80beaf": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "80c16e": "Hewlett Packard", "80c3ba": "Sonova Consumer Hearing GmbH", + "80c41b": "Texas Instruments", "80c45d": "IPG Laser GmbH", "80c501": "OctoGate IT Security Systems GmbH", "80c548": "Shenzhen Zowee Technology Co.,Ltd", "80c5e6": "Microsoft Corporation", "80c5f2": "AzureWave Technology Inc.", "80c63f": "Remec Broadband Wireless , LLC", - "80c6ab": "Technicolor CH USA Inc.", + "80c6ab": "Vantiva USA LLC", "80c6ca": "Endian s.r.l.", "80c755": "Panasonic Appliances Company", "80c7c5": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -23244,7 +23641,7 @@ "80cf41": "Lenovo Mobile Communication Technology Ltd.", "80cfa2": "Huawei Device Co., Ltd.", "80d019": "Embed, Inc", - "80d04a": "Technicolor CH USA Inc.", + "80d04a": "Vantiva USA LLC", "80d065": "CKS Corporation", "80d09b": "HUAWEI TECHNOLOGIES CO.,LTD", "80d160": "Sdn. Bhd.", @@ -23259,7 +23656,7 @@ "80d733": "QSR Automations, Inc.", "80da13": "eero inc.", "80dabc": "Megafone Limited", - "80dac2": "Technicolor CH USA Inc.", + "80dac2": "Vantiva USA LLC", "80db17": "Juniper Networks", "80db31": "Power Quotient International Co., Ltd.", "80decc": "HYBE Co.,LTD", @@ -23279,6 +23676,7 @@ "80ed2c": "Apple, Inc.", "80ee25": "Shenzhen Skyworth Digital Technology CO., Ltd", "80ee73": "Shuttle Inc.", + "80f0cf": "Ruckus Wireless", "80f1a4": "HUAWEI TECHNOLOGIES CO.,LTD", "80f1f1": "Tech4home, Lda", "80f25e": "Kyynel", @@ -23298,7 +23696,7 @@ "80ffa8": "UNIDIS", "84002d": "PEGATRON CORPORATION", "8400d2": "Sony Corporation", - "840112": "Kaonmedia CO., LTD.", + "840112": "Kaon Group Co., Ltd.", "8401a7": "Greyware Automation Products, Inc", "840283": "HUMAX Co., Ltd.", "840328": "Juniper Networks", @@ -23309,6 +23707,7 @@ "840b7c": "Hitron Technologies. Inc", "840bbb": "MitraStar Technology Corp.", "840d8e": "Espressif Inc.", + "840f2a": "Jiangxi Risound Electronics Co., LTD", "840f45": "Shanghai GMT Digital Technologies Co., Ltd", "84100d": "Motorola Mobility LLC, a Lenovo Company", "84119e": "Samsung Electronics Co.,Ltd", @@ -23320,7 +23719,7 @@ "8416f9": "TP-LINK TECHNOLOGIES CO.,LTD.", "841715": "Ltd.", "841766": "WEIFANG GOERTEK ELECTRONICS CO.,LTD", - "8417ef": "Technicolor CH USA Inc.", + "8417ef": "Vantiva USA LLC", "841826": "Osram GmbH", "84183a": "Ruckus Wireless", "841888": "Juniper Networks", @@ -23345,8 +23744,10 @@ "84262b": "Nokia", "84267a": "GUANGDONG TAIDE ZHILIAN TECHNOLOGY CO.,LTD", "842690": "BEIJING THOUGHT SCIENCE CO.,LTD.", + "842712": "Silicon Laboratories", "8427b6": "China Mobile IOT Company Limited", "8427ce": "Corporation of the Presiding Bishop of The Church of Jesus Christ of Latter-day Saints", + "842859": "Amazon Technologies Inc.", "84285a": "Saffron Solutions Inc", "842914": "EMPORIA TELECOM Produktions- und VertriebsgesmbH & Co KG", "842999": "Apple, Inc.", @@ -23359,7 +23760,9 @@ "842e27": "Samsung Electronics Co.,Ltd", "842f75": "Innokas Group", "843095": "Hon Hai Precision IND.CO.,LTD", + "8430ce": "Shenzhen Jaguar Microsystems Co., Ltd", "8430e5": "SkyHawke Technologies, LLC", + "8431a8": "Wuhan Funshion Online Technologies Co.,Ltd", "84326f": "GUANGZHOU AVA ELECTRONICS TECHNOLOGY CO.,LTD ", "8432ea": "ANHUI WANZTEN P&T CO., LTD", "843497": "Hewlett Packard", @@ -23371,7 +23774,9 @@ "843a5b": "Corporation", "843b10": "LVSWITCHES INC.", "843c4c": "Robert Bosch SRL", + "843c99": "zte corporation", "843dc6": "Cisco Systems, Inc", + "843e1d": "Hui Zhou Gaoshengda Technology Co.,LTD", "843e79": "Shenzhen Belon Technology CO.,LTD", "843e92": "HUAWEI TECHNOLOGIES CO.,LTD", "843f4e": "Tri-Tech Manufacturing, Inc.", @@ -23424,6 +23829,7 @@ "847127": "Silicon Laboratories", "84716a": "Huawei Device Co., Ltd.", "847207": "I&C Technology", + "847293": "Texas Instruments", "847303": "Corporation Ltd.", "84742a": "zte corporation", "847460": "zte corporation", @@ -23436,6 +23842,7 @@ "847973": "Shanghai Baud Data Communication Co.,Ltd.", "847a88": "HTC Corporation", "847ab6": "Inc.", + "847adf": "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "847b57": "Intel Corporate", "847beb": "Dell Inc.", "847c9b": "GD Midea Air-Conditioning Equipment Co.,Ltd.", @@ -23454,10 +23861,13 @@ "84850a": "Hella Sonnen- und Wetterschutztechnik GmbH", "848553": "Biznes Systema Telecom, LLC", "8485e6": "Guangdong Asano Technology CO.,Ltd.", + "848687": "weiyuantechnology", "8486f3": "Greenvity Communications", + "8487ff": "Shenzhen Skyworth Digital Technology CO., Ltd", "8488e1": "Apple, Inc.", "8489ad": "Apple, Inc.", "8489ec": "IEEE Registration Authority", + "848a59": "Hisilicon Technologies Co., Ltd", "848a8d": "Cisco Systems, Inc", "848bcd": "IEEE Registration Authority", "848c8d": "Apple, Inc.", @@ -23505,6 +23915,7 @@ "84ab1a": "Apple, Inc.", "84ab26": "Tiinlab Corporation", "84ac16": "Apple, Inc.", + "84ac60": "Guangxi Hesheng Electronics Co., Ltd.", "84aca4": "Beijing Novel Super Digital TV Technology Co., Ltd", "84acfb": "Crouzet Automatismes", "84ad58": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -23539,6 +23950,7 @@ "84c7a9": "C3PO S.A.", "84c7ea": "Sony Corporation", "84c807": "ADVA Optical Networking Ltd.", + "84c8a0": "Hui Zhou Gaoshengda Technology Co.,LTD", "84c8b1": "Incognito Software Systems Inc.", "84c9b2": "D-Link International", "84c9c6": "SHENZHEN GONGJIN ELECTRONICS CO.,LT", @@ -23547,6 +23959,7 @@ "84cd62": "ShenZhen IDWELL Technology CO.,Ltd", "84cfbf": "Fairphone", "84d15a": "TCT mobile ltd", + "84d328": "Apple, Inc.", "84d32a": "IEEE 1905.1", "84d343": "Calix Inc.", "84d352": "Tonly Technology Co. Ltd ", @@ -23560,7 +23973,7 @@ "84d81b": "TP-LINK TECHNOLOGIES CO.,LTD.", "84d931": "Hangzhou H3C Technologies Co., Limited", "84d9c8": "Unipattern Co.,", - "84db2f": "Sierra Wireless", + "84db2f": "Sierra Wireless, ULC", "84db9e": "Pink Nectarine Health AB", "84dba4": "Huawei Device Co., Ltd.", "84dbac": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -23589,14 +24002,17 @@ "84eb3e": "Vivint Smart Home", "84ebef": "Cisco Systems, Inc", "84ed33": "BBMC Co.,Ltd", + "84eee4": "Samsung Electronics Co.,Ltd", "84ef18": "Intel Corporate", "84f117": "Newseason", "84f129": "Metrascale Inc.", "84f147": "Cisco Systems, Inc", + "84f175": "Jiangxi Xunte Intelligent Terminal Co., Ltd", "84f1d0": "EHOOME IOT PRIVATE LIMITED", "84f3eb": "Espressif Inc.", "84f44c": "International Integrated Systems., Inc.", "84f493": "OMS spol. s.r.o.", + "84f5eb": "zte corporation", "84f64c": "Cross Point BV", "84f6fa": "Miovision Technologies Incorporated", "84f703": "Espressif Inc.", @@ -23620,7 +24036,9 @@ "880907": "MKT Systemtechnik GmbH & Co. KG", "8809af": "Masimo Corporation", "880aa3": "Juniper Networks", + "880ce0": "Texas Instruments", "880f10": "Huami Information Technology Co.,Ltd.", + "880fa2": "Sagemcom Broadband SAS", "880fb6": "Jabil Circuits India Pvt Ltd,-EHTP unit", "881036": "Electronics Limted", "88108f": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -23634,6 +24052,7 @@ "8817a3": "Sdn. Bhd.", "8818ae": "Tamron Co., Ltd", "881908": "Apple, Inc.", + "881a14": "Silicon Laboratories", "881b99": "SHENZHEN XIN FEI JIA ELECTRONIC CO. LTD.", "881c95": "ITEL MOBILE LIMITED", "881dfc": "Cisco Systems, Inc", @@ -23663,6 +24082,8 @@ "882bd7": "ADDÉNERGIE TECHNOLOGIES", "882d53": "Co., Ltd.", "882e5a": "storONE", + "882f64": "BCOM Networks Limited", + "883037": "Juniper Networks", "88308a": "Murata Manufacturing Co., Ltd.", "883314": "Texas Instruments", "8833be": "Ivenix, Inc.", @@ -23676,8 +24097,10 @@ "883b8b": "Cheering Connection Co. Ltd.", "883c1c": "MERCURY CORPORATION", "883c93": "Alcatel-Lucent Enterprise", + "883cc5": "IEEE Registration Authority", "883d24": "Google, Inc.", "883f0c": "system a.v. co., ltd.", + "883f37": "UHTEK CO., LTD.", "883f4a": "Texas Instruments", "883f99": "Siemens AG", "883fd3": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -23715,10 +24138,11 @@ "885a06": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "885a85": "Wistron Neweb Corporation", "885a92": "Cisco Systems, Inc", - "885bdd": "Extreme Networks, Inc.", + "885bdd": "Extreme Networks Headquarters", "885c47": "Alcatel Lucent", "885d90": "IEEE Registration Authority", "885dfb": "zte corporation", + "885ebd": "NCKOREA Co.,Ltd.", "885fe8": "IEEE Registration Authority", "88615a": "Siano Mobile Silicon Ltd.", "88625d": "BITNETWORKS CO.,LTD", @@ -23737,9 +24161,11 @@ "886b44": "Sunnovo International Limited", "886b6e": "Apple, Inc.", "886b76": "CHINA HOPEFUL GROUP HOPEFUL ELECTRIC CO.,LTD", + "886c60": "Xiaomi Communications Co Ltd", "886d2d": "Huawei Device Co., Ltd.", "886edd": "Micronet union Technology(Chengdu)Co., Ltd.", "886ee1": "Erbe Elektromedizin GmbH", + "886eeb": "HUAWEI TECHNOLOGIES CO.,LTD", "886f29": "Pocketbook International SA", "886fd4": "Dell Inc.", "887033": "Hangzhou Silan Microelectronic Inc", @@ -23757,8 +24183,10 @@ "88795b": "Konka Group Co., Ltd.", "88797e": "Motorola Mobility LLC, a Lenovo Company", "887a31": "Velankani Electronics Pvt. Ltd.", - "887e25": "Extreme Networks, Inc.", + "887b2c": "zte corporation", + "887e25": "Extreme Networks Headquarters", "887f03": "Comper Technology Investment Limited", + "888187": "Umeox Innovations Co.,Ltd", "8881b9": "Huawei Device Co., Ltd.", "888279": "Shenzhen RB-LINK Intelligent Technology Co.Ltd", "888322": "Samsung Electronics Co.,Ltd", @@ -23775,6 +24203,7 @@ "888c19": "Brady Corp Asia Pacific Ltd", "888e68": "Huawei Device Co., Ltd.", "888e7f": "ATOP CORPORATION", + "888f10": "Shenzhen Max Infinite Technology Co.,Ltd.", "888fa4": "Huawei Device Co., Ltd.", "889009": "Juniper Networks", "88908d": "Cisco Systems, Inc", @@ -23800,7 +24229,7 @@ "889cad": "Cisco Systems, Inc", "889d98": "Allied-telesisK.K.", "889e33": "TCT mobile ltd", - "889e68": "Technicolor CH USA Inc.", + "889e68": "Vantiva USA LLC", "889f6f": "Samsung Electronics Co.,Ltd", "889faa": "Hella Gutmann Solutions GmbH ", "889ffa": "Hon Hai Precision Ind. Co.,Ltd.", @@ -23811,9 +24240,10 @@ "88a303": "Samsung Electronics Co.,Ltd", "88a3cc": "Amatis Controls", "88a479": "Apple, Inc.", - "88a4c2": "Electronics Technology Co., Ltd", + "88a4c2": "Electronics Technology co., ltd", "88a5bd": "QPCOM INC.", "88a6c6": "Sagemcom Broadband SAS", + "88a6ef": "IEEE Registration Authority", "88a73c": "Ragentek Technology Group", "88a9a7": "IEEE Registration Authority", "88a9b7": "Apple, Inc.", @@ -23834,6 +24264,7 @@ "88b436": "FUJIFILM Corporation", "88b4a6": "Motorola Mobility LLC, a Lenovo Company", "88b4be": "HUAWEI TECHNOLOGIES CO.,LTD", + "88b5ff": "Shenzhen iComm Semiconductor CO.,LTD", "88b627": "Gembird Europe BV", "88b66b": "easynetworks", "88b6bd": "Flaircomm Microelectronics, Inc.", @@ -23909,6 +24340,7 @@ "88e9fe": "Apple, Inc.", "88ed1c": "Cudo Communication Co., Ltd.", "88ef16": "ARRIS Group, Inc.", + "88f00f": "Miraeil", "88f031": "Cisco Systems, Inc", "88f077": "Cisco Systems, Inc", "88f2bd": "GD Midea Air-Conditioning Equipment Co.,Ltd.", @@ -23916,16 +24348,18 @@ "88f490": "Jetmobile Pte Ltd", "88f56e": "HUAWEI TECHNOLOGIES CO.,LTD", "88f7bf": "vivo Mobile Communication Co., Ltd.", - "88f7c7": "Technicolor CH USA Inc.", + "88f7c7": "Vantiva USA LLC", "88f872": "HUAWEI TECHNOLOGIES CO.,LTD", + "88f916": "Qingdao Dayu Dance Digital Technology Co.,Ltd", "88fc5d": "Cisco Systems, Inc", "88fca6": "devolo AG", "88fd15": "LINEEYE CO., LTD", "88fed6": "ShangHai WangYong Software Co., Ltd.", "8c006d": "Apple, Inc.", + "8c02cd": "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "8c02fa": "COMMANDO Networks Limited", "8c04ba": "Dell Inc.", - "8c04ff": "Technicolor CH USA Inc.", + "8c04ff": "Vantiva USA LLC", "8c0551": "Koubachi AG", "8c06cb": "Toradex AG", "8c078c": "FLOW DATA INC", @@ -23956,6 +24390,7 @@ "8c192d": "IEEE Registration Authority", "8c19b5": "Arcadyan Corporation", "8c1abf": "Samsung Electronics Co.,Ltd", + "8c1af3": "Shenzhen Gooxi Information Security CO.,Ltd.", "8c1cda": "IEEE Registration Authority", "8c1d96": "Intel Corporate", "8c1e80": "Cisco Systems, Inc", @@ -23984,6 +24419,7 @@ "8c395c": "Bit4id Srl", "8c3a7e": "Universal Electronics, Inc.", "8c3b32": "Microfan B.V.", + "8c3b4a": "Universal Global Scientific Industrial Co., Ltd.", "8c3bad": "NETGEAR", "8c3c07": "Skiva Technologies, Inc.", "8c3c4a": "NAKAYO Inc", @@ -23999,7 +24435,7 @@ "8c477f": "NambooSolution", "8c47be": "Dell Inc.", "8c4962": "Roku, Inc", - "8c497a": "Extreme Networks, Inc.", + "8c497a": "Extreme Networks Headquarters", "8c49b6": "vivo Mobile Communication Co., Ltd.", "8c4aee": "GIGA TMS INC", "8c4b14": "Espressif Inc.", @@ -24013,6 +24449,7 @@ "8c5219": "SHARP Corporation", "8c53c3": "Beijing Xiaomi Mobile Software Co., Ltd", "8c53d2": "China Mobile Group Device Co.,Ltd.", + "8c53e6": "Wistron Neweb Corporation", "8c53f7": "A&D ENGINEERING CO., LTD.", "8c541d": "LGE ", "8c554a": "Intel Corporate", @@ -24054,7 +24491,7 @@ "8c6878": "Nortek-AS", "8c68c8": "zte corporation", "8c6a3b": "Samsung Electronics Co.,Ltd", - "8c6a8d": "Technicolor CH USA Inc.", + "8c6a8d": "Vantiva USA LLC", "8c6ae4": "Viogem Limited", "8c6bdb": "Huawei Device Co., Ltd.", "8c6d50": "SHENZHEN MTC CO LTD", @@ -24088,6 +24525,7 @@ "8c8126": "ARCOM", "8c8172": "Sichuan Tianyi Comheart Telecom Co.,LTD", "8c82a8": "Insigma Technology Co.,Ltd", + "8c8394": "Arcadyan Corporation", "8c839d": "SHENZHEN XINYUPENG ELECTRONIC TECHNOLOGY CO., LTD", "8c83df": "Nokia", "8c83e1": "Samsung Electronics Co.,Ltd", @@ -24120,6 +24558,7 @@ "8c9246": "Oerlikon Textile Gmbh&Co.KG", "8c9351": "Jigowatts Inc.", "8c941f": "Cisco Systems, Inc", + "8c9461": "Cisco Systems, Inc", "8c946a": "New H3C Technologies Co., Ltd", "8c94cc": "SFR", "8c94cf": "Encell Technology, Inc.", @@ -24167,6 +24606,7 @@ "8cc84b": "CHONGQING FUGUI ELECTRONICS CO.,LTD.", "8cc8cd": "Samsung Electronics Co.,Ltd", "8cc8f4": "IEEE Registration Authority", + "8ccb14": "TBS GmbH", "8ccbdf": "FOXCONN INTERCONNECT TECHNOLOGY ", "8ccda2": "ACTP, Inc.", "8ccde8": "Nintendo Co., Ltd.", @@ -24176,11 +24616,13 @@ "8ccf09": "Dell EMC", "8ccf5c": "BEFEGA GmbH", "8ccf8f": "ITC Systems", + "8cd08b": "WuXi Rigosys Technology Co.,LTD", "8cd0b2": "Beijing Xiaomi Mobile Software Co., Ltd", "8cd17b": "CG Mobile", "8cd2e9": "YOKOTE SEIKO CO., LTD.", "8cd3a2": "VisSim AS", "8cd48e": "ITEL MOBILE LIMITED", + "8cd54a": "TAIYO YUDEN CO.,LTD", "8cd628": "Ikor Metering", "8cd67f": "EM Microelectronic", "8cd9d6": "Xiaomi Communications Co Ltd", @@ -24192,6 +24634,7 @@ "8cde99": "Comlab Inc.", "8cdee6": "Samsung Electronics Co.,Ltd", "8cdef9": "Beijing Xiaomi Mobile Software Co., Ltd", + "8cdf2c": "vivo Mobile Communication Co., Ltd.", "8cdf9d": "NEC Corporation", "8ce042": "vivo Mobile Communication Co., Ltd.", "8ce081": "zte corporation", @@ -24205,6 +24648,7 @@ "8ce78c": "DK Networks", "8ce7b3": "Sonardyne International Ltd", "8ce9b4": "Zhejiang Dahua Technology Co., Ltd.", + "8ce9ee": "Intel Corporate", "8cea12": "Shenzhen MiaoMing Intelligent Technology Co.,Ltd", "8cea1b": "Edgecore Networks Corporation", "8cea48": "Samsung Electronics Co.,Ltd", @@ -24212,9 +24656,11 @@ "8cec4b": "Dell Inc.", "8cec7b": "Apple, Inc.", "8ceec6": "Precepscion Pty. Ltd.", + "8ceefd": "zte corporation", "8cf112": "Motorola Mobility LLC, a Lenovo Company", "8cf228": "MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "8cf319": "Siemens Industrial Automation Products Ltd., Chengdu", + "8cf3e7": "solidotech", "8cf681": "Silicon Laboratories", "8cf710": "AMPAK Technology, Inc.", "8cf773": "Nokia", @@ -24245,6 +24691,7 @@ "900372": "Longnan Junya Digital Technology Co. Ltd. ", "9003b7": "PARROT SA", "900628": "Samsung Electronics Co.,Ltd", + "9006f2": "Texas Instruments", "900917": "Far-sighted mobile", "9009d0": "Synology Incorporated", "9009df": "Intel Corporate", @@ -24259,6 +24706,7 @@ "900d66": "Digimore Electronics Co., Ltd", "900dcb": "ARRIS Group, Inc.", "900e83": "Monico Monitoring, Inc.", + "900e9e": "Shenzhen SuperElectron Technology Co.,Ltd.", "900eb3": "Shenzhen Amediatech Technology Co., Ltd.", "900f0c": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "901195": "Amazon Technologies Inc.", @@ -24299,6 +24747,7 @@ "902bd2": "HUAWEI TECHNOLOGIES CO.,LTD", "902cc7": "C-MAX Asia Limited", "902cfb": "CanTops Co,.Ltd.", + "902d77": "Edgecore Americas Networking Corporation", "902e16": "Electronics Technology co., ltd", "902e1c": "Intel Corporate", "902e87": "LabJack", @@ -24313,9 +24762,11 @@ "90380c": "Espressif Inc.", "9038df": "Changzhou Tiannengbo System Co. Ltd.", "90395e": "Silicon Laboratories", + "90395f": "Amazon Technologies Inc.", "903a72": "Ruckus Wireless", "903aa0": "Nokia", "903ae6": "PARROT SA", + "903c1d": "HISENSE VISUAL TECHNOLOGY CO.,LTD", "903c92": "Apple, Inc.", "903cae": "Yunnan KSEC Digital Technology Co.,Ltd.", "903cb3": "Edgecore Networks Corporation", @@ -24351,12 +24802,14 @@ "905446": "TES ELECTRONIC SOLUTIONS", "9055ae": "Ericsson, EAB/RWI/K", "9055de": "Fiberhome Telecommunication Technologies Co.,LTD", + "905607": "Sichuan AI-Link Technology Co., Ltd.", "905682": "Lenbrook Industries Limited", "905692": "Autotalks Ltd.", "9056fc": "TECNO MOBILE LIMITED", - "905851": "Technicolor CH USA Inc.", + "905851": "Vantiva USA LLC", "90593c": "AZ-TECHNOLOGY SDN BHD", "9059af": "Texas Instruments", + "905a08": "Super Micro Computer, Inc.", "905c34": "Sirius Electronic Systems Srl", "905c44": "Compal Broadband Networks, Inc.", "905d7c": "New H3C Technologies Co., Ltd", @@ -24367,6 +24820,7 @@ "90610c": "Pte Ltd", "9061ae": "Intel Corporate", "90633b": "Samsung Electronics Co.,Ltd", + "9064ad": "HUAWEI TECHNOLOGIES CO.,LTD", "906560": "EM Microelectronic", "906584": "Intel Corporate", "906717": "Alphion India Private Limited", @@ -24377,19 +24831,23 @@ "906976": "Withrobot Inc.", "906a94": "hangzhou huacheng network technology co., ltd", "906aeb": "Microsoft Corporation", + "906c4b": "Advance Security Electronics", "906cac": "Fortinet, Inc.", "906d05": "BXB ELECTRONICS CO., LTD", + "906d62": "Cambium Networks Limited", "906dc8": "DLG Automação Industrial Ltda", "906ebb": "Hon Hai Precision Ind. Co.,Ltd.", "906f18": "Private", "906fa9": "NANJING PUTIAN TELECOMMUNICATIONS TECHNOLOGY CO.,LTD.", "907025": "Garea Microsys Co.,Ltd.", "907065": "Texas Instruments", + "9070d3": "Fiberhome Telecommunication Technologies Co.,LTD", "907240": "Apple, Inc.", "907282": "Sagemcom Broadband SAS", "90735a": "Motorola Mobility LLC, a Lenovo Company", "90749d": "IRay Technology Co., Ltd.", "9075bc": "Nokia Shanghai Bell Co., Ltd.", + "9075de": "Zebra Technologies Inc.", "90769f": "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "9077ee": "Cisco Systems, Inc", "907841": "Intel Corporate", @@ -24414,11 +24872,13 @@ "908260": "IEEE 1904.1 Working Group", "90834b": "BEIJING YUNYI TIMES TECHNOLOGY CO,.LTD", "90837a": "General Electric Water & Process Technologies", + "90837e": "Fiberhome Telecommunication Technologies Co.,LTD", "90840d": "Apple, Inc.", "90842b": "LEGO System A/S", "90848b": "HDR10+ Technologies, LLC", "908674": "Sichuan Tianyi Comheart Telecom Co.,LTD", "90869b": "zte corporation", + "908855": "Cisco Systems, Inc", "9088a2": "IONICS TECHNOLOGY ME LTDA", "90895f": "WEIFANG GOERTEK ELECTRONICS CO.,LTD", "908c09": "Total Phase", @@ -24454,6 +24914,7 @@ "909f33": "EFM Networks", "909f43": "Accutron Instruments Inc.", "90a137": "Beijing Splendidtel Communication Technology Co,. Ltd", + "90a1ba": "PNetworks Electronics Information ", "90a210": "United Telecoms Ltd", "90a25b": "Apple, Inc.", "90a2da": "GHEO SA", @@ -24486,7 +24947,7 @@ "90b622": "Samsung Electronics Co.,Ltd", "90b67a": "Shenzhen Skyworth Digital Technology CO., Ltd", "90b686": "Murata Manufacturing Co., Ltd.", - "90b832": "Extreme Networks, Inc.", + "90b832": "Extreme Networks Headquarters", "90b8d0": "Joyent, Inc.", "90b8e0": "SHENZHEN YANRAY TECHNOLOGY CO.,LTD", "90b931": "Apple, Inc.", @@ -24498,6 +24959,7 @@ "90c35f": "Nanjing Jiahao Technology Co., Ltd.", "90c54a": "vivo Mobile Communication Co., Ltd.", "90c682": "IEEE Registration Authority", + "90c710": "zte corporation", "90c792": "ARRIS Group, Inc.", "90c7d8": "zte corporation", "90c99b": "Tesorion Nederland B.V.", @@ -24511,6 +24973,7 @@ "90cf15": "Nokia Corporation", "90cf6f": "Dlogixs Co Ltd", "90cf7d": "Qingdao Hisense Communications Co.,Ltd.", + "90d092": "HUMAX Co., Ltd.", "90d11b": "Palomar Medical Technologies", "90d473": "vivo Mobile Communication Co., Ltd.", "90d689": "Huahao Fangzhou Technology Co.,Ltd", @@ -24534,6 +24997,7 @@ "90e202": "Texas Instruments", "90e2ba": "Intel Corporate", "90e2fc": "IEEE Registration Authority", + "90e468": "Guangzhou Shiyuan Electronic Technology Company Limited", "90e6ba": "ASUSTek COMPUTER INC.", "90e710": "New H3C Technologies Co., Ltd", "90e7c4": "HTC Corporation", @@ -24541,8 +25005,10 @@ "90e95e": "Cisco Systems, Inc", "90ea60": "SPI Lasers Ltd ", "90eb48": "Shanghai XinMiaoLink Technology Co., Ltd", + "90eb50": "Cisco Systems, Inc", "90ec50": "C.O.B.O. SPA", "90ec77": "silicom", + "90ece3": "Nokia", "90ecea": "Apple, Inc.", "90eec7": "Samsung Electronics Co.,Ltd", "90eed9": "UNIVERSAL DE DESARROLLOS ELECTRÓNICOS, SA", @@ -24556,13 +25022,14 @@ "90f305": "HUMAX Co., Ltd.", "90f3b7": "Kirisun Communications Co., Ltd.", "90f3b8": "China Mobile Group Device Co.,Ltd.", + "90f421": "IEEE Registration Authority", "90f4c1": "Rand McNally", "90f644": "Huawei Device Co., Ltd.", "90f652": "TP-LINK TECHNOLOGIES CO.,LTD.", "90f72f": "Phillips Machine & Welding Co., Inc. ", "90f7b2": "New H3C Technologies Co., Ltd", "90f82e": "Amazon Technologies Inc.", - "90f891": "Kaonmedia CO., LTD.", + "90f891": "Kaon Group Co., Ltd.", "90f970": "HUAWEI TECHNOLOGIES CO.,LTD", "90f9b7": "HUAWEI TECHNOLOGIES CO.,LTD", "90fb5b": "Avaya Inc", @@ -24581,6 +25048,7 @@ "940230": "Logitech", "94026b": "Optictimes Co.,Ltd", "94049c": "HUAWEI TECHNOLOGIES CO.,LTD", + "9404e3": "Vantiva USA LLC", "9405b6": "Liling FullRiver Electronics & Technology Ltd", "9405bb": "IEEE Registration Authority", "940853": "Liteon Technology Corporation", @@ -24640,7 +25108,7 @@ "943a91": "Amazon Technologies Inc.", "943af0": "Nokia Corporation", "943bb0": "New H3C Technologies Co., Ltd", - "943bb1": "Kaonmedia CO., LTD.", + "943bb1": "Kaon Group Co., Ltd.", "943c96": "Sagemcom Broadband SAS", "943cc6": "Espressif Inc.", "943dc9": "Asahi Net, Inc.", @@ -24654,7 +25122,9 @@ "94434d": "Ciena Corporation", "944444": "LG Innotek", "944452": "Belkin International Inc.", + "944560": "Google, Inc.", "944696": "BaudTec Corporation", + "944788": "HUAWEI TECHNOLOGIES CO.,LTD", "9447b0": "BEIJING ESWIN COMPUTING TECHNOLOGY CO., LTD", "944996": "WiSilica Inc", "944a09": "BitWise Controls", @@ -24692,7 +25162,7 @@ "94659c": "Intel Corporate", "9466e7": "WOM Engineering", "94677e": "Belden India Private Limited", - "946a77": "Technicolor CH USA Inc.", + "946a77": "Vantiva USA LLC", "946ab0": "Arcadyan Corporation", "946dae": "Mellanox Technologies, Inc.", "9470d2": "WINFIRM TECHNOLOGY", @@ -24702,6 +25172,7 @@ "9476b7": "Samsung Electronics Co.,Ltd", "94772b": "HUAWEI TECHNOLOGIES CO.,LTD", "947806": "NINGBO SUNVOT TECHNOLOGY CO.,LTD", + "947918": "ITEL MOBILE LIMITED", "947bae": "Xiaomi Communications Co Ltd", "947bbe": "Ubicquia LLC", "947be7": "Samsung Electronics Co.,Ltd", @@ -24744,7 +25215,7 @@ "949901": "Shenzhen YITOA Digital Appliance CO.,LTD", "949990": "VTC Telecommunications", "949aa9": "Microsoft Corporation", - "949b2c": "Extreme Networks, Inc.", + "949b2c": "Extreme Networks Headquarters", "949bfd": "Trans New Technology, Inc.", "949c55": "Alta Data Technologies", "949d57": "Panasonic do Brasil Limitada", @@ -24886,6 +25357,7 @@ "94f720": "Tianjin Deviser Electronics Instrument Co., Ltd", "94f7ad": "Juniper Networks", "94f827": "Shanghai Imilab Technology Co.Ltd", + "94f929": "Meta Platforms Technologies, LLC", "94fae8": "Shenzhen Eycom Technology Co., Ltd ", "94fb29": "Zebra Technologies Inc.", "94fba7": "IEEE Registration Authority", @@ -24903,6 +25375,7 @@ "9801a7": "Apple, Inc.", "980284": "Theobroma Systems GmbH", "9802d8": "IEEE Registration Authority", + "98038a": "Texas Instruments", "98039b": "Mellanox Technologies, Inc.", "9803a0": "ABB n.v. Power Quality Products", "9803d8": "Apple, Inc.", @@ -24918,6 +25391,7 @@ "980d51": "Huawei Device Co., Ltd.", "980d67": "Zyxel Communications Corporation", "980d6f": "Samsung Electronics Co.,Ltd", + "980daf": "Apple, Inc.", "980e24": "Phytium Technology Co.,Ltd.", "980ee4": "Private", "981082": "Nsolution Co., Ltd.", @@ -24964,6 +25438,7 @@ "983713": "PT.Navicom Indonesia", "98387d": "ITRONIC TECHNOLOGY CO . , LTD .", "98398e": "Samsung Electronics Co.,Ltd", + "9839c0": "FLEXTRONICS", "983b16": "AMPAK Technology, Inc.", "983b67": "Corporation", "983b8f": "Intel Corporate", @@ -24999,7 +25474,7 @@ "98502e": "Apple, Inc.", "9850a3": "SIGNALTEK JSC", "98523d": "Sunitec Enterprise Co.,Ltd", - "98524a": "Technicolor CH USA Inc.", + "98524a": "Vantiva USA LLC", "9852b1": "Samsung Electronics Co.,Ltd", "98541b": "Intel Corporate", "9857d3": "HON HAI-CCPBG PRECISION IND.CO.,LTD.", @@ -25037,7 +25512,7 @@ "9876b6": "Adafruit", "987770": "Co., Ltd", "9877cb": "Vorteks ED", - "9877e7": "Kaonmedia CO., LTD.", + "9877e7": "Kaon Group Co., Ltd.", "987a10": "Ericsson AB", "987a14": "Microsoft Corporation", "987bf3": "Texas Instruments", @@ -25067,6 +25542,7 @@ "988e79": "Qudelix, Inc.", "988ed4": "ITEL MOBILE LIMITED", "988edd": "TE Connectivity Limerick", + "988f00": "Aruba, a Hewlett Packard Enterprise Company", "988fe0": "IEEE Registration Authority", "989080": "Linkpower Network System Inc Ltd.", "989096": "Dell Inc.", @@ -25077,9 +25553,10 @@ "989ab9": "zte corporation", "989bcb": "AVM Audiovisuelles Marketing und Computersysteme GmbH", "989c57": "HUAWEI TECHNOLOGIES CO.,LTD", - "989d5d": "Technicolor CH USA Inc.", + "989d5d": "Vantiva USA LLC", "989de5": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "989e63": "Apple, Inc.", + "989f1e": "HUAWEI TECHNOLOGIES CO.,LTD", "98a2c0": "Cisco Systems, Inc", "98a404": "Ericsson AB", "98a40e": "Snap, Inc.", @@ -25090,6 +25567,7 @@ "98aa3c": "Will i-tech Co., Ltd.", "98aad7": "BLUE WAVE NETWORKING CO LTD", "98aafc": "IEEE Registration Authority", + "98ab15": "Fujian Youyike Technology Co.,Ltd", "98acef": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", "98ad1d": "Huawei Device Co., Ltd.", "98ae71": "VVDN Technologies Pvt Ltd", @@ -25127,12 +25605,14 @@ "98cc4d": "Shenzhen mantunsci co., LTD", "98ccd9": "Shenzhen SuperElectron Technology Co.,Ltd.", "98cce4": "Shenzhen Mindray Animal Medical Technology Co.,LTD", + "98ccf3": "Amazon Technologies Inc.", "98cdac": "Espressif Inc.", "98cdb4": "Virident Systems, Inc.", "98cf53": "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.", "98d293": "Google, Inc.", "98d331": "Shenzhen Bolutek Technology Co.,Ltd.", "98d3d2": "MEKRA Lang GmbH & Co. KG", + "98d3d7": "HUAWEI TECHNOLOGIES CO.,LTD", "98d3e7": "Netafim L", "98d686": "Chyi Lee industry Co., ltd.", "98d6bb": "Apple, Inc.", @@ -25160,6 +25640,8 @@ "98ec65": "Cosesy ApS", "98ed5c": "Tesla,Inc.", "98ed7e": "eero inc.", + "98edca": "Fiberhome Telecommunication Technologies Co.,LTD", + "98ee8c": "zte corporation", "98eecb": "Corporation", "98ef9b": "OHSUNG", "98f058": "Lynxspring, Incl.", @@ -25187,6 +25669,8 @@ "98faa7": "INNONET", "98fae3": "Xiaomi Communications Co Ltd", "98fb12": "Ltd", + "98fb27": "Samsung Electronics Co.,Ltd", + "98fbf5": "ATRALTECH", "98fc11": "Cisco-Linksys, LLC", "98fc84": "IEEE Registration Authority", "98fd74": "ACT.CO.LTD", @@ -25206,6 +25690,7 @@ "9c05d6": "Ubiquiti Inc", "9c061b": "Hangzhou H3C Technologies Co., Limited", "9c066e": "Hytera Communications Corporation Limited", + "9c0971": "New H3C Technologies Co., Ltd", "9c0b05": "eero inc.", "9c0c35": "Shenzhenshi Xinzhongxin Technology Co.Ltd", "9c0cdf": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", @@ -25223,6 +25708,7 @@ "9c1d58": "Texas Instruments", "9c1e95": "Actiontec Electronics, Inc", "9c1ea4": "Sdn. Bhd.", + "9c1ecf": "Valeo Telematik und Akustik GmbH", "9c1fca": "Hangzhou AlmightyDigit Technology Co., Ltd", "9c1fdd": "Accupix Inc.", "9c207b": "Apple, Inc.", @@ -25241,7 +25727,7 @@ "9c2a70": "Hon Hai Precision Ind. Co.,Ltd.", "9c2a83": "Samsung Electronics Co.,Ltd", "9c2ba6": "Ruijie Networks Co.,LTD", - "9c2dcd": "Electronics Technology Co., Ltd", + "9c2dcd": "Electronics Technology co., ltd", "9c2dcf": "Shishi Tongyun Technology(Chengdu)Co.,Ltd.", "9c2e7a": "Samsung Electronics Co.,Ltd", "9c2ea1": "Xiaomi Communications Co Ltd", @@ -25260,6 +25746,7 @@ "9c35eb": "Apple, Inc.", "9c36f8": "Hyundai Kefico", "9c37f4": "HUAWEI TECHNOLOGIES CO.,LTD", + "9c3928": "Samsung Electronics Co.,Ltd", "9c3a9a": "Shenzhen Sundray Technologies Company Limited", "9c3aaf": "Samsung Electronics Co.,Ltd", "9c3dcf": "NETGEAR", @@ -25272,6 +25759,7 @@ "9c44a6": "SwiftTest, Inc.", "9c4563": "DIMEP Sistemas", "9c47f9": "LJU Automatisierungstechnik GmbH", + "9c4952": "Dongguan Liesheng Electronic Co., Ltd.", "9c497f": "Sdn. Bhd.", "9c4a7b": "Nokia Corporation", "9c4cae": "Mesa Labs", @@ -25307,7 +25795,7 @@ "9c5c8d": "FIREMAX INDÚSTRIA E COMÉRCIO DE PRODUTOS ELETRÔNICOS LTDA", "9c5c8e": "ASUSTek COMPUTER INC.", "9c5cf9": "Sony Corporation", - "9c5d12": "Extreme Networks, Inc.", + "9c5d12": "Extreme Networks Headquarters", "9c5d95": "VTC Electronics Corp.", "9c5e73": "Calibre UK LTD", "9c5f5a": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", @@ -25330,6 +25818,7 @@ "9c69b4": "IEEE Registration Authority", "9c69d1": "HUAWEI TECHNOLOGIES CO.,LTD", "9c6abe": "QEES ApS.", + "9c6b00": "ASRock Incorporation", "9c6b37": "Sdn. Bhd.", "9c6b72": "Realme Chongqing MobileTelecommunications Corp Ltd", "9c6bf0": "Shenzhen Yipingfang Network Technology Co., Ltd.", @@ -25337,6 +25826,8 @@ "9c6f52": "zte corporation", "9c713a": "HUAWEI TECHNOLOGIES CO.,LTD", "9c7370": "HUAWEI TECHNOLOGIES CO.,LTD", + "9c73b1": "Samsung Electronics Co.,Ltd", + "9c7403": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "9c741a": "HUAWEI TECHNOLOGIES CO.,LTD", "9c746f": "HUAWEI TECHNOLOGIES CO.,LTD", "9c7514": "Wildix srl", @@ -25364,6 +25855,7 @@ "9c8824": "PetroCloud LLC", "9c8888": "Simac Techniek NV", "9c88ad": "Fiberhome Telecommunication Technologies Co.,LTD", + "9c891e": "FireBrick Ltd", "9c8acb": "Juniper Networks", "9c8ba0": "Apple, Inc.", "9c8bf1": "The Warehouse Limited", @@ -25385,6 +25877,7 @@ "9c9567": "Huawei Device Co., Ltd.", "9c956e": "Microchip Technology Inc.", "9c95f8": "SmartDoor Systems, LLC", + "9c9613": "Company Limited", "9c9726": "Technicolor Delivery Technologies Belgium NV", "9c9789": "1MORE", "9c9811": "Guangzhou Sunrise Electronics Development Co., Ltd", @@ -25400,6 +25893,7 @@ "9ca10a": "SCLE SFE", "9ca134": "Nike, Inc.", "9ca2f4": "TP-Link Corporation Limited", + "9ca389": "Nokia", "9ca3a9": "Guangzhou Juan Optical and Electronical Tech Joint Stock Co., Ltd", "9ca3ba": "SAKURA Internet Inc.", "9ca513": "Samsung Electronics Co.,Ltd", @@ -25431,6 +25925,7 @@ "9cbd6e": "DERA Co., Ltd", "9cbd9d": "SkyDisk, Inc.", "9cbee0": "Biosoundlab Co., Ltd.", + "9cbf0d": "Framework Computer LLC", "9cbfcd": "HUAWEI TECHNOLOGIES CO.,LTD", "9cc077": "PrintCounts, LLC", "9cc0d2": "Conductix-Wampfler GmbH", @@ -25475,6 +25970,7 @@ "9ce176": "Cisco Systems, Inc", "9ce1d6": "Junger Audio-Studiotechnik GmbH", "9ce230": "JULONG CO,.LTD.", + "9ce330": "Cisco Meraki", "9ce33f": "Apple, Inc.", "9ce374": "HUAWEI TECHNOLOGIES CO.,LTD", "9ce635": "Nintendo Co., Ltd.", @@ -25498,10 +25994,11 @@ "9cf61a": "Carrier Fire & Security", "9cf67d": "Ricardo Prague, s.r.o.", "9cf6dd": "IEEE Registration Authority", - "9cf86b": "AgiTech Distribution Limited", + "9cf86b": "AgiTech Distribution Limited - Linki", "9cf8db": "shenzhen eyunmei technology co,.ltd", "9cf938": "AREVA NP GmbH", "9cfa3c": "Daeyoung Electronics", + "9cfb77": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "9cfbd5": "vivo Mobile Communication Co., Ltd.", "9cfbf1": "MESOMATIC GmbH & Co.KG", "9cfc01": "Apple, Inc.", @@ -25511,6 +26008,8 @@ "9cfea1": "Fiberhome Telecommunication Technologies Co.,LTD", "9cffbe": "OTSL Inc.", "9cffc2": "AVI Systems GmbH", + "a0024a": "IEEE Registration Authority", + "a002a5": "Intel Corporate", "a002dc": "Amazon Technologies Inc.", "a00363": "Robert Bosch Healthcare GmbH", "a0043e": "Parker Hannifin Manufacturing Germany GmbH & Co. KG", @@ -25551,10 +26050,12 @@ "a02195": "Samsung Electronics Co.,Ltd", "a021b7": "NETGEAR", "a0224e": "IEEE Registration Authority", + "a02252": "Astra Wireless Technology FZ-LLC", "a022de": "vivo Mobile Communication Co., Ltd.", "a0231b": "TeleComp R&D Corp.", "a0239f": "Cisco Systems, Inc", "a024f9": "Chengdu InnovaTest Technology Co., Ltd", + "a025d7": "Aruba, a Hewlett Packard Enterprise Company", "a027b6": "Samsung Electronics Co.,Ltd", "a02833": "IEEE Registration Authority", "a028ed": "HMD Global Oy", @@ -25575,6 +26076,7 @@ "a036bc": "ASUSTek COMPUTER INC.", "a036f0": "Comprehensive Power", "a036fa": "Ettus Research LLC", + "a03768": "Shenzhen E-Life Intelligence Technology Co.,Ltd.", "a038f8": "OURA Health Oy", "a03975": "Leo Bodnar Electronics Ltd", "a039ee": "Sagemcom Broadband SAS", @@ -25637,6 +26139,7 @@ "a0648f": "ASKEY COMPUTER CORP", "a06518": "VNPT TECHNOLOGY", "a06610": "FUJITSU LIMITED", + "a06636": "Intracom SA Telecom Solutions", "a06720": "China Dragon Technology Limited", "a067be": "Sicon srl", "a0681c": "GD Midea Air-Conditioning Equipment Co.,Ltd.", @@ -25663,8 +26166,10 @@ "a0764e": "Espressif Inc.", "a07751": "ASMedia Technology Inc.", "a07771": "Vialis BV", + "a0779e": "Corp.", "a07817": "Apple, Inc.", "a078ba": "Pantech Co., Ltd.", + "a07f8a": "Sagemcom Broadband SAS", "a08069": "Intel Corporate", "a0821f": "Samsung Electronics Co.,Ltd", "a08222": "Qingdao Haier Technology Co.,Ltd", @@ -25737,6 +26242,7 @@ "a0b045": "Halong Mining", "a0b086": "Hirschmann Automation and Control GmbH", "a0b100": "ShenZhen Cando Electronics Co.,Ltd", + "a0b339": "Intel Corporate", "a0b3cc": "Hewlett Packard", "a0b437": "GD Mission Systems", "a0b439": "Cisco Systems, Inc", @@ -25832,7 +26338,7 @@ "a0fe91": "AVAT Automation GmbH", "a0ff0c": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "a0ff22": "SHENZHEN APICAL TECHNOLOGY CO., LTD", - "a0ff70": "Technicolor CH USA Inc.", + "a0ff70": "Vantiva USA LLC", "a400e2": "HUAWEI TECHNOLOGIES CO.,LTD", "a40130": "ABIsystems Co., LTD", "a402b9": "Intel Corporate", @@ -25880,6 +26386,7 @@ "a41ee1": "Taicang T&W Electronics", "a41f72": "Dell Inc.", "a4218a": "Nortel Networks", + "a42249": "Sagemcom Broadband SAS", "a42305": "Open Networking Laboratory", "a424b3": "FlatFrog Laboratories AB", "a424dd": "Cambrionix Ltd", @@ -25906,6 +26413,7 @@ "a434f1": "Texas Instruments", "a43523": "Guangdong Donyan Network Technologies Co.,Ltd.", "a4352d": "TRIZ Networks corp.", + "a436c7": "LG Innotek", "a43831": "RF elements s.r.o.", "a438cc": "Nintendo Co.,Ltd", "a438fc": "Plastic Logic", @@ -25914,6 +26422,7 @@ "a43a69": "Vers Inc", "a43b0e": "Huawei Device Co., Ltd.", "a43bfa": "IEEE Registration Authority", + "a43cd7": "NTX Electronics YangZhou co.,LTD", "a43d78": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "a43e51": "ANOV FRANCE", "a43ea0": "iComm HK LIMITED", @@ -25950,7 +26459,7 @@ "a45602": "fenglian Technology Co.,Ltd.", "a4561b": "MCOT Corporation", "a45630": "Cisco Systems, Inc", - "a456cc": "Technicolor CH USA Inc.", + "a456cc": "Vantiva USA LLC", "a45802": "SHIN-IL TECH", "a4580f": "IEEE Registration Authority", "a45a1c": "smart-electronic GmbH", @@ -25979,6 +26488,7 @@ "a46e79": "DFT System Co.Ltd", "a470d6": "Motorola Mobility LLC, a Lenovo Company", "a47174": "HUAWEI TECHNOLOGIES CO.,LTD", + "a473ab": "Extreme Networks Headquarters", "a475b9": "Samsung Electronics Co.,Ltd", "a47733": "Google, Inc.", "a47758": "Ningbo Freewings Technologies Co.,Ltd", @@ -26023,6 +26533,7 @@ "a49340": "Beijing Supvan Information Technology Co.,Ltd.", "a4934c": "Cisco Systems, Inc", "a49426": "Elgama-Elektronika Ltd.", + "a494dc": "Infinite Clouds", "a49733": "ASKEY COMPUTER CORP", "a4975c": "VTech Telecommunications Ltd.", "a497b1": "CHONGQING FUGUI ELECTRONICS CO.,LTD.", @@ -26050,6 +26561,7 @@ "a4a528": "Sichuan Tianyi Comheart Telecom Co.,LTD", "a4a6a9": "Private", "a4a80f": "Shenzhen Coship Electronics Co., Ltd.", + "a4a930": "Beijing Xiaomi Mobile Software Co., Ltd", "a4aafe": "Huawei Device Co., Ltd.", "a4ac0f": "Huawei Device Co., Ltd.", "a4ad00": "Ragsdale Technology", @@ -26075,6 +26587,7 @@ "a4badb": "Dell Inc.", "a4bb6d": "Dell Inc.", "a4bbaf": "Lime Instruments", + "a4bd7e": "HMD Global Oy", "a4bdc4": "HUAWEI TECHNOLOGIES CO.,LTD", "a4be2b": "HUAWEI TECHNOLOGIES CO.,LTD", "a4be61": "EutroVision System, Inc.", @@ -26094,10 +26607,11 @@ "a4c6f0": "Apple, Inc.", "a4c74b": "Huawei Device Co., Ltd.", "a4c7de": "Co.,Ltd.", - "a4c7f6": "Extreme Networks, Inc.", + "a4c7f6": "Extreme Networks Headquarters", "a4c939": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "a4caa0": "HUAWEI TECHNOLOGIES CO.,LTD", "a4cc32": "Inficomm Co., Ltd", + "a4ccb3": "Xiaomi Communications Co Ltd", "a4ccb9": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", "a4cd23": "Shenzhenshi Xinzhongxin Co., Ltd", "a4ceda": "Arcadyan Corporation", @@ -26109,6 +26623,7 @@ "a4d18f": "Shenzhen Skyee Optical Fiber Communication Technology Ltd. ", "a4d1d1": "ECOtality North America", "a4d1d2": "Apple, Inc.", + "a4d23e": "Apple, Inc.", "a4d3b5": "GLITEL Stropkov, s.r.o.", "a4d4b2": "Shenzhen MeiG Smart Technology Co.,Ltd", "a4d578": "Texas Instruments", @@ -26147,7 +26662,7 @@ "a4e975": "Apple, Inc.", "a4e991": "SISTEMAS AUDIOVISUALES ITELSIS S.L.", "a4e9a3": "Honest Technology Co., Ltd", - "a4ea8e": "Extreme Networks, Inc.", + "a4ea8e": "Extreme Networks Headquarters", "a4ebd3": "Samsung Electronics Co.,Ltd", "a4ed43": "IEEE Registration Authority", "a4ed4e": "ARRIS Group, Inc.", @@ -26171,12 +26686,14 @@ "a4fc77": "Mega Well Limited", "a4fcce": "Security Expert Ltd.", "a4ff95": "Nokia", + "a800e3": "Starkey Labs Inc.", "a8016d": "Aiwa Corporation", "a80180": "IMAGO Technologies GmbH", "a802db": "zte corporation", "a8032a": "Espressif Inc.", "a80577": "Netlist, Inc.", "a80600": "Samsung Electronics Co.,Ltd", + "a80bfb": "Ruckus Wireless", "a80c03": "Florawise", "a80c0d": "Cisco Systems, Inc", "a80c63": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -26208,10 +26725,12 @@ "a825eb": "Co.,Ltd.", "a826d9": "HTC Corporation", "a8294c": "Precision Optical Transceivers, Inc.", + "a82ad6": "Arthrex Inc.", "a82bb5": "Edgecore Networks Corporation", "a82bb9": "Samsung Electronics Co.,Ltd", "a82bcd": "HUAWEI TECHNOLOGIES CO.,LTD", "a82bd6": "Shina System Co., Ltd", + "a82c3e": "Shenzhen Cultraview Digital Technology Co., Ltd", "a8301c": "Qingdao Intelligent&Precise Electronics Co.,Ltd.", "a830ad": "WEIFANG GOERTEK ELECTRONICS CO.,LTD", "a830bc": "Samsung Electronics Co.,Ltd", @@ -26227,15 +26746,18 @@ "a83b76": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "a83ccb": "ROSSMA", "a83e0e": "HMD Global Oy", + "a83ed3": "HUAWEI TECHNOLOGIES CO.,LTD", "a83fa1": "IEEE Registration Authority", "a8400b": "Visteon Corporation", "a84025": "Oxide Computer Company", "a84041": "Dragino Technology Co., Limited", "a8407d": "GD Midea Air-Conditioning Equipment Co.,Ltd.", "a84122": "Information Technology Co.,Ltd.", + "a842a1": "TP-Link Corporation Limited", "a842a7": "Jiangsu Huitong Group Co.,Ltd.", "a842e3": "Espressif Inc.", "a84397": "Innogrit Corporation", + "a843a4": "China Dragon Technology Limited", "a84481": "Nokia Corporation", "a845cd": "Siselectron Technology LTD.", "a845e9": "Firich Enterprises CO., LTD.", @@ -26260,6 +26782,7 @@ "a8556a": "3S System Technology Inc.", "a8574e": "TP-LINK TECHNOLOGIES CO.,LTD.", "a85840": "Co.,Ltd.", + "a8584e": "PK VEGA", "a8587c": "Shoogee GmbH & Co. KG", "a85ae0": "Huawei Device Co., Ltd.", "a85af3": "Shanghai Siflower Communication Technology Co., Ltd", @@ -26273,6 +26796,7 @@ "a85c2c": "Apple, Inc.", "a85e45": "ASUSTek COMPUTER INC.", "a85ee4": "12Sided Technology, LLC", + "a85ef2": "TECNO MOBILE LIMITED", "a860b6": "Apple, Inc.", "a8610a": "ARDUINO AG", "a861aa": "Cloudview Limited", @@ -26319,6 +26843,7 @@ "a8817e": "Apple, Inc.", "a88195": "Samsung Electronics Co.,Ltd", "a881f1": "BMEYE B.V.", + "a881fe": "Luxul Tech Co., Ltd", "a88200": "Hisense Electric Co.,Ltd", "a8827f": "CO.,Ltd", "a885d7": "Sangfor Technologies Inc.", @@ -26329,6 +26854,7 @@ "a88808": "Apple, Inc.", "a8881f": "PRIVATE LIMITED", "a88940": "Huawei Device Co., Ltd.", + "a88b28": "SHENZHEN DIYANG SMART TECHNOLOGY CO.,LTD.", "a88c3e": "Microsoft Corporation", "a88cee": "MicroMade Galka i Drozdz sp.j.", "a88d7b": "SunDroid Global limited.", @@ -26337,6 +26863,7 @@ "a89008": "Beijing Yuecheng Technology Co. Ltd.", "a89042": "Beijing Wanwei Intelligent Technology Co., Ltd.", "a8913d": "Apple, Inc.", + "a89162": "Sophos Ltd", "a8934a": "CHONGQING FUGUI ELECTRONICS CO.,LTD.", "a89352": "SHANGHAI ZHONGMI COMMUNICATION TECHNOLOGY CO.,LTD", "a893e6": "JIANGXI JINGGANGSHAN CKING COMMUNICATION TECHNOLOGY CO.,LTD", @@ -26349,10 +26876,12 @@ "a898c6": "Shinbo Co., Ltd.", "a8995c": "aizo ag", "a89969": "Dell Inc.", + "a899ad": "Chaoyue Technology Co., Ltd.", "a899dc": "i-TOP DESING TECHNOLOGY CO.,LTD", "a89a93": "Sagemcom Broadband SAS", "a89ad7": "Nokia", "a89b10": "inMotion Ltd.", + "a89c78": "Apple, Inc.", "a89ca4": "Furrion Limited", "a89ced": "Xiaomi Communications Co Ltd", "a89d21": "Cisco Systems, Inc", @@ -26379,7 +26908,9 @@ "a8b271": "HUAWEI TECHNOLOGIES CO.,LTD", "a8b2da": "FUJITSU LIMITED", "a8b456": "Cisco Systems, Inc", + "a8b483": "Shenzhen SuperElectron Technology Co.,Ltd.", "a8b57c": "Roku, Inc", + "a8b8e0": "Changwang Technology inc.", "a8b9b3": "ESSYS", "a8bb50": "WiZ IoT Company Limited", "a8bbcf": "Apple, Inc.", @@ -26395,7 +26926,7 @@ "a8c252": "Huawei Device Co., Ltd.", "a8c266": "HUMAX Co., Ltd.", "a8c56f": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", - "a8c647": "Extreme Networks, Inc.", + "a8c647": "Extreme Networks Headquarters", "a8c83a": "HUAWEI TECHNOLOGIES CO.,LTD", "a8c87f": "Roqos, Inc.", "a8c98a": "New H3C Technologies Co., Ltd", @@ -26425,7 +26956,7 @@ "a8e2c1": "Texas Instruments", "a8e2c3": "Shenzhen YOUHUA Technology Co., Ltd", "a8e3ee": "Sony Interactive Entertainment Inc.", - "a8e539": "Moimstone Co.,Ltd", + "a8e539": "Nurivoice Co., Ltd", "a8e544": "HUAWEI TECHNOLOGIES CO.,LTD", "a8e552": "JUWEL Aquarium AG & Co. KG", "a8e621": "Amazon Technologies Inc.", @@ -26444,12 +26975,14 @@ "a8f470": "Fujian Newland Communication Science Technologies Co.,Ltd.", "a8f5ac": "HUAWEI TECHNOLOGIES CO.,LTD", "a8f5dd": "ARRIS Group, Inc.", + "a8f5e1": "Shenzhen Shokz Co., Ltd.", "a8f766": "ITE Tech Inc", "a8f7d9": "Mist Systems, Inc.", "a8f7e0": "PLANET Technology Corporation", "a8f8c9": "LTD.", "a8f94b": "Eltex Enterprise Ltd.", "a8fad8": "Apple, Inc.", + "a8fb40": "Nokia Solutions and Networks GmbH & Co. KG", "a8fb70": "WiseSec L.t.d", "a8fcb7": "Consolidated Resource Imaging", "a8fe9d": "Apple, Inc.", @@ -26461,6 +26994,7 @@ "aa0004": "DIGITAL EQUIPMENT CORPORATION", "ac007a": "Apple, Inc.", "ac00d0": "zte corporation", + "ac00f9": "Sdn. Bhd.", "ac0142": "Uriel Technologies SIA", "ac02ca": "HI Solutions, Inc.", "ac02cf": "RW Tecnologia Industria e Comercio Ltda", @@ -26534,6 +27068,7 @@ "ac3a67": "Cisco Systems, Inc", "ac3a7a": "Roku, Inc.", "ac3b77": "Sagemcom Broadband SAS", + "ac3b96": "LTD.", "ac3c0b": "Apple, Inc.", "ac3c8e": "Flextronics Computing(Suzhou)Co.,Ltd.", "ac3cb4": "Nilan A/S", @@ -26544,6 +27079,7 @@ "ac3fa4": "TAIYO YUDEN CO.,LTD", "ac40ea": "C&T Solution Inc. ", "ac4122": "Eclipse Electronic Systems Inc.", + "ac416a": "Amazon Technologies Inc.", "ac4228": "Parta Networks", "ac4330": "Versa Networks", "ac44f2": "YAMAHA CORPORATION", @@ -26557,8 +27093,9 @@ "ac4afe": "Hisense Broadband Multimedia Technology Co.,Ltd.", "ac4b1e": "Integri-Sys.Com LLC", "ac4bc8": "Juniper Networks", - "ac4ca5": "Technicolor CH USA Inc.", + "ac4ca5": "Vantiva USA LLC", "ac4d16": "Texas Instruments", + "ac4dd9": "Extreme Networks Headquarters", "ac4e2e": "Shenzhen JingHanDa Electronics Co.Ltd", "ac4e65": "Fiberhome Telecommunication Technologies Co.,LTD", "ac4e91": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -26720,6 +27257,7 @@ "acbe75": "Ufine Technologies Co.,Ltd.", "acbeb6": "Visualedge Technology Co., Ltd.", "acbf71": "Bose Corporation", + "acc048": "Co., Ltd", "acc1ee": "Xiaomi Communications Co Ltd", "acc25d": "Fiberhome Telecommunication Technologies Co.,LTD", "acc2ec": "CLT INT'L IND. CORP.", @@ -26756,7 +27294,9 @@ "acd564": "CHONGQING FUGUI ELECTRONICS CO.,LTD.", "acd618": "Co., Ltd", "acd657": "Shaanxi GuoLian Digital TV Technology Co.,Ltd.", + "acd75b": "Sagemcom Broadband SAS", "acd829": "Co., Ltd.", + "acd8a7": "BELLDESIGN Inc.", "acd9d6": "tci GmbH", "acdb48": "ARRIS Group, Inc.", "acdbda": "Shenzhen Geniatech Inc, Ltd", @@ -26786,6 +27326,7 @@ "aceb51": "Universal Electronics, Inc.", "acec80": "ARRIS Group, Inc.", "acec85": "eero inc.", + "aced32": "Extreme Networks Headquarters", "aced5c": "Intel Corporate", "acee3b": "6harmonics Inc", "acee64": "Shenzhen SuperElectron Technology Co.,Ltd.", @@ -26818,15 +27359,17 @@ "b009d3": "Avizia", "b009da": "Ring Solutions", "b00ad5": "zte corporation", + "b00c9d": "Quectel Wireless Solutions Co.,Ltd.", "b00cd1": "Hewlett Packard", "b01041": "Hon Hai Precision Ind. Co.,Ltd.", + "b0104b": "Fiberhome Telecommunication Technologies Co.,LTD", "b010a0": "Texas Instruments", "b01203": "Dynamics Hong Kong Limited", "b01266": "Futaba-Kikaku", "b01408": "LIGHTSPEED INTERNATIONAL CO.", "b01656": "HUAWEI TECHNOLOGIES CO.,LTD", "b01743": "EDISON GLOBAL CIRCUITS LLC", - "b01886": "SmarDTV", + "b01886": "SmarDTV Corporation", "b019c6": "Apple, Inc.", "b01b4b": "Invisible Fun Studio Limited", "b01b7c": "Ontrol A.S.", @@ -26845,7 +27388,7 @@ "b025aa": "Private", "b02628": "Broadcom Limited", "b02680": "Cisco Systems, Inc", - "b027cf": "Extreme Networks, Inc.", + "b027cf": "Extreme Networks Headquarters", "b0285b": "JUHUA Technology Inc.", "b02a1f": "Wingtech Group (HongKong)Limited", "b02a43": "Google, Inc.", @@ -26861,7 +27404,7 @@ "b03795": "LG Electronics", "b03829": "Siliconware Precision Industries Co., Ltd.", "b03850": "Nanjing CAS-ZDC IOT SYSTEM CO.,LTD", - "b03893": "Onda TLC GmbH", + "b03893": "Onda TLC Italia S.r.l.", "b038e2": "Wanan Hongsheng Electronic Co.Ltd", "b03956": "NETGEAR", "b03ace": "Huawei Device Co., Ltd.", @@ -26890,11 +27433,13 @@ "b0495f": "OMRON HEALTHCARE Co., Ltd.", "b04a39": "Beijing Roborock Technology Co., Ltd.", "b04a6a": "Samsung Electronics Co.,Ltd", + "b04ab4": "Motorola Mobility LLC, a Lenovo Company", "b04b68": "NAKAYO Inc", "b04bbf": "PT HAN SUNG ELECTORONICS INDONESIA", "b04c05": "Fresenius Medical Care Deutschland GmbH", "b04e26": "TP-LINK TECHNOLOGIES CO.,LTD.", "b04f13": "Dell Inc.", + "b04fa6": "DongGuan Ramaxel Memory Technology", "b04fc3": "Shenzhen NVC Cloud Technology Co., Ltd.", "b050bc": "SHENZHEN BASICOM ELECTRONIC CO.,LTD.", "b0518e": "Holl technology CO.Ltd.", @@ -26907,6 +27452,7 @@ "b05ada": "Hewlett Packard", "b05b1f": "THERMO FISHER SCIENTIFIC S.P.A.", "b05b67": "HUAWEI TECHNOLOGIES CO.,LTD", + "b05b99": "Sagemcom Broadband SAS", "b05c16": "Fiberhome Telecommunication Technologies Co.,LTD", "b05cda": "HP Inc.", "b05ce5": "Nokia Corporation", @@ -26976,6 +27522,7 @@ "b09575": "TP-LINK TECHNOLOGIES CO.,LTD.", "b0958e": "TP-LINK TECHNOLOGIES CO.,LTD.", "b0966c": "Lanbowan Technology Ltd.", + "b096ea": "GD Midea Air-Conditioning Equipment Co.,Ltd.", "b09738": "Shenzhen Skyworth Digital Technology CO., Ltd", "b0973a": "E-Fuel Corporation", "b0982b": "Sagemcom Broadband SAS", @@ -26989,6 +27536,7 @@ "b0a10a": "Pivotal Systems Corporation", "b0a2e7": "Shenzhen TINNO Mobile Technology Corp.", "b0a37e": "QING DAO HAIER TELECOM CO.,LTD.", + "b0a3f2": "Huaqin Technology Co. LTD", "b0a454": "Tripwire Inc.", "b0a460": "Intel Corporate", "b0a4f0": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -27034,7 +27582,7 @@ "b0c128": "Adler ELREHA GmbH", "b0c19e": "zte corporation", "b0c205": "BIONIME", - "b0c287": "Technicolor CH USA Inc.", + "b0c287": "Vantiva USA LLC", "b0c387": "GOEFER, Inc.", "b0c46c": "Senseit", "b0c4e7": "Samsung Electronics Co.,Ltd", @@ -27045,6 +27593,7 @@ "b0c69a": "Juniper Networks", "b0c745": "BUFFALO.INC", "b0c787": "HUAWEI TECHNOLOGIES CO.,LTD", + "b0c7de": "Silicon Laboratories", "b0c83f": "Jiangsu Cynray IOT Co., Ltd.", "b0c8ad": "People Power Company", "b0c952": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", @@ -27052,6 +27601,7 @@ "b0ca68": "Apple, Inc.", "b0ccfe": "Huawei Device Co., Ltd.", "b0ce18": "Zhejiang shenghui lighting co.,Ltd", + "b0cf0e": "Mellanox Technologies, Inc.", "b0cf4d": "MI-Zone Technology Ireland", "b0cfcb": "Amazon Technologies Inc.", "b0d09c": "Samsung Electronics Co.,Ltd", @@ -27062,7 +27612,7 @@ "b0d5cc": "Texas Instruments", "b0d7c5": "Logipix Ltd", "b0d7cc": "Tridonic GmbH & Co KG", - "b0d888": "Panasonic Corporation Automotive", + "b0d888": "Panasonic Automotive Systems Co.,Ltd", "b0da00": "CERA ELECTRONIQUE", "b0daf9": "ARRIS Group, Inc.", "b0dcef": "Intel Corporate", @@ -27096,6 +27646,7 @@ "b0ece1": "Private", "b0ee45": "AzureWave Technology Inc.", "b0ee7b": "Roku, Inc", + "b0f00c": "Dongguan Wecxw CO.,Ltd.", "b0f1a3": "Technology Co., Ltd. ", "b0f1bc": "Dhemax Ingenieros Ltda", "b0f1d8": "Apple, Inc.", @@ -27106,6 +27657,7 @@ "b0f893": "Shanghai MXCHIP Information Technology Co., Ltd.", "b0f963": "Hangzhou H3C Technologies Co., Limited", "b0faeb": "Cisco Systems, Inc", + "b0fb15": "Laird Connectivity", "b0fbdd": "Shenzhen SuperElectron Technology Co.,Ltd.", "b0fc0d": "Amazon Technologies Inc.", "b0fc36": "CyberTAN Technology Inc.", @@ -27113,6 +27665,7 @@ "b0fd0b": "IEEE Registration Authority", "b0febd": "Private", "b0fee5": "Huawei Device Co., Ltd.", + "b0ff72": "IEEE Registration Authority", "b40016": "INGENICO TERMINALS SAS", "b4009c": "CableWorld Ltd.", "b40142": "GCI Science & Technology Co.,LTD", @@ -27121,10 +27674,12 @@ "b40421": "zte corporation", "b4055d": "Inspur Electronic Information Industry Co.,Ltd.", "b40566": "SP Best Corporation Co., LTD.", + "b405a1": "Xiaomi Communications Co Ltd", "b407f9": "SAMSUNG ELECTRO MECHANICS CO., LTD.", "b40832": "TC Communications", "b40931": "HUAWEI TECHNOLOGIES CO.,LTD", "b40ac6": "DEXON Systems Ltd.", + "b40ad8": "Sony Interactive Entertainment Inc.", "b40b1d": "Samsung Electronics Co.,Ltd", "b40b44": "Smartisan Technology Co., Ltd.", "b40b78": "Brusa Elektronik AG", @@ -27162,11 +27717,11 @@ "b42875": "Futecho Solutions Private Limited", "b428f1": "E-Prime Co., Ltd.", "b4293d": "Shenzhen Urovo Technology Co.,Ltd.", - "b42a0e": "Technicolor CH USA Inc.", + "b42a0e": "Vantiva USA LLC", "b42a39": "ORBIT MERRET, spol. s r. o.", "b42c92": "Zhejiang Weirong Electronic Co., Ltd", "b42cbe": "Direct Payment Solutions Limited", - "b42d56": "Extreme Networks, Inc.", + "b42d56": "Extreme Networks Headquarters", "b42e99": "GIGA-BYTE TECHNOLOGY CO.,LTD.", "b42ef8": "Eline Technology co.Ltd", "b43052": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -27193,6 +27748,7 @@ "b43db2": "Degreane Horizon", "b43e3b": "Viableware, Inc", "b440a4": "Apple, Inc.", + "b440dc": "Samsung Electronics Co.,Ltd", "b4417a": "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "b4430d": "Broadlink Pty Ltd", "b44326": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -27204,6 +27760,7 @@ "b44bd6": "IEEE Registration Authority", "b44c3b": "Zhejiang Dahua Technology Co., Ltd.", "b44cc2": "NR ELECTRIC CO., LTD", + "b44d43": "IEEE Registration Authority", "b44f96": "Zhejiang Xinzailing Technology co., ltd", "b45062": "EmBestor Technology Inc.", "b451f9": "NB Software", @@ -27213,6 +27770,7 @@ "b452a9": "Texas Instruments", "b45459": "Information Technology Co., Ltd.", "b45570": "Borea", + "b4565d": "Corp.", "b456b9": "Teraspek Technologies Co.,Ltd", "b456e3": "Apple, Inc.", "b456fa": "IOPSYS Software Solutions", @@ -27344,13 +27902,14 @@ "b4c0f5": "Shenzhen TINNO Mobile Technology Corp.", "b4c170": "Co., Ltd", "b4c26a": "Garmin International", + "b4c2e0": "Co., Ltd.", "b4c2f7": "Huawei Device Co., Ltd.", "b4c44e": "VXL eTech Pvt Ltd", "b4c476": "Wuhan Maritime Communication Research Institute", "b4c4fc": "Xiaomi Communications Co Ltd", "b4c62e": "Molex CMS", "b4c6f8": "Axilspot Communication", - "b4c799": "Extreme Networks, Inc.", + "b4c799": "Extreme Networks Headquarters", "b4c810": "Umpi srl", "b4c9b9": "Sichuan AI-Link Technology Co., Ltd.", "b4cb57": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", @@ -27369,15 +27928,18 @@ "b4d286": "Telechips, Inc.", "b4d5bd": "Intel Corporate", "b4d64e": "Caldero Limited", + "b4d7db": "New H3C Technologies Co., Ltd", "b4d8a9": "BetterBots", "b4d8de": "iota Computing, Inc.", "b4db91": "CELESTICA INC.", "b4dc09": "Guangzhou Dawei Communication Co.,Ltd", "b4dd15": "ControlThings Oy Ab", "b4ddd0": "Continental Automotive Hungary Kft", + "b4dde0": "Shanghai Amphenol Airwave Communication Electronics Co.,Ltd.", "b4de31": "Cisco Systems, Inc", "b4dedf": "zte corporation", "b4df3b": "Chromlech", + "b4df91": "Cisco Meraki", "b4dffa": "Litemax Electronics Inc.", "b4e01d": "CONCEPTION ELECTRONIQUE", "b4e0cd": "Fusion-io, Inc", @@ -27452,6 +28014,7 @@ "b8186f": "ORIENTAL MOTOR CO., LTD.", "b81904": "Nokia Shanghai Bell Co., Ltd.", "b81999": "Nesys", + "b81ea4": "Liteon Technology Corporation", "b81f5e": "Apption Labs Limited", "b8208e": "Panasonic Connect Co., Ltd.", "b820e7": "Guangzhou Horizontal Information & Network Integration Co. Ltd", @@ -27492,6 +28055,7 @@ "b83bcc": "Xiaomi Communications Co Ltd", "b83c28": "Apple, Inc.", "b83d4e": "Shenzhen Cultraview Digital Technology Co.,Ltd Shanghai Branch", + "b83df6": "Texas Instruments", "b83dfb": "Co., Ltd.", "b83e59": "Roku, Inc.", "b83fd2": "Mellanox Technologies, Inc.", @@ -27505,11 +28069,13 @@ "b847c6": "SanJet Technology Corp.", "b848aa": "EM Microelectronic", "b8496d": "Apple, Inc.", + "b84c87": "IEEE Registration Authority", "b84d43": "HUNAN FN-LINK TECHNOLOGY LIMITED", "b84dee": "Hisense broadband multimedia technology Co.,Ltd", "b84fd5": "Microsoft Corporation", - "b85001": "Extreme Networks, Inc.", + "b85001": "Extreme Networks Headquarters", "b850d8": "Beijing Xiaomi Mobile Software Co., Ltd", + "b851a9": "Nokia", "b853ac": "Apple, Inc.", "b85510": "Ltd.", "b85600": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -27526,10 +28092,11 @@ "b85cee": "Co., Ltd", "b85d0a": "Apple, Inc.", "b85dc3": "HUAWEI TECHNOLOGIES CO.,LTD", - "b85e71": "Technicolor CH USA Inc.", + "b85e71": "Vantiva USA LLC", "b85e7b": "Samsung Electronics Co.,Ltd", "b85f98": "Amazon Technologies Inc.", "b85fb0": "HUAWEI TECHNOLOGIES CO.,LTD", + "b86061": "China Mobile Group Device Co.,Ltd.", "b86091": "Onnet Technologies and Innovations LLC", "b86142": "Beijing Tricolor Technology Co., Ltd", "b8616f": "Accton Technology Corp", @@ -27545,6 +28112,7 @@ "b86a97": "Edgecore Networks Corporation", "b86af1": "Sagemcom Broadband SAS", "b86b23": "Toshiba", + "b86ce0": "Hewlett Packard Enterprise", "b86ce8": "Samsung Electronics Co.,Ltd", "b870f4": "CO., LTD. ", "b87424": "Viessmann Elektronik GmbH", @@ -27558,9 +28126,10 @@ "b8797e": "Limited", "b87ac9": "Siemens Ltd.", "b87bc5": "Apple, Inc.", + "b87bd4": "Google, Inc.", "b87c6f": "Management Ltd.", "b87cd0": "Huawei Device Co., Ltd.", - "b87cf2": "Extreme Networks, Inc.", + "b87cf2": "Extreme Networks Headquarters", "b87ee5": "Intelbras", "b88035": "Shenzhen Qihu Intelligent Technology Company Limited", "b8804f": "Texas Instruments", @@ -27621,9 +28190,11 @@ "b8a386": "D-Link International", "b8a3e0": "BenRui Technology Co.,Ltd", "b8a44f": "Axis Communications AB", - "b8a535": "Technicolor CH USA Inc.", + "b8a535": "Vantiva USA LLC", "b8a58d": "Axe Group Holdings Limited", + "b8a75e": "Wuxi Xinjie Electric Co.,Ltd", "b8a8af": "Logic S.p.A.", + "b8ab61": "Cisco Meraki", "b8ab62": "Hui Zhou Gaoshengda Technology Co.,LTD", "b8ac6f": "Dell Inc.", "b8ad3e": "BLUECOM", @@ -27641,6 +28212,7 @@ "b8b42e": "Gionee Communication Equipment Co,Ltd.ShenZhen", "b8b77d": "Guangdong Transtek Medical Electronics CO.,Ltd", "b8b7d7": "2GIG Technologies", + "b8b7db": "GOIP Global Services Pvt. Ltd.", "b8b7f1": "Wistron Neweb Corporation", "b8b81e": "Intel Corporate", "b8b94e": "Shenzhen iBaby Labs, Inc.", @@ -27655,6 +28227,7 @@ "b8bebf": "Cisco Systems, Inc", "b8bef4": "devolo AG", "b8bf83": "Intel Corporate", + "b8c065": "Universal Electronics, Inc.", "b8c111": "Apple, Inc.", "b8c1a2": "Dragon Path Technologies Co., Limited", "b8c227": "PSTec", @@ -27722,6 +28295,7 @@ "b8f12a": "Apple, Inc.", "b8f255": "Universal Electronics, Inc.", "b8f317": "iSun Smasher Communications Private Limited", + "b8f44f": "u-blox AG", "b8f4d0": "Herrmann Ultraschalltechnik GmbH & Co. Kg", "b8f5e7": "WayTools, LLC", "b8f653": "Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd", @@ -27734,6 +28308,7 @@ "b8f8be": "BLUECOM", "b8f934": "Sony Corporation", "b8fbaf": "Xiamen IPRT Technology CO.,LTD", + "b8fc28": "Valeo Vision Systems", "b8fc9a": "Limited", "b8fd32": "Zhejiang ROICX Microelectronics", "b8ff61": "Apple, Inc.", @@ -27750,10 +28325,14 @@ "bc091b": "Intel Corporate", "bc0963": "Apple, Inc.", "bc0da5": "Texas Instruments", + "bc0eab": "Samsung Electronics Co.,Ltd", "bc0f2b": "FORTUNE TECHGROUP CO.,LTD", "bc0f64": "Intel Corporate", "bc0f9a": "D-Link International", "bc0fa7": "Ouster", + "bc0ff3": "HP Inc.", + "bc0ffe": "Juniper Networks", + "bc102f": "SJI Industry Company", "bc107b": "Samsung Electronics Co.,Ltd", "bc125e": "Beijing WisVideo INC.", "bc13a8": "Shenzhen YOUHUA Technology Co., Ltd", @@ -27767,6 +28346,7 @@ "bc1695": "zte corporation", "bc16f5": "Cisco Systems, Inc", "bc17b8": "Intel Corporate", + "bc1896": "HUAWEI TECHNOLOGIES CO.,LTD", "bc1a67": "YF Technology Co., Ltd", "bc1ae4": "Huawei Device Co., Ltd.", "bc1c81": "Sichuan iLink Technology Co., Ltd.", @@ -27778,6 +28358,7 @@ "bc2247": "New H3C Technologies Co., Ltd", "bc22fb": "RF Industries", "bc2392": "BYD Precision Manufacture Company Ltd.", + "bc2411": "Proxmox Server Solutions GmbH", "bc25e0": "HUAWEI TECHNOLOGIES CO.,LTD", "bc25f0": "3D Display Technologies Co., Ltd.", "bc261d": "HONG KONG TECON TECHNOLOGY", @@ -27800,6 +28381,7 @@ "bc307d": "Wistron Neweb Corporation", "bc307e": "Wistron Neweb Corporation", "bc30d9": "Arcadyan Corporation", + "bc3198": "IEEE Registration Authority", "bc325f": "Zhejiang Dahua Technology Co., Ltd.", "bc32b2": "Samsung Electronics Co.,Ltd", "bc3329": "Sony Interactive Entertainment Inc.", @@ -27851,6 +28433,7 @@ "bc5729": "Shenzhen KKM Co., Ltd", "bc5a56": "Cisco Systems, Inc", "bc5bd5": "ARRIS Group, Inc.", + "bc5c17": "Qingdao Intelligent&Precise Electronics Co.,Ltd.", "bc5c4c": "ELECOM CO.,LTD.", "bc5da3": "Sichuan Tianyi Comheart Telecom Co.,LTD", "bc5e33": "Hangzhou Hikvision Digital Technology Co.,Ltd.", @@ -27912,7 +28495,9 @@ "bc8385": "Microsoft Corporation", "bc83a7": "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "bc851f": "Samsung Electronics Co.,Ltd", + "bc8529": "Jiangxi Remote lntelligence Technology Co.,Ltd", "bc8556": "Hon Hai Precision Ind. Co.,Ltd.", + "bc87fa": "Bose Corporation", "bc8893": "VILLBAU Ltd.", "bc88c3": "Ningbo Dooya Mechanic & Electronic Technology Co., Ltd", "bc89a7": "Apple, Inc.", @@ -27920,12 +28505,14 @@ "bc8ae8": "QING DAO HAIER TELECOM CO.,LTD.", "bc8b55": "NPP ELIKS America Inc. DBA T&M Atlantic", "bc8d0e": "Nokia", + "bc8d1f": "Cisco Systems, Inc", "bc903a": "Robert Bosch GmbH", "bc91b5": "Infinix mobility limited", "bc926b": "Apple, Inc.", "bc9307": "Samsung Electronics Co.,Ltd", "bc9325": "Ningbo Joyson Preh Car Connect Co.,Ltd. ", "bc9680": "SHENZHEN GONGJIN ELECTRONICS CO.,LT", + "bc96e5": "SERCOMM PHILIPPINES INC", "bc9740": "IEEE Registration Authority", "bc9789": "Huawei Device Co., Ltd.", "bc97e1": "Broadcom Limited", @@ -27936,7 +28523,7 @@ "bc99bc": "FonSee Technology Inc.", "bc9a53": "Huawei Device Co., Ltd.", "bc9b5e": "Hangzhou Hikvision Digital Technology Co.,Ltd.", - "bc9b68": "Technicolor CH USA Inc.", + "bc9b68": "Vantiva USA LLC", "bc9c31": "HUAWEI TECHNOLOGIES CO.,LTD", "bc9cc5": "Beijing Huafei Technology Co., Ltd.", "bc9d42": "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.", @@ -27969,6 +28556,7 @@ "bcb1f3": "Samsung Electronics Co.,Ltd", "bcb22b": "EM-Tech", "bcb308": "HONGKONG RAGENTEK COMMUNICATION TECHNOLOGY CO.,LIMITED", + "bcb6fb": "P4Q ELECTRONICS, S.L.", "bcb852": "Cybera, Inc.", "bcb863": "Apple, Inc.", "bcb923": "Alta Networks", @@ -28037,8 +28625,9 @@ "bcf1f2": "Cisco Systems, Inc", "bcf292": "PLANTRONICS, INC.", "bcf2af": "devolo AG", - "bcf310": "Extreme Networks, Inc.", + "bcf310": "Extreme Networks Headquarters", "bcf45f": "zte corporation", + "bcf499": "Rockwell Automation", "bcf4d4": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "bcf61c": "Geomodeling Wuxi Technology Co. Ltd.", "bcf685": "D-Link International", @@ -28048,6 +28637,7 @@ "bcf9f2": "TEKO", "bcfab8": "Guangzhou Shiyuan Electronic Technology Company Limited", "bcfaeb": "Cisco Systems, Inc", + "bcfd0c": "Shenzhen Phaten Tech. LTD", "bcfe8c": "Altronic, LLC", "bcfed9": "Apple, Inc.", "bcff21": "Smart Code(shenzhen)Technology Co.,Ltd", @@ -28081,6 +28671,7 @@ "c01e9b": "Pixavi AS", "c0210d": "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.", "c02250": "Koss Corporation", + "c022f1": "IEEE Registration Authority", "c0238d": "Samsung Electronics Co.,Ltd", "c02506": "AVM GmbH", "c0252f": "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", @@ -28140,6 +28731,7 @@ "c048e6": "Samsung Electronics Co.,Ltd", "c048fb": "Shenzhen JingHanDa Electronics Co.Ltd", "c0493d": "MAITRISE TECHNOLOGIQUE", + "c04943": "zte corporation", "c049ef": "Espressif Inc.", "c04a00": "TP-LINK TECHNOLOGIES CO.,LTD.", "c04a09": "Zhejiang Everbright Communication Equip. Co,. Ltd", @@ -28147,6 +28739,7 @@ "c04df7": "SERELEC", "c04e30": "Espressif Inc.", "c04e8a": "HUAWEI TECHNOLOGIES CO.,LTD", + "c05064": "SHENNAN CIRCUITS CO.,LTD", "c0515c": "zte corporation", "c0517e": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "c05336": "Beijing National Railway Research & Design Institute of Signal & Communication Group Co..Ltd.", @@ -28154,6 +28747,8 @@ "c056e3": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "c057bc": "Avaya Inc", "c058a7": "Pico Systems Co., Ltd.", + "c05b44": "Beijing Xiaomi Mobile Software Co., Ltd", + "c05d39": "Jiangsu Huitong Group Co.,Ltd.", "c05e6f": "V. Stonkaus firma Kodinis Raktas", "c05e79": "SHENZHEN HUAXUN ARK TECHNOLOGIES CO.,LTD", "c06118": "TP-LINK TECHNOLOGIES CO.,LTD.", @@ -28181,6 +28776,7 @@ "c07878": "FLEXTRONICS MANUFACTURING(ZHUHAI)CO.,LTD.", "c07982": "TCL King Electrical Appliances(Huizhou)Co.,Ltd", "c07bbc": "Cisco Systems, Inc", + "c07c90": "Shenzhen YOUHUA Technology Co., Ltd", "c07cd1": "PEGATRON CORPORATION", "c07e40": "SHENZHEN XDK COMMUNICATION EQUIPMENT CO.,LTD", "c08135": "Ningbo Forfan technology Co., LTD", @@ -28274,6 +28870,7 @@ "c0c170": "Shenzhen SuperElectron Technology Co.,Ltd.", "c0c1c0": "Cisco-Linksys, LLC", "c0c3b6": "Automatic Systems", + "c0c4f9": "Qisda Corporation", "c0c520": "Ruckus Wireless", "c0c522": "ARRIS Group, Inc.", "c0c569": "SHANGHAI LYNUC CNC TECHNOLOGY CO.,LTD", @@ -28321,7 +28918,7 @@ "c0e54e": "ARIES Embedded GmbH", "c0e7bf": "Sichuan AI-Link Technology Co., Ltd.", "c0e862": "Apple, Inc.", - "c0e911": "Private", + "c0e911": "RealNetworks", "c0eac3": "IEEE Registration Authority", "c0eae4": "Sonicwall", "c0ede5": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", @@ -28378,9 +28975,10 @@ "c41234": "Apple, Inc.", "c412ec": "HUAWEI TECHNOLOGIES CO.,LTD", "c412f5": "D-Link International", - "c413e2": "Extreme Networks, Inc.", + "c413e2": "Extreme Networks Headquarters", "c41411": "Apple, Inc.", "c4143c": "Cisco Systems, Inc", + "c414a2": "Cisco Meraki", "c41688": "Huawei Device Co., Ltd.", "c416c8": "HUAWEI TECHNOLOGIES CO.,LTD", "c416fa": "Prysm Inc", @@ -28403,7 +29001,7 @@ "c42628": "Airo Wireless", "c42728": "zte corporation", "c4278c": "Huawei Device Co., Ltd.", - "c42795": "Technicolor CH USA Inc.", + "c42795": "Vantiva USA LLC", "c4282d": "Embedded Intellect Pty Ltd", "c4291d": "KLEMSAN ELEKTRIK ELEKTRONIK SAN.VE TIC.AS.", "c42996": "Signify B.V.", @@ -28461,6 +29059,7 @@ "c44f96": "Alps Alpine", "c45006": "Samsung Electronics Co.,Ltd", "c4518d": "Shenzhen YOUHUA Technology Co., Ltd", + "c4524f": "Apple, Inc.", "c45379": "Micronview Limited Liability Company", "c45444": "Quanta Computer Inc.", "c455a6": "Cadac Holdings Ltd", @@ -28478,6 +29077,7 @@ "c45d83": "Samsung Electronics Co.,Ltd", "c45dd8": "HDMI Forum", "c45e5c": "HUAWEI TECHNOLOGIES CO.,LTD", + "c46026": "SKY UK LIMITED", "c46044": "Everex Electronics Limited", "c4618b": "Apple, Inc.", "c461c7": "Microsoft Corporation", @@ -28519,6 +29119,7 @@ "c477af": "Advanced Digital Broadcast SA", "c478a2": "Huawei Device Co., Ltd.", "c47905": "Zhejiang Uniview Technologies Co.,Ltd.", + "c4799f": "Haiguang Smart Device Co.,Ltd.", "c47b2f": "Beijing JoinHope Image Technology Ltd.", "c47b80": "Protempis, LLC", "c47ba3": "NAVIS Inc.", @@ -28528,11 +29129,13 @@ "c47d9f": "Samsung Electronics Co.,Ltd", "c47dcc": "Zebra Technologies Inc", "c47dfe": "A.N. Solutions GmbH", + "c47ee0": "Cisco Systems, Inc", "c47f51": "Inventek Systems", "c48025": "Huawei Device Co., Ltd.", "c4808a": "Cloud Diagnostics Canada ULC", "c4823f": "Fujian Newland Auto-ID Tech. Co,.Ltd.", "c4824e": "Changzhou Uchip Electronics Co., LTD.", + "c482e1": "Tuya Smart Inc.", "c4836f": "Ciena Corporation", "c48372": "IEEE Registration Authority", "c48466": "Apple, Inc.", @@ -28552,6 +29155,7 @@ "c49300": "8Devices", "c49313": "100fio networks technology llc", "c49380": "Speedytel technology", + "c493bb": "Beijing Xiaomi Mobile Software Co., Ltd", "c493d9": "Samsung Electronics Co.,Ltd", "c49500": "Amazon Technologies Inc.", "c4954d": "IEEE Registration Authority", @@ -28576,7 +29180,9 @@ "c4a559": "IEEE Registration Authority", "c4a64e": "Quectel Wireless Solutions Co.,Ltd.", "c4a72b": "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", + "c4a816": "eero inc.", "c4a81d": "D-Link International", + "c4aa99": "HUAWEI TECHNOLOGIES CO.,LTD", "c4aaa1": "SUMMIT DEVELOPMENT, spol.s r.o.", "c4aac4": "Zhejiang Dahua Technology Co., Ltd.", "c4abb2": "vivo Mobile Communication Co., Ltd.", @@ -28626,6 +29232,7 @@ "c4d489": "JiangSu Joyque Information Industry Co.,Ltd", "c4d496": "Shenzhen Excelsecu Data Technology Co.,Ltd", "c4d655": "Tercel technology co.,ltd", + "c4d666": "Cisco Meraki", "c4d738": "Huawei Device Co., Ltd.", "c4d7fd": "Co., Ltd.", "c4d8f3": "iZotope", @@ -28657,6 +29264,7 @@ "c4eb42": "Sagemcom Broadband SAS", "c4eb43": "Sagemcom Broadband SAS", "c4ebe3": "RRCN SAS", + "c4ebff": "zte corporation", "c4edba": "Texas Instruments", "c4eeae": "VSS Monitoring", "c4eef5": "II-VI Incorporated", @@ -28705,10 +29313,12 @@ "c80e95": "OmniLync Inc.", "c81073": "CENTURY OPTICOMM CO.,LTD", "c8120b": "Samsung Electronics Co.,Ltd", + "c81337": "Juniper Networks", "c8138b": "Shenzhen Skyworth Digital Technology CO., Ltd", "c81451": "HUAWEI TECHNOLOGIES CO.,LTD", "c81479": "Samsung Electronics Co.,Ltd", "c814b4": "Sichuan Tianyi Comheart Telecom Co.,LTD", + "c8154e": "Intel Corporate", "c816a5": "Masimo Corporation", "c816bd": "Qingdao Hisense Communications Co.,Ltd.", "c816da": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", @@ -28739,6 +29349,7 @@ "c82b6b": "shenzhen worldelite electronics co., LTD", "c82b96": "Espressif Inc.", "c82c2b": "IEEE Registration Authority", + "c82e18": "Espressif Inc.", "c82e47": "Suzhou SmartChip Semiconductor Co., LTD", "c82e94": "Halfa Enterprise Co., Ltd.", "c83168": "eZEX corporation", @@ -28776,6 +29387,7 @@ "c84aa0": "Sony Interactive Entertainment Inc.", "c84bd6": "Dell Inc.", "c84c75": "Cisco Systems, Inc", + "c84c78": "zte corporation", "c84d34": "LIONS Taiwan Technology Inc.", "c84d44": "Shenzhen Jiapeng Huaxiang Technology Co.,Ltd", "c84f0e": "Sdn. Bhd.", @@ -28784,6 +29396,7 @@ "c850e9": "Raisecom Technology CO., LTD", "c85142": "Samsung Electronics Co.,Ltd", "c85195": "HUAWEI TECHNOLOGIES CO.,LTD", + "c851fb": "Extreme Networks Headquarters", "c85261": "ARRIS Group, Inc.", "c853e1": "Beijing Bytedance Network Technology Co., Ltd", "c8544b": "Zyxel Communications Corporation", @@ -28797,6 +29410,7 @@ "c85b76": "Electronics Technology co., ltd", "c85ba0": "Shenzhen Qihu Intelligent Technology Company Limited", "c85ccc": "Beijing Xiaomi Mobile Software Co., Ltd", + "c85ce2": "IEEE Registration Authority", "c85d38": "HUMAX Co., Ltd.", "c85ea9": "Intel Corporate", "c86000": "ASUSTek COMPUTER INC.", @@ -28805,16 +29419,18 @@ "c863fc": "ARRIS Group, Inc.", "c864c7": "zte corporation", "c8662c": "Beijing Haitai Fangyuan High Technology Co,.Ltd.", - "c8665d": "Extreme Networks, Inc.", - "c8675e": "Extreme Networks, Inc.", + "c8665d": "Extreme Networks Headquarters", + "c8675e": "Extreme Networks Headquarters", "c868de": "Huawei Device Co., Ltd.", "c869cd": "Apple, Inc.", + "c86bbc": "IEEE Registration Authority", "c86c1e": "Display Systems Ltd", "c86c20": "Sichuan Tianyi Comheart Telecom Co.,LTD", "c86c3d": "Amazon Technologies Inc.", "c86c87": "Zyxel Communications Corporation", "c86cb6": "Optcom Co., Ltd.", "c86f1d": "Apple, Inc.", + "c87023": "Altice Labs S.A.", "c870d4": "IBO Technology Co,Ltd", "c87125": "Johnson Outdoors Marine Electronics d/b/a Minnkota", "c87248": "Aplicom Oy", @@ -28823,6 +29439,7 @@ "c8755b": "Quantify Technology Pty. Ltd.", "c87765": "Tiesse SpA", "c8778b": "Mercury Systems – Trusted Mission Solutions, Inc. ", + "c87867": "Mist Systems, Inc.", "c8787d": "D-Link Corporation", "c87b23": "Bose Corporation", "c87b5b": "zte corporation", @@ -28843,6 +29460,7 @@ "c8873b": "Net Optics", "c889f3": "Apple, Inc.", "c88a83": "Dongguan HuaHong Electronics Co.,Ltd", + "c88a9a": "Intel Corporate", "c88b47": "Nolangroup S.P.A con Socio Unico", "c88be8": "Masimo Corporation", "c88d83": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -28859,6 +29477,7 @@ "c8965a": "SKY UK LIMITED", "c89665": "Microsoft Corporation", "c8979f": "Nokia Corporation", + "c89828": "zte corporation", "c899b2": "Arcadyan Corporation", "c89bad": "Honor Device Co., Ltd.", "c89bd7": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", @@ -28866,8 +29485,10 @@ "c89c1d": "Cisco Systems, Inc", "c89cdc": "Elitegroup Computer Systems Co.,Ltd.", "c89d18": "Huawei Device Co., Ltd.", + "c89d6d": "ITEL MOBILE LIMITED", "c89e43": "NETGEAR", "c89e61": "Lyngsoe Systems LTd", + "c89f0c": "Motorola Mobility LLC, a Lenovo Company", "c89f1a": "HUAWEI TECHNOLOGIES CO.,LTD", "c89f1d": "SHENZHEN COMMUNICATION TECHNOLOGIES CO.,LTD", "c89f42": "VDII Innovation AB", @@ -28875,8 +29496,11 @@ "c8a1b6": "Shenzhen Longway Technologies Co., Ltd", "c8a1ba": "Neul Ltd", "c8a2ce": "Oasis Media Systems LLC", + "c8a362": "ASIX Electronics Corporation", "c8a40d": "Cooler Master Technology Inc", + "c8a608": "Ruckus Wireless", "c8a620": "Nebula, Inc", + "c8a6ef": "Samsung Electronics Co.,Ltd", "c8a70a": "Verizon Business", "c8a729": "SYStronics Co., Ltd.", "c8a776": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -28897,6 +29521,7 @@ "c8b5ad": "Hewlett Packard Enterprise", "c8b5b7": "Apple, Inc.", "c8b6d3": "HUAWEI TECHNOLOGIES CO.,LTD", + "c8b6fe": "Fitbit, Inc.", "c8b82f": "eero inc.", "c8bae9": "QDIS", "c8bb81": "Huawei Device Co., Ltd.", @@ -28907,7 +29532,7 @@ "c8bd4d": "Samsung Electronics Co.,Ltd", "c8bd69": "Samsung Electronics Co.,Ltd", "c8be19": "D-Link International", - "c8be35": "Extreme Networks, Inc.", + "c8be35": "Extreme Networks Headquarters", "c8bf4c": "Beijing Xiaomi Mobile Software Co., Ltd", "c8bffe": "Huawei Device Co., Ltd.", "c8c126": "ZPM Industria e Comercio Ltda", @@ -29003,7 +29628,7 @@ "cc00f1": "Sagemcom Broadband SAS", "cc037b": "Texas Instruments", "cc03d9": "Cisco Meraki", - "cc03fa": "Technicolor CH USA Inc.", + "cc03fa": "Vantiva USA LLC", "cc047c": "G-WAY Microwave", "cc04b4": "Select Comfort", "cc051b": "Samsung Electronics Co.,Ltd", @@ -29023,10 +29648,12 @@ "cc0df2": "Motorola Mobility LLC, a Lenovo Company", "cc10a3": "Beijing Nan Bao Technology Co., Ltd.", "cc14a6": "Yichun MyEnergy Domain, Inc", + "cc14bc": "Edifier International", "cc1531": "Intel Corporate", "cc167e": "Cisco Systems, Inc", "cc187b": "Manzanita Systems, Inc.", "cc19a8": "PT Inovação e Sistemas SA", + "cc1aa3": "Arista Networks", "cc1afa": "zte corporation", "cc1be0": "IEEE Registration Authority", "cc1e97": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -29060,7 +29687,7 @@ "cc33bb": "Sagemcom Broadband SAS", "cc3429": "TP-LINK TECHNOLOGIES CO.,LTD.", "cc34d7": "GEWISS S.P.A.", - "cc3540": "Technicolor CH USA Inc.", + "cc3540": "Vantiva USA LLC", "cc355a": "SecuGen Corporation", "cc37ab": "Edgecore Networks Corporation", "cc398c": "Shiningtek", @@ -29077,6 +29704,7 @@ "cc3f1d": "HMS Industrial Networks SLU", "cc3f8a": "KOMATSU LTD.", "cc3fea": "BAE Systems, Inc", + "cc4085": "WiZ", "cc40d0": "NETGEAR", "cc418e": "MSA Innovation", "cc4210": "Xiaomi Communications Co Ltd", @@ -29108,6 +29736,7 @@ "cc53b5": "HUAWEI TECHNOLOGIES CO.,LTD", "cc5459": "OnTime Networks AS", "cc55ad": "RIM", + "cc5763": "Panasonic Automotive Systems Co.,Ltd", "cc5830": "Sagemcom Broadband SAS", "cc593e": "Sensium Healthcare Limited", "cc5a53": "Cisco Systems, Inc", @@ -29182,7 +29811,7 @@ "cc9093": "Hansong Tehnologies", "cc90e8": "Shenzhen YOUHUA Technology Co., Ltd", "cc912b": "TE Connectivity Touch Solutions", - "cc934a": "Sierra Wireless", + "cc934a": "Sierra Wireless, ULC", "cc944a": "Pfeiffer Vacuum GmbH", "cc9470": "Kinestral Technologies, Inc.", "cc95d7": "Vizio, Inc", @@ -29214,6 +29843,7 @@ "ccab2c": "HUMAX Co., Ltd.", "ccacfe": "Co., Ltd.", "ccaf78": "Hon Hai Precision Ind. Co.,Ltd.", + "ccb071": "Fiberhome Telecommunication Technologies Co.,LTD", "ccb0a8": "Huawei Device Co., Ltd.", "ccb0da": "Liteon Technology Corporation", "ccb11a": "Samsung Electronics Co.,Ltd", @@ -29221,6 +29851,7 @@ "ccb255": "D-Link International", "ccb3ab": "shenzhen Biocare Bio-Medical Equipment Co.,Ltd.", "ccb3f8": "FUJITSU ISOTEC LIMITED", + "ccb54c": "Texas Instruments", "ccb55a": "Fraunhofer ITWM", "ccb5d1": "Beijing Xiaomi Mobile Software Co., Ltd", "ccb691": "NECMagnusCommunications", @@ -29253,6 +29884,7 @@ "cccc77": "Zaram Technology. Inc.", "cccc81": "HUAWEI TECHNOLOGIES CO.,LTD", "cccccc": "Silicon Laboratories", + "ccccea": "PHOENIX CONTACT Electronics GmbH", "cccd64": "SM-Electronic GmbH", "ccce1e": "AVM Audiovisuelles Marketing und Computersysteme GmbH", "ccce40": "Janteq Corp", @@ -29261,6 +29893,7 @@ "ccd281": "Apple, Inc.", "ccd29b": "Shenzhen Bopengfa Elec&Technology CO.,Ltd", "ccd31e": "IEEE Registration Authority", + "ccd342": "Cisco Systems, Inc", "ccd39d": "IEEE Registration Authority", "ccd3c1": "Vestel Elektronik San ve Tic. A.S.", "ccd3e2": "Jiangsu Yinhe Electronics Co.,Ltd.", @@ -29289,8 +29922,11 @@ "cce798": "My Social Stuff", "cce7df": "American Magnetics, Inc.", "cce8ac": "SOYEA Technology Co.,Ltd.", + "cce9fa": "Samsung Electronics Co.,Ltd", "ccea1c": "DCONWORKS Co., Ltd", "cceb18": "OOO TSS", + "cceb5e": "Xiaomi Communications Co Ltd", + "ccecb7": "ShenZhen Linked-Z Intelligent Display Co., Ltd", "cced21": "Nokia Shanghai Bell Co., Ltd.", "cced4d": "Cisco Systems, Inc", "cceddc": "MitraStar Technology Corp.", @@ -29300,7 +29936,7 @@ "ccf0fd": "Information Technology Co., Ltd.", "ccf305": "SHENZHEN TIAN XING CHUANG ZHAN ELECTRONIC CO.,LTD", "ccf3a5": "Chi Mei Communication Systems, Inc", - "ccf3c8": "Technicolor CH USA Inc.", + "ccf3c8": "Vantiva USA LLC", "ccf407": "EUKREA ELECTROMATIQUE SARL", "ccf411": "Google, Inc.", "ccf538": "3isysnetworks", @@ -29344,6 +29980,7 @@ "d01411": "IEEE Registration Authority", "d0154a": "zte corporation", "d015a6": "Aruba, a Hewlett Packard Enterprise Company", + "d015bb": "IEEE Registration Authority", "d0167c": "eero inc.", "d016b4": "HUAWEI TECHNOLOGIES CO.,LTD", "d016f0": "IEEE Registration Authority", @@ -29393,8 +30030,10 @@ "d040ef": "Murata Manufacturing Co., Ltd.", "d041c9": "Fiberhome Telecommunication Technologies Co.,LTD", "d0431e": "Dell Inc.", + "d04433": "Clourney Semiconductor", "d046dc": "Southwest Research Institute", "d047c1": "Elma Electronic AG", + "d0484f": "Nokia Solutions and Networks GmbH & Co. KG", "d048f3": "DATTUS Inc", "d0497c": "Co., Ltd", "d0498b": "ZOOM SERVER", @@ -29429,7 +30068,7 @@ "d05995": "Fiberhome Telecommunication Technologies Co.,LTD", "d059c3": "CeraMicro Technology Corporation", "d059e4": "Samsung Electronics Co.,Ltd", - "d05a00": "Technicolor CH USA Inc.", + "d05a00": "Vantiva USA LLC", "d05a0f": "I-BT DIGITAL CO.,LTD", "d05af1": "Shenzhen Pulier Tech CO.,Ltd", "d05afd": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", @@ -29439,6 +30078,8 @@ "d05fb8": "Texas Instruments", "d05fce": "Hitachi Data Systems", "d0608c": "zte corporation", + "d06158": "HUAWEI TECHNOLOGIES CO.,LTD", + "d0622c": "Xi'an Yipu Telecom Technology Co.,Ltd.", "d062a0": "Co., Ltd.", "d0634d": "Meiko Maschinenbau GmbH & Co. KG", "d063b4": "SolidRun Ltd.", @@ -29465,10 +30106,12 @@ "d0768f": "Calix Inc.", "d076e7": "TP-LINK TECHNOLOGIES CO.,LTD.", "d07714": "Motorola Mobility LLC, a Lenovo Company", + "d077ce": "Edgecore Networks Corporation", "d07880": "Fiberhome Telecommunication Technologies Co.,LTD", "d07ab5": "HUAWEI TECHNOLOGIES CO.,LTD", "d07b6f": "Zhuhai Yunmai Technology Co.,Ltd", "d07c2d": "Leie IOT technology Co., Ltd", + "d07cb2": "Sigmastar Technology Ltd.", "d07d33": "Huawei Device Co., Ltd.", "d07de5": "Forward Pay Systems, Inc.", "d07e01": "Huawei Device Co., Ltd.", @@ -29477,17 +30120,19 @@ "d07fa0": "Samsung Electronics Co.,Ltd", "d07fc4": "Ou Wei Technology Co.,Ltd. of Shenzhen City", "d0817a": "Apple, Inc.", + "d081c5": "Juniper Networks", "d083d4": "Xtel Wireless ApS", "d084b0": "Sagemcom Broadband SAS", "d087e2": "Samsung Electronics Co.,Ltd", "d0880c": "Apple, Inc.", "d08999": "APCON, Inc.", "d08a55": "Skullcandy", - "d08a91": "Technicolor CH USA Inc.", + "d08a91": "Vantiva USA LLC", "d08b7e": "Passif Semiconductor", "d08cb5": "Texas Instruments", "d08cff": "UPWIS AB", "d08e79": "Dell Inc.", + "d09168": "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "d09200": "FiRa Consortium", "d0929e": "Microsoft Corporation", "d092fa": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -29495,6 +30140,7 @@ "d09395": "IEEE Registration Authority", "d093f8": "Stonestreet One LLC", "d09466": "Dell Inc.", + "d094cf": "HUAWEI TECHNOLOGIES CO.,LTD", "d095c7": "Pantech Co., Ltd.", "d09686": "IEEE Registration Authority", "d096fb": "DZS Inc.", @@ -29521,7 +30167,7 @@ "d0b0cd": "Moen", "d0b128": "Samsung Electronics Co.,Ltd", "d0b214": "PoeWit Inc", - "d0b2c4": "Technicolor CH USA Inc.", + "d0b2c4": "Vantiva USA LLC", "d0b33f": "Shenzhen TINNO Mobile Technology Corp.", "d0b45d": "Huawei Device Co., Ltd.", "d0b498": "Robert Bosch LLC Automotive Electronics", @@ -29554,6 +30200,7 @@ "d0c7c0": "TP-LINK TECHNOLOGIES CO.,LTD.", "d0c857": "IEEE Registration Authority", "d0cde1": "Scientech Electronics", + "d0cec9": "HAN CHANG", "d0cf0e": "Sagemcom Broadband SAS", "d0cf5e": "Energy Micro AS", "d0cfd8": "Huizhou Boshijie Technology Co.,Ltd", @@ -29574,7 +30221,9 @@ "d0dad7": "Apple, Inc.", "d0db32": "Nokia Corporation", "d0dbb7": "Casa Systems", + "d0dc2c": "Cisco Systems, Inc", "d0dd49": "Juniper Networks", + "d0dd7c": "zte corporation", "d0df9a": "Liteon Technology Corporation", "d0dfb2": "Genie Networks Limited", "d0dfc7": "Samsung Electronics Co.,Ltd", @@ -29593,13 +30242,15 @@ "d0efc1": "HUAWEI TECHNOLOGIES CO.,LTD", "d0f0db": "Ericsson", "d0f121": "Xi'an LINKSCI Technology Co., Ltd", - "d0f27f": "SteadyServ Technoligies, LLC", + "d0f27f": "BrewLogix, LLC", "d0f3f5": "Huawei Device Co., Ltd.", + "d0f405": "Hon Hai Precision Industry Co., Ltd.", "d0f4f7": "Huawei Device Co., Ltd.", "d0f520": "KYOCERA Corporation ", "d0f73b": "Helmut Mauell GmbH Werk Weida", "d0f865": "ITEL MOBILE LIMITED", "d0f88c": "Mobility Technologies Communication Co., Ltd.", + "d0f928": "zte corporation", "d0f99b": "zte corporation", "d0fa1d": "Qihoo 360 Technology Co.,Ltd", "d0fccc": "Samsung Electronics Co.,Ltd", @@ -29609,6 +30260,7 @@ "d4000d": "Phoenix Broadband Technologies, LLC.", "d40057": "MC Technologies GmbH", "d40129": "Broadcom", + "d40145": "ATW TECHNOLOGY, INC.", "d4016d": "TP-LINK TECHNOLOGIES CO.,LTD.", "d4024a": "Delphian Systems LLC", "d404cd": "ARRIS Group, Inc.", @@ -29620,6 +30272,7 @@ "d40aa9": "ARRIS Group, Inc.", "d40b1a": "HTC Corporation", "d40bb9": "Solid Semecs bv.", + "d40f9e": "Apple, Inc.", "d40fb2": "Applied Micro Electronics AME bv", "d41090": "iNFORM Systems AG", "d410cf": "Huanshun Network Science and Technology Co., Ltd.", @@ -29645,11 +30298,12 @@ "d42122": "Sercomm Corporation.", "d4223f": "Lenovo Mobile Communication Technology Ltd.", "d4224e": "Alcatel Lucent", - "d422cd": "Xsens Technologies B.V.", + "d422cd": "Movella Technologies B.V.", "d42493": "GW Technologies Co.,Ltd", "d4258b": "Intel Corporate", "d425cc": "IEEE Registration Authority", "d42751": "Infopia Co., Ltd", + "d42787": "Shanghai High-Flying Electronics Technology Co., Ltd", "d428b2": "ioBridge, Inc.", "d428d5": "TCT mobile ltd", "d429ea": "Zimory GmbH", @@ -29660,6 +30314,7 @@ "d42dc5": "i-PRO Co., Ltd.", "d42f23": "Akenori PTE Ltd", "d42fca": "Apple, Inc.", + "d43127": "Ruijie Networks Co.,LTD", "d4319d": "Sinwatec", "d43260": "GoPro", "d43266": "Fike Corporation", @@ -29709,6 +30364,7 @@ "d4522a": "TangoWiFi.com", "d45251": "IBT Ingenieurbureau Broennimann Thun", "d45297": "nSTREAMS Technologies, Inc.", + "d452c7": "Beijing L&S Lancom Platform Tech. Co., Ltd.", "d452ee": "SKY UK LIMITED", "d45347": "Merytronic 2012, S.L.", "d45383": "Murata Manufacturing Co., Ltd.", @@ -29788,6 +30444,7 @@ "d481d7": "Dell Inc.", "d4823e": "Argosy Technologies, Ltd.", "d48304": "SHENZHEN FAST TECHNOLOGIES CO.,LTD", + "d48409": "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "d48457": "GD Midea Air-Conditioning Equipment Co.,Ltd.", "d48564": "Hewlett Packard", "d48660": "Arcadyan Corporation", @@ -29797,6 +30454,7 @@ "d48890": "Samsung Electronics Co.,Ltd", "d48a39": "Samsung Electronics Co.,Ltd", "d48a3b": "HUNAN FN-LINK TECHNOLOGY LIMITED", + "d48afc": "Espressif Inc.", "d48cb5": "Cisco Systems, Inc", "d48dd9": "Meld Technology, Inc", "d48f33": "Microsoft Corporation", @@ -29838,10 +30496,12 @@ "d4a02a": "Cisco Systems, Inc", "d4a148": "HUAWEI TECHNOLOGIES CO.,LTD", "d4a33d": "Apple, Inc.", + "d4a38b": "ELE(GROUP)CO.,LTD", "d4a3eb": "Shenzhen iComm Semiconductor CO.,LTD", "d4a425": "SMAX Technology Co., Ltd.", "d4a499": "InView Technology Corporation", "d4a651": "Tuya Smart Inc.", + "d4a923": "HUAWEI TECHNOLOGIES CO.,LTD", "d4a928": "GreenWave Reality Inc", "d4aaff": "MICRO WORLD ", "d4ab82": "ARRIS Group, Inc.", @@ -29859,12 +30519,14 @@ "d4b169": "Limited", "d4b27a": "ARRIS Group, Inc.", "d4b43e": "Messcomp Datentechnik GmbH", + "d4b680": "Shanghai Linkyum Microeletronics Co.,Ltd", "d4b709": "zte corporation", "d4b761": "Sichuan AI-Link Technology Co., Ltd.", "d4b7d0": "Ciena Corporation", "d4b8ff": "Home Control Singapore Pte Ltd", - "d4b92f": "Technicolor CH USA Inc.", + "d4b92f": "Vantiva USA LLC", "d4baba": "IEEE Registration Authority", + "d4bafa": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "d4bbc8": "vivo Mobile Communication Co., Ltd.", "d4bbe6": "Huawei Device Co., Ltd.", "d4bd1e": "5VT Technologies,Taiwan LTd.", @@ -29900,6 +30562,7 @@ "d4d7a9": "Shanghai Kaixiang Info Tech LTD", "d4d7cf": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", "d4d853": "Intel Corporate", + "d4d892": "HUAWEI TECHNOLOGIES CO.,LTD", "d4d898": "Korea CNO Tech Co., Ltd", "d4d919": "GoPro", "d4da21": "Beijing Xiaomi Mobile Software Co., Ltd", @@ -29910,7 +30573,7 @@ "d4e053": "Aruba, a Hewlett Packard Enterprise Company", "d4e08e": "ValueHD Corporation", "d4e22f": "Roku, Inc", - "d4e2cb": "Technicolor CH USA Inc.", + "d4e2cb": "Vantiva USA LLC", "d4e32c": "S. Siedle & Sohne", "d4e33f": "Nokia", "d4e6b7": "Samsung Electronics Co.,Ltd", @@ -29918,6 +30581,7 @@ "d4e880": "Cisco Systems, Inc", "d4e8b2": "Samsung Electronics Co.,Ltd", "d4e90b": "CVT CO.,LTD", + "d4e95e": "Texas Instruments", "d4e98a": "Intel Corporate", "d4ea0e": "Avaya Inc", "d4eb68": "Cisco Systems, Inc", @@ -29958,6 +30622,8 @@ "d807b6": "TP-LINK TECHNOLOGIES CO.,LTD.", "d80831": "Samsung Electronics Co.,Ltd", "d808f5": "Arcadia Networks Co. Ltd. ", + "d8094e": "Active Brains", + "d8097f": "zte corporation", "d809c3": "Cercacor Labs", "d809d6": "ZEXELON CO., LTD.", "d80a60": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -29993,6 +30659,7 @@ "d81f12": "Tuya Smart Inc.", "d81fcc": "Brocade Communications Systems LLC", "d8209f": "Cubro Acronet GesmbH", + "d821da": "TECHNOLOGIES CORPORATION", "d822f4": "Avnet Silica", "d82477": "Universal Electric Corporation", "d824bd": "Cisco Systems, Inc", @@ -30007,6 +30674,7 @@ "d82986": "Best Wish Technology LTD", "d82a15": "Leitner SpA", "d82a7e": "Nokia Corporation", + "d82d40": "Janz - Contagem e Gestão de Fluídos S.A.", "d82d9b": "Shenzhen G.Credit Communication Technology Co., Ltd", "d82de1": "Tricascade Inc.", "d82fe6": "Zhejiang Tmall Technology Co., Ltd.", @@ -30035,6 +30703,8 @@ "d84008": "HUAWEI TECHNOLOGIES CO.,LTD", "d842ac": "Shanghai Feixun Communication Co.,Ltd.", "d842e2": "Canary Connect, Inc.", + "d843ae": "Micro-Star INTL CO., LTD.", + "d843ea": "SY Electronics Ltd", "d843ed": "Suzuken", "d8445c": "DEV Tecnologia Ind Com Man Eq LTDA", "d8452b": "Sdn. Bhd.", @@ -30059,7 +30729,7 @@ "d853bc": "Lenovo Information Products (Shenzhen)Co.,Ltd", "d8543a": "Texas Instruments", "d85482": "Oxit, LLC", - "d854a2": "Extreme Networks, Inc.", + "d854a2": "Extreme Networks Headquarters", "d85575": "Samsung Electronics Co.,Ltd", "d855a3": "zte corporation", "d857ef": "Samsung Electronics Co.,Ltd", @@ -30104,8 +30774,10 @@ "d87533": "Nokia Corporation", "d8760a": "Escort, Inc.", "d876ae": "HUAWEI TECHNOLOGIES CO.,LTD", + "d87766": "Nurivoice Co., Ltd", "d8778b": "Intelbras", "d8787f": "Ubee Interactive Co., Limited", + "d878c9": "PRIVATE LIMITED", "d878e5": "KUHN SA", "d87988": "Hon Hai Precision Ind. Co.,Ltd.", "d87a3b": "Silicon Laboratories", @@ -30120,7 +30792,7 @@ "d880dc": "Huawei Device Co., Ltd.", "d881ce": "AHN INC.", "d88332": "TaiXin Semiconductor Co., Ltd", - "d88466": "Extreme Networks, Inc.", + "d88466": "Extreme Networks Headquarters", "d8860b": "IEEE Registration Authority", "d887d5": "Leadcore Technology CO.,LTD", "d88863": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -30132,6 +30804,7 @@ "d88c79": "Google, Inc.", "d88d5c": "Elentec", "d88dc8": "Atil Technology Co., LTD", + "d88ed4": "eero inc.", "d88f76": "Apple, Inc.", "d890e8": "Samsung Electronics Co.,Ltd", "d8912a": "Zyxel Communications Corporation", @@ -30197,6 +30870,7 @@ "d8b90e": "Triple Domain Vision Co.,Ltd.", "d8bb2c": "Apple, Inc.", "d8bbc1": "Micro-Star INTL CO., LTD.", + "d8bc38": "Espressif Inc.", "d8bc59": "Shenzhen DAPU Microelectronics Co., Ltd", "d8be1f": "Apple, Inc.", "d8be65": "Amazon Technologies Inc.", @@ -30229,6 +30903,7 @@ "d8d27c": "JEMA ENERGY, SA", "d8d385": "Hewlett Packard", "d8d43c": "Sony Corporation", + "d8d45d": "Orbic North America", "d8d4e6": "Hytec Inter Co., Ltd.", "d8d5b9": "Rainforest Automation, Inc.", "d8d67e": "GSK CNC EQUIPMENT CO.,LTD", @@ -30237,6 +30912,7 @@ "d8d775": "Sagemcom Broadband SAS", "d8d866": "SHENZHEN TOZED TECHNOLOGIES CO.,LTD.", "d8da52": "APATOR S.A.", + "d8daf1": "HUAWEI TECHNOLOGIES CO.,LTD", "d8dc40": "Apple, Inc.", "d8dce9": "Kunshan Erlab ductless filtration system Co.,Ltd", "d8dd5f": "BALMUDA Inc.", @@ -30253,6 +30929,7 @@ "d8e3ae": "CIRTEC MEDICAL SYSTEMS", "d8e56d": "TCT mobile ltd", "d8e72b": "NETSCOUT SYSTEMS INC", + "d8e72f": "Corp.", "d8e743": "Wush, Inc", "d8e844": "zte corporation", "d8e952": "KEOPSYS", @@ -30324,6 +31001,7 @@ "dc215c": "Intel Corporate", "dc21b9": "Sentec Co.Ltd", "dc21e2": "HUAWEI TECHNOLOGIES CO.,LTD", + "dc233b": "Extreme Networks Headquarters", "dc2727": "Huawei Device Co., Ltd.", "dc2834": "HAKKO Corporation", "dc2919": "Technology Ltd, Co.", @@ -30336,8 +31014,10 @@ "dc2bca": "Zera GmbH", "dc2c26": "Iton Technology Limited", "dc2c6e": "Routerboard.com", + "dc2d04": "vivo Mobile Communication Co., Ltd.", "dc2d3c": "Huawei Device Co., Ltd.", "dc2dcb": "Beijing Unis HengYue Technology Co., Ltd.", + "dc2dde": "Ledworks SRL", "dc2e6a": "HCT. Co., Ltd.", "dc2f03": "Step forward Group Co., Ltd.", "dc309c": "Heyrex Limited", @@ -30347,6 +31027,7 @@ "dc3350": "TechSAT GmbH", "dc35f1": "Positivo Tecnologia S.A.", "dc360c": "Hitron Technologies. Inc", + "dc3642": "zte corporation", "dc3643": "IEEE Registration Authority", "dc3714": "Apple, Inc.", "dc3752": "GE", @@ -30381,6 +31062,7 @@ "dc4ef4": "Shenzhen MTN Electronics CO., Ltd", "dc4f22": "Espressif Inc.", "dc503a": "Nanjing Ticom Tech Co., Ltd.", + "dc5193": "zte corporation", "dc5285": "Apple, Inc.", "dc5360": "Intel Corporate", "dc537c": "Compal Broadband Networks, Inc.", @@ -30399,15 +31081,19 @@ "dc6373": "OBARA KOREA", "dc647c": "C.R.S. iiMotion GmbH", "dc64b8": "Shenzhen JingHanDa Electronics Co.Ltd", + "dc6555": "New H3C Intelligence Terminal Co., Ltd.", "dc663a": "Apacer Technology Inc.", "dc6672": "Samsung Electronics Co.,Ltd", "dc6723": "barox Kommunikation GmbH", "dc680c": "Hewlett Packard Enterprise", + "dc6880": "zte corporation", "dc68eb": "Nintendo Co.,Ltd", + "dc69e2": "Samsung Electronics Co.,Ltd", "dc6ae7": "Xiaomi Communications Co Ltd", "dc6aea": "Infinix mobility limited", "dc6b12": "worldcns inc.", "dc6b1b": "Huawei Device Co., Ltd.", + "dc6dbc": "Apple, Inc.", "dc6dcd": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "dc6f00": "Livescribe, Inc.", "dc6f08": "Bay Storage Technology", @@ -30424,6 +31110,7 @@ "dc7794": "Huawei Device Co., Ltd.", "dc7834": "LOGICOM SA", "dc7b94": "Cisco Systems, Inc", + "dc7cf7": "China Mobile Group Device Co.,Ltd.", "dc7fa4": "2Wire Inc", "dc8084": "Apple, Inc.", "dc825b": "JANUS, spol. s r.o.", @@ -30437,6 +31124,7 @@ "dc8c1b": "vivo Mobile Communication Co., Ltd.", "dc8c37": "Cisco Systems, Inc", "dc8d8a": "Nokia Solutions and Networks GmbH & Co. KG", + "dc8d91": "Infinix mobility limited", "dc8db7": "ATW TECHNOLOGY, INC.", "dc8e95": "Silicon Laboratories", "dc9020": "RURU TEK PRIVATE LIMITED ", @@ -30446,6 +31134,7 @@ "dc962c": "NST Audio Ltd", "dc973a": "Verana Networks", "dc9758": "Sichuan AI-Link Technology Co., Ltd.", + "dc97e6": "Sagemcom Broadband SAS", "dc9840": "Microsoft Corporation", "dc9914": "HUAWEI TECHNOLOGIES CO.,LTD", "dc99fe": "Armatura LLC", @@ -30490,13 +31179,15 @@ "dcb3b4": "Co., Ltd.", "dcb4ac": "FLEXTRONICS MANUFACTURING(ZHUHAI)CO.,LTD.", "dcb4c4": "Microsoft XCG", + "dcb4ca": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "dcb54f": "Apple, Inc.", "dcb72e": "Xiaomi Communications Co Ltd", "dcb7ac": "Aruba, a Hewlett Packard Enterprise Company", "dcb7fc": "Ltd", - "dcb808": "Extreme Networks, Inc.", + "dcb808": "Extreme Networks Headquarters", "dcbb96": "Full Solution Telecom", "dcbd7a": "Guangzhou Shiyuan Electronic Technology Company Limited", + "dcbdcc": "Quectel Wireless Solutions Co.,Ltd.", "dcbe49": "ITEL MOBILE LIMITED", "dcbe7a": "Zhejiang Nurotron Biotechnology Co.", "dcbf90": "HUIZHOU QIAOXING TELECOMMUNICATION INDUSTRY CO.,LTD.", @@ -30513,7 +31204,9 @@ "dccba8": "Explora Technologies Inc", "dccc8d": "Sdn. Bhd.", "dccce6": "Samsung Electronics Co.,Ltd", + "dccd18": "Nintendo Co.,Ltd", "dccd2f": "Seiko Epson Corporation", + "dccd66": "LTD.", "dccd74": "Japan E.M.Solutions Co., Ltd.", "dcce41": "FE GLOBAL HONG KONG LIMITED", "dccebc": "Shenzhen JSR Technology Co.,Ltd.", @@ -30521,7 +31214,9 @@ "dccf94": "Beijing Rongcheng Hutong Technology Co., Ltd.", "dccf96": "Samsung Electronics Co.,Ltd", "dcd0f7": "Bentek Systems Ltd.", + "dcd160": "Tianjin Changdatong Technology Co.,LTD", "dcd255": "Kinpo Electronics, Inc.", + "dcd26a": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "dcd2fc": "HUAWEI TECHNOLOGIES CO.,LTD", "dcd2fd": "HUAWEI TECHNOLOGIES CO.,LTD", "dcd321": "HUMAX Co., Ltd.", @@ -30533,12 +31228,13 @@ "dcd87f": "Shenzhen JoinCyber Telecom Equipment Ltd", "dcd916": "HUAWEI TECHNOLOGIES CO.,LTD", "dcd9ae": "Nokia Shanghai Bell Co., Ltd.", + "dcda0c": "Espressif Inc.", "dcda4f": "GETCK TECHNOLOGY, INC", "dcda80": "New H3C Technologies Co., Ltd", "dcdb27": "Huawei Device Co., Ltd.", "dcdb70": "Tonfunk Systementwicklung und Service GmbH", "dcdc07": "TRP Systems BV", - "dcdcc3": "Extreme Networks, Inc.", + "dcdcc3": "Extreme Networks Headquarters", "dcdce2": "Samsung Electronics Co.,Ltd", "dcdd24": "Energica Motor Company SpA", "dcde4f": "Gionee Communication Equipment Co Ltd ", @@ -30552,18 +31248,19 @@ "dce533": "IEEE Registration Authority", "dce55b": "Google, Inc.", "dce578": "Experimental Factory of Scientific Engineering and Special Design Department", - "dce650": "Extreme Networks, Inc.", + "dce650": "Extreme Networks Headquarters", "dce71c": "AUG Elektronik GmbH", "dce838": "Limited", "dce994": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "dceb53": "Wuhan QianXiao Elecronic Technology CO.,LTD", - "dceb69": "Technicolor CH USA Inc.", + "dceb69": "Vantiva USA LLC", "dceb94": "Cisco Systems, Inc", "dcec06": "Heimi Network Technology Co., Ltd.", "dcece3": "LYOTECH LABS LLC", "dced83": "Beijing Xiaomi Mobile Software Co., Ltd", "dced84": "Haverford Systems Inc", "dcee06": "HUAWEI TECHNOLOGIES CO.,LTD", + "dcee14": "ADT Technology", "dcef09": "NETGEAR", "dcef80": "HUAWEI TECHNOLOGIES CO.,LTD", "dcefca": "Murata Manufacturing Co., Ltd.", @@ -30574,6 +31271,7 @@ "dcf401": "Dell Inc.", "dcf4ca": "Apple, Inc.", "dcf505": "AzureWave Technology Inc.", + "dcf51b": "Arcadyan Corporation", "dcf56e": "Wellysis Corp.", "dcf719": "Cisco Systems, Inc", "dcf755": "SITRONIK", @@ -30589,10 +31287,12 @@ "dcfe23": "Murata Manufacturing Co., Ltd.", "e00084": "HUAWEI TECHNOLOGIES CO.,LTD", "e001a6": "Edgecore Networks Corporation", + "e001c7": "Hui Zhou Gaoshengda Technology Co.,LTD", "e002a5": "ABB Robotics", "e0036b": "Samsung Electronics Co.,Ltd", "e00370": "ShenZhen Continental Wireless Technology Co., Ltd.", "e005c5": "TP-LINK TECHNOLOGIES CO.,LTD.", + "e00630": "HUAWEI TECHNOLOGIES CO.,LTD", "e006e6": "Hon Hai Precision Ind. Co.,Ltd.", "e0071b": "Hewlett Packard Enterprise", "e007c2": "FUJIAN STAR-NET COMMUNICATION CO.,LTD", @@ -30618,7 +31318,7 @@ "e01995": "Nutanix", "e019d8": "BH TECHNOLOGIES", "e01aea": "Allied Telesis, Inc.", - "e01c41": "Extreme Networks, Inc.", + "e01c41": "Extreme Networks Headquarters", "e01cee": "Bravo Tech, Inc.", "e01cfc": "D-Link International", "e01d38": "Beijing HuaqinWorld Technology Co.,Ltd", @@ -30630,6 +31330,7 @@ "e01f88": "Xiaomi Communications Co Ltd", "e01fed": "Nokia Shanghai Bell Co., Ltd.", "e01ffc": "Mobility Technologies Communication Co., Ltd.", + "e021fe": "Richer Link Technologies CO.,LTD", "e02202": "ARRIS Group, Inc.", "e023d7": "Sleep Number", "e023ff": "Fortinet, Inc.", @@ -30663,7 +31364,7 @@ "e03560": "Challenger Supply Holdings, LLC", "e03676": "HUAWEI TECHNOLOGIES CO.,LTD", "e036e3": "Stage One International Co., Ltd.", - "e03717": "Technicolor CH USA Inc.", + "e03717": "Vantiva USA LLC", "e037bf": "Wistron Neweb Corporation", "e0382d": "IEEE Registration Authority", "e0383f": "zte corporation", @@ -30690,6 +31391,7 @@ "e04b41": "Hangzhou Beilian Low Carbon Technology Co., Ltd.", "e04b45": "Hi-P Electronics Pte Ltd", "e04ba6": "HUAWEI TECHNOLOGIES CO.,LTD", + "e04c05": "EverCharge", "e04f43": "Universal Global Scientific Industrial Co., Ltd.", "e04fbd": "Sichuan Tianyi Comheart Telecom Co.,LTD", "e0508b": "Zhejiang Dahua Technology Co., Ltd.", @@ -30698,6 +31400,7 @@ "e051d8": "China Dragon Technology Limited", "e0553d": "Cisco Meraki", "e05597": "Emergent Vision Technologies Inc.", + "e05689": "Co Ltd", "e05694": "Yunhight Microelectronics", "e056f4": "AxesNetwork Solutions inc.", "e0589e": "Laerdal Medical", @@ -30721,6 +31424,7 @@ "e06781": "Dongguan Liesheng Electronic Co., Ltd.", "e067b3": "Shenzhen C-Data Technology Co., Ltd", "e0686d": "Raybased AB", + "e068ee": "Phyplus Microelectronics Limited", "e0693a": "Innophase Inc.", "e06995": "PEGATRON CORPORATION", "e069ba": "Cisco Systems, Inc", @@ -30757,7 +31461,7 @@ "e0859a": "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.", "e08614": "Novatel Wireless Solutions, Inc.", "e087b1": "Nata-Info Ltd.", - "e0885d": "Technicolor CH USA Inc.", + "e0885d": "Vantiva USA LLC", "e0897e": "Apple, Inc.", "e0899d": "Cisco Systems, Inc", "e08a7e": "Exponent", @@ -30783,6 +31487,7 @@ "e09db8": "PLANEX COMMUNICATIONS INC.", "e09dfa": "Wanan Hongsheng Electronic Co.Ltd", "e09f2a": "Iton Technology Corp. ", + "e0a129": "Extreme Networks Headquarters", "e0a198": "NOJA Power Switchgear Pty Ltd", "e0a1ce": "zte corporation", "e0a1d7": "SFR", @@ -30862,6 +31567,7 @@ "e0d173": "Cisco Systems, Inc", "e0d1e6": "Aliph dba Jawbone", "e0d31a": "EQUES Technology Co., Limited", + "e0d3b4": "Cisco Meraki", "e0d462": "Huawei Device Co., Ltd.", "e0d464": "Intel Corporate", "e0d4e8": "Intel Corporate", @@ -30877,10 +31583,11 @@ "e0db10": "Samsung Electronics Co.,Ltd", "e0db55": "Dell Inc.", "e0db88": "Open Standard Digital-IF Interface for SATCOM Systems", - "e0dbd1": "Technicolor CH USA Inc.", + "e0dbd1": "Vantiva USA LLC", "e0dca0": "Siemens Industrial Automation Products Ltd., Chengdu", "e0dcff": "Xiaomi Communications Co Ltd", "e0ddc0": "vivo Mobile Communication Co., Ltd.", + "e0df13": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "e0e0c2": "China Mobile Group Device Co.,Ltd.", "e0e0fc": "Huawei Device Co., Ltd.", "e0e1a9": "Shenzhen Four Seas Global Link Network Technology Co., Ltd.", @@ -30924,7 +31631,9 @@ "e408e7": "Quectel Wireless Solutions Co.,Ltd.", "e40cfd": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "e40d36": "Intel Corporate", + "e40d3b": "Ericsson AB", "e40eee": "HUAWEI TECHNOLOGIES CO.,LTD", + "e41088": "Samsung Electronics Co.,Ltd", "e4115b": "Hewlett Packard", "e41218": "ShenZhen Rapoo Technology Co., Ltd.", "e4121d": "Samsung Electronics Co.,Ltd", @@ -30933,6 +31642,7 @@ "e417d8": "8BITDO TECHNOLOGY HK LIMITED", "e4186b": "Zyxel Communications Corporation", "e419c1": "HUAWEI TECHNOLOGIES CO.,LTD", + "e41a1d": "NOVEA ENERGIES", "e41a2c": "ZPE Systems, Inc.", "e41c4b": "V2 TECHNOLOGY, INC.", "e41d2d": "Mellanox Technologies, Inc.", @@ -30973,6 +31683,7 @@ "e435c8": "HUAWEI TECHNOLOGIES CO.,LTD", "e435fb": "Ltd", "e437d7": "HENRI DEPAEPE S.A.S.", + "e43819": "Shenzhen Hi-Link Electronic CO.,Ltd.", "e4387e": "Cisco Systems, Inc", "e43883": "Ubiquiti Inc", "e4388c": "Digital Products Limited", @@ -30985,13 +31696,15 @@ "e43ec6": "HUAWEI TECHNOLOGIES CO.,LTD", "e43ed7": "Arcadyan Corporation", "e43fa2": "Wuxi DSP Technologies Inc.", + "e44097": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "e440e2": "Samsung Electronics Co.,Ltd", "e44122": "Co., Ltd", "e44164": "Nokia", "e441e6": "Ottec Technology GmbH", "e442a6": "Intel Corporate", "e4434b": "Dell Inc.", - "e444e5": "Extreme Networks, Inc.", + "e444e5": "Extreme Networks Headquarters", + "e44519": "Beijing Xiaomi Electronics Co.,Ltd", "e446b0": "Fujitsu Client Computing Limited", "e446bd": "C&C TECHNIC TAIWAN CO., LTD.", "e446da": "Xiaomi Communications Co Ltd", @@ -31027,11 +31740,13 @@ "e45e37": "Intel Corporate", "e45f01": "Raspberry Pi Trading Ltd", "e46017": "Intel Corporate", + "e4604d": "zte corporation", "e46059": "Pingtek Co., Ltd.", "e46251": "HAO CHENG GROUP LIMITED", "e462c4": "Cisco Systems, Inc", "e46449": "ARRIS Group, Inc.", "e46564": "SHENZHEN KTC TECHNOLOGY CO.,LTD", + "e465b8": "Espressif Inc.", "e466ab": "zte corporation", "e4671e": "SHEN ZHEN NUO XIN CHENG TECHNOLOGY co., Ltd.", "e467ba": "Danish Interpretation Systems A/S", @@ -31039,6 +31754,7 @@ "e4695a": "Dictum Health, Inc.", "e46a35": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", "e46c21": "messMa GmbH", + "e46cd1": "Calix Inc.", "e46d7f": "Ciena Corporation", "e46f13": "D-Link International", "e470b8": "Intel Corporate", @@ -31052,6 +31768,7 @@ "e47727": "HUAWEI TECHNOLOGIES CO.,LTD", "e4776b": "AARTESYS AG", "e477d4": "Minrray Industry Co.,Ltd ", + "e47876": "Arista Networks", "e47b3f": "BEIJING CO-CLOUD TECHNOLOGY LTD.", "e47c65": "Sunstar Communication Technology Co., Ltd", "e47cf9": "Samsung Electronics Co.,Ltd", @@ -31076,6 +31793,7 @@ "e48c73": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", "e48d8c": "Routerboard.com", "e48e10": "CIG SHANGHAI CO LTD", + "e48ebb": "Rockwell Automation", "e48f1d": "Huawei Device Co., Ltd.", "e48f34": "Vodafone Italia S.p.A.", "e48f65": "Yelatma Instrument Making Enterprise, JSC", @@ -31102,6 +31820,7 @@ "e4a1e6": "Alcatel-Lucent Shanghai Bell Co., Ltd", "e4a32f": "Shanghai Artimen Technology Co., Ltd.", "e4a387": "Control Solutions LLC", + "e4a41c": "Cisco Systems, Inc", "e4a471": "Intel Corporate", "e4a5ef": "TRON LINK ELECTRONICS CO., LTD.", "e4a634": "Universal Electronics, Inc.", @@ -31120,6 +31839,7 @@ "e4afa1": "HES-SO", "e4b005": "Beijing IQIYI Science & Technology Co., Ltd.", "e4b021": "Samsung Electronics Co.,Ltd", + "e4b224": "HUAWEI TECHNOLOGIES CO.,LTD", "e4b2fb": "Apple, Inc.", "e4b318": "Intel Corporate", "e4b503": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", @@ -31132,7 +31852,7 @@ "e4bd4b": "zte corporation", "e4beed": "Netcore Technology Inc.", "e4befb": "HUAWEI TECHNOLOGIES CO.,LTD", - "e4bffa": "Technicolor CH USA Inc.", + "e4bffa": "Vantiva USA LLC", "e4c0cc": "China Mobile Group Device Co.,Ltd.", "e4c0e2": "Sagemcom Broadband SAS", "e4c146": "Objetivos y Servicios de Valor A", @@ -31144,6 +31864,7 @@ "e4c63d": "Apple, Inc.", "e4c6e6": "Mophie, LLC", "e4c722": "Cisco Systems, Inc", + "e4c767": "Intel Corporate", "e4c801": "BLU Products Inc", "e4c806": "Ceiec Electric Technology Inc.", "e4c90b": "Radwin", @@ -31162,15 +31883,17 @@ "e4d71d": "Oraya Therapeutics", "e4dadf": "Taicang T&W Electronics", "e4db6d": "Beijing Xiaomi Electronics Co., Ltd.", - "e4dbae": "Extreme Networks, Inc.", + "e4dbae": "Extreme Networks Headquarters", "e4dc43": "Huawei Device Co., Ltd.", "e4dc5f": "Cofractal, Inc.", "e4dccc": "HUAWEI TECHNOLOGIES CO.,LTD", "e4dd79": "En-Vision America, Inc.", + "e4de40": "Aruba, a Hewlett Packard Enterprise Company", "e4e0a6": "Apple, Inc.", "e4e0c5": "Samsung Electronics Co.,Ltd", "e4e112": "Texas Instruments", "e4e130": "TCT mobile ltd", + "e4e26c": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "e4e409": "LEIFHEIT AG", "e4e4ab": "Apple, Inc.", "e4e749": "Hewlett Packard", @@ -31182,6 +31905,7 @@ "e4f042": "Google, Inc.", "e4f14c": "Private", "e4f1d4": "vivo Mobile Communication Co., Ltd.", + "e4f27c": "Juniper Networks", "e4f327": "ATOL LLC", "e4f365": "Time-O-Matic, Inc.", "e4f3c4": "Samsung Electronics Co.,Ltd", @@ -31195,6 +31919,7 @@ "e4f8ef": "Samsung Electronics Co.,Ltd", "e4f939": "Minxon Hotel Technology INC.", "e4fa1d": "PAD Peripheral Advanced Design Inc.", + "e4fac4": "Big Field Global PTE. Ltd.", "e4faed": "Samsung Electronics Co.,Ltd", "e4fafd": "Intel Corporate", "e4fb5d": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -31220,6 +31945,7 @@ "e8088b": "HUAWEI TECHNOLOGIES CO.,LTD", "e80945": "Sdn. Bhd.", "e80959": "Guoguang Electric Co.,Ltd", + "e80ab9": "Cisco Systems, Inc", "e80aec": "Jiangsu Hengtong Optic-Electric Co., LTD", "e80b13": "Akib Systems Taiwan, INC", "e80c38": "DAEYOUNG INFORMATION SYSTEM CO., LTD", @@ -31236,6 +31962,7 @@ "e8150e": "Nokia Corporation", "e8162b": "IDEO Security Co., Ltd.", "e81656": "Hangzhou BroadLink Technology Co.,Ltd", + "e81711": "Shenzhen Vipstech Co., Ltd", "e817fc": "Fujitsu Cloud Technologies Limited", "e81863": "IEEE Registration Authority", "e81a58": "TECHNOLOGIC SYSTEMS", @@ -31247,6 +31974,8 @@ "e81da8": "Ruckus Wireless", "e81e92": "Huawei Device Co., Ltd.", "e820e2": "HUMAX Co., Ltd.", + "e822b8": "Shenzhen Skyworth Digital Technology CO., Ltd", + "e82404": "Quectel Wireless Solutions Co.,Ltd.", "e824a6": "Juniper Networks", "e82689": "Aruba, a Hewlett Packard Enterprise Company", "e8268d": "Shenzhen SuperElectron Technology Co.,Ltd.", @@ -31281,11 +32010,13 @@ "e84368": "zte corporation", "e843b6": "QNAP Systems, Inc.", "e8447e": "Bitdefender SRL", + "e8458b": "MitraStar Technology Corp.", "e84727": "Quectel Wireless Solutions Co.,Ltd.", "e8473a": "Hon Hai Precision Industry Co.,LTD", "e8481f": "Advanced Automotive Antennas", "e848b8": "TP-Link Corporation Limited", "e84943": "YUGE Information technology Co. Ltd", + "e84a54": "Beijing Xiaomi Mobile Software Co., Ltd", "e84c4a": "Amazon Technologies Inc.", "e84c56": "INTERCEPT SERVICES LIMITED", "e84d74": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -31327,6 +32058,7 @@ "e86819": "HUAWEI TECHNOLOGIES CO.,LTD", "e868e7": "Espressif Inc.", "e86a64": "Electronics Technology co., ltd", + "e86bea": "Espressif Inc.", "e86cc7": "IEEE Registration Authority", "e86cda": "Supercomputers and Neurocomputers Research Center", "e86d52": "ARRIS Group, Inc.", @@ -31339,10 +32071,12 @@ "e86e44": "zte corporation", "e86f38": "CHONGQING FUGUI ELECTRONICS CO.,LTD.", "e86ff2": "Actiontec Electronics, Inc", + "e87072": "Hangzhou BroadLink Technology Co.,Ltd", "e8718d": "Elsys Equipamentos Eletronicos Ltda", "e874c7": "Sentinhealth", "e874e6": "ADB Broadband Italia", "e8757f": "Co., Ltd", + "e87640": "SKY UK LIMITED", "e87829": "IEEE Registration Authority", "e87865": "Apple, Inc.", "e878a1": "BEOVIEW INTERCOM DOO", @@ -31351,7 +32085,7 @@ "e87f6b": "Samsung Electronics Co.,Ltd", "e87f95": "Apple, Inc.", "e8802e": "Apple, Inc.", - "e88088": "Electronics Technology Co., Ltd", + "e88088": "Electronics Technology co., ltd", "e880d8": "GNTEK Electronics Co.,Ltd.", "e88152": "Apple, Inc.", "e88175": "zte corporation", @@ -31366,6 +32100,7 @@ "e8886c": "Shenzhen SC Technologies Co.,LTD", "e8892c": "ARRIS Group, Inc.", "e88d28": "Apple, Inc.", + "e88da6": "Quectel Wireless Solutions Co.,Ltd.", "e88df5": "ZNYX Networks, Inc.", "e88e60": "NSD Corporation", "e88f6f": "TCT mobile ltd", @@ -31388,8 +32123,10 @@ "e899c4": "HTC Corporation", "e89a8f": "Quanta Computer Inc.", "e89aff": "Fujian LANDI Commercial Equipment Co.,Ltd", + "e89c25": "ASUSTek COMPUTER INC.", "e89d87": "Toshiba", "e89e0c": "MAX8USA DISTRIBUTORS INC.", + "e89e13": "CRESYN", "e89eb4": "Hon Hai Precision Ind. Co.,Ltd.", "e89f39": "Nokia", "e89f6d": "Espressif Inc.", @@ -31444,6 +32181,7 @@ "e8c57a": "Ufispace Co., LTD.", "e8c74f": "Liteon Technology Corporation", "e8c7cf": "Wistron Neweb Corporation", + "e8c829": "Intel Corporate", "e8cac8": "Hui Zhou Gaoshengda Technology Co.,LTD", "e8cba1": "Nokia Corporation", "e8cbed": "Corp.", @@ -31460,8 +32198,10 @@ "e8d11b": "ASKEY COMPUTER CORP", "e8d2ff": "Sagemcom Broadband SAS", "e8d322": "Cisco Systems, Inc", + "e8d3eb": "eero inc.", "e8d483": "ULTIMATE Europe Transportation Equipment GmbH", "e8d4e0": "Beijing BenyWave Technology Co., Ltd.", + "e8d52b": "Google, Inc.", "e8d765": "HUAWEI TECHNOLOGIES CO.,LTD", "e8d775": "HUAWEI TECHNOLOGIES CO.,LTD", "e8d819": "AzureWave Technology Inc.", @@ -31480,6 +32220,7 @@ "e8defb": "MESOTIC SAS", "e8df70": "AVM Audiovisuelles Marketing und Computersysteme GmbH", "e8dff2": "PRF Co., Ltd.", + "e8e07e": "Silicon Laboratories", "e8e08f": "GRAVOTECH MARKING SAS", "e8e0b7": "Toshiba", "e8e1e1": "Gemtek Technology Co., Ltd.", @@ -31537,9 +32278,11 @@ "ec01ee": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "ec0273": "Aruba, a Hewlett Packard Enterprise Company", "ec0441": "ShenZhen TIGO Semiconductor Co., Ltd.", + "ec0482": "STL Systems AG", "ec086b": "TP-LINK TECHNOLOGIES CO.,LTD.", "ec08e5": "Motorola Mobility LLC, a Lenovo Company", "ec0bae": "Hangzhou BroadLink Technology Co.,Ltd", + "ec0c96": "Nokia", "ec0d9a": "Mellanox Technologies, Inc.", "ec0de4": "Amazon Technologies Inc.", "ec0ec4": "Hon Hai Precision Ind. Co.,Ltd.", @@ -31622,6 +32365,7 @@ "ec50aa": "Aruba, a Hewlett Packard Enterprise Company", "ec51bc": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "ec52dc": "WORLD MEDIA AND TECHNOLOGY Corp.", + "ec5382": "Honor Device Co., Ltd.", "ec542e": "Shanghai XiMei Electronic Technology Co. Ltd", "ec551c": "HUAWEI TECHNOLOGIES CO.,LTD", "ec55f9": "Hon Hai Precision Ind. Co.,Ltd.", @@ -31647,6 +32391,7 @@ "ec656e": "The Things Industries B.V.", "ec65cc": "Panasonic Automotive Systems Company of America", "ec66d1": "B&W Group LTD", + "ec6794": "Aruba, a Hewlett Packard Enterprise Company", "ec6881": "Palo Alto Networks", "ec6c9a": "Arcadyan Corporation", "ec6c9f": "Chengdu Volans Technology CO.,LTD", @@ -31656,6 +32401,7 @@ "ec71db": "Reolink Innovation Limited", "ec7379": "Apple, Inc.", "ec7427": "eero inc.", + "ec748c": "Sony Interactive Entertainment Inc.", "ec74ba": "Hirschmann Automation and Control GmbH", "ec74d7": "Grandstream Networks Inc", "ec753e": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -31697,7 +32443,7 @@ "ec9233": "Eddyfi NDT Inc", "ec9327": "MEMMERT GmbH + Co. KG", "ec9365": "Mapper.ai, Inc.", - "ec937d": "Technicolor CH USA Inc.", + "ec937d": "Vantiva USA LLC", "ec93ed": "DDoS-Guard LTD", "ec9468": "META SYSTEM SPA ", "ec94cb": "Espressif Inc.", @@ -31718,10 +32464,11 @@ "eca138": "Amazon Technologies Inc.", "eca1d1": "HUAWEI TECHNOLOGIES CO.,LTD", "eca29b": "Kemppi Oy", + "eca2a0": "Taicang T&W Electronics", "eca5de": "ONYX WIFI Inc", "eca62f": "HUAWEI TECHNOLOGIES CO.,LTD", "eca7ad": "Barrot Technology Co.,Ltd.", - "eca81f": "Technicolor CH USA Inc.", + "eca81f": "Vantiva USA LLC", "eca86b": "Elitegroup Computer Systems Co.,Ltd.", "eca907": "Apple, Inc.", "eca940": "ARRIS Group, Inc.", @@ -31729,9 +32476,12 @@ "ecaa25": "Samsung Electronics Co.,Ltd", "ecaa8f": "HUAWEI TECHNOLOGIES CO.,LTD", "ecaaa0": "PEGATRON CORPORATION", + "ecab3e": "ESSYS", "ecadb8": "Apple, Inc.", "ecade0": "D-Link International", "ecaf97": "GIT", + "ecaff9": "Hailo Technologies Ltd.", + "ecb0d2": "EM Microelectronic", "ecb0e1": "Ciena Corporation", "ecb106": "Acuro Networks, Inc", "ecb1d7": "Hewlett Packard", @@ -31789,6 +32539,7 @@ "ece6a2": "Fiberhome Telecommunication Technologies Co.,LTD", "ece744": "Omntec mfg. inc", "ece7a7": "Intel Corporate", + "ece7c2": "China Mobile Group Device Co.,Ltd.", "ece90b": "SISTEMA SOLUCOES ELETRONICAS LTDA - EASYTECH", "ece915": "STI Ltd", "ece9f8": "Guang Zhou TRI-SUN Electronics Technology Co., Ltd", @@ -31796,6 +32547,7 @@ "ecebb8": "Hewlett Packard Enterprise", "eced73": "Motorola Mobility LLC, a Lenovo Company", "eceed8": "ZTLX Network Technology Co.,Ltd", + "ecef17": "Sunplus Technology Co., Ltd.", "ecf00e": "AboCom", "ecf0fe": "zte corporation", "ecf22b": "TECNO MOBILE LIMITED", @@ -31839,6 +32591,7 @@ "f0182b": "LG Chem", "f01898": "Apple, Inc.", "f01aa0": "Aruba, a Hewlett Packard Enterprise Company", + "f01b24": "zte corporation", "f01b6c": "vivo Mobile Communication Co., Ltd.", "f01c2d": "Juniper Networks", "f01d2d": "Cisco Systems, Inc", @@ -31846,6 +32599,8 @@ "f01e34": "ORICO Technologies Co., Ltd", "f01faf": "Dell Inc.", "f01fc7": "Apple, Inc.", + "f020ff": "Intel Corporate", + "f02178": "UNIONMAN TECHNOLOGY CO.,LTD", "f0219d": "Cal-Comp Electronics & Communications Company Ltd.", "f021e0": "eero inc.", "f0221d": "IEEE Registration Authority", @@ -31868,6 +32623,7 @@ "f02a23": "Creative Next Design", "f02a2b": "IEEE Registration Authority", "f02a61": "Waldo Networks, Inc.", + "f02b7c": "Extreme Networks Headquarters", "f02e51": "Casa Systems", "f02f4b": "Apple, Inc.", "f02f74": "ASUSTek COMPUTER INC.", @@ -31927,7 +32683,7 @@ "f0625a": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", "f06281": "ProCurve Networking by HP", "f063f9": "HUAWEI TECHNOLOGIES CO.,LTD", - "f06426": "Extreme Networks, Inc.", + "f06426": "Extreme Networks Headquarters", "f065ae": "Samsung Electronics Co.,Ltd", "f065c2": "Co.,Ltd.", "f065dd": "Primax Electronics Ltd.", @@ -31980,6 +32736,7 @@ "f08bfe": "COSTEL.,CO.LTD", "f08cfb": "Fiberhome Telecommunication Technologies Co.,LTD", "f08edb": "VeloCloud Networks", + "f09008": "Shenzhen Skyworth Digital Technology CO., Ltd", "f0921c": "Hewlett Packard", "f092b4": "Sichuan Tianyi Comheart Telecom Co.,LTD", "f0933a": "NxtConect", @@ -31995,7 +32752,7 @@ "f09bb8": "HUAWEI TECHNOLOGIES CO.,LTD", "f09cbb": "RaonThink Inc.", "f09cd7": "Guangzhou Blue Cheetah Intelligent Technology Co., Ltd.", - "f09ce9": "Extreme Networks, Inc.", + "f09ce9": "Extreme Networks Headquarters", "f09e4a": "Intel Corporate", "f09e63": "Cisco Systems, Inc", "f09fc2": "Ubiquiti Inc", @@ -32005,11 +32762,13 @@ "f0a35a": "Apple, Inc.", "f0a3b2": "Hui Zhou Gaoshengda Technology Co.,LTD", "f0a654": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", + "f0a731": "TP-Link Corporation Limited", "f0a764": "GST Co., Ltd.", "f0a7b2": "FUTABA CORPORATION", "f0a951": "HUAWEI TECHNOLOGIES CO.,LTD", "f0a968": "Antailiye Technology Co.,Ltd", "f0aa0b": "Arra Networks/ Spectramesh", + "f0ab1f": "zte corporation", "f0ab54": "MITSUMI ELECTRIC CO.,LTD.", "f0aca4": "HBC-radiomatic", "f0acd7": "IEEE Registration Authority", @@ -32052,6 +32811,7 @@ "f0c371": "Apple, Inc.", "f0c42f": "Huawei Device Co., Ltd.", "f0c478": "HUAWEI TECHNOLOGIES CO.,LTD", + "f0c558": "U.D.Electronic Corp.", "f0c725": "Apple, Inc.", "f0c745": "TECNO MOBILE LIMITED", "f0c77f": "Texas Instruments", @@ -32101,6 +32861,7 @@ "f0edb8": "PRIVATE LIMITED", "f0ee10": "Samsung Electronics Co.,Ltd", "f0ee58": "PACE Telematics GmbH", + "f0ee7a": "Apple, Inc.", "f0eebb": "VIPAR GmbH", "f0ef86": "Google, Inc.", "f0efd2": "TF PAYMENT SERVICE CO., LTD", @@ -32179,6 +32940,7 @@ "f4239c": "TECHNOLOGIES CORPORATION", "f42462": "Co., Ltd", "f42679": "Intel Corporate", + "f42756": "DASAN Newtork Solutions", "f42833": "MMPC Inc.", "f42853": "Ltd.", "f42896": "SPECTO PAINEIS ELETRONICOS LTDA", @@ -32186,8 +32948,10 @@ "f42a7d": "TP-LINK TECHNOLOGIES CO.,LTD.", "f42b48": "Ubiqam", "f42b7d": "Chipsguide technology CO.,LTD.", + "f42b8c": "Samsung Electronics Co.,Ltd", "f42c56": "SENOR TECH CO LTD", "f42d06": "zte corporation", + "f42e48": "zte corporation", "f42e7f": "Aruba, a Hewlett Packard Enterprise Company", "f4308b": "Xiaomi Communications Co Ltd", "f430b9": "Hewlett Packard", @@ -32201,7 +32965,10 @@ "f43814": "Shanghai Howell Electronic Co.,Ltd", "f438c1": "Huawei Device Co., Ltd.", "f43909": "Hewlett Packard", + "f43a7b": "zte corporation", "f43bd8": "Intel Corporate", + "f43c3b": "HUNAN FN-LINK TECHNOLOGY LIMITED", + "f43c96": "Ericsson AB", "f43d80": "FAG Industrial Services GmbH", "f43e61": "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "f43e66": "Limited", @@ -32234,6 +33001,7 @@ "f450eb": "Telechips Inc", "f45214": "Mellanox Technologies, Inc.", "f45420": "TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO ", + "f45424": "Extreme Networks Headquarters", "f45433": "Rockwell Automation", "f45595": "HENGBAO Corporation LTD.", "f4559c": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -32272,7 +33040,7 @@ "f46d3f": "Intel Corporate", "f46de2": "zte corporation", "f46e24": "NEC Personal Computers, Ltd.", - "f46e95": "Extreme Networks, Inc.", + "f46e95": "Extreme Networks Headquarters", "f46f4e": "Echowell", "f46fa4": "Physik Instrumente GmbH & Co. KG", "f46fed": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -32333,6 +33101,7 @@ "f4a739": "Juniper Networks", "f4a80d": "Wistron InfoComm(Kunshan)Co.,Ltd.", "f4a997": "CANON INC.", + "f4aad0": "OHSUNG", "f4acc1": "Cisco Systems, Inc", "f4afe7": "Apple, Inc.", "f4b164": "Lightning Telecommunications Technology Co. Ltd", @@ -32347,6 +33116,7 @@ "f4b5aa": "zte corporation", "f4b5bb": "CERAGON NETWORKS", "f4b688": "PLANTRONICS, INC.", + "f4b6c6": "Indra Heera Technology LLP", "f4b6e5": "TerraSem Co.,Ltd", "f4b72a": "TIME INTERCONNECT LTD", "f4b78d": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -32363,8 +33133,9 @@ "f4beec": "Apple, Inc.", "f4bf80": "HUAWEI TECHNOLOGIES CO.,LTD", "f4bfa8": "Juniper Networks", + "f4bfbb": "China Mobile Group Device Co.,Ltd.", "f4c02f": "BlueBite", - "f4c114": "Technicolor CH USA Inc.", + "f4c114": "Vantiva USA LLC", "f4c248": "Samsung Electronics Co.,Ltd", "f4c447": "Coagent International Enterprise Limited", "f4c4d6": "Shenzhen Xinfa Electronic Co.,ltd", @@ -32377,13 +33148,14 @@ "f4c88a": "Intel Corporate", "f4ca24": "FreeBit Co., Ltd.", "f4cae5": "FREEBOX SAS", + "f4cae7": "Arcadyan Corporation", "f4cb52": "HUAWEI TECHNOLOGIES CO.,LTD", "f4cc55": "Juniper Networks", "f4cd90": "Vispiron Rotec GmbH", "f4ce23": "Intel Corporate", "f4ce36": "Nordic Semiconductor ASA", "f4ce46": "Hewlett Packard", - "f4ce48": "Extreme Networks, Inc.", + "f4ce48": "Extreme Networks Headquarters", "f4cfa2": "Espressif Inc.", "f4cfe2": "Cisco Systems, Inc", "f4d032": "Yunnan Ideal Information&Technology.,Ltd", @@ -32416,12 +33188,13 @@ "f4e578": "LLC Proizvodstvennaya Kompania TransService", "f4e5f2": "HUAWEI TECHNOLOGIES CO.,LTD", "f4e6d7": "Solar Power Technologies, Inc.", + "f4e84f": "zte corporation", "f4e8c7": "Apple, Inc.", "f4e926": "Tianjin Zanpu Technology Inc.", "f4e975": "New H3C Technologies Co., Ltd", "f4e9d4": "QLogic Corporation", "f4ea67": "Cisco Systems, Inc", - "f4eab5": "Extreme Networks, Inc.", + "f4eab5": "Extreme Networks Headquarters", "f4eb38": "Sagemcom Broadband SAS", "f4eb9f": "Ellu Company 2019 SL", "f4ec38": "TP-LINK TECHNOLOGIES CO.,LTD.", @@ -32500,6 +33273,7 @@ "f82387": "Shenzhen Horn Audio Co.,Ltd.", "f823b2": "HUAWEI TECHNOLOGIES CO.,LTD", "f82441": "Yeelink", + "f824db": "EntryPoint Networks, Inc", "f824e4": "Co., Ltd", "f82551": "Seiko Epson Corporation", "f8272e": "Mercku", @@ -32512,6 +33286,7 @@ "f82c18": "2Wire Inc", "f82d7c": "Apple, Inc.", "f82dc0": "ARRIS Group, Inc.", + "f82e0c": "Texas Instruments", "f82e3f": "HUAWEI TECHNOLOGIES CO.,LTD", "f82e8e": "Nanjing Kechen Electric Co., Ltd.", "f82edb": "RTW GmbH & Co. KG", @@ -32534,8 +33309,9 @@ "f8369b": "Texas Instruments", "f83869": "LG Electronics", "f83880": "Apple, Inc.", - "f83b1d": "Technicolor CH USA Inc.", + "f83b1d": "Vantiva USA LLC", "f83b7e": "Huawei Device Co., Ltd.", + "f83c44": "SHENZHEN TRANSCHAN TECHNOLOGY LIMITED", "f83c80": "MITSUMI ELECTRIC CO.,LTD.", "f83cbf": "BOTATO ELECTRONICS SDN BHD", "f83d4e": "Softlink Automation System Co., Ltd", @@ -32571,6 +33347,7 @@ "f85329": "HUAWEI TECHNOLOGIES CO.,LTD", "f854af": "ECI Telecom Ltd.", "f854b8": "Amazon Technologies Inc.", + "f854f6": "AzureWave Technology Inc.", "f85548": "Texas Instruments", "f855cd": "Visteon Corporation", "f856c3": "zte corporation", @@ -32588,7 +33365,7 @@ "f85c7e": "Shenzhen Honesty Electronics Co.,Ltd.", "f85e0b": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", "f85e3c": "SHENZHEN ZHIBOTONG ELECTRONICS CO.,LTD", - "f85e42": "Technicolor CH USA Inc.", + "f85e42": "Vantiva USA LLC", "f85ea0": "Intel Corporate", "f85f2a": "Nokia Corporation", "f860f0": "Aruba, a Hewlett Packard Enterprise Company", @@ -32600,6 +33377,7 @@ "f864b8": "zte corporation", "f86601": "Suzhou Chi-tek information technology Co., Ltd", "f8665a": "Apple, Inc.", + "f86691": "Sichuan Tianyi Comheart Telecom Co.,LTD", "f866d1": "Hon Hai Precision Ind. Co.,Ltd.", "f866f2": "Cisco Systems, Inc", "f86971": "Seibu Electric Co.,", @@ -32610,6 +33388,7 @@ "f86d73": "Zengge Co., Limited", "f86ecf": "Arcx Inc", "f86eee": "HUAWEI TECHNOLOGIES CO.,LTD", + "f86fb0": "TP-LINK TECHNOLOGIES CO.,LTD.", "f86fc1": "Apple, Inc.", "f86fde": "Shenzhen Goodix Technology Co.,Ltd.", "f8710c": "Xiaomi Communications Co Ltd", @@ -32623,6 +33402,7 @@ "f877b8": "Samsung Electronics Co.,Ltd", "f87907": "Huawei Device Co., Ltd.", "f8790a": "ARRIS Group, Inc.", + "f87928": "zte corporation", "f87999": "Guangdong Jiuzhi Technology Co.,Ltd", "f87a41": "Cisco Systems, Inc", "f87aef": "Rosonix Technology, Inc.", @@ -32659,6 +33439,7 @@ "f89522": "HUAWEI TECHNOLOGIES CO.,LTD", "f89550": "Proton Products Chengdu Ltd", "f895ea": "Apple, Inc.", + "f89725": "OPPLE LIGHTING CO., LTD", "f89753": "Huawei Device Co., Ltd.", "f897a9": "Ericsson AB", "f897cf": "DAESHIN-INFORMATION TECHNOLOGY CO., LTD.", @@ -32733,7 +33514,9 @@ "f8c397": "NZXT Corp. Ltd.", "f8c39e": "HUAWEI TECHNOLOGIES CO.,LTD", "f8c3cc": "Apple, Inc.", + "f8c4ae": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "f8c4f3": "Shanghai Infinity Wireless Technologies Co.,Ltd.", + "f8c650": "Cisco Systems, Inc", "f8c678": "Carefusion", "f8c96c": "Fiberhome Telecommunication Technologies Co.,LTD", "f8ca59": "NetComm Wireless", @@ -32747,7 +33530,7 @@ "f8d0ac": "Sony Interactive Entertainment Inc.", "f8d0bd": "Samsung Electronics Co.,Ltd", "f8d111": "TP-LINK TECHNOLOGIES CO.,LTD.", - "f8d2ac": "Technicolor CH USA Inc.", + "f8d2ac": "Vantiva USA LLC", "f8d3a9": "AXAN Networks", "f8d462": "Pumatronix Equipamentos Eletronicos Ltda.", "f8d478": "Pvt Ltd", @@ -32774,6 +33557,7 @@ "f8e4e3": "Intel Corporate", "f8e4fb": "Actiontec Electronics, Inc", "f8e57e": "Cisco Systems, Inc", + "f8e5ce": "Apple, Inc.", "f8e5cf": "CGI IT UK LIMITED", "f8e61a": "Samsung Electronics Co.,Ltd", "f8e71e": "Ruckus Wireless", @@ -32791,6 +33575,7 @@ "f8f005": "Newport Media Inc.", "f8f014": "RackWare Inc.", "f8f082": "NAGTECH LLC", + "f8f09d": "Hangzhou Prevail Communication Technology Co., Ltd", "f8f0c5": "Suzhou Kuhan Information Technologies Co.,Ltd.", "f8f1b6": "Motorola Mobility LLC, a Lenovo Company", "f8f1e6": "Samsung Electronics Co.,Ltd", @@ -32804,6 +33589,7 @@ "f8fb2f": "Santur Corporation", "f8fce1": "Amazon Technologies Inc.", "f8fe5c": "Reciprocal Labs Corp", + "f8fe5e": "Intel Corporate", "f8fea8": "Technico Japan Corporation", "f8ff0b": "Electronic Technology Inc.", "f8ff5f": "Shenzhen Communication Technology Co.,Ltd", @@ -32823,7 +33609,7 @@ "fc0877": "Prentke Romich Company", "fc09d8": "ACTEON Group", "fc09f6": "GUANGDONG TONZE ELECTRIC CO.,LTD", - "fc0a81": "Extreme Networks, Inc.", + "fc0a81": "Extreme Networks Headquarters", "fc0c45": "Shenzhen SuperElectron Technology Co.,Ltd.", "fc0f4b": "Texas Instruments", "fc0fe6": "Sony Interactive Entertainment Inc.", @@ -32909,6 +33695,7 @@ "fc4596": "CO., LTD. ", "fc45c3": "Texas Instruments", "fc47d8": "Apple, Inc.", + "fc48c9": "Yobiiq Intelligence B.V.", "fc48ef": "HUAWEI TECHNOLOGIES CO.,LTD", "fc492d": "Amazon Technologies Inc.", "fc4ae9": "Castlenet Technology Inc.", @@ -32919,9 +33706,10 @@ "fc4da6": "HUAWEI TECHNOLOGIES CO.,LTD", "fc4dd4": "Universal Global Scientific Industrial Co., Ltd.", "fc4ea4": "Apple, Inc.", + "fc500c": "Sitehop Ltd", "fc5090": "SIMEX Sp. z o.o.", "fc51a4": "ARRIS Group, Inc.", - "fc528d": "Technicolor CH USA Inc.", + "fc528d": "Vantiva USA LLC", "fc52ce": "Control iD", "fc539e": "Shanghai Wind Technologies Co.,Ltd", "fc55dc": "Baltic Latvian Universal Electronics LLC", @@ -32930,6 +33718,8 @@ "fc589a": "Cisco Systems, Inc", "fc58df": "Interphone Service", "fc58fa": "Shen Zhen Shi Xin Zhong Xin Technology Co.,Ltd.", + "fc599f": "Ruijie Networks Co.,LTD", + "fc59c0": "Arista Networks", "fc5a1d": "Hitron Technologies. Inc", "fc5b24": "Weibel Scientific A/S", "fc5b26": "MikroBits", @@ -32976,11 +33766,13 @@ "fc8399": "Avaya Inc", "fc83c6": "N-Radio Technologies Co., Ltd.", "fc8417": "Honor Device Co., Ltd.", + "fc84a7": "Murata Manufacturing Co., Ltd.", "fc8596": "Axonne Inc.", "fc862a": "Huawei Device Co., Ltd.", "fc8743": "HUAWEI TECHNOLOGIES CO.,LTD", "fc8a3d": "zte corporation", "fc8b97": "SHENZHEN GONGJIN ELECTRONICS CO.,LT", + "fc8c11": "Microsoft Corporation", "fc8d3d": "Leapfive Tech. Ltd.", "fc8e5b": "China Mobile Iot Limited company", "fc8e6e": "StreamCCTV, LLC", @@ -32989,16 +33781,18 @@ "fc8f90": "Samsung Electronics Co.,Ltd", "fc8fc4": "Intelligent Technology Inc.", "fc90fa": "Independent Technologies", - "fc9114": "Technicolor CH USA Inc.", + "fc9114": "Vantiva USA LLC", "fc9189": "Sichuan Tianyi Comheart Telecom Co.,LTD", "fc923b": "Nokia Corporation", "fc9257": "Sdn. Bhd.", + "fc936b": "Samsung Electronics Co.,Ltd", "fc9435": "HUAWEI TECHNOLOGIES CO.,LTD", "fc946c": "UBIVELOX", "fc94ce": "zte corporation", - "fc94e3": "Technicolor CH USA Inc.", + "fc94e3": "Vantiva USA LLC", "fc956a": "OCTAGON SYSTEMS CORP.", "fc9643": "Juniper Networks", + "fc97a8": "Cricut Inc.", "fc9947": "Cisco Systems, Inc", "fc9afa": "Motus Global Inc.", "fc9bc6": "Sumavision Technologies Co.,Ltd", @@ -33027,6 +33821,7 @@ "fca89b": "Texas Instruments", "fca9b0": "INC.", "fca9dc": "Sdn. Bhd.", + "fca9f5": "Xiaomi Communications Co Ltd", "fcaa14": "GIGA-BYTE TECHNOLOGY CO.,LTD.", "fcaa81": "Apple, Inc.", "fcaab6": "Samsung Electronics Co.,Ltd", @@ -33039,7 +33834,9 @@ "fcb0c4": "Shanghai DareGlobal Technologies Co.,Ltd", "fcb0de": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "fcb10d": "Shenzhen Tian Kun Technology Co.,LTD.", + "fcb2d6": "CIG SHANGHAI CO LTD", "fcb3bc": "Intel Corporate", + "fcb467": "Espressif Inc.", "fcb4e6": "ASKEY COMPUTER CORP", "fcb58a": "Wapice Ltd.", "fcb662": "IC Holdings LLC", @@ -33048,6 +33845,7 @@ "fcb6d8": "Apple, Inc.", "fcb7f0": "Idaho National Laboratory", "fcb97e": "GE Appliances", + "fcb9df": "Motorola Mobility LLC, a Lenovo Company", "fcbba1": "Shenzhen Minicreate Technology Co.,Ltd", "fcbc0e": "Zhejiang Cainiao Supply Chain Management Co., Ltd", "fcbc9c": "Vimar Spa", @@ -33108,9 +33906,11 @@ "fcf528": "Zyxel Communications Corporation", "fcf5c4": "Espressif Inc.", "fcf647": "Fiberhome Telecommunication Technologies Co.,LTD", + "fcf763": "Co., LTd", "fcf77b": "Huawei Device Co., Ltd.", "fcf8ae": "Intel Corporate", "fcf8b7": "TRONTEQ Electronic", + "fcfa21": "zte corporation", "fcfaf7": "Shanghai Baud Data Communication Co.,Ltd.", "fcfbfb": "Cisco Systems, Inc", "fcfc48": "Apple, Inc.", diff --git a/netutils/data_files/protocol_mappings.py b/netutils/data_files/protocol_mappings.py index f8d27f65..a78ccb75 100644 --- a/netutils/data_files/protocol_mappings.py +++ b/netutils/data_files/protocol_mappings.py @@ -719,6 +719,8 @@ "xact-backup": {"port_number": 911, "protocols": ["tcp", "udp"]}, "apex-mesh": {"port_number": 912, "protocols": ["tcp", "udp"]}, "apex-edge": {"port_number": 913, "protocols": ["tcp", "udp"]}, + "rift-lies": {"port_number": 914, "protocols": ["udp"]}, + "rift-ties": {"port_number": 915, "protocols": ["udp"]}, "rndc": {"port_number": 953, "protocols": ["tcp"]}, "ftps-data": {"port_number": 989, "protocols": ["tcp", "udp"]}, "ftps": {"port_number": 990, "protocols": ["tcp", "udp"]}, @@ -2005,6 +2007,7 @@ "pcc-mfp": {"port_number": 2256, "protocols": ["tcp", "udp"]}, "simple-tx-rx": {"port_number": 2257, "protocols": ["tcp", "udp"]}, "rcts": {"port_number": 2258, "protocols": ["tcp", "udp"]}, + "bid-serv": {"port_number": 2259, "protocols": ["tcp", "udp"]}, "apc-2260": {"port_number": 2260, "protocols": ["tcp", "udp"]}, "comotionmaster": {"port_number": 2261, "protocols": ["tcp", "udp"]}, "comotionback": {"port_number": 2262, "protocols": ["tcp", "udp"]}, @@ -2119,6 +2122,7 @@ "qip-login": {"port_number": 2366, "protocols": ["tcp", "udp"]}, "service-ctrl": {"port_number": 2367, "protocols": ["tcp", "udp"]}, "opentable": {"port_number": 2368, "protocols": ["tcp", "udp"]}, + "bif-p2p": {"port_number": 2369, "protocols": ["tcp", "udp"]}, "l3-hbmon": {"port_number": 2370, "protocols": ["tcp", "udp"]}, "rda-secondary": {"port_number": 2371, "protocols": ["tcp"]}, "lanmessenger": {"port_number": 2372, "protocols": ["tcp", "udp"]}, @@ -5857,6 +5861,7 @@ "dsmcc-download": {"port_number": 13821, "protocols": ["tcp", "udp"]}, "dsmcc-ccp": {"port_number": 13822, "protocols": ["tcp", "udp"]}, "bmdss": {"port_number": 13823, "protocols": ["tcp"]}, + "a-trust-rpc": {"port_number": 13832, "protocols": ["tcp"]}, "ucontrol": {"port_number": 13894, "protocols": ["tcp", "udp"]}, "dta-systems": {"port_number": 13929, "protocols": ["tcp", "udp"]}, "medevolve": {"port_number": 13930, "protocols": ["tcp"]}, diff --git a/netutils/interface.py b/netutils/interface.py index fb170fc3..0c50625c 100644 --- a/netutils/interface.py +++ b/netutils/interface.py @@ -260,9 +260,7 @@ def abbreviated_interface_name( return interface -# Mypy is currently (0.961) unable to handle the combination of ABC and @total_ordering, see here: -# https://github.com/python/mypy/issues/5374 -@total_ordering # type: ignore +@total_ordering class CharacterClass(ABC): """CharacterClass embodies the state needed to sort interfaces.""" diff --git a/netutils/lib_mapper.py b/netutils/lib_mapper.py index 5fd9310f..076deaff 100644 --- a/netutils/lib_mapper.py +++ b/netutils/lib_mapper.py @@ -140,6 +140,7 @@ "sros": "nokia_sros", "vyos": "brocade_vyos", "aoscx": "aruba_aoscx", + "ros": "mikrotik_routeros", } PYNTC_LIB_MAPPER = { @@ -202,6 +203,15 @@ "aruba_aoscx": "aruba_aoscx", } +HIERCONFIG_LIB_MAPPER = { + "ios": "cisco_ios", + "iosxe": "cisco_xe", + "iosxr": "cisco_xr", + "nxos": "cisco_nxos", + "eos": "arista_eos", + "fastiron": "ruckus_fastiron", +} + NAPALM_LIB_MAPPER_REVERSE = { "arista_eos": "eos", "brocade_vyos": "vyos", @@ -216,6 +226,7 @@ "paloalto_panos": "panos", "nokia_sros": "sros", "aruba_aoscx": "aoscx", + "mikrotik_routeros": "ros", } PYNTC_LIB_MAPPER_REVERSE = { @@ -277,6 +288,15 @@ "aruba_aoscx": "aruba_aoscx", } +HIERCONFIG_LIB_MAPPER_REVERSE = { + "cisco_ios": "ios", + "cisco_xe": "iosxe", + "cisco_xr": "iosxr", + "cisco_nxos": "nxos", + "arista_eos": "eos", + "ruckus_fastiron": "fastiron", +} + # Deep copy the reverse, where there is no actual translation happening. NETMIKO_LIB_MAPPER_REVERSE = copy.deepcopy(NETMIKO_LIB_MAPPER) NTCTEMPLATES_LIB_MAPPER_REVERSE = copy.deepcopy(NTCTEMPLATES_LIB_MAPPER) diff --git a/netutils/os_version.py b/netutils/os_version.py new file mode 100644 index 00000000..09268de9 --- /dev/null +++ b/netutils/os_version.py @@ -0,0 +1,49 @@ +"""Functions for working with OS Versions.""" +import typing as t +from distutils.version import LooseVersion # pylint: disable=deprecated-module + + +def get_upgrade_path( + current_version: str, + target_version: str, + firmware_list: t.List[str], +) -> t.List[str]: + """Utility to return the upgrade path from the current to target firmware version. + + Returns: + List of firmware versions to upgrade from current to target. + + Args: + current_version: Current firmware version. + target_version: Target firmware version. + firmware_list: List of firmware versions to use as the upgrade path. + + Raises: + ValueError: If target version is older than current version. + ValueError: If target version equals current version. + + Examples: + >>> from netutils.os_version import get_upgrade_path + >>> get_upgrade_path("9.1.6", "10.1.9", ["9.1.10", "9.1.15-h1", "10.0.0", "10.1.9"]) + ['9.1.10', '9.1.15-h1', '10.0.0', '10.1.9'] + >>> from netutils.constants import UPGRADE_PATHS + >>> get_upgrade_path("9.1.6", "10.1.9", UPGRADE_PATHS["PANOS_OFFICIAL_V1"]) + ['9.1.15-h1', '10.0.0', '10.0.12', '10.1.0', '10.1.9'] + """ + if LooseVersion(current_version) > LooseVersion(target_version): + raise ValueError("Target version must be newer than current version.") + + if LooseVersion(current_version) == LooseVersion(target_version): + raise ValueError("Target version equals current version. No upgrade necessary.") + + upgrade_path = [ + version + for version in firmware_list + if LooseVersion(version) > LooseVersion(current_version) + and LooseVersion(version) <= LooseVersion(target_version) + ] + + if target_version not in upgrade_path: + upgrade_path.append(target_version) + + return upgrade_path diff --git a/netutils/password.py b/netutils/password.py index 282b215f..02f1bd86 100644 --- a/netutils/password.py +++ b/netutils/password.py @@ -1,6 +1,7 @@ """Functions for working with Passwords.""" -import crypt +# TODO: Swap out crypt prior to py3.13 +import crypt # pylint: disable=deprecated-module import random import secrets import string @@ -8,12 +9,22 @@ import ast import typing as t from functools import wraps +import base64 + +try: + from hashlib import scrypt + + HAS_SCRYPT = True +except ImportError: + HAS_SCRYPT = False + # Code example from Python docs ALPHABET = string.ascii_letters + string.digits DEFAULT_PASSWORD_CHARS = "".join((string.ascii_letters + string.digits + ".,:-_")) DEFAULT_PASSWORD_LENGTH = 20 ENCRYPT_TYPE7_LENGTH = 25 +ENCRYPT_TYPE9_ENCODING_CHARS = "".join(("./", string.digits, string.ascii_uppercase, string.ascii_lowercase)) XLAT = [ "0x64", @@ -71,6 +82,24 @@ "0x37", ] +JUNIPER_ENCODING = [ + [1, 4, 32], + [1, 16, 32], + [1, 8, 32], + [1, 64], + [1, 32], + [1, 4, 16, 128], + [1, 32, 64], +] + +JUNIPER_KEYS = ["QzF3n6/9CAtpu0O", "B1IREhcSyrleKvMW8LXx", "7N-dVbwsY2g4oaJZGUDj", "iHkq.mPf5T"] +JUNIPER_KEYS_STRING = "".join(JUNIPER_KEYS) +JUNIPER_KEYS_LENGTH = len(JUNIPER_KEYS_STRING) +JUNIPER_CHARACTER_KEYS: t.Dict[str, int] = {} +for idx, jun_key in enumerate(JUNIPER_KEYS): + for character in jun_key: + JUNIPER_CHARACTER_KEYS[character] = 3 - idx + def _fail_on_mac(func: t.Callable[..., t.Any]) -> t.Callable[..., t.Any]: """There is an issue with Macintosh for encryption.""" @@ -84,7 +113,7 @@ def decorated(*args: t.Any, **kwargs: t.Any) -> t.Any: return decorated -def compare_type5( +def compare_cisco_type5( unencrypted_password: str, encrypted_password: str, return_original: bool = False ) -> t.Union[str, bool]: """Given an encrypted and unencrypted password of Cisco Type 5 password, compare if they are a match. @@ -98,22 +127,22 @@ def compare_type5( Whether or not the password is as compared to. Examples: - >>> from netutils.password import compare_type5 - >>> compare_type5("cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") + >>> from netutils.password import compare_cisco_type5 + >>> compare_cisco_type5("cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") True - >>> compare_type5("not_cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") + >>> compare_cisco_type5("not_cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") False >>> """ salt = get_hash_salt(encrypted_password) - if encrypt_type5(unencrypted_password, salt) == encrypted_password: + if encrypt_cisco_type5(unencrypted_password, salt) == encrypted_password: if return_original is True: return encrypted_password return True return False -def compare_type7( +def compare_cisco_type7( unencrypted_password: str, encrypted_password: str, return_original: bool = False ) -> t.Union[str, bool]: """Given an encrypted and unencrypted password of Cisco Type 7 password, compare if they are a match. @@ -127,21 +156,50 @@ def compare_type7( Whether or not the password is as compared to. Examples: - >>> from netutils.password import compare_type7 - >>> compare_type7("cisco","121A0C041104") + >>> from netutils.password import compare_cisco_type7 + >>> compare_cisco_type7("cisco","121A0C041104") + True + >>> compare_cisco_type7("not_cisco","121A0C041104") + False + >>> + """ + if decrypt_cisco_type7(encrypted_password) == unencrypted_password: + if return_original is True: + return encrypted_password + return True + return False + + +def compare_cisco_type9( + unencrypted_password: str, encrypted_password: str, return_original: bool = False +) -> t.Union[str, bool]: + """Given an encrypted and unencrypted password of Cisco Type 9 password, compare if they are a match. + + Args: + unencrypted_password: A password that has not been encrypted, and will be compared against. + encrypted_password: A password that has been encrypted. + return_original: Whether or not to return the original, this is helpful when used to populate the configuration. Defaults to False. + + Returns: + Whether or not the password is as compared to. + + Examples: + >>> from netutils.password import compare_cisco_type9 + >>> compare_cisco_type9("cisco","$9$588|P!iWqEx=Wf$nadLmT9snc6V9QAeUuATSOoCAZMQIHqixJfZpQj5EU2") True - >>> compare_type7("not_cisco","121A0C041104") + >>> compare_cisco_type9("not_cisco","$9$588|P!iWqEx=Wf$nadLmT9snc6V9QAeUuATSOoCAZMQIHqixJfZpQj5EU2") False >>> """ - if decrypt_type7(encrypted_password) == unencrypted_password: + salt = get_hash_salt(encrypted_password) + if encrypt_cisco_type9(unencrypted_password, salt) == encrypted_password: if return_original is True: return encrypted_password return True return False -def decrypt_type7(encrypted_password: str) -> str: +def decrypt_cisco_type7(encrypted_password: str) -> str: """Given an unencrypted password of Cisco Type 7 password decrypt it. Args: @@ -151,8 +209,8 @@ def decrypt_type7(encrypted_password: str) -> str: The unencrypted_password password. Examples: - >>> from netutils.password import decrypt_type7 - >>> decrypt_type7("121A0C041104") + >>> from netutils.password import decrypt_cisco_type7 + >>> decrypt_cisco_type7("121A0C041104") 'cisco' >>> """ @@ -172,7 +230,7 @@ def decrypt_type7(encrypted_password: str) -> str: @_fail_on_mac -def encrypt_type5(unencrypted_password: str, salt: t.Optional[str] = None, salt_len: int = 4) -> str: +def encrypt_cisco_type5(unencrypted_password: str, salt: t.Optional[str] = None, salt_len: int = 4) -> str: """Given an unencrypted password of Cisco Type 5 password, encrypt it. Args: @@ -184,8 +242,8 @@ def encrypt_type5(unencrypted_password: str, salt: t.Optional[str] = None, salt_ The encrypted password. Examples: - >>> from netutils.password import encrypt_type5 - >>> encrypt_type5("cisco") # doctest: +SKIP + >>> from netutils.password import encrypt_cisco_type5 + >>> encrypt_cisco_type5("cisco") # doctest: +SKIP '$1$MHkb$v2MFmDkQX66TTxLkFF50K/' >>> """ @@ -196,7 +254,7 @@ def encrypt_type5(unencrypted_password: str, salt: t.Optional[str] = None, salt_ return crypt.crypt(unencrypted_password, f"$1${salt}$") -def encrypt_type7(unencrypted_password: str, salt: t.Optional[int] = None) -> str: +def encrypt_cisco_type7(unencrypted_password: str, salt: t.Optional[int] = None) -> str: """Given an unencrypted password of Cisco Type 7 password, encypt it. Args: @@ -207,8 +265,8 @@ def encrypt_type7(unencrypted_password: str, salt: t.Optional[int] = None) -> st The encrypted password. Examples: - >>> from netutils.password import encrypt_type7 - >>> encrypt_type7("cisco", 11) + >>> from netutils.password import encrypt_cisco_type7 + >>> encrypt_cisco_type7("cisco", 11) '110A1016141D' >>> """ @@ -222,7 +280,7 @@ def encrypt_type7(unencrypted_password: str, salt: t.Optional[int] = None) -> st encrypted_password = format(salt, "02d") for i, _ in enumerate(unencrypted_password): # Get the next of the plaintext character. - dec_char = ord(unencrypted_password[i]) + dec_char = ord(unencrypted_password[i]) # pylint: disable=unnecessary-list-index-lookup # Get the next character of the key. key_char = ast.literal_eval(XLAT[(i + salt) % 53]) # XOR the plaintext character with the key character. @@ -233,6 +291,59 @@ def encrypt_type7(unencrypted_password: str, salt: t.Optional[int] = None) -> st return encrypted_password +def encrypt_cisco_type9(unencrypted_password: str, salt: t.Optional[str] = None) -> str: + """Given an unencrypted password of Cisco Type 9 password, encrypt it. + + Note: This uses the built-in Python `scrypt` function to generate the password + hash. However, this function is not available on the default Python installed + on MacOS. If MacOS is used, it is recommended to install Python using Homebrew + (or similar) which will include `scrypt`. + + Args: + unencrypted_password: A password that has not been encrypted, and will be compared against. + salt: a 14-character string that can be set by the operator. Defaults to random generated one. + + Returns: + The encrypted password. + + Examples: + >>> from netutils.password import encrypt_cisco_type9 + >>> encrypt_cisco_type9("123456", "cvWdfQlRRDKq/U") + '$9$cvWdfQlRRDKq/U$VFTPha5VHTCbSgSUAo.nPoh50ZiXOw1zmljEjXkaq1g' + + Raises: + ImportError: If `scrypt` cannot be imported from the system. + """ + if not HAS_SCRYPT: + raise ImportError( + "Your version of python does not have scrypt support built in. " + "Please install a version of python with scrypt." + ) + + if salt: + if len(salt) != 14: + raise ValueError("Salt must be 14 characters long.") + salt_bytes = salt.encode() + else: + # salt must always be a 14-byte-long printable string, often includes symbols + salt_bytes = "".join(secrets.choice(ENCRYPT_TYPE9_ENCODING_CHARS) for _ in range(14)).encode() + + key = scrypt(unencrypted_password.encode(), salt=salt_bytes, n=2**14, r=1, p=1, dklen=32) + + # Cisco type 9 uses a different base64 encoding than the standard one, so we need to translate from + # the standard one to the Cisco one. + type9_encoding_translation_table = str.maketrans( + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", + ENCRYPT_TYPE9_ENCODING_CHARS, + ) + hashed_password = base64.b64encode(key).decode().translate(type9_encoding_translation_table) + + # and strip off the trailing '=' + hashed_password = hashed_password[:-1] + + return f"$9${salt_bytes.decode()}${hashed_password}" + + def get_hash_salt(encrypted_password: str) -> str: """Given an encrypted password obtain the salt value from it. @@ -252,3 +363,103 @@ def get_hash_salt(encrypted_password: str) -> str: if len(split_password) != 4: raise ValueError(f"Could not parse salt out password correctly from {encrypted_password}") return split_password[2] + + +def decrypt_juniper_type9(encrypted_password: str) -> str: + """Given an encrypted Junos $9$ type password, decrypt it. + + Args: + encrypted_password: A password that has been encrypted, and will be decrypted. + + Returns: + The unencrypted_password password. + + Examples: + >>> from netutils.password import decrypt_juniper_type9 + >>> decrypt_juniper_type9("$9$7YdwgGDkTz6oJz69A1INdb") + 'juniper' + >>> + """ + # Strip $9$ from start of string + password_characters = encrypted_password.split("$9$", 1)[1] + + # Get first character and toss extra characters + first_character = password_characters[0] + stripped_password_characters = password_characters[JUNIPER_CHARACTER_KEYS[first_character] + 1 :] # noqa: E203 + + previous_char = first_character + decrypted_password = "" # nosec + while stripped_password_characters: + # Get encoding modulus + decode = JUNIPER_ENCODING[len(decrypted_password) % len(JUNIPER_ENCODING)] + + # Get nibble we will decode + nibble = stripped_password_characters[0 : len(decode)] # noqa: E203 + stripped_password_characters = stripped_password_characters[len(decode) :] # noqa: E203 + + # Decode value for nibble and convert to character, append to decryped password + value = 0 + for index, char in enumerate(nibble): + gap = ( + (JUNIPER_KEYS_STRING.index(char) - JUNIPER_KEYS_STRING.index(previous_char)) % JUNIPER_KEYS_LENGTH + ) - 1 + value += gap * decode[index] + previous_char = char + decrypted_password += chr(value) + + return decrypted_password + + +def encrypt_juniper_type9(unencrypted_password: str, salt: t.Optional[int] = None) -> str: + """Given an unencrypted password, encrypt to Juniper $9$ type password. + + Args: + unencrypted_password: A password that has not been encrypted, and will be compared against. + salt: A integer that can be set by the operator. Defaults to random generated one. + + Returns: + The encrypted password. + + Examples: + >>> from netutils.password import encrypt_juniper_type9 + >>> encrypt_juniper_type9("juniper", 35) # doctest: +SKIP + '$9$7YdwgGDkTz6oJz69A1INdb' + >>> + """ + if not salt: + salt = random.randint(0, JUNIPER_KEYS_LENGTH) - 1 # nosec + + # Use salt to generate start of encrypted password + first_character = JUNIPER_KEYS_STRING[salt] + random_chars = "".join( + [ + JUNIPER_KEYS_STRING[random.randint(0, JUNIPER_KEYS_LENGTH) - 1] # nosec + for x in range(0, JUNIPER_CHARACTER_KEYS[first_character]) + ] + ) + encrypted_password = "$9$" + first_character + random_chars + + previous_character = first_character + for index, char in enumerate(unencrypted_password): + encode = JUNIPER_ENCODING[index % len(JUNIPER_ENCODING)][::-1] # Get encoding modulus in reverse order + char_ord = ord(char) + gaps: t.List[int] = [] + for modulus in encode: + gaps = [int(char_ord / modulus)] + gaps + char_ord %= modulus + + for gap in gaps: + gap += JUNIPER_KEYS_STRING.index(previous_character) + 1 + new_character = JUNIPER_KEYS_STRING[gap % JUNIPER_KEYS_LENGTH] + previous_character = new_character + encrypted_password += new_character + + return encrypted_password + + +# Provide until transition to 2.0 +compare_type5 = compare_cisco_type5 +compare_type7 = compare_cisco_type7 +decrypt_type7 = decrypt_cisco_type7 +encrypt_type5 = encrypt_cisco_type5 +encrypt_type7 = encrypt_cisco_type7 diff --git a/netutils/regex.py b/netutils/regex.py new file mode 100644 index 00000000..67472ddb --- /dev/null +++ b/netutils/regex.py @@ -0,0 +1,158 @@ +"""Utilities to expose regex functions, primarily for Jinja2 filters.""" + +import re +import typing as t + + +def _match_object(match: t.Optional[t.Match[str]]) -> t.Union[t.List[str], str, None]: + """Helper method to better 'serialize' a re.Match object.""" + if not match: + return None + if match.groups(): + results = [] + for group in match.groups(): + results.append(group) + return results + return str(match.group()) + + +def regex_findall(pattern: str, string: str) -> t.List[str]: + r"""Given a regex pattern and string, return all non-overlapping matches of pattern in the string, as a list of strings. + + The main purpose of this function is provide a Jinja2 filter as this is simply a wrapper around `re.findall`. + + Args: + pattern: Regex string to match against. + string: String to check against. + + Returns: + List of matches, when there is no match the list will be empty. + + Examples: + >>> from netutils.regex import regex_findall + >>> match = regex_findall("\w\w\w-RT\d\d", "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01") + >>> len(match) + 3 + >>> match[0] + 'NYC-RT01' + + """ + return re.findall(pattern, string) + + +def regex_match(pattern: str, string: str) -> t.Union[t.List[str], str, None]: + r"""Given a regex pattern and string, return `None` if there is no matching `re.Match.groups()` if using capture groups or regex match via `re.Match.group()` on start of string. + + This is useful in the following use cases: + + 1. Truthy conditional check that a string matches a given regex. + 2. Returning regex capture groups from the string. + 3. Matching for the start of a string, see `regex_search` when you do not want only start of string matching. + + The main purpose of this function is provide a Jinja2 filter as this is simply a wrapper around `re.match`. + + Args: + pattern: Regex string to match against. + string: String to check against. + + Returns: + List of matches, match, or None no match found + + Examples: + >>> from netutils.regex import regex_match + >>> print("South Carolina" if regex_match(".+SC.+\d\d", "USSCAMS07") else "Not South Carolina") + South Carolina + >>> + >>> match = regex_match("([A-Z]{2})([A-Z]{2})([A-Z]{3})(\d*)", "USSCAMS07") + >>> match[0] + 'US' + >>> match[1] + 'SC' + >>> match[2] + 'AMS' + >>> match[3] + '07' + + """ + return _match_object(re.match(pattern, string)) + + +def regex_search(pattern: str, string: str) -> t.Union[t.List[str], str, None]: + r"""Given a regex pattern and string, return `None` if there is no matching `re.Match.groups()` if using capture groups or regex match via `re.Match.group()`. + + The main purpose of this function is provide a Jinja2 filter as this is simply a wrapper around `re.search`. + + Args: + pattern: Regex string to match against. + string: String to check against. + + Returns: + List of matches, match, or None no match found. + + Examples: + >>> from netutils.regex import regex_search + >>> print("South Carolina" if regex_search(".+SC.+\d\d", "USSCAMS07") else "Not South Carolina") + South Carolina + >>> + >>> match = regex_search("^([A-Z]{2})([A-Z]{2})([A-Z]{3})(\d*)", "USSCAMS07") + >>> match[0] + 'US' + >>> match[1] + 'SC' + >>> match[2] + 'AMS' + >>> match[3] + '07' + + """ + return _match_object(re.search(pattern, string)) + + +def regex_split(pattern: str, string: str, maxsplit: int = 0) -> t.List[str]: + """Given a regex pattern and string, return the split the object based on the patern a single element or single element of original value if there is no match. + + The main purpose of this function is provide a Jinja2 filter as this is simply a wrapper around `re.split`. + + Args: + pattern: Regex string to match against. + string: String to check against. + maxsplit: The maximum time to split. + + Returns: + List of string of the match or single element list of original value if no match + + Examples: + >>> from netutils.regex import regex_split + >>> match = regex_split(",", "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01") + >>> match[0] + 'NYC-RT01' + >>> match[3] + 'SFO-RT01' + """ + return re.split(pattern, string, maxsplit) + + +def regex_sub(pattern: str, repl: str, string: str, count: int = 0) -> str: + """Given a regex pattern, replacement, and string replace the pattern within the string and return. + + The main purpose of this function is provide a Jinja2 filter as this is simply a wrapper around `re.sub`. + + Args: + pattern: Regex string to match against. + repl: Replacement characters that were matched in the pattern. + string: String to check against. + count: The maximum time to replace. + + Returns: + List of string of the match or single element list of original value if no match + + Examples: + >>> from netutils.regex import regex_sub + >>> match = regex_sub(",", " ", "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01") + >>> match + 'NYC-RT01 NYC-RT02 SFO-SW01 SFO-RT01' + >>> match = regex_sub("(ROUTER|RTR)", "RT", "NYC-ROUTER01,NYC-ROUTER02,NYC-RTR03") + >>> match + 'NYC-RT01,NYC-RT02,NYC-RT03' + """ + return re.sub(pattern, repl, string, count) diff --git a/netutils/route.py b/netutils/route.py index 2e0e474b..0b1fae7b 100644 --- a/netutils/route.py +++ b/netutils/route.py @@ -38,7 +38,7 @@ def longest_prefix_match(ip_addr: str, routes: t.List[t.Dict[str, str]]) -> str: networks = [ ipaddress.IPv4Network(f'{route["network"]}/{route["mask"]}') for route in routes - if ip_addr in ipaddress.IPv4Network(f'{route["network"]}/{route["mask"]}') # type: ignore + if ip_addr in ipaddress.IPv4Network(f'{route["network"]}/{route["mask"]}') ] try: return str(sorted(networks)[-1]) diff --git a/netutils/utils.py b/netutils/utils.py index ff52ac7a..9580c278 100644 --- a/netutils/utils.py +++ b/netutils/utils.py @@ -54,11 +54,25 @@ "get_oui": "mac.get_oui", "compare_type5": "password.compare_type5", "compare_type7": "password.compare_type7", + "compare_cisco_type5": "password.compare_cisco_type5", + "compare_cisco_type7": "password.compare_cisco_type7", + "compare_cisco_type9": "password.compare_cisco_type9", "decrypt_type7": "password.decrypt_type7", + "decrypt_cisco_type7": "password.decrypt_cisco_type7", + "decrypt_juniper_type9": "password.decrypt_juniper_type9", "encrypt_type5": "password.encrypt_type5", "encrypt_type7": "password.encrypt_type7", + "encrypt_cisco_type5": "password.encrypt_cisco_type5", + "encrypt_cisco_type7": "password.encrypt_cisco_type7", + "encrypt_cisco_type9": "password.encrypt_cisco_type9", + "encrypt_juniper_type9": "password.encrypt_juniper_type9", "get_hash_salt": "password.get_hash_salt", "tcp_ping": "ping.tcp_ping", + "regex_findall": "regex.regex_findall", + "regex_match": "regex.regex_match", + "regex_search": "regex.regex_search", + "regex_split": "regex.regex_split", + "regex_sub": "regex.regex_sub", "longest_prefix_match": "route.longest_prefix_match", "vlanlist_to_config": "vlan.vlanlist_to_config", "vlanconfig_to_list": "vlan.vlanconfig_to_list", @@ -67,6 +81,8 @@ "uptime_seconds_to_string": "time.uptime_seconds_to_string", "uptime_string_to_seconds": "time.uptime_string_to_seconds", "get_napalm_getters": "lib_helpers.get_napalm_getters", + "paloalto_panos_brace_to_set": "config.conversion.paloalto_panos_brace_to_set", + "get_upgrade_path": "os_version.get_upgrade_path", } diff --git a/netutils/vlan.py b/netutils/vlan.py index be2d68d3..7007c4ce 100644 --- a/netutils/vlan.py +++ b/netutils/vlan.py @@ -11,6 +11,7 @@ def vlanlist_to_config( first_line_len: int = 48, other_line_len: int = 44, min_grouping_size: int = 3, + return_empty: bool = False, ) -> t.List[str]: """Given a List of VLANs, build the IOS-like vlan list of configurations. @@ -19,6 +20,7 @@ def vlanlist_to_config( first_line_len: The maximum length of the line of the first element of within the return list. Defaults to 48. other_line_len: The maximum length of the line of all other elements of within the return list. Defaults to 44. min_grouping_size: The minimum consecutive VLANs to aggregate with a hyphen. Defaults to Cisco's minimum grouping size of 3. + return_empty: Whether or not to return an empty list instead of an `ValueError` when vlan_list is empty. Defaults to False. Returns: Sorted string list of integers according to IOS-like vlan list rules @@ -58,6 +60,12 @@ def build_final_vlan_cfg(vlan_cfg: str) -> t.List[str]: vlan_cfg_lines.append(line) return vlan_cfg_lines + if len(vlan_list) == 0 and return_empty: + return [] + + if len(vlan_list) == 0: + raise ValueError("The `vlan_list` argument provided is empty, a list of vlans is required, e.g. [10,20,30].") + # Fail if min_grouping_size is less than 1. if min_grouping_size < 1: raise ValueError("Minimum grouping size must be equal to or greater than one.") diff --git a/poetry.lock b/poetry.lock old mode 100755 new mode 100644 index 7d288fd4..972da29d --- a/poetry.lock +++ b/poetry.lock @@ -1,77 +1,101 @@ +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. + [[package]] name = "alabaster" -version = "0.7.12" +version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.6" +files = [ + {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, + {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, +] [[package]] name = "astroid" -version = "2.11.7" +version = "2.15.6" description = "An abstract syntax tree for Python with inference support." -category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" +files = [ + {file = "astroid-2.15.6-py3-none-any.whl", hash = "sha256:389656ca57b6108f939cf5d2f9a2a825a3be50ba9d589670f393236e0a03b91c"}, + {file = "astroid-2.15.6.tar.gz", hash = "sha256:903f024859b7c7687d7a7f3a3f73b17301f8e42dfd9cc9df9d4418172d3e2dbd"}, +] [package.dependencies] lazy-object-proxy = ">=1.4.0" -setuptools = ">=20.0" -typed-ast = {version = ">=1.4.0,<2.0", markers = "implementation_name == \"cpython\" and python_version < \"3.8\""} -typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} -wrapt = ">=1.11,<2" - -[[package]] -name = "attrs" -version = "22.1.0" -description = "Classes Without Boilerplate" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.extras] -dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] -docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] -tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] -tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} +wrapt = [ + {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, +] [[package]] -name = "Babel" -version = "2.10.3" +name = "babel" +version = "2.12.1" description = "Internationalization utilities" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, + {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, +] [package.dependencies] -pytz = ">=2015.7" +pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} [[package]] name = "bandit" -version = "1.7.4" +version = "1.7.5" description = "Security oriented static analyser for python code." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "bandit-1.7.5-py3-none-any.whl", hash = "sha256:75665181dc1e0096369112541a056c59d1c5f66f9bb74a8d686c3c362b83f549"}, + {file = "bandit-1.7.5.tar.gz", hash = "sha256:bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e"}, +] [package.dependencies] colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} GitPython = ">=1.0.1" PyYAML = ">=5.3.1" +rich = "*" stevedore = ">=1.20.0" [package.extras] -test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml"] -toml = ["toml"] +test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "tomli (>=1.1.0)"] +toml = ["tomli (>=1.1.0)"] yaml = ["PyYAML"] [[package]] name = "bcrypt" version = "4.0.1" description = "Modern password hashing for your software and your servers" -category = "main" optional = true python-versions = ">=3.6" +files = [ + {file = "bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f"}, + {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0"}, + {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410"}, + {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344"}, + {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a"}, + {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3"}, + {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2"}, + {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535"}, + {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e"}, + {file = "bcrypt-4.0.1-cp36-abi3-win32.whl", hash = "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab"}, + {file = "bcrypt-4.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9"}, + {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c"}, + {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b"}, + {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d"}, + {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d"}, + {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215"}, + {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c"}, + {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda"}, + {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665"}, + {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71"}, + {file = "bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd"}, +] [package.extras] tests = ["pytest (>=3.2.1,!=3.3.0)"] @@ -79,19 +103,42 @@ typecheck = ["mypy"] [[package]] name = "black" -version = "22.10.0" +version = "23.7.0" description = "The uncompromising code formatter." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "black-23.7.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587"}, + {file = "black-23.7.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f"}, + {file = "black-23.7.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be"}, + {file = "black-23.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc"}, + {file = "black-23.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a"}, + {file = "black-23.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926"}, + {file = "black-23.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6"}, + {file = "black-23.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a"}, + {file = "black-23.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087"}, + {file = "black-23.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91"}, + {file = "black-23.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491"}, + {file = "black-23.7.0-py3-none-any.whl", hash = "sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96"}, + {file = "black-23.7.0.tar.gz", hash = "sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb"}, +] [package.dependencies] click = ">=8.0.0" mypy-extensions = ">=0.4.3" +packaging = ">=22.0" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} -typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] @@ -100,142 +147,394 @@ d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] -[[package]] -name = "cached-property" -version = "1.5.2" -description = "A decorator for caching properties in classes." -category = "dev" -optional = false -python-versions = "*" - [[package]] name = "certifi" -version = "2022.9.24" +version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, +] [[package]] name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = true python-versions = "*" +files = [ + {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, + {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, + {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, + {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, + {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, + {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, + {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, + {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, + {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, + {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, + {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, + {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, + {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, + {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, + {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, + {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, + {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, + {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, + {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, +] [package.dependencies] pycparser = "*" [[package]] name = "charset-normalizer" -version = "2.1.1" +version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false -python-versions = ">=3.6.0" - -[package.extras] -unicode_backport = ["unicodedata2"] +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, + {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, +] [[package]] name = "click" -version = "8.1.3" +version = "8.1.6" description = "Composable command line interface toolkit" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "click-8.1.6-py3-none-any.whl", hash = "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5"}, + {file = "click-8.1.6.tar.gz", hash = "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd"}, +] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "colorama" -version = "0.4.5" +version = "0.4.6" description = "Cross-platform colored terminal text." -category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] [[package]] name = "coverage" -version = "6.5.0" +version = "7.2.7" description = "Code coverage measurement for Python" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"}, + {file = "coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"}, + {file = "coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"}, + {file = "coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"}, + {file = "coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"}, + {file = "coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"}, + {file = "coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"}, + {file = "coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"}, + {file = "coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"}, + {file = "coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"}, + {file = "coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"}, + {file = "coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"}, + {file = "coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"}, + {file = "coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"}, + {file = "coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"}, + {file = "coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"}, + {file = "coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"}, + {file = "coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"}, +] [package.extras] toml = ["tomli"] [[package]] name = "cryptography" -version = "38.0.1" +version = "41.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = true -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "cryptography-41.0.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:01f1d9e537f9a15b037d5d9ee442b8c22e3ae11ce65ea1f3316a41c78756b711"}, + {file = "cryptography-41.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:079347de771f9282fbfe0e0236c716686950c19dee1b76240ab09ce1624d76d7"}, + {file = "cryptography-41.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:439c3cc4c0d42fa999b83ded80a9a1fb54d53c58d6e59234cfe97f241e6c781d"}, + {file = "cryptography-41.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f14ad275364c8b4e525d018f6716537ae7b6d369c094805cae45300847e0894f"}, + {file = "cryptography-41.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:84609ade00a6ec59a89729e87a503c6e36af98ddcd566d5f3be52e29ba993182"}, + {file = "cryptography-41.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:49c3222bb8f8e800aead2e376cbef687bc9e3cb9b58b29a261210456a7783d83"}, + {file = "cryptography-41.0.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d73f419a56d74fef257955f51b18d046f3506270a5fd2ac5febbfa259d6c0fa5"}, + {file = "cryptography-41.0.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:2a034bf7d9ca894720f2ec1d8b7b5832d7e363571828037f9e0c4f18c1b58a58"}, + {file = "cryptography-41.0.2-cp37-abi3-win32.whl", hash = "sha256:d124682c7a23c9764e54ca9ab5b308b14b18eba02722b8659fb238546de83a76"}, + {file = "cryptography-41.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:9c3fe6534d59d071ee82081ca3d71eed3210f76ebd0361798c74abc2bcf347d4"}, + {file = "cryptography-41.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a719399b99377b218dac6cf547b6ec54e6ef20207b6165126a280b0ce97e0d2a"}, + {file = "cryptography-41.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:182be4171f9332b6741ee818ec27daff9fb00349f706629f5cbf417bd50e66fd"}, + {file = "cryptography-41.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7a9a3bced53b7f09da251685224d6a260c3cb291768f54954e28f03ef14e3766"}, + {file = "cryptography-41.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f0dc40e6f7aa37af01aba07277d3d64d5a03dc66d682097541ec4da03cc140ee"}, + {file = "cryptography-41.0.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:674b669d5daa64206c38e507808aae49904c988fa0a71c935e7006a3e1e83831"}, + {file = "cryptography-41.0.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7af244b012711a26196450d34f483357e42aeddb04128885d95a69bd8b14b69b"}, + {file = "cryptography-41.0.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9b6d717393dbae53d4e52684ef4f022444fc1cce3c48c38cb74fca29e1f08eaa"}, + {file = "cryptography-41.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:192255f539d7a89f2102d07d7375b1e0a81f7478925b3bc2e0549ebf739dae0e"}, + {file = "cryptography-41.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f772610fe364372de33d76edcd313636a25684edb94cee53fd790195f5989d14"}, + {file = "cryptography-41.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b332cba64d99a70c1e0836902720887fb4529ea49ea7f5462cf6640e095e11d2"}, + {file = "cryptography-41.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9a6673c1828db6270b76b22cc696f40cde9043eb90373da5c2f8f2158957f42f"}, + {file = "cryptography-41.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:342f3767e25876751e14f8459ad85e77e660537ca0a066e10e75df9c9e9099f0"}, + {file = "cryptography-41.0.2.tar.gz", hash = "sha256:7d230bf856164de164ecb615ccc14c7fc6de6906ddd5b491f3af90d3514c925c"}, +] [package.dependencies] cffi = ">=1.12" [package.extras] -docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] -pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] -sdist = ["setuptools-rust (>=0.11.4)"] +nox = ["nox"] +pep8test = ["black", "check-sdist", "mypy", "ruff"] +sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"] +test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] [[package]] name = "dill" -version = "0.3.5.1" +version = "0.3.6" description = "serialize all of python" -category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +python-versions = ">=3.7" +files = [ + {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, + {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, +] [package.extras] graph = ["objgraph (>=1.7.2)"] [[package]] name = "docutils" -version = "0.17.1" +version = "0.18.1" description = "Docutils -- Python Documentation Utilities" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, + {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, +] + +[[package]] +name = "exceptiongroup" +version = "1.1.2" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, + {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, +] + +[package.extras] +test = ["pytest (>=6)"] [[package]] name = "flake8" -version = "3.9.2" +version = "5.0.4" description = "the modular source code checker: pep8 pyflakes and co" -category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.6.1" +files = [ + {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, + {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, +] [package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -mccabe = ">=0.6.0,<0.7.0" -pycodestyle = ">=2.7.0,<2.8.0" -pyflakes = ">=2.3.0,<2.4.0" +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.9.0,<2.10.0" +pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "future" -version = "0.18.2" +version = "0.18.3" description = "Clean single-source support for Python 3 and 2" -category = "main" optional = true python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "future-0.18.3.tar.gz", hash = "sha256:34a17436ed1e96697a86f9de3d15a3b0be01d8bc8de9c1dffd59fb8234ed5307"}, +] [[package]] name = "ghp-import" version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." -category = "dev" optional = false python-versions = "*" +files = [ + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, +] [package.dependencies] python-dateutil = ">=2.8.1" @@ -245,111 +544,136 @@ dev = ["flake8", "markdown", "twine", "wheel"] [[package]] name = "gitdb" -version = "4.0.9" +version = "4.0.10" description = "Git Object Database" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, + {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, +] [package.dependencies] smmap = ">=3.0.1,<6" [[package]] -name = "GitPython" -version = "3.1.29" -description = "GitPython is a python library used to interact with Git repositories" -category = "dev" +name = "gitpython" +version = "3.1.32" +description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.32-py3-none-any.whl", hash = "sha256:e3d59b1c2c6ebb9dfa7a184daf3b6dd4914237e7488a1730a6d8f6f5d0b4187f"}, + {file = "GitPython-3.1.32.tar.gz", hash = "sha256:8d9b8cb1e80b9735e8717c9362079d3ce4c6e5ddeebedd0361b228c3a67a62f6"}, +] [package.dependencies] gitdb = ">=4.0.1,<5" -typing-extensions = {version = ">=3.7.4.3", markers = "python_version < \"3.8\""} [[package]] name = "griffe" -version = "0.22.2" +version = "0.32.3" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "griffe-0.32.3-py3-none-any.whl", hash = "sha256:d9471934225818bf8f309822f70451cc6abb4b24e59e0bb27402a45f9412510f"}, + {file = "griffe-0.32.3.tar.gz", hash = "sha256:14983896ad581f59d5ad7b6c9261ff12bdaa905acccc1129341d13e545da8521"}, +] [package.dependencies] -cached-property = {version = "*", markers = "python_version < \"3.8\""} - -[package.extras] -async = ["aiofiles (>=0.7,<1.0)"] +colorama = ">=0.4" [[package]] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" +files = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] [[package]] name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, + {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, +] [[package]] name = "importlib-metadata" -version = "5.0.0" +version = "6.8.0" description = "Read metadata from Python packages" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, + {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, +] [package.dependencies] -typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "iniconfig" -version = "1.1.1" -description = "iniconfig: brain-dead simple config-ini parsing" -category = "dev" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" optional = false -python-versions = "*" +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] [[package]] name = "invoke" -version = "1.7.3" +version = "2.2.0" description = "Pythonic task execution" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.6" +files = [ + {file = "invoke-2.2.0-py3-none-any.whl", hash = "sha256:6ea924cc53d4f78e3d98bc436b08069a03077e6f85ad1ddaa8a116d7dad15820"}, + {file = "invoke-2.2.0.tar.gz", hash = "sha256:ee6cbb101af1a859c7fe84f2a264c059020b0cb7fe3535f9424300ab568f6bd5"}, +] [[package]] name = "isort" -version = "5.10.1" +version = "5.12.0" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false -python-versions = ">=3.6.1,<4.0" +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, + {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, +] [package.extras] -colors = ["colorama (>=0.4.3,<0.5.0)"] -pipfile_deprecated_finder = ["pipreqs", "requirementslib"] +colors = ["colorama (>=0.4.3)"] +pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] plugins = ["setuptools"] -requirements_deprecated_finder = ["pip-api", "pipreqs"] +requirements-deprecated-finder = ["pip-api", "pipreqs"] [[package]] -name = "Jinja2" +name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] [package.dependencies] MarkupSafe = ">=2.0" @@ -359,11 +683,14 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "junos-eznc" -version = "2.6.5" +version = "2.6.7" description = "Junos 'EZ' automation for non-programmers" -category = "main" optional = true -python-versions = ">=3.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.5, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "junos-eznc-2.6.7.tar.gz", hash = "sha256:b3ab81dafb160cd16cba8f26b92b6f5c3333a8d30566a7ebd966fc1f313b0980"}, + {file = "junos_eznc-2.6.7-py2.py3-none-any.whl", hash = "sha256:6ee9d74228ebaca01381eb88dbe21765006d76935960fd4e6cd8d67248b11644"}, +] [package.dependencies] jinja2 = ">=2.7.1" @@ -381,33 +708,166 @@ yamlordereddictloader = "*" [[package]] name = "lazy-object-proxy" -version = "1.7.1" +version = "1.9.0" description = "A fast and thorough lazy object proxy." -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, +] [[package]] name = "lxml" -version = "4.9.1" +version = "4.9.3" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." -category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" +files = [ + {file = "lxml-4.9.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c"}, + {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d"}, + {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef"}, + {file = "lxml-4.9.3-cp27-cp27m-win32.whl", hash = "sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7"}, + {file = "lxml-4.9.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1"}, + {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb"}, + {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e"}, + {file = "lxml-4.9.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76"}, + {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23"}, + {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f"}, + {file = "lxml-4.9.3-cp310-cp310-win32.whl", hash = "sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85"}, + {file = "lxml-4.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d"}, + {file = "lxml-4.9.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b"}, + {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120"}, + {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6"}, + {file = "lxml-4.9.3-cp311-cp311-win32.whl", hash = "sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305"}, + {file = "lxml-4.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc"}, + {file = "lxml-4.9.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4"}, + {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be"}, + {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13"}, + {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9"}, + {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5"}, + {file = "lxml-4.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8"}, + {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7"}, + {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2"}, + {file = "lxml-4.9.3-cp35-cp35m-win32.whl", hash = "sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d"}, + {file = "lxml-4.9.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833"}, + {file = "lxml-4.9.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584"}, + {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287"}, + {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458"}, + {file = "lxml-4.9.3-cp36-cp36m-win32.whl", hash = "sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477"}, + {file = "lxml-4.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4"}, + {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a"}, + {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02"}, + {file = "lxml-4.9.3-cp37-cp37m-win32.whl", hash = "sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f"}, + {file = "lxml-4.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa"}, + {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40"}, + {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7"}, + {file = "lxml-4.9.3-cp38-cp38-win32.whl", hash = "sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574"}, + {file = "lxml-4.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96"}, + {file = "lxml-4.9.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432"}, + {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69"}, + {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50"}, + {file = "lxml-4.9.3-cp39-cp39-win32.whl", hash = "sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2"}, + {file = "lxml-4.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2"}, + {file = "lxml-4.9.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9"}, + {file = "lxml-4.9.3.tar.gz", hash = "sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c"}, +] [package.extras] cssselect = ["cssselect (>=0.7)"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (>=0.29.7)"] +source = ["Cython (>=0.29.35)"] [[package]] -name = "Markdown" +name = "markdown" version = "3.3.7" description = "Python implementation of Markdown." -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, + {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, +] [package.dependencies] importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} @@ -416,59 +876,159 @@ importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} testing = ["coverage", "pyyaml"] [[package]] -name = "MarkupSafe" -version = "2.1.1" +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "markupsafe" +version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, + {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, +] [[package]] name = "mccabe" -version = "0.6.1" +version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.6" +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] [[package]] name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] [[package]] name = "mkdocs" -version = "1.3.1" +version = "1.4.3" description = "Project documentation with Markdown." -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "mkdocs-1.4.3-py3-none-any.whl", hash = "sha256:6ee46d309bda331aac915cd24aab882c179a933bd9e77b80ce7d2eaaa3f689dd"}, + {file = "mkdocs-1.4.3.tar.gz", hash = "sha256:5955093bbd4dd2e9403c5afaf57324ad8b04f16886512a3ee6ef828956481c57"}, +] [package.dependencies] -click = ">=3.3" +click = ">=7.0" +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} ghp-import = ">=1.0" -importlib-metadata = ">=4.3" -Jinja2 = ">=2.10.2" -Markdown = ">=3.2.1,<3.4" +importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""} +jinja2 = ">=2.11.1" +markdown = ">=3.2.1,<3.4" mergedeep = ">=1.3.4" packaging = ">=20.5" -PyYAML = ">=3.10" +pyyaml = ">=5.1" pyyaml-env-tag = ">=0.1" watchdog = ">=2.0" [package.extras] i18n = ["babel (>=2.9.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"] [[package]] name = "mkdocs-autorefs" version = "0.4.1" description = "Automatically link across pages in MkDocs." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "mkdocs-autorefs-0.4.1.tar.gz", hash = "sha256:70748a7bd025f9ecd6d6feeba8ba63f8e891a1af55f48e366d6d6e78493aba84"}, + {file = "mkdocs_autorefs-0.4.1-py3-none-any.whl", hash = "sha256:a2248a9501b29dc0cc8ba4c09f4f47ff121945f6ce33d760f145d6f89d313f5b"}, +] [package.dependencies] Markdown = ">=3.3" @@ -476,51 +1036,66 @@ mkdocs = ">=1.1" [[package]] name = "mkdocs-material" -version = "8.3.9" +version = "8.5.8" description = "Documentation that simply works" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "mkdocs_material-8.5.8-py3-none-any.whl", hash = "sha256:7ff092299e3a63cef99cd87e4a6cc7e7d9ec31fd190d766fd147c35572e6d593"}, + {file = "mkdocs_material-8.5.8.tar.gz", hash = "sha256:61396251819cf7f547f70a09ce6a7edb2ff5d32e47b9199769020b2d20a83d44"}, +] [package.dependencies] jinja2 = ">=3.0.2" markdown = ">=3.2" -mkdocs = ">=1.3.0" -mkdocs-material-extensions = ">=1.0.3" +mkdocs = ">=1.4.0" +mkdocs-material-extensions = ">=1.1" pygments = ">=2.12" pymdown-extensions = ">=9.4" +requests = ">=2.26" [[package]] name = "mkdocs-material-extensions" -version = "1.0.3" -description = "Extension pack for Python Markdown." -category = "dev" +version = "1.1.1" +description = "Extension pack for Python Markdown and MkDocs Material." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "mkdocs_material_extensions-1.1.1-py3-none-any.whl", hash = "sha256:e41d9f38e4798b6617ad98ca8f7f1157b1e4385ac1459ca1e4ea219b556df945"}, + {file = "mkdocs_material_extensions-1.1.1.tar.gz", hash = "sha256:9c003da71e2cc2493d910237448c672e00cefc800d3d6ae93d2fc69979e3bd93"}, +] [[package]] name = "mkdocs-version-annotations" version = "1.0.0" description = "MkDocs plugin to add custom admonitions for documenting version differences" -category = "dev" optional = false python-versions = ">=3.7,<4.0" +files = [ + {file = "mkdocs-version-annotations-1.0.0.tar.gz", hash = "sha256:6786024b37d27b330fda240b76ebec8e7ce48bd5a9d7a66e99804559d088dffa"}, + {file = "mkdocs_version_annotations-1.0.0-py3-none-any.whl", hash = "sha256:385004eb4a7530dd87a227e08cd907ce7a8fe21fdf297720a4149c511bcf05f5"}, +] [[package]] name = "mkdocstrings" -version = "0.19.0" +version = "0.22.0" description = "Automatic documentation from sources, for MkDocs." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "mkdocstrings-0.22.0-py3-none-any.whl", hash = "sha256:2d4095d461554ff6a778fdabdca3c00c468c2f1459d469f7a7f622a2b23212ba"}, + {file = "mkdocstrings-0.22.0.tar.gz", hash = "sha256:82a33b94150ebb3d4b5c73bab4598c3e21468c79ec072eff6931c8f3bfc38256"}, +] [package.dependencies] +importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""} Jinja2 = ">=2.11.1" Markdown = ">=3.3" MarkupSafe = ">=1.1" mkdocs = ">=1.2" mkdocs-autorefs = ">=0.3.1" pymdown-extensions = ">=6.3" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.10\""} [package.extras] crystal = ["mkdocstrings-crystal (>=0.3.4)"] @@ -529,50 +1104,86 @@ python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] [[package]] name = "mkdocstrings-python" -version = "0.7.1" +version = "1.1.2" description = "A Python handler for mkdocstrings." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "mkdocstrings_python-1.1.2-py3-none-any.whl", hash = "sha256:c2b652a850fec8e85034a9cdb3b45f8ad1a558686edc20ed1f40b4e17e62070f"}, + {file = "mkdocstrings_python-1.1.2.tar.gz", hash = "sha256:f28bdcacb9bcdb44b6942a5642c1ea8b36870614d33e29e3c923e204a8d8ed61"}, +] [package.dependencies] -griffe = ">=0.11.1" -mkdocstrings = ">=0.19" +griffe = ">=0.24" +mkdocstrings = ">=0.20" [[package]] name = "mypy" -version = "0.961" +version = "1.4.1" description = "Optional static typing for Python" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "mypy-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8"}, + {file = "mypy-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878"}, + {file = "mypy-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd"}, + {file = "mypy-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc"}, + {file = "mypy-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1"}, + {file = "mypy-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462"}, + {file = "mypy-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258"}, + {file = "mypy-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2"}, + {file = "mypy-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7"}, + {file = "mypy-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01"}, + {file = "mypy-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:470c969bb3f9a9efcedbadcd19a74ffb34a25f8e6b0e02dae7c0e71f8372f97b"}, + {file = "mypy-1.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b"}, + {file = "mypy-1.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:190b6bab0302cec4e9e6767d3eb66085aef2a1cc98fe04936d8a42ed2ba77bb7"}, + {file = "mypy-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9d40652cc4fe33871ad3338581dca3297ff5f2213d0df345bcfbde5162abf0c9"}, + {file = "mypy-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:01fd2e9f85622d981fd9063bfaef1aed6e336eaacca00892cd2d82801ab7c042"}, + {file = "mypy-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2460a58faeea905aeb1b9b36f5065f2dc9a9c6e4c992a6499a2360c6c74ceca3"}, + {file = "mypy-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2746d69a8196698146a3dbe29104f9eb6a2a4d8a27878d92169a6c0b74435b6"}, + {file = "mypy-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ae704dcfaa180ff7c4cfbad23e74321a2b774f92ca77fd94ce1049175a21c97f"}, + {file = "mypy-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:43d24f6437925ce50139a310a64b2ab048cb2d3694c84c71c3f2a1626d8101dc"}, + {file = "mypy-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828"}, + {file = "mypy-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3"}, + {file = "mypy-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816"}, + {file = "mypy-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c"}, + {file = "mypy-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f"}, + {file = "mypy-1.4.1-py3-none-any.whl", hash = "sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4"}, + {file = "mypy-1.4.1.tar.gz", hash = "sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b"}, +] [package.dependencies] -mypy-extensions = ">=0.4.3" +mypy-extensions = ">=1.0.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typed-ast = {version = ">=1.4.0,<2", markers = "python_version < \"3.8\""} -typing-extensions = ">=3.10" +typing-extensions = ">=4.1.0" [package.extras] dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] python2 = ["typed-ast (>=1.4.0,<2)"] reports = ["lxml"] [[package]] name = "mypy-extensions" -version = "0.4.3" -description = "Experimental type system extensions for programs checked with the mypy typechecker." -category = "dev" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." optional = false -python-versions = "*" +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] [[package]] name = "napalm" -version = "4.0.0" +version = "4.1.0" description = "Network Automation and Programmability Abstraction Layer with Multivendor support" -category = "main" optional = true python-versions = "*" +files = [ + {file = "napalm-4.1.0-py2.py3-none-any.whl", hash = "sha256:14a5b7759a0247a26fff2c444b1cfc150a08224de8addf4076c384845285bf5b"}, + {file = "napalm-4.1.0.tar.gz", hash = "sha256:3b3e18efd556861c056ba509eb46f5ffc9e3e6c42db399fa76b6ea9af272c17a"}, +] [package.dependencies] cffi = ">=1.11.3" @@ -582,7 +1193,7 @@ junos-eznc = ">=2.6.3" lxml = ">=4.3.0" ncclient = "*" netaddr = "*" -netmiko = ">=4.0.0" +netmiko = ">=4.1.0" netutils = ">=1.0.0" paramiko = ">=2.6.0" pyeapi = ">=0.8.2" @@ -590,7 +1201,7 @@ pyYAML = "*" requests = ">=2.7.0" scp = "*" setuptools = ">=38.4.0" -textfsm = "<=1.1.2" +textfsm = "*" ttp = "*" ttp-templates = "*" typing-extensions = ">=4.3.0" @@ -599,9 +1210,11 @@ typing-extensions = ">=4.3.0" name = "ncclient" version = "0.6.13" description = "Python library for NETCONF clients" -category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "ncclient-0.6.13.tar.gz", hash = "sha256:f9f8cea8bcbe057e1b948b9cd1b241eafb8a3f73c4981fbdfa1cc6ed69c0a7b3"}, +] [package.dependencies] lxml = ">=3.3.0" @@ -613,158 +1226,178 @@ six = "*" name = "netaddr" version = "0.8.0" description = "A network address manipulation library for Python" -category = "main" optional = true python-versions = "*" +files = [ + {file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"}, + {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, +] [[package]] name = "netmiko" -version = "4.1.2" +version = "4.2.0" description = "Multi-vendor library to simplify legacy CLI connections to network devices" -category = "main" optional = true -python-versions = "*" +python-versions = ">=3.7,<4.0" +files = [ + {file = "netmiko-4.2.0-py3-none-any.whl", hash = "sha256:8dae36263edc0b5ca5373d3d9ec428f38efd050ecfddac9c0698d0e65082bb3b"}, + {file = "netmiko-4.2.0.tar.gz", hash = "sha256:7adde6fe3ea63336228f49a863650c2d83fb0e680e0f0d158b5b0fb04c4100e1"}, +] [package.dependencies] ntc-templates = ">=2.0.0" -paramiko = ">=2.7.2" -pyserial = "*" +paramiko = ">=2.9.5" +pyserial = ">=3.3" pyyaml = ">=5.3" -scp = ">=0.13.3" -setuptools = ">=38.4.0" -tenacity = "*" -textfsm = "1.1.2" +scp = ">=0.13.6" +textfsm = ">=1.1.3" [[package]] name = "ntc-templates" -version = "3.1.0" +version = "3.5.0" description = "TextFSM Templates for Network Devices, and Python wrapper for TextFSM's CliTable." -category = "main" optional = true -python-versions = ">=3.6,<4.0" +python-versions = ">=3.7,<4.0" +files = [ + {file = "ntc_templates-3.5.0-py3-none-any.whl", hash = "sha256:86d75c077eb1ceb97f4f8c69c9e3c7a32b08210ceb8228e5fa4e87e080746fd4"}, + {file = "ntc_templates-3.5.0.tar.gz", hash = "sha256:ee0dab4440dab1b3286549f8c08695b30037c1f36f55763c5a39005525f722c7"}, +] [package.dependencies] textfsm = ">=1.1.0,<2.0.0" [[package]] name = "packaging" -version = "21.3" +version = "23.1" description = "Core utilities for Python packages" -category = "dev" optional = false -python-versions = ">=3.6" - -[package.dependencies] -pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +python-versions = ">=3.7" +files = [ + {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, + {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, +] [[package]] name = "paramiko" -version = "2.11.0" +version = "3.2.0" description = "SSH2 protocol library" -category = "main" optional = true -python-versions = "*" +python-versions = ">=3.6" +files = [ + {file = "paramiko-3.2.0-py3-none-any.whl", hash = "sha256:df0f9dd8903bc50f2e10580af687f3015bf592a377cd438d2ec9546467a14eb8"}, + {file = "paramiko-3.2.0.tar.gz", hash = "sha256:93cdce625a8a1dc12204439d45033f3261bdb2c201648cfcdc06f9fd0f94ec29"}, +] [package.dependencies] -bcrypt = ">=3.1.3" -cryptography = ">=2.5" -pynacl = ">=1.0.1" -six = "*" +bcrypt = ">=3.2" +cryptography = ">=3.3" +pynacl = ">=1.5" [package.extras] -all = ["bcrypt (>=3.1.3)", "gssapi (>=1.4.1)", "invoke (>=1.3)", "pyasn1 (>=0.1.7)", "pynacl (>=1.0.1)", "pywin32 (>=2.1.8)"] -ed25519 = ["bcrypt (>=3.1.3)", "pynacl (>=1.0.1)"] +all = ["gssapi (>=1.4.1)", "invoke (>=2.0)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1.8)"] gssapi = ["gssapi (>=1.4.1)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1.8)"] -invoke = ["invoke (>=1.3)"] +invoke = ["invoke (>=2.0)"] [[package]] name = "pathspec" -version = "0.10.1" +version = "0.11.1" description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, + {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, +] [[package]] name = "pbr" -version = "5.10.0" +version = "5.11.1" description = "Python Build Reasonableness" -category = "dev" optional = false python-versions = ">=2.6" +files = [ + {file = "pbr-5.11.1-py2.py3-none-any.whl", hash = "sha256:567f09558bae2b3ab53cb3c1e2e33e726ff3338e7bae3db5dc954b3a44eef12b"}, + {file = "pbr-5.11.1.tar.gz", hash = "sha256:aefc51675b0b533d56bb5fd1c8c6c0522fe31896679882e1c4c63d5e4a0fccb3"}, +] [[package]] name = "platformdirs" -version = "2.5.2" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" +version = "3.9.1" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" +files = [ + {file = "platformdirs-3.9.1-py3-none-any.whl", hash = "sha256:ad8291ae0ae5072f66c16945166cb11c63394c7a3ad1b1bc9828ca3162da8c2f"}, + {file = "platformdirs-3.9.1.tar.gz", hash = "sha256:1b42b450ad933e981d56e59f1b97495428c9bd60698baab9f3eb3d00d5822421"}, +] [package.extras] -docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"] -test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] +docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" -version = "1.0.0" +version = "1.2.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false -python-versions = ">=3.6" - -[package.dependencies] -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +python-versions = ">=3.7" +files = [ + {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, + {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, +] [package.extras] dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - [[package]] name = "pycodestyle" -version = "2.7.0" +version = "2.9.1" description = "Python style guide checker" -category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" +files = [ + {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, + {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, +] [[package]] name = "pycparser" version = "2.21" description = "C parser in Python" -category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] [[package]] name = "pydocstyle" -version = "6.1.1" +version = "6.3.0" description = "Python docstring style checker" -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "pydocstyle-6.3.0-py3-none-any.whl", hash = "sha256:118762d452a49d6b05e194ef344a55822987a462831ade91ec5c06fd2169d019"}, + {file = "pydocstyle-6.3.0.tar.gz", hash = "sha256:7ce43f0c0ac87b07494eb9c0b462c0b73e6ff276807f204d6b53edc72b7e44e1"}, +] [package.dependencies] -snowballstemmer = "*" +snowballstemmer = ">=2.2.0" [package.extras] -toml = ["toml"] +toml = ["tomli (>=1.2.3)"] [[package]] name = "pyeapi" -version = "0.8.4" +version = "1.0.2" description = "Python Client for eAPI" -category = "main" optional = true python-versions = "*" +files = [ + {file = "pyeapi-1.0.2.tar.gz", hash = "sha256:563a80bb19451df7dd7b6e9e38489dee67ebeaf2f54de296e8ae0b26cd68a297"}, +] [package.dependencies] netaddr = "*" @@ -775,77 +1408,109 @@ test = ["coverage", "mock"] [[package]] name = "pyflakes" -version = "2.3.1" +version = "2.5.0" description = "passive checker of Python programs" -category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" +files = [ + {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, + {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, +] [[package]] -name = "Pygments" -version = "2.13.0" +name = "pygments" +version = "2.15.1" description = "Pygments is a syntax highlighting package written in Python." -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"}, + {file = "Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"}, +] [package.extras] plugins = ["importlib-metadata"] [[package]] name = "pylint" -version = "2.13.9" +version = "2.17.4" description = "python code static checker" -category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" +files = [ + {file = "pylint-2.17.4-py3-none-any.whl", hash = "sha256:7a1145fb08c251bdb5cca11739722ce64a63db479283d10ce718b2460e54123c"}, + {file = "pylint-2.17.4.tar.gz", hash = "sha256:5dcf1d9e19f41f38e4e85d10f511e5b9c35e1aa74251bf95cdd8cb23584e2db1"}, +] [package.dependencies] -astroid = ">=2.11.5,<=2.12.0-dev0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -dill = ">=0.2" +astroid = ">=2.15.4,<=2.17.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +dill = [ + {version = ">=0.2", markers = "python_version < \"3.11\""}, + {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, +] isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -testutil = ["gitpython (>3)"] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] [[package]] name = "pymdown-extensions" -version = "9.6" +version = "10.1" description = "Extension pack for Python Markdown." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "pymdown_extensions-10.1-py3-none-any.whl", hash = "sha256:ef25dbbae530e8f67575d222b75ff0649b1e841e22c2ae9a20bad9472c2207dc"}, + {file = "pymdown_extensions-10.1.tar.gz", hash = "sha256:508009b211373058debb8247e168de4cbcb91b1bff7b5e961b2c3e864e00b195"}, +] [package.dependencies] markdown = ">=3.2" +pyyaml = "*" [[package]] -name = "PyNaCl" +name = "pynacl" version = "1.5.0" description = "Python binding to the Networking and Cryptography (NaCl) library" -category = "main" optional = true python-versions = ">=3.6" +files = [ + {file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93"}, + {file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba"}, +] [package.dependencies] cffi = ">=1.4.1" [package.extras] -docs = ["sphinx (>=1.6.5)", "sphinx_rtd_theme"] +docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"] tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] [[package]] name = "pyparsing" -version = "3.0.9" +version = "3.1.0" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" -optional = false +optional = true python-versions = ">=3.6.8" +files = [ + {file = "pyparsing-3.1.0-py3-none-any.whl", hash = "sha256:d554a96d1a7d3ddaf7183104485bc19fd80543ad6ac5bdb6426719d766fb06c1"}, + {file = "pyparsing-3.1.0.tar.gz", hash = "sha256:edb662d6fe322d6e990b1594b5feaeadf806803359e3d4d42f11e295e588f0ea"}, +] [package.extras] diagrams = ["jinja2", "railroad-diagrams"] @@ -854,157 +1519,251 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyserial" version = "3.5" description = "Python Serial Port Extension" -category = "main" optional = true python-versions = "*" +files = [ + {file = "pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0"}, + {file = "pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb"}, +] [package.extras] cp2110 = ["hidapi"] [[package]] name = "pytest" -version = "7.1.3" +version = "7.4.0" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, + {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, +] [package.dependencies] -attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -tomli = ">=1.0.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] [package.dependencies] six = ">=1.5" [[package]] name = "pytz" -version = "2022.4" +version = "2023.3" description = "World timezone definitions, modern and historical" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"}, + {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"}, +] [[package]] -name = "PyYAML" -version = "6.0" +name = "pyyaml" +version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" - -[[package]] -name = "pyyaml_env_tag" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "pyyaml-env-tag" version = "0.1" description = "A custom YAML tag for referencing environment variables in YAML files. " -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, + {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, +] [package.dependencies] pyyaml = "*" [[package]] name = "requests" -version = "2.28.1" +version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false -python-versions = ">=3.7, <4" +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<1.27" +urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "rich" +version = "13.4.2" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.4.2-py3-none-any.whl", hash = "sha256:8f87bc7ee54675732fa66a05ebfe489e27264caeeff3728c945d25971b6485ec"}, + {file = "rich-13.4.2.tar.gz", hash = "sha256:d653d6bccede5844304c605d5aac802c7cf9621efd700b46c7ec2b51ea914898"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" +typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "scp" -version = "0.14.4" +version = "0.14.5" description = "scp module for paramiko" -category = "main" optional = true python-versions = "*" +files = [ + {file = "scp-0.14.5-py2.py3-none-any.whl", hash = "sha256:d224535dd8ed00294f52b0e0e18fde7a6fb7a3d06b97ede9e3f750fa7bf75c09"}, + {file = "scp-0.14.5.tar.gz", hash = "sha256:64f0015899b3d212cb8088e7d40ebaf0686889ff0e243d5c1242efe8b50f053e"}, +] [package.dependencies] paramiko = "*" [[package]] name = "setuptools" -version = "65.4.1" +version = "68.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" -optional = false +optional = true python-versions = ">=3.7" +files = [ + {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, + {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, +] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] [[package]] name = "smmap" version = "5.0.0" description = "A pure Python implementation of a sliding window memory map manager" -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, + {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, +] [[package]] name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -category = "dev" optional = false python-versions = "*" +files = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] [[package]] -name = "Sphinx" -version = "5.2.3" +name = "sphinx" +version = "6.2.1" description = "Python documentation generator" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "Sphinx-6.2.1.tar.gz", hash = "sha256:6d56a34697bb749ffa0152feafc4b19836c755d90a7c59b72bc7dfd371b9cc6b"}, + {file = "sphinx-6.2.1-py3-none-any.whl", hash = "sha256:97787ff1fa3256a3eef9eda523a63dbf299f7b47e053cfcf684a1c2a8380c912"}, +] [package.dependencies] alabaster = ">=0.7,<0.8" babel = ">=2.9" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -docutils = ">=0.14,<0.20" +docutils = ">=0.18.1,<0.20" imagesize = ">=1.3" importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} Jinja2 = ">=3.0" packaging = ">=21.0" -Pygments = ">=2.12" -requests = ">=2.5.0" +Pygments = ">=2.13" +requests = ">=2.25.0" snowballstemmer = ">=2.0" sphinxcontrib-applehelp = "*" sphinxcontrib-devhelp = "*" @@ -1015,31 +1774,38 @@ sphinxcontrib-serializinghtml = ">=1.1.5" [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-bugbear", "flake8-comprehensions", "flake8-simplify", "isort", "mypy (>=0.981)", "sphinx-lint", "types-requests", "types-typed-ast"] -test = ["cython", "html5lib", "pytest (>=4.6)", "typed_ast"] +lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] +test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] [[package]] name = "sphinx-rtd-theme" -version = "1.0.0" +version = "1.2.2" description = "Read the Docs theme for Sphinx" -category = "dev" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "sphinx_rtd_theme-1.2.2-py2.py3-none-any.whl", hash = "sha256:6a7e7d8af34eb8fc57d52a09c6b6b9c46ff44aea5951bc831eeb9245378f3689"}, + {file = "sphinx_rtd_theme-1.2.2.tar.gz", hash = "sha256:01c5c5a72e2d025bd23d1f06c59a4831b06e6ce6c01fdd5ebfe9986c0a880fc7"}, +] [package.dependencies] -docutils = "<0.18" -sphinx = ">=1.6" +docutils = "<0.19" +sphinx = ">=1.6,<7" +sphinxcontrib-jquery = ">=4,<5" [package.extras] -dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client"] +dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.2" -description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" -category = "dev" +version = "1.0.4" +description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +files = [ + {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, + {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, +] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] @@ -1049,9 +1815,12 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." -category = "dev" optional = false python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, + {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, +] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] @@ -1059,23 +1828,43 @@ test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.0" +version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, + {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, +] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["html5lib", "pytest"] +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +description = "Extension to include jQuery on newer Sphinx releases" +optional = false +python-versions = ">=2.7" +files = [ + {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, + {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, +] + +[package.dependencies] +Sphinx = ">=1.8" + [[package]] name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" -category = "dev" optional = false python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] [package.extras] test = ["flake8", "mypy", "pytest"] @@ -1084,9 +1873,12 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-qthelp" version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." -category = "dev" optional = false python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, + {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, +] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] @@ -1096,9 +1888,12 @@ test = ["pytest"] name = "sphinxcontrib-serializinghtml" version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." -category = "dev" optional = false python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, + {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, +] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] @@ -1106,34 +1901,28 @@ test = ["pytest"] [[package]] name = "stevedore" -version = "3.5.1" +version = "5.1.0" description = "Manage dynamic plugins for Python applications" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "stevedore-5.1.0-py3-none-any.whl", hash = "sha256:8cc040628f3cea5d7128f2e76cf486b2251a4e543c7b938f58d9a377f6694a2d"}, + {file = "stevedore-5.1.0.tar.gz", hash = "sha256:a54534acf9b89bc7ed264807013b505bf07f74dbe4bcfa37d32bd063870b087c"}, +] [package.dependencies] -importlib-metadata = {version = ">=1.7.0", markers = "python_version < \"3.8\""} pbr = ">=2.0.0,<2.1.0 || >2.1.0" -[[package]] -name = "tenacity" -version = "8.1.0" -description = "Retry code until it succeeds" -category = "main" -optional = true -python-versions = ">=3.6" - -[package.extras] -doc = ["reno", "sphinx", "tornado (>=4.5)"] - [[package]] name = "textfsm" -version = "1.1.2" +version = "1.1.3" description = "Python module for parsing semi-structured text into python tables." -category = "main" optional = true python-versions = "*" +files = [ + {file = "textfsm-1.1.3-py2.py3-none-any.whl", hash = "sha256:dcbeebc6a6137bed561c71a56344d752e6dbc04ae5ea309252cb70fb97ccc9cd"}, + {file = "textfsm-1.1.3.tar.gz", hash = "sha256:577ef278a9237f5341ae9b682947cefa4a2c1b24dbe486f94f2c95addc6504b5"}, +] [package.dependencies] future = "*" @@ -1143,25 +1932,45 @@ six = "*" name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] [[package]] name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[[package]] +name = "tomlkit" +version = "0.11.8" +description = "Style preserving TOML library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"}, + {file = "tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, +] [[package]] name = "transitions" version = "0.9.0" description = "A lightweight, object-oriented Python state machine implementation with many extensions." -category = "main" optional = true python-versions = "*" +files = [ + {file = "transitions-0.9.0-py2.py3-none-any.whl", hash = "sha256:5687ee8c6a3200830e44f988d16b0045f53293f7a873002d7bff70852331a078"}, + {file = "transitions-0.9.0.tar.gz", hash = "sha256:2f54d11bdb225779d7e729011e93a9fb717668ce3dc65f8d4f5a5d7ba2f48e10"}, +] [package.dependencies] six = "*" @@ -1172,11 +1981,14 @@ test = ["pytest"] [[package]] name = "ttp" -version = "0.9.1" +version = "0.9.5" description = "Template Text Parser" -category = "main" optional = true python-versions = ">=2.7,<4.0" +files = [ + {file = "ttp-0.9.5-py2.py3-none-any.whl", hash = "sha256:2c9fcf560b3f696e9fdd3554dc8e4622cbb10cac1d4fca13a7cf608c4a7fd137"}, + {file = "ttp-0.9.5.tar.gz", hash = "sha256:234414f4d3039d2d1cde09993f89f8db1b34d447f76c6a402555cefac2e59c4e"}, +] [package.extras] docs = ["Sphinx (==4.3.0)", "readthedocs-sphinx-search (==0.1.1)", "sphinx_rtd_theme (==1.0.0)", "sphinxcontrib-applehelp (==1.0.1)", "sphinxcontrib-devhelp (==1.0.1)", "sphinxcontrib-htmlhelp (==2.0.0)", "sphinxcontrib-jsmath (==1.0.1)", "sphinxcontrib-napoleon (==0.7)", "sphinxcontrib-qthelp (==1.0.2)", "sphinxcontrib-serializinghtml (==1.1.5)", "sphinxcontrib-spelling (==7.2.1)"] @@ -1184,11 +1996,14 @@ full = ["cerberus (>=1.3.0,<1.4.0)", "deepdiff (>=5.8.0,<5.9.0)", "jinja2 (>=3.0 [[package]] name = "ttp-templates" -version = "0.3.1" +version = "0.3.5" description = "Template Text Parser Templates collections" -category = "main" optional = true python-versions = ">=3.6,<4.0" +files = [ + {file = "ttp_templates-0.3.5-py3-none-any.whl", hash = "sha256:4985a68640468127a0e31021672039cd88a8b9c3dd9289cad67839209cddaf30"}, + {file = "ttp_templates-0.3.5.tar.gz", hash = "sha256:e59870d4f65bd4aaf89178dc9065a7db8b80a23d5d79b5d6ffd041312d5ec5a6"}, +] [package.dependencies] ttp = ">=0.6.0" @@ -1196,994 +2011,207 @@ ttp = ">=0.6.0" [package.extras] docs = ["mkdocs (==1.2.4)", "mkdocs-material (==7.2.2)", "mkdocs-material-extensions (==1.0.1)", "mkdocstrings[python] (>=0.18.0,<0.19.0)", "pygments (==2.11)", "pymdown-extensions (==9.3)"] -[[package]] -name = "typed-ast" -version = "1.5.4" -description = "a fork of Python 2 and 3 ast modules with type comment support" -category = "dev" -optional = false -python-versions = ">=3.6" - [[package]] name = "typing-extensions" -version = "4.4.0" +version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, + {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, +] [[package]] name = "urllib3" -version = "1.26.12" +version = "2.0.4" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" +python-versions = ">=3.7" +files = [ + {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, + {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, +] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "watchdog" -version = "2.1.9" +version = "3.0.0" description = "Filesystem events monitoring" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41"}, + {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397"}, + {file = "watchdog-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7"}, + {file = "watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8"}, + {file = "watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100"}, + {file = "watchdog-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346"}, + {file = "watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33"}, + {file = "watchdog-3.0.0-py3-none-win32.whl", hash = "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f"}, + {file = "watchdog-3.0.0-py3-none-win_amd64.whl", hash = "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c"}, + {file = "watchdog-3.0.0-py3-none-win_ia64.whl", hash = "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759"}, + {file = "watchdog-3.0.0.tar.gz", hash = "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9"}, +] [package.extras] watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "wrapt" -version = "1.14.1" +version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +files = [ + {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, + {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, + {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, + {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, + {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, + {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, + {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, + {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, + {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, + {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, + {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, + {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, + {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, + {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, + {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, + {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, + {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, + {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, + {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, +] [[package]] name = "yamllint" -version = "1.28.0" +version = "1.32.0" description = "A linter for YAML files." -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "yamllint-1.32.0-py3-none-any.whl", hash = "sha256:d97a66e48da820829d96077d76b8dfbe6c6140f106e558dae87e81ac4e6b30b7"}, + {file = "yamllint-1.32.0.tar.gz", hash = "sha256:d01dde008c65de5b235188ab3110bebc59d18e5c65fc8a58267cd211cd9df34a"}, +] [package.dependencies] pathspec = ">=0.5.3" pyyaml = "*" -setuptools = "*" + +[package.extras] +dev = ["doc8", "flake8", "flake8-import-order", "rstcheck[sphinx]", "sphinx"] [[package]] name = "yamlordereddictloader" version = "0.4.0" description = "YAML loader and dump for PyYAML allowing to keep keys order." -category = "main" optional = true python-versions = "*" +files = [ + {file = "yamlordereddictloader-0.4.0.tar.gz", hash = "sha256:7f30f0b99ea3f877f7cb340c570921fa9d639b7f69cba18be051e27f8de2080e"}, +] [package.dependencies] pyyaml = "*" [[package]] name = "zipp" -version = "3.9.0" +version = "3.16.2" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, + {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, +] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] optionals = ["napalm"] [metadata] -lock-version = "1.1" -python-versions = "^3.7" -content-hash = "007e525065bcc650521ddc3f3babe30e32f02092267bc77ff58565863e615916" - -[metadata.files] -alabaster = [ - {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, - {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, -] -astroid = [ - {file = "astroid-2.11.7-py3-none-any.whl", hash = "sha256:86b0a340a512c65abf4368b80252754cda17c02cdbbd3f587dddf98112233e7b"}, - {file = "astroid-2.11.7.tar.gz", hash = "sha256:bb24615c77f4837c707669d16907331374ae8a964650a66999da3f5ca68dc946"}, -] -attrs = [ - {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, - {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, -] -Babel = [ - {file = "Babel-2.10.3-py3-none-any.whl", hash = "sha256:ff56f4892c1c4bf0d814575ea23471c230d544203c7748e8c68f0089478d48eb"}, - {file = "Babel-2.10.3.tar.gz", hash = "sha256:7614553711ee97490f732126dc077f8d0ae084ebc6a96e23db1482afabdb2c51"}, -] -bandit = [ - {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, - {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"}, -] -bcrypt = [ - {file = "bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e"}, - {file = "bcrypt-4.0.1-cp36-abi3-win32.whl", hash = "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab"}, - {file = "bcrypt-4.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71"}, - {file = "bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd"}, -] -black = [ - {file = "black-22.10.0-1fixedarch-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa"}, - {file = "black-22.10.0-1fixedarch-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef"}, - {file = "black-22.10.0-1fixedarch-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6"}, - {file = "black-22.10.0-1fixedarch-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d"}, - {file = "black-22.10.0-1fixedarch-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4"}, - {file = "black-22.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb"}, - {file = "black-22.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7"}, - {file = "black-22.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66"}, - {file = "black-22.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae"}, - {file = "black-22.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b"}, - {file = "black-22.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d"}, - {file = "black-22.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650"}, - {file = "black-22.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d"}, - {file = "black-22.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff"}, - {file = "black-22.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87"}, - {file = "black-22.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395"}, - {file = "black-22.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0"}, - {file = "black-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383"}, - {file = "black-22.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de"}, - {file = "black-22.10.0-py3-none-any.whl", hash = "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458"}, - {file = "black-22.10.0.tar.gz", hash = "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1"}, -] -cached-property = [ - {file = "cached-property-1.5.2.tar.gz", hash = "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"}, - {file = "cached_property-1.5.2-py2.py3-none-any.whl", hash = "sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0"}, -] -certifi = [ - {file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"}, - {file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"}, -] -cffi = [ - {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, - {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, - {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, - {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, - {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, - {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, - {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, - {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, - {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, - {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, - {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, - {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, - {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, - {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, - {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, - {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, - {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, - {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, - {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, -] -charset-normalizer = [ - {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, - {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, -] -click = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, -] -colorama = [ - {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, - {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, -] -coverage = [ - {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, - {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a"}, - {file = "coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32"}, - {file = "coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e"}, - {file = "coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b"}, - {file = "coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578"}, - {file = "coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b"}, - {file = "coverage-6.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f"}, - {file = "coverage-6.5.0-cp37-cp37m-win32.whl", hash = "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b"}, - {file = "coverage-6.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e"}, - {file = "coverage-6.5.0-cp38-cp38-win32.whl", hash = "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d"}, - {file = "coverage-6.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f"}, - {file = "coverage-6.5.0-cp39-cp39-win32.whl", hash = "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72"}, - {file = "coverage-6.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"}, - {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, - {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, -] -cryptography = [ - {file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:10d1f29d6292fc95acb597bacefd5b9e812099d75a6469004fd38ba5471a977f"}, - {file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:3fc26e22840b77326a764ceb5f02ca2d342305fba08f002a8c1f139540cdfaad"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3b72c360427889b40f36dc214630e688c2fe03e16c162ef0aa41da7ab1455153"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:194044c6b89a2f9f169df475cc167f6157eb9151cc69af8a2a163481d45cc407"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca9f6784ea96b55ff41708b92c3f6aeaebde4c560308e5fbbd3173fbc466e94e"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:16fa61e7481f4b77ef53991075de29fc5bacb582a1244046d2e8b4bb72ef66d0"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d4ef6cc305394ed669d4d9eebf10d3a101059bdcf2669c366ec1d14e4fb227bd"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3261725c0ef84e7592597606f6583385fed2a5ec3909f43bc475ade9729a41d6"}, - {file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0297ffc478bdd237f5ca3a7dc96fc0d315670bfa099c04dc3a4a2172008a405a"}, - {file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:89ed49784ba88c221756ff4d4755dbc03b3c8d2c5103f6d6b4f83a0fb1e85294"}, - {file = "cryptography-38.0.1-cp36-abi3-win32.whl", hash = "sha256:ac7e48f7e7261207d750fa7e55eac2d45f720027d5703cd9007e9b37bbb59ac0"}, - {file = "cryptography-38.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:ad7353f6ddf285aeadfaf79e5a6829110106ff8189391704c1d8801aa0bae45a"}, - {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:896dd3a66959d3a5ddcfc140a53391f69ff1e8f25d93f0e2e7830c6de90ceb9d"}, - {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d3971e2749a723e9084dd507584e2a2761f78ad2c638aa31e80bc7a15c9db4f9"}, - {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:79473cf8a5cbc471979bd9378c9f425384980fcf2ab6534b18ed7d0d9843987d"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:d9e69ae01f99abe6ad646947bba8941e896cb3aa805be2597a0400e0764b5818"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5067ee7f2bce36b11d0e334abcd1ccf8c541fc0bbdaf57cdd511fdee53e879b6"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:3e3a2599e640927089f932295a9a247fc40a5bdf69b0484532f530471a382750"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2e5856248a416767322c8668ef1845ad46ee62629266f84a8f007a317141013"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:64760ba5331e3f1794d0bcaabc0d0c39e8c60bf67d09c93dc0e54189dfd7cfe5"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b6c9b706316d7b5a137c35e14f4103e2115b088c412140fdbd5f87c73284df61"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0163a849b6f315bf52815e238bc2b2346604413fa7c1601eea84bcddb5fb9ac"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d1a5bd52d684e49a36582193e0b89ff267704cd4025abefb9e26803adeb3e5fb"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:765fa194a0f3372d83005ab83ab35d7c5526c4e22951e46059b8ac678b44fa5a"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:52e7bee800ec869b4031093875279f1ff2ed12c1e2f74923e8f49c916afd1d3b"}, - {file = "cryptography-38.0.1.tar.gz", hash = "sha256:1db3d807a14931fa317f96435695d9ec386be7b84b618cc61cfa5d08b0ae33d7"}, -] -dill = [ - {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, - {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, -] -docutils = [ - {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, - {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, -] -flake8 = [ - {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, - {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, -] -future = [ - {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, -] -ghp-import = [ - {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, - {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, -] -gitdb = [ - {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, - {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, -] -GitPython = [ - {file = "GitPython-3.1.29-py3-none-any.whl", hash = "sha256:41eea0deec2deea139b459ac03656f0dd28fc4a3387240ec1d3c259a2c47850f"}, - {file = "GitPython-3.1.29.tar.gz", hash = "sha256:cc36bfc4a3f913e66805a28e84703e419d9c264c1077e537b54f0e1af85dbefd"}, -] -griffe = [ - {file = "griffe-0.22.2-py3-none-any.whl", hash = "sha256:cea5415ac6a92f4a22638e3f1f2e661402bac09fb8e8266936d67185a7e0d0fb"}, - {file = "griffe-0.22.2.tar.gz", hash = "sha256:1408e336a4155392bbd81eed9f2f44bf144e71b9c664e905630affe83bbc088e"}, -] -idna = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, -] -imagesize = [ - {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, - {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, -] -importlib-metadata = [ - {file = "importlib_metadata-5.0.0-py3-none-any.whl", hash = "sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43"}, - {file = "importlib_metadata-5.0.0.tar.gz", hash = "sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab"}, -] -iniconfig = [ - {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, - {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, -] -invoke = [ - {file = "invoke-1.7.3-py3-none-any.whl", hash = "sha256:d9694a865764dd3fd91f25f7e9a97fb41666e822bbb00e670091e3f43933574d"}, - {file = "invoke-1.7.3.tar.gz", hash = "sha256:41b428342d466a82135d5ab37119685a989713742be46e42a3a399d685579314"}, -] -isort = [ - {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, - {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, -] -Jinja2 = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, -] -junos-eznc = [ - {file = "junos-eznc-2.6.5.tar.gz", hash = "sha256:fa4c3e0390db1e41b364fab3d703592b248e10d15a80fce5acddee00f037fed3"}, - {file = "junos_eznc-2.6.5-py2.py3-none-any.whl", hash = "sha256:0036512d2dfc0e875a0698092eb05fa03e394ed6aa3b0350ce051ef765773d8f"}, -] -lazy-object-proxy = [ - {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win32.whl", hash = "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win32.whl", hash = "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"}, - {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, -] -lxml = [ - {file = "lxml-4.9.1-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:98cafc618614d72b02185ac583c6f7796202062c41d2eeecdf07820bad3295ed"}, - {file = "lxml-4.9.1-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c62e8dd9754b7debda0c5ba59d34509c4688f853588d75b53c3791983faa96fc"}, - {file = "lxml-4.9.1-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:21fb3d24ab430fc538a96e9fbb9b150029914805d551deeac7d7822f64631dfc"}, - {file = "lxml-4.9.1-cp27-cp27m-win32.whl", hash = "sha256:86e92728ef3fc842c50a5cb1d5ba2bc66db7da08a7af53fb3da79e202d1b2cd3"}, - {file = "lxml-4.9.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4cfbe42c686f33944e12f45a27d25a492cc0e43e1dc1da5d6a87cbcaf2e95627"}, - {file = "lxml-4.9.1-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dad7b164905d3e534883281c050180afcf1e230c3d4a54e8038aa5cfcf312b84"}, - {file = "lxml-4.9.1-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a614e4afed58c14254e67862456d212c4dcceebab2eaa44d627c2ca04bf86837"}, - {file = "lxml-4.9.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f9ced82717c7ec65a67667bb05865ffe38af0e835cdd78728f1209c8fffe0cad"}, - {file = "lxml-4.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:d9fc0bf3ff86c17348dfc5d322f627d78273eba545db865c3cd14b3f19e57fa5"}, - {file = "lxml-4.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e5f66bdf0976ec667fc4594d2812a00b07ed14d1b44259d19a41ae3fff99f2b8"}, - {file = "lxml-4.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fe17d10b97fdf58155f858606bddb4e037b805a60ae023c009f760d8361a4eb8"}, - {file = "lxml-4.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8caf4d16b31961e964c62194ea3e26a0e9561cdf72eecb1781458b67ec83423d"}, - {file = "lxml-4.9.1-cp310-cp310-win32.whl", hash = "sha256:4780677767dd52b99f0af1f123bc2c22873d30b474aa0e2fc3fe5e02217687c7"}, - {file = "lxml-4.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:b122a188cd292c4d2fcd78d04f863b789ef43aa129b233d7c9004de08693728b"}, - {file = "lxml-4.9.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:be9eb06489bc975c38706902cbc6888f39e946b81383abc2838d186f0e8b6a9d"}, - {file = "lxml-4.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:f1be258c4d3dc609e654a1dc59d37b17d7fef05df912c01fc2e15eb43a9735f3"}, - {file = "lxml-4.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:927a9dd016d6033bc12e0bf5dee1dde140235fc8d0d51099353c76081c03dc29"}, - {file = "lxml-4.9.1-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9232b09f5efee6a495a99ae6824881940d6447debe272ea400c02e3b68aad85d"}, - {file = "lxml-4.9.1-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:04da965dfebb5dac2619cb90fcf93efdb35b3c6994fea58a157a834f2f94b318"}, - {file = "lxml-4.9.1-cp35-cp35m-win32.whl", hash = "sha256:4d5bae0a37af799207140652a700f21a85946f107a199bcb06720b13a4f1f0b7"}, - {file = "lxml-4.9.1-cp35-cp35m-win_amd64.whl", hash = "sha256:4878e667ebabe9b65e785ac8da4d48886fe81193a84bbe49f12acff8f7a383a4"}, - {file = "lxml-4.9.1-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:1355755b62c28950f9ce123c7a41460ed9743c699905cbe664a5bcc5c9c7c7fb"}, - {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:bcaa1c495ce623966d9fc8a187da80082334236a2a1c7e141763ffaf7a405067"}, - {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6eafc048ea3f1b3c136c71a86db393be36b5b3d9c87b1c25204e7d397cee9536"}, - {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:13c90064b224e10c14dcdf8086688d3f0e612db53766e7478d7754703295c7c8"}, - {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:206a51077773c6c5d2ce1991327cda719063a47adc02bd703c56a662cdb6c58b"}, - {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e8f0c9d65da595cfe91713bc1222af9ecabd37971762cb830dea2fc3b3bb2acf"}, - {file = "lxml-4.9.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:8f0a4d179c9a941eb80c3a63cdb495e539e064f8054230844dcf2fcb812b71d3"}, - {file = "lxml-4.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:830c88747dce8a3e7525defa68afd742b4580df6aa2fdd6f0855481e3994d391"}, - {file = "lxml-4.9.1-cp36-cp36m-win32.whl", hash = "sha256:1e1cf47774373777936c5aabad489fef7b1c087dcd1f426b621fda9dcc12994e"}, - {file = "lxml-4.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:5974895115737a74a00b321e339b9c3f45c20275d226398ae79ac008d908bff7"}, - {file = "lxml-4.9.1-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:1423631e3d51008871299525b541413c9b6c6423593e89f9c4cfbe8460afc0a2"}, - {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:2aaf6a0a6465d39b5ca69688fce82d20088c1838534982996ec46633dc7ad6cc"}, - {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:9f36de4cd0c262dd9927886cc2305aa3f2210db437aa4fed3fb4940b8bf4592c"}, - {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae06c1e4bc60ee076292e582a7512f304abdf6c70db59b56745cca1684f875a4"}, - {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:57e4d637258703d14171b54203fd6822fda218c6c2658a7d30816b10995f29f3"}, - {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6d279033bf614953c3fc4a0aa9ac33a21e8044ca72d4fa8b9273fe75359d5cca"}, - {file = "lxml-4.9.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a60f90bba4c37962cbf210f0188ecca87daafdf60271f4c6948606e4dabf8785"}, - {file = "lxml-4.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6ca2264f341dd81e41f3fffecec6e446aa2121e0b8d026fb5130e02de1402785"}, - {file = "lxml-4.9.1-cp37-cp37m-win32.whl", hash = "sha256:27e590352c76156f50f538dbcebd1925317a0f70540f7dc8c97d2931c595783a"}, - {file = "lxml-4.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:eea5d6443b093e1545ad0210e6cf27f920482bfcf5c77cdc8596aec73523bb7e"}, - {file = "lxml-4.9.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f05251bbc2145349b8d0b77c0d4e5f3b228418807b1ee27cefb11f69ed3d233b"}, - {file = "lxml-4.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:487c8e61d7acc50b8be82bda8c8d21d20e133c3cbf41bd8ad7eb1aaeb3f07c97"}, - {file = "lxml-4.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d1a92d8e90b286d491e5626af53afef2ba04da33e82e30744795c71880eaa21"}, - {file = "lxml-4.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:b570da8cd0012f4af9fa76a5635cd31f707473e65a5a335b186069d5c7121ff2"}, - {file = "lxml-4.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ef87fca280fb15342726bd5f980f6faf8b84a5287fcc2d4962ea8af88b35130"}, - {file = "lxml-4.9.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:93e414e3206779ef41e5ff2448067213febf260ba747fc65389a3ddaa3fb8715"}, - {file = "lxml-4.9.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6653071f4f9bac46fbc30f3c7838b0e9063ee335908c5d61fb7a4a86c8fd2036"}, - {file = "lxml-4.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:32a73c53783becdb7eaf75a2a1525ea8e49379fb7248c3eeefb9412123536387"}, - {file = "lxml-4.9.1-cp38-cp38-win32.whl", hash = "sha256:1a7c59c6ffd6ef5db362b798f350e24ab2cfa5700d53ac6681918f314a4d3b94"}, - {file = "lxml-4.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:1436cf0063bba7888e43f1ba8d58824f085410ea2025befe81150aceb123e345"}, - {file = "lxml-4.9.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:4beea0f31491bc086991b97517b9683e5cfb369205dac0148ef685ac12a20a67"}, - {file = "lxml-4.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:41fb58868b816c202e8881fd0f179a4644ce6e7cbbb248ef0283a34b73ec73bb"}, - {file = "lxml-4.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:bd34f6d1810d9354dc7e35158aa6cc33456be7706df4420819af6ed966e85448"}, - {file = "lxml-4.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:edffbe3c510d8f4bf8640e02ca019e48a9b72357318383ca60e3330c23aaffc7"}, - {file = "lxml-4.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6d949f53ad4fc7cf02c44d6678e7ff05ec5f5552b235b9e136bd52e9bf730b91"}, - {file = "lxml-4.9.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:079b68f197c796e42aa80b1f739f058dcee796dc725cc9a1be0cdb08fc45b000"}, - {file = "lxml-4.9.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9c3a88d20e4fe4a2a4a84bf439a5ac9c9aba400b85244c63a1ab7088f85d9d25"}, - {file = "lxml-4.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4e285b5f2bf321fc0857b491b5028c5f276ec0c873b985d58d7748ece1d770dd"}, - {file = "lxml-4.9.1-cp39-cp39-win32.whl", hash = "sha256:ef72013e20dd5ba86a8ae1aed7f56f31d3374189aa8b433e7b12ad182c0d2dfb"}, - {file = "lxml-4.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:10d2017f9150248563bb579cd0d07c61c58da85c922b780060dcc9a3aa9f432d"}, - {file = "lxml-4.9.1-pp37-pypy37_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0538747a9d7827ce3e16a8fdd201a99e661c7dee3c96c885d8ecba3c35d1032c"}, - {file = "lxml-4.9.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:0645e934e940107e2fdbe7c5b6fb8ec6232444260752598bc4d09511bd056c0b"}, - {file = "lxml-4.9.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6daa662aba22ef3258934105be2dd9afa5bb45748f4f702a3b39a5bf53a1f4dc"}, - {file = "lxml-4.9.1-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:603a464c2e67d8a546ddaa206d98e3246e5db05594b97db844c2f0a1af37cf5b"}, - {file = "lxml-4.9.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:c4b2e0559b68455c085fb0f6178e9752c4be3bba104d6e881eb5573b399d1eb2"}, - {file = "lxml-4.9.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0f3f0059891d3254c7b5fb935330d6db38d6519ecd238ca4fce93c234b4a0f73"}, - {file = "lxml-4.9.1-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:c852b1530083a620cb0de5f3cd6826f19862bafeaf77586f1aef326e49d95f0c"}, - {file = "lxml-4.9.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:287605bede6bd36e930577c5925fcea17cb30453d96a7b4c63c14a257118dbb9"}, - {file = "lxml-4.9.1.tar.gz", hash = "sha256:fe749b052bb7233fe5d072fcb549221a8cb1a16725c47c37e42b0b9cb3ff2c3f"}, -] -Markdown = [ - {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, - {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, -] -MarkupSafe = [ - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, - {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, -] -mccabe = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, -] -mergedeep = [ - {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, - {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, -] -mkdocs = [ - {file = "mkdocs-1.3.1-py3-none-any.whl", hash = "sha256:fda92466393127d2da830bc6edc3a625a14b436316d1caf347690648e774c4f0"}, - {file = "mkdocs-1.3.1.tar.gz", hash = "sha256:a41a2ff25ce3bbacc953f9844ba07d106233cd76c88bac1f59cb1564ac0d87ed"}, -] -mkdocs-autorefs = [ - {file = "mkdocs-autorefs-0.4.1.tar.gz", hash = "sha256:70748a7bd025f9ecd6d6feeba8ba63f8e891a1af55f48e366d6d6e78493aba84"}, - {file = "mkdocs_autorefs-0.4.1-py3-none-any.whl", hash = "sha256:a2248a9501b29dc0cc8ba4c09f4f47ff121945f6ce33d760f145d6f89d313f5b"}, -] -mkdocs-material = [ - {file = "mkdocs-material-8.3.9.tar.gz", hash = "sha256:dc82b667d2a83f0de581b46a6d0949732ab77e7638b87ea35b770b33bc02e75a"}, - {file = "mkdocs_material-8.3.9-py2.py3-none-any.whl", hash = "sha256:263f2721f3abe533b61f7c8bed435a0462620912742c919821ac2d698b4bfe67"}, -] -mkdocs-material-extensions = [ - {file = "mkdocs-material-extensions-1.0.3.tar.gz", hash = "sha256:bfd24dfdef7b41c312ede42648f9eb83476ea168ec163b613f9abd12bbfddba2"}, - {file = "mkdocs_material_extensions-1.0.3-py3-none-any.whl", hash = "sha256:a82b70e533ce060b2a5d9eb2bc2e1be201cf61f901f93704b4acf6e3d5983a44"}, -] -mkdocs-version-annotations = [ - {file = "mkdocs-version-annotations-1.0.0.tar.gz", hash = "sha256:6786024b37d27b330fda240b76ebec8e7ce48bd5a9d7a66e99804559d088dffa"}, - {file = "mkdocs_version_annotations-1.0.0-py3-none-any.whl", hash = "sha256:385004eb4a7530dd87a227e08cd907ce7a8fe21fdf297720a4149c511bcf05f5"}, -] -mkdocstrings = [ - {file = "mkdocstrings-0.19.0-py3-none-any.whl", hash = "sha256:3217d510d385c961f69385a670b2677e68e07b5fea4a504d86bf54c006c87c7d"}, - {file = "mkdocstrings-0.19.0.tar.gz", hash = "sha256:efa34a67bad11229d532d89f6836a8a215937548623b64f3698a1df62e01cc3e"}, -] -mkdocstrings-python = [ - {file = "mkdocstrings-python-0.7.1.tar.gz", hash = "sha256:c334b382dca202dfa37071c182418a6df5818356a95d54362a2b24822ca3af71"}, - {file = "mkdocstrings_python-0.7.1-py3-none-any.whl", hash = "sha256:a22060bfa374697678e9af4e62b020d990dad2711c98f7a9fac5c0345bef93c7"}, -] -mypy = [ - {file = "mypy-0.961-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:697540876638ce349b01b6786bc6094ccdaba88af446a9abb967293ce6eaa2b0"}, - {file = "mypy-0.961-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b117650592e1782819829605a193360a08aa99f1fc23d1d71e1a75a142dc7e15"}, - {file = "mypy-0.961-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bdd5ca340beffb8c44cb9dc26697628d1b88c6bddf5c2f6eb308c46f269bb6f3"}, - {file = "mypy-0.961-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3e09f1f983a71d0672bbc97ae33ee3709d10c779beb613febc36805a6e28bb4e"}, - {file = "mypy-0.961-cp310-cp310-win_amd64.whl", hash = "sha256:e999229b9f3198c0c880d5e269f9f8129c8862451ce53a011326cad38b9ccd24"}, - {file = "mypy-0.961-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b24be97351084b11582fef18d79004b3e4db572219deee0212078f7cf6352723"}, - {file = "mypy-0.961-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f4a21d01fc0ba4e31d82f0fff195682e29f9401a8bdb7173891070eb260aeb3b"}, - {file = "mypy-0.961-cp36-cp36m-win_amd64.whl", hash = "sha256:439c726a3b3da7ca84a0199a8ab444cd8896d95012c4a6c4a0d808e3147abf5d"}, - {file = "mypy-0.961-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5a0b53747f713f490affdceef835d8f0cb7285187a6a44c33821b6d1f46ed813"}, - {file = "mypy-0.961-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e9f70df36405c25cc530a86eeda1e0867863d9471fe76d1273c783df3d35c2e"}, - {file = "mypy-0.961-cp37-cp37m-win_amd64.whl", hash = "sha256:b88f784e9e35dcaa075519096dc947a388319cb86811b6af621e3523980f1c8a"}, - {file = "mypy-0.961-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d5aaf1edaa7692490f72bdb9fbd941fbf2e201713523bdb3f4038be0af8846c6"}, - {file = "mypy-0.961-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9f5f5a74085d9a81a1f9c78081d60a0040c3efb3f28e5c9912b900adf59a16e6"}, - {file = "mypy-0.961-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f4b794db44168a4fc886e3450201365c9526a522c46ba089b55e1f11c163750d"}, - {file = "mypy-0.961-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:64759a273d590040a592e0f4186539858c948302c653c2eac840c7a3cd29e51b"}, - {file = "mypy-0.961-cp38-cp38-win_amd64.whl", hash = "sha256:63e85a03770ebf403291ec50097954cc5caf2a9205c888ce3a61bd3f82e17569"}, - {file = "mypy-0.961-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f1332964963d4832a94bebc10f13d3279be3ce8f6c64da563d6ee6e2eeda932"}, - {file = "mypy-0.961-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:006be38474216b833eca29ff6b73e143386f352e10e9c2fbe76aa8549e5554f5"}, - {file = "mypy-0.961-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9940e6916ed9371809b35b2154baf1f684acba935cd09928952310fbddaba648"}, - {file = "mypy-0.961-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a5ea0875a049de1b63b972456542f04643daf320d27dc592d7c3d9cd5d9bf950"}, - {file = "mypy-0.961-cp39-cp39-win_amd64.whl", hash = "sha256:1ece702f29270ec6af25db8cf6185c04c02311c6bb21a69f423d40e527b75c56"}, - {file = "mypy-0.961-py3-none-any.whl", hash = "sha256:03c6cc893e7563e7b2949b969e63f02c000b32502a1b4d1314cabe391aa87d66"}, - {file = "mypy-0.961.tar.gz", hash = "sha256:f730d56cb924d371c26b8eaddeea3cc07d78ff51c521c6d04899ac6904b75492"}, -] -mypy-extensions = [ - {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, - {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, -] -napalm = [ - {file = "napalm-4.0.0-py2.py3-none-any.whl", hash = "sha256:e4289f6966974b485c1f3de3e8f4a11ac2ed2825e975bbd5afc006331b1e4c36"}, - {file = "napalm-4.0.0.tar.gz", hash = "sha256:40e1bd297ac4102c14c0d427c51d61c3a12d5d5bec163750733941ad82a464ee"}, -] -ncclient = [ - {file = "ncclient-0.6.13.tar.gz", hash = "sha256:f9f8cea8bcbe057e1b948b9cd1b241eafb8a3f73c4981fbdfa1cc6ed69c0a7b3"}, -] -netaddr = [ - {file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"}, - {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, -] -netmiko = [ - {file = "netmiko-4.1.2-py3-none-any.whl", hash = "sha256:ee1e88ecbd07f619b0bc1e90648f82a64a0adee5968c3068621bbdadbfec5c03"}, - {file = "netmiko-4.1.2.tar.gz", hash = "sha256:f5ede2a28670d3dfd3470061468665f80f9b4906ed20e6b0fb4d9e1c9be67afc"}, -] -ntc-templates = [ - {file = "ntc_templates-3.1.0-py3-none-any.whl", hash = "sha256:e59fbc485a132e0d3eecb6f53fc8e85426cec099ef39678cdc20eec8dccaced6"}, - {file = "ntc_templates-3.1.0.tar.gz", hash = "sha256:7231e4227d46d1a04a03a34e3478b23acee7869942cce62b6722b2c925c2f809"}, -] -packaging = [ - {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, - {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, -] -paramiko = [ - {file = "paramiko-2.11.0-py2.py3-none-any.whl", hash = "sha256:655f25dc8baf763277b933dfcea101d636581df8d6b9774d1fb653426b72c270"}, - {file = "paramiko-2.11.0.tar.gz", hash = "sha256:003e6bee7c034c21fbb051bf83dc0a9ee4106204dd3c53054c71452cc4ec3938"}, -] -pathspec = [ - {file = "pathspec-0.10.1-py3-none-any.whl", hash = "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93"}, - {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, -] -pbr = [ - {file = "pbr-5.10.0-py2.py3-none-any.whl", hash = "sha256:da3e18aac0a3c003e9eea1a81bd23e5a3a75d745670dcf736317b7d966887fdf"}, - {file = "pbr-5.10.0.tar.gz", hash = "sha256:cfcc4ff8e698256fc17ea3ff796478b050852585aa5bae79ecd05b2ab7b39b9a"}, -] -platformdirs = [ - {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, - {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, -] -pluggy = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, -] -py = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] -pycodestyle = [ - {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, - {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, -] -pycparser = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, -] -pydocstyle = [ - {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"}, - {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"}, -] -pyeapi = [ - {file = "pyeapi-0.8.4.tar.gz", hash = "sha256:c33ad1eadd8ebac75f63488df9412081ce0b024c9e1da12a37196a5c60427c54"}, -] -pyflakes = [ - {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, - {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, -] -Pygments = [ - {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, - {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, -] -pylint = [ - {file = "pylint-2.13.9-py3-none-any.whl", hash = "sha256:705c620d388035bdd9ff8b44c5bcdd235bfb49d276d488dd2c8ff1736aa42526"}, - {file = "pylint-2.13.9.tar.gz", hash = "sha256:095567c96e19e6f57b5b907e67d265ff535e588fe26b12b5ebe1fc5645b2c731"}, -] -pymdown-extensions = [ - {file = "pymdown_extensions-9.6-py3-none-any.whl", hash = "sha256:1e36490adc7bfcef1fdb21bb0306e93af99cff8ec2db199bd17e3bf009768c11"}, - {file = "pymdown_extensions-9.6.tar.gz", hash = "sha256:b956b806439bbff10f726103a941266beb03fbe99f897c7d5e774d7170339ad9"}, -] -PyNaCl = [ - {file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1"}, - {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92"}, - {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394"}, - {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d"}, - {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858"}, - {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b"}, - {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff"}, - {file = "PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543"}, - {file = "PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93"}, - {file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba"}, -] -pyparsing = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, -] -pyserial = [ - {file = "pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0"}, - {file = "pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb"}, -] -pytest = [ - {file = "pytest-7.1.3-py3-none-any.whl", hash = "sha256:1377bda3466d70b55e3f5cecfa55bb7cfcf219c7964629b967c37cf0bda818b7"}, - {file = "pytest-7.1.3.tar.gz", hash = "sha256:4f365fec2dff9c1162f834d9f18af1ba13062db0c708bf7b946f8a5c76180c39"}, -] -python-dateutil = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, -] -pytz = [ - {file = "pytz-2022.4-py2.py3-none-any.whl", hash = "sha256:2c0784747071402c6e99f0bafdb7da0fa22645f06554c7ae06bf6358897e9c91"}, - {file = "pytz-2022.4.tar.gz", hash = "sha256:48ce799d83b6f8aab2020e369b627446696619e79645419610b9facd909b3174"}, -] -PyYAML = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, - {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, -] -pyyaml_env_tag = [ - {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, - {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, -] -requests = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, -] -scp = [ - {file = "scp-0.14.4-py2.py3-none-any.whl", hash = "sha256:29ddaafbfba60793a8a779694c97d8c150d365668a4ef67616c515b80a69ef2f"}, - {file = "scp-0.14.4.tar.gz", hash = "sha256:54699b92cb68ae34b5928c48a888eab9722a212502cba89aa795bd56597505bd"}, -] -setuptools = [ - {file = "setuptools-65.4.1-py3-none-any.whl", hash = "sha256:1b6bdc6161661409c5f21508763dc63ab20a9ac2f8ba20029aaaa7fdb9118012"}, - {file = "setuptools-65.4.1.tar.gz", hash = "sha256:3050e338e5871e70c72983072fe34f6032ae1cdeeeb67338199c2f74e083a80e"}, -] -six = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] -smmap = [ - {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, - {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, -] -snowballstemmer = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, -] -Sphinx = [ - {file = "Sphinx-5.2.3.tar.gz", hash = "sha256:5b10cb1022dac8c035f75767799c39217a05fc0fe2d6fe5597560d38e44f0363"}, - {file = "sphinx-5.2.3-py3-none-any.whl", hash = "sha256:7abf6fabd7b58d0727b7317d5e2650ef68765bbe0ccb63c8795fa8683477eaa2"}, -] -sphinx-rtd-theme = [ - {file = "sphinx_rtd_theme-1.0.0-py2.py3-none-any.whl", hash = "sha256:4d35a56f4508cfee4c4fb604373ede6feae2a306731d533f409ef5c3496fdbd8"}, - {file = "sphinx_rtd_theme-1.0.0.tar.gz", hash = "sha256:eec6d497e4c2195fa0e8b2016b337532b8a699a68bcb22a512870e16925c6a5c"}, -] -sphinxcontrib-applehelp = [ - {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, - {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, -] -sphinxcontrib-devhelp = [ - {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, - {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, -] -sphinxcontrib-htmlhelp = [ - {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"}, - {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"}, -] -sphinxcontrib-jsmath = [ - {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, - {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, -] -sphinxcontrib-qthelp = [ - {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, - {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, -] -sphinxcontrib-serializinghtml = [ - {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, - {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, -] -stevedore = [ - {file = "stevedore-3.5.1-py3-none-any.whl", hash = "sha256:df36e6c003264de286d6e589994552d3254052e7fc6a117753d87c471f06de2a"}, - {file = "stevedore-3.5.1.tar.gz", hash = "sha256:1fecadf3d7805b940227f10e6a0140b202c9a24ba5c60cb539159046dc11e8d7"}, -] -tenacity = [ - {file = "tenacity-8.1.0-py3-none-any.whl", hash = "sha256:35525cd47f82830069f0d6b73f7eb83bc5b73ee2fff0437952cedf98b27653ac"}, - {file = "tenacity-8.1.0.tar.gz", hash = "sha256:e48c437fdf9340f5666b92cd7990e96bc5fc955e1298baf4a907e3972067a445"}, -] -textfsm = [ - {file = "textfsm-1.1.2-py2.py3-none-any.whl", hash = "sha256:f3d4e9bd4344935a08e6844e53d6220e2e4fb7e465bee51fa909152ed6bab406"}, - {file = "textfsm-1.1.2.tar.gz", hash = "sha256:85a450b441aff04b1cac726bdb36f35534a5b196cca08c8bc14fddd879c4255c"}, -] -toml = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] -tomli = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] -transitions = [ - {file = "transitions-0.9.0-py2.py3-none-any.whl", hash = "sha256:5687ee8c6a3200830e44f988d16b0045f53293f7a873002d7bff70852331a078"}, - {file = "transitions-0.9.0.tar.gz", hash = "sha256:2f54d11bdb225779d7e729011e93a9fb717668ce3dc65f8d4f5a5d7ba2f48e10"}, -] -ttp = [ - {file = "ttp-0.9.1-py2.py3-none-any.whl", hash = "sha256:50d3f63a6b311f74d6928cfec0d22a962153c82ba2d1976c599873f32914b5bd"}, - {file = "ttp-0.9.1.tar.gz", hash = "sha256:25c9014d9c3f65e2f135053f9ec1fab98dc698bb999d0e8187dc0e64f8a3f549"}, -] -ttp-templates = [ - {file = "ttp_templates-0.3.1-py3-none-any.whl", hash = "sha256:ea85b5d5cc4db91654bba7c0c2bb1ac004daec78fe0f601787904d152bd08ad5"}, - {file = "ttp_templates-0.3.1.tar.gz", hash = "sha256:1916a8b165071fc818be22664b67eb7698dc439c287369c15559e00ea450a5b3"}, -] -typed-ast = [ - {file = "typed_ast-1.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:669dd0c4167f6f2cd9f57041e03c3c2ebf9063d0757dc89f79ba1daa2bfca9d4"}, - {file = "typed_ast-1.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:211260621ab1cd7324e0798d6be953d00b74e0428382991adfddb352252f1d62"}, - {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:267e3f78697a6c00c689c03db4876dd1efdfea2f251a5ad6555e82a26847b4ac"}, - {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c542eeda69212fa10a7ada75e668876fdec5f856cd3d06829e6aa64ad17c8dfe"}, - {file = "typed_ast-1.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:a9916d2bb8865f973824fb47436fa45e1ebf2efd920f2b9f99342cb7fab93f72"}, - {file = "typed_ast-1.5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79b1e0869db7c830ba6a981d58711c88b6677506e648496b1f64ac7d15633aec"}, - {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a94d55d142c9265f4ea46fab70977a1944ecae359ae867397757d836ea5a3f47"}, - {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:183afdf0ec5b1b211724dfef3d2cad2d767cbefac291f24d69b00546c1837fb6"}, - {file = "typed_ast-1.5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:639c5f0b21776605dd6c9dbe592d5228f021404dafd377e2b7ac046b0349b1a1"}, - {file = "typed_ast-1.5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cf4afcfac006ece570e32d6fa90ab74a17245b83dfd6655a6f68568098345ff6"}, - {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed855bbe3eb3715fca349c80174cfcfd699c2f9de574d40527b8429acae23a66"}, - {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6778e1b2f81dfc7bc58e4b259363b83d2e509a65198e85d5700dfae4c6c8ff1c"}, - {file = "typed_ast-1.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:0261195c2062caf107831e92a76764c81227dae162c4f75192c0d489faf751a2"}, - {file = "typed_ast-1.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2efae9db7a8c05ad5547d522e7dbe62c83d838d3906a3716d1478b6c1d61388d"}, - {file = "typed_ast-1.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7d5d014b7daa8b0bf2eaef684295acae12b036d79f54178b92a2b6a56f92278f"}, - {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:370788a63915e82fd6f212865a596a0fefcbb7d408bbbb13dea723d971ed8bdc"}, - {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4e964b4ff86550a7a7d56345c7864b18f403f5bd7380edf44a3c1fb4ee7ac6c6"}, - {file = "typed_ast-1.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:683407d92dc953c8a7347119596f0b0e6c55eb98ebebd9b23437501b28dcbb8e"}, - {file = "typed_ast-1.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4879da6c9b73443f97e731b617184a596ac1235fe91f98d279a7af36c796da35"}, - {file = "typed_ast-1.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3e123d878ba170397916557d31c8f589951e353cc95fb7f24f6bb69adc1a8a97"}, - {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebd9d7f80ccf7a82ac5f88c521115cc55d84e35bf8b446fcd7836eb6b98929a3"}, - {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98f80dee3c03455e92796b58b98ff6ca0b2a6f652120c263efdba4d6c5e58f72"}, - {file = "typed_ast-1.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:0fdbcf2fef0ca421a3f5912555804296f0b0960f0418c440f5d6d3abb549f3e1"}, - {file = "typed_ast-1.5.4.tar.gz", hash = "sha256:39e21ceb7388e4bb37f4c679d72707ed46c2fbf2a5609b8b8ebc4b067d977df2"}, -] -typing-extensions = [ - {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, - {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, -] -urllib3 = [ - {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, - {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, -] -watchdog = [ - {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330"}, - {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d"}, - {file = "watchdog-2.1.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658"}, - {file = "watchdog-2.1.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591"}, - {file = "watchdog-2.1.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33"}, - {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846"}, - {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3"}, - {file = "watchdog-2.1.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654"}, - {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39"}, - {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7"}, - {file = "watchdog-2.1.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd"}, - {file = "watchdog-2.1.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3"}, - {file = "watchdog-2.1.9-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d"}, - {file = "watchdog-2.1.9-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_armv7l.whl", hash = "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_i686.whl", hash = "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64.whl", hash = "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_s390x.whl", hash = "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6"}, - {file = "watchdog-2.1.9-py3-none-win32.whl", hash = "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1"}, - {file = "watchdog-2.1.9-py3-none-win_amd64.whl", hash = "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c"}, - {file = "watchdog-2.1.9-py3-none-win_ia64.whl", hash = "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428"}, - {file = "watchdog-2.1.9.tar.gz", hash = "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609"}, -] -wrapt = [ - {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, - {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, - {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, - {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, - {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, - {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, - {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, - {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, - {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, - {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, - {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, - {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, - {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, - {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, - {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, - {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, -] -yamllint = [ - {file = "yamllint-1.28.0.tar.gz", hash = "sha256:9e3d8ddd16d0583214c5fdffe806c9344086721f107435f68bad990e5a88826b"}, -] -yamlordereddictloader = [ - {file = "yamlordereddictloader-0.4.0.tar.gz", hash = "sha256:7f30f0b99ea3f877f7cb340c570921fa9d639b7f69cba18be051e27f8de2080e"}, -] -zipp = [ - {file = "zipp-3.9.0-py3-none-any.whl", hash = "sha256:972cfa31bc2fedd3fa838a51e9bc7e64b7fb725a8c00e7431554311f180e9980"}, - {file = "zipp-3.9.0.tar.gz", hash = "sha256:3a7af91c3db40ec72dd9d154ae18e008c69efe8ca88dde4f9a731bb82fe2f9eb"}, -] +lock-version = "2.0" +python-versions = "^3.8" +content-hash = "31acbdd2552dcd4f4f421b8ec8bc0ba4c39aa2bf2b3b03a557ade07c64478520" diff --git a/pyproject.toml b/pyproject.toml index 73b46b1c..99b1a0e9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "netutils" -version = "1.4.1" +version = "1.5.0" description = "Common helper functions useful in network automation." authors = ["Network to Code, LLC "] license = "Apache-2.0" @@ -11,12 +11,12 @@ readme = "README.md" keywords = ["netutils", "network utils", "network utilities", "net-utils"] classifiers = [ "Intended Audience :: Developers", - "Development Status :: 4 - Beta", + "Development Status :: 5 - Production/Stable", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", ] include = [ "LICENSE", @@ -25,7 +25,7 @@ include = [ ] [tool.poetry.dependencies] -python = "^3.7" +python = "^3.8" napalm = {version = "^4.0.0", optional = true} [tool.poetry.extras] @@ -44,16 +44,16 @@ pydocstyle = "*" sphinx-rtd-theme = "*" toml = "*" yamllint = "*" -mypy = "^0.961" -mkdocs = "1.3.1" -mkdocs-material = "8.3.9" -mkdocstrings = "0.19" -mkdocstrings-python = "0.7.1" +mypy = "*" +mkdocs = "1.4.3" +mkdocs-material = "8.5.8" +mkdocstrings = "0.22.0" +mkdocstrings-python = "1.1.2" mkdocs-version-annotations = "1.0.0" [tool.black] line-length = 120 -target-version = ['py37'] +target-version = ['py311'] include = '\.pyi?$' exclude = ''' ( @@ -70,6 +70,8 @@ exclude = ''' | dist | data_files # This is ran via black within the flatbot process, redundant and slow otherwise )/ + | sros_full_received.py # TODO: Taking very long, should look to fix + | iosxr_full_received.py # TODO: Taking very long, should look to fix | settings.py # This is where you define files that should not be stylized by black # the root of the project ) @@ -85,7 +87,6 @@ good-names="i,ip,j,k,ex,Run,_" # Pylint and Black disagree about how to format multi-line arrays; Black wins. disable = """, line-too-long, - bad-continuation, consider-iterating-dictionary, """ @@ -102,7 +103,7 @@ testpaths = "tests/" addopts = "-vv --doctest-modules -p no:warnings --ignore-glob='*mock*'" [tool.mypy] -python_version = 3.7 +python_version = 3.11 ignore_errors = false disallow_untyped_calls = true disallow_untyped_defs = true diff --git a/tasks.py b/tasks.py index 671c5226..cdbb3296 100644 --- a/tasks.py +++ b/tasks.py @@ -1,7 +1,7 @@ """Tasks for use with Invoke.""" import os import sys -from distutils.util import strtobool +from distutils.util import strtobool # pylint: disable=W0402 from invoke import task @@ -31,7 +31,7 @@ def is_truthy(arg): TOOL_CONFIG = PYPROJECT_CONFIG["tool"]["poetry"] # Can be set to a separate Python version to be used for launching or building image -PYTHON_VER = os.getenv("PYTHON_VER", "3.9") +PYTHON_VER = os.getenv("PYTHON_VER", "3.11") # Name of the docker image/image IMAGE_NAME = os.getenv("IMAGE_NAME", TOOL_CONFIG["name"]) # Tag for the image diff --git a/tests/unit/mock/config/compliance/compliance/mikrotik_routeros/routeros_backup.txt b/tests/unit/mock/config/compliance/compliance/mikrotik_routeros/routeros_backup.txt new file mode 100644 index 00000000..d32a05c7 --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/mikrotik_routeros/routeros_backup.txt @@ -0,0 +1,59 @@ +# by RouterOS 6.49.6 +# software id = WZ00-84LP +# +# model = CCR1036-8G-2S+ +# serial number = C6CD0BF7A020 +/interface bridge add name=google-vpc-peering-iface +/interface bridge add name=loopback +/interface bonding add mode=802.3ad name=Po1 slaves=sfp-sfpplus1,sfp-sfpplus2 +/interface vlan add interface=Po1 name=vlan11-mgmt vlan-id=11 +/interface vlan add interface=vlan2933-Transit-to-CC-NNI name=vlan3049-Transit-to-XXX vlan-id=3049 +/interface vlan add disabled=yes interface=Po1 name=vlan3051-Transit-to-CSW-through-QoE-Disabled vlan-id=3051 +/interface vlan add interface=Po1 mtu=1300 name=vlan3225-Transit-CORE-Agg1-to-COREXXX vlan-id=3225 +/interface wireless security-profiles set [ find default=yes ] supplicant-identity=MikroTik +/ip ipsec peer add address=50.157.100.38/32 exchange-mode=ike2 local-address=55.106.77.11 name=google-vpc-peer +/ip pool add name=BNEdgeLiteTest ranges=192.168.69.254 +/ip pool add name=BNEdgeLiteTest2 ranges=192.168.70.254 +/ip dhcp-server add address-pool=BNEdgeLiteTest disabled=no interface=ether1 name=dhcp1 +/ip dhcp-server add address-pool=BNEdgeLiteTest2 disabled=no interface=ether2 name=dhcp2 +/routing bgp instance set default as=1234 router-id=10.127.1.3 +/routing ospf instance set [ find default=yes ] router-id=10.127.1.3 +/snmp community add addresses=::/0 name=somestringa +/system logging action set 3 bsd-syslog=yes remote=172.16.11.1 remote-port=5140 +/user group set full policy=local,telnet,ssh,ftp,reboot,read,write,policy,test,winbox,password,web,sniff,sensitive,api,romon,dude,tikapp +/user group add name=prom policy=ssh,read,winbox,api,!local,!telnet,!ftp,!reboot,!write,!policy,!test,!password,!web,!sniff,!sensitive,!romon,!dude,!tikapp +/ip neighbor discovery-settings set discover-interface-list=!dynamic +/ip address add address=10.0.11.13/24 interface=vlan11-mgmt network=10.0.11.0 +/ip address add address=192.168.69.1/24 interface=ether1 network=192.168.69.0 +/ip dhcp-server network add address=192.168.69.0/24 gateway=192.168.69.1 +/ip dhcp-server network add address=192.168.70.0/24 gateway=192.168.70.1 +/ip dns set servers=8.8.8.8 +/ip firewall address-list add address=34.157.17.38 list=whitelist +/ip firewall address-list add address=72.202.79.109 list=google-vpc-acl +/ip firewall address-list add address=34.157.17.38 list=google-vpc-acl +/ip firewall filter add action=drop chain=input dst-address=50.106.77.11 src-address-list=!google-vpc-acl +/ip firewall nat add action=dst-nat chain=dstnat dst-address=50.106.77.11 dst-port=443 protocol=tcp to-addresses=10.1.15.10 +/ip firewall nat add action=masquerade chain=srcnat out-interface=vlan12-Servers +/ip firewall nat add action=src-nat chain=srcnat src-address=50.64.0.75 to-addresses=55.106.77.11 +/ip ipsec identity add peer=google-vpc-peer secret=***** +/ip ipsec policy set 0 disabled=yes +/ip ipsec policy add disabled=yes dst-address=169.254.1.1/32 peer=google-vpc-peer src-address=169.254.1.2/32 tunnel=yes +/ip ipsec policy add disabled=yes dst-address=10.150.0.0/20 peer=google-vpc-peer src-address=0.0.0.0/0 tunnel=yes +/ip service set telnet disabled=yes +/ip service set ftp disabled=yes +/ip service set www disabled=yes +/ip service set api address=10.1.15.5/32,10.120.16.0/20,172.16.11.0/24 +/ip service set api-ssl disabled=yes +/routing bgp network add network=55.106.77.11/32 synchronize=no +/routing bgp network add network=55.106.77.12/32 synchronize=no +/routing bgp peer add in-filter=ibgp-allow-default-in name=CSW out-filter=ibgp-no-default-out remote-address=10.127.1.10 remote-as=12345 update-source=loopback +/routing filter add action=discard chain=ibgp-no-default-out prefix=10.127.1.0/24 +/routing filter add action=accept chain=ibgp-no-default-out prefix=10.64.0.0/10 prefix-length=22-32 +/routing ospf interface add dead-interval=8s hello-interval=2s interface=vlan3049-Transit-to-85Presidential network-type=point-to-point +/routing ospf interface add cost=11 dead-interval=8s hello-interval=2s interface=vlan3166-Transit-HalseyCore-Agg1-to-Indigo-5 network-type=point-to-point +/routing ospf network add area=backbone network=10.126.0.16/29 +/snmp set enabled=yes trap-community=somestring +/system clock set time-zone-name=America/New_York +/system identity set name=ag1.123site.nwk.nj +/system logging add action=remote topics=error +/system logging add action=remote topics=info diff --git a/tests/unit/mock/config/compliance/compliance/mikrotik_routeros/routeros_feature.py b/tests/unit/mock/config/compliance/compliance/mikrotik_routeros/routeros_feature.py new file mode 100644 index 00000000..531f8a6e --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/mikrotik_routeros/routeros_feature.py @@ -0,0 +1,5 @@ +features = [ + {"name": "bgp", "ordered": True, "section": ["/routing bgp instance"]}, + {"name": "snmp", "ordered": True, "section": ["/snmp"]}, + {"name": "ospf-networks", "ordered": True, "section": ["/routing ospf network"]}, +] diff --git a/tests/unit/mock/config/compliance/compliance/mikrotik_routeros/routeros_intended.txt b/tests/unit/mock/config/compliance/compliance/mikrotik_routeros/routeros_intended.txt new file mode 100644 index 00000000..c296173b --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/mikrotik_routeros/routeros_intended.txt @@ -0,0 +1,60 @@ +# by RouterOS 6.49.6 +# software id = WZ00-84LP +# +# model = CCR1036-8G-2S+ +# serial number = C6CD0BF7A020 +/interface bridge add name=google-vpc-peering-iface +/interface bridge add name=loopback +/interface bonding add mode=802.3ad name=Po1 slaves=sfp-sfpplus1,sfp-sfpplus2 +/interface vlan add interface=Po1 name=vlan11-mgmt vlan-id=11 +/interface vlan add interface=vlan2933-Transit-to-CC-NNI name=vlan3049-Transit-to-XXX vlan-id=3049 +/interface vlan add disabled=yes interface=Po1 name=vlan3051-Transit-to-CSW-through-QoE-Disabled vlan-id=3051 +/interface vlan add interface=Po1 mtu=1300 name=vlan3225-Transit-CORE-Agg1-to-COREXXX vlan-id=3225 +/interface wireless security-profiles set [ find default=yes ] supplicant-identity=MikroTik +/ip ipsec peer add address=50.157.100.38/32 exchange-mode=ike2 local-address=55.106.77.11 name=google-vpc-peer +/ip pool add name=BNEdgeLiteTest ranges=192.168.69.254 +/ip pool add name=BNEdgeLiteTest2 ranges=192.168.70.254 +/ip dhcp-server add address-pool=BNEdgeLiteTest disabled=no interface=ether1 name=dhcp1 +/ip dhcp-server add address-pool=BNEdgeLiteTest2 disabled=no interface=ether2 name=dhcp2 +/routing bgp instance set default as=1234 router-id=10.127.1.3 +/routing ospf instance set [ find default=yes ] router-id=10.127.1.3 +/snmp community add addresses=::/0 name=somestringa +/system logging action set 3 bsd-syslog=yes remote=172.16.11.1 remote-port=5140 +/user group set full policy=local,telnet,ssh,ftp,reboot,read,write,policy,test,winbox,password,web,sniff,sensitive,api,romon,dude,tikapp +/user group add name=prom policy=ssh,read,winbox,api,!local,!telnet,!ftp,!reboot,!write,!policy,!test,!password,!web,!sniff,!sensitive,!romon,!dude,!tikapp +/ip neighbor discovery-settings set discover-interface-list=!dynamic +/ip address add address=10.0.11.13/24 interface=vlan11-mgmt network=10.0.11.0 +/ip address add address=192.168.69.1/24 interface=ether1 network=192.168.69.0 +/ip dhcp-server network add address=192.168.69.0/24 gateway=192.168.69.1 +/ip dhcp-server network add address=192.168.70.0/24 gateway=192.168.70.1 +/ip dns set servers=8.8.8.8 +/ip firewall address-list add address=34.157.17.38 list=whitelist +/ip firewall address-list add address=72.202.79.109 list=google-vpc-acl +/ip firewall address-list add address=34.157.17.38 list=google-vpc-acl +/ip firewall filter add action=drop chain=input dst-address=50.106.77.11 src-address-list=!google-vpc-acl +/ip firewall nat add action=dst-nat chain=dstnat dst-address=50.106.77.11 dst-port=443 protocol=tcp to-addresses=10.1.15.10 +/ip firewall nat add action=masquerade chain=srcnat out-interface=vlan12-Servers +/ip firewall nat add action=src-nat chain=srcnat src-address=50.64.0.75 to-addresses=55.106.77.11 +/ip ipsec identity add peer=google-vpc-peer secret=***** +/ip ipsec policy set 0 disabled=yes +/ip ipsec policy add disabled=yes dst-address=169.254.1.1/32 peer=google-vpc-peer src-address=169.254.1.2/32 tunnel=yes +/ip ipsec policy add disabled=yes dst-address=10.150.0.0/20 peer=google-vpc-peer src-address=0.0.0.0/0 tunnel=yes +/ip service set telnet disabled=yes +/ip service set ftp disabled=yes +/ip service set www disabled=yes +/ip service set api address=10.1.15.5/32,10.120.16.0/20,172.16.11.0/24 +/ip service set api-ssl disabled=yes +/routing bgp network add network=55.106.77.11/32 synchronize=no +/routing bgp network add network=55.106.77.12/32 synchronize=no +/routing bgp peer add in-filter=ibgp-allow-default-in name=CSW out-filter=ibgp-no-default-out remote-address=10.127.1.10 remote-as=12345 update-source=loopback +/routing filter add action=discard chain=ibgp-no-default-out prefix=10.127.1.0/24 +/routing filter add action=accept chain=ibgp-no-default-out prefix=10.64.0.0/10 prefix-length=22-32 +/routing ospf interface add dead-interval=8s hello-interval=2s interface=vlan3049-Transit-to-85Presidential network-type=point-to-point +/routing ospf interface add cost=11 dead-interval=8s hello-interval=2s interface=vlan3166-Transit-Core-Agg1-to-SiteXYZ network-type=point-to-point +/routing ospf network add area=backbone network=10.126.0.16/29 +/routing ospf network add area=backbone network=10.127.1.3/32 +/snmp set enabled=yes trap-community=somestring +/system clock set time-zone-name=America/New_York +/system identity set name=ag1.123site.nwk.nj +/system logging add action=remote topics=error +/system logging add action=remote topics=info diff --git a/tests/unit/mock/config/compliance/compliance/mikrotik_routeros/routeros_received.json b/tests/unit/mock/config/compliance/compliance/mikrotik_routeros/routeros_received.json new file mode 100644 index 00000000..2d974195 --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/mikrotik_routeros/routeros_received.json @@ -0,0 +1,32 @@ +{ + "bgp": { + "actual": "/routing bgp instance set default as=1234 router-id=10.127.1.3", + "cannot_parse": true, + "compliant": true, + "extra": "", + "intended": "/routing bgp instance set default as=1234 router-id=10.127.1.3", + "missing": "", + "ordered_compliant": true, + "unordered_compliant": true + }, + "snmp": { + "actual": "/snmp community add addresses=::/0 name=somestringa\n/snmp set enabled=yes trap-community=somestring", + "cannot_parse": true, + "compliant": true, + "extra": "", + "intended": "/snmp community add addresses=::/0 name=somestringa\n/snmp set enabled=yes trap-community=somestring", + "missing": "", + "ordered_compliant": true, + "unordered_compliant": true + }, + "ospf-networks": { + "actual": "/routing ospf network add area=backbone network=10.126.0.16/29", + "cannot_parse": true, + "compliant": false, + "extra": "", + "intended": "/routing ospf network add area=backbone network=10.126.0.16/29\n/routing ospf network add area=backbone network=10.127.1.3/32", + "missing": "/routing ospf network add area=backbone network=10.127.1.3/32", + "ordered_compliant": false, + "unordered_compliant": false + } +} diff --git a/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_backup.txt b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_backup.txt new file mode 100644 index 00000000..9f68533d --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_backup.txt @@ -0,0 +1,32 @@ +set deviceconfig system ip-address 10.1.1.2 +set deviceconfig system netmask 255.255.255.0 +set deviceconfig system update-server updates.paloaltonetworks.com +set deviceconfig system update-schedule threats recurring sync-to-peer yes +set deviceconfig system update-schedule threats recurring daily at 01:30 +set deviceconfig system update-schedule threats recurring daily disable-new-content no +set deviceconfig system update-schedule threats recurring daily action download-and-install +set deviceconfig system update-schedule threats recurring threshold 24 +set deviceconfig system update-schedule threats recurring new-app-threshold 240 +set deviceconfig system update-schedule global-protect-datafile recurring weekly at 02:00 +set deviceconfig system update-schedule global-protect-datafile recurring weekly day-of-week tuesday +set deviceconfig system update-schedule wildfire recurring every-15-mins at 5 +set deviceconfig system update-schedule wildfire recurring every-15-mins action download-and-install +set deviceconfig system update-schedule wildfire recurring every-15-mins sync-to-peer yes +set deviceconfig system update-schedule anti-virus recurring sync-to-peer yes +set deviceconfig system update-schedule anti-virus recurring daily at 03:30 +set deviceconfig system update-schedule anti-virus recurring daily action download-and-install +set deviceconfig system timezone America/New_York +set deviceconfig system service disable-telnet yes +set deviceconfig system service disable-http yes +set deviceconfig system service disable-snmp no +set deviceconfig system snmp-setting snmp-system +set deviceconfig system hostname firewall1 +set deviceconfig system default-gateway 10.1.1.1 +set deviceconfig system dns-setting servers primary 10.1.1.3 +set deviceconfig system dns-setting servers secondary 10.1.1.4 +set deviceconfig system permitted-ip 0.0.0.0/0 +set deviceconfig system domain example.com +set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1 +set mgt-config users readonly phash passhash +set mgt-config users user1 permissions role-based superuser yes +set mgt-config users user1 phash passhash diff --git a/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_feature.py b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_feature.py new file mode 100644 index 00000000..077595c5 --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_feature.py @@ -0,0 +1,3 @@ +features = [ + {"name": "management", "ordered": False, "section": ["set mgt-config "]}, +] diff --git a/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_intended.txt b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_intended.txt new file mode 100644 index 00000000..9f68533d --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_intended.txt @@ -0,0 +1,32 @@ +set deviceconfig system ip-address 10.1.1.2 +set deviceconfig system netmask 255.255.255.0 +set deviceconfig system update-server updates.paloaltonetworks.com +set deviceconfig system update-schedule threats recurring sync-to-peer yes +set deviceconfig system update-schedule threats recurring daily at 01:30 +set deviceconfig system update-schedule threats recurring daily disable-new-content no +set deviceconfig system update-schedule threats recurring daily action download-and-install +set deviceconfig system update-schedule threats recurring threshold 24 +set deviceconfig system update-schedule threats recurring new-app-threshold 240 +set deviceconfig system update-schedule global-protect-datafile recurring weekly at 02:00 +set deviceconfig system update-schedule global-protect-datafile recurring weekly day-of-week tuesday +set deviceconfig system update-schedule wildfire recurring every-15-mins at 5 +set deviceconfig system update-schedule wildfire recurring every-15-mins action download-and-install +set deviceconfig system update-schedule wildfire recurring every-15-mins sync-to-peer yes +set deviceconfig system update-schedule anti-virus recurring sync-to-peer yes +set deviceconfig system update-schedule anti-virus recurring daily at 03:30 +set deviceconfig system update-schedule anti-virus recurring daily action download-and-install +set deviceconfig system timezone America/New_York +set deviceconfig system service disable-telnet yes +set deviceconfig system service disable-http yes +set deviceconfig system service disable-snmp no +set deviceconfig system snmp-setting snmp-system +set deviceconfig system hostname firewall1 +set deviceconfig system default-gateway 10.1.1.1 +set deviceconfig system dns-setting servers primary 10.1.1.3 +set deviceconfig system dns-setting servers secondary 10.1.1.4 +set deviceconfig system permitted-ip 0.0.0.0/0 +set deviceconfig system domain example.com +set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1 +set mgt-config users readonly phash passhash +set mgt-config users user1 permissions role-based superuser yes +set mgt-config users user1 phash passhash diff --git a/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_received.json b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_received.json new file mode 100644 index 00000000..b9561ada --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_received.json @@ -0,0 +1,12 @@ +{ + "management": { + "actual": "set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1\nset mgt-config users readonly phash passhash\nset mgt-config users user1 permissions role-based superuser yes\nset mgt-config users user1 phash passhash", + "cannot_parse": true, + "compliant": true, + "extra": "", + "intended": "set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1\nset mgt-config users readonly phash passhash\nset mgt-config users user1 permissions role-based superuser yes\nset mgt-config users user1 phash passhash", + "missing": "", + "ordered_compliant": true, + "unordered_compliant": true + } +} \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_backup.txt b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_backup.txt new file mode 100644 index 00000000..58cdae0c --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_backup.txt @@ -0,0 +1,196 @@ +Current configuration: +! +ver 08.0.95gT211 +! +stack unit 1 + module 1 icx7150-c12-poe-port-management-module + module 2 icx7150-2-copper-port-2g-module + module 3 icx7150-2-sfp-plus-port-20g-module + stack-port 1/3/1 + stack-port 1/3/2 +! +! +banner motd $ ++----------------+ WARNING RUCKUS SWITCH +---------------+ +. +. Access to this system is limited to authorized +. users and for official purposes only +. +. Your activities will be logged and abuse +. will be reported! +. ++----------------+ WARNING RUCKUS SWITCH +---------------+ $ +! +! +vlan 1 name DEFAULT-VLAN by port + no spanning-tree +! +! +! +! +vlan 2000 name MGMT-VLAN by port + tagged ethe 1/2/1 to 1/2/2 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/1 ethe 1/1/3 ethe 1/1/5 ethe 1/1/7 ethe 1/1/9 ethe 1/1/11 to 1/1/12 + no spanning-tree +! +! +! +vlan 3000 name Guest-WiFi by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3001 by port + tagged ethe 1/1/1 ethe 1/1/3 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/2 + no spanning-tree +! +vlan 3002 by port + tagged ethe 1/1/1 to 1/1/3 ethe 1/1/5 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/4 + no spanning-tree +! +vlan 3003 by port + tagged ethe 1/1/1 to 1/1/5 ethe 1/1/7 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/6 + no spanning-tree +! +vlan 3004 by port + tagged ethe 1/1/1 to 1/1/7 ethe 1/1/9 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/8 + no spanning-tree +! +vlan 3005 by port + tagged ethe 1/1/1 to 1/1/9 ethe 1/1/11 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/10 + no spanning-tree +! +vlan 3006 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3007 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3008 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3009 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3010 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +! +! +vlan 3995 name OfficeNetwork by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +! +! +mstp scope all +mstp instance 0 vlan 1 +mstp instance 0 vlan 2000 +mstp instance 0 vlan 3000 to 3010 +mstp instance 0 vlan 3995 +mstp start +! +! +! +! +errdisable recovery cause all +aaa authentication web-server default local +aaa authentication login default local +enable telnet authentication +enable aaa console +hostname NTC-Test-MDF +ip dhcp snooping vlan 2000 +ip address 10.254.220.10 255.255.255.0 +ip default-gateway 10.254.220.1 +! +no telnet server +username admin password testpass +! +! +snmp-server community testcomm rw +! +! +! +! +manager registrar +! +manager port-list 987 +! +! +interface ethernet 1/1/1 + port-name Unit-111-AP + inline power power-limit 12000 +! +interface ethernet 1/1/2 + port-name Unit-111-Wired +! +interface ethernet 1/1/3 + port-name Unit-112-AP + inline power power-limit 12000 +! +interface ethernet 1/1/4 + port-name Unit-112-Wired +! +interface ethernet 1/1/5 + port-name Unit-113-AP + inline power power-limit 12000 +! +interface ethernet 1/1/6 + port-name Unit-113-Wired +! +interface ethernet 1/1/7 + port-name Unit-114-AP + inline power power-limit 12000 +! +interface ethernet 1/1/8 + port-name Unit-114-Wired +! +interface ethernet 1/1/9 + port-name Unit-115-AP + inline power power-limit 12000 +! +interface ethernet 1/1/10 + port-name Unit-115-Wired +! +interface ethernet 1/1/11 + port-name UPS +! +interface ethernet 1/1/12 + port-name Tech-Test-port +! +interface ethernet 1/3/1 + dhcp snooping trust +! +interface ethernet 1/3/2 + dhcp snooping trust +! +! +! +! +! +! +! +no lldp run +! +! +overlay-gateway gateway1 + type layer2-extension + ip interface Loopback 1 + map vlan 2 vni 3 + site site1 + ip address 67.67.67.1 + extend vlan add 2 +! +! +! +! +end \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_feature.py b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_feature.py new file mode 100644 index 00000000..2ca8a507 --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_feature.py @@ -0,0 +1,5 @@ +features = [ + {"name": "snmp", "ordered": False, "section": ["snmp-server"]}, + {"name": "aaa", "ordered": False, "section": ["aaa"]}, + {"name": "mstp", "ordered": True, "section": ["mstp"]}, +] diff --git a/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_intended.txt b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_intended.txt new file mode 100644 index 00000000..2468191b --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_intended.txt @@ -0,0 +1,197 @@ +Current configuration: +! +ver 08.0.95gT211 +! +stack unit 1 + module 1 icx7150-c12-poe-port-management-module + module 2 icx7150-2-copper-port-2g-module + module 3 icx7150-2-sfp-plus-port-20g-module + stack-port 1/3/1 + stack-port 1/3/2 +! +! +banner motd $ ++----------------+ WARNING RUCKUS SWITCH +---------------+ +. +. Access to this system is limited to authorized +. users and for official purposes only +. +. Your activities will be logged and abuse +. will be reported! +. ++----------------+ WARNING RUCKUS SWITCH +---------------+ $ +! +! +vlan 1 name DEFAULT-VLAN by port + no spanning-tree +! +! +! +! +vlan 2000 name MGMT-VLAN by port + tagged ethe 1/2/1 to 1/2/2 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/1 ethe 1/1/3 ethe 1/1/5 ethe 1/1/7 ethe 1/1/9 ethe 1/1/11 to 1/1/12 + no spanning-tree +! +! +! +vlan 3000 name Guest-WiFi by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3001 by port + tagged ethe 1/1/1 ethe 1/1/3 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/2 + no spanning-tree +! +vlan 3002 by port + tagged ethe 1/1/1 to 1/1/3 ethe 1/1/5 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/4 + no spanning-tree +! +vlan 3003 by port + tagged ethe 1/1/1 to 1/1/5 ethe 1/1/7 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/6 + no spanning-tree +! +vlan 3004 by port + tagged ethe 1/1/1 to 1/1/7 ethe 1/1/9 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/8 + no spanning-tree +! +vlan 3005 by port + tagged ethe 1/1/1 to 1/1/9 ethe 1/1/11 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/10 + no spanning-tree +! +vlan 3006 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3007 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3008 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3009 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3010 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +! +! +vlan 3995 name OfficeNetwork by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +! +! +mstp scope all +mstp instance 0 vlan 1 +mstp instance 0 vlan 2000 +mstp instance 0 vlan 3000 to 3010 +mstp instance 0 vlan 3995 +mstp start +! +! +! +! +errdisable recovery cause all +aaa authentication web-server default local +aaa authentication login default local +enable telnet authentication +enable aaa console +hostname NTC-Test-MDF +ip dhcp snooping vlan 2000 +ip address 10.254.220.10 255.255.255.0 +ip default-gateway 10.254.220.1 +! +no telnet server +username admin password testpass +! +! +snmp-server community testcamm rw +! +! +! +! +manager registrar +! +manager port-list 987 +! +! +interface ethernet 1/1/1 + port-name Unit-111-AP + inline power power-limit 12000 +! +interface ethernet 1/1/2 + port-name Unit-111-Wired +! +interface ethernet 1/1/3 + port-name Unit-112-AP + inline power power-limit 12000 +! +interface ethernet 1/1/4 + port-name Unit-112-Wired +! +interface ethernet 1/1/5 + port-name Unit-113-AP + inline power power-limit 12000 +! +interface ethernet 1/1/6 + port-name Unit-113-Wired +! +interface ethernet 1/1/7 + port-name Unit-114-AP + inline power power-limit 12000 +! +interface ethernet 1/1/8 + port-name Unit-114-Wired +! +interface ethernet 1/1/9 + port-name Unit-115-AP + inline power power-limit 12000 +! +interface ethernet 1/1/10 + port-name Unit-115-Wired +! +interface ethernet 1/1/11 + port-name UPS +! +interface ethernet 1/1/12 + port-name Tech-Test-port +! +interface ethernet 1/3/1 + dhcp snooping trust +! +interface ethernet 1/3/2 + dhcp snooping trust +! +! +! +! +! +! +! +no lldp run +! +! +overlay-gateway gateway1 + type layer2-extension + ip interface Loopback 1 + map vlan 2 vni 3 + site site1 + ip address 67.67.67.1 + extend vlan add 2 +! +! +! +! +! +end \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_received.json b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_received.json new file mode 100644 index 00000000..519694bb --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_received.json @@ -0,0 +1,32 @@ +{ + "aaa": { + "actual": "aaa authentication web-server default local\naaa authentication login default local", + "cannot_parse": true, + "compliant": true, + "extra": "", + "intended": "aaa authentication web-server default local\naaa authentication login default local", + "missing": "", + "ordered_compliant": true, + "unordered_compliant": true + }, + "mstp": { + "actual": "mstp scope all\nmstp instance 0 vlan 1\nmstp instance 0 vlan 2000\nmstp instance 0 vlan 3000 to 3010\nmstp instance 0 vlan 3995\nmstp start", + "cannot_parse": true, + "compliant": true, + "extra": "", + "intended": "mstp scope all\nmstp instance 0 vlan 1\nmstp instance 0 vlan 2000\nmstp instance 0 vlan 3000 to 3010\nmstp instance 0 vlan 3995\nmstp start", + "missing": "", + "ordered_compliant": true, + "unordered_compliant": true + }, + "snmp": { + "actual": "snmp-server community testcomm rw", + "cannot_parse": true, + "compliant": false, + "extra": "snmp-server community testcomm rw", + "intended": "snmp-server community testcamm rw", + "missing": "snmp-server community testcamm rw", + "ordered_compliant": false, + "unordered_compliant": false + } +} diff --git a/tests/unit/mock/config/compliance/config_section_not_parsed/mikrotik_routeros/routeros_feature.py b/tests/unit/mock/config/compliance/config_section_not_parsed/mikrotik_routeros/routeros_feature.py new file mode 100644 index 00000000..df05b7a3 --- /dev/null +++ b/tests/unit/mock/config/compliance/config_section_not_parsed/mikrotik_routeros/routeros_feature.py @@ -0,0 +1,6 @@ +features = [ + {"name": "routing-filter", "ordered": True, "section": ["/routing filter"]}, + {"name": "ospf", "ordered": True, "section": ["/routing ospf"]}, + {"name": "snmp", "ordered": True, "section": ["/snmp"]}, + {"name": "ip-firewall", "ordered": True, "section": ["/ip firewall"]}, +] diff --git a/tests/unit/mock/config/compliance/config_section_not_parsed/mikrotik_routeros/routeros_received.json b/tests/unit/mock/config/compliance/config_section_not_parsed/mikrotik_routeros/routeros_received.json new file mode 100644 index 00000000..1f56386b --- /dev/null +++ b/tests/unit/mock/config/compliance/config_section_not_parsed/mikrotik_routeros/routeros_received.json @@ -0,0 +1,5 @@ +{ + "remaining_cfg": "/system clock set time-zone-name=America/New_York\n/system identity set name=ag1.123site.nwk.nj\n/system logging add action=remote topics=error\n/system logging add action=remote topics=info", + + "section_not_found": ["ip-firewall"] +} diff --git a/tests/unit/mock/config/compliance/config_section_not_parsed/mikrotik_routeros/routeros_sent.txt b/tests/unit/mock/config/compliance/config_section_not_parsed/mikrotik_routeros/routeros_sent.txt new file mode 100644 index 00000000..47f233fc --- /dev/null +++ b/tests/unit/mock/config/compliance/config_section_not_parsed/mikrotik_routeros/routeros_sent.txt @@ -0,0 +1,10 @@ +/routing filter add action=discard chain=ibgp-no-default-out prefix=10.127.1.0/24 +/routing filter add action=accept chain=ibgp-no-default-out prefix=10.64.0.0/10 prefix-length=22-32 +/routing ospf interface add dead-interval=8s hello-interval=2s interface=vlan3049-Transit-to-85Presidential network-type=point-to-point +/routing ospf interface add cost=11 dead-interval=8s hello-interval=2s interface=vlan3166-Transit-HalseyCore-Agg1-to-Indigo-5 network-type=point-to-point +/routing ospf network add area=backbone network=10.126.0.16/29 +/snmp set enabled=yes trap-community=somestring +/system clock set time-zone-name=America/New_York +/system identity set name=ag1.123site.nwk.nj +/system logging add action=remote topics=error +/system logging add action=remote topics=info \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_feature.py b/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_feature.py new file mode 100644 index 00000000..8ed81287 --- /dev/null +++ b/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_feature.py @@ -0,0 +1,8 @@ +features = [ + {"name": "Management Config", "ordered": False, "section": ["set mgt-config "]}, + { + "name": "Panorama Config", + "ordered": True, + "section": ["set deviceconfig system service "], + }, +] diff --git a/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_received.json b/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_received.json new file mode 100644 index 00000000..7eba41ab --- /dev/null +++ b/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_received.json @@ -0,0 +1,4 @@ +{ + "remaining_cfg": "set deviceconfig system permitted-ip 0.0.0.0/0\nset deviceconfig system domain example.com", + "section_not_found": [] +} \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_sent.txt b/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_sent.txt new file mode 100644 index 00000000..0c0b1e01 --- /dev/null +++ b/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_sent.txt @@ -0,0 +1,9 @@ +set deviceconfig system permitted-ip 0.0.0.0/0 +set deviceconfig system domain example.com +set deviceconfig system service disable-telnet yes +set deviceconfig system service disable-http yes +set deviceconfig system service disable-snmp no +set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1 +set mgt-config users readonly phash passhash +set mgt-config users user1 permissions role-based superuser yes +set mgt-config users user1 phash passhash diff --git a/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_base.txt b/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_base.txt new file mode 100644 index 00000000..2f6bf8a1 --- /dev/null +++ b/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_base.txt @@ -0,0 +1,9 @@ +set deviceconfig system permitted-ip 0.0.0.0/0 +set deviceconfig system domain example.com +set deviceconfig system service disable-telnet yes +set deviceconfig system service disable-http yes +set deviceconfig system service disable-snmp no +set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1 +set mgt-config users readonly phash passhash +set mgt-config users user1 permissions role-based superuser yes +set mgt-config users user1 phash passhash \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_intended.txt b/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_intended.txt new file mode 100644 index 00000000..cd5380a8 --- /dev/null +++ b/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_intended.txt @@ -0,0 +1,9 @@ +set deviceconfig system permitted-ip 10.0.0.0/8 +set deviceconfig system domain example.com +set deviceconfig system service disable-telnet yes +set deviceconfig system service disable-http yes +set deviceconfig system service disable-snmp no +set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1 +set mgt-config users readonly phash passhash +set mgt-config users user1 permissions role-based superuser yes +set mgt-config users user1 phash passhash diff --git a/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_received.txt b/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_received.txt new file mode 100644 index 00000000..75626b05 --- /dev/null +++ b/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_received.txt @@ -0,0 +1 @@ +set deviceconfig system permitted-ip 10.0.0.0/8 \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_feature.py b/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_feature.py new file mode 100644 index 00000000..dfd977d0 --- /dev/null +++ b/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_feature.py @@ -0,0 +1,5 @@ +feature = { + "name": "many", + "ordered": True, + "section": ["set mgt-config", "set deviceconfig system panorama"], +} diff --git a/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_received.txt b/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_received.txt new file mode 100644 index 00000000..db81d94f --- /dev/null +++ b/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_received.txt @@ -0,0 +1,7 @@ +set mgt-config users admin phash * +set mgt-config users admin permissions role-based superuser yes +set mgt-config users admin public-key thisisasuperduperlongbase64encodedstring +set mgt-config users panadmin permissions role-based superuser yes +set mgt-config users panadmin phash passwordhash +set deviceconfig system panorama local-panorama panorama-server 10.0.0.1 +set deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2 \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_sent.txt b/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_sent.txt new file mode 100644 index 00000000..6bf852c7 --- /dev/null +++ b/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_sent.txt @@ -0,0 +1,21 @@ +set mgt-config users admin phash * +set mgt-config users admin permissions role-based superuser yes +set mgt-config users admin public-key thisisasuperduperlongbase64encodedstring +set mgt-config users panadmin permissions role-based superuser yes +set mgt-config users panadmin phash passwordhash +set deviceconfig system hostname firewall1 +set deviceconfig system login-banner " +************************************************************************ +* firewall1.example.com * [PROD VM500 firewalls] +************************************************************************ +* WARNING * +* Unauthorized access to this device or devices attached to * +* or accessible from this network is strictly prohibited. * +* Possession of passwords or devices enabling access to this * +* device or devices does not constitute authorization. Unauthorized * +* access will be prosecuted to the fullest extent of the law. * +* * +************************************************************************ +" +set deviceconfig system panorama local-panorama panorama-server 10.0.0.1 +set deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2 \ No newline at end of file diff --git a/tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_converted.txt b/tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_converted.txt new file mode 100644 index 00000000..79137ec0 --- /dev/null +++ b/tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_converted.txt @@ -0,0 +1,22 @@ +set mgt-config users admin phash * +set mgt-config users admin permissions role-based superuser yes +set mgt-config users admin public-key thisisasuperduperlongbase64encodedstring +set mgt-config users panadmin permissions role-based superuser yes +set mgt-config users panadmin phash passwordhash +set deviceconfig system hostname firewall1 +set deviceconfig system login-banner " +************************************************************************ +* firewall1.example.com * [PROD VM500 firewalls] +************************************************************************ +* WARNING * +* Unauthorized access to this device or devices attached to * +* or accessible from this network is strictly prohibited. * +* Possession of passwords or devices enabling access to this * +* device or devices does not constitute authorization. Unauthorized * +* access will be prosecuted to the fullest extent of the law. * +* * +************************************************************************ + +" +set deviceconfig system panorama local-panorama panorama-server 10.0.0.1 +set deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2 \ No newline at end of file diff --git a/tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_sent.txt b/tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_sent.txt new file mode 100644 index 00000000..92c2cd4d --- /dev/null +++ b/tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_sent.txt @@ -0,0 +1,51 @@ +config { + mgt-config { + users { + admin { + phash *; + permissions { + role-based { + superuser yes; + } + } + public-key thisisasuperduperlongbase64encodedstring; + } + panadmin { + permissions { + role-based { + superuser yes; + } + } + phash passwordhash; + } + } + } + devices { + localhost.localdomain { + deviceconfig { + system { + hostname firewall1; + login-banner " +************************************************************************ +* firewall1.example.com * [PROD VM500 firewalls] +************************************************************************ +* WARNING * +* Unauthorized access to this device or devices attached to * +* or accessible from this network is strictly prohibited. * +* Possession of passwords or devices enabling access to this * +* device or devices does not constitute authorization. Unauthorized * +* access will be prosecuted to the fullest extent of the law. * +* * +************************************************************************ + +"; + panorama { + local-panorama { + panorama-server 10.0.0.1; + panorama-server-2 10.0.0.2; + } + } + } + } + } +} \ No newline at end of file diff --git a/tests/unit/mock/config/parser/citrix_netscaler/netscaler_full_received.py b/tests/unit/mock/config/parser/base/citrix_netscaler/netscaler_full_received.py similarity index 100% rename from tests/unit/mock/config/parser/citrix_netscaler/netscaler_full_received.py rename to tests/unit/mock/config/parser/base/citrix_netscaler/netscaler_full_received.py diff --git a/tests/unit/mock/config/parser/citrix_netscaler/netscaler_full_sent.txt b/tests/unit/mock/config/parser/base/citrix_netscaler/netscaler_full_sent.txt similarity index 100% rename from tests/unit/mock/config/parser/citrix_netscaler/netscaler_full_sent.txt rename to tests/unit/mock/config/parser/base/citrix_netscaler/netscaler_full_sent.txt diff --git a/tests/unit/mock/config/parser/base/mikrotik_routeros/routeros_full_received.py b/tests/unit/mock/config/parser/base/mikrotik_routeros/routeros_full_received.py new file mode 100644 index 00000000..fd06c50f --- /dev/null +++ b/tests/unit/mock/config/parser/base/mikrotik_routeros/routeros_full_received.py @@ -0,0 +1,123 @@ +from netutils.config.parser import ConfigLine + +data = [ + ConfigLine(config_line="/interface bridge add name=google-vpc-peering-iface", parents=()), + ConfigLine(config_line="/interface bridge add name=loopback", parents=()), + ConfigLine(config_line="/interface bonding add mode=802.3ad name=Po1 slaves=sfp-sfpplus1,sfp-sfpplus2", parents=()), + ConfigLine(config_line="/interface vlan add interface=Po1 name=vlan11-mgmt vlan-id=11", parents=()), + ConfigLine( + config_line="/interface vlan add interface=vlan2933-Transit-to-CC-NNI name=vlan3049-Transit-to-XXX vlan-id=3049", + parents=(), + ), + ConfigLine( + config_line="/interface vlan add disabled=yes interface=Po1 name=vlan3051-Transit-to-CSW-through-QoE-Disabled vlan-id=3051", + parents=(), + ), + ConfigLine( + config_line="/interface vlan add interface=Po1 mtu=1300 name=vlan3225-Transit-CORE-Agg1-to-COREXXX vlan-id=3225", + parents=(), + ), + ConfigLine( + config_line="/interface wireless security-profiles set [ find default=yes ] supplicant-identity=MikroTik", + parents=(), + ), + ConfigLine( + config_line="/ip ipsec peer add address=50.157.100.38/32 exchange-mode=ike2 local-address=55.106.77.11 name=google-vpc-peer", + parents=(), + ), + ConfigLine(config_line="/ip pool add name=BNEdgeLiteTest ranges=192.168.69.254", parents=()), + ConfigLine(config_line="/ip pool add name=BNEdgeLiteTest2 ranges=192.168.70.254", parents=()), + ConfigLine( + config_line="/ip dhcp-server add address-pool=BNEdgeLiteTest disabled=no interface=ether1 name=dhcp1", + parents=(), + ), + ConfigLine( + config_line="/ip dhcp-server add address-pool=BNEdgeLiteTest2 disabled=no interface=ether2 name=dhcp2", + parents=(), + ), + ConfigLine(config_line="/routing bgp instance set default as=1234 router-id=10.127.1.3", parents=()), + ConfigLine(config_line="/routing ospf instance set [ find default=yes ] router-id=10.127.1.3", parents=()), + ConfigLine(config_line="/snmp community add addresses=::/0 name=somestringa", parents=()), + ConfigLine( + config_line="/system logging action set 3 bsd-syslog=yes remote=172.16.11.1 remote-port=5140", parents=() + ), + ConfigLine( + config_line="/user group set full policy=local,telnet,ssh,ftp,reboot,read,write,policy,test,winbox,password,web,sniff,sensitive,api,romon,dude,tikapp", + parents=(), + ), + ConfigLine( + config_line="/user group add name=prom policy=ssh,read,winbox,api,!local,!telnet,!ftp,!reboot,!write,!policy,!test,!password,!web,!sniff,!sensitive,!romon,!dude,!tikapp", + parents=(), + ), + ConfigLine(config_line="/ip neighbor discovery-settings set discover-interface-list=!dynamic", parents=()), + ConfigLine(config_line="/ip address add address=10.0.11.13/24 interface=vlan11-mgmt network=10.0.11.0", parents=()), + ConfigLine(config_line="/ip address add address=192.168.69.1/24 interface=ether1 network=192.168.69.0", parents=()), + ConfigLine(config_line="/ip dhcp-server network add address=192.168.69.0/24 gateway=192.168.69.1", parents=()), + ConfigLine(config_line="/ip dhcp-server network add address=192.168.70.0/24 gateway=192.168.70.1", parents=()), + ConfigLine(config_line="/ip dns set servers=8.8.8.8", parents=()), + ConfigLine(config_line="/ip firewall address-list add address=34.157.17.38 list=whitelist", parents=()), + ConfigLine(config_line="/ip firewall address-list add address=72.202.79.109 list=google-vpc-acl", parents=()), + ConfigLine(config_line="/ip firewall address-list add address=34.157.17.38 list=google-vpc-acl", parents=()), + ConfigLine( + config_line="/ip firewall filter add action=drop chain=input dst-address=50.106.77.11 src-address-list=!google-vpc-acl", + parents=(), + ), + ConfigLine( + config_line="/ip firewall nat add action=dst-nat chain=dstnat dst-address=50.106.77.11 dst-port=443 protocol=tcp to-addresses=10.1.15.10", + parents=(), + ), + ConfigLine( + config_line="/ip firewall nat add action=masquerade chain=srcnat out-interface=vlan12-Servers", parents=() + ), + ConfigLine( + config_line="/ip firewall nat add action=src-nat chain=srcnat src-address=50.64.0.75 to-addresses=55.106.77.11", + parents=(), + ), + ConfigLine(config_line="/ip ipsec identity add peer=google-vpc-peer secret=*****", parents=()), + ConfigLine(config_line="/ip ipsec policy set 0 disabled=yes", parents=()), + ConfigLine( + config_line="/ip ipsec policy add disabled=yes dst-address=169.254.1.1/32 peer=google-vpc-peer src-address=169.254.1.2/32 tunnel=yes", + parents=(), + ), + ConfigLine( + config_line="/ip ipsec policy add disabled=yes dst-address=10.150.0.0/20 peer=google-vpc-peer src-address=0.0.0.0/0 tunnel=yes", + parents=(), + ), + ConfigLine(config_line="/ip service set telnet disabled=yes", parents=()), + ConfigLine(config_line="/ip service set ftp disabled=yes", parents=()), + ConfigLine(config_line="/ip service set www disabled=yes", parents=()), + ConfigLine(config_line="/ip service set api address=10.1.15.5/32,10.120.16.0/20,172.16.11.0/24", parents=()), + ConfigLine(config_line="/ip service set api-ssl disabled=yes", parents=()), + ConfigLine(config_line="/routing bgp network add network=55.106.77.11/32 synchronize=no", parents=()), + ConfigLine(config_line="/routing bgp network add network=55.106.77.12/32 synchronize=no", parents=()), + ConfigLine( + config_line="/routing bgp peer add in-filter=ibgp-allow-default-in name=CSW out-filter=ibgp-no-default-out remote-address=10.127.1.10 remote-as=12345 update-source=loopback", + parents=(), + ), + ConfigLine( + config_line="/routing filter add action=discard chain=ibgp-no-default-out prefix=10.127.1.0/24", parents=() + ), + ConfigLine( + config_line="/routing filter add action=accept chain=ibgp-no-default-out prefix=10.64.0.0/10 prefix-length=22-32", + parents=(), + ), + ConfigLine( + config_line="/routing ospf interface add dead-interval=8s hello-interval=2s interface=vlan3049-Transit-to-85Presidential network-type=point-to-point", + parents=(), + ), + ConfigLine( + config_line="/routing ospf interface add cost=11 dead-interval=8s hello-interval=2s interface=vlan3166-Transit-HalseyCore-Agg1-to-Indigo-5 network-type=point-to-point", + parents=(), + ), + ConfigLine(config_line="/routing ospf network add area=backbone network=10.126.0.16/29", parents=()), + ConfigLine(config_line="/routing ospf network add area=backbone network=10.127.1.3/32", parents=()), + ConfigLine(config_line="/snmp set enabled=yes trap-community=somestring", parents=()), + ConfigLine(config_line="/system clock set time-zone-name=America/New_York", parents=()), + ConfigLine(config_line="/system identity set name=ag1.123site.nwk.nj", parents=()), + ConfigLine(config_line="/system logging add action=remote topics=error", parents=()), + ConfigLine(config_line="/system logging add action=remote topics=info", parents=()), + ConfigLine( + config_line='/system note set note="This is a \\\\\\"System Note\\\\\\" for a Mikrotik router.\\\\n\\\\\\\n \\nIt includes double quotes (\\\\\\") and special characters such as:\\\\n\\\\\\\n \\n@, #, \\$, %, ^, &, *, (, ), _, +, [, ], {, }, |, ;, \',\', ., /, <, >, and \\?.\\\\n\\\\\\\n \\n\\\\n\\\\\\\n \\nRemember to escape any special characters with a backslash (\\\\\\\\) when necessary.\\\\n\\\\\\\n \\n\\\\n\\\\\\\n \\nThis is a multiline note with several lines of text.\\\\n\\\\\\\n \\nWow, what a great example of a note to ensure proper parsing by NetUtils!\n \\nWe are treating this as a banner."', + parents=(), + ), +] diff --git a/tests/unit/mock/config/parser/base/mikrotik_routeros/routeros_full_sent.txt b/tests/unit/mock/config/parser/base/mikrotik_routeros/routeros_full_sent.txt new file mode 100644 index 00000000..89f8d6fa --- /dev/null +++ b/tests/unit/mock/config/parser/base/mikrotik_routeros/routeros_full_sent.txt @@ -0,0 +1,71 @@ +# by RouterOS 6.49.6 +# software id = WZ00-84LP +# +# model = CCR1036-8G-2S+ +# serial number = C6CD0BF7A020 +/interface bridge add name=google-vpc-peering-iface +/interface bridge add name=loopback +/interface bonding add mode=802.3ad name=Po1 slaves=sfp-sfpplus1,sfp-sfpplus2 +/interface vlan add interface=Po1 name=vlan11-mgmt vlan-id=11 +/interface vlan add interface=vlan2933-Transit-to-CC-NNI name=vlan3049-Transit-to-XXX vlan-id=3049 +/interface vlan add disabled=yes interface=Po1 name=vlan3051-Transit-to-CSW-through-QoE-Disabled vlan-id=3051 +/interface vlan add interface=Po1 mtu=1300 name=vlan3225-Transit-CORE-Agg1-to-COREXXX vlan-id=3225 +/interface wireless security-profiles set [ find default=yes ] supplicant-identity=MikroTik +/ip ipsec peer add address=50.157.100.38/32 exchange-mode=ike2 local-address=55.106.77.11 name=google-vpc-peer +/ip pool add name=BNEdgeLiteTest ranges=192.168.69.254 +/ip pool add name=BNEdgeLiteTest2 ranges=192.168.70.254 +/ip dhcp-server add address-pool=BNEdgeLiteTest disabled=no interface=ether1 name=dhcp1 +/ip dhcp-server add address-pool=BNEdgeLiteTest2 disabled=no interface=ether2 name=dhcp2 +/routing bgp instance set default as=1234 router-id=10.127.1.3 +/routing ospf instance set [ find default=yes ] router-id=10.127.1.3 +/snmp community add addresses=::/0 name=somestringa +/system logging action set 3 bsd-syslog=yes remote=172.16.11.1 remote-port=5140 +/user group set full policy=local,telnet,ssh,ftp,reboot,read,write,policy,test,winbox,password,web,sniff,sensitive,api,romon,dude,tikapp +/user group add name=prom policy=ssh,read,winbox,api,!local,!telnet,!ftp,!reboot,!write,!policy,!test,!password,!web,!sniff,!sensitive,!romon,!dude,!tikapp +#error exporting /interface bridge calea +/ip neighbor discovery-settings set discover-interface-list=!dynamic +/ip address add address=10.0.11.13/24 interface=vlan11-mgmt network=10.0.11.0 +/ip address add address=192.168.69.1/24 interface=ether1 network=192.168.69.0 +/ip dhcp-server network add address=192.168.69.0/24 gateway=192.168.69.1 +/ip dhcp-server network add address=192.168.70.0/24 gateway=192.168.70.1 +/ip dns set servers=8.8.8.8 +/ip firewall address-list add address=34.157.17.38 list=whitelist +/ip firewall address-list add address=72.202.79.109 list=google-vpc-acl +/ip firewall address-list add address=34.157.17.38 list=google-vpc-acl +#error exporting /ip firewall calea +/ip firewall filter add action=drop chain=input dst-address=50.106.77.11 src-address-list=!google-vpc-acl +/ip firewall nat add action=dst-nat chain=dstnat dst-address=50.106.77.11 dst-port=443 protocol=tcp to-addresses=10.1.15.10 +/ip firewall nat add action=masquerade chain=srcnat out-interface=vlan12-Servers +/ip firewall nat add action=src-nat chain=srcnat src-address=50.64.0.75 to-addresses=55.106.77.11 +/ip ipsec identity add peer=google-vpc-peer secret=***** +/ip ipsec policy set 0 disabled=yes +/ip ipsec policy add disabled=yes dst-address=169.254.1.1/32 peer=google-vpc-peer src-address=169.254.1.2/32 tunnel=yes +/ip ipsec policy add disabled=yes dst-address=10.150.0.0/20 peer=google-vpc-peer src-address=0.0.0.0/0 tunnel=yes +/ip service set telnet disabled=yes +/ip service set ftp disabled=yes +/ip service set www disabled=yes +/ip service set api address=10.1.15.5/32,10.120.16.0/20,172.16.11.0/24 +/ip service set api-ssl disabled=yes +/routing bgp network add network=55.106.77.11/32 synchronize=no +/routing bgp network add network=55.106.77.12/32 synchronize=no +/routing bgp peer add in-filter=ibgp-allow-default-in name=CSW out-filter=ibgp-no-default-out remote-address=10.127.1.10 remote-as=12345 update-source=loopback +/routing filter add action=discard chain=ibgp-no-default-out prefix=10.127.1.0/24 +/routing filter add action=accept chain=ibgp-no-default-out prefix=10.64.0.0/10 prefix-length=22-32 +/routing ospf interface add dead-interval=8s hello-interval=2s interface=vlan3049-Transit-to-85Presidential network-type=point-to-point +/routing ospf interface add cost=11 dead-interval=8s hello-interval=2s interface=vlan3166-Transit-HalseyCore-Agg1-to-Indigo-5 network-type=point-to-point +/routing ospf network add area=backbone network=10.126.0.16/29 +/routing ospf network add area=backbone network=10.127.1.3/32 +/snmp set enabled=yes trap-community=somestring +/system clock set time-zone-name=America/New_York +/system identity set name=ag1.123site.nwk.nj +/system logging add action=remote topics=error +/system logging add action=remote topics=info +/system note set note="This is a \\\"System Note\\\" for a Mikrotik router.\\n\\\ + \nIt includes double quotes (\\\") and special characters such as:\\n\\\ + \n@, #, \$, %, ^, &, *, (, ), _, +, [, ], {, }, |, ;, ',', ., /, <, >, and \?.\\n\\\ + \n\\n\\\ + \nRemember to escape any special characters with a backslash (\\\\) when necessary.\\n\\\ + \n\\n\\\ + \nThis is a multiline note with several lines of text.\\n\\\ + \nWow, what a great example of a note to ensure proper parsing by NetUtils! + \nWe are treating this as a banner." \ No newline at end of file diff --git a/tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_received.py b/tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_received.py new file mode 100644 index 00000000..053750f1 --- /dev/null +++ b/tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_received.py @@ -0,0 +1,44 @@ +from netutils.config.parser import ConfigLine + +data = [ + ConfigLine( + config_line="set mgt-config users admin phash *", + parents=(), + ), + ConfigLine( + config_line="set mgt-config users admin permissions role-based superuser yes", + parents=(), + ), + ConfigLine( + config_line="set mgt-config users admin public-key thisisasuperduperlongbase64encodedstring", + parents=(), + ), + ConfigLine( + config_line="set mgt-config users panadmin permissions role-based superuser yes", + parents=(), + ), + ConfigLine( + config_line="set mgt-config users panadmin phash passwordhash", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig system hostname firewall1", + parents=(), + ), + ConfigLine( + config_line='set deviceconfig system login-banner "', + parents=(), + ), + ConfigLine( + config_line="************************************************************************\n* firewall1.example.com * [PROD VM500 firewalls]\n************************************************************************\n* WARNING *\n* Unauthorized access to this device or devices attached to *\n* or accessible from this network is strictly prohibited. *\n* Possession of passwords or devices enabling access to this *\n* device or devices does not constitute authorization. Unauthorized *\n* access will be prosecuted to the fullest extent of the law. *\n* *\n************************************************************************^C", + parents=('set deviceconfig system login-banner "',), + ), + ConfigLine( + config_line="set deviceconfig system panorama local-panorama panorama-server 10.0.0.1", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2", + parents=(), + ), +] diff --git a/tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_sent.txt b/tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_sent.txt new file mode 100644 index 00000000..5ec0f93b --- /dev/null +++ b/tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_sent.txt @@ -0,0 +1,52 @@ +config { + mgt-config { + users { + admin { + phash *; + permissions { + role-based { + superuser yes; + } + } + public-key thisisasuperduperlongbase64encodedstring; + } + panadmin { + permissions { + role-based { + superuser yes; + } + } + phash passwordhash; + } + } + } + devices { + localhost.localdomain { + deviceconfig { + system { + hostname firewall1; + login-banner " +************************************************************************ +* firewall1.example.com * [PROD VM500 firewalls] +************************************************************************ +* WARNING * +* Unauthorized access to this device or devices attached to * +* or accessible from this network is strictly prohibited. * +* Possession of passwords or devices enabling access to this * +* device or devices does not constitute authorization. Unauthorized * +* access will be prosecuted to the fullest extent of the law. * +* * +************************************************************************ + +"; + panorama { + local-panorama { + panorama-server 10.0.0.1; + panorama-server-2 10.0.0.2; + } + } + } + } + } +} + diff --git a/tests/unit/mock/config/parser/base/paloalto_panos/panos_full_received.py b/tests/unit/mock/config/parser/base/paloalto_panos/panos_full_received.py new file mode 100644 index 00000000..3d4984ec --- /dev/null +++ b/tests/unit/mock/config/parser/base/paloalto_panos/panos_full_received.py @@ -0,0 +1,330 @@ +from netutils.config.parser import ConfigLine + +data = [ + ConfigLine(config_line="set mgt-config users admin phash *", parents=()), + ConfigLine(config_line="set mgt-config users admin permissions role-based superuser yes", parents=()), + ConfigLine( + config_line="set mgt-config users admin public-key thisisasuperduperlongbase64encodedstring=", parents=() + ), + ConfigLine(config_line="set mgt-config users panadmin permissions role-based superuser yes", parents=()), + ConfigLine(config_line="set mgt-config users panadmin phash passwordhash", parents=()), + ConfigLine(config_line="set shared botnet configuration http dynamic-dns enabled yes", parents=()), + ConfigLine(config_line="set shared botnet configuration http dynamic-dns threshold 5", parents=()), + ConfigLine(config_line="set shared botnet configuration http malware-sites enabled yes", parents=()), + ConfigLine(config_line="set shared botnet configuration http malware-sites threshold 5", parents=()), + ConfigLine(config_line="set shared botnet configuration http recent-domains enabled yes", parents=()), + ConfigLine(config_line="set shared botnet configuration http recent-domains threshold 5", parents=()), + ConfigLine(config_line="set shared botnet configuration http ip-domains enabled yes", parents=()), + ConfigLine(config_line="set shared botnet configuration http ip-domains threshold 10", parents=()), + ConfigLine( + config_line="set shared botnet configuration http executables-from-unknown-sites enabled yes", parents=() + ), + ConfigLine( + config_line="set shared botnet configuration http executables-from-unknown-sites threshold 5", parents=() + ), + ConfigLine(config_line="set shared botnet configuration other-applications irc yes", parents=()), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-tcp destinations-per-hour 10", + parents=(), + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-tcp sessions-per-hour 10", parents=() + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-tcp session-length maximum-bytes 100", + parents=(), + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-tcp session-length minimum-bytes 50", + parents=(), + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-udp destinations-per-hour 10", + parents=(), + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-udp sessions-per-hour 10", parents=() + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-udp session-length maximum-bytes 100", + parents=(), + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-udp session-length minimum-bytes 50", + parents=(), + ), + ConfigLine(config_line="set shared botnet report topn 100", parents=()), + ConfigLine(config_line="set shared botnet report scheduled yes", parents=()), + ConfigLine(config_line="set shared application-status awesun", parents=()), + ConfigLine(config_line="set shared application-status hikvision-http", parents=()), + ConfigLine(config_line="set shared application-status notion-base", parents=()), + ConfigLine(config_line="set shared application-status notion-delete", parents=()), + ConfigLine(config_line="set shared application-status notion-download", parents=()), + ConfigLine(config_line="set shared application-status notion-logout", parents=()), + ConfigLine(config_line="set shared application-status notion-upload", parents=()), + ConfigLine( + config_line="set network interface ethernet ethernet1/1 layer3 ipv6 neighbor-discovery router-advertisement enable no", + parents=(), + ), + ConfigLine( + config_line="set network interface ethernet ethernet1/1 layer3 ndp-proxy enabled no", + parents=(), + ), + ConfigLine( + config_line="set network interface ethernet ethernet1/1 layer3 dhcp-client create-default-route yes", + parents=(), + ), + ConfigLine( + config_line="set network interface ethernet ethernet1/1 layer3 lldp enable no", + parents=(), + ), + ConfigLine( + config_line="set network interface ethernet ethernet1/2 layer3 ipv6 neighbor-discovery router-advertisement enable no", + parents=(), + ), + ConfigLine( + config_line="set network interface ethernet ethernet1/2 layer3 ndp-proxy enabled no", + parents=(), + ), + ConfigLine( + config_line="set network interface ethernet ethernet1/2 layer3 dhcp-client create-default-route no", + parents=(), + ), + ConfigLine( + config_line="set network interface ethernet ethernet1/2 layer3 lldp enable no", + parents=(), + ), + ConfigLine( + config_line="set network interface ethernet ethernet1/2 layer3 interface-management-profile mgt", + parents=(), + ), + ConfigLine( + config_line="set network interface ethernet ethernet1/2 link-state auto", + parents=(), + ), + ConfigLine(config_line="set network profiles monitor-profile default interval 3", parents=()), + ConfigLine(config_line="set network profiles monitor-profile default threshold 5", parents=()), + ConfigLine( + config_line="set network profiles monitor-profile default action wait-recover", + parents=(), + ), + ConfigLine(config_line="set network profiles interface-management-profile", parents=()), + ConfigLine( + config_line="set network ike crypto-profiles ike-crypto-profiles default encryption [ aes-128-cbc 3des]", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ike-crypto-profiles default hash sha1", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ike-crypto-profiles default dh-group group2", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ike-crypto-profiles default lifetime hours 8", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-128 encryption aes-128-cbc", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-128 hash sha256", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-128 dh-group group19", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-128 lifetime hours 8", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-256 encryption aes-256-cbc", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-256 hash sha384", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-256 dh-group group20", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-256 lifetime hours 8", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ipsec-crypto-profiles default esp encryption [ aes-128-cbc 3des]", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ipsec-crypto-profiles default esp authentication sha1", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ipsec-crypto-profiles default dh-group group2", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ipsec-crypto-profiles default lifetime hours 1", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-128 esp encryption aes-128-gcm", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-128 esp authentication none", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-128 dh-group group19", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-128 lifetime hours 1", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-256 esp encryption aes-256-gcm", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-256 esp authentication none", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-256 dh-group group20", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-256 lifetime hours 1", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles global-protect-app-crypto-profiles default encryption aes-128-cbc", + parents=(), + ), + ConfigLine( + config_line="set network ike crypto-profiles global-protect-app-crypto-profiles default authentication sha1", + parents=(), + ), + ConfigLine( + config_line="set network qos profile default class-bandwidth-type mbps class class1 priority real-time", + parents=(), + ), + ConfigLine( + config_line="set network qos profile default class-bandwidth-type mbps class class2 priority high", + parents=(), + ), + ConfigLine( + config_line="set network qos profile default class-bandwidth-type mbps class class3 priority high", + parents=(), + ), + ConfigLine( + config_line="set network qos profile default class-bandwidth-type mbps class class4 priority medium", + parents=(), + ), + ConfigLine( + config_line="set network qos profile default class-bandwidth-type mbps class class5 priority medium", + parents=(), + ), + ConfigLine( + config_line="set network qos profile default class-bandwidth-type mbps class class6 priority low", + parents=(), + ), + ConfigLine( + config_line="set network qos profile default class-bandwidth-type mbps class class7 priority low", + parents=(), + ), + ConfigLine( + config_line="set network qos profile default class-bandwidth-type mbps class class8 priority low", + parents=(), + ), + ConfigLine(config_line="set network virtual-router", parents=()), + ConfigLine( + config_line="set deviceconfig system type dhcp-client send-hostname yes", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig system type dhcp-client send-client-id yes", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig system type dhcp-client accept-dhcp-hostname no", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig system type dhcp-client accept-dhcp-domain yes", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig system update-server updates.paloaltonetworks.com", + parents=(), + ), + ConfigLine(config_line="set deviceconfig system update-schedule", parents=()), + ConfigLine(config_line="set deviceconfig system service disable-telnet yes", parents=()), + ConfigLine(config_line="set deviceconfig system service disable-http yes", parents=()), + ConfigLine(config_line="set deviceconfig system hostname firewall1", parents=()), + ConfigLine(config_line='set deviceconfig system login-banner "', parents=()), + ConfigLine( + config_line="************************************************************************\n* firewall1.example.com * [PROD VM500 firewalls]\n************************************************************************\n* WARNING *\n* Unauthorized access to this device or devices attached to *\n* or accessible from this network is strictly prohibited. *\n* Possession of passwords or devices enabling access to this *\n* device or devices does not constitute authorization. Unauthorized *\n* access will be prosecuted to the fullest extent of the law. *\n* *\n************************************************************************^C", + parents=('set deviceconfig system login-banner "',), + ), + ConfigLine( + config_line="set deviceconfig system panorama local-panorama panorama-server 10.0.0.1", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2", + parents=(), + ), + ConfigLine(config_line="set deviceconfig setting config rematch yes", parents=()), + ConfigLine( + config_line="set deviceconfig setting management hostname-type-in-syslog FQDN", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig setting management initcfg public-key thisisasuperduperlongbase64encodedstring=", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig setting management initcfg type dhcp-client send-hostname yes", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig setting management initcfg type dhcp-client send-client-id yes", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig setting management initcfg type dhcp-client accept-dhcp-hostname yes", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig setting management initcfg type dhcp-client accept-dhcp-domain yes", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig setting management initcfg dns-primary 8.8.8.8", + parents=(), + ), + ConfigLine( + config_line="set deviceconfig setting management initcfg op-command-modes mgmt-interface-swap", + parents=(), + ), + ConfigLine(config_line="set vsys vsys1 zone", parents=()), + ConfigLine( + config_line="set vsys vsys1 import network interface [ ethernet1/1 ethernet1/2 vlan loopback tunnel]", + parents=(), + ), + ConfigLine(config_line="set vsys vsys1 import network vlan", parents=()), + ConfigLine(config_line="set vsys vsys1 import network virtual-router", parents=()), + ConfigLine(config_line="set vsys vsys1 import network virtual-wire", parents=()), + ConfigLine(config_line="set vsys vsys1 address", parents=()), + ConfigLine(config_line="set vsys vsys1 rulebase security rules", parents=()), + ConfigLine(config_line="set vsys vsys1 service", parents=()), +] diff --git a/tests/unit/mock/config/parser/base/paloalto_panos/panos_full_sent.txt b/tests/unit/mock/config/parser/base/paloalto_panos/panos_full_sent.txt new file mode 100644 index 00000000..c62e1ada --- /dev/null +++ b/tests/unit/mock/config/parser/base/paloalto_panos/panos_full_sent.txt @@ -0,0 +1,333 @@ + +config { + mgt-config { + users { + admin { + phash *; + permissions { + role-based { + superuser yes; + } + } + public-key thisisasuperduperlongbase64encodedstring=; + } + panadmin { + permissions { + role-based { + superuser yes; + } + } + phash passwordhash; + } + } + } + shared { + botnet { + configuration { + http { + dynamic-dns { + enabled yes; + threshold 5; + } + malware-sites { + enabled yes; + threshold 5; + } + recent-domains { + enabled yes; + threshold 5; + } + ip-domains { + enabled yes; + threshold 10; + } + executables-from-unknown-sites { + enabled yes; + threshold 5; + } + } + other-applications { + irc yes; + } + unknown-applications { + unknown-tcp { + destinations-per-hour 10; + sessions-per-hour 10; + session-length { + maximum-bytes 100; + minimum-bytes 50; + } + } + unknown-udp { + destinations-per-hour 10; + sessions-per-hour 10; + session-length { + maximum-bytes 100; + minimum-bytes 50; + } + } + } + } + report { + topn 100; + scheduled yes; + } + } + application-status { + awesun; + hikvision-http; + notion-base; + notion-delete; + notion-download; + notion-logout; + notion-upload; + } + } + devices { + localhost.localdomain { + network { + interface { + ethernet { + ethernet1/1 { + layer3 { + ipv6 { + neighbor-discovery { + router-advertisement { + enable no; + } + } + } + ndp-proxy { + enabled no; + } + dhcp-client { + create-default-route yes; + } + lldp { + enable no; + } + } + } + ethernet1/2 { + layer3 { + ipv6 { + neighbor-discovery { + router-advertisement { + enable no; + } + } + } + ndp-proxy { + enabled no; + } + dhcp-client { + create-default-route no; + } + lldp { + enable no; + } + interface-management-profile mgt; + } + link-state auto; + } + } + } + profiles { + monitor-profile { + default { + interval 3; + threshold 5; + action wait-recover; + } + } + interface-management-profile; + } + ike { + crypto-profiles { + ike-crypto-profiles { + default { + encryption [ aes-128-cbc 3des]; + hash sha1; + dh-group group2; + lifetime { + hours 8; + } + } + Suite-B-GCM-128 { + encryption aes-128-cbc; + hash sha256; + dh-group group19; + lifetime { + hours 8; + } + } + Suite-B-GCM-256 { + encryption aes-256-cbc; + hash sha384; + dh-group group20; + lifetime { + hours 8; + } + } + } + ipsec-crypto-profiles { + default { + esp { + encryption [ aes-128-cbc 3des]; + authentication sha1; + } + dh-group group2; + lifetime { + hours 1; + } + } + Suite-B-GCM-128 { + esp { + encryption aes-128-gcm; + authentication none; + } + dh-group group19; + lifetime { + hours 1; + } + } + Suite-B-GCM-256 { + esp { + encryption aes-256-gcm; + authentication none; + } + dh-group group20; + lifetime { + hours 1; + } + } + } + global-protect-app-crypto-profiles { + default { + encryption aes-128-cbc; + authentication sha1; + } + } + } + } + qos { + profile { + default { + class-bandwidth-type { + mbps { + class { + class1 { + priority real-time; + } + class2 { + priority high; + } + class3 { + priority high; + } + class4 { + priority medium; + } + class5 { + priority medium; + } + class6 { + priority low; + } + class7 { + priority low; + } + class8 { + priority low; + } + } + } + } + } + } + } + virtual-router; + } + deviceconfig { + system { + type { + dhcp-client { + send-hostname yes; + send-client-id yes; + accept-dhcp-hostname no; + accept-dhcp-domain yes; + } + } + update-server updates.paloaltonetworks.com; + update-schedule; + service { + disable-telnet yes; + disable-http yes; + } + hostname firewall1; + login-banner " +************************************************************************ +* firewall1.example.com * [PROD VM500 firewalls] +************************************************************************ +* WARNING * +* Unauthorized access to this device or devices attached to * +* or accessible from this network is strictly prohibited. * +* Possession of passwords or devices enabling access to this * +* device or devices does not constitute authorization. Unauthorized * +* access will be prosecuted to the fullest extent of the law. * +* * +************************************************************************ + +"; + panorama { + local-panorama { + panorama-server 10.0.0.1; + panorama-server-2 10.0.0.2; + } + } + } + setting { + config { + rematch yes; + } + management { + hostname-type-in-syslog FQDN; + initcfg { + public-key thisisasuperduperlongbase64encodedstring=; + type { + dhcp-client { + send-hostname yes; + send-client-id yes; + accept-dhcp-hostname yes; + accept-dhcp-domain yes; + } + } + dns-primary 8.8.8.8; + op-command-modes mgmt-interface-swap; + } + } + } + } + vsys { + vsys1 { + zone; + import { + network { + interface [ ethernet1/1 ethernet1/2 vlan loopback tunnel]; + vlan; + virtual-router; + virtual-wire; + } + } + address; + rulebase { + security { + rules; + } + } + service; + } + } + } + } +} diff --git a/tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_received.py b/tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_received.py new file mode 100644 index 00000000..f4f23307 --- /dev/null +++ b/tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_received.py @@ -0,0 +1,150 @@ +from netutils.config.parser import ConfigLine + +data = [ + ConfigLine(config_line="Current configuration:", parents=()), + ConfigLine(config_line="ver 08.0.95gT211", parents=()), + ConfigLine(config_line="stack unit 1", parents=()), + ConfigLine(config_line=" module 1 icx7150-c12-poe-port-management-module", parents=("stack unit 1",)), + ConfigLine(config_line=" module 2 icx7150-2-copper-port-2g-module", parents=("stack unit 1",)), + ConfigLine(config_line=" module 3 icx7150-2-sfp-plus-port-20g-module", parents=("stack unit 1",)), + ConfigLine(config_line=" stack-port 1/3/1", parents=("stack unit 1",)), + ConfigLine(config_line=" stack-port 1/3/2", parents=("stack unit 1",)), + ConfigLine(config_line="banner motd $", parents=()), + ConfigLine( + config_line="+----------------+ WARNING RUCKUS SWITCH +---------------+\n.\n. Access to this system is limited to authorized\n. users and for official purposes only\n.\n. Your activities will be logged and abuse\n. will be reported!\n.\n+----------------+ WARNING RUCKUS SWITCH +---------------+$", + parents=("banner motd $",), + ), + ConfigLine(config_line="vlan 1 name DEFAULT-VLAN by port", parents=()), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 1 name DEFAULT-VLAN by port",)), + ConfigLine(config_line="vlan 2000 name MGMT-VLAN by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/2/1 to 1/2/2 ethe 1/3/1 to 1/3/2", parents=("vlan 2000 name MGMT-VLAN by port",) + ), + ConfigLine( + config_line=" untagged ethe 1/1/1 ethe 1/1/3 ethe 1/1/5 ethe 1/1/7 ethe 1/1/9 ethe 1/1/11 to 1/1/12", + parents=("vlan 2000 name MGMT-VLAN by port",), + ), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 2000 name MGMT-VLAN by port",)), + ConfigLine(config_line="vlan 3000 name Guest-WiFi by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3000 name Guest-WiFi by port",) + ), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3000 name Guest-WiFi by port",)), + ConfigLine(config_line="vlan 3001 by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 ethe 1/1/3 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3001 by port",) + ), + ConfigLine(config_line=" untagged ethe 1/1/2", parents=("vlan 3001 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3001 by port",)), + ConfigLine(config_line="vlan 3002 by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 to 1/1/3 ethe 1/1/5 to 1/1/12 ethe 1/3/1 to 1/3/2", + parents=("vlan 3002 by port",), + ), + ConfigLine(config_line=" untagged ethe 1/1/4", parents=("vlan 3002 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3002 by port",)), + ConfigLine(config_line="vlan 3003 by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 to 1/1/5 ethe 1/1/7 to 1/1/12 ethe 1/3/1 to 1/3/2", + parents=("vlan 3003 by port",), + ), + ConfigLine(config_line=" untagged ethe 1/1/6", parents=("vlan 3003 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3003 by port",)), + ConfigLine(config_line="vlan 3004 by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 to 1/1/7 ethe 1/1/9 to 1/1/12 ethe 1/3/1 to 1/3/2", + parents=("vlan 3004 by port",), + ), + ConfigLine(config_line=" untagged ethe 1/1/8", parents=("vlan 3004 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3004 by port",)), + ConfigLine(config_line="vlan 3005 by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 to 1/1/9 ethe 1/1/11 to 1/1/12 ethe 1/3/1 to 1/3/2", + parents=("vlan 3005 by port",), + ), + ConfigLine(config_line=" untagged ethe 1/1/10", parents=("vlan 3005 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3005 by port",)), + ConfigLine(config_line="vlan 3006 by port", parents=()), + ConfigLine(config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3006 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3006 by port",)), + ConfigLine(config_line="vlan 3007 by port", parents=()), + ConfigLine(config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3007 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3007 by port",)), + ConfigLine(config_line="vlan 3008 by port", parents=()), + ConfigLine(config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3008 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3008 by port",)), + ConfigLine(config_line="vlan 3009 by port", parents=()), + ConfigLine(config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3009 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3009 by port",)), + ConfigLine(config_line="vlan 3010 by port", parents=()), + ConfigLine(config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3010 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3010 by port",)), + ConfigLine(config_line="vlan 3995 name OfficeNetwork by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", + parents=("vlan 3995 name OfficeNetwork by port",), + ), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3995 name OfficeNetwork by port",)), + ConfigLine(config_line="mstp scope all", parents=()), + ConfigLine(config_line="mstp instance 0 vlan 1", parents=()), + ConfigLine(config_line="mstp instance 0 vlan 2000", parents=()), + ConfigLine(config_line="mstp instance 0 vlan 3000 to 3010", parents=()), + ConfigLine(config_line="mstp instance 0 vlan 3995", parents=()), + ConfigLine(config_line="mstp start", parents=()), + ConfigLine(config_line="errdisable recovery cause all", parents=()), + ConfigLine(config_line="aaa authentication web-server default local", parents=()), + ConfigLine(config_line="aaa authentication login default local", parents=()), + ConfigLine(config_line="enable telnet authentication", parents=()), + ConfigLine(config_line="enable aaa console", parents=()), + ConfigLine(config_line="hostname NTC-Test-MDF", parents=()), + ConfigLine(config_line="ip dhcp snooping vlan 2000", parents=()), + ConfigLine(config_line="ip address 10.254.220.10 255.255.255.0", parents=()), + ConfigLine(config_line="ip default-gateway 10.254.220.1", parents=()), + ConfigLine(config_line="no telnet server", parents=()), + ConfigLine(config_line="username admin password testpass", parents=()), + ConfigLine(config_line="snmp-server community testcomm rw", parents=()), + ConfigLine(config_line="manager registrar", parents=()), + ConfigLine(config_line="manager port-list 987", parents=()), + ConfigLine(config_line="interface ethernet 1/1/1", parents=()), + ConfigLine(config_line=" port-name Unit-111-AP", parents=("interface ethernet 1/1/1",)), + ConfigLine(config_line=" inline power power-limit 12000", parents=("interface ethernet 1/1/1",)), + ConfigLine(config_line="interface ethernet 1/1/2", parents=()), + ConfigLine(config_line=" port-name Unit-111-Wired", parents=("interface ethernet 1/1/2",)), + ConfigLine(config_line="interface ethernet 1/1/3", parents=()), + ConfigLine(config_line=" port-name Unit-112-AP", parents=("interface ethernet 1/1/3",)), + ConfigLine(config_line=" inline power power-limit 12000", parents=("interface ethernet 1/1/3",)), + ConfigLine(config_line="interface ethernet 1/1/4", parents=()), + ConfigLine(config_line=" port-name Unit-112-Wired", parents=("interface ethernet 1/1/4",)), + ConfigLine(config_line="interface ethernet 1/1/5", parents=()), + ConfigLine(config_line=" port-name Unit-113-AP", parents=("interface ethernet 1/1/5",)), + ConfigLine(config_line=" inline power power-limit 12000", parents=("interface ethernet 1/1/5",)), + ConfigLine(config_line="interface ethernet 1/1/6", parents=()), + ConfigLine(config_line=" port-name Unit-113-Wired", parents=("interface ethernet 1/1/6",)), + ConfigLine(config_line="interface ethernet 1/1/7", parents=()), + ConfigLine(config_line=" port-name Unit-114-AP", parents=("interface ethernet 1/1/7",)), + ConfigLine(config_line=" inline power power-limit 12000", parents=("interface ethernet 1/1/7",)), + ConfigLine(config_line="interface ethernet 1/1/8", parents=()), + ConfigLine(config_line=" port-name Unit-114-Wired", parents=("interface ethernet 1/1/8",)), + ConfigLine(config_line="interface ethernet 1/1/9", parents=()), + ConfigLine(config_line=" port-name Unit-115-AP", parents=("interface ethernet 1/1/9",)), + ConfigLine(config_line=" inline power power-limit 12000", parents=("interface ethernet 1/1/9",)), + ConfigLine(config_line="interface ethernet 1/1/10", parents=()), + ConfigLine(config_line=" port-name Unit-115-Wired", parents=("interface ethernet 1/1/10",)), + ConfigLine(config_line="interface ethernet 1/1/11", parents=()), + ConfigLine(config_line=" port-name UPS", parents=("interface ethernet 1/1/11",)), + ConfigLine(config_line="interface ethernet 1/1/12", parents=()), + ConfigLine(config_line=" port-name Tech-Test-port", parents=("interface ethernet 1/1/12",)), + ConfigLine(config_line="interface ethernet 1/3/1", parents=()), + ConfigLine(config_line=" dhcp snooping trust", parents=("interface ethernet 1/3/1",)), + ConfigLine(config_line="interface ethernet 1/3/2", parents=()), + ConfigLine(config_line=" dhcp snooping trust", parents=("interface ethernet 1/3/2",)), + ConfigLine(config_line="no lldp run", parents=()), + ConfigLine(config_line="overlay-gateway gateway1", parents=()), + ConfigLine(config_line=" type layer2-extension", parents=("overlay-gateway gateway1",)), + ConfigLine(config_line=" ip interface Loopback 1", parents=("overlay-gateway gateway1",)), + ConfigLine(config_line=" map vlan 2 vni 3", parents=("overlay-gateway gateway1",)), + ConfigLine(config_line=" site site1", parents=("overlay-gateway gateway1",)), + ConfigLine(config_line=" ip address 67.67.67.1", parents=("overlay-gateway gateway1", " site site1")), + ConfigLine(config_line=" extend vlan add 2", parents=("overlay-gateway gateway1", " site site1")), + ConfigLine(config_line="end", parents=()), +] diff --git a/tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_sent.txt b/tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_sent.txt new file mode 100644 index 00000000..ead5ddc8 --- /dev/null +++ b/tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_sent.txt @@ -0,0 +1,197 @@ +Current configuration: +! +ver 08.0.95gT211 +! +stack unit 1 + module 1 icx7150-c12-poe-port-management-module + module 2 icx7150-2-copper-port-2g-module + module 3 icx7150-2-sfp-plus-port-20g-module + stack-port 1/3/1 + stack-port 1/3/2 +! +! +banner motd $ ++----------------+ WARNING RUCKUS SWITCH +---------------+ +. +. Access to this system is limited to authorized +. users and for official purposes only +. +. Your activities will be logged and abuse +. will be reported! +. ++----------------+ WARNING RUCKUS SWITCH +---------------+ $ +! +! +vlan 1 name DEFAULT-VLAN by port + no spanning-tree +! +! +! +! +vlan 2000 name MGMT-VLAN by port + tagged ethe 1/2/1 to 1/2/2 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/1 ethe 1/1/3 ethe 1/1/5 ethe 1/1/7 ethe 1/1/9 ethe 1/1/11 to 1/1/12 + no spanning-tree +! +! +! +vlan 3000 name Guest-WiFi by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3001 by port + tagged ethe 1/1/1 ethe 1/1/3 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/2 + no spanning-tree +! +vlan 3002 by port + tagged ethe 1/1/1 to 1/1/3 ethe 1/1/5 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/4 + no spanning-tree +! +vlan 3003 by port + tagged ethe 1/1/1 to 1/1/5 ethe 1/1/7 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/6 + no spanning-tree +! +vlan 3004 by port + tagged ethe 1/1/1 to 1/1/7 ethe 1/1/9 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/8 + no spanning-tree +! +vlan 3005 by port + tagged ethe 1/1/1 to 1/1/9 ethe 1/1/11 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/10 + no spanning-tree +! +vlan 3006 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3007 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3008 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3009 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3010 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +! +! +vlan 3995 name OfficeNetwork by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +! +! +mstp scope all +mstp instance 0 vlan 1 +mstp instance 0 vlan 2000 +mstp instance 0 vlan 3000 to 3010 +mstp instance 0 vlan 3995 +mstp start +! +! +! +! +errdisable recovery cause all +aaa authentication web-server default local +aaa authentication login default local +enable telnet authentication +enable aaa console +hostname NTC-Test-MDF +ip dhcp snooping vlan 2000 +ip address 10.254.220.10 255.255.255.0 +ip default-gateway 10.254.220.1 +! +no telnet server +username admin password testpass +! +! +snmp-server community testcomm rw +! +! +! +! +manager registrar +! +manager port-list 987 +! +! +interface ethernet 1/1/1 + port-name Unit-111-AP + inline power power-limit 12000 +! +interface ethernet 1/1/2 + port-name Unit-111-Wired +! +interface ethernet 1/1/3 + port-name Unit-112-AP + inline power power-limit 12000 +! +interface ethernet 1/1/4 + port-name Unit-112-Wired +! +interface ethernet 1/1/5 + port-name Unit-113-AP + inline power power-limit 12000 +! +interface ethernet 1/1/6 + port-name Unit-113-Wired +! +interface ethernet 1/1/7 + port-name Unit-114-AP + inline power power-limit 12000 +! +interface ethernet 1/1/8 + port-name Unit-114-Wired +! +interface ethernet 1/1/9 + port-name Unit-115-AP + inline power power-limit 12000 +! +interface ethernet 1/1/10 + port-name Unit-115-Wired +! +interface ethernet 1/1/11 + port-name UPS +! +interface ethernet 1/1/12 + port-name Tech-Test-port +! +interface ethernet 1/3/1 + dhcp snooping trust +! +interface ethernet 1/3/2 + dhcp snooping trust +! +! +! +! +! +! +! +no lldp run +! +! +overlay-gateway gateway1 + type layer2-extension + ip interface Loopback 1 + map vlan 2 vni 3 + site site1 + ip address 67.67.67.1 + extend vlan add 2 +! +! +! +! +! +end \ No newline at end of file diff --git a/tests/unit/mock/vlan/to_config/empty_list.json b/tests/unit/mock/vlan/to_config/empty_list.json new file mode 100644 index 00000000..cdd9c44c --- /dev/null +++ b/tests/unit/mock/vlan/to_config/empty_list.json @@ -0,0 +1,4 @@ +{ + "vlan_list": [], + "return_empty": true +} diff --git a/tests/unit/mock/vlan/to_config/empty_list_received.json b/tests/unit/mock/vlan/to_config/empty_list_received.json new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/tests/unit/mock/vlan/to_config/empty_list_received.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/tests/unit/test_conversion.py b/tests/unit/test_conversion.py new file mode 100644 index 00000000..48960811 --- /dev/null +++ b/tests/unit/test_conversion.py @@ -0,0 +1,30 @@ +"""Test that configurations properly convert from undesired format to desired""" +import glob +import os + +import pytest +from netutils.config.conversion import ( + paloalto_panos_brace_to_set, + conversion_map, +) + +MOCK_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "mock", "config", "conversion") + +TXT_FILE = "_sent.txt" +CONVERTED_FILE = "_converted.txt" + +conversion_files = [] + +for network_os in list(conversion_map.keys()): + for _file in glob.glob(f"{MOCK_DIR}/{network_os}/*{TXT_FILE}"): + conversion_files.append([_file, network_os]) + + +@pytest.mark.parametrize("_file", conversion_files) +def test_config_conversion(_file, get_text_data): # pylint: disable=redefined-outer-name + truncate_file = os.path.join(MOCK_DIR, _file[0][: -len(TXT_FILE)]) + + sent_cfg = get_text_data(os.path.join(MOCK_DIR, _file[0])) + converted_cfg = paloalto_panos_brace_to_set(cfg=sent_cfg, cfg_type="string") + received_data = get_text_data(truncate_file + "_converted.txt") + assert converted_cfg == received_data diff --git a/tests/unit/test_interface.py b/tests/unit/test_interface.py index c6b94b3c..75e624c4 100644 --- a/tests/unit/test_interface.py +++ b/tests/unit/test_interface.py @@ -18,6 +18,11 @@ "received": "GigabitEthernet1/0/1", }, {"sent": {"interface": "Gi1/0/1"}, "received": "GigabitEthernet1/0/1"}, + { + "sent": {"interface": "TwoGigabitEthernet1/0/1"}, + "received": "TwoGigabitEthernet1/0/1", + }, + {"sent": {"interface": "Tw1/0/1"}, "received": "TwoGigabitEthernet1/0/1"}, { "sent": {"interface": "SuperFastEth 1/0/1", "addl_name_map": {"SuperFastEth": "SuperFastEthernet"}}, "received": "SuperFastEthernet1/0/1", @@ -35,7 +40,10 @@ "received": ["GigabitEthernet1/0/1", "Port-channel40", "Loopback10"], }, { - "sent": {"interfaces": ["Gi1/0/1", "Gi1/0/3", "Gi1/0/2", "Po40", "Po160", "Lo10"], "order": "alphabetical"}, + "sent": { + "interfaces": ["Tw1/0/1", "Gi1/0/1", "Gi1/0/3", "Gi1/0/2", "Po40", "Po160", "Lo10"], + "order": "alphabetical", + }, "received": [ "GigabitEthernet1/0/1", "GigabitEthernet1/0/2", @@ -43,11 +51,22 @@ "Loopback10", "Port-channel40", "Port-channel160", + "TwoGigabitEthernet1/0/1", ], }, { "sent": { - "interfaces": ["Gi1/0/1", "Gi1/0/3", "Gi1/0/3.100", "Gi1/0/2", "Gi1/0/2.50", "Po40", "Po160", "Lo10"], + "interfaces": [ + "Tw1/0/1", + "Gi1/0/1", + "Gi1/0/3", + "Gi1/0/3.100", + "Gi1/0/2", + "Gi1/0/2.50", + "Po40", + "Po160", + "Lo10", + ], "order": "alphabetical", }, "received": [ @@ -59,15 +78,17 @@ "Loopback10", "Port-channel40", "Port-channel160", + "TwoGigabitEthernet1/0/1", ], }, { "sent": { - "interfaces": ["Gi1/0/1", "Gi1/0/3", "Gi1/0/2", "Po40", "Po160", "Lo10"], + "interfaces": ["Tw1/0/1", "Gi1/0/1", "Gi1/0/3", "Gi1/0/2", "Po40", "Po160", "Lo10"], "order": "alphabetical", "reverse": True, }, "received": [ + "TwoGigabitEthernet1/0/1", "Port-channel40", "Port-channel160", "Loopback10", @@ -78,11 +99,22 @@ }, { "sent": { - "interfaces": ["Gi1/0/1", "Gi1/0/3", "Gi1/0/3.100", "Gi1/0/2", "Gi1/0/2.50", "Po40", "Po160", "Lo10"], + "interfaces": [ + "Tw1/0/1", + "Gi1/0/1", + "Gi1/0/3", + "Gi1/0/3.100", + "Gi1/0/2", + "Gi1/0/2.50", + "Po40", + "Po160", + "Lo10", + ], "order": "alphabetical", "reverse": True, }, "received": [ + "TwoGigabitEthernet1/0/1", "Port-channel40", "Port-channel160", "Loopback10", @@ -112,6 +144,11 @@ "received": "Gi1/0/1", }, {"sent": {"interface": "Gi1/0/1"}, "received": "Gi1/0/1"}, + { + "sent": {"interface": "TwoGigabitEthernet1/0/1"}, + "received": "Tw1/0/1", + }, + {"sent": {"interface": "Tw1/0/1"}, "received": "Tw1/0/1"}, { "sent": { "interface": "SuperFastEth 1/0/1", @@ -227,6 +264,7 @@ "Fa1/42", "Gi0/0/2", "Gi1/0/1", + "Tw1/0/1", "Te1/0/1", ], "received": [ @@ -267,6 +305,7 @@ "Port-channel160", "Te1/0/1", "Te/42", + "Tw1/0/1", "Vlan42", "Zf.42", "loopback99", @@ -287,12 +326,13 @@ "received": ["Gi1/0/1", "Gi1/0/2"], }, { - "sent": {"interfaces": ["GigabitEthernet1/0/1", "Po40", "Loopback10"]}, - "received": ["Gi1/0/1", "Po40", "Lo10"], + "sent": {"interfaces": ["GigabitEthernet1/0/1", "TwoGigabitEthernet1/0/1", "Po40", "Loopback10"]}, + "received": ["Gi1/0/1", "Tw1/0/1", "Po40", "Lo10"], }, { "sent": { "interfaces": [ + "TwoGigabitEthernet1/0/1", "GigabitEthernet1/0/1", "GigabitEthernet1/0/3", "GigabitEthernet1/0/2", @@ -302,11 +342,12 @@ ], "order": "alphabetical", }, - "received": ["Gi1/0/1", "Gi1/0/2", "Gi1/0/3", "Lo10", "Po40", "Po160"], + "received": ["Gi1/0/1", "Gi1/0/2", "Gi1/0/3", "Lo10", "Po40", "Po160", "Tw1/0/1"], }, { "sent": { "interfaces": [ + "TwoGigabitEthernet1/0/1", "GigabitEthernet1/0/1", "GigabitEthernet1/0/3", "GigabitEthernet1/0/3.100", @@ -318,11 +359,12 @@ ], "order": "alphabetical", }, - "received": ["Gi1/0/1", "Gi1/0/2", "Gi1/0/2.50", "Gi1/0/3", "Gi1/0/3.100", "Lo10", "Po40", "Po160"], + "received": ["Gi1/0/1", "Gi1/0/2", "Gi1/0/2.50", "Gi1/0/3", "Gi1/0/3.100", "Lo10", "Po40", "Po160", "Tw1/0/1"], }, { "sent": { "interfaces": [ + "TwoGigabitEthernet1/0/1", "GigabitEthernet1/0/1", "GigabitEthernet1/0/3", "GigabitEthernet1/0/2", @@ -333,11 +375,12 @@ "order": "alphabetical", "reverse": True, }, - "received": ["Po40", "Po160", "Lo10", "Gi1/0/1", "Gi1/0/2", "Gi1/0/3"], + "received": ["Tw1/0/1", "Po40", "Po160", "Lo10", "Gi1/0/1", "Gi1/0/2", "Gi1/0/3"], }, { "sent": { "interfaces": [ + "TwoGigabitEthernet1/0/1", "GigabitEthernet1/0/1", "GigabitEthernet1/0/3", "GigabitEthernet1/0/3.100", @@ -351,6 +394,7 @@ "reverse": True, }, "received": [ + "Tw1/0/1", "Po40", "Po160", "Lo10", diff --git a/tests/unit/test_lib_mapper.py b/tests/unit/test_lib_mapper.py index 72a86137..e0fa2e5c 100644 --- a/tests/unit/test_lib_mapper.py +++ b/tests/unit/test_lib_mapper.py @@ -12,13 +12,16 @@ def test_lib_mapper(): assert len(lib_mapper.NAPALM_LIB_MAPPER.keys()) > 4 assert len(lib_mapper.PYATS_LIB_MAPPER.keys()) > 10 assert len(lib_mapper.PYNTC_LIB_MAPPER.keys()) > 5 + assert len(lib_mapper.HIERCONFIG_LIB_MAPPER.keys()) > 4 assert lib_mapper.ANSIBLE_LIB_MAPPER["cisco.ios.ios"] == "cisco_ios" assert lib_mapper.NAPALM_LIB_MAPPER["ios"] == "cisco_ios" assert lib_mapper.PYNTC_LIB_MAPPER["arista_eos_eapi"] == "arista_eos" assert lib_mapper.NAPALM_LIB_MAPPER_REVERSE[lib_mapper.ANSIBLE_LIB_MAPPER["cisco.ios.ios"]] == "ios" + assert lib_mapper.HIERCONFIG_LIB_MAPPER["ios"] == "cisco_ios" + assert lib_mapper.HIERCONFIG_LIB_MAPPER_REVERSE[lib_mapper.HIERCONFIG_LIB_MAPPER["ios"]] == "ios" -@pytest.mark.parametrize("lib", ["ANSIBLE", "NETMIKO", "NTCTEMPLATES", "NAPALM", "PYATS", "PYNTC"]) +@pytest.mark.parametrize("lib", ["ANSIBLE", "NETMIKO", "NTCTEMPLATES", "NAPALM", "PYATS", "PYNTC", "HIERCONFIG"]) def test_lib_mapper_reverse(lib): mapper = dict((v, k) for k, v in getattr(lib_mapper, f"{lib}_LIB_MAPPER").items()) rev_mapper = getattr(lib_mapper, f"{lib}_LIB_MAPPER_REVERSE") diff --git a/tests/unit/test_os_versions.py b/tests/unit/test_os_versions.py new file mode 100755 index 00000000..e6ee7b22 --- /dev/null +++ b/tests/unit/test_os_versions.py @@ -0,0 +1,24 @@ +"""Test for the lib_helpers definitions.""" +import pytest +from netutils.os_version import get_upgrade_path +from netutils.constants import UPGRADE_PATHS + + +def test_get_upgrade_path(): + return_values = ["9.1.15-h1", "10.0.0", "10.0.12", "10.1.0", "10.1.9"] + assert get_upgrade_path("9.1.6", "10.1.9", UPGRADE_PATHS["PANOS_OFFICIAL_V1"]) == return_values + assert get_upgrade_path("9.1.6", "10.1.9", UPGRADE_PATHS["PANOS_MAJOR_ONLY_V1"]) == [ + "10.0.0", + "10.1.0", + "10.1.9", + ] + + +def test_get_upgrade_path_current_greater_than_target(): + with pytest.raises(ValueError, match="Target version must be newer than current version."): + get_upgrade_path("10.1.9", "9.1.6", UPGRADE_PATHS["PANOS_MAJOR_ONLY_V1"]) + + +def test_get_upgrade_path_current_equals_target(): + with pytest.raises(ValueError, match="Target version equals current version. No upgrade necessary."): + get_upgrade_path("10.1.9", "10.1.9", UPGRADE_PATHS["PANOS_MAJOR_ONLY_V1"]) diff --git a/tests/unit/test_password.py b/tests/unit/test_password.py index 6ed43750..25ac1445 100644 --- a/tests/unit/test_password.py +++ b/tests/unit/test_password.py @@ -3,7 +3,7 @@ from netutils import password -COMPARE_TYPE5 = [ +COMPARE_CISCO_TYPE5 = [ { "sent": {"unencrypted_password": "cisco", "encrypted_password": "$1$nTc1$Z28sUTcWfXlvVe2x.3XAa."}, "received": True, @@ -22,7 +22,7 @@ }, ] -COMPARE_TYPE7 = [ +COMPARE_CISCO_TYPE7 = [ { "sent": {"unencrypted_password": "cisco", "encrypted_password": "070C285F4D06"}, "received": True, @@ -41,27 +41,59 @@ }, ] -DECRYPT_TYPE7 = [ +COMPARE_CISCO_TYPE9 = [ + { + "sent": { + "unencrypted_password": "cisco", + "encrypted_password": "$9$588|P!iWqEx=Wf$nadLmT9snc6V9QAeUuATSOoCAZMQIHqixJfZpQj5EU2", + }, + "received": True, + }, + { + "sent": { + "unencrypted_password": "cisco", + "encrypted_password": "$9$588|P!iWqEx=Wf$nadLmT9snc6V9QAeUuATSOoCAZMQIHqixJfZpQj5EU2", + "return_original": True, + }, + "received": "$9$588|P!iWqEx=Wf$nadLmT9snc6V9QAeUuATSOoCAZMQIHqixJfZpQj5EU2", + }, + { + "sent": { + "unencrypted_password": "invalid_password", + "encrypted_password": "$9$588|P!iWqEx=Wf$nadLmT9snc6V9QAeUuATSOoCAZMQIHqixJfZpQj5EU2", + }, + "received": False, + }, +] + +DECRYPT_CISCO_TYPE7 = [ { "sent": {"encrypted_password": "14141B180F0B"}, "received": "cisco", } ] -ENCRYPT_TYPE5 = [ +ENCRYPT_CISCO_TYPE5 = [ { "sent": {"unencrypted_password": "cisco", "salt": "nTc1"}, "received": "$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.", }, ] -ENCRYPT_TYPE7 = [ +ENCRYPT_CISCO_TYPE7 = [ { "sent": {"unencrypted_password": "cisco", "salt": 10}, "received": "104D000A0618", }, ] +ENCRYPT_CISCO_TYPE9 = [ + { + "sent": {"unencrypted_password": "cisco", "salt": "x2xAAwQ3MBbEnk"}, + "received": "$9$x2xAAwQ3MBbEnk$JCxr6MnPb.k5ymK72mTypyRJYH5W74ZRvtLTprCj.xQ", + }, +] + GET_HASH_SALT = [ { "sent": {"encrypted_password": "$1$nTc1$Z28sUTcWfXlvVe2x.3XAa."}, @@ -69,32 +101,70 @@ }, ] +ENCRYPT_JUNIPER_TYPE9 = [ + { + "sent": {"unencrypted_password": "juniper", "salt": 35}, + "received_one": "$9$7", + "received_two": "gGDkTz6oJz69A1INdb", + }, +] + +DECRYPT_JUNIPER_TYPE9 = [ + { + "sent": {"encrypted_password": "$9$7YdwgGDkTz6oJz69A1INdb"}, + "received": "juniper", + } +] -@pytest.mark.parametrize("data", COMPARE_TYPE5) -def test_compare_type5(data): - assert password.compare_type5(**data["sent"]) == data["received"] +@pytest.mark.parametrize("data", COMPARE_CISCO_TYPE5) +def test_compare_cisco_type5(data): + assert password.compare_cisco_type5(**data["sent"]) == data["received"] -@pytest.mark.parametrize("data", COMPARE_TYPE7) -def test_compare_type7(data): - assert password.compare_type7(**data["sent"]) == data["received"] +@pytest.mark.parametrize("data", COMPARE_CISCO_TYPE7) +def test_compare_cisco_type7(data): + assert password.compare_cisco_type7(**data["sent"]) == data["received"] -@pytest.mark.parametrize("data", DECRYPT_TYPE7) -def test_decrypt_type7(data): - assert password.decrypt_type7(**data["sent"]) == data["received"] +@pytest.mark.parametrize("data", COMPARE_CISCO_TYPE9) +def test_compare_cisco_type9(data): + assert password.compare_cisco_type9(**data["sent"]) == data["received"] -@pytest.mark.parametrize("data", ENCRYPT_TYPE5) -def test_encrypt_type5(data): - assert password.encrypt_type5(**data["sent"]) == data["received"] +@pytest.mark.parametrize("data", DECRYPT_CISCO_TYPE7) +def test_decrypt_cisco_type7(data): + assert password.decrypt_cisco_type7(**data["sent"]) == data["received"] -@pytest.mark.parametrize("data", ENCRYPT_TYPE7) -def test_encrypt_type7(data): - assert password.encrypt_type7(**data["sent"]) == data["received"] + +@pytest.mark.parametrize("data", ENCRYPT_CISCO_TYPE5) +def test_encrypt_cisco_type5(data): + assert password.encrypt_cisco_type5(**data["sent"]) == data["received"] + + +@pytest.mark.parametrize("data", ENCRYPT_CISCO_TYPE7) +def test_encrypt_cisco_type7(data): + assert password.encrypt_cisco_type7(**data["sent"]) == data["received"] + + +@pytest.mark.parametrize("data", ENCRYPT_CISCO_TYPE9) +def test_encrypt_cisco_type9(data): + assert password.encrypt_cisco_type9(**data["sent"]) == data["received"] @pytest.mark.parametrize("data", GET_HASH_SALT) def test_get_hash_salt(data): assert password.get_hash_salt(**data["sent"]) == data["received"] + + +@pytest.mark.parametrize("data", ENCRYPT_JUNIPER_TYPE9) +def test_encrypt_juniper_type9(data): + # Passwords include random padding, check only the non random sections + decrypted_password = password.encrypt_juniper_type9(**data["sent"]) + assert decrypted_password[0:4] == data["received_one"] + assert decrypted_password[7:] == data["received_two"] + + +@pytest.mark.parametrize("data", DECRYPT_JUNIPER_TYPE9) +def test_decrypt_juniper_type9(data): + assert password.decrypt_juniper_type9(**data["sent"]) == data["received"] diff --git a/tests/unit/test_regex.py b/tests/unit/test_regex.py new file mode 100644 index 00000000..800ba8f4 --- /dev/null +++ b/tests/unit/test_regex.py @@ -0,0 +1,98 @@ +"""Test for the regex based functions.""" + +from netutils import regex + + +def test_regex_findall_bool_true(): + match = regex.regex_findall(r"CAMS\d\d", "USSCAMS07") + assert bool(match) is True + + +def test_regex_findall_bool_false(): + match = regex.regex_findall("foobar", "USSCAMS07") + assert bool(match) is False + + +def test_regex_findall_list(): + match = regex.regex_findall(r"\w\w\w-RT\d\d", "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01") + assert match[0] == "NYC-RT01" + assert match[1] == "NYC-RT02" + + +def test_regex_findall_is_none(): + match = regex.regex_findall("(foobar)", "USSCAMS07") + assert match == [] + + +def test_regex_match_bool_true(): + match = regex.regex_match(r".+SC.+\d\d", "USSCAMS07") + assert bool(match) is True + + +def test_regex_match_bool_false(): + match = regex.regex_match("foobar", "USSCAMS07") + assert bool(match) is False + + +def test_regex_match_list(): + match = regex.regex_match(r"([A-Z]{2})([A-Z]{2})([A-Z]{3})(\d*)", "USSCAMS07") + assert match[0] == "US" + assert match[1] == "SC" + match = regex.regex_match(r"[A-Z]{2}[A-Z]{2}[A-Z]{3}\d*", "USSCAMS07") + assert match == "USSCAMS07" + + +def test_regex_match_is_none(): + match = regex.regex_match("(foobar)", "USSCAMS07") + assert match is None + + +def test_regex_search_bool_true(): + match = regex.regex_search(r"CAMS\d\d", "USSCAMS07") + assert bool(match) is True + + +def test_regex_search_bool_false(): + match = regex.regex_search("foobar", "USSCAMS07") + assert bool(match) is False + + +def test_regex_search_list(): + match = regex.regex_search(r"([A-Z]{2})([A-Z]{2})([A-Z]{3})(\d*)", "USSCAMS07") + assert match[0] == "US" + assert match[1] == "SC" + match = regex.regex_search(r"[A-Z]{2}[A-Z]{2}[A-Z]{3}\d*", "USSCAMS07") + assert match == "USSCAMS07" + + +def test_regex_search_is_none(): + match = regex.regex_search("(foobar)", "USSCAMS07") + assert match is None + + +def test_regex_split_list(): + match = regex.regex_split(",", "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01") + assert match[0] == "NYC-RT01" + assert match[1] == "NYC-RT02" + match = regex.regex_split("(.)", "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01") + assert match[1] == "N" + match = regex.regex_split(",", "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01", 1) + assert match[0] == "NYC-RT01" + assert match[1] == "NYC-RT02,SFO-SW01,SFO-RT01" + + +def test_regex_split_no_match(): + match = regex.regex_split(r"(\.)", "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01") + assert match == ["NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01"] + + +def test_regex_sub_list(): + match = regex.regex_sub(",", " ", "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01") + assert match == "NYC-RT01 NYC-RT02 SFO-SW01 SFO-RT01" + match = regex.regex_sub("(ROUTER|RTR)", "RT", "NYC-ROUTER01,NYC-ROUTER02,NYC-RTR03") + assert match == "NYC-RT01,NYC-RT02,NYC-RT03" + + +def test_regex_sub_no_match(): + match = regex.regex_sub("ABBA", "CADABBA", "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01") + assert match == "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01" diff --git a/tests/unit/test_vlan.py b/tests/unit/test_vlan.py index a811caf5..5b26e3e1 100644 --- a/tests/unit/test_vlan.py +++ b/tests/unit/test_vlan.py @@ -28,6 +28,12 @@ def test_to_config_failure(sent_data): vlan.vlanlist_to_config("switchport trunk allowed vlan 1025,1069-1072", min_grouping_size=0) +@pytest.mark.parametrize("sent_data", [{"vlan_list": []}]) +def test_to_empty_error(sent_data): + with pytest.raises(ValueError, match=r"The `vlan_list` argument provided*"): + vlan.vlanlist_to_config(**sent_data) + + @pytest.mark.parametrize("_file", glob.glob(f"{MOCK_DIR}/to_list/*{TXT_FILE}")) def test_to_list_success(_file, get_text_data, get_json_data): truncate_file = os.path.join(MOCK_DIR, _file[: -len(TXT_FILE)])