CVE-2022-23496 (YAML, published 2022-12-08T22:15Z)
Description: value:  Yet Another UserAgent Analyzer (Yauaa) is a java library that tries to parse and analyze the useragent string and extract as many relevant attributes as possible. Applications using the Client Hints analysis feature introduced with 7.0.0 can crash because the Yauaa library throws an ArrayIndexOutOfBoundsException. If uncaught the exception will result in a program crash. Applications that do not use this feature are not affected. Users are advised to upgrade to version 7.9.0. Users unable to upgrade may catch and discard any ArrayIndexOutOfBoundsException thrown by the Yauaa library.
Severity: nan (CVSS v3 base score: 7.5)
Weakness: CWE-755 \u2014 Improper Handling of Exceptional Conditions
The product does not handle or incorrectly handles an exceptional condition.
Repository: https://github.com/nielsbasjes/yauaa
Files changed:
CHANGELOG.md
analyzer/src/main/java/nl/basjes/parse/useragent/clienthints/ClientHintsAnalyzer.java
analyzer/src/main/resources/UserAgents/Anonymize-Kamo.yaml
analyzer/src/main/resources/UserAgents/ClientHints-Tests.yaml
analyzer/src/main/resources/UserAgents/ExtendedAgents.yaml
analyzer/src/main/resources/UserAgents/FederatedSocialMedia.yaml
analyzer/src/main/resources/UserAgents/GeckoFirefox.yaml
analyzer/src/main/resources/UserAgents/GoogleChrome.yaml
analyzer/src/main/resources/UserAgents/GoogleChromeFrozen.yaml
analyzer/src/main/resources/UserAgents/Robots.yaml
Commit message: feat: Better clienthint handling, ignore Kamo tags.


Vulnerable code:
    private static final Set<String> CHROMIUM = new HashSet<>();
    static {
        CHROMIUM.add("Chromium");
        CHROMIUM.add("Chrome");
        List<Brand> fullVersionList = clientHints.getFullVersionList();
        if (fullVersionList != null && !fullVersionList.isEmpty()) {
            String version;
            String majorVersion;

            String agentName;
            for (Brand brand : fullVersionList) {
                String[] versionSplits;
                switch (brand.getName()) {
                    case "Chromium":
                        version = brand.getVersion();
                        versionSplits = version.split("\\.");
                        if (versionSplits.length == 4) {
                            if (!"0".equals(versionSplits[1])) {
                                continue;
                            }
                        }
                        version = versionSplits[0] + '.' + versionSplits[1];
                        majorVersion = versionSplits[0];
                        overrideValue(userAgent.get(LAYOUT_ENGINE_NAME), "Blink");
                        overrideValue(userAgent.get(LAYOUT_ENGINE_VERSION), version);
                        overrideValue(userAgent.get(LAYOUT_ENGINE_NAME_VERSION), "Blink " + version);
                        overrideValue(userAgent.get(LAYOUT_ENGINE_VERSION_MAJOR), majorVersion);
                        overrideValue(userAgent.get(LAYOUT_ENGINE_NAME_VERSION_MAJOR), "Blink "+ majorVersion);

                        if (fullVersionList.size() == 1) { // NOTE: The grease was filtered out !
                            // So we have "Chromium" and not "Chrome" or "Edge" or something else
                            if (CHROMIUM.contains(userAgent.getValue(AGENT_NAME))) {
                                agentName = "Chromium";
                                version = brand.getVersion();
                                overrideValue(userAgent.get(AGENT_NAME), agentName);
                                overrideValue(userAgent.get(AGENT_VERSION), version);
                                overrideValue(userAgent.get(AGENT_NAME_VERSION), agentName + " " + version);
                                overrideValue(userAgent.get(AGENT_VERSION_MAJOR), majorVersion);
                                overrideValue(userAgent.get(AGENT_NAME_VERSION_MAJOR), agentName + " " + majorVersion);
                            }
                        }

                        break;

                    case "Google Chrome":
                    case "Chrome":
                        agentName = "Chrome";
                        version = brand.getVersion();
                        versionSplits = version.split("\\.");
                        if (versionSplits.length == 4) {
                            if (!"0".equals(versionSplits[1])) {
                                continue;
                            }
                        }
                        majorVersion = versionSplits[0];

                        overrideValue(userAgent.get(AGENT_NAME), agentName);
                        overrideValue(userAgent.get(AGENT_VERSION), version);
                        overrideValue(userAgent.get(AGENT_NAME_VERSION), agentName + " " + version);
                        overrideValue(userAgent.get(AGENT_VERSION_MAJOR), majorVersion);
                        overrideValue(userAgent.get(AGENT_NAME_VERSION_MAJOR), agentName + " " + majorVersion);
                        break;

                    case "Microsoft Edge":
                    case "Edge":
                        agentName = "Edge";
                        version = brand.getVersion();
                        versionSplits = version.split("\\.");
                        if (versionSplits.length == 4) {
                            if (!"0".equals(versionSplits[1])) {
                                continue;
                            }
                        }
                        majorVersion = versionSplits[0];

                        overrideValue(userAgent.get(AGENT_NAME), agentName);
                        overrideValue(userAgent.get(AGENT_VERSION), version);
                        overrideValue(userAgent.get(AGENT_NAME_VERSION), agentName + " " + version);
                        overrideValue(userAgent.get(AGENT_VERSION_MAJOR), majorVersion);
                        overrideValue(userAgent.get(AGENT_NAME_VERSION_MAJOR), agentName + " " + majorVersion);
                        break;
                    default:
                        // Ignore
                }
            }
        } else {
            // No full versions available, only the major versions
            ArrayList<Brand> brands = clientHints.getBrands();
            if (brands == null) {
                return;
            }
            if (brands.size() == 1) { // NOTE: The grease was filtered out !
                Brand brand = brands.get(0);
                if ("Chromium".equals(brand.getName())) {
                    // So we have "Chromium" and not "Chrome", "Edge", "Opera" or something else
                    String version = brand.getVersion();
                    // NOTE: No full version available, only the major version
                    // We trust the Client hints more than the version we derived from the User-Agent.
                    overrideValue(userAgent.get(LAYOUT_ENGINE_NAME), "Blink");
                    overrideValue(userAgent.get(LAYOUT_ENGINE_VERSION), version);
                    overrideValue(userAgent.get(LAYOUT_ENGINE_NAME_VERSION), "Blink " + version);
                    overrideValue(userAgent.get(LAYOUT_ENGINE_VERSION_MAJOR), version);
                    overrideValue(userAgent.get(LAYOUT_ENGINE_NAME_VERSION_MAJOR), "Blink " + version);
                    // So we have "Chromium" and not "Chrome" or "Edge" or something else
                    if (CHROMIUM.contains(userAgent.getValue(AGENT_NAME))) {
                        overrideValue(userAgent.get(AGENT_VERSION), version);
                        overrideValue(userAgent.get(AGENT_NAME_VERSION), "Chromium " + version);
                        overrideValue(userAgent.get(AGENT_VERSION_MAJOR), version);
                        overrideValue(userAgent.get(AGENT_NAME_VERSION_MAJOR), "Chromium " + version);
            for (Brand brand : brands) {
                String[] versionSplits;
                switch (brand.getName()) {
                    case "Microsoft Edge":
                    case "Edge":
                        MutableAgentField agentName = userAgent.get(AGENT_NAME);
                        if (agentName.getValue().equals("Edge")) {
                            continue;
                        }
                        String version = brand.getVersion();
                        versionSplits = version.split("\\.");
                        if (versionSplits.length == 4) {
                            if (!"0".equals(versionSplits[1])) {
                                continue;
                            }
                        }
                        String majorVersion = versionSplits[0];

                        overrideValue(agentName, "Edge");
                        overrideValue(userAgent.get(AGENT_VERSION), version);
                        overrideValue(userAgent.get(AGENT_NAME_VERSION), "Edge " + version);
                        overrideValue(userAgent.get(AGENT_VERSION_MAJOR), majorVersion);
                        overrideValue(userAgent.get(AGENT_NAME_VERSION_MAJOR), "Edge " + majorVersion);
                        break;
                    default:
      AgentVersion                               : '100.0'
      AgentNameVersion                           : 'Chrome 100.0'
# NOTE: There is no Chromium tag so we use the Sec-Ch-Ua provided version.
      LayoutEngineVersion                  : '101'
      LayoutEngineNameVersion              : 'Blink 101'
      AgentVersion                         : '101' #.0.4951.64'
      AgentNameVersion                     : 'Chromium 101' #.0.4951.64'
      LayoutEngineVersion                        : '95'
      LayoutEngineNameVersion                    : 'Blink 95'
      AgentVersion                               : '95'
      AgentNameVersion                           : 'Chromium 95'
      LayoutEngineVersion                        : '95'
      LayoutEngineNameVersion                    : 'Blink 95'
      AgentVersion                               : '95'
      AgentNameVersion                           : 'Chromium 95'
      User-Agent                           : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:94.0) Gecko/20100101 Firefox/94.0 Herring/583.19.9'
      AgentName                            : 'Herring'
      AgentVersion                         : '583.19.9'
      AgentVersionMajor                    : '583'
      AgentNameVersion                     : 'Herring 583.19.9'
      AgentNameVersionMajor                : 'Herring 583'

- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 Agency/100.8.7507.8'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Agency'
      AgentVersion                         : '100.8.7507.8'
      AgentVersionMajor                    : '100'
      AgentNameVersion                     : 'Agency 100.8.7507.8'
      AgentNameVersionMajor                : 'Agency 100'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 AtContent/95.5.6374.75'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'AtContent'
      AgentVersion                         : '95.5.6374.75'
      AgentVersionMajor                    : '95'
      AgentNameVersion                     : 'AtContent 95.5.6374.75'
      AgentNameVersionMajor                : 'AtContent 95'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 Config/99.2.4311.12'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Config'
      AgentVersion                         : '99.2.4311.12'
      AgentVersionMajor                    : '99'
      AgentNameVersion                     : 'Config 99.2.4311.12'
      AgentNameVersionMajor                : 'Config 99'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 GLS/90.10.6209.10'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'GLS'
      AgentVersion                         : '90.10.6209.10'
      AgentVersionMajor                    : '90'
      AgentNameVersion                     : 'GLS 90.10.6209.10'
      AgentNameVersionMajor                : 'GLS 90'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 Herring/96.1.1770.71'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Herring'
      AgentVersion                         : '96.1.1770.71'
      AgentVersionMajor                    : '96'
      AgentNameVersion                     : 'Herring 96.1.1770.71'
      AgentNameVersionMajor                : 'Herring 96'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 LikeWise/91.6.3585.86'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'LikeWise'
      AgentVersion                         : '91.6.3585.86'
      AgentVersionMajor                    : '91'
      AgentNameVersion                     : 'LikeWise 91.6.3585.86'
      AgentNameVersionMajor                : 'LikeWise 91'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 OpenWave/95.4.2243.44'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'OpenWave'
      AgentVersion                         : '95.4.2243.44'
      AgentVersionMajor                    : '95'
      AgentNameVersion                     : 'OpenWave 95.4.2243.44'
      AgentNameVersionMajor                : 'OpenWave 95'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 Trailer/92.3.8742.43'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Trailer'
      AgentVersion                         : '92.3.8742.43'
      AgentVersionMajor                    : '92'
      AgentNameVersion                     : 'Trailer 92.3.8742.43'
      AgentNameVersionMajor                : 'Trailer 92'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 Viewer/96.9.4198.99'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Viewer'
      AgentVersion                         : '96.9.4198.99'
      AgentVersionMajor                    : '96'
      AgentNameVersion                     : 'Viewer 96.9.4198.99'
      AgentNameVersionMajor                : 'Viewer 96'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.62 Herring/98.1.5870.71'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Herring'
      AgentVersion                         : '98.1.5870.71'
      AgentVersionMajor                    : '98'
      AgentNameVersion                     : 'Herring 98.1.5870.71'
      AgentNameVersionMajor                : 'Herring 98'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 OPR/89.0.4447.48 Herring/95.1.6890.91'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '10.0'
      OperatingSystemVersionMajor          : '10'
      OperatingSystemNameVersion           : 'Windows 10.0'
      OperatingSystemNameVersionMajor      : 'Windows 10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Herring'
      AgentVersion                         : '95.1.6890.91'
      AgentVersionMajor                    : '95'
      AgentNameVersion                     : 'Herring 95.1.6890.91'
      AgentNameVersionMajor                : 'Herring 95'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36 Herring/100.1.7540.41'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '??'
      OperatingSystemVersionMajor          : '??'
      OperatingSystemNameVersion           : 'Windows NT ??'
      OperatingSystemNameVersionMajor      : 'Windows NT ??'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Herring'
      AgentVersion                         : '100.1.7540.41'
      AgentVersionMajor                    : '100'
      AgentNameVersion                     : 'Herring 100.1.7540.41'
      AgentNameVersionMajor                : 'Herring 100'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0 Agency/95.8.7917.18'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '8.1'
      OperatingSystemVersionMajor          : '8'
      OperatingSystemNameVersion           : 'Windows 8.1'
      OperatingSystemNameVersionMajor      : 'Windows 8'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Gecko'
      LayoutEngineVersion                  : '101.0'
      LayoutEngineVersionMajor             : '101'
      LayoutEngineNameVersion              : 'Gecko 101.0'
      LayoutEngineNameVersionMajor         : 'Gecko 101'
      LayoutEngineBuild                    : '20100101'
      AgentClass                           : 'Browser'
      AgentName                            : 'Agency'
      AgentVersion                         : '95.8.7917.18'
      AgentVersionMajor                    : '95'
      AgentNameVersion                     : 'Agency 95.8.7917.18'
      AgentNameVersionMajor                : 'Agency 95'
      LayoutEngineVersion                  : '104'
      LayoutEngineNameVersion              : 'Blink 104'
      LayoutEngineVersion                  : '98'
      LayoutEngineVersionMajor             : '98'
      LayoutEngineNameVersion              : 'Blink 98'
      LayoutEngineNameVersionMajor         : 'Blink 98'
      AgentVersion                         : '98'
      AgentVersionMajor                    : '98'
      AgentNameVersion                     : 'Chromium 98'
      AgentNameVersionMajor                : 'Chromium 98'

Fixed code:
  - Ignore the tags created by Kamo
  - Slightly better analysis of the Client Hints
    private boolean newVersionIsBetter(MutableAgentField currentVersion, String version) {
        boolean currentVersionHasMinor = currentVersion.getValue().contains(".");
        boolean versionHasMinor = version.contains(".");
        return currentVersion.isDefaultValue() ||
            (!versionHasMinor && !currentVersionHasMinor) ||
            (versionHasMinor);
        boolean usingFullVersions = true;
        List<Brand> versionList = clientHints.getFullVersionList();
        if (versionList == null) {
            versionList = clientHints.getBrands();
            usingFullVersions = false;
        }
        if (versionList == null) {
            return; // Nothing to do
        }

        final Map<String, Brand> versionMap = new TreeMap<>();
        versionList.forEach(v -> versionMap.put(v.getName(), v));
        // ========================
        Brand chromium = versionMap.get("Chromium");
        if (chromium != null) {
            String version = chromium.getVersion();
            String[] versionSplits = version.split("\\.");
            String majorVersion = versionSplits[0];
            // Work around the major in minor hack/feature of Chrome ~v99
            if (versionSplits.length==4 && !"0".equals(versionSplits[1])) {
                version = versionSplits[1] + ".0." + versionSplits[2] + '.' + versionSplits[3];
                majorVersion = versionSplits[1];
            }

            // ==== Blink ?
            MutableAgentField engineName = userAgent.get(LAYOUT_ENGINE_NAME);
            if (engineName.isDefaultValue() || !"Blink".equals(engineName.getValue())) {
                overrideValue(engineName, "Blink");
            }
            MutableAgentField engineVersion = userAgent.get(LAYOUT_ENGINE_VERSION);
            MutableAgentField engineMajorVersion = userAgent.get(LAYOUT_ENGINE_VERSION_MAJOR);
            String blinkVersion = majorVersion;
            if (versionSplits.length>1) {
                blinkVersion = majorVersion + ".0";
            }
            if (newVersionIsBetter(engineVersion, blinkVersion)) {
                overrideValue(engineVersion, blinkVersion);
                overrideValue(engineMajorVersion, majorVersion);
            }

            overrideValue(userAgent.get(LAYOUT_ENGINE_NAME_VERSION), engineName.getValue() + " " + engineVersion.getValue());
            overrideValue(userAgent.get(LAYOUT_ENGINE_NAME_VERSION_MAJOR), engineName.getValue() + " " + engineMajorVersion.getValue());

            // ===== Chromium browser?
            if (versionList.size() == 1) { // NOTE: The grease was filtered out !
                // So we have "Chromium" and not "Chrome" or "Edge" or something else
                MutableAgentField currentVersion = userAgent.get(AGENT_VERSION);
                if (newVersionIsBetter(currentVersion, version)) {
                    overrideValue(userAgent.get(AGENT_NAME), "Chromium");
                    overrideValue(userAgent.get(AGENT_VERSION), version);
                    overrideValue(userAgent.get(AGENT_NAME_VERSION), "Chromium " + version);
                    overrideValue(userAgent.get(AGENT_VERSION_MAJOR), majorVersion);
                    overrideValue(userAgent.get(AGENT_NAME_VERSION_MAJOR), "Chromium " + majorVersion);
                } else {
                    // We ONLY update the name of the agent to Chromium in some cases
                    if ("Chrome".equals(userAgent.getValue(AGENT_NAME))) {
                        overrideValue(userAgent.get(AGENT_NAME_VERSION), "Chromium " + currentVersion.getValue());

                        String currentMajorVersion = userAgent.getValue(AGENT_VERSION_MAJOR);
                        overrideValue(userAgent.get(AGENT_NAME_VERSION_MAJOR), "Chromium " + currentMajorVersion);

        }
        versionMap.remove("Chromium");
        // ========================
        Brand chrome = versionMap.get("Chrome");
        if (chrome == null) {
            chrome = versionMap.get("Google Chrome");
        }
        if (chrome != null) {
            if (versionMap.size() == 1) {
                // So we have "Chrome" and nothing else
                MutableAgentField currentVersion = userAgent.get(AGENT_VERSION);
                String version = chrome.getVersion();
                String[] versionSplits = version.split("\\.");
                String majorVersion = versionSplits[0];

                // Work around the major in minor hack/feature of Chrome ~v99
                // 99.100.x.y is really 100.0.x.y
                if (versionSplits.length==4 && !"0".equals(versionSplits[1])) {
                    version = versionSplits[1] + ".0." + versionSplits[2] + '.' + versionSplits[3];
                    majorVersion = versionSplits[1];
                }

//                if (currentVersion.isDefaultValue()  ||
//                    (!currentVersion.getValue().contains(".") && usingFullVersions)) {
                if (newVersionIsBetter(currentVersion, version)) {
                    overrideValue(userAgent.get(AGENT_NAME), "Chrome");
                    overrideValue(currentVersion, version);
                    overrideValue(userAgent.get(AGENT_NAME_VERSION), "Chrome " + version);
                    overrideValue(userAgent.get(AGENT_VERSION_MAJOR), majorVersion);
                    overrideValue(userAgent.get(AGENT_NAME_VERSION_MAJOR), "Chrome " + majorVersion);
                    return;
        versionMap.remove("Chrome");
        versionMap.remove("Google Chrome");
        // ========================

        // If anything remains then (we think) THAT is the truth...
        for (Map.Entry<String, Brand> brandEntry : versionMap.entrySet()) {
            Brand brand = brandEntry.getValue();
            String rawBrandName = brand.getName();
            String agentName = rawBrandName;

            // Sanitize the common yet unwanted names
            switch (rawBrandName) {
                case "Microsoft Edge":
                    agentName = "Edge";
                    break;
                default:
            }

            MutableAgentField agentNameField = userAgent.get(AGENT_NAME);
            MutableAgentField agentVersionField = userAgent.get(AGENT_VERSION);

            switch (agentName) {
                case "Opera":
                    // There is a bug in Opera which puts the wrong version in the client hints.
                    break;

                default:
                    // Only do this if the existing in only a major version, and we have received full versions
                    if (agentVersionField.getValue().contains(".") && !usingFullVersions){
                        continue;
                    }
                    // In all other cases the client hint is expected to be "more" true.
                    String version = brand.getVersion();
                    String majorVersion = version.split("\\.")[0];
                    overrideValue(agentNameField, agentName);
                    overrideValue(userAgent.get(AGENT_VERSION), version);
                    overrideValue(userAgent.get(AGENT_NAME_VERSION), agentName + " " + version);
                    overrideValue(userAgent.get(AGENT_VERSION_MAJOR), majorVersion);
                    overrideValue(userAgent.get(AGENT_NAME_VERSION_MAJOR), agentName + " " + majorVersion);
                    break;
            }
        }
config:

# Tags used by https://www.ccleaner.com/kamo that must be ignored
- set:
    name: 'KamoAgents'
    values:
    - 'Agency'
    - 'AtContent'
    - 'Config'
    - 'GLS'
    - 'Herring'
    - 'LikeWise'
    - 'OpenWave'
    - 'Trailer'
    - 'Unique'
    - 'Viewer'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.0.0 Safari/537.36 Trailer/98.3.7512.13'
      Sec-Ch-Ua                            : '" Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"'
      Sec-Ch-Ua-Mobile                     : '?0'
      Sec-Ch-Ua-Platform                   : '"Windows"'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '??'
      OperatingSystemVersionMajor          : '??'
      OperatingSystemNameVersion           : 'Windows NT ??'
      OperatingSystemNameVersionMajor      : 'Windows NT ??'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '100'
      LayoutEngineVersionMajor             : '100'
      LayoutEngineNameVersion              : 'Blink 100'
      LayoutEngineNameVersionMajor         : 'Blink 100'
      AgentClass                           : 'Browser'
      AgentName                            : 'Chrome'
      AgentVersion                         : '100'
      AgentVersionMajor                    : '100'
      AgentNameVersion                     : 'Chrome 100'
      AgentNameVersionMajor                : 'Chrome 100'
      UAClientHintBrands_0_Brand           : 'Chromium'
      UAClientHintBrands_0_Version         : '100'
      UAClientHintBrands_1_Brand           : 'Google Chrome'
      UAClientHintBrands_1_Version         : '100'
      UAClientHintMobile                   : 'false'
      UAClientHintPlatform                 : 'Windows'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.0.0 Safari/537.36 Trailer/98.3.7512.13'
      Sec-Ch-Ua                                  : '" Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"100.0.4896.127"'
      Sec-Ch-Ua-Full-Version-List                : '" Not A;Brand";v="99.0.0.0", "Chromium";v="100.0.4896.127", "Google Chrome";v="100.0.4896.127"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.1.0"'
      Sec-Ch-Ua-Wow64                            : '?0'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '100.0'
      LayoutEngineVersionMajor                   : '100'
      LayoutEngineNameVersion                    : 'Blink 100.0'
      LayoutEngineNameVersionMajor               : 'Blink 100'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Chrome'
      AgentVersion                               : '100.0.4896.127'
      AgentVersionMajor                          : '100'
      AgentNameVersion                           : 'Chrome 100.0.4896.127'
      AgentNameVersionMajor                      : 'Chrome 100'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Chromium'
      UAClientHintBrands_0_Version               : '100'
      UAClientHintBrands_1_Brand                 : 'Google Chrome'
      UAClientHintBrands_1_Version               : '100'
      UAClientHintFullVersion                    : '100.0.4896.127'
      UAClientHintFullVersionList_0_Brand        : 'Chromium'
      UAClientHintFullVersionList_0_Version      : '100.0.4896.127'
      UAClientHintFullVersionList_1_Brand        : 'Google Chrome'
      UAClientHintFullVersionList_1_Version      : '100.0.4896.127'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.1.0'
      UAClientHintWow64                          : 'false'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 GLS/93.10.5259.60'
      Sec-Ch-Ua                                  : '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"108.0.5359.72"'
      Sec-Ch-Ua-Full-Version-List                : '"Not?A_Brand";v="8.0.0.0", "Chromium";v="108.0.5359.72", "Google Chrome";v="108.0.5359.72"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.1.0"'
      Sec-Ch-Ua-Wow64                            : '?0'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '108.0'
      LayoutEngineVersionMajor                   : '108'
      LayoutEngineNameVersion                    : 'Blink 108.0'
      LayoutEngineNameVersionMajor               : 'Blink 108'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Chrome'
      AgentVersion                               : '108.0.5359.72'
      AgentVersionMajor                          : '108'
      AgentNameVersion                           : 'Chrome 108.0.5359.72'
      AgentNameVersionMajor                      : 'Chrome 108'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Chromium'
      UAClientHintBrands_0_Version               : '108'
      UAClientHintBrands_1_Brand                 : 'Google Chrome'
      UAClientHintBrands_1_Version               : '108'
      UAClientHintFullVersion                    : '108.0.5359.72'
      UAClientHintFullVersionList_0_Brand        : 'Chromium'
      UAClientHintFullVersionList_0_Version      : '108.0.5359.72'
      UAClientHintFullVersionList_1_Brand        : 'Google Chrome'
      UAClientHintFullVersionList_1_Version      : '108.0.5359.72'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.1.0'
      UAClientHintWow64                          : 'false'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 LikeWise/94.6.5565.66'
      Sec-Ch-Ua                                  : '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"108.0.5359.72"'
      Sec-Ch-Ua-Full-Version-List                : '"Not?A_Brand";v="8.0.0.0", "Chromium";v="108.0.5359.72", "Google Chrome";v="108.0.5359.72"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.1.0"'
      Sec-Ch-Ua-Wow64                            : '?0'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '108.0'
      LayoutEngineVersionMajor                   : '108'
      LayoutEngineNameVersion                    : 'Blink 108.0'
      LayoutEngineNameVersionMajor               : 'Blink 108'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Chrome'
      AgentVersion                               : '108.0.5359.72'
      AgentVersionMajor                          : '108'
      AgentNameVersion                           : 'Chrome 108.0.5359.72'
      AgentNameVersionMajor                      : 'Chrome 108'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Chromium'
      UAClientHintBrands_0_Version               : '108'
      UAClientHintBrands_1_Brand                 : 'Google Chrome'
      UAClientHintBrands_1_Version               : '108'
      UAClientHintFullVersion                    : '108.0.5359.72'
      UAClientHintFullVersionList_0_Brand        : 'Chromium'
      UAClientHintFullVersionList_0_Version      : '108.0.5359.72'
      UAClientHintFullVersionList_1_Brand        : 'Google Chrome'
      UAClientHintFullVersionList_1_Version      : '108.0.5359.72'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.1.0'
      UAClientHintWow64                          : 'false'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 LikeWise/95.6.7405.6'
      Sec-Ch-Ua                                  : '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"108.0.5359.72"'
      Sec-Ch-Ua-Full-Version-List                : '"Not?A_Brand";v="8.0.0.0", "Chromium";v="108.0.5359.72", "Google Chrome";v="108.0.5359.72"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.1.0"'
      Sec-Ch-Ua-Wow64                            : '?0'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '108.0'
      LayoutEngineVersionMajor                   : '108'
      LayoutEngineNameVersion                    : 'Blink 108.0'
      LayoutEngineNameVersionMajor               : 'Blink 108'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Chrome'
      AgentVersion                               : '108.0.5359.72'
      AgentVersionMajor                          : '108'
      AgentNameVersion                           : 'Chrome 108.0.5359.72'
      AgentNameVersionMajor                      : 'Chrome 108'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Chromium'
      UAClientHintBrands_0_Version               : '108'
      UAClientHintBrands_1_Brand                 : 'Google Chrome'
      UAClientHintBrands_1_Version               : '108'
      UAClientHintFullVersion                    : '108.0.5359.72'
      UAClientHintFullVersionList_0_Brand        : 'Chromium'
      UAClientHintFullVersionList_0_Version      : '108.0.5359.72'
      UAClientHintFullVersionList_1_Brand        : 'Google Chrome'
      UAClientHintFullVersionList_1_Version      : '108.0.5359.72'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.1.0'
      UAClientHintWow64                          : 'false'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 OpenWave/98.4.3033.34'
      Sec-Ch-Ua                                  : '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"108.0.5359.72"'
      Sec-Ch-Ua-Full-Version-List                : '"Not?A_Brand";v="8.0.0.0", "Chromium";v="108.0.5359.72", "Google Chrome";v="108.0.5359.72"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.1.0"'
      Sec-Ch-Ua-Wow64                            : '?0'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '108.0'
      LayoutEngineVersionMajor                   : '108'
      LayoutEngineNameVersion                    : 'Blink 108.0'
      LayoutEngineNameVersionMajor               : 'Blink 108'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Chrome'
      AgentVersion                               : '108.0.5359.72'
      AgentVersionMajor                          : '108'
      AgentNameVersion                           : 'Chrome 108.0.5359.72'
      AgentNameVersionMajor                      : 'Chrome 108'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Chromium'
      UAClientHintBrands_0_Version               : '108'
      UAClientHintBrands_1_Brand                 : 'Google Chrome'
      UAClientHintBrands_1_Version               : '108'
      UAClientHintFullVersion                    : '108.0.5359.72'
      UAClientHintFullVersionList_0_Brand        : 'Chromium'
      UAClientHintFullVersionList_0_Version      : '108.0.5359.72'
      UAClientHintFullVersionList_1_Brand        : 'Google Chrome'
      UAClientHintFullVersionList_1_Version      : '108.0.5359.72'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.1.0'
      UAClientHintWow64                          : 'false'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko GLS/93.10.5259.60'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '7'
      OperatingSystemVersionMajor          : '7'
      OperatingSystemNameVersion           : 'Windows 7'
      OperatingSystemNameVersionMajor      : 'Windows 7'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Trident'
      LayoutEngineVersion                  : '7.0'
      LayoutEngineVersionMajor             : '7'
      LayoutEngineNameVersion              : 'Trident 7.0'
      LayoutEngineNameVersionMajor         : 'Trident 7'
      AgentClass                           : 'Browser'
      AgentName                            : 'Internet Explorer'
      AgentVersion                         : '11.0'
      AgentVersionMajor                    : '11'
      AgentNameVersion                     : 'Internet Explorer 11.0'
      AgentNameVersionMajor                : 'Internet Explorer 11'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko LikeWise/94.6.5565.66'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '7'
      OperatingSystemVersionMajor          : '7'
      OperatingSystemNameVersion           : 'Windows 7'
      OperatingSystemNameVersionMajor      : 'Windows 7'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Trident'
      LayoutEngineVersion                  : '7.0'
      LayoutEngineVersionMajor             : '7'
      LayoutEngineNameVersion              : 'Trident 7.0'
      LayoutEngineNameVersionMajor         : 'Trident 7'
      AgentClass                           : 'Browser'
      AgentName                            : 'Internet Explorer'
      AgentVersion                         : '11.0'
      AgentVersionMajor                    : '11'
      AgentNameVersion                     : 'Internet Explorer 11.0'
      AgentNameVersionMajor                : 'Internet Explorer 11'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '7'
      OperatingSystemVersionMajor          : '7'
      OperatingSystemNameVersion           : 'Windows 7'
      OperatingSystemNameVersionMajor      : 'Windows 7'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '107'
      LayoutEngineVersionMajor             : '107'
      LayoutEngineNameVersion              : 'Blink 107'
      LayoutEngineNameVersionMajor         : 'Blink 107'
      AgentClass                           : 'Browser'
      AgentName                            : 'Chrome'
      AgentVersion                         : '107'
      AgentVersionMajor                    : '107'
      AgentNameVersion                     : 'Chrome 107'
      AgentNameVersionMajor                : 'Chrome 107'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.62'
      Sec-Ch-Ua                                  : '"Microsoft Edge";v="107", "Chromium";v="107", "Not=A?Brand";v="24"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"107.0.1418.62"'
      Sec-Ch-Ua-Full-Version-List                : '"Microsoft Edge";v="107.0.1418.62", "Chromium";v="107.0.5304.150", "Not=A?Brand";v="24.0.0.0"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.1.0"'
      Sec-Ch-Ua-Wow64                            : '?0'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '107.0'
      LayoutEngineVersionMajor                   : '107'
      LayoutEngineNameVersion                    : 'Blink 107.0'
      LayoutEngineNameVersionMajor               : 'Blink 107'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Edge'
      AgentVersion                               : '107.0.1418.62'
      AgentVersionMajor                          : '107'
      AgentNameVersion                           : 'Edge 107.0.1418.62'
      AgentNameVersionMajor                      : 'Edge 107'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Microsoft Edge'
      UAClientHintBrands_0_Version               : '107'
      UAClientHintBrands_1_Brand                 : 'Chromium'
      UAClientHintBrands_1_Version               : '107'
      UAClientHintFullVersion                    : '107.0.1418.62'
      UAClientHintFullVersionList_0_Brand        : 'Microsoft Edge'
      UAClientHintFullVersionList_0_Version      : '107.0.1418.62'
      UAClientHintFullVersionList_1_Brand        : 'Chromium'
      UAClientHintFullVersionList_1_Version      : '107.0.5304.150'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.1.0'
      UAClientHintWow64                          : 'false'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.62 GLS/93.10.5259.60'
      Sec-Ch-Ua                                  : '"Microsoft Edge";v="107", "Chromium";v="107", "Not=A?Brand";v="24"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"107.0.1418.62"'
      Sec-Ch-Ua-Full-Version-List                : '"Microsoft Edge";v="107.0.1418.62", "Chromium";v="107.0.5304.150", "Not=A?Brand";v="24.0.0.0"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.1.0"'
      Sec-Ch-Ua-Wow64                            : '?0'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '107.0'
      LayoutEngineVersionMajor                   : '107'
      LayoutEngineNameVersion                    : 'Blink 107.0'
      LayoutEngineNameVersionMajor               : 'Blink 107'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Edge'
      AgentVersion                               : '107.0.1418.62'
      AgentVersionMajor                          : '107'
      AgentNameVersion                           : 'Edge 107.0.1418.62'
      AgentNameVersionMajor                      : 'Edge 107'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Microsoft Edge'
      UAClientHintBrands_0_Version               : '107'
      UAClientHintBrands_1_Brand                 : 'Chromium'
      UAClientHintBrands_1_Version               : '107'
      UAClientHintFullVersion                    : '107.0.1418.62'
      UAClientHintFullVersionList_0_Brand        : 'Microsoft Edge'
      UAClientHintFullVersionList_0_Version      : '107.0.1418.62'
      UAClientHintFullVersionList_1_Brand        : 'Chromium'
      UAClientHintFullVersionList_1_Version      : '107.0.5304.150'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.1.0'
      UAClientHintWow64                          : 'false'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.62 LikeWise/94.6.5565.66'
      Sec-Ch-Ua                                  : '"Microsoft Edge";v="107", "Chromium";v="107", "Not=A?Brand";v="24"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"107.0.1418.62"'
      Sec-Ch-Ua-Full-Version-List                : '"Microsoft Edge";v="107.0.1418.62", "Chromium";v="107.0.5304.150", "Not=A?Brand";v="24.0.0.0"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.1.0"'
      Sec-Ch-Ua-Wow64                            : '?0'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '107.0'
      LayoutEngineVersionMajor                   : '107'
      LayoutEngineNameVersion                    : 'Blink 107.0'
      LayoutEngineNameVersionMajor               : 'Blink 107'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Edge'
      AgentVersion                               : '107.0.1418.62'
      AgentVersionMajor                          : '107'
      AgentNameVersion                           : 'Edge 107.0.1418.62'
      AgentNameVersionMajor                      : 'Edge 107'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Microsoft Edge'
      UAClientHintBrands_0_Version               : '107'
      UAClientHintBrands_1_Brand                 : 'Chromium'
      UAClientHintBrands_1_Version               : '107'
      UAClientHintFullVersion                    : '107.0.1418.62'
      UAClientHintFullVersionList_0_Brand        : 'Microsoft Edge'
      UAClientHintFullVersionList_0_Version      : '107.0.1418.62'
      UAClientHintFullVersionList_1_Brand        : 'Chromium'
      UAClientHintFullVersionList_1_Version      : '107.0.5304.150'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.1.0'
      UAClientHintWow64                          : 'false'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.62 LikeWise/95.6.7405.6'
      Sec-Ch-Ua                                  : '"Microsoft Edge";v="107", "Chromium";v="107", "Not=A?Brand";v="24"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"107.0.1418.62"'
      Sec-Ch-Ua-Full-Version-List                : '"Microsoft Edge";v="107.0.1418.62", "Chromium";v="107.0.5304.150", "Not=A?Brand";v="24.0.0.0"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.1.0"'
      Sec-Ch-Ua-Wow64                            : '?0'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '107.0'
      LayoutEngineVersionMajor                   : '107'
      LayoutEngineNameVersion                    : 'Blink 107.0'
      LayoutEngineNameVersionMajor               : 'Blink 107'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Edge'
      AgentVersion                               : '107.0.1418.62'
      AgentVersionMajor                          : '107'
      AgentNameVersion                           : 'Edge 107.0.1418.62'
      AgentNameVersionMajor                      : 'Edge 107'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Microsoft Edge'
      UAClientHintBrands_0_Version               : '107'
      UAClientHintBrands_1_Brand                 : 'Chromium'
      UAClientHintBrands_1_Version               : '107'
      UAClientHintFullVersion                    : '107.0.1418.62'
      UAClientHintFullVersionList_0_Brand        : 'Microsoft Edge'
      UAClientHintFullVersionList_0_Version      : '107.0.1418.62'
      UAClientHintFullVersionList_1_Brand        : 'Chromium'
      UAClientHintFullVersionList_1_Version      : '107.0.5304.150'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.1.0'
      UAClientHintWow64                          : 'false'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.62 OpenWave/98.4.3033.34'
      Sec-Ch-Ua                                  : '"Microsoft Edge";v="107", "Chromium";v="107", "Not=A?Brand";v="24"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"107.0.1418.62"'
      Sec-Ch-Ua-Full-Version-List                : '"Microsoft Edge";v="107.0.1418.62", "Chromium";v="107.0.5304.150", "Not=A?Brand";v="24.0.0.0"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.1.0"'
      Sec-Ch-Ua-Wow64                            : '?0'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '107.0'
      LayoutEngineVersionMajor                   : '107'
      LayoutEngineNameVersion                    : 'Blink 107.0'
      LayoutEngineNameVersionMajor               : 'Blink 107'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Edge'
      AgentVersion                               : '107.0.1418.62'
      AgentVersionMajor                          : '107'
      AgentNameVersion                           : 'Edge 107.0.1418.62'
      AgentNameVersionMajor                      : 'Edge 107'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Microsoft Edge'
      UAClientHintBrands_0_Version               : '107'
      UAClientHintBrands_1_Brand                 : 'Chromium'
      UAClientHintBrands_1_Version               : '107'
      UAClientHintFullVersion                    : '107.0.1418.62'
      UAClientHintFullVersionList_0_Brand        : 'Microsoft Edge'
      UAClientHintFullVersionList_0_Version      : '107.0.1418.62'
      UAClientHintFullVersionList_1_Brand        : 'Chromium'
      UAClientHintFullVersionList_1_Version      : '107.0.5304.150'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.1.0'
      UAClientHintWow64                          : 'false'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.62 Trailer/98.3.7512.13'
      Sec-Ch-Ua                            : '"Microsoft Edge";v="107", "Chromium";v="107", "Not=A?Brand";v="24"'
      Sec-Ch-Ua-Mobile                     : '?0'
      Sec-Ch-Ua-Platform                   : '"Windows"'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '7'
      OperatingSystemVersionMajor          : '7'
      OperatingSystemNameVersion           : 'Windows 7'
      OperatingSystemNameVersionMajor      : 'Windows 7'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '107'
      LayoutEngineVersionMajor             : '107'
      LayoutEngineNameVersion              : 'Blink 107'
      LayoutEngineNameVersionMajor         : 'Blink 107'
      AgentClass                           : 'Browser'
      AgentName                            : 'Edge'
      AgentVersion                         : '107'
      AgentVersionMajor                    : '107'
      AgentNameVersion                     : 'Edge 107'
      AgentNameVersionMajor                : 'Edge 107'

      UAClientHintBrands_0_Brand           : 'Microsoft Edge'
      UAClientHintBrands_0_Version         : '107'
      UAClientHintBrands_1_Brand           : 'Chromium'
      UAClientHintBrands_1_Version         : '107'
      UAClientHintMobile                   : 'false'
      UAClientHintPlatform                 : 'Windows'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.62 Trailer/98.3.7512.13'
      Sec-Ch-Ua                                  : '"Microsoft Edge";v="107", "Chromium";v="107", "Not=A?Brand";v="24"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"107.0.1418.62"'
      Sec-Ch-Ua-Full-Version-List                : '"Microsoft Edge";v="107.0.1418.62", "Chromium";v="107.0.5304.150", "Not=A?Brand";v="24.0.0.0"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.1.0"'
      Sec-Ch-Ua-Wow64                            : '?0'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '107.0'
      LayoutEngineVersionMajor                   : '107'
      LayoutEngineNameVersion                    : 'Blink 107.0'
      LayoutEngineNameVersionMajor               : 'Blink 107'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Edge'
      AgentVersion                               : '107.0.1418.62'
      AgentVersionMajor                          : '107'
      AgentNameVersion                           : 'Edge 107.0.1418.62'
      AgentNameVersionMajor                      : 'Edge 107'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Microsoft Edge'
      UAClientHintBrands_0_Version               : '107'
      UAClientHintBrands_1_Brand                 : 'Chromium'
      UAClientHintBrands_1_Version               : '107'
      UAClientHintFullVersion                    : '107.0.1418.62'
      UAClientHintFullVersionList_0_Brand        : 'Microsoft Edge'
      UAClientHintFullVersionList_0_Version      : '107.0.1418.62'
      UAClientHintFullVersionList_1_Brand        : 'Chromium'
      UAClientHintFullVersionList_1_Version      : '107.0.5304.150'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.1.0'
      UAClientHintWow64                          : 'false'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36 OPR/85.0.4341.60'
      Sec-Ch-Ua                                  : '" Not A;Brand";v="99", "Chromium";v="99", "Opera";v="85"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"99.0.4844.84"'
      Sec-Ch-Ua-Full-Version-List                : '" Not A;Brand";v="99.0.0.0", "Chromium";v="99.0.4844.84", "Opera";v="99.0.4844.84"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.0.0"'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '99.0'
      LayoutEngineVersionMajor                   : '99'
      LayoutEngineNameVersion                    : 'Blink 99.0'
      LayoutEngineNameVersionMajor               : 'Blink 99'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Opera'
      AgentVersion                               : '85.0.4341.60'
      AgentVersionMajor                          : '85'
      AgentNameVersion                           : 'Opera 85.0.4341.60'
      AgentNameVersionMajor                      : 'Opera 85'
      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Chromium'
      UAClientHintBrands_0_Version               : '99'
      UAClientHintBrands_1_Brand                 : 'Opera'
      UAClientHintBrands_1_Version               : '85'
      UAClientHintFullVersion                    : '99.0.4844.84'
      UAClientHintFullVersionList_0_Brand        : 'Chromium'
      UAClientHintFullVersionList_0_Version      : '99.0.4844.84'
      UAClientHintFullVersionList_1_Brand        : 'Opera'
      UAClientHintFullVersionList_1_Version      : '99.0.4844.84'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.0.0'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36 OPR/85.0.4341.60 GLS/93.10.5259.60'
      Sec-Ch-Ua                                  : '" Not A;Brand";v="99", "Chromium";v="99", "Opera";v="85"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"99.0.4844.84"'
      Sec-Ch-Ua-Full-Version-List                : '" Not A;Brand";v="99.0.0.0", "Chromium";v="99.0.4844.84", "Opera";v="99.0.4844.84"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.0.0"'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '99.0'
      LayoutEngineVersionMajor                   : '99'
      LayoutEngineNameVersion                    : 'Blink 99.0'
      LayoutEngineNameVersionMajor               : 'Blink 99'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Opera'
      AgentVersion                               : '85.0.4341.60'
      AgentVersionMajor                          : '85'
      AgentNameVersion                           : 'Opera 85.0.4341.60'
      AgentNameVersionMajor                      : 'Opera 85'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Chromium'
      UAClientHintBrands_0_Version               : '99'
      UAClientHintBrands_1_Brand                 : 'Opera'
      UAClientHintBrands_1_Version               : '85'
      UAClientHintFullVersion                    : '99.0.4844.84'
      UAClientHintFullVersionList_0_Brand        : 'Chromium'
      UAClientHintFullVersionList_0_Version      : '99.0.4844.84'
      UAClientHintFullVersionList_1_Brand        : 'Opera'
      UAClientHintFullVersionList_1_Version      : '99.0.4844.84'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.0.0'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36 OPR/85.0.4341.60 LikeWise/94.6.5565.66'
      Sec-Ch-Ua                                  : '" Not A;Brand";v="99", "Chromium";v="99", "Opera";v="85"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"99.0.4844.84"'
      Sec-Ch-Ua-Full-Version-List                : '" Not A;Brand";v="99.0.0.0", "Chromium";v="99.0.4844.84", "Opera";v="99.0.4844.84"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.0.0"'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '99.0'
      LayoutEngineVersionMajor                   : '99'
      LayoutEngineNameVersion                    : 'Blink 99.0'
      LayoutEngineNameVersionMajor               : 'Blink 99'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Opera'
      AgentVersion                               : '85.0.4341.60'
      AgentVersionMajor                          : '85'
      AgentNameVersion                           : 'Opera 85.0.4341.60'
      AgentNameVersionMajor                      : 'Opera 85'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Chromium'
      UAClientHintBrands_0_Version               : '99'
      UAClientHintBrands_1_Brand                 : 'Opera'
      UAClientHintBrands_1_Version               : '85'
      UAClientHintFullVersion                    : '99.0.4844.84'
      UAClientHintFullVersionList_0_Brand        : 'Chromium'
      UAClientHintFullVersionList_0_Version      : '99.0.4844.84'
      UAClientHintFullVersionList_1_Brand        : 'Opera'
      UAClientHintFullVersionList_1_Version      : '99.0.4844.84'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.0.0'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36 OPR/85.0.4341.60 LikeWise/95.6.7405.6'
      Sec-Ch-Ua                                  : '" Not A;Brand";v="99", "Chromium";v="99", "Opera";v="85"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"99.0.4844.84"'
      Sec-Ch-Ua-Full-Version-List                : '" Not A;Brand";v="99.0.0.0", "Chromium";v="99.0.4844.84", "Opera";v="99.0.4844.84"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.0.0"'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '99.0'
      LayoutEngineVersionMajor                   : '99'
      LayoutEngineNameVersion                    : 'Blink 99.0'
      LayoutEngineNameVersionMajor               : 'Blink 99'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Opera'
      AgentVersion                               : '85.0.4341.60'
      AgentVersionMajor                          : '85'
      AgentNameVersion                           : 'Opera 85.0.4341.60'
      AgentNameVersionMajor                      : 'Opera 85'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Chromium'
      UAClientHintBrands_0_Version               : '99'
      UAClientHintBrands_1_Brand                 : 'Opera'
      UAClientHintBrands_1_Version               : '85'
      UAClientHintFullVersion                    : '99.0.4844.84'
      UAClientHintFullVersionList_0_Brand        : 'Chromium'
      UAClientHintFullVersionList_0_Version      : '99.0.4844.84'
      UAClientHintFullVersionList_1_Brand        : 'Opera'
      UAClientHintFullVersionList_1_Version      : '99.0.4844.84'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.0.0'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36 OPR/85.0.4341.60 Trailer/98.3.7512.13'
      Sec-Ch-Ua                                  : '" Not A;Brand";v="99", "Chromium";v="99", "Opera";v="85"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Full-Version                     : '"99.0.4844.84"'
      Sec-Ch-Ua-Full-Version-List                : '" Not A;Brand";v="99.0.0.0", "Chromium";v="99.0.4844.84", "Opera";v="99.0.4844.84"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.0.0"'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '99.0'
      LayoutEngineVersionMajor                   : '99'
      LayoutEngineNameVersion                    : 'Blink 99.0'
      LayoutEngineNameVersionMajor               : 'Blink 99'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Opera'
      AgentVersion                               : '85.0.4341.60'
      AgentVersionMajor                          : '85'
      AgentNameVersion                           : 'Opera 85.0.4341.60'
      AgentNameVersionMajor                      : 'Opera 85'

      UAClientHintArchitecture                   : 'x86'
      UAClientHintBrands_0_Brand                 : 'Chromium'
      UAClientHintBrands_0_Version               : '99'
      UAClientHintBrands_1_Brand                 : 'Opera'
      UAClientHintBrands_1_Version               : '85'
      UAClientHintFullVersion                    : '99.0.4844.84'
      UAClientHintFullVersionList_0_Brand        : 'Chromium'
      UAClientHintFullVersionList_0_Version      : '99.0.4844.84'
      UAClientHintFullVersionList_1_Brand        : 'Opera'
      UAClientHintFullVersionList_1_Version      : '99.0.4844.84'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.0.0'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:94.0) Gecko/20100101 Firefox/94.0 Herring/583.19.9'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Apple Macintosh'
      DeviceBrand                          : 'Apple'
      DeviceCpu                            : 'Intel'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Mac OS'
      OperatingSystemVersion               : '10.13'
      OperatingSystemVersionMajor          : '10.13'
      OperatingSystemNameVersion           : 'Mac OS 10.13'
      OperatingSystemNameVersionMajor      : 'Mac OS 10.13'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Gecko'
      LayoutEngineVersion                  : '94.0'
      LayoutEngineVersionMajor             : '94'
      LayoutEngineNameVersion              : 'Gecko 94.0'
      LayoutEngineNameVersionMajor         : 'Gecko 94'
      LayoutEngineBuild                    : '20100101'
      AgentClass                           : 'Browser'
      AgentName                            : 'Firefox'
      AgentVersion                         : '94.0'
      AgentVersionMajor                    : '94'
      AgentNameVersion                     : 'Firefox 94.0'
      AgentNameVersionMajor                : 'Firefox 94'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 Agency/100.8.7507.8'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Edge'
      AgentVersion                         : '103.0.1264.44'
      AgentVersionMajor                    : '103'
      AgentNameVersion                     : 'Edge 103.0.1264.44'
      AgentNameVersionMajor                : 'Edge 103'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 AtContent/95.5.6374.75'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Edge'
      AgentVersion                         : '103.0.1264.44'
      AgentVersionMajor                    : '103'
      AgentNameVersion                     : 'Edge 103.0.1264.44'
      AgentNameVersionMajor                : 'Edge 103'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 Config/99.2.4311.12'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Edge'
      AgentVersion                         : '103.0.1264.44'
      AgentVersionMajor                    : '103'
      AgentNameVersion                     : 'Edge 103.0.1264.44'
      AgentNameVersionMajor                : 'Edge 103'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 GLS/90.10.6209.10'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Edge'
      AgentVersion                         : '103.0.1264.44'
      AgentVersionMajor                    : '103'
      AgentNameVersion                     : 'Edge 103.0.1264.44'
      AgentNameVersionMajor                : 'Edge 103'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 Herring/96.1.1770.71'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Edge'
      AgentVersion                         : '103.0.1264.44'
      AgentVersionMajor                    : '103'
      AgentNameVersion                     : 'Edge 103.0.1264.44'
      AgentNameVersionMajor                : 'Edge 103'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 LikeWise/91.6.3585.86'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Edge'
      AgentVersion                         : '103.0.1264.44'
      AgentVersionMajor                    : '103'
      AgentNameVersion                     : 'Edge 103.0.1264.44'
      AgentNameVersionMajor                : 'Edge 103'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 OpenWave/95.4.2243.44'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Edge'
      AgentVersion                         : '103.0.1264.44'
      AgentVersionMajor                    : '103'
      AgentNameVersion                     : 'Edge 103.0.1264.44'
      AgentNameVersionMajor                : 'Edge 103'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 Trailer/92.3.8742.43'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Edge'
      AgentVersion                         : '103.0.1264.44'
      AgentVersionMajor                    : '103'
      AgentNameVersion                     : 'Edge 103.0.1264.44'
      AgentNameVersionMajor                : 'Edge 103'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44 Viewer/96.9.4198.99'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Edge'
      AgentVersion                         : '103.0.1264.44'
      AgentVersionMajor                    : '103'
      AgentNameVersion                     : 'Edge 103.0.1264.44'
      AgentNameVersionMajor                : 'Edge 103'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.62 Herring/98.1.5870.71'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '>=10'
      OperatingSystemVersionMajor          : '>=10'
      OperatingSystemNameVersion           : 'Windows >=10'
      OperatingSystemNameVersionMajor      : 'Windows >=10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Edge'
      AgentVersion                         : '103.0.1264.62'
      AgentVersionMajor                    : '103'
      AgentNameVersion                     : 'Edge 103.0.1264.62'
      AgentNameVersionMajor                : 'Edge 103'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 OPR/89.0.4447.48 Herring/95.1.6890.91'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '10.0'
      OperatingSystemVersionMajor          : '10'
      OperatingSystemNameVersion           : 'Windows 10.0'
      OperatingSystemNameVersionMajor      : 'Windows 10'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103.0'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103.0'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Opera'
      AgentVersion                         : '89.0.4447.48'
      AgentVersionMajor                    : '89'
      AgentNameVersion                     : 'Opera 89.0.4447.48'
      AgentNameVersionMajor                : 'Opera 89'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36 Herring/100.1.7540.41'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '??'
      OperatingSystemVersionMajor          : '??'
      OperatingSystemNameVersion           : 'Windows NT ??'
      OperatingSystemNameVersionMajor      : 'Windows NT ??'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '103'
      LayoutEngineVersionMajor             : '103'
      LayoutEngineNameVersion              : 'Blink 103'
      LayoutEngineNameVersionMajor         : 'Blink 103'
      AgentClass                           : 'Browser'
      AgentName                            : 'Chrome'
      AgentVersion                         : '103'
      AgentVersionMajor                    : '103'
      AgentNameVersion                     : 'Chrome 103'
      AgentNameVersionMajor                : 'Chrome 103'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0 Agency/95.8.7917.18'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '8.1'
      OperatingSystemVersionMajor          : '8'
      OperatingSystemNameVersion           : 'Windows 8.1'
      OperatingSystemNameVersionMajor      : 'Windows 8'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Gecko'
      LayoutEngineVersion                  : '101.0'
      LayoutEngineVersionMajor             : '101'
      LayoutEngineNameVersion              : 'Gecko 101.0'
      LayoutEngineNameVersionMajor         : 'Gecko 101'
      LayoutEngineBuild                    : '20100101'
      AgentClass                           : 'Browser'
      AgentName                            : 'Firefox'
      AgentVersion                         : '101.0'
      AgentVersionMajor                    : '101'
      AgentNameVersion                     : 'Firefox 101.0'
      AgentNameVersionMajor                : 'Firefox 101'
      AgentVersion                               : '100.0.4896.75'
      AgentNameVersion                           : 'Chrome 100.0.4896.75'
# NOTE: There is no Chromium tag so it is a bit unclear which version tag is to be used.
      LayoutEngineVersion                  : '101.0'
      LayoutEngineNameVersion              : 'Blink 101.0'
      AgentVersion                         : '101.0.4951.64'
      AgentNameVersion                     : 'Chromium 101.0.4951.64'
      LayoutEngineVersion                        : '95.0'
      LayoutEngineNameVersion                    : 'Blink 95.0'
      AgentVersion                               : '95.0.4638.69'
      AgentNameVersion                           : 'Chromium 95.0.4638.69'
      LayoutEngineVersion                        : '95.0'
      LayoutEngineNameVersion                    : 'Blink 95.0'
      AgentVersion                               : '95.0.4638.69'
      AgentNameVersion                           : 'Chromium 95.0.4638.69'
    - 'KamoAgents'
      User-Agent                           : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:94.0) Gecko/20100101 Firefox/94.0 Basjes/1.2.3'
      AgentName                            : 'Basjes'
      AgentVersion                         : '1.2.3'
      AgentVersionMajor                    : '1'
      AgentNameVersion                     : 'Basjes 1.2.3'
      AgentNameVersionMajor                : 'Basjes 1'
      LayoutEngineVersion                  : '104.0'
      LayoutEngineNameVersion              : 'Blink 104.0'
    - 'KamoAgents'

- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Mobile Safari/537.36'
      Sec-Ch-Ua                            : '"Brave";v="107", "Chromium";v="107", "Not=A?Brand";v="24"'
      Sec-Ch-Ua-Mobile                     : '?1'
      Sec-Ch-Ua-Platform                   : '"Android"'
    expected:
      DeviceClass                          : 'Phone'
      DeviceName                           : 'Unknown'
      DeviceBrand                          : 'Unknown'
      OperatingSystemClass                 : 'Mobile'
      OperatingSystemName                  : 'Android'
      OperatingSystemVersion               : '??'
      OperatingSystemVersionMajor          : '??'
      OperatingSystemNameVersion           : 'Android ??'
      OperatingSystemNameVersionMajor      : 'Android ??'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '107'
      LayoutEngineVersionMajor             : '107'
      LayoutEngineNameVersion              : 'Blink 107'
      LayoutEngineNameVersionMajor         : 'Blink 107'
      AgentClass                           : 'Browser'
      AgentName                            : 'Brave'
      AgentVersion                         : '107'
      AgentVersionMajor                    : '107'
      AgentNameVersion                     : 'Brave 107'
      AgentNameVersionMajor                : 'Brave 107'

      UAClientHintBrands_0_Brand           : 'Brave'
      UAClientHintBrands_0_Version         : '107'
      UAClientHintBrands_1_Brand           : 'Chromium'
      UAClientHintBrands_1_Version         : '107'
      UAClientHintMobile                   : 'true'
      UAClientHintPlatform                 : 'Android'

- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
      Sec-Ch-Ua                            : '"Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"'
      Sec-Ch-Ua-Mobile                     : '?0'
      Sec-Ch-Ua-Platform                   : '"macOS"'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Apple Macintosh'
      DeviceBrand                          : 'Apple'
      DeviceCpu                            : 'Intel'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Mac OS'
      OperatingSystemVersion               : '>=10.15.7'
      OperatingSystemVersionMajor          : '>=10.15'
      OperatingSystemNameVersion           : 'Mac OS >=10.15.7'
      OperatingSystemNameVersionMajor      : 'Mac OS >=10.15'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '107'
      LayoutEngineVersionMajor             : '107'
      LayoutEngineNameVersion              : 'Blink 107'
      LayoutEngineNameVersionMajor         : 'Blink 107'
      AgentClass                           : 'Browser'
      AgentName                            : 'Chrome'
      AgentVersion                         : '107'
      AgentVersionMajor                    : '107'
      AgentNameVersion                     : 'Chrome 107'
      AgentNameVersionMajor                : 'Chrome 107'
      UAClientHintBrands_0_Brand           : 'Google Chrome'
      UAClientHintBrands_0_Version         : '107'
      UAClientHintBrands_1_Brand           : 'Chromium'
      UAClientHintBrands_1_Version         : '107'
      UAClientHintMobile                   : 'false'
      UAClientHintPlatform                 : 'macOS'

- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
      Sec-Ch-Ua                                  : '"Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"'
      Sec-Ch-Ua-Arch                             : '"arm"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"107.0.5304.121"'
      Sec-Ch-Ua-Full-Version-List                : '"Google Chrome";v="107.0.5304.121", "Chromium";v="107.0.5304.121", "Not=A?Brand";v="24.0.0.0"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"macOS"'
      Sec-Ch-Ua-Platform-Version                 : '"12.6.0"'
      Sec-Ch-Ua-Wow64                            : '?0'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Apple Macintosh'
      DeviceBrand                                : 'Apple'
      DeviceCpu                                  : 'ARM'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Mac OS'
      OperatingSystemVersion                     : '12.6.0'
      OperatingSystemVersionMajor                : '12'
      OperatingSystemNameVersion                 : 'Mac OS 12.6.0'
      OperatingSystemNameVersionMajor            : 'Mac OS 12'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '107.0'
      LayoutEngineVersionMajor                   : '107'
      LayoutEngineNameVersion                    : 'Blink 107.0'
      LayoutEngineNameVersionMajor               : 'Blink 107'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Chrome'
      AgentVersion                               : '107.0.5304.121'
      AgentVersionMajor                          : '107'
      AgentNameVersion                           : 'Chrome 107.0.5304.121'
      AgentNameVersionMajor                      : 'Chrome 107'
      UAClientHintArchitecture                   : 'arm'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Google Chrome'
      UAClientHintBrands_0_Version               : '107'
      UAClientHintBrands_1_Brand                 : 'Chromium'
      UAClientHintBrands_1_Version               : '107'
      UAClientHintFullVersion                    : '107.0.5304.121'
      UAClientHintFullVersionList_0_Brand        : 'Google Chrome'
      UAClientHintFullVersionList_0_Version      : '107.0.5304.121'
      UAClientHintFullVersionList_1_Brand        : 'Chromium'
      UAClientHintFullVersionList_1_Version      : '107.0.5304.121'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'macOS'
      UAClientHintPlatformVersion                : '12.6.0'
      UAClientHintWow64                          : 'false'


- test:
    input:
      User-Agent                           : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.52'
      Sec-Ch-Ua                            : '"Microsoft Edge";v="107", "Chromium";v="107", "Not=A?Brand";v="24"'
      Sec-Ch-Ua-Mobile                     : '?0'
      Sec-Ch-Ua-Platform                   : '"Windows"'
    expected:
      DeviceClass                          : 'Desktop'
      DeviceName                           : 'Desktop'
      DeviceBrand                          : 'Unknown'
      DeviceCpu                            : 'Intel x86_64'
      DeviceCpuBits                        : '64'
      OperatingSystemClass                 : 'Desktop'
      OperatingSystemName                  : 'Windows NT'
      OperatingSystemVersion               : '??'
      OperatingSystemVersionMajor          : '??'
      OperatingSystemNameVersion           : 'Windows NT ??'
      OperatingSystemNameVersionMajor      : 'Windows NT ??'
      LayoutEngineClass                    : 'Browser'
      LayoutEngineName                     : 'Blink'
      LayoutEngineVersion                  : '107'
      LayoutEngineVersionMajor             : '107'
      LayoutEngineNameVersion              : 'Blink 107'
      LayoutEngineNameVersionMajor         : 'Blink 107'
      AgentClass                           : 'Browser'
      AgentName                            : 'Edge'
      AgentVersion                         : '107'
      AgentVersionMajor                    : '107'
      AgentNameVersion                     : 'Edge 107'
      AgentNameVersionMajor                : 'Edge 107'
      UAClientHintBrands_0_Brand           : 'Microsoft Edge'
      UAClientHintBrands_0_Version         : '107'
      UAClientHintBrands_1_Brand           : 'Chromium'
      UAClientHintBrands_1_Version         : '107'
      UAClientHintMobile                   : 'false'
      UAClientHintPlatform                 : 'Windows'


- test:
    input:
      User-Agent                                 : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
      Sec-Ch-Ua                                  : '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"'
      Sec-Ch-Ua-Arch                             : '"x86"'
      Sec-Ch-Ua-Bitness                          : '"64"'
      Sec-Ch-Ua-Full-Version                     : '"108.0.5359.72"'
      Sec-Ch-Ua-Full-Version-List                : '"Not?A_Brand";v="8.0.0.0", "Chromium";v="108.0.5359.72", "Google Chrome";v="108.0.5359.72"'
      Sec-Ch-Ua-Mobile                           : '?0'
      Sec-Ch-Ua-Model                            : '""'
      Sec-Ch-Ua-Platform                         : '"Windows"'
      Sec-Ch-Ua-Platform-Version                 : '"0.1.0"'
      Sec-Ch-Ua-Wow64                            : '?0'
    expected:
      DeviceClass                                : 'Desktop'
      DeviceName                                 : 'Desktop'
      DeviceBrand                                : 'Unknown'
      DeviceCpu                                  : 'Intel x86_64'
      DeviceCpuBits                              : '64'
      OperatingSystemClass                       : 'Desktop'
      OperatingSystemName                        : 'Windows NT'
      OperatingSystemVersion                     : '7'
      OperatingSystemVersionMajor                : '7'
      OperatingSystemNameVersion                 : 'Windows 7'
      OperatingSystemNameVersionMajor            : 'Windows 7'
      LayoutEngineClass                          : 'Browser'
      LayoutEngineName                           : 'Blink'
      LayoutEngineVersion                        : '108.0'
      LayoutEngineVersionMajor                   : '108'
      LayoutEngineNameVersion                    : 'Blink 108.0'
      LayoutEngineNameVersionMajor               : 'Blink 108'
      AgentClass                                 : 'Browser'
      AgentName                                  : 'Chrome'
      AgentVersion                               : '108.0.5359.72'
      AgentVersionMajor                          : '108'
      AgentNameVersion                           : 'Chrome 108.0.5359.72'
      AgentNameVersionMajor                      : 'Chrome 108'
      UAClientHintArchitecture                   : 'x86'
      UAClientHintBitness                        : '64'
      UAClientHintBrands_0_Brand                 : 'Chromium'
      UAClientHintBrands_0_Version               : '108'
      UAClientHintBrands_1_Brand                 : 'Google Chrome'
      UAClientHintBrands_1_Version               : '108'
      UAClientHintFullVersion                    : '108.0.5359.72'
      UAClientHintFullVersionList_0_Brand        : 'Chromium'
      UAClientHintFullVersionList_0_Version      : '108.0.5359.72'
      UAClientHintFullVersionList_1_Brand        : 'Google Chrome'
      UAClientHintFullVersionList_1_Version      : '108.0.5359.72'
      UAClientHintMobile                         : 'false'
      UAClientHintPlatform                       : 'Windows'
      UAClientHintPlatformVersion                : '0.1.0'
      UAClientHintWow64                          : 'false'

      LayoutEngineVersion                  : '97.0'
      LayoutEngineVersionMajor             : '97'
      LayoutEngineNameVersion              : 'Blink 97.0'
      LayoutEngineNameVersionMajor         : 'Blink 97'
      AgentVersion                         : '97.0.4692.99'
      AgentVersionMajor                    : '97'
      AgentNameVersion                     : 'Chromium 97.0.4692.99'
      AgentNameVersionMajor                : 'Chromium 97'