diff --git a/mix.exs b/mix.exs index dae50ea535e22d8c5bb9032fe1c72bf6a6fc4455..0b7e667520b0b61b258a2d79c73f3dc63c13fbe8 100644 --- a/mix.exs +++ b/mix.exs @@ -65,7 +65,7 @@ defmodule Plausible.MixProject do {:postgrex, ">= 0.0.0"}, {:ref_inspector, "~> 1.3"}, {:timex, "~> 3.6"}, - {:ua_inspector, "~> 2.2"}, + {:ua_inspector, "~> 3.0"}, {:bamboo, "~> 2.2"}, {:hackney, "~> 1.8"}, {:bamboo_phoenix, "~> 1.0.0"}, diff --git a/mix.lock b/mix.lock index a556a16ed1423ac31cbdd9f73e05654a047be802..2ce2bd6c043b9531cf648d9b103316acfe3fe6bb 100644 --- a/mix.lock +++ b/mix.lock @@ -7,7 +7,7 @@ "bcrypt_elixir": {:hex, :bcrypt_elixir, "2.3.0", "6cb662d5c1b0a8858801cf20997bd006e7016aa8c52959c9ef80e0f34fb60b7a", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "2c81d61d4f6ed0e5cf7bf27a9109b791ff216a1034b3d541327484f46dd43769"}, "bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"}, "cachex": {:hex, :cachex, "3.4.0", "868b2959ea4aeb328c6b60ff66c8d5123c083466ad3c33d3d8b5f142e13101fb", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:jumper, "~> 1.0", [hex: :jumper, repo: "hexpm", optional: false]}, {:sleeplocks, "~> 1.1", [hex: :sleeplocks, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm", "370123b1ab4fba4d2965fb18f87fd758325709787c8c5fce35b3fe80645ccbe5"}, - "certifi": {:hex, :certifi, "2.8.0", "d4fb0a6bb20b7c9c3643e22507e42f356ac090a1dcea9ab99e27e0376d695eba", [:rebar3], [], "hexpm", "6ac7efc1c6f8600b08d625292d4bbf584e14847ce1b6b5c44d983d273e1097ea"}, + "certifi": {:hex, :certifi, "2.9.0", "6f2a475689dd47f19fb74334859d460a2dc4e3252a3324bd2111b8f0429e7e21", [:rebar3], [], "hexpm", "266da46bdb06d6c6d35fde799bcb28d36d985d424ad7c08b5bb48f5b5cdd4641"}, "chatterbox": {:hex, :ts_chatterbox, "0.11.0", "b8f372c706023eb0de5bf2976764edb27c70fe67052c88c1f6a66b3a5626847f", [:rebar3], [{:hpack, "~>0.2.3", [hex: :hpack_erl, repo: "hexpm", optional: false]}], "hexpm", "722fe2bad52913ab7e87d849fc6370375f0c961ffb2f0b5e6d647c9170c382a6"}, "clickhouse_ecto": {:git, "https://github.com/plausible/clickhouse_ecto.git", "7bc94cce111d3e9dbd8534fe96bd5195181826a2", []}, "clickhousex": {:git, "https://github.com/plausible/clickhousex", "f030155234ad045a08a9fdc263f471dd4cfea350", []}, @@ -44,7 +44,7 @@ "gettext": {:hex, :gettext, "0.18.2", "7df3ea191bb56c0309c00a783334b288d08a879f53a7014341284635850a6e55", [:mix], [], "hexpm", "f9f537b13d4fdd30f3039d33cb80144c3aa1f8d9698e47d7bcbcc8df93b1f5c5"}, "gproc": {:hex, :gproc, "0.8.0", "cea02c578589c61e5341fce149ea36ccef236cc2ecac8691fba408e7ea77ec2f", [:rebar3], [], "hexpm", "580adafa56463b75263ef5a5df4c86af321f68694e7786cb057fd805d1e2a7de"}, "grpcbox": {:hex, :grpcbox, "0.14.0", "3eb321bcd2275baf8b54cf381feb7b0559a50c02544de28fda039c7f2f9d1a7a", [:rebar3], [{:acceptor_pool, "~>1.0.0", [hex: :acceptor_pool, repo: "hexpm", optional: false]}, {:chatterbox, "~>0.11.0", [hex: :ts_chatterbox, repo: "hexpm", optional: false]}, {:ctx, "~>0.6.0", [hex: :ctx, repo: "hexpm", optional: false]}, {:gproc, "~>0.8.0", [hex: :gproc, repo: "hexpm", optional: false]}], "hexpm", "e24159b7b6d3f9869bbe528845c0125fed2259366ba908fd04a1f45fe81d0660"}, - "hackney": {:hex, :hackney, "1.18.0", "c4443d960bb9fba6d01161d01cd81173089686717d9490e5d3606644c48d121f", [:rebar3], [{:certifi, "~>2.8.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "9afcda620704d720db8c6a3123e9848d09c87586dc1c10479c42627b905b5c5e"}, + "hackney": {:hex, :hackney, "1.18.1", "f48bf88f521f2a229fc7bae88cf4f85adc9cd9bcf23b5dc8eb6a1788c662c4f6", [:rebar3], [{:certifi, "~>2.9.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a4ecdaff44297e9b5894ae499e9a070ea1888c84afdd1fd9b7b2bc384950128e"}, "hammer": {:hex, :hammer, "6.0.0", "72ec6fff10e9d63856968988a22ee04c4d6d5248071ddccfbda50aa6c455c1d7", [:mix], [{:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}], "hexpm", "d8e1ec2e534c4aae508b906759e077c3c1eb3e2b9425235d4b7bbab0b016210a"}, "hpack": {:hex, :hpack_erl, "0.2.3", "17670f83ff984ae6cd74b1c456edde906d27ff013740ee4d9efaa4f1bf999633", [:rebar3], [], "hexpm", "06f580167c4b8b8a6429040df36cc93bba6d571faeaec1b28816523379cbb23a"}, "html_entities": {:hex, :html_entities, "0.5.2", "9e47e70598da7de2a9ff6af8758399251db6dbb7eebe2b013f2bbd2515895c3c", [:mix], [], "hexpm", "c53ba390403485615623b9531e97696f076ed415e8d8058b1dbaa28181f4fdcc"}, @@ -89,8 +89,8 @@ "telemetry_registry": {:hex, :telemetry_registry, "0.3.0", "6768f151ea53fc0fbca70dbff5b20a8d663ee4e0c0b2ae589590e08658e76f1e", [:mix, :rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "492e2adbc609f3e79ece7f29fec363a97a2c484ac78a83098535d6564781e917"}, "timex": {:hex, :timex, "3.7.6", "502d2347ec550e77fdf419bc12d15bdccd31266bb7d925b30bf478268098282f", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "a296327f79cb1ec795b896698c56e662ed7210cc9eb31f0ab365eb3a62e2c589"}, "tzdata": {:hex, :tzdata, "1.1.0", "72f5babaa9390d0f131465c8702fa76da0919e37ba32baa90d93c583301a8359", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "18f453739b48d3dc5bcf0e8906d2dc112bb40baafe2c707596d89f3c8dd14034"}, - "ua_inspector": {:hex, :ua_inspector, "2.2.0", "7b737d7668a10c6a380c949e3d93acc992df51f77cc2659a6352dafc8b6fb09c", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:yamerl, "~> 0.7", [hex: :yamerl, repo: "hexpm", optional: false]}], "hexpm", "1701dcfd81c00d5ec1322a0f609b93260f5de85317ed1afb2e11917a52748958"}, + "ua_inspector": {:hex, :ua_inspector, "3.0.1", "649e68e31296a7bc39204e84b13a14c245b61df43fde0dd91ef784a98ecb04d4", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:yamerl, "~> 0.7", [hex: :yamerl, repo: "hexpm", optional: false]}], "hexpm", "b510ce5a5fd70a37bf5eab8008a25fc57388ea240b95bb4d98fc892648f9b916"}, "unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"}, "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm", "6c7729a2d214806450d29766abc2afaa7a2cbecf415be64f36a6691afebb50e5"}, - "yamerl": {:hex, :yamerl, "0.8.1", "07da13ffa1d8e13948943789665c62ccd679dfa7b324a4a2ed3149df17f453a4", [:rebar3], [], "hexpm", "96cb30f9d64344fed0ef8a92e9f16f207de6c04dfff4f366752ca79f5bceb23f"}, + "yamerl": {:hex, :yamerl, "0.10.0", "4ff81fee2f1f6a46f1700c0d880b24d193ddb74bd14ef42cb0bcf46e81ef2f8e", [:rebar3], [], "hexpm", "346adb2963f1051dc837a2364e4acf6eb7d80097c0f53cbdc3046ec8ec4b4e6e"}, } diff --git a/priv/ua_inspector/bot.bots.yml b/priv/ua_inspector/bot.bots.yml index d27a15da498e893f758d0f7dd496e5b56ae6664f..1df529db991d2aee3a86e974b21daa2867d44e50 100644 --- a/priv/ua_inspector/bot.bots.yml +++ b/priv/ua_inspector/bot.bots.yml @@ -5,10 +5,10 @@ # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later ############### -- regex: '360Spider(-Image|-Video)?' +- regex: '360Spider' name: '360Spider' category: 'Search bot' - url: 'http://www.so.com/help/help_3_2.html' + url: 'https://www.so.com/help/help_3_2.html' producer: name: 'Online Media Group, Inc.' url: '' @@ -40,26 +40,42 @@ - regex: 'AhrefsBot' name: 'aHrefs Bot' category: 'Crawler' - url: 'http://ahrefs.com/robot' + url: 'https://ahrefs.com/robot' producer: name: 'Ahrefs Pte Ltd' - url: 'http://ahrefs.com/robot' + url: 'https://ahrefs.com/robot' + +- regex: 'AhrefsSiteAudit/([\d+.]+)' + name: 'AhrefsSiteAudit' + category: 'Site Monitor' + url: 'https://ahrefs.com/robot/site-audit' + producer: + name: 'Ahrefs Pte Ltd' + url: 'https://ahrefs.com/' - regex: 'ia_archiver|alexabot|verifybot' name: 'Alexa Crawler' category: 'Search bot' - url: 'https://alexa.zendesk.com/hc/en-us/sections/200100794-Crawlers' + url: 'https://support.alexa.com/hc/en-us/sections/200100794-Crawlers' producer: name: 'Alexa Internet' - url: 'http://www.alexa.com' + url: 'https://www.alexa.com' - regex: 'alexa site audit' name: 'Alexa Site Audit' category: 'Site Monitor' - url: 'http://www.alexa.com/help/webmasters' + url: 'https://support.alexa.com/hc/en-us/articles/200450194' producer: name: 'Alexa Internet' - url: 'http://www.alexa.com' + url: 'https://www.alexa.com' + +- regex: 'Amazonbot' + name: 'Amazon Bot' + category: 'Crawler' + url: 'https://developer.amazon.com/support/amazonbot' + producer: + name: 'Amazon.com, Inc.' + url: 'https://www.amazon.com/' - regex: 'Amazon[ -]Route ?53[ -]Health[ -]Check[ -]Service' name: 'Amazon Route53 Health Check' @@ -82,23 +98,31 @@ url: 'https://httpd.apache.org/docs/2.4/programs/ab.html' producer: name: 'The Apache Software Foundation' - url: 'http://www.apache.org/foundation/' + url: 'https://www.apache.org/foundation/' - regex: 'Applebot' name: 'Applebot' category: 'Crawler' - url: 'http://www.apple.com/go/applebot' + url: 'https://support.apple.com/en-us/HT204683' producer: name: 'Apple Inc' - url: 'http://www.apple.com' + url: 'https://www.apple.com' + +- regex: "AppSignalBot" + name: "AppSignalBot" + category: "Site Monitor" + url: "https://docs.appsignal.com/uptime-monitoring/" + producer: + name: "AppSignal" + url: "https://appsignal.com/" - regex: 'Arachni' name: 'Arachni' category: 'Security Checker' - url: 'http://www.arachni-scanner.com' + url: 'https://www.arachni-scanner.com/' producer: name: 'Sarosys LLC' - url: 'http://www.sarosys.com/' + url: 'https://www.sarosys.com/' - regex: 'AspiegelBot' name: 'AspiegelBot' @@ -112,7 +136,7 @@ name: 'Castro 2' category: 'Service Agent' url: 'http://supertop.co/castro/' - producer: + producer: name: 'Supertop' url: 'http://supertop.co' @@ -127,10 +151,10 @@ - regex: 'archive\.org_bot|special_archiver' name: 'archive.org bot' category: 'Crawler' - url: 'http://www.archive.org/details/archive.org_bot' + url: 'https://archive.org/details/archive.org_bot' producer: name: 'The Internet Archive' - url: 'http://www.archive.org' + url: 'https://archive.org' - regex: 'Ask Jeeves/Teoma' name: 'Ask Jeeves' @@ -156,7 +180,7 @@ name: '2.0Promotion GbR' url: 'http://www.backlinktest.com' -- regex: 'baiduspider(-image)?|baidu Transcoder|baidu.*spider' +- regex: 'Baidu.*spider|baidu Transcoder' name: 'Baidu Spider' category: 'Search bot' url: 'http://www.baidu.com/search/spider.htm' @@ -172,6 +196,14 @@ name: '' url: '' +- regex: 'Better Uptime Bot' + name: 'Better Uptime Bot' + category: 'Site Monitor' + url: 'https://betteruptime.com/faq' + producer: + name: 'Better Uptime' + url: 'https://betteruptime.com/' + - regex: 'MSNBot|msrbot|bingbot|BingPreview|msnbot-(UDiscovery|NewsBlogs)|adidxbot' name: 'BingBot' category: 'Search bot' @@ -188,7 +220,7 @@ name: 'Blekko' url: 'http://blekko.com' -- regex: 'BLEXBot(Test)?' +- regex: 'BLEXBot' name: 'BLEXBot Crawler' category: 'Crawler' url: 'http://webmeup-crawler.com' @@ -217,7 +249,7 @@ category: 'Crawler' producer: name: 'BoardReader' - url: 'http://boardreader.com/' + url: 'https://boardreader.com/' - regex: 'BountiiBot' name: 'Bountii Bot' @@ -283,6 +315,14 @@ name: 'CloudFlare' url: 'http://www.cloudflare.com' +- regex: 'CloudflareDiagnostics' + name: 'Cloudflare Diagnostics' + category: 'Site Monitor' + url: 'https://www.cloudflare.com/' + producer: + name: 'Cloudflare' + url: 'https://www.cloudflare.com' + - regex: 'CloudFlare-AlwaysOnline' name: 'CloudFlare Always Online' category: 'Site Monitor' @@ -291,7 +331,7 @@ name: 'CloudFlare' url: 'http://www.cloudflare.com' -- regex: 'coccoc|coccocbot(-ads|-fast|-image|-shopping|-web)?' +- regex: 'coccoc.com' name: 'Cốc Cốc Bot' url: 'https://help.coccoc.com/en/search-engine/coccoc-robots' category: 'Search bot' @@ -339,7 +379,6 @@ name: 'Datanyze' url: 'https://www.datanyze.com' - - regex: 'Dataprovider' name: 'Dataprovider' category: 'Crawler' @@ -364,7 +403,7 @@ name: 'DAZOO.FR' url: 'http://dazoo.fr' -- regex: 'discobot(-news)?' +- regex: 'discobot' name: 'Discobot' category: 'Search bot' url: 'http://discoveryengine.com/discobot.html' @@ -427,7 +466,7 @@ name: 'eVenture Capital Partners II, LLC' url: 'http://www.eventures.vc/' -- regex: 'Exabot(-Thumbnails|-Images)?|ExaleadCloudview' +- regex: 'Exabot|ExaleadCloudview' name: 'ExaBot' category: 'Crawler' url: 'http://www.exabot.com/go/robot' @@ -451,7 +490,7 @@ name: 'SEOmoz, Inc.' url: 'http://moz.com/' -- regex: 'facebookexternalhit|facebookplatform|facebookexternalua' +- regex: 'facebookexternalhit|facebookplatform|facebookexternalua|facebookcatalog' name: 'Facebook External Hit' category: 'Social Media Agent' url: 'https://www.facebook.com/externalhit_uatext.php' @@ -483,7 +522,7 @@ name: 'David Smith & Developing Perspective, LLC' url: 'https://david-smith.org' -- regex: '(Meta)?Feedly(Bot|App)?' +- regex: 'Feedly' name: 'Feedly' url: 'http://www.feedly.com' category: 'Feed Fetcher' @@ -549,6 +588,10 @@ name: '' url: '' +- regex: 'gobuster' + name: 'Gobuster' + url: 'https://github.com/OJ/gobuster' + - regex: 'ichiro/mobile goo' name: 'Goo' category: 'Search bot' @@ -557,6 +600,10 @@ name: 'NTT Resonant' url: 'http://goo.ne.jp' +- regex: 'Storebot-Google' + name: 'Google StoreBot' + category: 'Crawler' + - regex: 'Google Favicon' name: 'Google Favicon' category: 'Crawler' @@ -649,7 +696,7 @@ name: 'Visual Meta' url: 'https://www.shopalike.cz/' -- regex: 'AdsBot-Google(-Mobile)?|Adwords-(DisplayAds|Express|Instant)|Google Web Preview|Google[ -]Publisher[ -]Plugin|Google-(Adwords|AMPHTML|Assess|HotelAdsVerifier|Read-Aloud|Shopping-Quality|Site-Verification|speakr|Test|Youtube-Links)|(APIs|DuplexWeb|Feedfetcher|Mediapartners)-Google|Googlebot(-Mobile|-Image|-Video|-News)?|GoogleProducer|Google.*/\+/web/snippet' +- regex: 'AdsBot-Google|Adwords-(DisplayAds|Express|Instant)|Google Web Preview|Google[ -]Publisher[ -]Plugin|Google-(Ads-Conversions|Ads-Qualify|Adwords|AMPHTML|Assess|HotelAdsVerifier|Read-Aloud|Shopping-Quality|Site-Verification|speakr|Stale-Content-Probe|Test|Youtube-Links)|(APIs|DuplexWeb|Feedfetcher|Mediapartners)-Google|Googlebot|Google(?:AssociationService|Producer)|Google.*/\+/web/snippet' name: 'Googlebot' category: 'Search bot' url: 'http://www.google.com/bot.html' @@ -663,7 +710,7 @@ url: 'https://webarchive.jira.com/wiki/display/Heritrix/Heritrix' producer: name: 'The Internet Archive' - url: 'http://www.archive.org' + url: 'https://archive.org' - regex: 'HubSpot ' name: 'HubSpot' @@ -672,7 +719,6 @@ name: 'HubSpot Inc.' url: 'https://www.hubspot.com' - - regex: 'HTTPMon' name: 'HTTPMon' category: 'Site Monitor' @@ -704,7 +750,7 @@ - regex: 'ips-agent' name: 'IPS Agent' - category: 'crawler' + category: 'Crawler' producer: name: 'VeriSign, Inc' url: 'http://www.verisign.com/' @@ -717,6 +763,10 @@ name: '' url: 'https://ip-guide.com' +- regex: 'k6/[0-9\.]+' + name: 'K6' + url: 'https://k6.io/' + - regex: 'kouio' name: 'Kouio' url: 'http://kouio.com/' @@ -741,7 +791,7 @@ name: 'Lighthouse' url: 'https://developers.google.com/web/tools/lighthouse' -- regex: 'linkdexbot(-mobile)?|linkdex\.com' +- regex: 'linkdexbot|linkdex\.com' name: 'Linkdex Bot' category: 'Search bot' url: 'http://www.linkdex.com/bots' @@ -764,7 +814,7 @@ name: '' url: '' -- regex: 'Mail\.RU(_Bot)?' +- regex: 'Mail\.RU' name: 'Mail.Ru Bot' category: 'Search bot' url: 'http://help.mail.ru/webmaster/indexing/robots/types_robots' @@ -788,7 +838,7 @@ name: '' url: '' -- regex : 'masscan' +- regex: 'masscan' name: 'masscan' url: 'https://github.com/robertdavidgraham/masscan' category: 'Crawler' @@ -941,12 +991,12 @@ category: 'Crawler' producer: name: 'Nuzzel' - url: https://www.nuzzel.com/ + url: 'https://www.nuzzel.com/' - regex: 'Octopus [0-9]' name: 'Octopus' -- regex: 'omgili(?:bot)?' +- regex: 'omgili' name: 'Omgili bot' category: 'Search bot' url: 'http://www.omgili.com/Crawler.html' @@ -1031,7 +1081,7 @@ name: 'Paessler AG' url: 'https://www.paessler.com' -- regex: 'psbot(-page)?' +- regex: 'psbot' name: 'Picsearch bot' category: 'Search bot' url: 'http://www.picsearch.com/bot.html' @@ -1039,7 +1089,7 @@ name: 'Picsearch' url: 'http://www.picsearch.com' -- regex: 'Pingdom\.com' +- regex: 'Pingdom(?:\.com|TMS)' name: 'Pingdom Bot' category: 'Site Monitor' url: '' @@ -1055,6 +1105,14 @@ name: 'Quora' url: 'http://www.quora.com' +- regex: 'Quora-Bot' + name: 'Quora Bot' + category: 'Crawler' + url: '' + producer: + name: 'Quora' + url: 'https://www.quora.com/' + - regex: 'RamblerMail' name: 'RamblerMail Image Proxy' category: 'Crawler' @@ -1283,6 +1341,14 @@ name: 'Tencent Holdings' url: 'http://www.soso.com' +- regex: 'Sprinklr' + name: 'Sprinklr' + category: 'Crawler' + url: '' + producer: + name: 'Sprinklr, Inc.' + url: 'https://www.sprinklr.com/' + - regex: 'sqlmap/' name: 'sqlmap' category: 'Security Checker' @@ -1328,13 +1394,20 @@ name: 'Tailrank Inc' url: 'http://spinn3r.com' -- regex: 'Sputnik(Image)?Bot' +- regex: 'SputnikBot' name: 'Sputnik Bot' - category: '' + category: 'Crawler' + url: '' + +- regex: 'SputnikFaviconBot' + name: 'Sputnik Favicon Bot' + category: 'Crawler' + url: '' + +- regex: 'SputnikImageBot' + name: 'Sputnik Image Bot' + category: 'Crawler' url: '' - producer: - name: '' - url: '' - regex: 'SurveyBot' name: 'Survey Bot' @@ -1553,7 +1626,7 @@ category: 'Site Monitor' url: 'https://www.webpagetest.org' -- regex: 'WeSEE(:Search)?' +- regex: 'WeSEE' name: 'WeSEE:Search' category: 'Search bot' url: 'http://www.wesee.com/bot' @@ -1625,6 +1698,14 @@ name: 'Yahoo! Inc.' url: 'http://www.yahoo.com' +- regex: 'YahooMailProxy' + name: 'Yahoo! Mail Proxy' + category: 'Service Agent' + url: 'https://help.yahoo.com/kb/yahoo-mail-proxy-SLN28749.html' + producer: + name: 'Yahoo! Inc.' + url: 'http://www.yahoo.com' + - regex: 'YahooCacheSystem' name: 'Yahoo! Cache System' category: 'Crawler' @@ -1641,7 +1722,7 @@ name: 'Yahoo! Japan Corp.' url: 'https://www.yahoo.co.jp/' -- regex: 'Yandex(SpravBot|ScreenshotBot|MobileBot|AccessibilityBot|ForDomain|Vertis|Market|Catalog|Calendar|Sitelinks|AdNet|Pagechecker|Webmaster|Media|Video|Bot|Images|Antivirus|Direct|Blogs|Favicons|ImageResizer|Verticals|News(links)?|Metrika|\.Gazeta Bot)|YaDirectFetcher|YandexTurbo|YandexTracker|YandexSearchShop|YandexRCA|YandexPartner|YandexOntoDBAPI|YandexOntoDB|YandexMobileScreenShotBot' +- regex: 'Yandex(SpravBot|ScreenshotBot|MobileBot|AccessibilityBot|ForDomain|Vertis|Market|Catalog|Calendar|Sitelinks|AdNet|Pagechecker|Webmaster|Media|Video|Bot|Images|Antivirus|Direct|Blogs|Favicons|ImageResizer|Verticals|News|Metrika|\.Gazeta Bot)|YaDirectFetcher|YandexTurbo|YandexTracker|YandexSearchShop|YandexRCA|YandexPartner|YandexOntoDBAPI|YandexOntoDB|YandexMobileScreenShotBot' name: 'Yandex Bot' category: 'Search bot' url: 'http://www.yandex.com/bots' @@ -1649,7 +1730,7 @@ name: 'Yandex LLC' url: 'http://company.yandex.com' -- regex: 'Yeti|NaverJapan' +- regex: 'Yeti|NaverJapan|AdsBot-Naver' name: 'Yeti/Naverbot' category: 'Search bot' url: 'http://help.naver.com/robots/' @@ -1726,18 +1807,18 @@ - regex: 'HubPages.*crawlingpolicy' name: 'HubPages' category: 'Crawler' - url: 'http://hubpages.com/help/crawlingpolicy' + url: 'https://hubpages.com/help/crawlingpolicy' producer: - name: 'HubPages' - url: 'http://hubpages.com/' + name: 'HubPages, Inc.' + url: 'https://discover.hubpages.com/' - regex: 'Pinterest(bot)?/\d\.\d.*www\.pinterest\.com.*' name: 'Pinterest' - url: 'http://www.pinterest.com/bot.html' + url: 'https://help.pinterest.com/en/business/article/pinterest-crawler' category: 'Crawler' producer: name: 'Pinterest' - url: 'http://www.pinterest.com/' + url: 'https://www.pinterest.com/' - regex: 'Site24x7' name: 'Site24x7 Website Monitoring' @@ -1755,6 +1836,14 @@ name: 'Snapchat Inc.' url: 'https://www.snapchat.com' +- regex: 'Snap URL Preview Service' + name: 'Snap URL Preview Service' + category: 'Service Agent' + url: 'https://developers.snap.com/robots' + producer: + name: 'Snapchat Inc.' + url: 'https://www.snapchat.com/' + - regex: "Let's Encrypt validation server" name: "Let's Encrypt Validation" category: 'Service Agent' @@ -1779,13 +1868,13 @@ name: 'Monitor.Us' url: 'http://www.monitor.us' -- regex: 'Catchpoint( bot)?' +- regex: 'Catchpoint' name: 'Catchpoint' category: 'Site Monitor' - url: '' + url: 'https://www.catchpoint.com/' producer: name: 'Catchpoint Systems' - url: 'http://www.catchpoint.com/' + url: 'https://www.catchpoint.com/' - regex: 'bitlybot' name: 'BitlyBot' @@ -1853,7 +1942,7 @@ - regex: 'RSSRadio \(Push Notification Scanner;support@dorada\.co\.uk\)' name: 'RSSRadio Bot' -- regex: '(A6-Indexer|nuhk|TsolCrawler|Yammybot|Openbot|Gulper Web Bot|grub-client|Download Demon|SearchExpress|Microsoft URL Control|borg|altavista|dataminr.com|tweetedtimes.com|TrendsmapResolver|teoma|blitzbot|oegp|furlbot|http%20client|polybot|htdig|mogimogi|larbin|scrubby|searchsight|seekbot|semanticdiscovery|snappy|vortex(?! Build)|zeal|fast-webcrawler|converacrawler|dataparksearch|findlinks|BrowserMob|HttpMonitor|ThumbShotsBot|URL2PNG|ZooShot|GomezA|Google SketchUp|Read%20Later|RackspaceBot|robots|SeopultContentAnalyzer|7Siters|centuryb.o.t9)' +- regex: '(A6-Indexer|nuhk|TsolCrawler|Yammybot|Openbot|Gulper Web Bot|grub-client|Download Demon|SearchExpress|Microsoft URL Control|borg|altavista|dataminr.com|tweetedtimes.com|TrendsmapResolver|teoma|blitzbot|oegp|furlbot|http%20client|polybot|htdig|mogimogi|larbin|scrubby|searchsight|seekbot|semanticdiscovery|snappy|vortex(?!(?: Build|Plus))|zeal|fast-webcrawler|converacrawler|dataparksearch|findlinks|BrowserMob|HttpMonitor|ThumbShotsBot|URL2PNG|ZooShot|GomezA|Google SketchUp|Read%20Later|RackspaceBot|robots|SeopultContentAnalyzer|7Siters|centuryb.o.t9|InterNaetBoten|EasyBib AutoCite|Bidtellect|tomnomnom/meg|My User Agent|cortex|CF-UC User Agent|Re-re Studio|adreview|AHC/|NameOfAgent|Request-Promise)' name: 'Generic Bot' - regex: '^sentry' @@ -1963,10 +2052,10 @@ - regex: 'BoardReader Favicon Fetcher' name: 'BoardReader' category: 'Search bot' - url: 'http://boardreader.com/' + url: 'https://boardreader.com/' producer: name: 'Effyis Inc' - url: 'http://boardreader.com/' + url: 'https://boardreader.com/' - regex: 'IDG/IT' name: 'IDG/IT' @@ -2011,7 +2100,7 @@ - regex: 'oBot' name: 'oBot' category: 'Search bot' - url: 'http://www.xforce-security.com/crawler/' + url: 'https://www.xforce-security.com/crawler/' producer: name: 'IBM Germany Research & Development GmbH' url: 'https://exchange.xforce.ibmcloud.com/' @@ -2054,7 +2143,7 @@ url: 'https://nutch.apache.org' producer: name: 'The Apache Software Foundation' - url: 'http://www.apache.org/foundation/' + url: 'https://www.apache.org/foundation/' - regex: 'Seobility' name: 'Seobility' @@ -2069,7 +2158,7 @@ - regex: 'Grammarly' name: 'Grammarly' category: 'Service bot' - url: 'http://www.grammarly.com' + url: 'https://www.grammarly.com' - regex: 'Robozilla' name: 'Robozilla' @@ -2088,7 +2177,7 @@ - regex: 'SerendeputyBot' name: 'Serendeputy Bot' category: 'Crawler' - url: 'http://serendeputy.com/about/serendeputy-bot' + url: 'https://serendeputy.com/about/serendeputy-bot' - regex: 'ias-va.*admantx.*service-fetcher' name: 'ADmantX Service Fetcher' @@ -2110,7 +2199,512 @@ category: 'Crawler' url: 'http://www.exensa.com/crawl' -# Generic detections +- regex: 'BDCbot' + name: 'BDCbot' + category: 'Crawler' + url: 'https://bigweb.bigdatacorp.com.br/pages/faq.aspx' + producer: + name: 'BIG Data Solucoes Em Tecnologia de Informatica LTDA' + url: 'https://bigdatacorp.com.br/' + +- regex: 'adbeat' + name: 'Adbeat' + category: 'Crawler' + url: 'https://www.adbeat.com/operation_policy' + producer: + name: 'PPC Labs LLC' + url: 'https://www.adbeat.com/' + +- regex: 'BW/(?:(\d+[\.\d]+))' + name: 'BuiltWith' + category: 'Crawler' + url: 'https://builtwith.com/biup' + producer: + name: 'BuiltWith Pty Ltd' + url: 'https://builtwith.com/' + +- regex: 'https://whatis.contentkingapp.com' + name: 'ContentKing' + category: 'Site Monitor' + url: 'https://whatis.contentkingapp.com/' + producer: + name: 'ContentKing BV' + url: 'https://www.contentkingapp.com/' + +- regex: 'MicroAdBot' + name: 'MicroAdBot' + category: 'Crawler' + url: 'https://www.microad.co.jp/' + producer: + name: 'MicroAd, Inc.' + url: 'https://www.microad.co.jp/' + +- regex: 'PingAdmin.Ru' + name: 'PingAdmin.Ru' + category: 'Site Monitor' + url: 'https://ping-admin.ru/' + +- regex: 'notifyninja.+monitoring' + name: 'Notify Ninja' + category: 'Site Monitor' + url: 'http://notifyninja.com' + +- regex: 'WebDataStats' + name: 'WebDataStats' + category: 'Crawler' + url: 'https://webdatastats.com/policy.html' + producer: + name: 'WebTehRazrabotka LLC' + url: 'https://webdatastats.com/' + +- regex: 'parse.ly scraper' + name: 'parse.ly' + category: 'Crawler' + url: 'https://www.parse.ly/help/integration/crawler' + producer: + name: 'Parsely, Inc.' + url: 'https://www.parse.ly/' + +- regex: 'Nimbostratus-Bot' + name: 'Nimbostratus Bot' + category: 'Site Monitor' + url: 'http://cloudsystemnetworks.com' + +- regex: 'HeartRails_Capture/\d' + name: 'Heart Rails Capture' + category: 'Service Agent' + url: 'http://capture.heartrails.com' + +- regex: 'Project-Resonance' + name: 'Project Resonance' + category: 'Crawler' + url: 'http://project-resonance.com' + +- regex: 'DataXu/\d' + name: 'DataXu' + category: 'Service Agent' + url: 'https://advertising.roku.com/dataxu' + producer: + name: 'Roku, Inc.' + url: 'https://roku.com' + +- regex: 'Cocolyzebot' + name: 'Cocolyzebot' + category: 'Crawler' + url: 'https://cocolyze.com/en/cocolyzebot' + producer: + name: 'VSI INNOVATION SAS' + url: 'https://vsi-innovation.com/' + +- regex: 'veryhip' + name: 'VeryHip' + category: 'Crawler' + url: 'https://veryhip.com/' + producer: + name: 'VeryHip' + url: 'https://veryhip.com/' + +- regex: 'LinkpadBot' + name: 'LinkpadBot' + category: 'Crawler' + url: 'https://www.linkpad.org/' + producer: + name: 'Solomono LLC' + url: 'https://www.linkpad.org/' -- regex: '[a-z0-9\-_]*((?<!cu|power[ _]|m[ _])bot(?![ _]TAB|[ _]?5[0-9])|crawler|crawl|checker|archiver|transcoder|spider)([^a-z]|$)' +- regex: 'MuscatFerret' + name: 'MuscatFerret' + category: 'Crawler' + url: 'http://www.webtop.com/' + +- regex: 'PageThing.com' + name: 'PageThing' + category: 'Crawler' + url: 'https://www.pagething.com/' + producer: + name: 'SPECIALNOISE LTD' + url: 'https://www.specialnoise.com/' + +- regex: 'ArchiveBox' + name: 'ArchiveBox' + url: 'https://archivebox.io/' + category: 'Crawler' + producer: + name: '' + url: '' + +- regex: 'Choosito' + name: 'Choosito' + url: 'https://www.choosito.com/' + category: 'Crawler' + producer: + name: 'Choosito! Inc.' + url: 'https://www.choosito.com/' + +- regex: 'datagnionbot' + name: 'datagnionbot' + url: 'https://www.datagnion.com/bot.html' + category: 'Crawler' + producer: + name: 'DATAGNION GMBH' + url: 'https://www.datagnion.com/' + +- regex: 'WhatCMS' + name: 'WhatCMS' + url: 'https://whatcms.org/' + category: 'Crawler' + producer: + name: 'Nineteen Ten LLC' + url: 'https://whatcms.org/' + +- regex: 'httpx' + name: 'httpx' + url: 'https://github.com/projectdiscovery/httpx' + category: 'Crawler' + producer: + name: '' + url: '' + +- regex: 'scaninfo@expanseinc.com' + name: 'Expanse' + category: 'Security Checker' + url: 'https://expanse.co/' + producer: + name: 'Expanse Inc.' + url: 'https://expanse.co/' + +- regex: 'HuaweiWebCatBot' + name: 'HuaweiWebCatBot' + category: 'Crawler' + url: 'https://isecurity.huawei.com' + producer: + name: 'Huawei Technologies Co., Ltd.' + url: 'https://huawei.com' + +- regex: 'Hatena-Favicon' + name: 'Hatena Favicon' + category: 'Crawler' + url: 'https://www.hatena.ne.jp/faq/' + producer: + name: 'Hatena Co., Ltd.' + url: 'https://www.hatena.ne.jp' + +- regex: 'RyowlEngine/(\d+)' + name: 'Ryowl' + category: 'Crawler' + url: 'https://ryowl.org' + +- regex: 'OdklBot/(\d+)' + name: 'Odnoklassniki Bot' + category: 'Crawler' + url: 'https://odnoklassniki.ru' + +- regex: 'Mediatoolkitbot' + name: 'Mediatoolkit Bot' + category: 'Crawler' + url: 'https://mediatoolkit.com' + +- regex: 'ZoominfoBot' + name: 'ZoominfoBot' + category: 'Crawler' + url: 'https://www.zoominfo.com' + +- regex: 'WeViKaBot/([\d+\.])' + name: 'WeViKaBot' + category: 'Crawler' + url: 'http://www.wevika.de' + +- regex: 'SEOkicks' + name: 'SEOkicks' + category: 'Crawler' + url: 'https://www.seokicks.de/robot.html' + +- regex: 'Plukkie/([\d+\.])' + name: 'Plukkie' + category: 'Crawler' + url: 'http://www.botje.com/plukkie.htm' + +- regex: 'proximic;' + name: 'Comscore' + category: 'Crawler' + url: 'https://www.comscore.com/Web-Crawler' + +- regex: 'SurdotlyBot/([\d+\.])' + name: 'SurdotlyBot' + category: 'Crawler' + url: 'http://sur.ly/bot.html' + +- regex: 'Gowikibot/([\d+\.])' + name: 'Gowikibot' + category: 'Crawler' + url: 'http:/www.gowikibot.com' + +- regex: 'SabsimBot/([\d+\.])' + name: 'SabsimBot' + category: 'Crawler' + url: 'https://sabsim.com' + +- regex: 'LumtelBot/([\d+\.])' + name: 'LumtelBot' + category: 'Crawler' + url: 'https://umtel.com' + +- regex: 'PiplBot' + name: 'PiplBot' + category: 'Crawler' + url: 'http://www.pipl.com/bot' + +- regex: 'woobot/([\d+\.])' + name: 'WooRank' + category: 'Crawler' + url: 'https://www.woorank.com/bot' + +- regex: 'Cookiebot/([\d+\.])' + name: 'Cookiebot' + category: 'Crawler' + url: 'https://support.cookiebot.com/hc/en-us/articles/360014264140-Scanner-User-Agent' + producer: + name: 'Cybot A/S' + url: 'https://www.cybot.com/' + +- regex: 'NetSystemsResearch' + name: 'NetSystemsResearch' + category: 'Security Checker' + url: 'https://www.netsystemsresearch.com/' + producer: + name: 'NET SYSTEMS RESEARCH LLC' + url: 'https://www.netsystemsresearch.com/' + +- regex: 'CensysInspect/([\d+\.])' + name: 'CensysInspect' + category: 'Security Checker' + url: 'https://about.censys.io/' + producer: + name: 'Censys, Inc.' + url: 'https://censys.io/' + +- regex: 'gdnplus.com' + name: 'GDNP' + category: 'Crawler' + url: 'https://gdnplus.com/' + producer: + name: 'Global Digital Network Plus, LLC' + url: 'https://gdnplus.com/' + +- regex: 'WellKnownBot/([\d+\.])' + name: 'WellKnownBot' + category: 'Crawler' + url: 'https://well-known.dev' + +- regex: 'Adsbot/([\d+\.])' + name: 'Adsbot' + category: 'Crawler' + url: 'https://seostar.co/robot/' + +- regex: 'MTRobot/([\d+\.])' + name: 'MTRobot' + category: 'Crawler' + url: 'https://metrics-tools.de/robot.html' + producer: + name: 'Metrics Tools' + url: 'https://metrics-tools.de/' + +- regex: 'serpstatbot/([\d+\.])' + name: 'serpstatbot' + category: 'Crawler' + url: 'http://serpstatbot.com/' + producer: + name: 'Netpeak Ltd' + url: 'https://netpeak.net/' + +- regex: 'colly' + name: 'colly' + category: 'Crawler' + url: 'https://github.com/gocolly/colly/' + +- regex: 'l9tcpid/v([\d+\.])' + name: 'l9tcpid' + category: 'Security Checker' + url: 'https://github.com/LeakIX/l9tcpid' + +- regex: 'MegaIndex.ru/([\d+\.])' + name: 'MegaIndex' + category: 'Crawler' + url: 'https://megaindex.com/crawler' + +- regex: 'Seekport' + name: 'Seekport' + category: 'Crawler' + url: 'http://www.seekport.com/' + producer: + name: 'SISTRIX GmbH' + url: 'https://www.sistrix.de/' + +- regex: 'seolyt/([\d+\.])' + name: 'seolyt' + category: 'Crawler' + url: 'https://seolyt.com/' + +- regex: 'YaK/([\d+\.])' + name: 'YaK' + category: 'Crawler' + url: 'https://www.linkfluence.com/' + producer: + name: 'Linkfluence SAS' + url: 'https://www.linkfluence.com/' + +- regex: 'KomodiaBot/([\d+\.])' + name: 'KomodiaBot' + category: 'Crawler' + url: 'http://www.komodia.com/newwiki/index.php/URL_server_crawler' + producer: + name: 'Komodia Inc.' + url: 'https://www.komodia.com/' + +- regex: 'Neevabot/([\d+\.])' + name: 'Neevabot' + category: 'Search bot' + url: 'https://neeva.com/neevabot' + producer: + name: 'Neeva Inc.' + url: 'https://neeva.com/' + +- regex: 'LinkPreview/([\d+\.])' + name: 'LinkPreview' + category: 'Service Agent' + url: 'https://www.linkpreview.net/' + +- regex: 'JungleKeyThumbnail/([\d+\.])' + name: 'JungleKeyThumbnail' + category: 'Crawler' + url: 'https://junglekey.com/' + +- regex: 'rocketmonitor(?: |bot/)([\d+\.])' + name: 'RocketMonitorBot' + category: 'Site Monitor' + url: 'https://www.radiomast.io/docs/stream-monitoring/technical_details.html' + producer: + name: 'Radio Mast, Inc.' + url: 'https://www.radiomast.io/' + +- regex: 'SitemapParser-VIPnytt/([\d+\.])' + name: 'SitemapParser-VIPnytt' + category: 'Crawler' + url: 'https://github.com/VIPnytt/SitemapParser/' + +- regex: '^Turnitin' + name: 'Turnitin' + category: 'Crawler' + url: 'https://turnitin.com/robot/crawlerinfo.html' + +- regex: 'DMBrowser/\d+|DMBrowser-[UB]V' + name: 'Dotcom Monitor' + category: 'Site Monitor' + url: 'https://www.dotcom-monitor.com' + +- regex: 'ThinkChaos/' + name: 'ThinkChaos' + category: 'Crawler' + +- regex: 'DataForSeoBot' + name: 'DataForSeoBot' + category: 'Crawler' + url: 'https://dataforseo.com/dataforseo-bot' + +- regex: 'Discordbot/([\d+.]+)' + name: 'Discord Bot' + category: 'Service Agent' + url: 'https://discordapp.com' + +- regex: 'Linespider/([\d+.]+)' + name: 'Linespider' + category: 'Crawler' + url: 'https://lin.ee/4dwXkTH' + +- regex: 'Cincraw/([\d+.]+)' + name: 'Cincraw' + category: 'Crawler' + url: 'http://cincrawdata.net/bot/' + +- regex: 'CISPA Web Analyzer' + name: 'CISPA Web Analyzer' + category: 'Crawler' + url: 'https://notify.cispa.de/' + producer: + name: 'CISPA - Helmholtz-Zentrum für Informationssicherheit gGmbH' + url: 'https://cispa.de/en' + +- regex: 'IonCrawl' + name: 'IONOS Crawler' + category: 'Crawler' + url: 'https://www.ionos.de/terms-gtc/faq-crawler-en/' + producer: + name: 'IONOS SE' + url: 'https://www.ionos.de/' + +- regex: 'Crawldad' + name: 'Crawldad' + category: 'Crawler' + url: 'https://gist.github.com/jayhardee9/2f2a2c4dba26564ee040ae32e0dd0972' + +- regex: 'https://securitytxt-scan.cs.hm.edu/' + name: 'security.txt scanserver' + category: 'Security Checker' + url: 'https://securitytxt-scan.cs.hm.edu/' + producer: + name: 'Hochschule für angewandte Wissenschaften München' + url: 'https://www.hm.edu/' + +- regex: 'TigerBot/([\d+.]+)' + name: 'TigerBot' + category: 'Crawler' + url: 'https://tiger.ch/' + +- regex: 'TestCrawler/([\d+.]+)' + name: 'TestCrawler' + category: 'Crawler' + url: 'https://www.comcepta.com/' + +- regex: 'CrowdTanglebot/([\d+.]+)' + name: 'CrowdTangle' + category: 'Crawler' + url: 'https://help.crowdtangle.com/en/articles/3009319-crowdtangle-bot' + producer: + name: 'CrowdTangle, Inc.' + url: 'https://www.crowdtangle.com/' + +- regex: 'Sellers.Guide Crawler by Primis' + name: 'Sellers.Guide' + category: 'Crawler' + url: 'https://sellers.guide/' + producer: + name: 'McCann Disciplines, Ltd.' + url: 'https://www.primis.tech/' + +- regex: 'OnalyticaBot' + name: 'Onalytica' + category: 'Crawler' + url: 'https://www.airslate.com/bot/explore/onalytica-bot' + producer: + name: 'airSlate, Inc.' + url: 'https://www.airslate.com/' + +- regex: 'deepnoc' + name: 'deepnoc' + category: 'Crawler' + url: 'https://deepnoc.com/bot' + producer: + name: 'deepnoc, GmbH' + url: 'https://deepnoc.com/' + +- regex: 'Newslitbot/([\d+.]+)' + name: 'Newslitbot' + category: 'Crawler' + url: 'https://www.newslit.co/' + producer: + name: 'Newslit, LLC.' + url: 'https://www.newslit.co/' + +# Generic detections +- regex: '[a-z0-9\-_]*((?<!cu|power[ _]|m[ _])bot(?![ _]TAB|[ _]?5[0-9]|[ _]Senior|[ _]Junior)|crawler|crawl|checker|archiver|transcoder|spider)([^a-z]|$)' name: 'Generic Bot' diff --git a/priv/ua_inspector/browser_engine.browser_engine.yml b/priv/ua_inspector/browser_engine.browser_engine.yml index a4770deb498ee2a4df09a1043a8b2fafcaa43feb..270db656cd0db4ff972a9be7fdb8d98d87206bd0 100644 --- a/priv/ua_inspector/browser_engine.browser_engine.yml +++ b/priv/ua_inspector/browser_engine.browser_engine.yml @@ -14,7 +14,7 @@ - regex: 'Trident' name: 'Trident' -- regex: 'Blink' +- regex: '(?<!SmartHu)Blink' name: 'Blink' - regex: '(?:Apple)?WebKit' @@ -23,6 +23,9 @@ - regex: 'Presto' name: 'Presto' +- regex: 'Goanna' + name: 'Goanna' + - regex: '(?<!like )Gecko' name: 'Gecko' @@ -37,3 +40,6 @@ - regex: 'Goanna' name: 'Goanna' + +- regex: 'Ekioh(?:Flow)?' + name: 'EkiohFlow' diff --git a/priv/ua_inspector/client.browsers.yml b/priv/ua_inspector/client.browsers.yml index 27f76f678d4829b6868076ec5ab2d87fe6137cc3..ecf4922f2abf2059e9a5c93e7973ea9c514806ef 100644 --- a/priv/ua_inspector/client.browsers.yml +++ b/priv/ua_inspector/client.browsers.yml @@ -5,6 +5,558 @@ # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later ############### +# Decentr (https://decentr.net/) +- regex: 'Decentr' + name: 'Decentr' + version: '' + engine: + default: 'Blink' + +# YouCare (https://play.google.com/store/apps/details?id=com.youcare.browser) +- regex: 'youcare-android-app' + name: 'YouCare' + version: '' + engine: + default: 'Blink' +- regex: 'youcare-ios-app' + name: 'YouCare' + version: '' + engine: + default: 'WebKit' + +# AdBlock Browser (https://play.google.com/store/apps/details?id=org.adblockplus.browser) +- regex: 'ABB/(\d+[\.\d]+)' + name: 'AdBlock Browser' + version: '$1' + engine: + default: 'Blink' + +# Navegador +- regex: 'Navegador' + name: 'Navegador' + version: '' + engine: + default: 'Blink' + +# Hi Browser (https://play.google.com/store/apps/details?id=com.talpa.hibrowser) +- regex: 'HiBrowser/(\d+[\.\d]+)' + name: 'Hi Browser' + version: '$1' + engine: + default: 'Blink' + +# CYBrowser (https://www.cgl.ucsf.edu/cytoscape/utilities3/cybrowser.shtml) +- regex: 'CYBrowser/(\d+[\.\d]+)' + name: 'CyBrowser' + version: '$1' + +# SiteKiosk (https://www.sitekiosk.com/) +- regex: 'Chrome/.+ SiteKiosk (\d+[\.\d]+)' + name: 'SiteKiosk' + version: '$1' + engine: + default: 'Blink' +- regex: 'SiteKiosk (\d+[\.\d]+)' + name: 'SiteKiosk' + version: '$1' + +# Reqwireless WebViewer +- regex: 'ReqwirelessWeb/(\d+[\.\d]+)' + name: 'Reqwireless WebViewer' + version: '$1' + +# T+Browser (https://t.chanjet.com/tplus/view/login/downloadBrowser.html | https://dad.chanapp.chanjet.com/tplusapp/TPlusBrowser.exe) +- regex: 'T\+Browser/(\d+[\.\d]+)' + name: 'T+Browser' + version: '$1' + engine: + default: 'Blink' + +# ChanjetCloud (https://dad.chanapp.chanjet.com/tplusapp/HsySetup.exe) +- regex: 'ChanjetCloud/(\d+[\.\d]+)' + name: 'ChanjetCloud' + version: '$1' + engine: + default: 'Blink' + +# Sushi Browser (https://sushi-browser.com/) +- regex: 'SushiBrowser/(\d+[\.\d]+)' + name: 'Sushi Browser' + version: '$1' + engine: + default: 'Blink' + +# Peeps dBrowser (https://peepsx.com/dbrowser.html) +- regex: 'dBrowser/(\d+[\.\d]+)' + name: 'Peeps dBrowser' + version: '$1' + engine: + default: 'Blink' + +# LT Browser (https://www.lambdatest.com/lt-browser) +- regex: 'LTBrowser/(\d+[\.\d]+)' + name: 'LT Browser' + version: '$1' + engine: + default: 'Blink' + +# Lagatos Browser (https://lagatos.com/) +- regex: 'lagatos-browser/(\d+[\.\d]+)' + name: 'Lagatos Browser' + version: '$1' + engine: + default: 'Blink' + +# PSI Secure Browser (https://tca.psiexams.com/portal/testdelivery/sb_rpnow_download.jsp?) +- regex: 'psi-secure-browser/(\d+[\.\d]+)' + name: 'PSI Secure Browser' + version: '$1' + engine: + default: 'Blink' + +# Harman Browser (https://www.harman.com/) +- regex: 'Harman_Browser/(\d+[\.\d]+)' + name: 'Harman Browser' + version: '$1' + engine: + default: 'Blink' + +# Bonsai (https://bonsaibrowser.com/) +- regex: 'bonsai-browser/(\d+[\.\d]+)' + name: 'Bonsai' + version: '$1' + engine: + default: 'Blink' + +# Spectre Browser (https://spectrebots.com/products/spectre-desktop-browser) +- regex: 'spectre-browser/(\d+[\.\d]+)' + name: 'Spectre Browser' + version: '$1' + engine: + default: 'Blink' + +# Flash Browser (https://github.com/asteroid-dev/FlashBrowser or https://github.com/radubirsan/FlashBrowser) +- regex: 'FlashBrowser/(\d+[\.\d]+)' + name: 'Flash Browser' + version: '$1' + engine: + default: 'Blink' + +# Secure Browser (https://safertechnologies.io/) +- regex: 'Secure/(?:(\d+[\.\d]+))?' + name: 'Secure Browser' + version: '$1' + engine: + default: 'Blink' + +# Arvin (https://play.google.com/store/apps/details?id=com.browser.arvin.anti.blokir&hl=sv&gl=US) +- regex: 'Arvin/(\d+[\.\d]+)' + name: 'Arvin' + version: '$1' + engine: + default: 'Blink' + +# Edge Webview (https://docs.microsoft.com/en-us/microsoft-edge/webview2/) +- regex: 'Version/.+Chrome/.+EdgW/(\d+[\.\d]+)' + name: 'Edge WebView' + version: '$1' + engine: + default: 'WebKit' + +# Mandarin (https://mandarin-browser.com/) +- regex: 'Mandarin Browser/(\d+[\.\d]+)' + name: 'Mandarin' + version: '$1' + engine: + default: 'Blink' + +# Maelstrom (https://www.bittorrent.com/) +- regex: 'Torrent/(\d+[\.\d]+)' + name: 'Maelstrom' + version: '$1' + engine: + default: 'Blink' + +# Helio (https://developer.magicleap.com/en-us/learn/guides/lumin-os-release-notes-summary) +- regex: 'Helio/(\d+[\.\d]+)' + name: 'Helio' + version: '$1' + engine: + default: 'Blink' + +# 7654 Browser (http://7654browser.shzhanmeng.com/) +- regex: '7654Browser/(\d+[\.\d]+)' + name: '7654 Browser' + version: '$1' + engine: + default: 'Blink' + +# Qazweb (http://www.qazweb.com/) +- regex: 'Qazweb/(\d+[\.\d]+)' + name: 'Qazweb' + version: '$1' + engine: + default: 'Gecko' + +# deg-degan (https://degdegan.com/) +- regex: 'Degdegan/(\d+[\.\d]+)' + name: 'deg-degan' + version: '$1' + engine: + default: 'Blink' + +# JavaFX (https://docs.oracle.com/javase/8/javafx/embedded-browser-tutorial/overview.htm) +- regex: 'JavaFX/(\d+[\.\d]+)' + name: 'JavaFX' + version: '$1' + engine: + default: 'WebKit' + +# Chedot (https://landing.chedot.com/) +- regex: 'Chedot/(\d+[\.\d]+)' + name: 'Chedot' + version: '$1' + engine: + default: 'Blink' + +# Chromium GOST (https://github.com/deemru/chromium-gost) +- regex: 'Chrome/(\d+[\.\d]+).+\(Chromium GOST\)' + name: 'Chromium GOST' + version: '$1' + engine: + default: 'WebKit' + versions: + 28: 'Blink' + +# Deledao (https://www.deledao.com/) +- regex: '(?:DeledaoPersonal|DeledaoFamily)/(\d+[\.\d]+)' + name: 'Deledao' + version: '$1' + engine: + default: 'Blink' + +# HasBrowser (https://browser.hascoding.com) +- regex: 'HasBrowser/(\d+[\.\d]+)' + name: 'HasBrowser' + version: '$1' + engine: + default: 'Blink' + +# Byffox (https://byffox.sourceforge.io/index.php) +- regex: 'Byffox/(\d+[\.\d]+)' + name: 'Byffox' + version: '$1' + engine: + default: 'Gecko' + +# CoolBrowser (https://play.google.com/store/apps/details?id=com.easybrowser.browser.coolbrowser) +- regex: 'Chrome/(\d+[\.\d]+).+AgentWeb.+UCBrowser' + name: 'CoolBrowser' + version: '$1' + engine: + default: 'Blink' + +# Dot Browser (https://dothq.co/) +- regex: 'DotBrowser/(\d+[\.\d]+)' + name: 'Dot Browser' + version: '$1' + engine: + default: 'Blink' + +# Craving Explorer (https://www.crav-ing.com/) +- regex: 'CravingExplorer/(\d+[\.\d]+)' + name: 'Craving Explorer' + version: '$1' + engine: + default: 'Blink' + +# DeskBrowse (https://web.archive.org/web/20170614060014/http://deskbrowse.org/) +- regex: 'DeskBrowse/(\d+[\.\d]+)' + name: 'DeskBrowse' + version: '$1' + +# Lolifox +- regex: 'Lolifox/(\d+[\.\d]+)' + name: 'Lolifox' + version: '$1' + +# Qutebrowser (https://qutebrowser.org/) +- regex: 'qutebrowser/(\d+[\.\d]+).+Chrome' + name: 'Qutebrowser' + version: '$1' + engine: + default: 'Blink' +- regex: 'qutebrowser(?:/(\d+[\.\d]+))?' + name: 'Qutebrowser' + version: '$1' + +# Flast (https://github.com/FascodeNet/Flast) +- regex: 'flast/(\d+[\.\d]+)' + name: 'Flast' + version: '$1' + engine: + default: 'Blink' + +# PolyBrowser (https://github.com/PolySuite/PolyBrowser) +- regex: 'PolyBrowser/(\d+[\.\d]+)' + name: 'PolyBrowser' + version: '$1' + engine: + default: 'Gecko' + +# BriskBard (https://www.briskbard.com/) +- regex: 'Chrome.+BriskBard/(\d+[\.\d]+)' + name: 'BriskBard' + version: '$1' + engine: + default: 'Blink' +- regex: 'BriskBard(?:/(\d+[\.\d]+))?' + name: 'BriskBard' + version: '$1' + +# GinxDroid Browser (https://play.google.com/store/apps/details?id=ginxdroid.gdm) +- regex: 'GinxDroidBrowser/(\d+[\.\d]+)' + name: 'GinxDroid Browser' + version: '$1' + engine: + default: 'Blink' + +# Avira Scout (http://www.avira.com/en/avira-scout) +- regex: 'AviraScout/(\d+[\.\d]+)' + name: 'Avira Scout' + version: '$1' + engine: + default: 'Blink' + +# Venus Browser (https://play.google.com/store/apps/details?id=com.venus.browser) +- regex: 'VenusBrowser/(\d+[\.\d]+)' + name: 'Venus Browser' + version: '$1' + engine: + default: 'Blink' + +# Otter Browser (https://github.com/OtterBrowser/otter-browser) +- regex: 'Chrome.+Otter(?:[ /](\d+[\.\d]+))?' + name: 'Otter Browser' + version: '$1' + engine: + default: 'Blink' +- regex: 'Otter(?:[ /](\d+[\.\d]+))?' + name: 'Otter Browser' + version: '$1' + +# Smooz (https://smoozapp.com/) +- regex: 'Chrome.+Smooz/(\d+[\.\d]+)' + name: 'Smooz' + version: '$1' + engine: + default: 'Blink' +- regex: 'Smooz/(\d+[\.\d]+)' + name: 'Smooz' + version: '$1' + +# Cornowser (https://github.com/xdevs23/Cornowser) +- regex: 'Cornowser/(\d+[\.\d]+)' + name: 'Cornowser' + version: '$1' + engine: + default: 'Blink' + +# Orca (http://www.orcabrowser.com) +- regex: 'Orca/(\d+[\.\d]+)' + name: 'Orca' + version: '$1' + +# Flow (https://www.ekioh.com/) +- regex: 'Flow/(?:(\d+[\.\d]+))' + name: 'Flow' + version: '$1' + engine: + default: 'EkiohFlow' +- regex: 'Ekioh/(?:(\d+[\.\d]+))' + name: 'Flow' + version: '$1' + engine: + default: 'EkiohFlow' + +# xStand (https://www.adnx.com/) +- regex: 'xStand/(\d+[\.\d]+)' + name: 'xStand' + version: '$1' + engine: + default: 'WebKit' + +# Biyubi (http://www.biyubi.com/) +- regex: 'Biyubi/(\d+[\.\d]+)' + name: 'Biyubi' + version: '$1' + +# Perfect Browser (http://www.perfectbrowser.com/) +- regex: '(?:Perfect%20Browser(?:-iPad)?|Perfect(?:BrowserPro)?)/(\d+[\.\d]+)' + name: 'Perfect Browser' + version: '$1' + engine: + default: 'WebKit' + +# Phantom Browser (https://www.lg.com/) +- regex: 'Browser/Phantom/V(\d+[\.\d]+)' + name: 'Phantom Browser' + version: '$1' + +# AwoX (https://www.awox.com.tr/) +- regex: 'AwoX(?:/(\d+[\.\d]+))? Browser' + name: 'AwoX' + version: '$1' + +# Zetakey (https://www.zetakey.com/) +- regex: 'Zetakey/(\d+[\.\d]+)' + name: 'Zetakey' + version: '$1' + engine: + default: 'WebKit' + +# PlayFree Browser +- regex: 'PlayFreeBrowser/(?:(\d+[\.\d]+))?' + name: 'PlayFree Browser' + version: '$1' + +# Chim Lac (https://chimlac.com.vn/) +- regex: '(?:chimlac_browser|chimlac)/(?:(\d+[\.\d]+))' + name: 'Chim Lac' + version: '$1' + engine: + default: 'Blink' + +# Odin (https://www.hisense.com/) +- regex: 'Odin/(?:(\d+[\.\d]+))' + name: 'Odin' + version: '$1' + engine: + default: 'Blink' + +# T-Browser (https://play.google.com/store/apps/details?id=com.tcl.browser) +- regex: 'Tbrowser/(\d+[\.\d]+)' + name: 'T-Browser' + version: '$1' + engine: + default: 'Blink' + +# SFive (https://sfive.vn/) +- regex: 'SFive(?:_Android)?/.+ Chrome/(\d+[\.\d]+)' + name: 'SFive' + version: '$1' + engine: + default: 'Blink' +- regex: 'SFive_IOS/(\d+[\.\d]+)' + name: 'SFive' + version: '$1' + +# Navigateur Web +- regex: 'Navigateur web/(?:(\d+[\.\d]+))?' + name: 'Navigateur Web' + version: '$1' + +#Seraphic Sraf (https://www.seraphic-corp.com/) +- regex: 'Sraf(?:[/ ](\d+[\.\d]+))?' + name: 'Seraphic Sraf' + version: '$1' + engine: + default: 'Blink' + +# Seewo Browser (http://e.seewo.com/) +- regex: 'SeewoBrowser/(?:(\d+[\.\d]+))?' + name: 'Seewo Browser' + version: '$1' + engine: + default: 'Blink' + +# Kode Browser (https://www.kodebrowser.com/ | https://play.google.com/store/apps/details?id=com.app.downloadmanager | https://apps.apple.com/us/app/kode-browser-fast-private/id625458492) +- regex: '(?:Kode(?:iOS)?/(?:(\d+[\.\d]+))?|TansoDL)' + name: 'Kode Browser' + version: '$1' + +# UR Browser (https://www.ur-browser.com/) +- regex: 'UR/(?:(\d+[\.\d]+))' + name: 'UR Browser' + version: '$1' + engine: + default: 'Blink' + +# OceanHero (https://oceanhero.today) +- regex: 'OceanHero/([\.\d]+)' + name: 'OceanHero' + version: '$1' + engine: + default: 'Blink' + +# Smart Lenovo Browser (https://www.lenovo.com.cn/) +- regex: 'Chrome/.+ SLBrowser/(?:(\d+[\.\d]+))?' + name: 'Smart Lenovo Browser' + version: '$1' + engine: + default: 'Blink' +- regex: 'SLBrowser/(?:(\d+[\.\d]+))?' + name: 'Smart Lenovo Browser' + version: '$1' + +# Browzar (https://www.browzar.com/) +- regex: 'Browzar' + name: 'Browzar' + version: '' + +# Stargon (http://www.stargon.org/ | https://play.google.com/store/apps/details?id=net.onecook.browser) +- regex: 'Stargon/(?:(\d+[\.\d]+))?' + name: 'Stargon' + version: '$1' + engine: + default: 'Blink' + +# NFS Browser (https://github.com/nfschina/nfs-browser) +- regex: 'NFSBrowser/(?:(\d+[\.\d]+))?' + name: 'NFS Browser' + version: '$1' + engine: + default: 'Blink' + +# Borealis Navigator (https://binaryoutcast.com/projects/borealis/) +- regex: 'Borealis/(\d+[\.\d]+)' + name: 'Borealis Navigator' + version: '$1' + +# Yolo Browser +- regex: 'YoloBrowser/(?:(\d+[\.\d]+))?' + name: 'Yolo Browser' + version: '$1' + engine: + default: 'Blink' + +# Phoenix Browser (http://phoenix-browser.com/ | https://play.google.com/store/apps/details?id=com.transsion.phoenix) +- regex: 'PHX/(?:(\d+[\.\d]+))?' + name: 'Phoenix Browser' + version: '$1' + +# PrivacyWall (https://play.google.com/store/apps/details?id=org.privacywall.browser) +- regex: 'PrivacyWall/(?:(\d+[\.\d]+))?' + name: 'PrivacyWall' + version: '$1' + +# Ghostery Privacy Browser (https://play.google.com/store/apps/details?id=com.ghostery.android.ghostery | https://apps.apple.com/us/app/ghostery-privacy-browser/id472789016) +- regex: 'Ghostery:?(\d+[\.\d]+)?' + name: 'Ghostery Privacy Browser' + version: '$1' + +# Yaani Browser +- regex: 'Firefox/.*(?:Turkcell-)?YaaniBrowser(?:/(\d+[\.\d]+))?' + name: 'Yaani Browser' + version: '$1' + engine: + default: 'Gecko' +- regex: '(?:Turkcell-)?YaaniBrowser(?:/(\d+[\.\d]+))?' + name: 'Yaani Browser' + version: '$1' + engine: + default: 'Blink' + # Safe Exam Browser (https://safeexambrowser.org/) - regex: 'SEB/(?:(\d+[\.\d]+))?' name: 'Safe Exam Browser' @@ -36,10 +588,22 @@ version: '$1' # Lunascape Lite (https://www.lunascape.tv/) -- regex: 'iLunascapeLite/(?:(\d+[\.\d]+))?' +- regex: 'iLunascapeLite/(?:(\d+\.[.\d]+))?' name: 'Lunascape Lite' version: '$1' +# Lunascape +- regex: 'Chrome/.+ i?Lunascape(?:[/ ](\d+\.[.\d]+))?' + name: 'Lunascape' + version: '$1' + engine: + default: 'Blink' +- regex: 'i?Lunascape(?:[/ ](\d+\.[.\d]+))?' + name: 'Lunascape' + version: '$1' + engine: + default: '' # multi engine + # Polypane (https://polypane.app/) - regex: 'Polypane/(?:(\d+[\.\d]+))?' name: 'Polypane' @@ -64,6 +628,10 @@ - regex: 'ToGate/(?:(\d+[\.\d]+))?' name: 'ToGate' version: '$1' + engine: + default: 'WebKit' + versions: + 28: 'Blink' # VMware AirWatch (https://www.air-watch.com/) - regex: 'AirWatch Browser v(?:(\d+[\.\d]+))?' @@ -109,6 +677,10 @@ - regex: 'AVG(?:/(\d+[\.\d]+))?' name: 'AVG Secure Browser' version: '$1' + engine: + default: 'WebKit' + versions: + 28: 'Blink' # START Internet Browser (https://play.google.com/store/apps/details?id=fyi.start.web.browser) - regex: 'Start/(?:(\d+[\.\d]+))?' @@ -134,11 +706,17 @@ - regex: 'CCleaner(?:/(\d+[\.\d]+))?' name: 'CCleaner' version: '$1' + engine: + default: 'WebKit' + versions: + 28: 'Blink' # Aloha Browser Lite (https://play.google.com/store/apps/details?id=com.alohamobile.browser.lite) - regex: 'AlohaLite(?:/(\d+[\.\d]+))?' name: 'Aloha Browser Lite' version: '$1' + engine: + default: 'Blink' # Tao Browser (https://browser.taobao.com/) - regex: 'TaoBrowser(?:/(\d+[\.\d]+))?' @@ -189,6 +767,10 @@ - regex: 'Beamrise(?:/(\d+[\.\d]+))?' name: 'Beamrise' version: '$1' + engine: + default: 'WebKit' + versions: + 28: 'Blink' # Faux Browser (https://apps.apple.com/us/app/faux-browser/id472250940) - regex: 'Faux(?:/(\d+[\.\d]+))?' @@ -222,6 +804,13 @@ engine: default: 'Blink' +# Hawk Quick Browser +- regex: 'Hawk/QuickBrowser(?:/v?(\d+[\.\d]+))?' + name: 'Hawk Quick Browser' + version: '$1' + engine: + default: 'Blink' + # FreeU (https://freeu.online/) - regex: 'FreeU(?:/(\d+[\.\d]+))?' name: 'FreeU' @@ -263,12 +852,19 @@ version: '$1' # Jio Browser (https://play.google.com/store/apps/details?id=com.jio.web) -- regex: 'JioBrowser(?:/(\d+[\.\d]+))?' +- regex: 'Jio(?:Browser|Pages)(?:/(\d+[\.\d]+))?' name: 'Jio Browser' version: '$1' engine: default: 'Blink' +# https://play.google.com/store/apps/details?id=app.stampy.browser +- regex: 'SY/(\d+[\.\d]+) Chrome/' + name: 'Stampy Browser' + version: '$1' + engine: + default: 'Blink' + # hola! Browser (https://hola.org/browser) - regex: 'Chrome/.+ Hola(?:/(\d+[\.\d]+))?' name: 'hola! Browser' @@ -276,10 +872,40 @@ engine: default: 'Blink' -# Huawei Browser +# Slimjet (https://slimjet.com) +- regex: 'Slimjet/(?:(\d+[\.\d]+))' + name: 'Slimjet' + version: '$1' + engine: + default: 'Blink' + +# 7Star +- regex: '7Star/(?:(\d+[\.\d]+))' + name: '7Star' + version: '$1' + engine: + default: 'Blink' + +# MxNitro +- regex: 'MxNitro/(?:(\d+[\.\d]+))' + name: 'MxNitro' + version: '$1' + engine: + default: 'Blink' + +# Huawei Browser Mobile - regex: 'HuaweiBrowser(?:/(\d+[\.\d]+))?' + name: 'Huawei Browser Mobile' + version: '$1' + engine: + default: 'Blink' + +# Huawei Browser +- regex: 'HBPC/(\d+[\.\d]+)' name: 'Huawei Browser' version: '$1' + engine: + default: 'Blink' # vivo Browser - regex: 'VivoBrowser(?:/(\d+[\.\d]+))?' @@ -299,6 +925,11 @@ default: 'Blink' # Qwant Mobile +- regex: 'QwantiOS/(\d+[\.\d]+)' + name: 'Qwant Mobile' + version: '$1' + engine: + default: 'WebKit' - regex: 'QwantMobile(?:/(\d+[\.\d]+))?' name: 'Qwant Mobile' version: '$1' @@ -325,7 +956,7 @@ default: 'Gecko' # Microsoft Edge (Spartan Edge) -- regex: 'Edge[ /](\d+[\.\d]+)' +- regex: '(?<!motorola )Edge[ /](\d+[\.\d]+)' name: 'Microsoft Edge' version: '$1' engine: @@ -400,14 +1031,29 @@ default: 'Gecko' #AlohaBrowser +- regex: 'Chrome/.+ AlohaBrowser(?:/(\d+[\.\d]+))?' + name: 'Aloha Browser' + version: '$1' + engine: + default: 'Blink' - regex: 'AlohaBrowser(?:/(\d+[\.\d]+))?' name: 'Aloha Browser' version: '$1' +- regex: 'Aloha/' + name: 'Aloha Browser' + version: '' # Avast Secure Browser | Avast SafeZone Browser (https://www.avast.com/) -- regex: '(?:Avast|ASW|Safer)(?:/(\d+[\.\d]+))?' +- regex: 'Chrome.+(?:Avast(?:SecureBrowser)?|ASW|Safer)(?:/(\d+[\.\d]+))?' + name: 'Avast Secure Browser' + version: '$1' + engine: + default: 'Blink' +- regex: '(?:Avast(?:SecureBrowser)?|ASW|Safer)(?:/(\d+[\.\d]+))?' name: 'Avast Secure Browser' version: '$1' + engine: + default: 'WebKit' #Epic - regex: 'Epic(?:/(\d+[\.\d]+))' @@ -442,7 +1088,7 @@ #Avant Browser -- regex: 'Avant Browser' +- regex: 'Avant ?Browser' name: 'Avant Browser' version: '' engine: @@ -460,7 +1106,7 @@ engine: default: 'WebKit' versions: - 28: 'Blink' + '28': 'Blink' #Atomic Web Browser - regex: 'AtomicBrowser(?:/(\d+[\.\d]+))?' @@ -532,7 +1178,7 @@ engine: default: 'Gecko' versions: - 3: 'WebKit' + '3': 'WebKit' # Jig Browser Plus (https://jig.jp/) - regex: 'JigBrowserPlus/(?:(\d+[\.\d]+))?' @@ -569,7 +1215,7 @@ version: '$1' # t-online.de Browser (https://www.t-online.de/computer/browser/) -- regex: 'TO-Browser(?:/TOB(\d+[\.\d]+))?' +- regex: '(?:TO-Browser/TOB|DT-Browser/DTB)(\d+[\.\d]+)' name: 't-online.de Browser' version: '$1' @@ -602,7 +1248,7 @@ default: 'Goanna' #Firefox Focus / Firefox Klar -- regex: '(?:Focus|Klar)(?:/(\d+[\.\d]+))?' +- regex: '(?:Focus|Klar)(?:/(\d+[\.\d]+))' name: 'Firefox Focus' version: '$1' @@ -723,6 +1369,11 @@ name: 'Obigo' version: '' +# UC Browser HD +- regex: 'UCBrowserHD/(\d[\d\.]+)' + name: 'UC Browser HD' + version: '$1' + #UC Browser Mini - regex: 'UCMini(?:[ /]?(\d+[\.\d]+))?' name: 'UC Browser Mini' @@ -730,6 +1381,11 @@ - regex: 'UC[ ]?Browser.* \(UCMini\)' name: 'UC Browser Mini' version: '' +- regex: 'Chrome.+uc mini browser(\d+[\.\d]+)?' + name: 'UC Browser Mini' + version: '$1' + engine: + default: 'Blink' # UC Browser Turbo - regex: 'UCTurbo(?:[ /]?(\d+[\.\d]+))?' @@ -740,12 +1396,18 @@ version: '' # Opera GX (https://www.opera.com/gx#start | http://ftp.opera.com/pub/opera_gx/) -- regex: 'OPRGX(?:/(\d+[\.\d]+))?' +- regex: 'Chrome/.+ OP(?:RG)?X(?:/(\d+[\.\d]+))?' name: 'Opera GX' version: '$1' engine: default: 'Blink' +- regex: 'OP(?:RG)?X(?:/(\d+[\.\d]+))?' + name: 'Opera GX' + version: '$1' + engine: + default: 'WebKit' + #Opera - regex: '(?:Opera Tablet.*Version|Opera/.+Opera Mobi.+Version|Mobile.+OPR)/(\d+[\.\d]+)' name: 'Opera Mobile' @@ -764,6 +1426,16 @@ version: '$1' engine: default: 'Blink' +- regex: 'Opera%20Touch/(\d+[\.\d]+)? CFNetwork/.+Darwin/.+(?!.*x86_64)' + name: 'Opera Touch' + version: '$1' + engine: + default: 'WebKit' +- regex: 'Opera%20Touch/.+CFNetwork/.+Darwin/.+(?!.*x86_64)' + name: 'Opera Touch' + version: '' + engine: + default: 'WebKit' - regex: 'OPT/(\d+[\.\d]+)' name: 'Opera Touch' version: '$1' @@ -791,6 +1463,12 @@ version: '$1' engine: default: 'WebKit' +- regex: 'Opera%20Mini/(\d+[\.\d]+) CFNetwork' + name: 'Opera Mini iOS' + version: '$1' + engine: + default: 'WebKit' + - regex: 'Opera.+Edition Next.+Version/(\d+[\.\d]+)' name: 'Opera Next' version: '$1' @@ -812,8 +1490,18 @@ default: '' versions: '3.5': 'Elektra' - 7: 'Presto' - 15: 'Blink' + '7': 'Presto' + '15': 'Blink' +- regex: 'Opera/.+CFNetwork' + name: 'Opera' + version: '' + engine: + default: 'WebKit' +- regex: 'Chrome.+Opera/' + name: 'Opera' + version: '' + engine: + default: 'Blink' #Rekonq - regex: 'rekonq(?:/(\d+[\.\d]+))?' @@ -836,7 +1524,7 @@ engine: default: 'WebKit' versions: - 28: 'Blink' + '28': 'Blink' #ChromePlus - regex: 'ChromePlus(?:/(\d+[\.\d]+))?' @@ -862,15 +1550,12 @@ 4: '' # multiple (KHTML or WebKit) #Baidu Browser -- regex: '(?:baidubrowser|bdbrowser_i18n|bdbrowser)(?:[/ ](\d+[\.\d]*))?' - name: 'Baidu Browser' - version: '$1' -- regex: 'FlyFlow(?:[/ ](\d+[\.\d]*))?' +- regex: '(?:baidubrowser|bdbrowser(?:(?:hd)?_i18n)?|FlyFlow|BaiduHD)(?:[/ ](\d+[\.\d]*))?' name: 'Baidu Browser' version: '$1' #Baidu Spark -- regex: '(?:(?:BD)?Spark|BIDUBrowser)[/ ](\d+[\.\d]*)' +- regex: '(?:(?:BD)?Spark(?:Safe)?|BIDUBrowser)[/ ](\d+[\.\d]*)' name: 'Baidu Spark' version: '$1' @@ -880,17 +1565,15 @@ version: '$1' engine: default: 'Blink' - #Yandex Browser - regex: 'YaBrowser(?:/(\d+[\.\d]*))(?: \((alpha|beta)\))?' name: 'Yandex Browser' version: '$1 $2' engine: default: 'Blink' - -# Yaani Browser -- regex: 'YaaniBrowser(?:/(\d+[\.\d]+))?' - name: 'Yaani Browser' +# Yandex Browser + voice assistant alisa +- regex: 'Ya(?:ndex)?SearchBrowser(?:/(\d+[\.\d]*))' + name: 'Yandex Browser' version: '$1' engine: default: 'Blink' @@ -910,6 +1593,11 @@ default: 'Blink' #Midori +- regex: 'Chrome.+Midori Browser/(\d+[\.\d]+)' + name: 'Midori' + version: '$1' + engine: + default: 'Blink' - regex: 'Midori(?:/(\d+[\.\d]+))?' name: 'Midori' version: '$1' @@ -917,12 +1605,19 @@ default: 'WebKit' #Mercury -- regex: 'Mercury(?:/(\d+[\.\d]+))?' +- regex: 'Mercury/(?:(\d+[\.\d]+))?' name: 'Mercury' version: '$1' #Maxthon -- regex: '(?:Maxthon|MxBrowser)[ /](\d+[\.\d]+)' +- regex: 'Chrome.+Maxthon(?:.+\(portable\))?/(\d+[\.\d]+)' + name: 'Maxthon' + version: '$1' + engine: + default: 'WebKit' + versions: + '5.2': 'Blink' +- regex: '(?:Maxthon(?:%20Browser)?|MxBrowser(?:-inhouse|-iPhone)?|MXiOS)[ /](\d+[\.\d]+)?' name: 'Maxthon' version: '$1' engine: @@ -954,6 +1649,8 @@ version: '$1' engine: default: 'WebKit' + versions: + 28: 'Blink' - regex: 'Iron(?:/(\d+[\.\d]+))?' name: 'Iron' @@ -988,6 +1685,11 @@ name: 'Sogou Explorer' version: '$1' +# QQ Browser Lite +- regex: 'QQBrowserLite/([\d\.]+)' + name: 'QQ Browser Lite' + version: '$1' + # QQ Browser Mini - regex: 'M?QQBrowser/Mini([\.\d]+)?' name: 'QQ Browser Mini' @@ -1013,8 +1715,8 @@ # This browser (http://coccoc.vn/) is built on top of Chromium with # additional features for Vietnamese users. Its regex has to be placed # before generic Chrome regex, or Chrome regex will match first and -# the browser is mistaken as "Chrome". -- regex: 'coc_coc_browser(?:/(\d+[\.\d]+))?' +# the browser is mistaken as 'Chrome". +- regex: '(?:coc_coc_browser|coccocbrowser|CocCoc)(?:/(\d+[\.\d]+))?' name: 'Coc Coc' version: '$1' engine: @@ -1034,7 +1736,10 @@ version: '$1' # Super Fast Browser (https://play.google.com/store/apps/details?id=com.browser.tssomas) -- regex: '(?:SFBrowser|com.browser.tssomas)(?:/(\d+[\.\d]+))?' +- regex: '(?:SFB(?:rowser)?)/(\d+[\.\d]+)' + name: 'Super Fast Browser' + version: '$1' +- regex: 'com.browser.tssomas(?:/(\d+[\.\d]+))?' name: 'Super Fast Browser' version: '$1' @@ -1047,6 +1752,8 @@ - regex: 'UBrowser(?:/(\d+[\.\d]+))?' name: 'UBrowser' version: '$1' + engine: + default: 'Blink' #Streamy (Chromium based) - regex: 'Streamy(?:/(\d+[\.\d]+))?' @@ -1072,28 +1779,49 @@ - regex: 'UC AppleWebKit' name: 'UC Browser' version: '' +- regex: 'UC%20Browser/(\d+[\.\d]+)? CFNetwork/.+Darwin/.+(?!.*x86_64)' + name: 'UC Browser' + version: '$1' + engine: + default: 'WebKit' +- regex: 'Chrome.+UC Browser(\d+[\.\d]+)' + name: 'UC Browser' + version: '$1' + engine: + default: 'Blink' -#Tenta Browser #It should be checked before Chrome since the UA contains the Chrome + +#Tenta Browser (https://play.google.com/store/apps/details?id=com.tenta.android) +- regex: 'Chrome/.+Tenta/(\d+[\.\d]+)' + name: 'Tenta Browser' + version: '$1' + engine: + default: 'Blink' - regex: 'Tenta/(\d+[\.\d]+)' name: 'Tenta Browser' version: '$1' engine: - default: 'Webkit' + default: 'WebKit' # Firefox Rocket - regex: 'Rocket/(\d+[\.\d]+)' name: 'Firefox Rocket' version: '$1' engine: - default: 'Webkit' + default: 'WebKit' # Web Explorer - regex: 'Web Explorer/(\d+[\.\d]+).*Chrome' name: 'Web Explorer' version: '$1' engine: - default: 'Webkit' + default: 'WebKit' +- regex: 'webexplorer/(\d+)' + name: 'Web Explorer' + version: '$1' + engine: + default: 'WebKit' # Seznam Browser - regex: 'SznProhlizec/(\d+[\.\d]+)' @@ -1144,13 +1872,6 @@ engine: default: '' # multi engine -- WebKit or Blink -# QtWebEngine -- regex: 'QtWebEngine/(\d+[\.\d]+)' - name: 'QtWebEngine' - version: '$1' - engine: - default: '' # multi engine -- WebKit or Blink - #Mobile Silk - regex: 'Silk/(\d+[\.\d]+) like Chrome' name: 'Mobile Silk' @@ -1163,6 +1884,16 @@ engine: default: 'WebKit' +# iBrowser Mini +- regex: 'iBrowser/Mini(\d+\.\d+)' + name: 'iBrowser Mini' + version: '$1' + +# iBrowser +- regex: 'iBrowser/(\d+\.[.\d]+)?' + name: 'iBrowser' + version: '$1' + #IBrowse - regex: 'IBrowse(?:[ /](\d+[\.\d]+))?' name: 'IBrowse' @@ -1183,6 +1914,11 @@ engine: default: 'WebKit' +# GoBrowser +- regex: 'GoBrowser(?:/(\d+[\.\d]+))?' + name: 'GoBrowser' + version: '$1' + #Nokia Browser - regex: '(?:NokiaBrowser|BrowserNG)(?:/(\d+[\.\d]+))?' name: 'Nokia Browser' @@ -1201,7 +1937,7 @@ version: '' #Sleipnir -- regex: 'Sleipnir(?:[ /](\d+[\.\d]+))?' +- regex: 'Sleipnir(?:(?:%20Browser)?[ /](\d+[\.\d]+))?' name: 'Sleipnir' version: '$1' engine: @@ -1224,12 +1960,54 @@ engine: default: 'WebKit' +# Monument Browser +- regex: 'MonumentBrowser(?:/(\d+[\.\d]+))?' + name: 'Monument Browser' + version: '$1' + engine: + default: 'WebKit' + +# Blue Browser - regex: 'BlueBrowser(?:/(\d+[\.\d]+))?' name: 'Blue Browser' version: '$1' engine: default: 'WebKit' +# Japan Browser (https://play.google.com/store/apps/details?id=com.japan.browser.anti.blokir) +- regex: 'JAPAN Browser(?:/(\d+[\.\d]+))?' + name: 'Japan Browser' + version: '$1' + engine: + default: 'WebKit' + +- regex: 'OpenFin/(?:(\d+[\.\d]+))' + name: 'OpenFin' + version: '$1' + engine: + default: 'Blink' + +# SuperBird +- regex: 'SuperBird(?:/(\d+[\.\d]+))?' + name: 'SuperBird' + version: '$1' + engine: + default: 'WebKit' + versions: + 28: 'Blink' + +# LG Browser +- regex: 'LG Browser(?:/(\d+[\.\d]+))' + name: 'LG Browser' + version: '$1' + +# QtWebEngine should be placed after LG Browser +- regex: 'QtWebEngine/(\d+[\.\d]+)' + name: 'QtWebEngine' + version: '$1' + engine: + default: '' # multi engine -- WebKit or Blink + # Chrome Webview - regex: 'Version/.* Chrome(?:/(\d+[\.\d]+))?' name: 'Chrome Webview' @@ -1284,10 +2062,24 @@ versions: 28: 'Blink' +# PocketBook Browser +- regex: 'PocketBook/' + name: 'PocketBook Browser' + version: '' + engine: + default: 'WebKit' + #Tizen Browser -- regex: '(?:Tizen|SLP) Browser(?:/(\d+[\.\d]+))?' +- regex: '(?:Tizen|SLP) ?Browser(?:/(\d+[\.\d]+))?' name: 'Tizen Browser' version: '$1' +- regex: 'Tizen (?:\d+[\.\d]+).+ Version/(\d+[\.\d]+) (?:TV|Mobile|like)' + name: 'Tizen Browser' + version: '$1' + engine: + default: 'WebKit' + versions: + '4': 'Blink' #Palm Blazer - regex: 'Blazer(?:/(\d+[\.\d]+))?' @@ -1444,8 +2236,20 @@ engine: default: 'Gecko' -#Google Earth -- regex: 'Google Earth(?:/(\d+[\.\d]+))?' +# Google Earth Pro (https://www.google.se/intl/en/earth/versions/) +- regex: '(?:Google Earth Pro|Google%20Earth%20Pro)(?:/(\d+[\.\d]+))?' + name: 'Google Earth Pro' + version: '$1' + engine: + default: 'WebKit' +- regex: 'GoogleEarth/(\d+[\.\d]+).+client:(?:Plus|Pro)' + name: 'Google Earth Pro' + version: '$1' + engine: + default: 'WebKit' + +# Google Earth (https://www.google.se/intl/en/earth/versions/) +- regex: 'Google ?Earth(?:/v?(\d+[\.\d]+))?' name: 'Google Earth' version: '$1' engine: @@ -1461,7 +2265,7 @@ name: 'iCab Mobile' version: '$1' engine: - default: 'WebKit' + default: 'WebKit' #iCab - regex: 'iCab(?:[ /](\d+[\.\d]+))?' @@ -1472,12 +2276,12 @@ versions: 4: 'WebKit' -#Lunascape -- regex: 'i?Lunascape(?:[/ ](\d+[\.\d]+))?' - name: 'Lunascape' +# Crazy Browser +- regex: 'Crazy Browser (\d+[\.\d]+)' + name: 'Crazy Browser' version: '$1' engine: - default: '' # multi engine + default: 'Trident' #Internet Explorer - regex: 'IEMobile[ /](\d+[\.\d]+)' @@ -1492,22 +2296,22 @@ default: 'Trident' - regex: 'MSIE.*Trident/4.0' name: 'Internet Explorer' - version: 8.0 + version: '8.0' engine: default: 'Trident' - regex: 'MSIE.*Trident/5.0' name: 'Internet Explorer' - version: 9.0 + version: '9.0' engine: default: 'Trident' - regex: 'MSIE.*Trident/6.0' name: 'Internet Explorer' - version: 10.0 + version: '10.0' engine: default: 'Trident' - regex: 'Trident/[78].0' name: 'Internet Explorer' - version: 11.0 + version: '11.0' engine: default: 'Trident' - regex: 'MSIE (\d+[\.\d]+)' @@ -1540,11 +2344,6 @@ engine: default: 'Text-based' -# LG Browser -- regex: 'LG Browser(?:/(\d+[\.\d]+))' - name: 'LG Browser' - version: '$1' - # LuaKit - regex: 'LuaKit(?:/(\d+[\.\d]+))?' name: 'LuaKit' @@ -1592,16 +2391,11 @@ name: 'Off By One' version: '' -#Oregano -- regex: 'Oregano(?:[ /](\d+[\.\d]+))?' +#Oregano (https://oregan.net/) +- regex: '(?:Oregano|OreganMediaBrowser)(?:[ /](\d+[\.\d]+))?' name: 'Oregano' version: '$1' -#Otter Browser -- regex: 'Otter(?:[ /](\d+[\.\d]+))?' - name: 'Otter Browser' - version: '$1' - #Polaris - regex: '(?:Polaris|Embider)(?:[/ ](\d+[\.\d]+))?' name: 'Polaris' @@ -1612,13 +2406,6 @@ name: 'SEMC-Browser' version: '$1' -#Seraphic Sraf -- regex: 'Sraf(?:[/ ](\d+[\.\d]+))?' - name: 'Seraphic Sraf' - version: '$1' - engine: - default: 'Blink' - #Shiira - regex: 'Shiira(?:[/ ](\d+[\.\d]+))?' name: 'Shiira' @@ -1643,11 +2430,6 @@ name: 'Sunrise' version: '$1' -#SuperBird -- regex: 'SuperBird(?:/(\d+[\.\d]+))?' - name: 'SuperBird' - version: '$1' - #Vision Mobile Browser - regex: 'Vision-Browser(?:/(\d+[\.\d]+))' name: 'Vision Mobile Browser' @@ -1668,13 +2450,8 @@ name: 'BlackBerry Browser' version: '' -#BriskBard -- regex: 'BriskBard(?:/(\d+[\.\d]+))?' - name: 'BriskBard' - version: '$1' - #Android Browser -- regex: 'Android' +- regex: '(?<! like )Android' name: 'Android Browser' version: '' engine: @@ -1684,11 +2461,11 @@ - regex: 'Coast(?:/(\d+[\.\d]+))?' name: 'Coast' version: '$1' - -#Qutebrowser -- regex: 'qutebrowser(?:/(\d+[\.\d]+))?' - name: 'Qutebrowser' +- regex: 'Opera%20Coast/(\d+[\.\d]+)? CFNetwork/.+Darwin/.+(?!.*x86_64)' + name: 'Coast' version: '$1' + engine: + default: 'WebKit' # surf (https://surf.suckless.org/) - regex: 'Surf(?:/(\d+[\.\d]+))?' @@ -1697,6 +2474,13 @@ engine: default: 'WebKit' +# Safari Technology Preview (https://developer.apple.com/safari/technology-preview/) +- regex: 'Safari%20Technology%20Preview/(\d+[\.\d]+)' + name: 'Safari Technology Preview' + version: '$1' + engine: + default: 'WebKit' + #Safari - regex: '(?:(?:iPod|iPad|iPhone).+Version|MobileSafari)/(\d+[\.\d]+)' name: 'Mobile Safari' @@ -1708,23 +2492,23 @@ version: '$1' engine: default: 'WebKit' -- regex: '(?:iPod|iPhone|iPad)' +- regex: '(?:iPod|(?<!Apple TV; U; CPU )iPhone|iPad)' name: 'Mobile Safari' version: '' engine: default: 'WebKit' -- regex: 'Version/(\d+[\.\d]+).*Safari/|Safari/\d+' +- regex: 'Version/(\d+[\.\d]+).*Safari/|(?:Safari|Safari(?:%20)?%E6%B5%8F%E8%A7%88%E5%99%A8)/?\d+' name: 'Safari' version: '$1' engine: default: 'WebKit' - -#Dorado -- regex: 'Dorado WAP-Browser[/ ](\d+[\.\d]+)' + +# Dorado +- regex: 'Dorado WAP-Browser(?:[/ ](\d+[\.\d]+))?' name: 'Dorado' version: '$1' -#NetSurf +# NetSurf - regex: 'NetSurf(?:/(\d+[\.\d]+))?' name: 'NetSurf' version: '$1' @@ -1749,7 +2533,18 @@ default: 'Gecko' # GOG Galaxy -- regex: 'GOGGalaxyClient/(?:(\d+[\.\d]+))?' +- regex: 'GOGGalaxyClient/(\d+[\.\d]+)?' name: 'GOG Galaxy' version: '$1' - \ No newline at end of file + +# MAUI Wap Browser +- regex: 'WAP Browser/MAUI|(?:\w*)Maui Wap Browser|MAUI[- ]Browser' + name: 'MAUI WAP Browser' + version: '' + +# SP Browser +- regex: 'SP%20Browser/(\d+[\.\d]+)' + name: 'SP Browser' + version: '$1' + engine: + default: 'WebKit' diff --git a/priv/ua_inspector/client.feed_readers.yml b/priv/ua_inspector/client.feed_readers.yml index 96f02bb97a932114dcbc7ce33ae397a0d94f34e3..69c7242e2992b94195e02a8a97187114b962fd5a 100644 --- a/priv/ua_inspector/client.feed_readers.yml +++ b/priv/ua_inspector/client.feed_readers.yml @@ -22,19 +22,13 @@ version: '' url: 'http://lincgeek.org/bashpodder/' type: 'Feed Reader' - + - regex: 'Breaker/v([\d\.]+)' name: 'Breaker' version: '$1' url: 'https://www.breaker.audio/' type: 'Feed Reader App' -- regex: 'Downcast/([\d\.]+)' - name: 'Downcast' - version: '$1' - url: 'http://downcastapp.com/' - type: 'Feed Reader App' - - regex: 'FeedDemon(?:/(\d+[\.\d]+))?' name: 'FeedDemon' version: '$1' @@ -50,7 +44,7 @@ - regex: 'QuiteRSS(?:[/ ](\d+[\.\d]+))?' name: 'QuiteRSS' version: '$1' - url: https://quiterss.org + url: 'https://quiterss.org' type: 'Feed Reader App' - regex: 'gPodder/([\d\.]+)' @@ -71,7 +65,7 @@ url: 'http://liferea.sf.net/' type: 'Feed Reader' -- regex: 'NetNewsWire(?:[/ ](\d+[\.\d]+))?' +- regex: '(?:NetNewsWire|Evergreen.+MacOS)(?:[/ ](\d+[\.\d]+))?' name: 'NetNewsWire' version: '$1' url: 'http://netnewswireapp.com/' @@ -113,7 +107,7 @@ url: 'http://readkitapp.com/' type: 'Feed Reader App' -- regex: 'Reeder(?:[/ ](\d+[\.\d]+))?' +- regex: 'Reeder[/ ](\d+[\.\d]+)' name: 'Reeder' version: '$1' url: 'http://reederapp.com/' diff --git a/priv/ua_inspector/client.libraries.yml b/priv/ua_inspector/client.libraries.yml index 2f40d469f47bf565bc845083935bf1caa6881215..3f18ffdd696f388fcd2df4acad68846022dcf2bf 100644 --- a/priv/ua_inspector/client.libraries.yml +++ b/priv/ua_inspector/client.libraries.yml @@ -5,11 +5,21 @@ # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later ############### +# AnyEvent HTTP (http://software.schmorp.de/pkg/AnyEvent) +- regex: 'AnyEvent-HTTP(?:/(\d+[\.\d]+))?' + name: 'AnyEvent HTTP' + version: '$1' + +# SlimerJS (https://www.slimerjs.org/) +- regex: 'SlimerJS/(\d+[\.\d]+)' + name: 'SlimerJS' + version: '$1' + - regex: 'Wget(?:/(\d+[\.\d]+))?' name: 'Wget' version: '$1' -- regex: 'Guzzle(?:/(\d+[\.\d]+))?' +- regex: 'Guzzle(?:Http)?(?:/(\d+[\.\d]+))?' name: 'Guzzle (PHP HTTP Client)' version: '$1' @@ -25,6 +35,14 @@ name: 'Python urllib' version: '$1' +- regex: 'Apache-HttpClient(?:/?(\d+[\.\d]+))?' + name: 'Apache HTTP Client' + version: '$1' + +- regex: 'Java-http-client(?:/?(\d+[\.\d]+))?' + name: 'Java HTTP Client' + version: '$1' + - regex: 'Java(?:/?(\d+[\.\d]+))?' name: 'Java' version: '$1' @@ -55,7 +73,7 @@ name: 'aiohttp' version: '$1' -- regex: 'Google-HTTP-Java-Client(?:/(\d+[\.\d\w-]+))?' +- regex: 'Google-HTTP-Java-Client(?:/(\d+[\.\w-]+))?' name: 'Google HTTP Java Client' version: '$1' @@ -104,10 +122,83 @@ - regex: 'node-fetch/(\d+[\.\d]+)' name: 'Node Fetch' - version: $1 + version: '$1' url: 'https://github.com/node-fetch/node-fetch' - regex: 'ReactorNetty/(\d+[\.\d]+)' name: 'ReactorNetty' - version: $1 + version: '$1' url: 'https://github.com/reactor/reactor-netty' + +- regex: 'PostmanRuntime(?:/(\d+[\.\d]+))?' + name: 'Postman Desktop' + version: '$1' + url: 'https://github.com/postmanlabs/postman-runtime' + +- regex: 'Jakarta Commons-HttpClient/([\.\d]+)' + name: 'Jakarta Commons HttpClient' + version: '$1' + url: 'https://hc.apache.org/httpclient-3.x' + +- regex: 'WinHttp.WinHttpRequest.+([\.\d]+)' + name: 'WinHttp WinHttpRequest' + version: '$1' + +- regex: 'WinHTTP' + name: 'Windows HTTP' + version: '' + +# THTTPClient in delphi 10+ default useragent +- regex: 'Embarcadero URI Client/([\.\d]+)' + name: 'Embarcadero URI Client' + version: '$1' + +- regex: 'Mikrotik/([\.\d]+)' + name: 'Mikrotik Fetch' + version: '$1' + +- regex: 'GRequests(?:/(\d+[\.\d]+))?' + name: 'GRequests' + version: '$1' + +# https://doc.akka.io/ +- regex: 'akka-http/([\.\d]+)' + name: 'Akka HTTP' + version: '$1' + +# this added need added tests +- regex: 'aria2(?:/(\d+[\.\d]+))?' + name: 'Aria2' + version: '$1' + +- regex: 'BTWebClient/' + name: 'uTorrent' + version: '' + +- regex: 'gvfs/(?:(\d+[\.\d]+))?' + name: 'gvfs' + version: '$1' + +# https://openwrt.org/packages/pkgdata/uclient-fetch +- regex: 'uclient-fetch' + name: 'uclient-fetch' + version: '' + +# https://github.com/microsoft/cpprestsdk +- regex: 'cpprestsdk/([\.\d]+)' + name: 'C++ REST SDK' + version: '$1' + +- regex: 'lua-resty-http/([\.\d]+).+ngx_' + name: 'LUA OpenResty NGINX' + version: '$1' + +# https://github.com/Kong/unirest-java +- regex: 'unirest-java/([\.\d]+)' + name: 'Unirest for Java' + version: '$1' + +# jsdom (https://github.com/jsdom/jsdom) +- regex: 'jsdom/([\.\d]+)' + name: 'jsdom' + version: '$1' diff --git a/priv/ua_inspector/client.mediaplayers.yml b/priv/ua_inspector/client.mediaplayers.yml index 51e284b235aba56cb83b1e1a13f7e16e4409996e..e60eaa85fdfb40021cd3f76b8414dd65821380be 100644 --- a/priv/ua_inspector/client.mediaplayers.yml +++ b/priv/ua_inspector/client.mediaplayers.yml @@ -32,7 +32,7 @@ - regex: 'FlyCast(?:/([\d\.]+))?' name: 'FlyCast' version: '$1' - + - regex: 'foobar2000(?:/([\d\.]+))?' name: 'Foobar2000' version: '$1' @@ -65,6 +65,10 @@ name: 'SubStream' version: '$1' +- regex: 'Sonos/([\d\.]+)?' + name: 'SONOS' + version: '$1' + - regex: '(?:Lib)?VLC(?:/([\d\.]+))?' name: 'VLC' version: '$1' @@ -100,3 +104,23 @@ - regex: 'mpv (?:(\d+[\.\d]+))?' name: 'mpv' version: '$1' + +- regex: 'foobar2000(?:/([\w\.]+))?' + name: 'foobar2000' + version: '$1' + +- regex: 'HTC Streaming Player' + name: 'HTC Streaming Player' + version: '' + +- regex: 'MediaGo(?:/([\w\.]+))?' + name: 'Sony Media Go' + version: '$1' + +- regex: 'MPlayer[ /](\d+\.[\d\.])' + name: 'MPlayer' + version: '$1' + +- regex: 'Downcast/(\d+\.[\d\.]+)?' + name: 'Downcast' + version: '$1' diff --git a/priv/ua_inspector/client.mobile_apps.yml b/priv/ua_inspector/client.mobile_apps.yml index 6a20292e46c5908f0a76689c280220562b4142af..5b2e5a8f67e7795c82829afd999320e2f623bd21 100644 --- a/priv/ua_inspector/client.mobile_apps.yml +++ b/priv/ua_inspector/client.mobile_apps.yml @@ -19,11 +19,36 @@ name: 'bPod' version: '' -# Facebook Messenger -- regex: '(?:MessengerForiOS|MESSENGER).(?:FBAV)(?:[ /]([\d\.]+))?' +# Facebook Audience Network +- regex: 'AudienceNetworkForAndroid.+(?:FBAV)(?:[ /]([\d\.]+))?' + name: 'Facebook Audience Network' + version: '$1' + +# Facebook Messenger (https://play.google.com/store/apps/details?id=com.facebook.orca) +- regex: '(?:MessengerForiOS|MESSENGER|FB_IAB/Orca-Android).(?:FBAV)(?:[ /]([\d\.]+))?' name: 'Facebook Messenger' version: '$1' +# Facebook Messenger Lite +- regex: '(?:mLite|MessengerLite(?:ForiOS)?).(?:FBAV)(?:[ /]([\d\.]+))?' + name: 'Facebook Messenger Lite' + version: '$1' + +# Facebook Groups +- regex: '(?:GroupsForiOS).(?:FBAV)(?:[ /]([\d\.]+))?' + name: 'Facebook Groups' + version: '$1' + +# Facebook Lite (https://play.google.com/store/apps/details?id=com.facebook.lite) +- regex: 'FBAN/EMA.+FBAV(?:[ /]([\d\.]+))?' + name: 'Facebook Lite' + version: '$1' + +# Meta Business Suite (https://apps.apple.com/us/app/facebook-business-suite/id514643583) +- regex: 'FBAN/FBPageAdmin.+FBAV(?:[ /]([\d\.]+))?' + name: 'Meta Business Suite' + version: '$1' + # Facebook - regex: '(?:FBAV|com.facebook.katana)(?:[ /]([\d\.]+))?' name: 'Facebook' @@ -52,10 +77,21 @@ name: 'Google Plus' version: '' +# Google Drive (https://apps.apple.com/us/app/google-drive/id507874739) +- regex: 'Google.DriveExtension(?:/([\d\.]+))?' + name: 'Google Drive' + version: '$1' + # WeChat -- regex: 'MicroMessenger/([^ ]+)' +- regex: 'MicroMessenger/([\d\.]+)' name: 'WeChat' version: '$1' +- regex: 'WeChat/([\d\.]+)' + name: 'WeChat' + version: '$1' +- regex: 'WeChatShareExtensionNew/([\d\.]+)' + name: 'WeChat Share Extension' + version: '$1' # DingTalk - regex: 'DingTalk/([0-9\.]+)' @@ -68,7 +104,7 @@ version: '$1' # Pinterest -- regex: 'Pinterest(?:/([\d\.]+))?' +- regex: 'Pinterest(?: for (?:Android(?: Tablet)?|iOS))?(?:/([\d\.]+))?' name: 'Pinterest' version: '$1' @@ -82,6 +118,25 @@ name: 'YouTube' version: '$1' +# Netflix (https://play.google.com/store/apps/details?id=com.netflix.mediaclient) +- regex: 'com.netflix.mediaclient(?:/(\d+\.[\d\.]+))?' + name: 'Netflix' + version: '$1' + +# Downcast (www.downcastapp.com | https://apps.apple.com/us/app/downcast/id393858566) +- regex: 'Downcast/(\d+\.[\d\.]+)?(?:.+(?:!Mac)|$)' + name: 'Downcast' + version: '$1' + +# Flipp (https://apps.apple.com/us/app/flipp-weekly-shopping/id725097967) +- regex: 'Flipp-iOS/.+CFNetwork' + name: 'Flipp' + version: '' + +- regex: 'Flipp-iOS/(\d+[\.\d]+)' + name: 'Flipp' + version: '$1' + # AFNetworking generic - regex: '([^/]+)/(\d+(?:\.\d+)+) \((?:iPhone|iPad); iOS [0-9\.]+; Scale/[0-9\.]+\)' name: '$1' @@ -101,148 +156,131 @@ - regex: 'Instacast(?:HD)?/(\d\.[\d\.abc]+) CFNetwork/([\d\.]+) Darwin/([\d\.]+)' name: 'Instacast' version: '$1' -- - regex: 'Podcasts/([\d\.]+)' +- regex: 'Podcasts/([\d\.]+)' name: 'Podcasts' version: '$1' -- - regex: 'Pocket Casts(?:, (?:Android|iOS) v([\d\.]+))?' +- regex: 'Pocket Casts(?:, (?:Android|iOS) v([\d\.]+))?' name: 'Pocket Casts' version: '$1' -- - regex: 'Podcat/([\d\.]+)' +- regex: 'Podcat/([\d\.]+)' name: 'Podcat' version: '$1' - -- - regex: 'BeyondPod' +- regex: 'BeyondPod' name: 'BeyondPod' version: -- - regex: 'AntennaPod/?([\d\.]+)?' +- regex: 'AntennaPod/?([\d\.]+)?' name: 'AntennaPod' version: '$1' -- - regex: 'Overcast/([\d\.]+)' +- regex: 'Overcast/([\d\.]+)' name: 'Overcast' version: '$1' -- - regex: '(?:CastBox|fm.castbox.audiobook.radio.podcast)/?([\d\.]+)?' +- regex: '(?:CastBox|fm.castbox.audiobook.radio.podcast)/?([\d\.]+)?' name: 'CastBox' version: '$1' -- - regex: 'Player FM' +- regex: 'Player FM' name: 'Player FM' version: '' -- - regex: 'Podkicker(?: Pro)?/([\d\.]+)' - name: 'Podkicker' - version: '$1' -- - regex: 'PodcastRepublic/([\d\.]+)' +- regex: 'Podkicker( (?:Pro|Classic))?/([\d\.]+)' + name: 'Podkicker$1' + version: '$2' +- regex: 'PodcastRepublic/([\d\.]+)' name: 'Podcast Republic' version: '$1' -- - regex: 'Castro/(\d+)' +- regex: 'Castro/(\d+)' name: 'Castro' version: '$1' -- - regex: 'Castro 2 ([\d\.]+)/[\d]+ Like iTunes' +- regex: 'Castro 2 ([\d\.]+)/[\d]+ Like iTunes' name: 'Castro 2' version: '$1' -- - regex: 'Castro 2' +- regex: 'Castro 2' name: 'Castro 2' version: '' -- - regex: 'DoggCatcher' +- regex: 'DoggCatcher' name: 'DoggCatcher' version: -- - regex: 'PodcastAddict/v([\d]+)' +- regex: 'PodcastAddict/v([\d]+)' name: 'Podcast & Radio Addict' version: '$1' -- - regex: 'Podcat/([\d]+) CFNetwork/([\d\.]+) Darwin/([\d\.]+)' +- regex: 'Podcat(?:%202)?/([\d]+) CFNetwork' name: 'Podcat' version: '$1' -- - regex: 'i[cC]atcher[^\d]+([\d\.]+)' +- regex: 'iCatcher[^\d]+([\d\.]+)' name: 'iCatcher' version: '$1' -- - regex: 'YelpApp/([\d\.]+)' +- regex: 'YelpApp/([\d\.]+)' name: 'Yelp Mobile' version: '$1' -- - regex: 'jp.co.yahoo.android.yjtop/([\d\.]+)' +- regex: 'jp.co.yahoo.android.yjtop/([\d\.]+)' name: 'Yahoo! Japan' version: '$1' -- - regex: 'RSSRadio/([\d]+)?' +- regex: 'RSSRadio/([\d]+)?' name: 'RSSRadio' version: '$1' -- - regex: 'SogouSearch Android[\d\.]+ version([\d\.]+)?' +- regex: 'SogouSearch Android[\d\.]+ version([\d\.]+)?' name: 'SogouSearch App' version: '$1' -- - regex: 'NewsArticle/([\d\.]+)?' +- regex: 'NewsArticle/([\d\.]+)?' name: 'NewsArticle App' version: '$1' -- - regex: 'tieba/([\d\.]+)?' +- regex: 'tieba/([\d\.]+)?' name: 'tieba' version: '$1' -- - regex: 'com\.douban\.group/([\d\.]+)?' +- regex: 'com\.douban\.group/([\d\.]+)?' name: 'douban App' version: '$1' -- - regex: 'BingWeb/([\d\.]+)?' +- regex: 'BingWeb/([\d\.]+)?' name: 'BingWebApp' version: '$1' -- - regex: 'GSA/([\d\.]+)?' +- regex: '(?:com.google.GoogleMobile|GSA)/([\d\.]+)?' name: 'Google Search App' version: '$1' -- - regex: 'Flipboard/([\d\.]+)?' +- regex: 'Flipboard/([\d\.]+)?' name: 'Flipboard App' version: '$1' -- - regex: 'Instagram[ /]([\d\.]+)?' +- regex: 'Instagram[ /]([\d\.]+)?' name: 'Instagram App' version: '$1' -- - regex: 'baiduboxapp/([\d\.]+)?' +- regex: 'baiduboxapp/([\d\.]+)?' name: 'Baidu Box App' version: '$1' -- - regex: 'Crosswalk(?!.*(?:Streamy|QwantMobile))/([\d\.]+)?' +- regex: 'Crosswalk(?!.*(?:Streamy|QwantMobile))/([\d\.]+)?' name: 'CrosswalkApp' version: '$1' -- - regex: 'Twitter for iPhone[/]?([\d\.]+)?' +- regex: 'Twitter for iPhone[/]?([\d\.]+)?' name: 'Twitter' version: '$1' -- - regex: 'Twitter/([\d\.]+)' +- regex: 'Twitter/([\d\.]+)' name: 'Twitter' version: '$1' -- - regex: 'TwitterAndroid[/]?([\d\.]+)?' +- regex: 'TwitterAndroid[/]?([\d\.]+)?' name: 'Twitter' version: '$1' - -- - regex: 'TopBuzz/([\d\.]+)' +# Pocket Casts (https://pocketcasts.com) +- regex: '^Pocket Casts' + name: 'Pocket Casts' + version: '' +# Gaana (https://gaana.com) +- regex: '^GaanaAndroid-([\d\.]+)' + name: 'Gaana' + version: '$1' +- regex: 'TopBuzz/([\d\.]+)' name: 'TopBuzz' version: '$1' -- - regex: 'Snapchat/([\d\.]+)' +- regex: 'Snapchat/([\d\.]+)' name: 'Snapchat' version: '$1' +- regex: 'AhaRadio2/([\d\.]+)' + name: 'Aha Radio 2' + version: '$1' +# Unibox (https://apps.apple.com/app/id933879046) +- regex: 'Unibox/([\d\.]+)' + name: 'Unibox' + version: '' + +# Strimio (https://www.strimio.com/) +- regex: 'strimio(?:-desktop)/(\d+\.(?:[\.\d]+))?' + name: 'Strimio' + version: '$1' # UnityPlayer - regex: 'UnityPlayer/([\d\.]+)' @@ -272,6 +310,884 @@ name: 'Siri' version: '1.0' -- regex: 'LinkedIn/([\d\.]+)' +- regex: 'LinkedIn(?:App)?(?:/([\d\.]+))?' name: 'LinkedIn' version: '$1' + +# https://apps.apple.com/ru/app/instapaper/id288545208 +- regex: 'Instapaper/([\d\.]+)' + name: 'Instapaper' + version: '$1' + +# https://apps.apple.com/us/app/keeper-password-manager/id287170072 +- regex: 'Keeper/([\d\.]+)' + name: 'Keeper Password Manager' + version: '$1' + +# https://apps.apple.com/us/app/skyeng-teachers/id1483049537 +- regex: 'Skyeng Teachers/([\d\.]+)' + name: 'Skyeng Teachers' + version: '$1' + +- regex: 'Kik/([\d\.]+) \(Android' + name: 'Kik' + version: '$1' + +- regex: 'Procast/?([\d\.]+)?' + name: 'Procast' + version: '$1' + +# DeviantArt (https://apps.apple.com/us/app/deviantart/id925219396) +- regex: 'DeviantArt/([\d\.]+)' + name: 'DeviantArt' + version: '' + +# Discord (https://apps.apple.com/us/app/discord-talk-chat-hang-out/id985746746) +- regex: 'discord/([\d\.]+).+Electron' + name: 'Discord' + version: '$1' + +- regex: 'discord(?:-Updater)?/([\d\.]+)' + name: 'Discord' + version: '' + +# Covenant Eyes (https://apps.apple.com/us/app/covenant-eyes/id335318146) +- regex: 'Covenant%20Eyes/([\d\.]+)' + name: 'Covenant Eyes' + version: '$1' + +# HP Smart (https://apps.apple.com/us/app/hp-smart/id469284907) +- regex: 'HP%20Smart/([\d\.]+)' + name: 'HP Smart' + version: '' + +# Bitsboard (https://apps.apple.com/us/app/bitsboard-flashcards-games/id516842210) +- regex: 'Bitsboard/([\d\.]+)' + name: 'Bitsboard' + version: '$1' + +# BetBull (https://apps.apple.com/us/app/betbull-sport-tips-casino/id1032680895) +- regex: 'Betbull/([\d\.]+)' + name: 'BetBull' + version: '' + +# U-Cursos (https://apps.apple.com/us/app/u-cursos/id834515435) +- regex: 'U-Cursos/([\d\.]+)' + name: 'U-Cursos' + version: '' + +# https://apps.apple.com/mt/app/1password-password-manager/id568903335 +- regex: '1PasswordThumbs/([\d\.]+)' + name: '1Password' + version: '$1' + +- regex: '(?:Microsoft Office )?(Access|Excel|OneDrive for Business|OneNote|PowerPoint|Project|Publisher|Visio|Word)[ /]([\d\.]+)' + name: 'Microsoft Office $1' + version: '$2' + +# https://apps.apple.com/us/app/microsoft-onedrive/id477537958 +- regex: 'OneDriveiOSApp/([\d\.]+)' + name: 'Microsoft OneDrive' + version: '$1' + +- regex: 'Microsoft Office Mobile/([\d\.]+)' + name: 'Microsoft Office Mobile' + version: '$1' + +# Skype +- regex: 'Skype/([\d\.]+)' + name: 'Skype' + version: '$1' + +- regex: 'OC/([\d\.]+) \(Skype for Business\)' + name: 'Skype for Business' + version: '$1' + +# https://apps.apple.com/us/app/skype-for-business/id605841731 +- regex: 'iPhoneLync/([\d\.]+)' + name: 'Skype for Business' + version: '$1' + +# GroupMe (https://apps.apple.com/us/app/groupme/id392796698) +- regex: 'GroupMe/([\d\.]+)' + name: 'GroupMe' + version: '$1' + +# TikTok (https://apps.apple.com/app/id835599320 | https://play.google.com/store/apps/details?id=com.zhiliaoapp.musically) +- regex: '(?:TikTok[/ ]|musical_ly_|AppName/musical_ly app_version/)(\d+\.(?:[\.\d]+))?' + name: 'TikTok' + version: '$1' + +# https://apps.apple.com/app/id393499958 +- regex: 'NAVER/(\d+[\.\d]+) CFNetwork' + name: 'Naver' + version: '$1' + +# https://apps.apple.com/app/id1026349850 +- regex: 'Copied/(\d+[\.\d]+) CFNetwork' + name: 'Copied' + version: '' + +# https://apps.apple.com/app/id448639966 +- regex: 'Pic%20Collage/(\d+[\.\d]+) CFNetwork' + name: 'Pic Collage' + version: '$1' + +# https://apps.apple.com/app/id506003812 +- regex: 'Papers/(\d+[\.\d]+) CFNetwork' + name: 'Papers' + version: '$1' + +# https://apps.apple.com/app/id331787573 +- regex: 'RoboForm/(\d+[\.\d]+) CFNetwork' + name: 'RoboForm' + version: '' + +# https://apps.apple.com/app/id618783545 +- regex: 'Slack/(\d+[\.\d]+) CFNetwork' + name: 'Slack' + version: '' +- regex: 'com.tinyspeck.chatlyio/(\d+[\.\d]+)' + name: 'Slack' + version: '$1' + +# https://apps.apple.com/us/app/id362057947 +- regex: 'KAKAOTALK (\d+\.(?:[\.\d]+))?' + name: 'KakaoTalk' + version: '$1' + +# https://apps.apple.com/us/app/shopee-t%E1%BA%BFt-sale-27-01/id959841449 +- regex: 'ShopeeVN/([\d\.]+)' + name: 'Shopee' + version: '$1' + +# https://apps.apple.com/us/app/sport1/id1185932089 +- regex: 'SPORT1/([\d\.]+)' + name: 'SPORT1' + version: '' + +# https://apps.apple.com/us/app/clovia-lingerie-shopping-app/id1243996857 +- regex: 'Clovia/([\d\.]+)' + name: 'Clovia' + version: '$1' + +# https://apps.apple.com/us/app/showme-interactive-whiteboard/id445066279 +- regex: 'ShowMe/([\d\.]+)' + name: 'ShowMe' + version: '$1' + +# https://apps.apple.com/us/app/wattpad-read-write-stories/id306310789 +- regex: 'Wattpad/([\d\.]+)' + name: 'Wattpad' + version: '$1' + +# https://apps.apple.com/us/app/the-wall-street-journal/id364387007 +- regex: 'WSJ/([\d\.]+)' + name: 'The Wall Street Journal' + version: '' + +# https://apps.apple.com/us/app/wh-question-cards-pro-who-what-when-where-why/id544870563 +- regex: 'WH%20Questions/([\d\.]+)' + name: 'WH Questions' + version: '$1' + +# https://apps.apple.com/us/app/whisper-share-express-meet/id506141837 +- regex: 'whisper/([\d\.]+)' + name: 'Whisper' + version: '' + +# https://apps.apple.com/us/app/opal-travel/id941006607 +- regex: 'Opal/([\d\.]+)' + name: 'Opal Travel' + version: '$1' + +# https://apps.apple.com/us/app/zalo/id579523206 +- regex: 'Zalo/([\d\.]+)' + name: 'Zalo' + version: '$1' + +# https://apps.apple.com/us/app/%D1%8F%D0%BD%D0%B4%D0%B5%D0%BA%D1%81/id1050704155 +- regex: 'Yandex/([\d\.]+)' + name: 'Yandex' + version: '' + +- regex: 'Zoho%20Chat/([\d\.]+)' + name: 'Zoho Chat' + version: '$1' + +# Thunder (https://xl11.xunlei.com/) +- regex: 'Thunder/(\d+[\.\d]+)' + name: 'Thunder' + version: '$1' + +# CGN (https://www.cgn.it/) +- regex: 'CGNBrowser/(\d+[\.\d]+)' + name: 'CGN' + version: '$1' + +# Podbean (http://podbean.com | https://play.google.com/store/apps/details?id=com.podbean.app.podcast) +- regex: 'Podbean/.+App (\d+[\.\d]+)' + name: 'Podbean' + version: '$1' + +# Alexa Media Player +- regex: 'AlexaMediaPlayer/(\d+[\.\d]+)' + name: 'Alexa Media Player' + version: '$1' + +# TuneIn Radio Pro +- regex: 'TuneIn Radio Pro(?:[^/]*)/(\d+[\.\d]+)' + name: 'TuneIn Radio Pro' + version: '$1' +- regex: 'TuneIn(?: Radio(?:[^/]*))?/(\d+[\.\d]+)' + name: 'TuneIn Radio' + version: '$1' + +# Podcaster +- regex: 'Podcaster/(\d+[\.\d]+)' + name: 'Podcaster' + version: '$1' + +# DevCasts (https://apps.apple.com/app/id1481596184) +- regex: 'devcasts/(\d+[\.\d]+)' + name: 'DevCasts' + version: '$1' + +# Swoot +- regex: 'Swoot/(\d+[\.\d]+)' + name: 'Swoot' + version: '$1' + +# RadioPublic (https://play.google.com/store/apps/details?id=com.radiopublic.android) +- regex: 'RadioPublic/android-(\d+[\.\d]+)' + name: 'RadioPublic' + version: '$1' + +# Podimo (https://play.google.com/store/apps/details?id=com.podimo) +- regex: 'Podimo/(\d+[\.\d]+)' + name: 'Podimo' + version: '$1' + +# Evolve Podcast (https://apps.apple.com/us/app/id1199070742) +- regex: 'com.evolve.podcast/(\d+[\.\d]+)' + name: 'Evolve Podcast' + version: '$1' + +- regex: ' Rocket.Chat\+?/(\d+[\.\d]+)' + name: 'Rocket Chat' + version: '$1' + +# Pandora +- regex: '^Pandora Audio.+Android' + name: 'Pandora' + version: '' + +# NPR One https://play.google.com/store/apps/details?id=org.npr.one +- regex: '^NPROneAndroid' + name: 'NPR One' + version: '' + +# Wirtschafts Woche Nachrichte https://apps.apple.com/de/app/wirtschaftswoche-nachrichten/id1339187646 +- regex: '^WirtschaftsWoche-iOS-(\d+[\.\d]+)' + name: 'Wirtschafts Woche' + version: '$1' + +- regex: '^TVirl/(\d+[\.\d]+)' + name: 'TVirl' + version: '$1' + +# ChMate https://play.google.com/store/apps/details?id=jp.co.airfront.android.a2chMate +- regex: '2?chMate/(\d+[\.\d]+)' + name: 'ChMate' + version: '$1' + +# 2tch https://apps.apple.com/jp/app/2tch/id305982914 +- regex: '2tch/(\d+[\.\d]+)' + name: '2tch' + version: '$1' + +# Ciisaa https://play.google.com/store/apps/details?id=com.gmail.aosoan.ciisaa +- regex: 'Ciisaa/(\d+[\.\d]+)' + name: 'Ciisaa' + version: '$1' + +# BB2C https://itunes.apple.com/us/app/bb2c/id298820042?mt=8 +- regex: 'BB2C (\d+[\.\d]+)' + name: 'BB2C' + version: '$1' + +# twinkle https://itunes.apple.com/app/twinkle/id463142843 +- regex: 'twinkle/(\d+[\.\d]+)' + name: 'twinkle' + version: '$1' + +# JaneStyle https://apps.apple.com/app/id1157926535 +- regex: 'JaneStyle_iOS/(\d+[\.\d]+)' + name: 'JaneStyle' + version: '$1' + +# Binance https://play.google.com/store/apps/details?id=com.binance.dev +- regex: 'BNC/.+\(Android (\d+[\.\d]+)\)' + name: 'Binance' + version: '$1' + +# Binance (https://www.binance.com/en/desktop-download) +- regex: 'Binance/(\d+[\.\d]+)' + name: 'Binance' + version: '$1' + +# My World https://apps.apple.com/app/id598556821 +- regex: 'ru\.mail\.my/(\d+[\.\d]+)' + name: 'My World' + version: '$1' + +# Odnoklassniki https://play.google.com/store/apps/details?id=ru.ok.android https://apps.apple.com/app/id398465290 +- regex: 'OK(?:Android|iOS)/([\d\.]+)' + name: 'Odnoklassniki' + version: '$1' + +# YakYak https://github.com/yakyak/yakyak +- regex: 'yakyak/(\d+[\.\d]+)' + name: 'YakYak' + version: '$1' + +# Microsoft Teams (https://www.microsoft.com/en/microsoft-teams/group-chat-software) +- regex: 'Teams/(\d+[\.\d]+)' + name: 'Teams' + version: '$1' + +- regex: 'TeamsMobile-(?:Android|iOS)' + name: 'Teams' + version: '' + +# Streamlabs OBS (https://streamlabs.com/) +- regex: 'StreamlabsOBS/(\d+[\.\d]+)' + name: 'Streamlabs OBS' + version: '$1' + +# Blitz (https://blitz.gg/) +- regex: 'Blitz/([\d\.]+)' + name: 'Blitz' + version: '$1' + +# OfferUp (https://play.google.com/store/apps/details?id=com.offerup) +- regex: 'OfferUp/([\d\.]+)' + name: 'OfferUp' + version: '$1' + +# Vuhuv (https://play.google.com/store/apps/details?id=com.vuhuv) +- regex: 'Vuhuv/([\d\.]+)' + name: 'Vuhuv' + version: '$1' + +- regex: '.+/(?:gfibertv|gftv200)-([\d]+)-' + name: 'Google Fiber TV' + version: '$1' + +# QuickCast (https://play.google.com/store/apps/details?id=com.wukongtv.wkcast.intl) +- regex: 'QuickCast$' + name: 'QuickCast' + version: '' + +# AliExpress (https://play.google.com/store/apps/details?id=com.alibaba.aliexpresshd) +- regex: 'Aliexpress(?:Android)?/([\d\.]+)' + name: 'AliExpress' + version: '$1' + +# Blue Proxy (https://play.google.com/store/apps/details?id=com.udicorn.proxy) +- regex: 'Blue Proxy/([\d\.]+)' + name: 'Blue Proxy' + version: '$1' + +# https://www.n-tv.de/ +- regex: 'ntvmobil/' + name: 'NTV Mobil' + version: '' + +# COAF SMART Citizen (https://apps.apple.com/app/id1478339047) +- regex: 'COAF%20SMART%20Citizen/' + name: 'COAF SMART Citizen' + version: '' + +# GitHub Desktop (https://desktop.github.com/) +- regex: 'GitHubDesktop/([\d\.]+)' + name: 'GitHub Desktop' + version: '$1' + +# Logi Options+ (https://www.logitech.com/en-us/software/logi-options-plus.html) +- regex: 'logioptionsplus/([\d\.]+)' + name: 'Logi Options+' + version: '$1' + +# Emby Theater (https://emby.media/emby-theater.html) +- regex: 'EmbyTheater/([\d\.]+)' + name: 'Emby Theater' + version: '$1' + +# Y8 Browser (https://www.y8.com/) +- regex: 'y8-browser/([\d\.]+)' + name: 'Y8 Browser' + version: '$1' + +# NuMuKi Browser (https://www.numuki.com/app-download/) +- regex: 'NuMuKiBrowser/([\d\.]+)' + name: 'NuMuKi Browser' + version: '$1' + +# Landis+Gyr AIM Browser (https://www.landisgyr.eu/product/gridstream-aim/) +- regex: 'LandisGyrAIMbrowser/(\d+[\.\d]+)' + name: 'Landis+Gyr AIM Browser' + version: '$1' + +# Visual Studio Code (https://code.visualstudio.com/) +- regex: 'Code/(\d+[\.\d]+)' + name: 'Visual Studio Code' + version: '$1' + +# Wireshark (https://www.wireshark.org) +- regex: 'Wireshark/(\d+[\.\d]+)' + name: 'Wireshark' + version: '$1' + +# Samsung Magician (https://www.samsung.com/semiconductor/minisite/ssd/product/consumer/magician/) +- regex: 'Magician' + name: 'Samsung Magician' + version: '' + +# Razer Synapse (https://www.razer.com/synapse-3) +- regex: 'Razer Central PC' + name: 'Razer Synapse' + version: '' + +# Git (https://git-scm.com/download/win) +- regex: 'git/(\d+[\.\d]+)' + name: 'Git' + version: '$1' + +# Google Podcasts (https://apps.apple.com/us/app/google-podcasts/id1398000105) +- regex: 'GooglePodcasts/(\d+[\.\d]+)' + name: 'Google Podcasts' + version: '$1' + +# Windows CryptoAPI (https://www.microsoft.com/en-us/) +- regex: 'Microsoft-CryptoAPI/(\d+[\.\d]+)' + name: 'Windows CryptoAPI' + version: '' + +# Windows Delivery Optimization (https://www.microsoft.com/en-us/) +- regex: 'Microsoft-Delivery-Optimization' + name: 'Windows Delivery Optimization' + version: '' + +# Windows Update Agent (https://www.microsoft.com/en-us/) +- regex: 'Windows-Update-Agent' + name: 'Windows Update Agent' + version: '' + +# Dr. Watson (https://www.microsoft.com/en-us/) +- regex: '^MSDW' + name: 'Dr. Watson' + version: '' + +# qBittorrent (https://www.qbittorrent.org/) +- regex: 'qBittorrent/(\d+[\.\d]+)' + name: 'qBittorrent' + version: '$1' + +# CPU-Z (https://www.cpuid.com/) +- regex: '^CPUID' + name: 'CPU-Z' + version: '' + +# AIDA64 (https://www.aida64.com/) +- regex: 'AIDA64' + name: 'AIDA64' + version: '' + +# HandBrake (https://handbrake.fr/) +- regex: 'HandBrake Win Upd (\d+[\.\d]+)' + name: 'HandBrake' + version: '$1' + +# CCleaner (https://www.ccleaner.com/) +- regex: 'CCleaner, (\d+[\.\d]+)' + name: 'CCleaner' + version: '$1' + +# Edge Update (https://www.microsoft.com/en-us/) +- regex: 'Microsoft Edge Update/(\d+[\.\d]+)' + name: 'Edge Update' + version: '$1' + +# Chrome Update (https://www.google.com/chrome/) +- regex: 'Google(?:Software| )Update/(\d+[\.\d]+)' + name: 'Chrome Update' + version: '$1' + +# Bose Music (https://apps.apple.com/us/app/bose-music/id1364986984) +- regex: 'Bose Music' + name: 'Bose Music' + version: '' + +# HikConnect (https://apps.apple.com/us/app/hik-connect-for-end-user/id1087803190) +- regex: 'HikConnect' + name: 'Hik-Connect' + version: '' + +# Cortana (https://www.microsoft.com/en-us/) +- regex: 'Cortana (\d+[\.\d]+)' + name: 'Cortana' + version: '$1' + +# Opera News (https://play.google.com/store/apps/details?id=com.opera.app.news) +- regex: 'Opera News/(\d+[\.\d]+)' + name: 'Opera News' + version: '$1' + +# Adobe Creative Cloud (https://apps.apple.com/us/app/adobe-creative-cloud/id852473028) +- regex: 'CreativeCloud/(\d+[\.\d]+)' + name: 'Adobe Creative Cloud' + version: '$1' + +# rekordbox (https://rekordbox.com/en/) +- regex: 'rekordbox/(\d+[\.\d]+)' + name: 'rekordbox' + version: '$1' + +# Windows Push Notification Services (https://www.microsoft.com/en-us/) +- regex: 'Microsoft-WNS/(\d+[\.\d]+)' + name: 'Windows Push Notification Services' + version: '$1' + +# Background Intelligent Transfer Service (https://www.microsoft.com/en-us/) +- regex: 'Microsoft BITS/(\d+[\.\d]+)' + name: 'Background Intelligent Transfer Service' + version: '$1' + +# ESET Remote Administrator (https://www.eset.com/me/business/remote-management/remote-administrator/) +- regex: 'ERA Agent Update' + name: 'ESET Remote Administrator' + version: '' + +# Epic Games Launcher (https://www.epicgames.com/store/en-US/download) +- regex: 'EpicGamesLauncher/(\d+[\.\d]+)' + name: 'Epic Games Launcher' + version: '$1' + +# WebDAV (https://www.microsoft.com/en-us/) +- regex: 'Microsoft-WebDAV-MiniRedir' + name: 'WebDAV' + version: '' + +# Battle.net (https://eu.shop.battle.net/en-us) +- regex: 'Battle.net/(\d+[\.\d]+)' + name: 'Battle.net' + version: '$1' + +# Bookshelf (https://play.google.com/store/apps/details?id=com.vitalsource.bookshelf) +- regex: 'Bookshelf-Android/(\d+[\.\d]+)' + name: 'Bookshelf' + version: '$1' + +# Rave Social (https://www.ravesocial.com/) +- regex: 'RaveSocial/(\d+[\.\d]+)' + name: 'Rave Social' + version: '$1' + +# Word Cookies! (https://apps.apple.com/us/app/word-cookies/id1153883316) +- regex: 'wordcookies/(\d+[\.\d]+)' + name: 'Word Cookies!' + version: '$1' + +# Bible KJV (https://apps.apple.com/us/app/bible-kjv/id544098932) +- regex: 'com.meevii.bibleKJV/(\d+[\.\d]+)' + name: 'Bible KJV' + version: '$1' + +# MetaTrader (https://www.metatrader5.com/) +- regex: 'MetaTrader 5 Terminal/(\d+[\.\d]+)' + name: 'MetaTrader' + version: '$1' + +# Paint by Number (https://apps.apple.com/us/app/paint-by-number-coloring-games/id1420058690) +- regex: 'com.paint.bynumber/(\d+[\.\d]+)' + name: 'Paint by Number' + version: '$1' + +# ZEPETO (https://apps.apple.com/app/id1350301428) +- regex: 'zepeto_global/(\d+[\.\d]+)' + name: 'ZEPETO' + version: '$1' + +# Jungle Disk (https://www.jungledisk.com/) +- regex: 'Jungle Disk Workgroup HTTP' + name: 'Jungle Disk' + version: '' + +# Nextcloud (https://play.google.com/store/apps/details?id=com.nextcloud.client) +- regex: '(?:mirall|Nextcloud-android)/(\d+[\.\d]+)' + name: 'Nextcloud' + version: '$1' + +# GoNative (https://gonative.io/) +- regex: 'GoNativeIOS/(\d+[\.\d]+)' + name: 'GoNative' + version: '$1' + +# Pandora (https://apps.apple.com/us/app/pandora-music-podcasts/id284035177) +- regex: 'Pandora/(\d+[\.\d]+)' + name: 'Pandora' + version: '$1' + +# Blackboard (https://apps.apple.com/us/app/blackboard/id950424861) +- regex: 'Blackboard/(\d+[\.\d]+)' + name: 'Blackboard' + version: '$1' + +- regex: 'Blackboard/unspecified' + name: 'Blackboard' + version: '' + +# QQMusic (https://apps.apple.com/cn/app/qq%E9%9F%B3%E4%B9%90-%E5%90%AC%E6%88%91%E6%83%B3%E5%90%AC/id414603431) +- regex: 'QQMusic/(\d+[\.\d]+)' + name: 'QQMusic' + version: '$1' + +# eToro (https://www.etoro.com/) +- regex: 'etoro-cordova-app' + name: 'eToro' + version: '' + +# Avid Link (https://www.avid.com/products/avid-link) +- regex: 'Avid Link Desktop App/(\d+[\.\d]+)' + name: 'Avid Link' + version: '$1' + +# Netflix (https://www.netflix.com/) +- regex: 'Netflix/(\d+[\.\d]+)' + name: 'Netflix' + version: '$1' + +# Google Tag Manager (https://www.google.com/) +- regex: 'GoogleTagManager/(\d+[\.\d]+)' + name: 'Google Tag Manager' + version: '$1' + +# Adobe Synchronizer (https://www.adobe.com/) +- regex: 'Adobe Synchronizer (\d+[\.\d]+)' + name: 'Adobe Synchronizer' + version: '$1' + +# BlueStacks (https://www.bluestacks.com/) +- regex: 'BlueStacks(?: 5)?/(\d+[\.\d]+)' + name: 'BlueStacks' + version: '$1' + +# PowerShell (https://www.microsoft.com/en-us/) +- regex: 'WindowsPowerShell/(\d+[\.\d]+)' + name: 'PowerShell' + version: '$1' + +# GlobalProtect (https://www.paloaltonetworks.com/products/globalprotect) +- regex: 'PAN GlobalProtect/(\d+[\.\d]+)' + name: 'GlobalProtect' + version: '$1' + +# Theyub +- regex: 'Theyub v(\d+[\.\d]+)' + name: 'Theyub' + version: '$1' + +# BBC News +- regex: 'BBCNewsUKWatchApp/(\d+[\.\d]+)' + name: 'BBC News' + version: '$1' + +# TradingView (https://www.tradingview.com/) +- regex: 'TradingView/(\d+[\.\d]+)' + name: 'TradingView' + version: '$1' + +# Instabridge (https://instabridge.com/en/) +- regex: 'Instabridge' + name: 'Instabridge' + version: '' + +# Be Focused (https://apps.apple.com/app/id973130201) +- regex: 'Be Focused/(\d+\.[\.\d]+)?' + name: 'Be Focused' + version: '$1' + +# Focus Matrix (https://apps.apple.com/app/id1087284172) +- regex: 'Focus Matrix/(\d+\.[\.\d]+)?' + name: 'Focus Matrix' + version: '$1' + +# Focus Keeper (https://apps.apple.com/app/id867374917) +- regex: 'Focuskeeper/(\d+\.[\.\d]+)?' + name: 'Focus Keeper' + version: '$1' + +# Quick Search TV (https://play.google.com/store/apps/details?id=com.aospstudio.tvsearch) +- regex: 'Quick Search TV/(\d+\.[\.\d]+)' + name: 'Quick Search TV' + version: '$1' + +# Microsoft Store (https://www.microsoft.com/en-us/store/apps/windows) +- regex: 'WindowsStoreSDK' + name: 'Microsoft Store' + version: '' + +# ASUS Updater (https://www.asus.com/) +- regex: 'Asus Update/(\d+\.[\.\d]+)' + name: 'ASUS Updater' + version: '$1' + +# IMO.IM HD Version https://play.google.com/store/apps/details?id=com.imo.android.imoimhd +- regex: 'imoAndroid/(20\d{2}.[\.\d]+)' + name: 'IMO HD Video Calls & Chat' + version: '$1' + +# IMO.IM https://play.google.com/store/apps/details?id=com.imo.android.imoim +- regex: 'imoAndroid/(\d+\.[\.\d]+)' + name: 'IMO International Calls & Chat' + version: '$1' + +# Microsoft Bing Search (https://play.google.com/store/apps/details?id=com.microsoft.bing | https://apps.apple.com/us/app/microsoft-bing-search/id345323231) +- regex: 'BingSapphire/(\d+\.[\.\d]+)' + name: 'Microsoft Bing Search' + version: '$1' + +# HiSearch +- regex: '.+HiSearch/(\d+\.[\.\d]+)' + name: 'HiSearch' + version: '$1' + +# RDDocuments (https://apps.apple.com/app/id364901807) +- regex: 'RDDocuments/(\d+\.[\.\d]+)' + name: 'RDDocuments' + version: '$1' + +# F-Secure SAFE (https://apps.apple.com/app/f-secure-safe/id572847748) +- regex: 'FSCDCSafe (\d+\.[\.\d]+)' + name: 'F-Secure SAFE' + version: '$1' + +# Twitterrific (https://apps.apple.com/us/app/twitterrific-tweet-your-way/id580311103) +- regex: 'Twitterrific' + name: 'Twitterrific' + version: '' + +# Uconnect LIVE (https://apps.apple.com/it/app/uconnect-live/id881830261?l=en) +- regex: 'UconnectLive' + name: 'Uconnect LIVE' + version: '' + +# Wayback Machine (https://apps.apple.com/us/app/wayback-machine/id1472432422) +- regex: 'Wayback%20Machine%20Extension' + name: 'Wayback Machine' + version: '' + +# Q-municate (https://www.qmunicateh10.com | https://apps.apple.com/gb/app/q-municate/id909698517) +- regex: 'com.Nanoteq.QmunicateH10p.+/(\d+\.[\.\d]+) \(' + name: 'Q-municate' + version: '$1' + +# NET.mede (https://apps.apple.com/us/app/net-mede/id597007101) +- regex: 'NET.mede' + name: 'NET.mede' + version: '' + +# My Bentley (https://apps.apple.com/us/app/my-bentley/id1008052243) +- regex: 'My%20Bentley' + name: 'My Bentley' + version: '' + +# Skyeng (https://apps.apple.com/us/app/skyeng-english-online/id1065290732) +- regex: 'Skyeng%20App' + name: 'Skyeng' + version: '' + +# Skyeng Teachers (https://apps.apple.com/us/app/skyeng-teachers/id1483049537) +- regex: 'Skyeng%20Teachers' + name: 'Skyeng Teachers' + version: '' + +# Bank Millenium (https://apps.apple.com/us/app/bank-millennium/id412646128) +- regex: '(Millennium/|Millennium%20Corp)' + name: 'Bank Millenium' + version: '' + +# MBolsa (https://apps.apple.com/us/app/mbolsa/id1533621499) +- regex: 'MBolsa' + name: 'MBolsa' + version: '' + +# MEmpresas (https://apps.apple.com/us/app/mempresas/id669516182) +- regex: '(MEmpresas|Millennium%20Empresas)' + name: 'MEmpresas' + version: '' + +# Orange Radio (https://apps.apple.com/fr/app/orange-radio/id1201284975?l=en) +- regex: 'OrangeRadio/(\d+\.[\.\d]+)' + name: 'Orange Radio' + version: '$1' + +# Radio Italiane https://apps.apple.com/us/app/radio-italiane-radio-it/id1390350146) +- regex: 'Radio%20Italiane/(\d+\.[\.\d]+)' + name: 'Radio Italiane' + version: '$1' + +# Safari Search Helper +- regex: 'com.apple.Safari.SearchHelper/(\d+\.[\.\d]+)' + name: 'Safari Search Helper' + version: '$1' + +# Citrix Workspace (https://apps.apple.com/us/app/citrix-workspace/id363501921) +- regex: 'Citrix%20Viewer' + name: 'Citrix Workspace' + version: '' + +# Mercantile Bank of Michigan (https://apps.apple.com/us/app/mercantile-bank-of-michigan/id428982831) +- regex: 'com.mercbank.s1mobileipad' + name: 'Mercantile Bank of Michigan' + version: '' + +# DStream Air (https://apps.apple.com/us/app/dstream-air/id1214400521) +- regex: 'D-Stream%20Air' + name: 'DStream Air' + version: '' + +# Expedia (https://apps.apple.com/us/app/expedia-hotels-flights-car/id427916203) +- regex: 'ExpediaBookings' + name: 'Expedia' + version: '' + +# Windows Antivirus +- regex: 'Windows Antivirus (\d+\.[\.\d]+)' + name: 'Windows Antivirus' + version: '$1' + +# Macrium Reflect (https://www.macrium.com/reflectfree) +- regex: '^Reflect' + name: 'Macrium Reflect' + version: '' + +- regex: 'Opera autoupdate agent' + name: 'Opera Updater' + version: '' + +# Ballz (https://apps.apple.com/us/app/ballz/id1139609950) +- regex: 'Ballz/(\d+\.[\.\d]+)' + name: 'Ballz' + version: '$1' + +# RNPS Action Cards +- regex: 'rnps-action-cards/(\d+\.[\.\d]+)' + name: 'RNPS Action Cards' + version: '$1' + +# Plex Media Server (https://www.plex.tv/sv/media-server-downloads/) +- regex: 'PlexMediaServer/(\d+\.[\.\d]+)' + name: 'Plex Media Server' + version: '$1' diff --git a/priv/ua_inspector/client.pim.yml b/priv/ua_inspector/client.pim.yml index 7a16a557d1a5236563342b81718ec83e2e8aa790..4ee4421d31c2320f4a31010cd54b8d12e44fa8cd 100644 --- a/priv/ua_inspector/client.pim.yml +++ b/priv/ua_inspector/client.pim.yml @@ -9,10 +9,20 @@ name: 'Outlook Express' version: '$1' -- regex: 'Microsoft Outlook(?:[/ ](\d+[\.\d]+))?' +# Outlook https://apps.apple.com/ru/app/microsoft-outlook/id951937596 +- regex: '^Outlook-iOS/(?:.+\((\d+[\.\d]+)\)$)?' name: 'Microsoft Outlook' version: '$1' +- regex: '(?:(?:Microsoft )?Outlook|MacOutlook)(?:[/ ](\d+[\.\d]+))?' + name: 'Microsoft Outlook' + version: '$1' + +# Default Mail Client for Windows +- regex: 'WindowsMail(?:/(\d+[\.\d]+))' + name: 'Windows Mail' + version: '$1' + - regex: '(?:Thunderbird|Icedove|Shredder)(?:/(\d+[\.\d]+))?' name: 'Thunderbird' version: '$1' @@ -48,4 +58,67 @@ # SeaMonkey - regex: '(?:SeaMonkey|Iceape)(?:/(\d+[\.\d]+))?' name: 'SeaMonkey' - version: '$1' \ No newline at end of file + version: '$1' + +# Live5ch +- regex: 'Live5ch/(\d+[\.\d]+)' + name: 'Live5ch' + version: '$1' + +- regex: 'JaneView/' + name: 'JaneView' + version: '' + +- regex: 'BathyScaphe/' + name: 'BathyScaphe' + version: '' + +# Raindrop.io (https://raindrop.io/) +- regex: 'Raindrop.io/(\d+[\.\d]+)' + name: 'Raindrop.io' + version: '$1' + +# Franz (https://meetfranz.com/) +- regex: 'Franz/(\d+[\.\d]+)' + name: 'Franz' + version: '$1' + +# Mailspring (https://www.electronjs.org/apps/mailspring) +- regex: 'Mailspring/(\d+[\.\d]+)' + name: 'Mailspring' + version: '$1' + +# Notion (https://www.notion.so/) +- regex: 'Notion/(\d+[\.\d]+)' + name: 'Notion' + version: '$1' + +# Basecamp (https://basecamp.com/) +- regex: 'Basecamp[0-9]/?(\d+[\.\d]+)' + name: 'Basecamp' + version: '$1' + +# Evernote (https://evernote.com/) +- regex: 'Evernote/?(\d+[\.\d]+)' + name: 'Evernote' + version: '$1' + +# Rambox Pro (https://rambox.app/) +- regex: 'ramboxpro/(\d+\.[\.\d]+)?' + name: 'Rambox Pro' + version: '$1' + +# Mailbird (https://www.getmailbird.com/) +- regex: 'Mailbird/(\d+\.[\.\d]+)/' + name: 'Mailbird' + version: '$1' + +# Yahoo Mail (https://apps.apple.com/us/app/yahoo-mail-organised-email/id577586159) +- regex: 'Yahoo%20Mail' + name: 'Yahoo Mail' + version: '' + +# eM Client (https://emclient.com/) +- regex: 'eM Client/(\d+\.[\.\d]+)' + name: 'eM Client' + version: '$1' diff --git a/priv/ua_inspector/device.cameras.yml b/priv/ua_inspector/device.cameras.yml index 904423b7da91f7607678de81d4097aed5feddd12..bf9676df3f515d22e384ba7c18bafe524c3a509f 100644 --- a/priv/ua_inspector/device.cameras.yml +++ b/priv/ua_inspector/device.cameras.yml @@ -17,12 +17,12 @@ Samsung: device: 'camera' models: - regex: 'EK-GN120' - model: 'GALAXY NX' + model: 'Galaxy NX' - regex: 'EK-GC100' - model: 'GALAXY Camera' + model: 'Galaxy Camera' - regex: 'EK-GC110' - model: 'GALAXY Camera WiFi only' + model: 'Galaxy Camera WiFi only' - regex: 'EK-GC200' - model: 'GALAXY Camera 2' + model: 'Galaxy Camera 2' - regex: 'EK-GC([0-9]{3})' - model: 'GALAXY Camera $1' \ No newline at end of file + model: 'Galaxy Camera $1' diff --git a/priv/ua_inspector/device.car_browsers.yml b/priv/ua_inspector/device.car_browsers.yml index c5446b4b826c00bfd625d79bbc3e100c460e6130..f334fdd2838c4c675df53021a5059bb11dde2a75 100644 --- a/priv/ua_inspector/device.car_browsers.yml +++ b/priv/ua_inspector/device.car_browsers.yml @@ -14,3 +14,19 @@ Tesla: model: 'Model S' - regex: 'Tesla/[0-9.]+' model: '' + +# Mac Audio +MAC AUDIO: + regex: 'Mac Audio Spro' + device: 'car browser' + models: + - regex: 'Spro' + model: 'S Pro' + +# Topway +Topway: + regex: 'sp9853i_1h10_vmm' + device: 'car browser' + models: + - regex: 'sp9853i_1h10_vmm' + model: 'TS9' diff --git a/priv/ua_inspector/device.consoles.yml b/priv/ua_inspector/device.consoles.yml index 60047a3fbc7d117a78e2bf60e1539c364493405c..758f95f41d06f6257c5f19859d7d80f3aa38b457 100644 --- a/priv/ua_inspector/device.consoles.yml +++ b/priv/ua_inspector/device.consoles.yml @@ -14,8 +14,14 @@ Microsoft: regex: 'Xbox' device: 'console' models: + - regex: 'Xbox Series X' + model: 'Xbox Series X' + - regex: 'Xbox One X' + model: 'Xbox One X' - regex: 'Xbox One' model: 'Xbox One' + - regex: 'XBOX_ONE_ED' + model: 'Xbox One S' - regex: 'Xbox' model: 'Xbox 360' @@ -35,6 +41,12 @@ Sega: model: 'Dreamcast' Sony: - regex: 'PlayStation (3|4 Pro|4|Portable|Vita)' + regex: 'PlayStation ?(2|3|4 Pro|4|5|Portable|Vita)' device: 'console' model: 'PlayStation $1' + +# Retroid Pocket (www.goretroid.com) +Retroid Pocket: + regex: 'Retroid Pocket 2Plus' + device: 'console' + model: '2 Plus' diff --git a/priv/ua_inspector/device.mobiles.yml b/priv/ua_inspector/device.mobiles.yml index a0a964e4ba6dd14baf3bc8e398eec6c9a05d28d8..2825702dc5f9740e144fbf650771e645e34a1553 100644 --- a/priv/ua_inspector/device.mobiles.yml +++ b/priv/ua_inspector/device.mobiles.yml @@ -5,15 +5,23 @@ # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later ############### -# Ace (https://www.acemobile.fr/) +# Ace or ACE France (www.acemobile.fr) Ace: - regex: 'BUZZ 1 (?:Lite|Plus)' - device: 'smartphone' - models: - - regex: 'BUZZ 1 Lite' - model: 'Buzz 1 Lite' - - regex: 'BUZZ 1 Plus' - model: 'Buzz 1 Plus' + regex: '(?:BUZZ [12]|BUZZ 2|CLEVER 1|URBAN 1(?: Pro)?)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'BUZZ ([12]) Lite' + model: 'Buzz $1 Lite' + - regex: 'BUZZ ([12]) Plus' + model: 'Buzz $1 Plus' + - regex: 'BUZZ ([12])' + model: 'Buzz $1' + - regex: 'CLEVER 1' + model: 'Clever 1' + - regex: 'URBAN 1 Pro' + model: 'Urban 1 Pro' + - regex: 'URBAN 1' + model: 'Urban 1' 'Tunisie Telecom': regex: 'StarTrail TT(?:[);/ ]|$)' @@ -25,16 +33,23 @@ SFR: regex: 'StarShine|StarTrail|STARADDICT|StarText|StarNaute|StarXtrem|StarTab' device: 'smartphone' models: + - regex: 'StarXtrem II(?:[);/ ]|$)' + model: 'StarXtrem 2' + - regex: 'StarXtrem ?([3-6])(?:[);/ ]|$)' + model: 'StarXtrem $1' - regex: 'StarXtrem(?:[);/ ]|$)' model: 'StarXtrem' # ZTE - - regex: 'StarTrail ?4(?:[);/ ]|$)' - model: 'StarTrail 4' # ZTE Blade Q - regex: 'StarTrail III(?:[);/ ]|$)' - model: 'StarTrail 3' # ZTE + model: 'StarTrail 3' - regex: 'StarTrail II(?:[);/ ]|$)' model: 'StarTrail 2' # Huawei Ascend Y200 + - regex: 'StarTrail[ _]?([1-9])[ _]([34])G(?:[);/ ]|$)' # ZTE + model: 'StarTrail $1 $2G' + - regex: 'StarTrail[ _]?([1-9])(?:[);/ ]|$)' + model: 'StarTrail $1' - regex: 'StarTrail(?:[);/ ]|$)' model: 'StarTrail' # ZTE + - regex: 'StarShine II(?:[);/ ]|$)' model: 'StarShine 2' # ZTE - regex: 'StarShine(?:[);/ ]|$)' @@ -55,6 +70,8 @@ SFR: model: 'StarText' # ZTE - regex: 'StarNaute II(?:[);/ ]|$)' model: 'StarNaute 2' # ZTE + - regex: 'STARNAUTE ?4(?:[);/ ]|$)' + model: 'StarNaute 4' - regex: 'StarNaute(?:[);/ ]|$)' model: 'StarNaute' # ZTE Amigo - regex: 'StarTab' @@ -64,40 +81,92 @@ SFR: - regex: '((?:StarShine|StarTrail|STARADDICT|StarText|StarNaute|StarXtrem)[^;/]*) Build' model: '$1' -# HTC +# Adronix +Adronix: + regex: 'Adronix[ _]?(?:MT[0-9]+|X1001|Mini ?Tab ?7 ?3G)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'Adronix ?Mini ?Tab ?7 ?3G' + model: 'Mini Tab 7 3G' + - regex: 'Adronix[ _]?(MT[0-9]+|X1001)(?:[);/ ]|$)' + model: '$1' + +# HTC (htc.com) HTC: - regex: 'HTC|Sprint (?:APA|ATP)|ADR(?!910L)[a-z0-9]+|NexusHD2|Amaze[ _]4G(?:[);/ ]|$)|(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/)]+)(?: Build|\))|(Amaze[ _]4G|One ?[XELSV\+]+)(?:[);/ ]|$)|SPV E6[05]0|(One M8|X525a|PG86100|PC36100|XV6975|PJ83100|2PYB2|2PZC5|0PJA10|0PJA2|HTV33|0PM92|0PCV1|601HT|0PAJ5|HTL2[23]|HTV32|2PQ93|X2-HT)(?:[);/ ]|$)' + regex: 'HTC|Sprint (?:APA|ATP)|ADR(?!910L)[a-z0-9]+|NexusHD2|Amaze[ _]4G(?:[);/ ]|$)|(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/)]+)(?: Build|\))|(Amaze[ _]4G|(?<!BLU LIFE |ZOPO )One ?[XELSV\+]+)(?:[);/ ]|$)|SPV E6[05]0|(One M8|One Mini 2|X525a|PG86100|PC36100|XV6975|PJ83100|2PYB2|2PS64|2PZC5|0PJA10|0PJA2|HTV33|0PM92|0PCV1|601HT|0PAJ5|HTL2[23]|HTV3[12]|2PQ93|X2-HT|EXODUS 1|ISW13HT|710C|U Ultra)(?:[);/ ]|$)' device: 'smartphone' models: # explicit smartphone models - - regex: '2PZC5(?:[);/ ]|$)' - model: 'U11' + - regex: '(?:2PZF1|U Ultra)(?:[);/ ]|$)' + model: 'U Ultra' + - regex: 'HTC[_ ](?:U-2u|U Play|2PZM3)(?:[);/ ]|$)' + model: 'U Play' + - regex: '(?:U11 plus|(?:HTC_)?2Q4D[12]00)(?:[);/ ]|$)' + model: 'U11 Plus' + - regex: 'HTC (?:U12\+|2Q55[13]00)(?:[);/ ]|$)' + model: 'U12 Plus' + - regex: 'U(1[12]) life(?:[);/ ]|$)' + model: 'U$1 Life' + - regex: '(?:U11 Eyes|2Q4R100)(?:[);/ ]|$)' + model: 'U11 Eyes' - regex: 'XV6975(?:[);/ ]|$)' model: 'Imagio' - regex: 'PG86100(?:[);/ ]|$)' model: 'Evo 3G' - regex: 'PC36100(?:[);/ ]|$)' model: 'Evo 4G' - - regex: '(?:HTV33|601HT)(?:[);/ ]|$)' + - regex: '(?:HTC[_ ])?(?:HTV33|601HT|2PZC100|2PZC5|U-3[uw])(?:[);/ ]|$)' model: 'U11' - regex: '(?:801e|802[wdt])' model: 'One' - regex: 'PJ83100(?:[);/ ]|$)' model: 'One X' + - regex: '(?:HTC)?One ?Mini ?2(?:[);/ ]|$)' + model: 'One Mini 2' - regex: 'X2-HT(?:[);/ ]|$)' model: 'One X2' + - regex: 'HTC 2PXH3(?:[);/ ]|$)' + model: 'One X10' + - regex: 'ISW13HT(?:[);/ ]|$)' + model: 'J' - regex: 'HTL22(?:[);/ ]|$)' model: 'J One' - - regex: 'HTL23(?:[);/ ]|$)' + - regex: '(?:HTL23|HTV31)(?:[);/ ]|$)' model: 'J Butterfly' - - regex: '(?:0PJA2|0PJA10)(?:[);/ ]|$)' + - regex: 'HTCButterflys901s(?:[);/ ]|$)' + model: 'Butterfly S' + - regex: 'One M9_Prime Camera Edition' + model: 'One M9 Prime Camera Edition' + - regex: '(?:HTC[_ ])?(?:M9pw|One M9 ?PLUS)(?:[);/ ]|$)' + model: 'One M9 Plus' + - regex: '(?:HTC[_ ]M9u|0PJA2|0PJA10|HTC One M9|HTC6535LVW)(?:[);/ ]|$)' model: 'One M9' + - regex: 'One[ _](X9|[EM]8) dual sim(?:[);/ ]|$)' + model: 'One $1 Dual SIM' + - regex: 'Desire[ _](.+) dual sim(?:[);/ ]|$)' + model: 'Desire $1 Dual SIM' + - regex: 'HTC(?: One m7|6500LVW|PN071)(?:[);/ ]|$)' + model: 'One M7' + - regex: '(?:One M8|HTC6525LVW|HTC[_ ]M8[xd]|HTC[_ ]0P6B)(?:[);/ ]|$)' + model: 'One M8' + - regex: '0PAJ5(?:[);/ ]|$)' + model: 'One E8' + - regex: 'HTC[_ ]E9x(?:[);/ ]|$)' + model: 'One E9' + - regex: 'HTC[_ ]E9pw(?:[);/ ]|$)' + model: 'One E9 Plus' + - regex: 'HTC_S9u(?:[);/ ]|$)' + model: 'One S9' + - regex: 'HTC6515LVW(?:[);/ ]|$)' + model: 'One Remix' - regex: 'X525a(?:[);/ ]|$)' model: 'One X+' - - regex: '2PQ93(?:[);/ ]|$)' + - regex: '(?:2PQ9(?:3|10)|HTC[_ ]A9u)(?:[);/ ]|$)' model: 'One A9' - regex: 'ADR6300' model: 'Droid Incredible' + - regex: 'HTC6435LVW' + model: 'Droid DNA' - regex: 'ADR6400L' model: 'ThunderBolt' - regex: 'ADR6410LRA' @@ -108,27 +177,63 @@ HTC: model: 'Vox' - regex: '2PYB2' model: 'Bolt' + - regex: '2PS64|HTC6545LVW' + model: '10' + - regex: '(710C)(?:[);/ ]|$)' + model: 'Desire $1' - regex: '0PM92(?:[);/ ]|$)' model: 'Desire 626S' - regex: '0PCV1(?:[);/ ]|$)' model: 'Desire 510' + - regex: 'HTC ?D160LVW(?:PP)?(?:[);/ ]|$)' + model: 'Desire 530' + - regex: 'HTC[_ ]D310n(?:[);/ ]|$)' + model: 'Desire 310' - regex: '608t(?:[);/ ]|$)' model: 'Desire 608t' + - regex: 'HTC_(?:0P9O2|D610x)(?:[);/ ]|$)' + model: 'Desire 610' + - regex: 'HTC[_ ]?(0P4E[12])(?:[);/ ]|$)' + model: 'Desire 601' + - regex: 'HTC_?D620h(?:[);/ ]|$)' + model: 'Desire 620' + - regex: 'HTC[_ ]?(?:D626ph|D200LVWPP)(?:[);/ ]|$)' + model: 'Desire 626' + - regex: 'HTC_?(?:0P9C2|D816[xd]?)(?:[);/ ]|$)' + model: 'Desire 816' + - regex: 'HTC_?D526h(?:[);/ ]|$)' + model: 'Desire 526' + - regex: 'EXODUS 1(?:[);/ ]|$)' + model: 'Exodus 1' + - regex: 'HTC 2Q7A100(?:[);/ ]|$)' + model: 'U19e' + - regex: 'HTC Desire 10 compact(?:[);/ ]|$)' + model: 'Desire 10 Compact' + - regex: 'HTC_D10i(?:[);/ ]|$)' + model: 'Desire 10 Pro' + - regex: 'HTC[ _]10[ _]evo(?:[);/ ]|$)' + model: '10 Evo' + - regex: 'HTC Desire (.+) pro 5G(?:[);/ ]|$)' + model: 'Desire $1 Pro 5G' + - regex: 'HTC Desire (.+) pro(?:[);/ ]|$)' + model: 'Desire $1 Pro' + - regex: 'Desire 10 lifestyle(?:[);/ ]|$)' + model: 'Desire 10 Life Style' - regex: 'NexusHD2' # custom rom for hd2 model: 'HD2' - - regex: 'HTC[ _\-]P715a' + - regex: 'HTC[ _-]P715a' device: 'tablet' model: 'P715a' - - regex: 'HTC[ _\-]Flyer Build' + - regex: 'HTC[ _-]Flyer Build' device: 'tablet' model: 'Flyer' - - regex: 'HTC[ _\-]Flyer[ _\-]([\w]{1,5})' + - regex: 'HTC[ _-]Flyer[ _\-]([\w]{1,5})' device: 'tablet' model: 'Flyer $1' - - regex: 'HTC[ _\-]One[ _\-]max(?:[);/ ]|$)' + - regex: 'HTC(?:[ _-])?(?:One[ _\-]max|6600LVW|0P3P7)(?:[);/ ]|$)' device: 'phablet' - model: 'One max' + model: 'One Max' - regex: 'HTC[ _]([^/;]+) [0-9]+(?:\.[0-9]+)+ Build' model: '$1' - regex: 'HTC[ _]([^/;]+) Build' @@ -142,7 +247,7 @@ HTC: model: '$1 (Sprint)' - regex: 'Sprint (APA.*) Build' model: '$1 (Sprint)' - - regex: 'HTC(?:[\-/ ])?([a-z0-9\-_]+)' + - regex: '(?:HTC-)?HTC(?:[\-/ ])?([a-z0-9\-_]+)' model: '$1' - regex: 'HTC;(?: )?([a-z0-9 ]+)' model: '$1' @@ -154,16 +259,12 @@ HTC: model: '$1' - regex: '(ADR[a-z0-9]+)' model: '$1' - - regex: '(One M8)' - model: '$1' - - regex: '0PAJ5(?:[);/ ]|$)' - model: 'One E8' - regex: 'HTV32(?:[);/ ]|$)' model: '10' # microsoft Microsoft: - regex: 'KIN\.(One|Two)|RM-(?:1010|1031|106[57]|107[23467]|1089|109[02]|1096|1099|1109|111[34]|1127|1141|115[24]|994)|Microsoft; Lumia|Lumia (?:1530|1320|950|850|650|640|550|535|435)' + regex: 'KIN\.(One|Two)|RM-(?:1010|1031|106[57]|107[23467]|1089|109[02]|1096|1099|1109|111[348]|1127|1141|115[24]|994)|Microsoft; Lumia|Lumia (?:1530|1320|950|850|650|640|550|535|435)|Corporation/Surface|Surface Duo' device: 'smartphone' models: - regex: 'KIN\.(One|Two)' @@ -176,6 +277,8 @@ Microsoft: model: 'Lumia 435' - regex: 'RM-1031|Lumia 532' model: 'Lumia 532' + - regex: 'Lumia 535 Dual SIM' + model: 'Lumia 535 Dual SIM' - regex: 'RM-109[02]|RM-1089|Lumia 535' model: 'Lumia 535' - regex: 'RM-1141|Lumia 540' @@ -184,9 +287,18 @@ Microsoft: model: 'Lumia 550' - regex: 'RM-1010' model: 'Lumia 638' + - regex: 'Lumia 640 XL LTE' + model: 'Lumia 640 XL LTE' + device: 'phablet' - regex: 'RM-106[57]|RM-1096|Lumia 640 XL' model: 'Lumia 640 XL' device: 'phablet' + - regex: 'Lumia 640 LTE Dual SIM' + model: 'Lumia 640 LTE Dual SIM' + - regex: 'Lumia 640 LTE' + model: 'Lumia 640 LTE' + - regex: 'Lumia 640 Dual SIM' + model: 'Lumia 640 Dual SIM' - regex: 'RM-1109|RM-1113|RM-107[23467]|Lumia 640' model: 'Lumia 640' - regex: 'RM-1154|Lumia 650' @@ -195,26 +307,43 @@ Microsoft: model: 'Lumia 650 SS' - regex: 'Lumia 850' model: 'Lumia 850' + - regex: 'Lumia 950 XL Dual SIM' + model: 'Lumia 950 XL Dual SIM' + device: 'phablet' - regex: 'Lumia 950 XL' model: 'Lumia 950 XL' device: 'phablet' - - regex: 'Lumia 950' + - regex: 'Lumia 950 Dual SIM' + model: 'Lumia 950 Dual SIM' + - regex: 'Lumia 950|RM-1118' model: 'Lumia 950' - regex: 'RM-994|Lumia 1320' model: 'Lumia 1320' - regex: 'Lumia 1530' model: 'Lumia 1530' + - regex: 'Surface Book 3' + device: 'desktop' + model: 'Surface Book 3' + - regex: 'Surface Pro( [34])?' + device: 'desktop' + model: 'Surface Pro$1' + + - regex: 'Surface Duo 2' + device: 'tablet' + model: 'Surface Duo 2' + - regex: 'Surface Duo' + device: 'tablet' + model: 'Surface Duo' - regex: 'Microsoft; Lumia ([^;/)]+)(?:[;/)]|$)' model: 'Lumia $1' -# NOKIA +# NOKIA (www.nokia.com) Nokia: regex: 'Nokia(?!Browser|Webview|; GT-I8750)|Lumia|Maemo RX|portalmmm/2\.0 N7|portalmmm/2\.0 NK|nok[0-9]+|Symbian.*\s([a-z0-9]+)$|RX-51 N900|TA-[0-9]{4}|ARM; 909' device: 'smartphone' models: # Nokia branded phones by HMD Global - # 2017 Models - regex: 'TA-10(07|23|29|35)' model: '2' - regex: 'TA-10(20|28|32|38)' @@ -227,35 +356,24 @@ Nokia: model: '7' - regex: 'TA-10(04|12|52)' model: '8' - # 2018 Models - - regex: 'Nokia 8\.1' - model: '8.1' - regex: 'Nokia 8 Sirocco' model: '8 Sirocco' - - regex: 'Nokia 7\.1' - model: '7.1' - regex: 'Nokia 7 plus' model: '7 plus' - regex: 'Nokia 6\.1 Plus' model: '6.1 Plus' - - regex: 'Nokia 6\.1' - model: '6.1' - regex: 'Nokia 5\.1 Plus' model: '5.1 Plus' - - regex: 'Nokia 5\.1' - model: '5.1' - regex: 'Nokia 3\.1 Plus' model: '3.1 Plus' - - regex: 'Nokia 3\.1' - model: '3.1' - - regex: 'Nokia 2\.1' - model: '2.1' - regex: 'Nokia 1 Plus' model: '1 Plus' - - regex: 'Nokia 1' - model: '1' + - regex: 'Nokia 2 V(?:[);/ ]|$)' + model: '2 V Tella' # Nokia phones + - regex: 'Nokia ?X2DS' + model: 'X2 Dual' - regex: 'RX-51 N900' model: 'N900' - regex: '(?: )?(Nokia500|nokiaasha500(?:dualsim)?)(?: Build|[_);/])' @@ -342,6 +460,10 @@ Nokia: - regex: 'NOKIA;? 1520\.1' model: 'Lumia 1520.1' + - regex: 'Nokia T20' + device: 'tablet' + model: 'T20' + - regex: 'Nokia ([A-Za-z0-9\. ]+)(?: Build|\))' model: '$1' @@ -384,7 +506,7 @@ CnM: # RIM/BlackBerry RIM: - regex: 'BB10;|BlackBerry|rim[0-9]+|PlayBook|STV100-[1234]|STH100-[12]|BBA100-[12]|BBB100-[1234567]|BBC100-1|BBD100-[126]|BBE100-[123456789]|BBF100-[123456789]|BBG100-1|BBH100-1' + regex: 'BB10;|BlackBerry|rim[0-9]+|PlayBook|STV100-[1234]|STH100-[12]|BBA100-[12]|BBB100-[1234567]|BBD100-[126]|BB[EF]100-[123456789]|BB[CGH]100-1' device: 'smartphone' models: - regex: 'BBA100-[12]' @@ -407,6 +529,8 @@ RIM: model: 'Evolve' - regex: 'BBH100-1' model: 'Evolve X' + - regex: '(?:BlackBerry )?(9000|9790)' + model: 'Bold $1' - regex: 'STV100-[1234]' model: 'BlackBerry Priv' - regex: 'STH100-[12]' @@ -420,12 +544,57 @@ RIM: model: 'BlackBerry $1' - regex: 'rim([0-9]+)' model: 'BlackBerry $1' + - regex: '9300' + model: 'Curve 3G 9300' + - regex: '(8520|8530|9220|9320|9360)' + model: 'Curve $1' + - regex: '9630' + model: 'Tour 9630' + - regex: '9720' + model: '9720' + - regex: '(9800|9860)' + model: 'Torch $1' - regex: 'BlackBerry' model: 'BlackBerry' +# Ghia or GHIA (www.ghia.com.mx) +Ghia: + regex: 'GHIA|QS702|SVEGLIO[ _][QH]1|VECTOR10\.1|GTKIDS7[BVR]?|(?:GTA7WF|VENUS7|TREO_TAB8G)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'SVEGLIO[ _]([QH]1)' + model: 'Sveglio $1' + - regex: 'QS702' + model: 'QS702' + - regex: 'GHIA_ZEUS_3G' + model: 'Zeus 3G' + - regex: 'GHIA[ _](L1)' + model: '$1' + - regex: 'GHIA_AXIS7' + model: 'Axis 7' + device: 'tablet' + - regex: 'VECTOR10\.1' + model: 'Vector 10.1"' + device: 'tablet' + - regex: 'GTA7WF' + device: 'tablet' + model: 'A7 ROJA' + - regex: 'TREO_TAB8G' + device: 'tablet' + model: 'TREO TAB8G' + - regex: 'GTKIDS7[BVR]?' + device: 'tablet' + model: 'GT KIDS 7' + - regex: 'VENUS7' + device: 'tablet' + model: 'VENUS 7' + - regex: 'GHIA[ ]?(47458)' + device: 'tablet' + model: '$1' + # PALM Palm: - regex: '(?:Pre|Pixi)/(\d+)\.(\d+)|Palm|Treo|Xiino' + regex: '(?:Pre|Pixi)/(\d+)\.(\d+)|Palm|Treo|Xiino|PVG100(?:E_RU)?(?:[);/ ]|$)' device: 'smartphone' models: - regex: '((?:Pre|Pixi))/(\d+\.\d+)' @@ -436,12 +605,14 @@ Palm: model: 'Treo $1' - regex: 'Tungsten' model: 'Tungsten' + - regex: 'PVG100' + model: 'Pepito' - regex: 'Xiino|Palmscape' # Browser for Palm OS only model: '' -# HP +# HP or Hewlett-Packard HP: - regex: 'TouchPad/\d+\.\d+|hp-tablet|HP ?iPAQ|webOS.*P160U|HP (?:Pro )?Slate|HP [78]|HP 10 Plus|Compaq [7|8]|HP; [^;/)]+' + regex: 'Hewlett-Packard|HP/HP|HP Chromebook|HP EliteBook 820|TouchPad/\d+\.\d+|hp-tablet|HP ?iPAQ|webOS.*P160U|HP (?:Pro )?Slate|HP [78]|HP 10 Plus|Compaq [7|8]|HP; [^;/)]+' device: 'smartphone' models: - regex: 'HP Slate 6 Voice Tab' @@ -473,160 +644,625 @@ HP: device: 'tablet' - regex: 'HP; ([^;/)]+)' model: '$1' - - regex: 'HP(?: )?iPAQ(?: )?([a-z0-9]+)' + - regex: 'HP ?iPAQ ?([a-z0-9]+)' model: 'iPAQ $1' - regex: 'webOS.*(P160U)' model: 'Veer' + - regex: 'HP ProBook (6560b)' + device: 'desktop' + model: 'ProBook $1' + - regex: 'Chromebook (11 G5|x360 11 G1 EE|13 G1)' + device: 'desktop' + model: 'Chromebook $1' + - regex: 'HP EliteBook 820 G2' + device: 'desktop' + model: 'EliteBook 820 G2' + - regex: 'Z240 Tower Workstation' + device: 'desktop' + model: 'Z240 Tower Workstation' + # TiPhone TiPhone: regex: 'TiPhone ?([a-z0-9]+)' device: 'smartphone' model: '$1' +# TiVo (https://www.tivo.com/) +TiVo: + regex: 'TIVO[ ,]' + device: 'tv' + models: + - regex: 'STREAM 4K' + model: 'Stream 4K' + - regex: 'TCD8F6000' + model: 'TCD8F6000' + # Apple Apple: - regex: '(?:iTunes-)?Apple[ _]?TV|(?:Apple-|iTunes-)?(?<!like )(?:iPad|iPhone)|iPh[0-9],[0-9]|CFNetwork|HomePod' + regex: '(?:iTunes-)?Apple[ _]?TV|Apple/|(?:Apple-|iTunes-)?(?<!like )(?:iPad|iPhone)|iPh(?:[0-9]|1[0-4]),[0-9]|CFNetwork|HomePod|AirPlay|Watch ?OS|Watch1,[12]|MDCR_Mac|ICRU_iP(?:ad|hone)|Mac OS X[,;]|macOS,' models: - regex: 'HomePod' device: 'smart speaker' model: 'HomePod' + - regex: 'AirPlay' + device: 'smart speaker' + model: '' + + # specific wearable devices + - regex: 'Watch1,1' + device: 'wearable' + model: 'Watch 38mm' + - regex: 'Watch1,2' + device: 'wearable' + model: 'Watch 42mm' + - regex: 'Watch2,6' + device: 'wearable' + model: 'Watch Series 1 38mm' + - regex: 'Watch2,7' + device: 'wearable' + model: 'Watch Series 1 42mm' + - regex: 'Watch2,3' + device: 'wearable' + model: 'Watch Series 2 38mm' + - regex: 'Watch2,4' + device: 'wearable' + model: 'Watch Series 2 42mm' + - regex: 'Watch3,[13]' + device: 'wearable' + model: 'Watch Series 3 38mm' + - regex: 'Watch3,[24]' + device: 'wearable' + model: 'Watch Series 3 42mm' + - regex: 'Watch5,(?:9|11)' + device: 'wearable' + model: 'Watch SE 40mm' + - regex: 'Watch5,1[02]' + device: 'wearable' + model: 'Watch SE 44mm' + - regex: 'Watch([456]),[13]' + device: 'wearable' + model: 'Watch Series $1 40mm' + - regex: 'Watch([456]),[24]' + device: 'wearable' + model: 'Watch Series $1 44mm' + - regex: 'Watch6,[68]' + device: 'wearable' + model: 'Watch Series 7 41mm' + - regex: 'Watch6,[79]' + device: 'wearable' + model: 'Watch Series 7 45mm' + - regex: 'Watch' + device: 'wearable' + model: 'Watch' + + # specific desktop devices + - regex: '(?:.+_)?MacPro1(?:%2C|,)1' + device: 'desktop' + model: 'Mac Pro (2006)' + - regex: '(?:.+_)?MacPro2(?:%2C|,)1' + device: 'desktop' + model: 'Mac Pro (2007)' + - regex: '(?:.+_)?MacPro3(?:%2C|,)1' + device: 'desktop' + model: 'Mac Pro (2008)' + - regex: '(?:.+_)?MacPro4(?:%2C|,)1' + device: 'desktop' + model: 'Mac Pro (2009)' + - regex: '(?:.+_)?MacPro5(?:%2C|,)1' + device: 'desktop' + model: 'Mac Pro (2010-2012)' + - regex: '(?:.+_)?iMac5(?:%2C|,)1' + device: 'desktop' + model: 'iMac (2006)' + - regex: '(?:.+_)?iMac5(?:%2C|,)2' + device: 'desktop' + model: 'iMac 17" (2006)' + - regex: '(?:.+_)?iMac6(?:%2C|,)1' + device: 'desktop' + model: 'iMac 24" (2006)' + - regex: '(?:.+_)?iMac7(?:%2C|,)1' + device: 'desktop' + model: 'iMac (2007)' + - regex: '(?:.+_)?iMac8(?:%2C|,)1' + device: 'desktop' + model: 'iMac (2008)' + - regex: '(?:.+_)?iMac9(?:%2C|,)1' + device: 'desktop' + model: 'iMac (2009)' + - regex: '(?:.+_)?iMac10(?:%2C|,)1' + device: 'desktop' + model: 'iMac (2009)' + - regex: '(?:.+_)?iMac11(?:%2C|,)1' + device: 'desktop' + model: 'iMac 27" (2009)' + - regex: '(?:.+_)?iMac11(?:%2C|,)2' + device: 'desktop' + model: 'iMac 21.5" (2010)' + - regex: '(?:.+_)?iMac11(?:%2C|,)3' + device: 'desktop' + model: 'iMac 27" (2010)' + - regex: '(?:.+_)?iMac12(?:%2C|,)1' + device: 'desktop' + model: 'iMac 21.5" (2011)' + - regex: '(?:.+_)?iMac12(?:%2C|,)2' + device: 'desktop' + model: 'iMac 27" (2011)' + - regex: '(?:.+_)?iMac13(?:%2C|,)1' + device: 'desktop' + model: 'iMac 21.5" (2012-2013)' + - regex: '(?:.+_)?iMac13(?:%2C|,)2' + device: 'desktop' + model: 'iMac 27" (2012)' + - regex: '(?:.+_)?iMac14(?:%2C|,)[13]' + device: 'desktop' + model: 'iMac 21.5" (2013)' + - regex: '(?:.+_)?iMac14(?:%2C|,)2' + device: 'desktop' + model: 'iMac 27" (2013)' + - regex: '(?:.+_)?iMac14(?:%2C|,)4' + device: 'desktop' + model: 'iMac 21.5" (2014)' + - regex: '(?:.+_)?iMac17(?:%2C|,)1' + device: 'desktop' + model: 'iMac 27" (2015)' + - regex: '(?:.+_)?iMac18(?:%2C|,)[12]' + device: 'desktop' + model: 'iMac 21.5" (2017)' + - regex: '(?:.+_)?iMac18(?:%2C|,)3' + device: 'desktop' + model: 'iMac 27" (2017)' + - regex: '(?:.+_)?iMac19(?:%2C|,)1' + device: 'desktop' + model: 'iMac 27" (2019)' + - regex: '(?:.+_)?iMac19(?:%2C|,)2' + device: 'desktop' + model: 'iMac 21.5" (2019)' + - regex: '(?:.+_)?iMac20(?:%2C|,)[12]' + device: 'desktop' + model: 'iMac 27" (2020)' + - regex: '(?:.+_)?iMac21(?:%2C|,)[12]' + device: 'desktop' + model: 'iMac 24" (2021)' + - regex: '(?:.+_)?iMacPro1(?:%2C|,)1' + device: 'desktop' + model: 'iMac Pro 27" (2017)' + - regex: '(?:.+_)?MacBook1(?:%2C|,)1' + device: 'desktop' + model: 'MacBook 13" (2006)' + - regex: '(?:.+_)?MacBook2(?:%2C|,)1' + device: 'desktop' + model: 'MacBook 13" (2006-2007)' + - regex: '(?:.+_)?MacBook3(?:%2C|,)1' + device: 'desktop' + model: 'MacBook 13" (2007)' + - regex: '(?:.+_)?MacBook[45](?:%2C|,)1' + device: 'desktop' + model: 'MacBook 13" (2008)' + - regex: '(?:.+_)?MacBook5(?:%2C|,)2' + device: 'desktop' + model: 'MacBook 13" (2009)' + - regex: '(?:.+_)?MacBook6(?:%2C|,)1' + device: 'desktop' + model: 'MacBook 13" (2009)' + - regex: '(?:.+_)?MacBook7(?:%2C|,)1' + device: 'desktop' + model: 'MacBook 13" (2010)' + - regex: '(?:.+_)?MacBook8(?:%2C|,)1' + device: 'desktop' + model: 'MacBook 12" (2015)' + - regex: '(?:.+_)?MacBook9(?:%2C|,)1' + device: 'desktop' + model: 'MacBook 12" (2016)' + - regex: '(?:.+_)?MacBookAir1(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Air 13" (2008)' + - regex: '(?:.+_)?MacBookAir2(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Air (2009)' + - regex: '(?:.+_)?MacBookAir3(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Air 11" (2010)' + - regex: '(?:.+_)?MacBookAir3(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Air 13" (2010)' + - regex: '(?:.+_)?MacBookAir4(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Air 11" (2011)' + - regex: '(?:.+_)?MacBookAir4(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Air 13" (2011)' + - regex: '(?:.+_)?MacBookAir5(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Air 11" (2012)' + - regex: '(?:.+_)?MacBookAir5(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Air 13" (2012)' + - regex: '(?:.+_)?MacBookAir6(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Air 11" (2013-2014)' + - regex: '(?:.+_)?MacBookAir6(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Air 13" (2013-2014)' + - regex: '(?:.+_)?MacBookAir7(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Air 11" (2015)' + - regex: '(?:.+_)?MacBookAir7(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Air 13" (2015-2017)' + - regex: '(?:.+_)?MacBookAir8(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Air 13" (2018)' + - regex: '(?:.+_)?MacBookAir8(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Air 13" (2019)' + - regex: '(?:.+_)?MacBookAir9(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Air 13" (2020)' + - regex: '(?:.+_)?MacBookAir10(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Air 13" (2020)' + - regex: '(?:.+_)?MacBookPro1(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Pro 15" (2006)' + - regex: '(?:.+_)?MacBookPro1(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Pro 17" (2006)' + - regex: '(?:.+_)?MacBookPro2(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Pro 17" (2007)' + - regex: '(?:.+_)?MacBookPro2(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Pro 15" (2007)' + - regex: '(?:.+_)?MacBookPro[34](?:%2C|,)1' + device: 'desktop' + model: 'MacBook Pro (2008)' + - regex: '(?:.+_)?MacBookPro5(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Pro 15" (2008)' + - regex: '(?:.+_)?MacBookPro5(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Pro 17" (2009)' + - regex: '(?:.+_)?MacBookPro5(?:%2C|,)[34]' + device: 'desktop' + model: 'MacBook Pro 15" (2009)' + - regex: '(?:.+_)?MacBookPro5(?:%2C|,)5' + device: 'desktop' + model: 'MacBook Pro 13" (2009)' + - regex: '(?:.+_)?MacBookPro6(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Pro 17" (2010)' + - regex: '(?:.+_)?MacBookPro6(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Pro 15" (2010)' + - regex: '(?:.+_)?MacBookPro7(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Pro 13" (2010)' + - regex: '(?:.+_)?MacBookPro8(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Pro 13" (2011)' + - regex: '(?:.+_)?MacBookPro8(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Pro 15" (2011)' + - regex: '(?:.+_)?MacBookPro8(?:%2C|,)3' + device: 'desktop' + model: 'MacBook Pro 17" (2011)' + - regex: '(?:.+_)?MacBookPro9(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Pro 15" (2012)' + - regex: '(?:.+_)?MacBookPro9(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Pro 13" (2012)' + - regex: '(?:.+_)?MacBookPro10(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Pro 15" (2012-2013)' + - regex: '(?:.+_)?MacBookPro10(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Pro 13" (2012-2013)' + - regex: '(?:.+_)?MacBookPro11(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Pro 13" (2013-2014)' + - regex: '(?:.+_)?MacBookPro11(?:%2C|,)[23]' + device: 'desktop' + model: 'MacBook Pro 15" (2013-2014)' + - regex: '(?:.+_)?MacBookPro11(?:%2C|,)[45]' + device: 'desktop' + model: 'MacBook Pro 15" (2015)' + - regex: '(?:.+_)?MacBookPro12(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Pro 13" (2015)' + - regex: '(?:.+_)?MacBookPro13(?:%2C|,)[12]' + device: 'desktop' + model: 'MacBook Pro 13" (2016)' + - regex: '(?:.+_)?MacBookPro13(?:%2C|,)3' + device: 'desktop' + model: 'MacBook Pro 15" (2016)' + - regex: '(?:.+_)?MacBookPro14(?:%2C|,)[12]' + device: 'desktop' + model: 'MacBook Pro 13" (2017)' + - regex: '(?:.+_)?MacBookPro14(?:%2C|,)3' + device: 'desktop' + model: 'MacBook Pro 15" (2017)' + - regex: '(?:.+_)?MacBookPro15(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Pro 15" (2018-2019)' + - regex: '(?:.+_)?MacBookPro15(?:%2C|,)2' + device: 'desktop' + model: 'MacBook Pro 13" (2018-2019)' + - regex: '(?:.+_)?MacBookPro15(?:%2C|,)3' + device: 'desktop' + model: 'MacBook Pro 15" (2019)' + - regex: '(?:.+_)?MacBookPro15(?:%2C|,)4' + device: 'desktop' + model: 'MacBook Pro 13" (2019)' + - regex: '(?:.+_)?MacBookPro16(?:%2C|,)[14]' + device: 'desktop' + model: 'MacBook Pro 16" (2019)' + - regex: '(?:.+_)?MacBookPro16(?:%2C|,)[23]' + device: 'desktop' + model: 'MacBook Pro 13" (2020)' + - regex: '(?:.+_)?MacBookPro17(?:%2C|,)1' + device: 'desktop' + model: 'MacBook Pro 13" (2020)' + - regex: '(?:.+_)?MacBookPro18(?:%2C|,)[12]' + device: 'desktop' + model: 'MacBook Pro 16" (2021)' + - regex: '(?:.+_)?MacBookPro18(?:%2C|,)[34]' + device: 'desktop' + model: 'MacBook Pro 14" (2021)' + - regex: '(?:.+_)?Macmini1(?:%2C|,)1' + device: 'desktop' + model: 'Mac Mini (2006)' + - regex: '(?:.+_)?Macmini2(?:%2C|,)1' + device: 'desktop' + model: 'Mac Mini (2007)' + - regex: '(?:.+_)?Macmini3(?:%2C|,)1' + device: 'desktop' + model: 'Mac Mini (2009)' + - regex: '(?:.+_)?Macmini4(?:%2C|,)1' + device: 'desktop' + model: 'Mac Mini (2010)' + - regex: '(?:.+_)?Macmini5(?:%2C|,)[123]' + device: 'desktop' + model: 'Mac Mini (2011)' + - regex: '(?:.+_)?Macmini6(?:%2C|,)[12]' + device: 'desktop' + model: 'Mac Mini (2012)' + - regex: '(?:.+_)?Macmini7(?:%2C|,)1' + device: 'desktop' + model: 'Mac Mini (2014)' + - regex: '(?:.+_)?Macmini8(?:%2C|,)1' + device: 'desktop' + model: 'Mac Mini (2018)' + - regex: '(?:.+_)?Macmini9(?:%2C|,)1' + device: 'desktop' + model: 'Mac Mini (2020)' + - regex: '(?:.+_)?PowerMac7(?:%2C|,)2' + device: 'desktop' + model: 'Power Macintosh G5 (2003)' + - regex: '(?:.+_)?PowerMac7(?:%2C|,)3' + device: 'desktop' + model: 'Power Macintosh G5 (2004-2005)' + - regex: '(?:.+_)?PowerMac8(?:%2C|,)2' + device: 'desktop' + model: 'iMac G5 (2005)' + - regex: '(?:.+_)?PowerMac10(?:%2C|,)1' + device: 'desktop' + model: 'Mac Mini G4 (2005)' + - regex: '(?:.+_)?PowerMac12(?:%2C|,)1' + device: 'desktop' + model: 'iMac G5 (2005)' + - regex: '(?:.+_)?PowerBook5(?:%2C|,)6' + device: 'desktop' + model: 'PowerBook G4 (2005)' + - regex: '(?:.+_)?PowerBook6(?:%2C|,)7' + device: 'desktop' + model: 'iBook G4 (2005)' # specific smartphone devices - - regex: '(?:Apple-)?iPh(?:one)?1[C,_]1' + - regex: '(?:Apple-|.+_)?iPh(?:one)?1[C,_]1' model: 'iPhone' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?1[C,_]2' + - regex: '(?:Apple-|.+_)?iPh(?:one)?1[C,_]2' model: 'iPhone 3G' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?2[C,_]1| 3GS\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?2[C,_]1| 3GS\)$' model: 'iPhone 3GS' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?3[C,_][123]' + - regex: '(?:Apple-|.+_)?iPh(?:one)?3[C,_][123]' model: 'iPhone 4' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?4[C,_]1|1C2%254enohPi| 4S\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?4[C,_]1|1C2%254enohPi| 4S\)$' model: 'iPhone 4S' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?5[C,_][12]| 5\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?5[C,_][12]| 5\)$' model: 'iPhone 5' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?5[C,_][34]' + - regex: '(?:Apple-|.+_)?iPh(?:one)?5[C,_][34]' model: 'iPhone 5C' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?6[C,_][12]| 5S\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?6[C,_][12]| 5S\)$' model: 'iPhone 5S' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?7[C,_]1|1C2%257enohPi| 6PLUS\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?7[C,_]1|1C2%257enohPi| 6PLUS\)$' model: 'iPhone 6 Plus' device: 'phablet' - - regex: '(?:Apple-)?iPh(?:one)?7[C,_]2| 6\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?7[C,_]2| 6\)$' model: 'iPhone 6' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?8[C,_]2| 6SPLUS\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?8[C,_]2| 6SPLUS\)$' model: 'iPhone 6s Plus' device: 'phablet' - - regex: '(?:Apple-)?iPh(?:one)?8[C,_]1|iPhone 6s| 6S\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?8[C,_]1|iPhone[ /]6s| 6S\)$' model: 'iPhone 6s' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?8[C,_]4| SE\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?8[C,_]4| SE\)$' model: 'iPhone SE' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?9[C,_][13]| 7\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?9[C,_][13]|iphone7 | 7\)$' model: 'iPhone 7' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?9[C,_][24]| 7PLUS\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?9[C,_][24]| 7PLUS\)$' model: 'iPhone 7 Plus' device: 'phablet' - - regex: '(?:Apple-)?iPh(?:one)?10[C,_][14]| 8\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?10[C,_][14]| 8\)$' model: 'iPhone 8' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?10[C,_][25]| 8PLUS\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?10[C,_][25]| 8PLUS\)$' model: 'iPhone 8 Plus' device: 'phablet' - - regex: '(?:Apple-)?iPh(?:one)?10[C,_][36]|iPhone X| X\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?10[C,_][36]|iPhone X| X\)$' model: 'iPhone X' device: 'phablet' - - regex: '(?:Apple-)?iPh(?:one)?11[C,_][2]| XS\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?11[C,_]2| XS\)$' model: 'iPhone XS' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?11[C,_][46]| XSMAX\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?11[C,_][46]|iPhoneXSMax| XSMAX\)$' model: 'iPhone XS Max' device: 'phablet' - - regex: '(?:Apple-)?iPh(?:one)?11[C,_][8]| XR\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?11[C,_]8| XR\)$' model: 'iPhone XR' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?12[C,_][1]| 11\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?12[C,_]1|iPhone 11| 11\)$' model: 'iPhone 11' device: 'smartphone' - - regex: '(?:Apple-)?iPh(?:one)?12[C,_][3]| 11PRO\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?12[C,_]3| 11PRO\)$' model: 'iPhone 11 Pro' device: 'phablet' - - regex: '(?:Apple-)?iPh(?:one)?12[C,_][5]| 11PROMAX\)$' + - regex: '(?:Apple-|.+_)?iPh(?:one)?12[C,_]5| 11PROMAX\)$|iPhone_11_Pro_Max' model: 'iPhone 11 Pro Max' device: 'phablet' - - regex: '(?:Apple-)?iPh(?:one)?12[C,_][8]' + - regex: '(?:Apple-|.+_)?iPh(?:one)?12[C,_]8' model: 'iPhone SE (2020)' device: 'phablet' + - regex: '(?:Apple-|.+_)?iPh(?:one)?13[C,_]1| 12MINI\)$' + model: 'iPhone 12 Mini' + device: 'smartphone' + - regex: '(?:Apple-|.+_)?iPh(?:one)?13[C,_]2| 12\)$' + model: 'iPhone 12' + device: 'phablet' + - regex: '(?:Apple-|.+_)?iPh(?:one)?13[C,_]3| 12PRO\)$' + model: 'iPhone 12 Pro' + device: 'phablet' + - regex: '(?:Apple-|.+_)?iPh(?:one)?13[C,_]4| 12PROMAX\)$' + model: 'iPhone 12 Pro Max' + device: 'phablet' + - regex: '(?:Apple-|.+_)?iPh(?:one)?14[C,_]2| 13PRO\)$' + model: 'iPhone 13 Pro' + device: 'phablet' + - regex: '(?:Apple-|.+_)?iPh(?:one)?14[C,_]3| 13PROMAX\)$' + model: 'iPhone 13 Pro Max' + device: 'phablet' + - regex: '(?:Apple-|.+_)?iPh(?:one)?14[C,_]4| 13MINI\)$' + model: 'iPhone 13 Mini' + device: 'smartphone' + - regex: '(?:Apple-|.+_)?iPh(?:one)?14[C,_]5| 13\)$' + model: 'iPhone 13' + device: 'phablet' # specific tablet devices - - regex: '(?:Apple-)?iPad1[C,_]1' + - regex: '(?:Apple-|.+_)?iPad1[C,_]1' model: 'iPad' device: 'tablet' - - regex: '(?:Apple-)?iPad2[C,_][1234]' + - regex: '(?:Apple-|.+_)?iPad2[C,_][1-4]' model: 'iPad 2' device: 'tablet' - - regex: '(?:Apple-)?iPad2[C,_][567]' + - regex: '(?:Apple-|.+_)?iPad2[C,_][567]' model: 'iPad Mini' device: 'tablet' - - regex: '(?:Apple-)?iPad3[C,_][123]' + - regex: '(?:Apple-|.+_)?iPad3[C,_][123]' model: 'iPad 3' device: 'tablet' - - regex: '(?:Apple-)?iPad3[C,_][456]' + - regex: '(?:Apple-|.+_)?iPad3[C,_][456]' model: 'iPad 4' device: 'tablet' - - regex: '(?:Apple-)?iPad4[C,_][123]' + - regex: '(?:Apple-|.+_)?iPad4[C,_][123]' model: 'iPad Air' device: 'tablet' - - regex: '(?:Apple-)?iPad4[C,_][456]' + - regex: '(?:Apple-|.+_)?iPad4[C,_][456]' model: 'iPad Mini 2' device: 'tablet' - - regex: '(?:Apple-)?iPad4[C,_][789]' + - regex: '(?:Apple-|.+_)?iPad4[C,_][789]' model: 'iPad Mini 3' device: 'tablet' - - regex: '(?:Apple-)?iPad5[C,_][12]' + - regex: '(?:Apple-|.+_)?iPad5[C,_][12]' model: 'iPad Mini 4' device: 'tablet' - - regex: '(?:Apple-)?iPad5[C,_][34]' + - regex: '(?:Apple-|.+_)?iPad5[C,_][34]' model: 'iPad Air 2' device: 'tablet' - - regex: '(?:Apple-)?iPad6[C,_][34]' + - regex: '(?:Apple-|.+_)?iPad6[C,_][34]' model: 'iPad Pro 9.7' device: 'tablet' - - regex: '(?:Apple-)?iPad6[C,_][78]' + - regex: '(?:Apple-|.+_)?iPad6[C,_][78]' model: 'iPad Pro 12.9' device: 'tablet' - - regex: '(?:Apple-)?iPad6[C,_](?:11|12)' + - regex: '(?:Apple-|.+_)?iPad6[C,_](?:11|12)' model: 'iPad 5 9.7' device: 'tablet' - - regex: '(?:Apple-)?iPad7[C,_][12]' + - regex: '(?:Apple-|.+_)?iPad7[C,_][12](?:[\]);/ ]|$)' model: 'iPad Pro 2 12.9' device: 'tablet' - - regex: '(?:Apple-)?iPad7[C,_][34]' + - regex: '(?:Apple-|.+_)?iPad7[C,_][34](?:[\]);/ ]|$)' model: 'iPad Pro 10.5' device: 'tablet' - - regex: '(?:Apple-)?iPad7[C,_][56]' + - regex: '(?:Apple-|.+_)?iPad7[C,_][56](?:[\]);/ ]|$)' model: 'iPad 6 9.7' device: 'tablet' - - regex: '(?:Apple-)?iPad7[C,_](?:11|12)' + - regex: '(?:Apple-|.+_)?iPad7[C,_](?:11|12)(?:[\]);/ ]|$)' model: 'iPad 7 10.2' device: 'tablet' - - regex: '(?:Apple-)?iPad8[C,_][1-4]' + - regex: '(?:Apple-|.+_)?iPad8[C,_](?:9|10)' + model: 'iPad Pro 2 11"' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad13[C,_]4' + model: 'iPad Pro 3 11" WiFi' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad13[C,_][5-7]' + model: 'iPad Pro 3 11"' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad8[C,_]1[12]' + model: 'iPad Pro 4 12.9"' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad8[C,_][1-4]' model: 'iPad Pro 3 11.0' device: 'tablet' - - regex: '(?:Apple-)?iPad8[C,_][5-8]' + - regex: '(?:Apple-|.+_)?iPad8[C,_][5-8]' model: 'iPad Pro 3 12.9' device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad11[C,_][12]' + model: 'iPad Mini 5' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad11[C,_][34]' + model: 'iPad Air 3' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad11[C,_][67]' + model: 'iPad 8 10.2"' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad12[C,_]1' + model: 'iPad 9 10.2" WiFi' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad12[C,_]2' + model: 'iPad 9 10.2"' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad13[C,_]8' + model: 'iPad Pro 5 12.9" WiFi' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad13[C,_](?:9|10|11)' + model: 'iPad Pro 5 12.9"' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad13[C,_]1' + model: 'iPad Air 4 WiFi' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad13[C,_]2' + model: 'iPad Air 4' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad14[C,_]1' + model: 'iPad Mini 6 WiFi' + device: 'tablet' + - regex: '(?:Apple-|.+_)?iPad14[C,_]2' + model: 'iPad Mini 6' + device: 'tablet' - regex: 'Apple-?TV2[C,_]1' model: 'Apple TV 2' @@ -640,17 +1276,17 @@ Apple: - regex: 'Apple-?TV6[C,_]2' model: 'Apple TV 4K' device: 'tv' + - regex: 'Apple-?TV11[C,_]1' + model: 'Apple TV 4K (2021)' + device: 'tv' - regex: '(?:iTunes-)?Apple[ _]?TV' model: 'Apple TV' device: 'tv' - - regex: 'HomePod' - model: 'HomePod' - device: 'smart speaker' - regex: 'iTunes-iPad/[0-9]+(?:\.[0-9]+)* \(([^;]+);' model: 'iPad $1' device: 'tablet' - - regex: '(?:Apple-)?iPad' + - regex: '(?:Apple-|.+_)?iPad' model: 'iPad' device: 'tablet' - regex: 'iTunes-iPhone/[0-9]+(?:\.[0-9]+)* \(([^;]+);' @@ -662,22 +1298,30 @@ Apple: # micromax MicroMax: - regex: '(?:MicroMax[ \-\_]?[a-z0-9]+|Q327)|4560MMX|P70221 Build|(?:YU(?:5040|5530)|AQ5001 Canvas Power)(?:[);/ ]|$)' + regex: '(?:MicroMax[ \-\_]?[a-z0-9]+|Q327)|4560MMX|P70221|(?:YU(?:5040|5530)|AQ5001(?: Canvas Power)?|N8216|N8301|IN_2b|IN_Note1|ione note)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'AQ5001 Canvas Power' model: 'Canvas Power' - regex: 'AQ5001' model: 'Canvas Juice 2' + - regex: 'Q465(?:[);/ ]|$)' + model: 'Canvas Juice 4' + - regex: 'E451(?:[);/ ]|$)' + model: 'Canvas Pulse' - regex: '4560MMX(?:[);/ ]|$)' model: '4560MMX' - - regex: 'E481' + - regex: 'IN_2b(?:[);/ ]|$)' + model: 'IN 2B' + - regex: 'E481(?:[);/ ]|$)' model: 'Canvas 5' - - regex: 'P70221 Build' + - regex: 'Q462(?:[);/ ]|$)' + model: 'Canvas 5 Lite' + - regex: 'P70221(?:[);/ ]|$)' model: 'Canvas Tab' device: 'tablet' - - regex: 'Q327' - model: 'Bolt' + - regex: 'Q(3[25]7|301|326|338)(?:[);/ ]|$)' + model: 'Bolt Q$1' - regex: 'Q417' model: 'Canvas Mega' - regex: 'Q402\+' @@ -688,8 +1332,47 @@ MicroMax: model: 'YU Yureka S YU5530' - regex: 'Q424' model: 'Bolt Selfie' + - regex: 'Q402 ?Plus' + model: 'Bharat 2 Plus' - regex: 'Q426' model: 'Canvas Mega 2' + - regex: 'N8216' + model: 'Infinity N11' + - regex: 'N8301' + model: 'Infinity N12' + - regex: 'Q440Plus(?:[);/ ]|$)' + model: 'Q440 Plus' + - regex: 'Micromax[_ ]Q353P(?:[);/ ]|$)' + model: 'Q353 Plus' + - regex: 'Q452(?:[);/ ]|$)' + model: 'Spark 4G Prime' + - regex: 'Q4601(?:[);/ ]|$)' + model: 'Selfie 2 Note' + - regex: 'Q421(?:[);/ ]|$)' + model: 'Canvas Magnus HD' + - regex: 'E313(?:[);/ ]|$)' + model: 'Canvas Xpress 2' + - regex: 'Q413(?:[);/ ]|$)' + model: 'Canvas Xpress' + - regex: 'Q4251(?:[);/ ]|$)' + model: 'Vdeo 4' + - regex: 'Micromax C1A(?:[);/ ]|$)' + model: 'Canvas 1 (2018)' + - regex: 'C2APLS(?:[);/ ]|$)' + model: 'Canvas 2 Plus' + - regex: 'Bharat (\d)(?:[);/ ]|$)' + model: 'Bharat $1' + - regex: 'ione note(?:[);/ ]|$)' + model: 'iOne Note' + - regex: 'IN_Note1(?:[);/ ]|$)' + model: 'IN Note 1' + - regex: 'E7533(?:[);/ ]|$)' + model: 'IN 1b' + + - regex: 'MicroMax(?:[ \-\_])?(X291|X246|X252|X458|X312)' + model: '$1' + device: 'feature phone' + - regex: 'MicroMax(?:[ \-\_])?(P[a-z0-9]+)' model: '$1' device: 'tablet' @@ -698,7 +1381,7 @@ MicroMax: # 3Q 3Q: - regex: 'AC0731B|AC1024C|AC7803C|BC9710AM|EL72B|LC0720C|LC0723B|LC0725B|LC0804B|LC0808B|LC0809B|LC0810C|LC0816C|LC0901D|LC1016C|MT0724B|MT0729[BD]|MT0811B|OC1020A|RC0709B|RC0710B|RC0718C|RC0719H|RC0721B|RC0722C|RC0726B|RC0734H|RC0743H|RC0817C|RC1018C|RC1019G|RC1025F|RC1301C|RC7802F|RC9711B|RC9712C|RC9716B|RC9717B|RC9724C|RC9726C|RC9727F|RC9730C|RC9731C|TS0807B|TS1013B|VM0711A|VM1017A|RC0813C|QS9719D|QS9718C|QS9715F|QS1023H|QS0815C|QS0730C|QS0728C|QS0717D|QS0716D|QS0715C|MT7801C|TS9708B|AC0732C|MT0739D|MT0812E|(?:3Q_)?ER71B' + regex: 'AC0731B|AC1024C|AC7803C|BC9710AM|EL72B|LC0720C|LC0723B|LC0725B|LC0804B|LC0808B|LC0809B|LC0810C|LC0816C|LC0901D|LC1016C|MT0724B|MT0729[BD]|MT0811B|OC1020A|RC0709B|RC0710B|RC0718C|RC0719H|RC0721B|RC0722C|RC0726B|RC0734H|RC0743H|RC0817C|RC1018C|RC1019G|RC1025F|RC1301C|RC780[24]F|RC9711B|RC9712C|RC9716B|RC9717B|RC9724C|RC9726C|RC9727F|RC9730C|RC9731C|TS0807B|TS1013B|VM0711A|VM1017A|RC0813C|QS9719D|QS9718C|QS9715F|QS1023H|QS0815C|QS0730C|QS0728C|QS0717D|QS0716D|QS0715C|MT7801C|TS9708B|AC0732C|MT0739D|MT0812E|(?:3Q_)?ER71B' device: 'tablet' models: - regex: 'MT0724B|LC0901D|LC0816C|LC0810C|LC0809B|LC0808B|LC0804B|LC0725B|LC0723B' @@ -715,34 +1398,48 @@ MicroMax: model: 'Qoo! Meta' - regex: 'EL72B|(?:3Q_)?ER71B' model: 'Qoo! Q-Book' + - regex: '(RC7804F)' + model: 'Qoo! Glaze' # 4Good 4Good: - regex: '4Good[ _]|S450m [43]G|S555m 4G|S501m 3G|T700i_3G|People (?:G503|G410|GT300)|Light (?:A103|B100)' + regex: '4Good[ _]|S450m [43]G|S555m 4G|S501m 3G|T700i_3G|People (?:G503|G410|GT300)|Light (?:A10[34]|B100)' device: 'smartphone' models: - - regex: 'T700i_3G' - model: 'T700i 3G' + - regex: '(T700i|T100m)[_ ]?3G' + model: '$1 3G' device: 'tablet' - - regex: 'People GT300' - model: 'People GT300' + - regex: 'People (GT300|AT100)' + model: 'People $1' device: 'tablet' - regex: 'S555m[_ ]4G' model: 'People' - - regex: '(S(?:450m|501m)[_ ][43]G|Light (?:A103|B100)|People (?:G503|G410))' - model: '$1' - - regex: '4Good[ _]([^;/]+) Build' + - regex: '(S(?:450m|501m)[_ ][43]G|Light (?:A10[34]|B100)|People (?:G503|G410))' model: '$1' - - regex: '4Good[ _]([^);/ ]+)' + - regex: '4Good[ _]([^);/]+)(?: Build|[);])' model: '$1' +# Acteck +Acteck: + regex: 'BLECK' + device: 'tablet' + model: 'Bleck' + # Alba Alba: - regex: 'Alba 57' + regex: 'Alba ?(?:57|4|10 TABLET|(?:[78]|10)(?:Nou|Pie))(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Alba 57' model: '5.7' + - regex: 'Alba (4)' + model: '$1' + - regex: '10 TABLET' + device: 'tablet' + model: '10 Tablet' + - regex: 'Alba((?:[78]|10)(?:Nou|Pie))' + device: 'tablet' + model: '$1' # AllCall AllCall: @@ -770,7 +1467,7 @@ AllCall: # Bravis Bravis: - regex: 'Bravis[ _]|A501 Bright|A552 JOY Max|A504 Trace|A505 JOY Plus|A503 Joy|NB(?:106M|10[1-8]|751|7[145]|8[57]1|76)|NP101|NB961|NP 104 3G|B501|N1-570 Space|Atlas A551|A512 Harmony Pro|A510_Jeans_4G|A509_Jeans|N1_550_Cruiser' + regex: 'Bravis[ _]|A501 Bright|A552 JOY Max|A504 Trace|A505 JOY Plus|A503 Joy|NB(?:106M|10[1-8]|751|7[145]|8[57]1|76)|NP101|NB961|NP 104 3G|B501|N1-570 Space|Atlas A551|A511 Harmony|A512 Harmony Pro|A510_Jeans_4G|A509_Jeans|N1_550_Cruiser' device: 'smartphone' models: - regex: 'A501 BRIGHT' @@ -807,10 +1504,14 @@ Bravis: model: 'A504 Trace' - regex: 'A512 Harmony Pro' model: 'A512 Harmony Pro' + - regex: 'A511 Harmony' + model: 'A511 Harmony' - regex: 'A510_Jeans_4G' model: 'A510 Jeans 4G' - regex: 'A509_Jeans' model: 'A509 Jeans' + - regex: 'BRAVIS NEO' + model: 'A401 Neo' - regex: 'N1_550_Cruiser' model: 'N1-550 Cruiser' - regex: 'BRAVIS OMEGA' @@ -819,6 +1520,8 @@ Bravis: model: 'Biz' - regex: 'BRAVIS POWER' model: 'Power' + - regex: 'BRAVIS[ _]SPARK' + model: 'Spark' - regex: 'BRAVIS[ _]SLIM[ _]3G' model: 'Slim 3G' @@ -835,14 +1538,13 @@ Bravis: - regex: 'Bravis[_ ]([^;\)]+) Build' model: '$1' - - regex: '(NB(?:106M|10[1-8]|751|7[145]|8[57]1|76)|NP101|NB961)' + - regex: '(NB(?:106M|10[1-8]|75[134]|7[145]|8[57]1|76)|NP101|NB961)' model: '$1' device: 'tablet' - -# Acer +# Acer (acer.com) Acer: - regex: 'acer|(?<!Satellite |ZTE BLADE |ImSmart |ERGO |X-Style Tab )a(?:101|110|2[10]0|211|50[10]|51[10]|70[10])(?:[);/ ]|$)|Android.*V3[67]0(?:[);/ ]|$)|Android.*Z1[23456]0 Build|Android.*Z5\d{2} Build|Android.*T0[234678] Build|Android.*S55(?:[);/ ]|$)|(?:A1-(713(HD)?|7[23]4|830|841|840FHD|81[01])|A3-A[1234][01]|B1-(7[1235-8][01](HD)?|7[23]3|7A0|8[1235]0|A71|860A)|B3-(A[125]0|A3[02]|A40FHD)|E39)(?:[);/ ]|$)|S5[12]0 Build|(DA[0-9]+HQ?L|Aspire V5-121|Chromebook 14 \(CB3-431\)|Predator G9-793|GT-810|B1-870|B3-A4[02])(?:[);/ ]|$)' + regex: 'acer|(?<!Satellite |ZTE BLADE |ImSmart |ERGO |X-Style Tab )(?<!Optima 7 )a(?:101|110|2[10]0|211|50[10]|51[10]|70[10])(?:[);/ ]|$)|Android.*V3[67]0(?:[);/ ]|$)|Android.*Z1[23456]0 Build|Android.*Z5\d{2} Build|Android.*T0[234678] Build|Android.*S55(?! Nova)(?:[);/ ]|$)|(?:A1-(713(HD)?|7[23]4|830|841|840(?:FHD)?|81[01])|A3-A[1234][01]|B1-(7[1235-9][01](HD)?|7[23]3|7A0|8[1235]0|A71|860A)|TPA60W|B3-(A[125]0|A3[02]|A40FHD)|E39)(?:[);/ ]|$)|S5[12]0 Build|(DA[0-9]+HQ?L|Aspire (?:V5-121|XC-704G|V5-573G|4349)|Chromebook 14 \(CB3-431\)|Predator G9-793|GT-810|B1-870|B3-A4[02]|B3-A50FHD|ET-108-11A|ATAB1021E|ACTAB721)(?:[);/ ]|$)' device: 'smartphone' models: # smart displays @@ -860,7 +1562,16 @@ Acer: - regex: 'A1-81[01]' model: 'Iconia A' device: 'tablet' - - regex: 'A1-84(1|0FHD)' + - regex: 'ATAB1021E' + model: 'ATAB1021E' + device: 'tablet' + - regex: 'ET-108-11A' + model: 'Enduro T1' + device: 'tablet' + - regex: 'TPA60W' + model: 'TPA60W' + device: 'tablet' + - regex: 'A1-84(1|0(?:FHD)?)' model: 'Iconia Tab 8' device: 'tablet' - regex: 'A1-713(HD)?' @@ -878,7 +1589,7 @@ Acer: - regex: 'A3-A[34]0' model: 'Iconia Tab 10' device: 'tablet' - - regex: 'B1-7(?:[5678]0|30HD|A0)' + - regex: 'B1-7(?:[5-9]0|30HD|A0)' model: 'Iconia One 7' device: 'tablet' - regex: 'B1-7[123][01]|B1-A71' @@ -890,7 +1601,7 @@ Acer: - regex: 'B1-8[123567]0' model: 'Iconia One 8' device: 'tablet' - - regex: 'B3-A([125]0|3[02]|40FHD|4[02])' + - regex: 'B3-A([125]0|3[02]|[45]0FHD|4[02])' model: 'Iconia One 10' device: 'tablet' - regex: 'A101' @@ -908,6 +1619,12 @@ Acer: - regex: 'GT-810' model: 'Predator 8' device: 'tablet' + - regex: '(ACTAB721)' + model: '$1' + device: 'tablet' + - regex: 'Acer_one_8_T2' + model: 'One 8 T2' + device: 'tablet' # explicit smartphone models - regex: 'E39(?:[);/ ]|$)' @@ -916,8 +1633,6 @@ Acer: model: 'Liquid Mini' - regex: 'E320(?:-orange)?(?:[);/ ]|$)' model: 'Liquid Express' - - regex: 'E310(?:[);/ ]|$)' - model: 'beTouch E210' - regex: 'Android.*V360(?:[);/ ]|$)' model: 'Liquid E1 Duo' - regex: 'Android.*V370(?:[);/ ]|$)' @@ -974,10 +1689,10 @@ Acer: - regex: '(?:Acer )?(Chromebook 14)' model: '$1' device: 'desktop' - - regex: '(Aspire V5-121)' + - regex: '(Aspire (?:V5-121|XC-704G|V5-573G|A515-51G|4349))' model: '$1' device: 'desktop' - - regex: '(Predator G9-793)' + - regex: '(Predator G9-793|Aspire E5-511)' model: '$1' device: 'desktop' @@ -993,7 +1708,7 @@ Acer: # Advan Advan: - regex: '(?:ADVAN (?:M4|S40)|i7U|S45E|50[46]1|5059|S50H|I7D|i55[KD]|i4U|S7D|S4Z|i5[KE]|S5E[ _]NXT|S5J\+)(?:[);/ ]|$)' + regex: '(?:ADVAN (?:M4|S40)|i7U|S45E|S50H|I7D|i55[KD]|i4U|S7D|S4Z|i5[KE]|S5E[ _]NXT|S5J\+|S4\+)(?:[);/ ]|$)|[ ](?:50(?:[46]1|5[89]|62)|600[24])(?: Build|\) AppleWebKit)|(?:E1C_3G)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'ADVAN M4' @@ -1008,27 +1723,51 @@ Advan: model: 'I$1' - regex: 'i4U' model: 'I4U' - - regex: '(S45E|50[46]1|5059|S50H|I7D|S7D|S4Z|S5J\+)(?:[);/ ]|$)' + - regex: ' 6004(?: Build|\) AppleWebKit)' + model: 'G2 Pro' + - regex: ' 6002(?: Build|\) AppleWebKit)' + model: 'G3 Pro' + - regex: '(S45E|50[46]1|505[89]|5062|S50H|I7D|S7D|S4Z|S5J\+|S4\+)(?:[);/ ]|$)' model: '$1' + - regex: 'E1C_3G' + device: 'tablet' + model: 'E1C 3G' -# Advance +# Advance (advanceperu.com) Advance: - regex: 'Hollogram|HL6246|IntroTr3544|Tr3845' + regex: 'Hollogram|(?:HL(?:4936|6246|[56]575|5[67]67|9000)|IntroTr3544|Pr(?:61(?:4[56]|50)|60[27]0|5[69]50)|Tr3845|SP[345]701)(?:[);/ ]|$)' device: 'smartphone' models: + # explicit table models - regex: 'IntroTr3544|Tr3845' model: 'Intro' device: 'tablet' - - regex: 'HL6246' - model: 'Hollogram HL6246' - - regex: 'Hollogram ([^;\)]+) Build' + - regex: 'SP([345]701)' + model: 'SmartPad SP$1' + device: 'tablet' + - regex: 'Pr(61(?:4[56]|50)|60[27]0|5[69]50)' + model: 'Prime PR$1' + device: 'tablet' + # explicit smartphone models + - regex: 'HL(4936|6246|[56]575|5[67]67|9000)' + model: 'Hollogram HL$1' + - regex: 'Hollogram ([^;/)]+)(?: Build|[;)])' model: 'Hollogram $1' -# AGM +# AGM (agm.tel) AGM: - regex: 'AGM ([^/;\)]+)(?: Build|\))' + regex: 'AGM ([^/;)]+)(?: Build|[;)])|AG[_ ]Go[_-]Tab|(?:Flair(?! \w\d)|(?<!STX )Ultra 2|Freedom Access)(?:[);/ ]|$)' device: 'smartphone' - model: '$1' + models: + - regex: 'AG[_ ]Go[_-]Tab[_ ]Access(_2)?(?:[);/ ]|$)' + device: 'tablet' + model: 'Go Tab Access$1' + - regex: '(Flair|Ultra 2|Freedom Access)(?:[);/ ]|$)' + model: '$1' + - regex: 'AGM A9(?:[);/ ]|$)' + model: 'A9' + - regex: 'AGM ([^/;)]+)(?: Build|[;)])' + model: '$1' # Airness Airness: @@ -1036,24 +1775,24 @@ Airness: device: 'feature phone' model: '$1' -# Aiwa +# Aiwa (aiwa.mx) Aiwa: - regex: '(?:AW790|M300|AWM533|AW500)(?:[);/ ]|$)' + regex: '(?:AW790|M300(?! 4G)|AWM(?:53[39]|50[19]|561)|AW500)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'AW790(?:[);/ ]|$)' model: 'AW790' - regex: 'AW500(?:[);/ ]|$)' model: 'AW500' - - regex: 'AWM533(?:[);/ ]|$)' - model: 'AWM533' + - regex: 'AWM(53[39]|50[19]|561)(?:[);/ ]|$)' + model: 'AWM$1' - regex: 'M300(?:[);/ ]|$)' model: 'M300' device: 'phablet' # Akai Akai: - regex: 'Akai[ _-]|Eco[ _]E2|Glory[ _](?:G[1235]|L[123]|O[125])|TAB-[79]8[03]0Q?|X6 METAL|AKTB-703MZ' + regex: 'AKAI,|Akai[ _-]|Eco[ _]E2|Glory[ _](?:G[1235]|L[123]|O[125])|TAB-[79]8[03]0Q?|X6 METAL|AKTB-703MZ' device: 'smartphone' models: - regex: 'TAB-([79]8[03]0Q?)' @@ -1069,10 +1808,15 @@ Akai: model: 'Glory $1' - regex: 'Eco[ _]E2' model: 'Eco E2' - - regex: 'Akai[ _-]([^;/]+) Build' + - regex: 'Akai[ _-]([^;/)]+)(?: Build|[;)])' model: '$1' - - regex: 'Akai[ _-]([^;/]+)(?:[;/)]|$)' + + - regex: 'AKAI,(AK3219NF)' + device: 'tv' model: '$1' + - regex: 'Si2157LG32' + device: 'tv' + model: '' # Arian Arian Space: @@ -1088,239 +1832,281 @@ Arian Space: - regex: '70 ST7001RW' model: '70' -# Alcatel +# Alcatel (alcatelmobile.com) Alcatel: - regex: 'Alcatel|Alc(?!or )[a-z0-9]+|One[ _]?Touch|idol3|(?:4003[AJ]|4009[ADEFIKMSX]|4013[DEJKMX]|4014[ADEKMX]|4015[ADNTX]|4016[ADX]|4017[ADEFSX]|4018[ADEFMX]|4024[EDX]|4027[ADNX]|4028[AEJS]|4032[ADEX]|4034L_EEA|4034[ADEFGX]|4035[ADXY]|4045[ADEX]|4047[ADFGNX]|4049[DEGMX]|4060[SW]|A466BG|A621BL|4114E|5001[ADJTU](?:_EEA|_RU)?|5003[ADG](?:_(?:EEA|RU))?|5007A|5008[DUY](?:_(?:EEA|RU))?|5009[AD](?:_RU|_EEA)?|5010[DEGSUX]|5011A|5012[DFG]|5015[ADEX]|5016[AXJ]|5017[ABDEOX]|5019D|5022[EDX]|5023[EF]|5024[ADJ](?:_RU|_EEA)?|5025[DEG]|5026[ADJ]|5027B|5028A|5029E|5032W|5033[AEFXDJGMOTXY](?:_(?:EEA|RU))?|5034D(_RU)?|5036D|5038[ADEX]|5039[D](?:_EEA|_RU)?|5041[CD]|5042[ADEFGWX]|5044[ADGIKOPSTY]|5045[ADFGIJTXY]|5046[ADGIJSTUY]|5047[DIUY]|5048[AYU](?:_RU|_EEA)?|5049[EGSWZ]|5050[ASXY]|5051[ADEJMTWX]|5052[ADY](_RU)?|5053[AKY](?:_EEA|_RU)?|5054[ADNSTWX]|5056[ADEGIJMNTUWX]|5057M|5058[AIY](_RU)?|5059[ADXYZIST](_RU)?|5060D(?:_EEA|_RU)?|5065[ADNWX]|5070D|5080[ADFQUX]|5085[ABCDGHIJNOQY]|5086[ADY]|5090[AIY]|5095[IKY]|5098[OS]|5099[ADYUI](_RU)?|5116J|5145A|6016[ADEX]|6036[AXY]|6037[BKY]|6039[AHJKY]|6043[AD]|6044D|6045[BFIKOYX]|6050[AFY]|6055[ABDHIKPUYZ]|6058[ADX]|6060S|6062W|6070K|7040[ADEFKRT]|7041[DX]|7042A|7043[AEKY]|7044[AX]|7045Y|7048[ASWX]|7053D|7055A|7070X|8030Y|8050[DEGX]|8063|9001[DIX]|9002X|9003[AX]|9024O|9005X|9026X|9007[ATX]|9008[ADIJNTUX]|9010X|9022X|9027[FTWX]|9203A|A570BL|I213|I216X|A50[13]DL|A574BL|A57[17]VL|A464BG|5028Y[_ ]EEA)(?:[);/ ]|$)|TIMXL' + regex: 'Alcatel|Alc(?!or )[a-z0-9]+|One[ _]?Touch|idol3|TIMXL|(?:(?:4003[AJ]|4009[ADEFIKMSX]|4013[DEJKMX]|4014[ADEKMX]|4015[ADNTX]|4016[ADX]|4017[ADEFSX]|4018[ADEFMX]|4024[DEX]|4027[ADNX]|4028[AEJS]|4032[ADEX]|4034[ADEFGLTX]|4035[ADXY]|4045[ADELX]|4047[ADFGNX]|4049[DEGMX]|4060[SW]|4087U|4114E|5001[ADJTU]|5002[ABDEFJHLMRSX]|5003[ADGU]|5006[ADG]|5007[AGUO]|5008[ADTUY]|5009[AD]|5010[DEGSUX]|5011A|5012[DFG]|5015[ADEX]|5016[AJX]|5017[ABDEOX]|5019D|5022[DEX]|5023[EF]|5024[ADFIJ]|5025[DEG]|5026[ADJ]|5027B|5028[ADY]|5029[ADEFY]|5030[ADEFJMU]|5032W|5033(?:[YX]R|FP|[ADEFGJMOQSTXY])|5034D|5036D|5038[ADEX]|5039[DY]|5041[CD]|5042[ADEFGTWX]|5044[ADGIKOPSTY]|5045[ADFGIJTXY]|5046[ADGIJSTUY]|5047[DIUY]|5048[AIUY]|5049[EGSWZ]|5050[ASXY]|5051[ADEJMTWX]|5052[ADY]|5053[ADKY]|5054[ADNSTWX]|5056[ADEGIJMNTUWX]|5057M|5058[AIY]|5059[ADIJSTXYZ]|5060[ADJ]|5061[AKU]|5065[ADNWX]|5070D|5080[ADFQUX]|5085[ABCDGHIJNOQY]|5086[ADY]|5090[AIY]|5095[IKY]|5098[OS]|5099[ADIUY]|5116J|5145A|6016[ADEX]|6025[DH]|6036[AXY]|6037[BKY]|6039[AHJKSY]|6042D|6043[AD]|6044D|6045[BFIKOXY]|6050[AFY]|6055[ABDHIKPUYZ]|6056H|6058[ADX]|6060[SXC]|6062W|6070K|7040[ADEFKRT]|7041[DX]|7042A|7043[AEKY]|7044[AX]|7045Y|7048[ASWX]|7053D|7055A|7070X|7071[ADX]|8030Y|8050[DEGX]|8063|8088[MQX]|8094M|9001[DIX]|9002X|9003[AX]|9005X|9007[ATX]|9008[ADIJNTUX]|9009[AG]|9010X|9013[AX]|9020A|9022X|9024O|9026X|9027[FQTWX]|9029Z|9032[WXZ]|9203A|A(?:46[46]BG|57[04]BL|576CC|621BL|50[13]DL|57[17]VL)|I213|I216[AX]|(?<!\.)80(?:82|6[78]|5[12]))(?:_(?:EEA|RU|TR))?|P3[36]0X|AM-H200|4063F)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: '(?:5022[EDX]|5070D)(?:[);/ ]|$)' + - regex: '4087U' + model: '1SE Light' + - regex: '5022[EDX]|5070D' model: 'One Touch Pop Star' - - regex: '6044D(?:[);/ ]|$)' + - regex: '6044D' model: 'One Touch Pop Up' - - regex: '(?:4015[ATX]|4016A)(?:[);/ ]|$)' + - regex: '4015[ATX]|4016A' model: 'One Touch Pop C1' - - regex: '(?:4015[DN]|4016[DX])(?:[);/ ]|$)' + - regex: '4015[DN]|4016[DX]' model: 'One Touch Pop C1 Dual SIM' - - regex: '4032[AX](?:[);/ ]|$)' + - regex: '4032[AX]' model: 'One Touch Pop C2' - - regex: '4032[DE](?:[);/ ]|$)' + - regex: '4032[DE]' model: 'One Touch Pop C2 Dual SIM' - - regex: '5036D(?:[);/ ]|$)' + - regex: '5036D' model: 'One Touch Pop C5 Dual SIM' - - regex: '(?:7040[AFK]|7041X|7042A)(?:[);/ ]|$)' + - regex: '7040[AFK]|7041X|7042A' model: 'One Touch Pop C7' - - regex: '(?:7040[DE]|7041D)(?:[);/ ]|$)' + - regex: '7040[DE]|7041D' model: 'One Touch Pop C7 Dual SIM' - - regex: '4018[ADEFMX](?:[);/ ]|$)' + - regex: '4018[ADEFMX]' model: 'One Touch Pop D1' - - regex: '4035[ADXY](?:[);/ ]|$)' + - regex: '4035[ADXY]' model: 'One Touch Pop D3' - - regex: '5038[ADEX](?:[);/ ]|$)' + - regex: '5038[ADEX]' model: 'One Touch Pop D5' - - regex: '4045[AX](?:[);/ ]|$)' + - regex: '4045[AXL]' model: 'One Touch Pop 2 4"' - - regex: '4045[DE](?:[);/ ]|$)' + - regex: '4045[DE]' model: 'One Touch Pop 2 4" Dual SIM' - - regex: '5042[AFGWX](?:[);/ ]|$)' + - regex: '5042[AFGWX]' model: 'One Touch Pop 2 4.5"' - - regex: '5042[DE](?:[);/ ]|$)' + - regex: '5042[DE]' model: 'One Touch Pop 2 4.5" Dual SIM' - - regex: '(?:7043[AY]|7044[AX])(?:[);/ ]|$)' + - regex: '7043[AY]|7044[AX]' model: 'One Touch Pop 2 5"' - - regex: '7043[EK](?:[);/ ]|$)' + - regex: '7043[EK]' model: 'One Touch Pop 2 5" Dual SIM' - - regex: '50[16]5X(?:[);/ ]|$)' + - regex: '50[16]5X' model: 'One Touch Pop 3' - - regex: '(?:5015[AE]|5016[AJ]|5065[ADWX]|5116J)(?:[);/ ]|$)' + - regex: '5015[AE]|5016[AJ]|5065[ADWX]|5116J' model: 'One Touch Pop 3 5"' - - regex: '(?:5025[DEG]|5054[ADSTX])(?:[);/ ]|$)' + - regex: '5025[DEG]|5054[ADSTX]' model: 'One Touch Pop 3 5.5"' - - regex: '5015D(?:[);/ ]|$)' + - regex: '5015D' model: 'One Touch Pop 3 Dual SIM' - - regex: '5051[AEJMTWX](?:[);/ ]|$)' + - regex: '5051[AEJMTWX]' model: 'One Touch Pop 4' - - regex: '5051D(?:[);/ ]|$)' + - regex: '5051D' model: 'One Touch Pop 4 Dual SIM' - - regex: '5095[IKY](?:[);/ ]|$)' + - regex: '5095[IKY]' model: 'One Touch Pop 4S' - - regex: '5056[ADEGJMTUX](?:[);/ ]|$)' + - regex: '5056[ADEGJMTUX]' model: 'One Touch Pop 4+' - - regex: '7070X(?:[);/ ]|$)' + - regex: '7070X' model: 'One Touch Pop 4 6"' - - regex: '5057M(?:[);/ ]|$)' + - regex: '5057M' model: 'One Touch Pop Mirage' - - regex: '5050[ASXY](?:[);/ ]|$)' + - regex: '5050[ASXY]' model: 'One Touch Pop S3' - - regex: '7045Y(?:[);/ ]|$)' + - regex: '7045Y' model: 'One Touch Pop S7' - - regex: '6037[BKY](?:[);/ ]|$)' + - regex: '6037[BKY]' model: 'One Touch Idol 2' - - regex: '5027B(?:[);/ ]|$)' + - regex: '5042T' + model: 'One Touch Astro' + - regex: '5027B' model: 'One Touch Dawn' - - regex: '(?:5024[AD](?:_RU|_EEA)?|5028Y[_ ]EEA)(?:[);/ ]|$)' - model: '1S' - - regex: '5034D(_RU)?(?:[);/ ]|$)' + - regex: '7071[ADX]' + model: 'A7 XL' + - regex: '5002[ABDEHLMSXJ]' + model: '1B (2020)' + - regex: '(?:Alcatel_)?5008R' + model: 'Onyx' + - regex: '(?:Alcatel_)?5002R' + model: 'Volta' + - regex: '4034T' + model: '1E' + - regex: '5002F' + model: '1A (2020)' + - regex: '4063F' + model: '1L Plus' + - regex: '5034D|6056H' model: '3L' - - regex: '7040[RT](?:[);/ ]|$)' + - regex: 'A576CC' + model: 'Kora A576CC' + - regex: '7040[RT]' model: 'One Touch Fierce 2' - regex: '5056[NW]' model: 'One Touch Fierce 4' - - regex: '5054[NW]' + - regex: '5054N' model: 'One Touch Fierce XL' - - regex: '6016[AX](?:[);/ ]|$)' + - regex: '6042D' + model: 'One Touch Flash' + - regex: '6016[AX]' model: 'One Touch Idol 2 mini' - - regex: '6016[DE](?:[);/ ]|$)' + - regex: '6016[DE]' model: 'One Touch Idol 2 mini Dual SIM' - - regex: '6036[AXY](?:[);/ ]|$)' + - regex: '6036[AXY]' model: 'One Touch Idol 2 mini S' - - regex: '6050[AFY](?:[);/ ]|$)' + - regex: '6050[AFY]' model: 'One Touch Idol 2S' - - regex: '6039[AHJKY](?:[);/ ]|$)|idol3' + - regex: '6039[AHJKYS]|idol3' model: 'One Touch Idol 3' - - regex: '6045[BFIKOYX](?:[);/ ]|$)' + - regex: '6045[BFIKOYX]|AM-H200' model: 'One Touch Idol 3 5.5"' - - regex: '6055[ABDHIKPUYZ](?:[);/ ]|$)' + - regex: '6055[ABDHIKPUYZ]' model: 'One Touch Idol 4' - - regex: '6070K(?:[);/ ]|$)' + - regex: '6070K' model: 'One Touch Idol 4S' - - regex: '6058[ADX](?:[);/ ]|$)' + - regex: '6058[ADX]' model: 'One Touch Idol 5' - - regex: '6060S(?:[);/ ]|$)' + - regex: '6060[SX]' model: 'One Touch Idol 5S' - - regex: '6043[AD](?:[);/ ]|$)' + - regex: '(?:Alcatel_)?6060C' + model: 'One Touch Idol 5' + - regex: '6043[AD]' model: 'One Touch Idol X+' - - regex: '8030Y(?:[);/ ]|$)' + - regex: '8030Y' model: 'One Touch Hero 2' - - regex: '7055A(?:[);/ ]|$)' + - regex: '7055A' model: 'One Touch Hero 2C' - - regex: '7053D(?:[);/ ]|$)' + - regex: '7053D' model: 'One Touch X1' - - regex: '5065N(?:[);/ ]|$)' + - regex: '5065N' model: 'TRU' - - regex: 'A574BL(?:[);/ ]|$)' + - regex: 'A574BL' model: 'Raven' - - regex: 'A577VL(?:[);/ ]|$)' + - regex: 'A577VL' model: 'Zip' - - regex: 'A466BG(?:[);/ ]|$)' + - regex: 'A466BG' model: 'Pixi Unite' - - regex: '5056I(?:[);/ ]|$)' + - regex: '5056I' model: 'One Touch Optus X Smart' - - regex: 'A570BL(?:[);/ ]|$)' + - regex: 'A570BL' model: 'One Touch Pixi Avion LTE' - - regex: 'A571VL(?:[);/ ]|$)' + - regex: 'A571VL' model: 'One Touch Pixi Avion 4G LTE' - - regex: '4024[DEX](?:[);/ ]|$)' + - regex: '4024[DEX]' model: 'One Touch Pixi First' - - regex: 'A464BG(?:[);/ ]|$)' + - regex: 'A464BG' model: 'One Touch Pixi Glitz' - - regex: 'A621BL(?:[);/ ]|$)' + - regex: 'A621BL' model: 'One Touch Pixi Glory' - - regex: '4014D(?:[);/ ]|$)' + - regex: '4014D' model: 'One Touch Pixi 2' - - regex: '4009[AFIKMSX](?:[);/ ]|$)' + - regex: '4009[AFIKMSX]' model: 'One Touch Pixi 3 3.5"' - - regex: '4009[DE](?:[);/ ]|$)' + - regex: '4009[DE]' model: 'One Touch Pixi 3 3.5" Dual SIM' - - regex: '(?:4003[AJ]|4013[DEJKMX]|4014[AEKMX]|4114E)(?:[);/ ]|$)' + - regex: '4003[AJ]|4013[DEJKMX]|4014[AEKMX]|4114E' model: 'One Touch Pixi 3 4"' - - regex: '(?:4027[ADNX]|4028[AEJS]|5019D)(?:[);/ ]|$)' + - regex: '4027[ADNX]|4028[AEJS]|5019D' model: 'One Touch Pixi 3 4.5"' - - regex: '5017[ABDEOX](?:[);/ ]|$)' + - regex: '5017[ABDEOX]' model: 'One Touch Pixi 3 4.5" 4G' - - regex: '9002X(?:[);/ ]|$)' + - regex: '9002X' model: 'One Touch Pixi 3 7"' device: 'phablet' - - regex: '9007A(?:[);/ ]|$)' + - regex: '9007A' model: 'One Touch Pixi 3 7"' device: 'tablet' - - regex: '9007[TX](?:[);/ ]|$)' + - regex: '9007[TX]' model: 'One Touch Pixi 3 7" 4G' device: 'tablet' - - regex: '9022X(?:[);/ ]|$)' + - regex: '(?:9009G|9013A)' + model: '1T' + device: 'tablet' + - regex: '(?!<\.)8082(?:_(?:EEA|RU|TR))?(?:[);/ ]|$)' + model: '1T 10' + device: 'tablet' + - regex: '(?!<\.)8052(?:_(?:EEA|RU|TR))?(?:[);/ ]|$)' + model: 'TEKE Mini' + device: 'tablet' + - regex: '(?!<\.)8051(?:_(?:EEA|RU|TR))?(?:[);/ ]|$)' + model: 'Smart Tab 7" WiFi' + device: 'tablet' + - regex: '9009A' + model: '1T 7' + device: 'tablet' + - regex: '(?:(?!<\.)806[78]|9013X)(?:_(?:EEA|RU))?(?:[);/ ]|$)' + model: '1T 7.0"' + device: 'tablet' + - regex: '9022X' model: 'One Touch Pixi 3 8"' device: 'phablet' - - regex: '9010X(?:[);/ ]|$)' + - regex: '9010X' model: 'One Touch Pixi 3 10"' device: 'tablet' - - regex: '4017[ADEFSX](?:[);/ ]|$)' + - regex: '4017[ADEFSX]' model: 'One Touch Pixi 4 3.5"' - - regex: '4034(?:[ADEFGX]|L_EEA)(?:[);/ ]|$)' + - regex: '4034[ADEFGXL]' model: 'One Touch Pixi 4 4"' - - regex: '4060[SW](?:[);/ ]|$)' + - regex: '4060[SW]' model: 'One Touch Pixi 4 4.5"' - - regex: '5023[EF](?:[);/ ]|$)' + - regex: '5023[EF]' model: 'One Touch Pixi 4 Plus Power' - - regex: '5010[DEGSUX](?:[);/ ]|$)' + - regex: '5010[DEGSUX]' model: 'One Touch Pixi 4 5" 3G' - - regex: '5041D(?:[);/ ]|$)' + - regex: '5041D' model: 'One Touch Pixi 4 5.0"' - - regex: '5012[DFG](?:[);/ ]|$)' + - regex: '5012[DFG]' model: 'One Touch Pixi 4 5.5" 3G' - - regex: '(?:5045[ADFGIJTXY]|5145A)(?:[);/ ]|$)' + - regex: '5045[ADFGIJTXY]|5145A' model: 'One Touch Pixi 4 5" 4G' - - regex: '5098O(?:[);/ ]|$)' + - regex: '5098O' model: 'One Touch Pixi Theatre' - - regex: 'A501DL(?:[);/ ]|$)' + - regex: 'A501DL' model: 'A1' - - regex: 'A503DL(?:[);/ ]|$)' + - regex: 'A503DL' model: 'A1X' - - regex: '5046[ADIJTUY](?:[);/ ]|$)' + - regex: '(?:Alcatel_)?5004R' + model: 'Axel' + - regex: '5046[ADIJTUY]' model: 'A3' - - regex: '(?:5011A|5049[EG])(?:[);/ ]|$)' + - regex: '5011A|5049[EG]' model: 'A3 Plus' - regex: '9008[ADIJNTUX]' model: 'A3 XL' - - regex: '9203A(?:[);/ ]|$)' + - regex: '9203A' model: 'A3 7" 3G' device: 'tablet' - - regex: '9027[FTWX](?:[);/ ]|$)' + - regex: '(?:9027[QFTWX]|9032X)' model: '3T 8.0"' device: 'tablet' - - regex: '9026X(?:[);/ ]|$)' + - regex: '9026X' model: 'A3 10"' device: 'tablet' - - regex: '5085[BQ](?:[);/ ]|$)' + - regex: '5085[BQ]' model: 'A5' - - regex: '5085[ADHIJY](?:[);/ ]|$)' + - regex: '5085[ADHIJY]' model: 'A5 LED' - - regex: '5085N(?:[);/ ]|$)' + - regex: '5085N' model: 'A5 Max LED' - - regex: '5090[AIY](?:[);/ ]|$)' + - regex: '5090[AIY]' model: 'A7' - - regex: '5046[GS](?:[);/ ]|$)' + - regex: '5046[GS]' model: 'A30' - - regex: '5049S(?:[);/ ]|$)' + - regex: '5049S' model: 'A30 Plus' - - regex: '5049Z(?:[);/ ]|$)' + - regex: '5049Z' model: 'A30 Fierce' - regex: '5085[GO]' model: 'A50' - - regex: '5048[AYU](?:_RU|_EEA)?(?:[);/ ]|$)' + - regex: '5048[AYUI]' model: '3X (2019)' - - regex: '5049W(?:[);/ ]|$)' + - regex: '5049W' model: 'Revvl' - - regex: '8050[GX](?:[);/ ]|$)' + - regex: '8050[GX]' model: 'One Touch Pixi 4 6" 3G' - - regex: '8050[ED](?:[);/ ]|$)' + - regex: '8050[ED]' model: 'One Touch Pixi 4 6" 3G Dual SIM' - - regex: '(?:5098S|9001[DIX])(?:[);/ ]|$)' + - regex: '5098S|9001[DIX]' model: 'One Touch Pixi 4 6" 4G' - - regex: '9003[AX](?:[);/ ]|$)' + - regex: '9003[AX]' model: 'One Touch Pixi 4 7" 3G' device: 'tablet' - - regex: '8063(?:[);/ ]|$)' + - regex: '8063' model: 'One Touch Pixi 4 7" WiFi' device: 'tablet' - - regex: '9024O(?:[);/ ]|$)' + - regex: '9024O' model: 'One Touch Pixi 5' device: 'tablet' - - regex: 'I216X(?:[);/ ]|$)' + - regex: 'I216[AX]' model: 'One Touch Pixi 7' device: 'tablet' - - regex: 'I213(?:[);/ ]|$)' + - regex: 'I213' model: 'One Touch Pixi 7' device: 'tablet' - - regex: '9005X(?:[);/ ]|$)' + - regex: '9005X' model: 'One Touch Pixi 8' device: 'tablet' - regex: 'P320X' @@ -1329,24 +2115,32 @@ Alcatel: - regex: 'P310X' model: 'One Touch POP 7' device: 'tablet' - - regex: '7048[ASWX](?:[);/ ]|$)' + - regex: 'P330X' + model: 'One Touch POP 7S' + device: 'tablet' + - regex: '9020A' + model: 'One Touch Trek HD' + device: 'tablet' + - regex: '7048[ASWX]' model: 'One Touch Go Play' - - regex: '(?:Alcatel-)?OT-802(?:[);/ ]|$)' + - regex: '(?:Alcatel-)?OT-802' model: 'Wave' - - regex: 'ALCATEL_ONE_TOUCH_768T(?:[);/ ]|$)' + - regex: 'ALCATEL_ONE_TOUCH_768T' model: 'Island' - - regex: '(?:TRIBE_)?3075A(?:[);/ ]|$)' + - regex: '(?:TRIBE_)?3075A' model: 'One Touch Tribe' - - regex: 'ALCATEL_one_touch_585(?:[);/ ]|$)' + - regex: 'ALCATEL_one_touch_585' model: 'One Touch 585' - - regex: 'ALCATEL_ONE_TOUCH_838(?:[);/ ]|$)' + - regex: 'ALCATEL_ONE_TOUCH_838' model: 'One Touch 838' - - regex: 'ALCATEL_one_touch_813d(?:[);/ ]|$)' + - regex: 'ALCATEL_one_touch_813d' model: 'One Touch 813D' - - regex: 'ALCATEL_one_touch_813(?:[);/ ]|$)' + - regex: 'ALCATEL_one_touch_813' model: 'One Touch 813' - regex: 'OT871A' model: 'One Touch 871A' + - regex: 'P360X' + model: 'One Touch Pop 10' - regex: '(?:Alcatel[ _])?One[ _]?Touch[ _]((?:T[0-9]+|TAB[^/;]+|EVO[78](?:HD)?)) Build' device: 'tablet' model: 'One Touch $1' @@ -1354,75 +2148,99 @@ Alcatel: model: 'One Touch$1' - regex: '(?:Alcatel[ _])?One[ _]?Touch([^/;\)]*)\)' model: 'One Touch$1' - - regex: '5080[ADFQUX](?:[);/ ]|$)' + - regex: '5080[ADFQUX]' model: 'Shine Lite' - regex: 'TIMXL' model: 'TIM XL' - regex: '5085C' model: 'PulseMix' - - regex: '4049[DEGMX](?:[);/ ]|$)' + - regex: '4049[DEGMX]' model: 'U3' - - regex: '5044[ADIKOPTY](?:[);/ ]|$)' + - regex: '5044[ADIKOPTY]' model: 'U5' - - regex: '4047[DFXN](?:[);/ ]|$)' + - regex: '4047[DFXN]' model: 'U5 3G' - - regex: '5047[DIUY](?:[);/ ]|$)' + - regex: '5047[DIUY]' model: 'U5 HD' - - regex: '4047G(?:[);/ ]|$)' + - regex: '4047G' model: 'U5 Lite' - - regex: '4047A(?:[);/ ]|$)' + - regex: '4047A' model: 'U5 Plus' - - regex: '4044[CV](?:[);/ ]|$)' + - regex: '4044[CV]' model: 'Quick Flip' - - regex: '4044O(?:[);/ ]|$)' + - regex: '4044O' model: 'Cingular Flip 2' - - regex: '4044[MNT](?:[);/ ]|$)' + - regex: '(?:Alcatel)?4044[MNT]' model: 'Go Flip' - - regex: '5044[GS](?:[);/ ]|$)' + - regex: '5044[GS]' model: 'U50' - - regex: '5033[ADXJEFGMOTXY](?:_(?:EEA|RU))?(?:[);/ ]|$)' + - regex: '5033XR' + model: '1 (2021)' + - regex: '5033[ADJEFGMOTXYQS]' model: '1' - - regex: '5009[AD](?:_RU|_EEA)?(?:[);/ ]|$)' + - regex: '5009[AD]' model: '1C' - - regex: '5008[DUY](?:_(?:EEA|RU))?(?:[);/ ]|$)' + - regex: '5008[ADUYT]' model: '1X (2019)' - - regex: '5007A(?:[);/ ]|$)' + - regex: '5007[AGU]' model: '1V (2020)' - - regex: '5003[ADG](?:_(?:EEA|RU))?(?:[);/ ]|$)' + - regex: '5003[ADGU]' model: '1C (2019)' - - regex: '5024J(?:[);/ ]|$)' + - regex: '5006[ADG]' + model: '3C (2019)' + - regex: '5024[ADFIJ]|5028Y|6025[DH]' model: '1S' - - regex: '5028A(?:[);/ ]|$)' + - regex: '(?:5028[AD]|5007O)' model: '1S (2020)' - - regex: '5001[ADJTU](?:_EEA|_RU)?(?:[);/ ]|$)' + - regex: '5030E' + model: '1SP (2020)' + - regex: '5030[ADFJMU]' + model: '1SE (2020)' + - regex: '5001[ADJTU]' model: '1V' - - regex: '5059[ADXYZIT](_RU)?(?:[);/ ]|$)' + - regex: '5059[ADJXYZIT]' model: '1X' - - regex: '5059S(?:[);/ ]|$)' + - regex: '5059S' model: 'Avalon V' - - regex: '5060D(?:_EEA|_RU)?(?:[);/ ]|$)' + - regex: '5060[ADJ]' model: '5V' device: 'phablet' - - regex: '(?:5052[ADY]|5053[AKY])(?:_EEA|_RU)?(?:[);/ ]|$)' + - regex: '5052[ADY]|5053[ADKY]' model: '3' - - regex: '5029E(?:[);/ ]|$)' + - regex: '5029E' model: '3 (2020)' - - regex: '(?:5032W|5099[ADYUI](_RU)?)(?:[);/ ]|$)' + - regex: '5029[ADFY]' + model: '3L (2020)' + - regex: '5032W|5099[ADYUI]' model: '3V' - - regex: '5026[ADJ](?:[);/ ]|$)' + - regex: '5026[ADJ]' model: '3C' - - regex: '5039[D](?:_(?:EEA|RU))?(?:[);/ ]|$)' + - regex: '5039[DY]' model: '3L' device: 'phablet' - - regex: '5058[AIY](_RU)?(?:[);/ ]|$)' + - regex: '5058[AIY]' model: '3X' - - regex: '5086[ADY](?:[);/ ]|$)' + - regex: '5061[AKU]' + model: '3X (2020)' + - regex: '5086[ADY]' model: '5' - - regex: '6062W(?:[);/ ]|$)' + - regex: '6062W' model: '7' + - regex: '8088[XQM]' + model: '3T 10"' + device: 'tablet' + - regex: '8094M' + model: '3T 10.1"' + device: 'tablet' + - regex: '9029Z' + model: 'Joy Tab' + device: 'tablet' + - regex: '9032[WZ]' + model: 'Joy Tab 2' + device: 'tablet' - regex: 'Alcatel UP' model: '' - - regex: '(?:ALCATEL_)?A383G(?:[);/ ]|$)' + - regex: '(?:ALCATEL_)?A383G' model: 'Big Easy Plus' - regex: '5041C' model: 'TETRA' @@ -1435,9 +2253,9 @@ Alcatel: - regex: 'Alc([a-z0-9]+)' model: '$1' -# Allview +# Allview (allviewmobile.com) Allview: - regex: 'Allview|A4You|A5_(?:Easy(?:_TM)?|Ready(?:_TM)?|Quad|Quad_Plus_TM)|A[56789]_Lite|A5Smiley|A6_Duo|A10_Lite_2019|A10_Plus|AX2_Frenzy|AX4Nano|AX5NanoQ|C6_Duo|E[23]_Living|E3_(?:Jump|Sign)|E4_Lite|M9_Connect|P(?:43_Easy|[5689]_Energy|6_Energy_Lite|[68]_Energy_Mini(?:_TM)?|(41|[458])_eMagic(?:_TM)?|[589](?:_)?Life(?:_TM)?|[567]_Lite(?:_TM)?|6_plus|[45678]_Pro|7_Seon|10_Life|10_Max|10_Style|7_Xtreme|6_Qmax|4_Quad)|V(?:[134]_Viper|1_Viper_I|2_Viper_(?:E|I|S|X|X_plus|Xe))|X(?:[1234]_Soul_Xtreme|[12345]_Soul|3_Soul_Lite|[23456]_Soul_Mini(?:_TM)?|4_Soul_Mini_S(?:_TM)?|[234]_Soul_Style(?:_TM)?|2_Soul_Style_Plus|2_Twin)|Viva_(H801|100[13]G|H1001_LTE)' + regex: 'Allview|A4You|H1003_LTE_PRO|A5_(?:Easy(?:_TM)?|Ready(?:_TM)?|Quad|Quad_Plus_TM)|A[5-9]_Lite|A5Smiley|A6_Duo|A10_Lite_(?:2019|2GB)|A10_(?:Plus|Max)|AX2_Frenzy|AX4Nano|AX5NanoQ|C6_Duo|E[23]_Living|E3_(?:Jump|Sign)|E4_Lite|M9_Connect|P(?:43_Easy|[5689]_Energy|6_Energy_Lite|[68]_Energy_Mini(?:_TM)?|(41|[458])_eMagic(?:_TM)?|[589](?:_)?Life(?:_TM)?|[567]_Lite(?:_TM)?|6_plus|[45678]_Pro|7_Seon|10_Life|10_Max|10_Style|7_Xtreme|6_Qmax|4_Quad)|V(?:[134]_Viper|1_Viper_I|2_Viper_(?:[EISX]|X_plus|Xe))|X4_Soul_Vision|X(?:[1-46]_Soul_Xtreme|[1-5]_Soul|3_Soul_Lite|[2-6]_Soul_Mini(?:_TM)?|4_Soul_Mini_S(?:_TM)?|[2-58]_Soul_Style(?:_TM)?|2_Soul_Style_Plus|2_Twin)|Viva_(?:H801|100[13]G|(?:H100[12]|H701|H802)_LTE|C701|i701G|803G)' device: 'smartphone' models: - regex: 'A4You' @@ -1445,8 +2263,6 @@ Allview: - regex: 'AX2_Frenzy' model: 'AX2 Frenzy' device: 'tablet' - - regex: 'AX4Nano' - model: 'AX4 Nano' - regex: 'AX5NanoQ' model: 'AX5 Nano Q' device: 'tablet' @@ -1510,7 +2326,9 @@ Allview: model: 'V2 Viper X Plus' - regex: 'V2_Viper_(E|I|S|X(?:e)?)' model: 'V2 Viper $1' - - regex: 'X([124])_Soul_Xtreme' + - regex: 'X4_Soul_Vision' + model: 'X4 Soul Vision' + - regex: 'X([1246])_Soul_Xtreme' model: 'X$1 Soul Xtreme' - regex: 'X4_Soul_Infinity_(L|N|S|Z)' model: 'X4 Soul Infinity $1' @@ -1526,7 +2344,7 @@ Allview: model: 'X$1 Soul Pro' - regex: 'X2_Soul_Style_Plus' model: 'X2 Soul Style Plus' - - regex: 'X([234])_Soul_Style(?:_TM)?' + - regex: 'X([23458])_Soul_Style(?:_TM)?' model: 'X$1 Soul Style' - regex: 'X([12345])_Soul' model: 'X$1 Soul' @@ -1548,8 +2366,12 @@ Allview: model: 'A6 Duo' - regex: 'A10_Lite_2019' model: 'A10 Lite (2019)' + - regex: 'A10_Lite_2GB' + model: 'A10 Lite' - regex: 'A10_Plus' model: 'A10 Plus' + - regex: 'A10_Max' + model: 'A10 Max' - regex: 'Impera S' model: 'Impera S' - regex: 'ALLVIEW P4i' @@ -1573,7 +2395,10 @@ Allview: - regex: 'Allview3SpeedQuad' device: 'tablet' model: 'Alldro 3 Speed Quad' - - regex: 'Viva_(H801|100[13]G|H1001_LTE)' + - regex: 'H1003_LTE_PRO' + device: 'tablet' + model: 'Viva H1003 LTE Pro' + - regex: 'Viva_(H801|100[13]G|(?:H802|H100[12]|H701)_LTE|C701|i701G|803G)' device: 'tablet' model: 'Viva $1' - regex: 'ALLVIEW ?SPEEDI' @@ -1599,28 +2424,50 @@ Allview: # Allwinner Allwinner: - regex: '(?:QUAD-CORE A64 p3|ZY-07B)(?:[);/ ]|$)' + regex: '(?:QUAD-CORE (?:A64 p3|A33 y3|T3 K2001M|T3 k2001o|T3 k2001-nwd)|ZY-07B|UltraOcta-T8|OCTA-CORE T8|OCTOPUS-CORE T8|QuadCore-R16)(?:[);/ ]|$)' device: 'tablet' models: - - regex: 'QUAD-CORE A64 p3' - model: 'A64 QUAD-CORE p3' - - regex: 'ZY-07B' - model: 'ZY-07B' + - regex: 'QUAD-CORE A64 p3' + model: 'A64 QUAD-CORE p3' + - regex: 'QUAD-CORE A33 y3' + model: 'A33 QUAD-CORE y3' + - regex: 'ZY-07B' + model: 'ZY-07B' + - regex: 'UltraOcta-T8' + device: 'car browser' + model: 'Ultra Octa T8' + - regex: 'QUAD-CORE T3 K2001o' + device: 'car browser' + model: 'QUAD-CORE T3 K2001O' + - regex: 'QUAD-CORE T3 K(2001M?)' + device: 'car browser' + model: 'QUAD-CORE T3 K$1' + - regex: 'OCTA-CORE T8' + device: 'car browser' + model: 'OCTA-CORE T8' + - regex: 'OCTOPUS-CORE T8' + device: 'car browser' + model: 'OCTOPUS-CORE T8' + - regex: 'QuadCore-R16' + device: 'car browser' + model: 'QUAD-CORE R16' # altron altron: - regex: 'AL-555|GI-626' + regex: '(AL-555|GI-626|OB[_-](?:421|728|627))(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'AL-555' model: 'AL-555' + - regex: 'OB[_-](421|728|627)' + model: 'OB-$1' - regex: 'GI-626' device: 'phablet' model: 'GI-626' -# AMGOO +# AMGOO (amgoo.com) AMGOO: - regex: 'AM(350|355|40[257]|41[05]|450|50[89]|52[037]|51[58]|53[05])' + regex: 'AM(350|355|40[257]|41[025]|450|50[689]|52[037]|51[58]|53[05])(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'AM350' @@ -1654,26 +2501,40 @@ AMGOO: - regex: 'AM([0-9]{3})' model: 'AM$1' -# Amoi +# Amoi or ami (amimobile.tech) Amoi: - regex: 'Amoi|A862W' + regex: 'Amoi|(?:A862W|Clever[ -]?(?:Gem S52|Gleam S45|Pad P7|Wave S50|Touch S46|JOY S40|Lite S41))(?:[);/ ]|$)' device: 'smartphone' models: + # explicit smartphone tablets + - regex: 'Clever Pad P7' + model: 'Clever Pad P7' # explicit smartphone models - regex: 'A862W' model: 'A862W' - - regex: 'Amoi[\- /]([a-z0-9]+)' + - regex: 'CLEVER JOY S40' + model: 'Clever Joy S40' + - regex: 'Clever[ -]?(Gleam S45|Gem S52|Wave S50|Touch S46|Lite S41)' + model: 'Clever $1' + # explicit feature models + - regex: 'Amoi[-_ /](CA6)' + device: 'feature phone' + model: '$1' + + - regex: 'Amoi[-_ /]([a-z0-9]+)' model: '$1' - regex: 'Amoisonic-([a-z0-9]+)' model: '$1' # Ainol Ainol: - regex: 'Numy|novo[0-9]|Novo 10 Hero|AX10PRO|NUMY3GAX9|NOVO10 Spark' + regex: 'Numy|novo[0-9]|Novo 10 Hero|AX10PRO|NUMY3GAX9|NOVO10 Spark|Aurora-II' device: 'tablet' models: - regex: 'Numy 3G AX1' model: 'Novo 7 Numy AX1 3G' + - regex: 'Numy[_ ]?3G[_ ]?Sword' + model: 'Numy 3G Sword' - regex: 'NOVO10 Spark' model: 'Novo 10 Spark' - regex: 'AX10PRO' @@ -1686,9 +2547,15 @@ Ainol: model: 'Numy 3G Talos 2' - regex: 'NUMY3GAX9(?:[);/ ]|$)' model: 'Numy 3G AX9' + - regex: 'Numy3G_AX10(?:[);/ ]|$)' + model: 'Numy 3G AX10' - regex: '(Novo 10 Hero QuadCore)' model: '$1' - - regex: 'Novo7 Flame(?:[);/ ]|$)' + - regex: 'Aurora-II' + model: 'Novo 7 Aurora II' + - regex: 'Novo7Fire' + model: 'Novo 7 Fire' + - regex: 'Novo7 ?Flame(?:[);/ ]|$)' model: 'Novo 7 Flame' - regex: 'NOVO7(?:[);/ ]|$)' model: 'Novo 7' @@ -1697,13 +2564,12 @@ Ainol: - regex: 'Novo([0-9]+)[ \-]([^;/]+) Build' model: 'Novo $1 $2' - -# Archos +# Archos (www.archos.com) Archos: - regex: '(?:YL-)?Archos|(?:A50TI|AC101BHE)(?:[);/ ]|$)' + regex: '(?:YL-)?Archos|(?:A50TI|AC101BHE|AC50BHE)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Archos (Oxygen 63)(?:[);/ ]|$)' + - regex: 'Archos (Oxygen (?:63|57|68XL))(?:[);/ ]|$)' model: '$1' - regex: 'A50TI(?:[);/ ]|$)' model: '50 Titanium 4G' @@ -1713,15 +2579,24 @@ Archos: - regex: 'AC101BHE(?:[);/ ]|$)' device: 'tablet' model: '101B Helium 4G' + - regex: 'AC50BHE(?:[);/ ]|$)' + model: '50B Helium 4G' + - regex: 'Archos 80 Oxygen(?:[);/ ]|$)' + device: 'tablet' + model: '80 Oxygen' + - regex: 'Archos 101 Oxygen(?:[);/ ]|$)' + device: 'tablet' + model: '101 Oxygen 4G' + - regex: 'Archos Oxygen 101S(?:[);/ ]|$)' + device: 'tablet' + model: '101s Oxygen' - regex: '(?:YL-)?Archos ([^/;]*(?:PAD)[^/;]*) Build' device: 'tablet' model: '$1' - - regex: 'Archos ((?:[789]|10)[0-9]?[a-z]* ?(?:G9|G10|Helium|Titanium|Cobalt|Platinum|Xenon|Carbon|Neon|XS|IT)[^/;]*) Build' + - regex: 'Archos ((?:[789]|10)[0-9]?[a-z]* ?(?:G9|G10|Helium|Titanium|Copper|Cobalt|Platinum|Xenon|Carbon|Neon|XS|IT)[^/);]*)(?: Build|[;)])' device: 'tablet' model: '$1' - - regex: '(?:YL-)?Archos ([a-z0-9 ]+) Build' - model: '$1' - - regex: '(?:YL-)?Archos ([a-z0-9]+)' + - regex: '(?:YL-)?Archos ([^/);]+)(?: Build|[;)])' model: '$1' # Axxion @@ -1825,9 +2700,24 @@ Ask: # ANS ANS: - regex: 'UL40 Build' + regex: 'ANS/|UL40 Build' device: 'smartphone' - model: 'UL40' + models: + - regex: 'UL40 Build' + model: 'UL40' + - regex: 'ANS/L51' + model: 'L51' + +# AOC (https://www.aoc.com/) +AOC: + regex: 'AOC,|(?:Q10107L-ME)(?:[);/ ]|$)' + device: 'tv' + models: + - regex: '(Q10107L-ME)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + - regex: '(LE(?:32|43)S5970(?:s)?-20|LE55U7970-30|LE43S5977-20|U60856)' + model: '$1' # Assistant Assistant: @@ -1884,7 +2774,7 @@ Assistant: # Ark (Ark Electronic Technology) Ark: - regex: '(ARK[_ -])?Benefit[_ -]([^/;]*)(?: Build|\))|EDGE A5HD|Elf_S8|ICON (R40\+|R45)|Impulse[ _](P[12])|Wizard_1(?:[);/ ]|$)' + regex: '(ARK[_ -])?Benefit[_ -]([^/;]*)(?: Build|\))|Impulse[ _]P[12]|(?:EDGE A5HD|Elf_S8|ICON (R40\+|R45)|Wizard_[12]|UKOZI U5)(?:[);/ ]|$)' device: 'smartphone' models: - regex: '(?:ARK[_ -])?Benefit[_ -]([^/;]*)(?: Build|\))' @@ -1897,10 +2787,12 @@ Ark: model: 'Edge $1' - regex: 'ICON (R40\+|R45)' model: 'Icon $1' - - regex: 'Wizard_1' - model: 'Wizard 1' + - regex: 'Wizard_([12])' + model: 'Wizard $1' - regex: 'Elf_S8(?:[);/ ]|$)' model: 'Elf S8' + - regex: 'UKOZI U5(?:[);/ ]|$)' + model: 'Ukozi U5' # Garmin-Asus Garmin-Asus: @@ -1916,7 +2808,7 @@ Garmin-Asus: # Asus Asus: - regex: 'Asus|Transformer|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|P(?:00[18ACIL]|01[MTVWYZ]|01MA|01T_1|02[13478])(?: Build|\))|X015D|X018D|X003|X00[7ABT]D|Z00D|Z00[MTY]D|Z01[7FGHKMR]D)(?:[);/ ]|$)|G55[023]KL|ZB(631|602|633|55[135]|50[01])KL|ZC(55[134]|520|600)KL|ZA550KL|ZE(520|620|55[2345])KL|ZD55[23]KL|ZS600KL|ZS(6[236]0|55[10])KL|ZB(500KG|601KL)|MeMo Pad FHD 10 LTE|Z00VD' + regex: 'Asus(?! Update)|Transformer|ZenFone Max|MeMOPad 10|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|(?:P(?:00[128ACIL]|01[MTVWYZ]|01MA|01T_1|02[13478])(?: Build|\))|X015D|X018D|X003|X00[7ABT]D|Z00D|Z00[MTY]D|Z01[7FGHKMR]D)|K01[579N]|AST21)(?:[);/ ]|$)|G55[023]KL|ZB(631|602|633|55[135]|50[01])KL|ZC(55[134]|520|600)KL|ZA550KL|ZE(5[02]0|620|55[2345])KL|ZD55[23]KL|ZS6(?:61|7[02136])KS|ZS(6[0236]0|55[10])KL|ZS590KS|ZB(500KG|601KL)|MeMo Pad FHD 10 LTE|Z00[SV]D|P01Y_S|Zenfone 5Z' device: 'smartphone' models: # explicit tablet models @@ -1932,19 +2824,22 @@ Asus: - regex: 'ME302C(?:[);/ ]|$)' model: 'MeMO Pad FHD 10' device: 'tablet' - - regex: '(ME302KL|MeMo Pad FHD 10 LTE)(?:[);/ ]|$)' + - regex: '(ME302KL|MeMOPad 10FHD LTE|MeMo Pad FHD 10 LTE)(?:[);/ ]|$)' model: 'MeMO Pad FHD 10 LTE' device: 'tablet' - regex: 'ME301T(?:[);/ ]|$)' model: 'MeMO Pad Smart 10' device: 'tablet' + - regex: 'Z101 Prime(?:[);/ ]|$)' + model: 'Z101 Prime' + device: 'tablet' - regex: 'Z101(?:[);/ ]|$)' model: 'Z101' device: 'tablet' - regex: 'X Pad 10 LTE(?:[);/ ]|$)' model: 'X Pad 10 LTE' device: 'tablet' - - regex: '(?:K01[3A]|K007|K00R)(?:[);/ ]|$)|MeMO Pad 7' + - regex: '(?:K01[3A7]|K007|K00R)(?:[);/ ]|$)|MeMO Pad 7' model: 'MeMO Pad 7' device: 'tablet' - regex: 'K01E(?:[);/ ]|$)' @@ -1953,7 +2848,7 @@ Asus: - regex: 'K00U|ME173X(?:[);/ ]|$)' model: 'MeMO Pad HD 7' device: 'tablet' - - regex: '(?:K011|K00L)(?:[);/ ]|$)' + - regex: '(?:K01[15]|K00L|AST21)(?:[);/ ]|$)' model: 'MeMO Pad 8' device: 'tablet' - regex: 'K014(?:[);/ ]|$)' @@ -1983,7 +2878,7 @@ Asus: - regex: 'Slider SL101' model: 'Eee Pad Slider SL101' device: 'tablet' - - regex: 'P01[YZ]' + - regex: 'P01[YZ](?:_S)?' model: 'ZenPad C 7.0' device: 'tablet' - regex: 'P008 Build' @@ -1995,15 +2890,18 @@ Asus: - regex: '(?:ASUS_)?P00J' model: 'ZenPad Z8s' device: 'tablet' - - regex: 'P01[VW]' + - regex: 'P01[VW]|P002' model: 'ZenPad 7.0' device: 'tablet' - - regex: 'P024 Build|P00A' + - regex: '(?:P024|P00A)(?:[);/ ]|$)' model: 'ZenPad 8.0' device: 'tablet' - - regex: 'P01MA(?: Build|\))|P01M(?: Build|\))' + - regex: 'P01MA?(?:[);/ ]|$)' model: 'ZenPad S 8.0' device: 'tablet' + - regex: 'ASUS_(w706)(?:[);/ ]|$)' + model: '$1' + device: 'tablet' - regex: 'P027' model: 'ZenPad 3S 10' device: 'tablet' @@ -2013,6 +2911,12 @@ Asus: - regex: '(?:ASUS_)?P00C|P02[138]|P00L|P01T_1' model: 'ZenPad 10' device: 'tablet' + - regex: 'ASUS Tablet P1801-T' + model: 'Transformer AiO P1801 18.4"' + device: 'tablet' + - regex: 'ASUS TAB A8' + model: 'TAB A8' + device: 'tablet' # explicit phablet models - regex: 'ME371MG(?:[);/ ]|$)' @@ -2021,7 +2925,7 @@ Asus: - regex: 'K00G(?:[);/ ]|$)' model: 'Fonepad Note 6' device: 'phablet' - - regex: '(?:K012|K00E)(?:[);/ ]|$)' + - regex: '(?:K01[2N9]|K00E)(?:[);/ ]|$)' model: 'Fonepad 7' device: 'phablet' - regex: 'K00Z(?:[);/ ]|$)' @@ -2034,33 +2938,43 @@ Asus: # explicit smartphone models - regex: '(?:ASUS_)?T00N' model: 'PadFone S' + - regex: '(?:ASUS_)?T00[CE]' + model: 'PadFone Mini' + - regex: '(?:ASUS[-_])?T00T' + model: 'PadFone X Mini' + - regex: 'PadFone T008' + model: 'PadFone E' + - regex: 'PadFone T004' + model: 'PadFone Infinity' - regex: '(?:ASUS_)?A002(A)?' model: 'ZenFone AR' + - regex: '(?:ASUS_)?(?:I006D|ZS590KS)' + model: 'ZenFone 8' + - regex: '(?:ASUS_)?(?:I004D|ZS672KS)' + model: 'ZenFone 8 Flip' - regex: '(?:ASUS_)?A006' model: 'ZenFone V' - regex: '(?:ASUS_)?A009' model: 'ZenFone V Live' - regex: '(?:ASUS_)?Z007' model: 'ZenFone C' - - regex: '(?:ASUS_)?(X00PD|ZB555KL)' + - regex: '(?:ASUS_)?(X00P[SD]|ZB555KL)' model: 'ZenFone Max M1' - - regex: '(?:ASUS_)?(ZB601KL)' + - regex: '(?:ASUS_)?(?:ZB60[12]KL)|ZenFone Max Pro M1' model: 'ZenFone Max Pro M1' - regex: '(?:ASUS_)?(X01([AB]D)|ZB633KL)(?:[);/ ]|$)' model: 'ZenFone Max M2' - - regex: '(?:ASUS_)?(?:Z00[AD]|Z008D|Z008|Z00AD[AB]?)' + - regex: '(?:ASUS_)?(?:Z00[AD]|Z008D|Z008|Z00AD[AB]?|ZE551ML)' model: 'ZenFone 2' - regex: '(?:ASUS_)?(?:ZenFone 2E)' model: 'ZenFone 2E' - - regex: '(?:ASUS_)?A007|ZA550KL|ZB553KL|ZB501KL' + - regex: '(?:ASUS_)?(?:A007|Z00YD|ZA550KL|ZB553KL|ZB501KL)(?:[);/ ]|$)' model: 'ZenFone Live' - - regex: '(?:ASUS_)?(X00RD|G552KL)' + - regex: '(?:ASUS_)?(?:X00RD|G552KL)' model: 'ZenFone Live L1' - regex: 'G553KL' model: 'ZenFone Lite L1' - - regex: '(?:ASUS_)Z00YD' - model: 'Live' - - regex: '(?:ASUS_)?(?:Z00[ERLMT]D|Z011D)' + - regex: '(?:ASUS_)?(?:Z00[ERLMTW]D|Z011D|ZE500KL)' model: 'ZenFone 2 Laser' - regex: '(?:ASUS_)?(?:T00[IQ1]|Z01KD)' model: 'ZenFone 4' @@ -2070,27 +2984,31 @@ Asus: model: 'ZenFone 5 LTE' - regex: '(?:ASUS_)?(?:T00K|X017DA|X017D|ZC600KL)' model: 'ZenFone 5 Lite' - - regex: '(?:ASUS_)?(?:Z01RD|ZS620KL)' + - regex: '(?:ASUS_)?(?:Z01RD|ZS620KL)|Zenfone 5Z' model: 'ZenFone 5Z' - regex: '(?:ASUS_)?(?:T00G|Z002|ZS630KL|I01WD[X]?)' model: 'ZenFone 6' + - regex: '(?:ASUS_)?ZS671KS' + model: 'ZenFone 7 Pro' + - regex: '(?:ASUS_)?(?:ZS670KS|I002D)(?:[);/ ]|$)' + model: 'ZenFone 7' - regex: '(?:ASUS_)?Z010D' model: 'ZenFone Max' - regex: '(?:ASUS_)?X018D' model: 'ZenFone Max Plus M1' - - regex: '(?:ASUS_)?X00TD' + - regex: '(?:ASUS_)?X00TD?' model: 'ZenFone Max Pro M1' - - regex: '(?:ASUS_)?X01BDA|ZB631KL' + - regex: '(?:ASUS_)?(?:X01BDA|ZB631KL|Zenfone Max Pro M2)' model: 'ZenFone Max Pro M2' - regex: '(?:ASUS_)?X014D' model: 'ZenFone Go Plus' - - regex: '(?:ASUS_)?(L001|X00[7AB]D|X009[DB][DA]|Z00[SV]D|ZB500K[LG]|ZB551KL)' + - regex: '(?:ASUS_)?(L001|X00[7AB]D|X009[DB][DA]|X009D|Z00[SV]D|ZB500K[LG]|ZB551KL)' model: 'ZenFone Go' - regex: '(?:ASUS_)?X013D' model: 'ZenFone Go Life' - regex: '(?:ASUS_)?G550KL' model: 'ZenFone Go TV' - - regex: '(?:ASUS_)?Z00VD' #ZC500TG + - regex: '(?:ASUS_)?Z00[SV]D' #ZC500TG model: 'ZenFone Go' - regex: '(?:ASUS_)?(X00[23])' model: 'ZenFone Pegasus' @@ -2100,9 +3018,11 @@ Asus: model: 'ZenFone Pegasus 2 Plus' - regex: '(?:ASUS_)?(X00GD)' model: 'ZenFone Pegasus 3S Max' + - regex: '(?:ASUS_)?(?:X00D[DS]|X008D)|ZC553KL' + model: 'ZenFone 3 Max' - regex: '(?:ASUS_)?(X008)' model: 'ZenFone 3 Pegasus' - - regex: '(?:ASUS_)?(ZE553KL|Z01HD)' + - regex: '(?:ASUS_)?(ZE553KL|Z01HDA?)' model: 'ZenFone 3 Zoom' - regex: '(?:ASUS_)?ZS550KL' model: 'ZenFone 3 Deluxe' @@ -2110,15 +3030,15 @@ Asus: model: 'ZenFone Selfie' - regex: '(?:ASUS_)?(Z016[DS]|Z01FD)' model: 'ZenFone 3 Deluxe' - - regex: '(?:ASUS_)?(Z017DA|ZE520KL|ZE552KL|Z017D|Z012(D|S))' + - regex: '(?:ASUS_)?Z(?:017DA|E520KL|E552KL|017D|012(?:DC?|S))' model: 'ZenFone 3' - regex: '(?:ASUS_)?Z01B[DS]|ZC551KL' model: 'ZenFone 3 Laser' - - regex: '(?:ASUS_)?X00D[DS]|ZC553KL' - model: 'ZenFone 3 Max' - regex: '(?:ASUS_)?A001' model: 'ZenFone 3 Ultra' - - regex: '(?:ASUS_)?(X00LDA|Z01MD)' + - regex: '(?:ASUS_)?(?:ZD552KL|Z01MDA?)(?:[);/ ]|$)' + model: 'ZenFone 4 Selfie Pro' + - regex: '(?:ASUS_)?(?:X00LDA|ZD553KL)' model: 'ZenFone 4 Selfie' - regex: '(?:ASUS_)?(?:X00LD|Z01KS|Z01KDA|ZE554KL)' model: 'ZenFone 4' @@ -2126,22 +3046,28 @@ Asus: model: 'ZenFone 4 Max' - regex: '(?:ASUS_)?X015D' model: 'ZenFone 4 Max Plus' - - regex: 'ZD552KL' - model: 'ZenFone 4 Selfie Pro' - - regex: 'ZD553KL' - model: 'ZenFone 4 Selfie' - - regex: '(?:ASUS_)?(:?Z01GD|ZS551KL)' + - regex: '(?:ASUS_)?(:?Z01G[DS]|ZS551KL)' model: 'ZenFone 4 Pro' - - regex: '(?:ASUS_)?ZB602KL' - model: 'ZenFone Max Pro' - regex: '(?:ASUS_)?Z00XS' model: 'ZenFone Zoom' - regex: '(?:ASUS_)?(?:Z01QD|ZS600KL)' model: 'ROG Phone' - regex: '(?:ASUS_)?(?:I001D[ABCE]?|ZS660KL)' model: 'ROG Phone 2' - - regex: '(?:ASUS_)?(?:I003DD?)' + - regex: '(?:ASUS_)?(?:I003DD?|ZS661KS)' model: 'ROG Phone 3' + - regex: '(?:ASUS_)?(?:I005D[AC]?|ZS67[36]KS)' + model: 'ROG Phone 5' + + # desktop detections + - regex: 'ZN220IC' + device: 'desktop' + model: 'Zen AiO ZN220IC' + + # watch detections + - regex: '(?:ASUS_)?ZenWatch( 2)?' + device: 'wearable' + model: 'ZenWatch$1' # general detections - regex: 'Asus(?:-|;)?([a-z0-9]+)' @@ -2153,9 +3079,9 @@ Asus: - regex: '(?:Asus|Transformer) ((?:Pad |Prime )?TF[0-9a-z]+)' device: 'tablet' model: 'Transformer $1' - - regex: 'Chromebook Flip C100PA' - device: 'tablet' - model: 'Chromebook Flip C100PA' + - regex: 'Chromebook Flip (C10[01]PA|C302)' + device: 'desktop' + model: 'Chromebook Flip $1' # Audiovox Audiovox: @@ -2176,33 +3102,45 @@ AVH: regex: 'Excer[ _]' device: 'tablet' models: - - regex: 'Excer[ _]G5.3' - model: 'Excer G5.3' + - regex: 'Excer[ _]G5.([36])' + model: 'Excer G5.$1' - regex: 'Excer[ _]G5' model: 'Excer G5' - regex: 'Excer[ _]10[ _]PRO' model: 'Excer 10 Pro' + - regex: 'Excer[ _]8' + model: 'Excer 8' # Avvio Avvio: - regex: 'Avvio[ _]?([a-z0-9\-]+)' + regex: 'Avvio[ _]?([a-z0-9\-]+)|(?:CHIVAS_55|Colombia_2018|Mint_M353)(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'CHIVAS_55' + model: 'Chivas 55' + - regex: 'Mint_M353' + model: 'Mint M353' + - regex: 'Colombia_2018' + model: 'Colombia (2018)' - regex: 'Avvio[ _]PAD' model: 'PAD' device: 'tablet' - regex: 'Avvio[ _]?([a-z0-9\-]+)' model: '$1' -# Azumi Mobile -"Azumi Mobile": - regex: 'Azumi[_ ]' +# Azumi Mobile (azumi-mobile.com) +Azumi Mobile: + regex: 'Azumi[_ -]|(?:SPEED55|A50_Style_Plus)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Azumi[_ ]([^/;]+) Build' + - regex: 'Azumi[_ -]([^/;]+) Build' model: '$1' - - regex: 'Azumi[_ ]([a-z0-9_]+)' + - regex: 'Azumi[_ -]([a-z0-9_]+)' model: '$1' + - regex: 'SPEED55' + model: 'Speed 5.5"' + - regex: 'A50_Style_Plus' + model: 'A50 Style Plus' #Barnes & Noble 'Barnes & Noble': @@ -2237,77 +3175,163 @@ BGH: # Bitel Bitel: - regex: 'Bitel[ _-]([^/;]+) Build|B(840[5789]|841[0456]|850[2346]|860[146]|9401|950[12345])' + regex: 'Bitel[ _-]([^/;]+) Build|(?:B(?:840[5-9]|841[0456]|850[2346]|860[146]|9401|950[1-5])|S8402L?|S8501L?)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: '(B(840[5789]|841[0456]|850[2346]|860[146]|9401|950[12345]))' + - regex: '(B(?:840[5789]|841[0456]|850[2346]|860[146]|9401|950[12345])|S8402L?|S8501L?)' model: '$1' - regex: 'Bitel[ _-]([^/;]+) Build' model: '$1' # Blu Blu: - regex: 'BLU |(?:blu|Dash)[ _]([^/;]+) Build|Studio (5.0K|5.5|View XL|Mega|C 8\+8|C HD|C|G|Selfie LTE|Touch|M HD|M5 Plus|J[1258]|X|X8 HD)|Advance (4.0 ?[LM]|5.0(?: HD)?|A4)|ENERGY (DIAMOND|XL)|LIFE XL|Dash (?:X[2L]|L3)|PURE XL|Life One X2|GRAND (?:5.5 HD|XL LTE)|R1 (HD|PLUS)|Tank Xtreme 5.0|Tank Xtreme Pro|STUDIO SELFIE' - device: 'smartphone' - models: - - regex: 'Advance (4.0 ?[LM]|4.0|5.0(?: HD)?|A4)' - model: 'Advance $1' - - regex: 'Studio (5.0 C|5.5|View XL|Mega|C 8\+8|C HD|C|G|Touch|M HD|M5 Plus|J[1258]|X|X8 HD)' - model: 'Studio $1' - - regex: 'Studio (5.0)K' - model: 'Studio $1 K' - - regex: 'STUDIO SELFIE LTE' - model: 'Studio Selfie LTE' - - regex: 'STUDIO ONE' - model: 'Studio One' - - regex: 'STUDIO SELFIE ([23]|LTE)' - model: 'Studio Selfie $1' - - regex: 'STUDIO SELFIE' - model: 'Studio Selfie' - - regex: 'ENERGY DIAMOND' - model: 'Energy Diamond' - - regex: 'ENERGY XL' - model: 'Energy XL' - - regex: 'ENERGY X PLUS 2' - model: 'Energy X Plus 2' - - regex: 'ENERGY X PLUS' - model: 'Energy X Plus' - - regex: 'LIFE XL' - model: 'Life XL' - - regex: 'Dash XL' - model: 'Dash XL' - - regex: 'PURE XL' - model: 'Pure XL' - - regex: 'Life One X2' - model: 'Life One X2' - - regex: 'LIFE ONE' - model: 'Life One' - - regex: 'NEO X PLUS' - model: 'Neo X Plus' - - regex: 'NEO (XL|X)' - model: 'Neo $1' - - regex: 'GRAND 5.5 HD' - model: 'Grand 5.5 HD' - - regex: 'Grand X LTE' - model: 'Grand X LTE' - - regex: 'Grand XL LTE' - model: 'Grand XL LTE' - - regex: 'R1 HD' - model: 'R1 HD' - - regex: 'R1 PLUS' - model: 'R1 Plus' - - regex: 'Tank Xtreme 5.0' - model: 'Tank Xtreme 5.0' - - regex: 'Tank Xtreme Pro' - model: 'Tank Xtreme Pro' - - regex: 'VIVO AIR LTE' - model: 'Vivo Air LTE' - - regex: 'DASH[ _]([^/;]+) Build' - model: 'Dash $1' - - regex: 'DASH (5.0|L3|L|M|X2|X)' - model: 'Dash $1' - - regex: 'blu[ _]([^/;]+) Build' - model: '$1' + regex: 'BLU[ _]|(?:blu|Dash)[ _]([^/;)]+)(?: Build|[;)])|(?:Studio[ _](X12|5.0K|5.5|View XL|Mega|C 8\+8|[CGM][ _]HD|G2 HD|[CGX]|SELFIE|Selfie LTE|Touch|M5 Plus|J[1258]|X8 HD|X10\+?|XL(?: 2)?)|Advance (4.0 ?[LM]|5.[02](?: HD)?|A4|L[45])|M6 2021|ENERGY (DIAMOND|XL)|Energy X 2|LIFE XL|B110DL|Dash (?:X[2L]|L3)|PURE (?:X[LR]|MINI|View)|Life One X2|G50 (?:Mega|Plus)|G51 Plus|G90(?: PRO)?|G91 Pro|GRAND (?:M3|Max|5.5 HD|XL LTE|Mini)|R1 (?:HD|PLUS)|R2 (?:LTE|Plus)|Tank Xtreme [45].0|Tank Xtreme(?: Pro)?|Touchbook M7 Pro|DASH X PLUS|C[456] 2019|BOLD (?:M7|N1)|B1[34]0DL|Vivo (?:5 Mini|One Plus|5R|XL[234]| Plus|8L|XI[+]?|GO)|(?<!Neffos )C[56]L(?: 2020)?|C6 2020|G9 PRO|D701|VIEW 1)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Advance (4.0 ?[LM]|4.0|5.[02](?: HD)?|A4|L[54])' + model: 'Advance $1' + - regex: 'M6 2021(?:[);/ ]|$)' + model: 'M6 (2021)' + - regex: '(?:BLU[_ ])?Studio[ _](5.0 C|5.5|C 5\+5 LTE|View XL|Mega|C 8\+8|[CG][ _]HD|C|G|Touch|M HD|G2 HD|M5 Plus|J[1258]|X8 HD|X5|X10\+?|XL(?: 2)?|X)(?:[);/ ]|$)' + model: 'Studio $1' + - regex: '(?:BLU[_ ])?Studio[ _]5.0 ?K(?:[);/ ]|$)' + model: 'Studio 5.0 K' + - regex: 'STUDIO SELFIE LTE' + model: 'Studio Selfie LTE' + - regex: 'STUDIO ONE' + model: 'Studio One' + - regex: 'STUDIO[_ ](X12)(?:[);/ ]|$)' + model: 'Studio $1' + - regex: 'STUDIO SELFIE ([23]|LTE)' + model: 'Studio Selfie $1' + - regex: 'STUDIO SELFIE' + model: 'Studio Selfie' + - regex: '(?:BLU[_ ])?NEO_ENERGY_MINI' + model: 'Neo Energy Mini' + - regex: 'ENERGY DIAMOND' + model: 'Energy Diamond' + - regex: 'ENERGY XL' + model: 'Energy XL' + - regex: 'Energy X 2' + model: 'Energy X 2' + - regex: 'ENERGY X PLUS 2' + model: 'Energy X Plus 2' + - regex: 'ENERGY X PLUS' + model: 'Energy X Plus' + - regex: 'LIFE XL' + model: 'Life XL' + - regex: 'DASH[ _]X[ _]PLUS[ _]LTE' + model: 'Dash X Plus LTE' + - regex: 'DASH X PLUS' + model: 'Dash X Plus' + - regex: 'DASH 4.5' + model: 'Dash 4.5' + - regex: 'Dash XL' + model: 'Dash XL' + - regex: 'PURE (X[LR]|View)' + model: 'Pure $1' + - regex: 'PURE MINI' + model: 'Pure Mini' + - regex: 'BOLD (M7|N1)' + model: 'Bold $1' + - regex: 'Life One X2 Mini' + model: 'Life One X2 Mini' + - regex: 'LIFE ONE (X2?)' + model: 'Life One $1' + - regex: 'LIFE ONE' + model: 'Life One' + - regex: 'LIFE X LTE' + model: 'Life X LTE' + - regex: 'LIFE MARK' + model: 'Life Mark' + - regex: 'NEO X PLUS' + model: 'Neo X Plus' + - regex: 'NEO (XL|X)' + model: 'Neo $1' + - regex: 'G50 Mega' + model: 'G50 Mega' + - regex: 'G50 Plus' + model: 'G50 Plus' + - regex: 'G51 Plus' + model: 'G51 Plus' + - regex: 'G(90?) PRO' + model: 'G$1 Pro' + - regex: 'G91 PRO' + model: 'G91 Pro' + - regex: '(G90|D701)(?:[);/ ]|$)' + model: '$1' + - regex: 'GRAND 5.5 HD' + model: 'Grand 5.5 HD' + - regex: 'Grand X LTE' + model: 'Grand X LTE' + - regex: 'Grand XL LTE' + model: 'Grand XL LTE' + - regex: 'Grand Max' + model: 'Grand Max' + - regex: 'Grand Mini' + model: 'Grand Mini' + - regex: 'Grand M3' + model: 'Grand M3' + - regex: 'B110DL' + model: 'View Mega' + - regex: 'B130DL' + model: 'View 2' + - regex: 'B140DL' + model: 'View 3' + - regex: 'VIEW 1' + model: 'View 1' + - regex: 'R1 HD' + model: 'R1 HD' + - regex: 'R2 LTE' + model: 'R2 LTE' + - regex: 'R([12]) PLUS' + model: 'R$1 Plus' + - regex: 'C([456]) 20(19|20)' + model: 'C$1 (20$2)' + - regex: 'Tank Xtreme ([45]).0' + model: 'Tank Xtreme $1.0"' + - regex: 'Tank Xtreme Pro' + model: 'Tank Xtreme Pro' + - regex: 'Tank Xtreme' + model: 'Tank Xtreme' + - regex: 'VIVO AIR LTE' + model: 'Vivo Air LTE' + - regex: 'Touchbook G7' + model: 'Touchbook G7' + - regex: 'C([56])L 20(20|21)' + model: 'C$1L (20$2)' + - regex: 'C5L Plus' + model: 'C5L Plus' + - regex: 'C([56])L' + model: 'C$1L' + - regex: '(?:BLU[_ ])?VIVO[ _]SELFIE' + model: 'Vivo Selfie' + - regex: '(?:BLU[_ ])?Vivo 5 Mini' + model: 'Vivo 5 Mini' + - regex: 'Vivo One Plus 2019' + model: 'Vivo One Plus (2019)' + - regex: '(?:BLU[_ ])?Vivo (One|XL3|XI)(?: Plus|[+])' + model: 'Vivo $1 Plus' + - regex: '(?:BLU[_ ])?Vivo (5R|XI|XL[234]|8L)' + model: 'Vivo $1' + - regex: '(?:BLU[_ ])?VIVO GO' + model: 'Vivo Go' + + - regex: 'Touchbook M7 Pro' + model: 'Touchbook M7 Pro' + device: 'tablet' + - regex: 'STUDIO 7.0 II' + model: 'Studio 7.0" II' + device: 'tablet' + + - regex: 'DASH (L[45] LTE|5.0|L[45]X|L3|X2|[LMX])(?:[);/ ]|$)' + model: 'Dash $1' + + - regex: 'DASH[ _]([^)/;]+)(?: Build|\))' + model: 'Dash $1' + + - regex: 'blu[ _]([^/;]+)( Build|[);])' + model: '$1' # Bluegood Bluegood: @@ -2319,7 +3343,7 @@ Bluegood: # Blackview Blackview: - regex: 'Blackview|(BV([24-9]000|(5[589]|9[15689])00|6[138]00)(?:[ _](?:PRO))?|(P10000(?:[ _](?:PRO))?)|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550|BV9700Pro|(?<!Lenovo[_ ])A[68]0(?:Pro)?\))' + regex: 'Blackview|(BV([24-9]000|[46]900|(5[1589]|9[15689])00|6[1368]00)(?:[ _](?:PRO))?|(P10000(?:[ _](?:PRO))?)|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550|BV9700Pro|(?<!Lenovo[_ ])A[68]0(?:Pro)?\))|(?:A[86]0Plus|A80S|BL6000Pro|R6 Lite|P2Lite|A8 MAX)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'A60Pro\)' @@ -2328,20 +3352,26 @@ Blackview: model: 'A60' - regex: 'A80Pro(?:[);/ ]|$)' model: 'A80 Pro' + - regex: 'A8 MAX(?:[);/ ]|$)' + model: 'A8 Max' + - regex: 'A80S(?:[);/ ]|$)' + model: 'A80S' + - regex: '(A[86]0|BV[59]500)Plus(?:[);/ ]|$)' + model: '$1 Plus' - regex: '(BV6000S)' model: '$1' - - regex: '(BV9700)Pro' - model: '$1 Pro' - - regex: 'Blackview (A8|E7S)' - model: '$1' + - regex: '(P2|R6) ?Lite' + model: '$1 Lite' - regex: 'BV9000Pro-F' model: 'BV9000 Pro F' - - regex: '(BV([48]000|9[56]00|6[83]00))Pro' + - regex: '(BL6000|BV(?:[0-9]+))Pro' model: '$1 Pro' - - regex: '(BV6100)(?:[);/ ]|$)' + - regex: 'Blackview (A[78]|E7S)' + model: '$1' + - regex: '(BV6[13]00)(?:[);/ ]|$)' model: '$1' device: 'phablet' - - regex: '(BV([24-9]000|(5[589]|9[15689])00)(?:[ _](?:PRO))?)' + - regex: '(BV([24-9]000|6[69]00|4900|9[69]00E|(5[1589]|9[15689])00)(?:[ _](?:PRO))?)' model: '$1' - regex: '(P10000(?:[ _](?:PRO))?)' model: '$1' @@ -2350,33 +3380,39 @@ Blackview: - regex: '(Alife[ _][PS]1|DM550|Heatwave)' model: '$1' -# Bluboo +# Bluboo (bluboo.tel) Bluboo: - regex: 'Bluboo|Xfire|Picasso 4G|Maya Build' + regex: 'Bluboo|Maya Build|(?:(?<!IQM )Picasso(?: 4G)?|Xfire2?)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Maya Build' model: 'Maya' - regex: 'Xfire2' model: 'Xfire 2' - - regex: 'Picasso 4G' + - regex: 'Picasso(?: 4G)?' model: 'Picasso 4G' - regex: 'Xfire' model: 'Xfire' + - regex: '(?:Bluboo[_ ])?S8[_ ]plus' + model: 'S8 Plus' - regex: 'Bluboo[ _-]?([^;/)]+) Build' model: '$1' - regex: 'Bluboo[ _-]?([^;/)]+)' model: '$1' -# Black Fox +# Black Fox or BlackFox 'Black Fox': - regex: 'BMM[ _-]?(?:44[123]D|441S|431D|533D|54[12]S|541[ABW]|54[123]D|543S|531[ABD])(?:[);/ ]|$)' + regex: 'BMM[ _-]?(?:44[123]D|441[AWB]|44[12]S|431[SD]|53[23]D|54[12]S|541[ABW]|54[123]D|543S|531[ABD]|532 S|531S)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'BMM443D' model: 'B7 Fox+' - - regex: 'BMM441S' + - regex: 'BMM441[AS]' model: 'B8 Fox' + - regex: 'BMM442S|BMM441B' + model: 'B8 Fox+' + - regex: 'BMM441W' + model: 'B8M' - regex: 'BMM442D' model: 'B7' - regex: 'BMM531D' @@ -2399,7 +3435,9 @@ Bluboo: model: 'B3' - regex: 'BMM541W' model: 'B7R Fox' - - regex: 'BMM[ _-]?(533D|431D|54[12]S)(?:[);/ ]|$)' + - regex: 'BMM 532 S' + model: 'BMM 532S' + - regex: 'BMM[ _-]?(53[23]D|431[DS]|54[12]S|531S)(?:[);/ ]|$)' model: 'BMM $1' # bogo @@ -2432,7 +3470,7 @@ Boway: # Brondi Brondi: - regex: 'Brondi[ _]|(?:CENTURION|GLADIATOR| GLORY|LUXURY|SENSUELLE|VICTORY)(?:[ _-]?[2-6])?(?:[);/ ]|$)|Surfing Tab|501 SZ' + regex: 'Brondi[ _]|(?:CENTURION|GLADIATOR| GLORY|LUXURY|SENSUELLE|VICTORY|AMICO_SMARTPHONE_4G)(?:[ _-]?[2-6])?(?:[);/ ]|$)|Surfing Tab|501 SZ' device: 'smartphone' models: - regex: '(?:Brondi[ _])?(620 SZ|730_4G_HD|501 SZ)(?:[);/ ]|$)' @@ -2449,31 +3487,47 @@ Brondi: model: 'SENSUELLE $1' - regex: 'VICTORY(?:[ _-]?([2-6]))?(?:[);/ ]|$)' model: 'VICTORY $1' + - regex: 'AMICO_SMARTPHONE_4G(?:[);/ ]|$)' + model: 'Amico Smartphone 4G' - regex: 'Surfing Tab ([^;/]+) Build' model: 'SURFING TAB $1' device: 'tablet' - - regex: 'Surfing Tab ([^;/]+)(?:[);/ ]|$)' + - regex: 'Surfing Tab ([^;/)]+)[;/)]' model: 'SURFING TAB $1' device: 'tablet' -# VGO TEL +# VGO TEL (vgotel.com) VGO TEL: - regex: 'Venture V(?:[278]|12)(?:[);/ ]|$)' + regex: 'VGOTEL|(?:Venture V(?:[278]|12)|VentureV10|Ocean[_ ][689]|Ocean9L)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Venture V([278]|12)(?:[);/ ]|$)' + - regex: 'Venture ?V([278]|1[02])(?:[);/ ]|$)' model: 'Venture V$1' + - regex: 'Ocean[_ ]?([689]|9L)(?:[);/ ]|$)' + model: 'Ocean $1' # Vivo (vivo.com.cn, vivo.com) Vivo: - regex: '((?:VIV-|BBG-)?(?<!FBCR/)vivo(?!(?:Browser)))|(?:V1730(D[AT]|GA)|V18(18CA|01A0|13B[AT]|18T|09[AT]|1[346][AT]|[13]8[AT]|14A|24[B]?A|2[19][AT]|3[12][AT]|36[AT])|V1731CA|V1732[AT]|V1818CT|V19[01]1[AT]|V1932[AT]|V191[3469][AT]|V192[1348]A|V193[04]A|V194[15]A|V1938CT|V1955A|V1938T|V1730EA|V19[26]2A|V196[35]A|V198[16]A|V1936A[L]?|V19[59]0A|V200[125]A|1819|V201[12]A|V202[0345]C?A)(?:[);/ ]|$)' + regex: '((?:VIV-|BBG-)?(?<!FBCR/|NOA )vivo(?!(?:Browser)| 4G_r))|(?:V1730(D[AT]|GA)|V18(01A0|13B[AT])|1819|V1937|I(?:192[78]|201[28])|V(?:2006|202[2-9]|203[0-35-9]|204[0-3568]|205[02-5789]|206[015689]|2070|210[12459]|211[01]|212[049])|V(?:2026|2031|2036|2043)_21|V1936AL|V(?:1732|1809|181[3468]|182[149]|183[1268]|1901|191[13469]|192[1-48]|193[0246]|194[15]|195[05]|196[235]|198[16]|1990|200[125]|201[12]|202[03-5]|203[146]|204[6789]|205[45679]|2066B|206[1568]|207[23]|208[05]|2099|2106|211[18]|212[13]|213[346]|214[1358]|2162)A|V1824BA|V(?:1731|1818|2020)CA|V(?:1818|1938)CT|V(?:1730|2031)EA|V(?:1732|1809|181[3468]|182[19]|183[1268]|1901|1913|1938)T|V2029_PK|V2069A|V2171A|I2011|X50 Pro\+|V211[45]A?|V204[57]A?|V210[28]A?|I2009|V215[4678]A|V213[01]A|V2023EA|V1962BA|V2142|V1930)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'V1824[B]?A(?:[);/ ]|$)' model: 'iQOO' - regex: 'V1955A(?:[);/ ]|$)' model: 'iQOO 3' + - regex: 'V2171A(?:[);/ ]|$)' + model: 'iQOO 9' + - regex: 'I192[78](?:[);/ ]|$)' + model: 'iQOO 3 5G' + - regex: '(?:V2049A|I2009)(?:[);/ ]|$)' + model: 'iQOO 7' + - regex: 'V2157A' + model: 'iQOO Neo 5 SE' + - regex: 'V2154A' + model: 'iQOO Neo 5S' + - regex: 'I2012(?:[);/ ]|$)' + model: 'iQOO 7 5G' - regex: 'V1922A(?:[);/ ]|$)' model: 'iQOO Pro' # 2019 - regex: 'V1916A(?:[);/ ]|$)' @@ -2484,40 +3538,104 @@ Vivo: model: 'iQOO Neo 3' - regex: 'V1936A[L]?(?:[);/ ]|$)' model: 'iQOO Neo 855' + - regex: 'V2055A(?:[);/ ]|$)' + model: 'iQOO Neo 5' + - regex: 'V2118A(?:[);/ ]|$)' + model: 'iQOO Neo 5 Lite' - regex: 'V1986A(?:[);/ ]|$)' model: 'iQOO Z1' - regex: 'V2012A(?:[);/ ]|$)' model: 'iQOO Z1x' - - regex: 'V1919A(?:[);/ ]|$)' + - regex: '(?:V2073A|I2011)(?:[);/ ]|$)' + model: 'iQOO Z3' + - regex: 'V1919A' model: 'iQOO Z5x' + - regex: 'V2131A' + model: 'iQOO Z5x 5G' + - regex: 'V2148A' + model: 'iQOO Z5' + - regex: 'I2018(?:[);/ ]|$)' + model: 'iQOO Z5 5G' - regex: 'V2023A(?:[);/ ]|$)' model: 'iQOO U1' + - regex: 'V2065A(?:[);/ ]|$)' + model: 'iQOO U1x' + - regex: 'V2061A(?:[);/ ]|$)' + model: 'iQOO U3' + - regex: 'V2143A(?:[);/ ]|$)' + model: 'iQOO U3x' + - regex: 'V2106A(?:[);/ ]|$)' + model: 'iQOO U3x 5G' - regex: 'V2024A(?:[);/ ]|$)' model: 'iQOO 5' - regex: 'V2025A(?:[);/ ]|$)' model: 'iQOO 5 Pro' + - regex: 'V2136A(?:[);/ ]|$)' + model: 'iQOO 8' + - regex: 'V2141A(?:[);/ ]|$)' + model: 'iQOO 8 Pro' + - regex: '(?:V2025)(?:[);/ ]|$)' + model: 'V20' + - regex: '(?:V2066|V2108)(?:[);/ ]|$)' + model: 'V21' + - regex: '(?:V2050)(?:[);/ ]|$)' + model: 'V21 5G' + - regex: 'V2061(?:[);/ ]|$)' + model: 'V21e' + - regex: 'V2055(?:[);/ ]|$)' + model: 'V21e 5G' + - regex: 'V2040(?:[);/ ]|$)' + model: 'V20 (2021)' + - regex: 'Vivo 1921(?:[);/ ]|$)' + model: 'U20' + - regex: 'Vivo 1916(?:[);/ ]|$)' + model: 'U10' - regex: 'vivo 1805(?:[);/ ]|$)' model: 'Nex' - - regex: 'V1923A(?:[);/ ]|$)' + - regex: '(?:vivo 1912|V1923A)(?:[);/ ]|$)' model: 'Nex 3' - regex: 'V1924A(?:[);/ ]|$)' model: 'Nex 3 5G' - regex: 'V1950A(?:[);/ ]|$)' model: 'Nex 3S' - - regex: 'V1821[AT](?:[);/ ]|$)' + - regex: 'vivo NEX S(?:[);/ ]|$)' + model: 'Nex S' + - regex: 'vivo NEX A(?:[);/ ]|$)' + model: 'Nex A' + - regex: 'vivo NEX(?:[);/ ]|$)' + model: 'Nex' + - regex: '(?:V1821[AT]|vivo 1813)(?:[);/ ]|$)' model: 'Nex Dual Display' - regex: 'Vivo ONE(?:[);/ ]|$)' model: 'One' - - regex: 'V1831[AT](?:[);/ ]|$)' + - regex: 'V2115A' + model: 'T1 5G' + - regex: 'V1962BA' + model: 'G1 5G' + - regex: 'V1831[AT]' model: 'S1' - regex: 'V1832[AT](?:[);/ ]|$)' model: 'S1 Pro' + - regex: 'V2121A(?:[);/ ]|$)' + model: 'S10' + - regex: 'V2130A' + model: 'S10e 5G' - regex: 'V1932[AT](?:[);/ ]|$)' model: 'S5' - regex: 'V1962A(?:[);/ ]|$)' model: 'S6 5G' + - regex: 'V2162A(?:[);/ ]|$)' + model: 'S12 5G' - regex: 'V2020C?A(?:[);/ ]|$)' model: 'S7' + - regex: 'V2031EA(?:[);/ ]|$)' + model: 'S7e' + - regex: 'V2080A(?:[);/ ]|$)' + model: 'S7t' + - regex: 'V2072A(?:[);/ ]|$)' + model: 'S9 (2021)' + - regex: 'V2048A(?:[);/ ]|$)' + model: 'S9e' - regex: 'V1941A(?:[);/ ]|$)' model: 'U3' - regex: 'V1928A(?:[);/ ]|$)' @@ -2530,8 +3648,18 @@ Vivo: model: 'V15' - regex: 'vivo 1818(?:[);/ ]|$)' model: 'V15 Pro' - - regex: 'vivo 1909(?:[);/ ]|$)' + - regex: 'vivo 19(?:10|09)(?:[);/ ]|$)' model: 'V17 Pro' + - regex: 'vivo 1907(?:_19)?(?:[);/ ]|$)' + model: 'V17 Neo' + - regex: 'vivo 19(?:20(?:_20)?|19)(?:[);/ ]|$)' + model: 'V17' + - regex: 'vivo 1933(?:[);/ ]|$)' + model: 'V19' + - regex: 'V2022(?:[);/ ]|$)' + model: 'V20 SE' + - regex: 'vivo 2018(?:[);/ ]|$)' + model: 'V20 Pro' - regex: '(?:VIV-|BBG-)?vivo[ _]1601(?:[);/ ]|$)' model: 'V5' - regex: 'vivo 1609(?:[);/ ]|$)' @@ -2542,17 +3670,31 @@ Vivo: model: 'V5s' - regex: 'vivo 1718(?:[);/ ]|$)' model: 'V7' - - regex: 'vivo 1716(?:[);/ ]|$)' + - regex: 'vivo (?:1716|1850)(?:[);/ ]|$)' model: 'V7 Plus' - regex: 'vivo 1723(?:[);/ ]|$)' model: 'V9' - regex: 'vivo 1727(?:[);/ ]|$)' model: 'V9 Youth' + - regex: 'vivo 1851(?:[);/ ]|$)' + model: 'V9 Pro' + - regex: 'vivo V3Max(?: [AL])?(?:[);/ ]|$)' + model: 'V3 Max' + - regex: 'vivo X9s Plus(?:[);/ ]|$)' + model: 'X9s Plus' + - regex: 'vivo X9s(?: [AL])?(?:[);/ ]|$)' + model: 'X9s' + - regex: 'vivo X5Pro(?:[);/ ]|$)' + model: 'X5 Pro' - regex: 'vivo 1721(?:[);/ ]|$)' model: 'X20' - - regex: 'X20Plus(?:[);/ ]|$)' + - regex: '(?:X20Plus(?: a)?|vivo 1720)(?:[);/ ]|$)' model: 'X20 Plus' - - regex: 'vivo 1725(?:[);/ ]|$)' + - regex: 'vivo X21i(?: A)?(?:[);/ ]|$)' + model: 'X21i' + - regex: 'vivo X21UD(?: A)?(?:[);/ ]|$)' + model: 'X21 UD' + - regex: 'vivo (?:1725|X21A?)(?:[);/ ]|$)' model: 'X21' - regex: 'V1814[AT](?:[);/ ]|$)' model: 'X21S' @@ -2568,60 +3710,188 @@ Vivo: model: 'X30' - regex: 'V1938T(?:[);/ ]|$)' model: 'X30 Pro' - - regex: 'V2001A(?:[);/ ]|$)' + - regex: '(?:V2001A|vivo 2004)(?:[);/ ]|$)' model: 'X50' - - regex: 'V2005A(?:[);/ ]|$)' + - regex: 'V1930(?:[);/ ]|$)' + model: 'X50e' + - regex: 'vivo 2005(?:[);/ ]|$)' + model: 'X50 5G' + - regex: '(?:vivo 1937|V1937)(?:[);/ ]|$)' + model: 'X50 Lite' + - regex: '(?:V2005A|vivo 2006)(?:[);/ ]|$)' model: 'X50 Pro' - - regex: 'V2011A(?:[);/ ]|$)' + - regex: '(?:V2011A|X50 Pro\+)(?:[);/ ]|$)' model: 'X50 Pro Plus' - - regex: 'X9Plus(?:[);/ ]|$)' - model: 'X9 Plus' + - regex: '(?:V20(?:46|59)A|V2045)(?:[);/ ]|$)' + model: 'X60' + - regex: 'V2085A(?:[);/ ]|$)' + model: 'X60t' + - regex: '(?:V2047A|V2046)(?:[);/ ]|$)' + model: 'X60 Pro' + - regex: '(?:V2056A|V2047)(?:[);/ ]|$)' + model: 'X60 Pro Plus' + - regex: '(?:V2134A|V2105)(?:[);/ ]|$)' + model: 'X70 Pro' + - regex: '(?:V2145A|V2114)(?:[);/ ]|$)' + model: 'X70 Pro+' + - regex: 'V2133A(?:[);/ ]|$)' + model: 'X70' + - regex: 'V2104(?:[);/ ]|$)' + model: 'X70 5G' + - regex: 'X([0-9])Plus(?: A)?(?:[);/ ]|$)' + model: 'X$1 Plus' + - regex: 'vivo Xplay6(?:[);/ ]|$)' + model: 'X Play 6' + - regex: 'vivo (?:1929|2015)(?:_21)?(?:[);/ ]|$)' + model: 'Y1s' - regex: 'vivo 1902(?:[);/ ]|$)' model: 'Y17' + - regex: 'vivo 1906(?:_20)?(?:[);/ ]|$)' + model: 'Y11' + - regex: 'vivo 19(?:04|40)(?:[);/ ]|$)' + model: 'Y12' + - regex: 'V2102(?:[);/ ]|$)' + model: 'Y12a' + - regex: 'vivo 2007(?:[);/ ]|$)' + model: 'Y12i' + - regex: 'vivo 1901(?:[);/ ]|$)' + model: 'Y15' + - regex: 'V2120(?:[);/ ]|$)' + model: 'Y15s' - regex: 'vivo 1915(?:[);/ ]|$)' model: 'Y19' + - regex: 'V202[79](?:_PK)?(?:[);/ ]|$)' + model: 'Y20' + - regex: 'vivo 1613(?:[);/ ]|$)' + model: 'Y25' + - regex: '(?:V2043_21|V2048)(?:[);/ ]|$)' + model: 'Y20 (2021)' + - regex: '(?:V205[24]|V2070|V2101)(?:[);/ ]|$)' + model: 'Y20A' + - regex: 'V2037(?:[);/ ]|$)' + model: 'Y20G' + - regex: 'V2129(?:[);/ ]|$)' + model: 'Y20T' + - regex: 'V2065(?:[);/ ]|$)' + model: 'Y20G (2021)' + - regex: 'V2028(?:[);/ ]|$)' + model: 'Y11s' + - regex: 'V2038(?:[);/ ]|$)' + model: 'Y20s' + - regex: 'V2043(?:[);/ ]|$)' + model: 'Y20 (2021)' + - regex: 'V(?:2041|2060)(?:[);/ ]|$)' + model: 'Y72 5G' + - regex: 'V2102A' + model: 'Y72T 5G' + - regex: 'V2032(?:[);/ ]|$)' + model: 'Y20i' + - regex: 'V2110(?:[);/ ]|$)' + model: 'Y21s' + - regex: 'V2111(?:[);/ ]|$)' + model: 'Y21' + - regex: 'V2023(?:[);/ ]|$)' + model: 'V20 SE' - regex: 'V1901[AT](?:[);/ ]|$)' model: 'Y3' - regex: 'V1930A(?:[);/ ]|$)' model: 'Y3 Standard' + - regex: '(?:vivo 1938|V203[46]A)(?:[);/ ]|$)' + model: 'Y30' + - regex: 'V2099A(?:[);/ ]|$)' + model: 'Y30 (2021)' + - regex: 'V2066[B]?A(?:[);/ ]|$)' + model: 'Y30g' + - regex: 'V2036(?:_21)?(?:[);/ ]|$)' + model: 'Y31' + - regex: 'V2068A?(?:[);/ ]|$)' + model: 'Y31s' + - regex: 'V2158A' + model: 'Y32' + - regex: 'V2057(?:[);/ ]|$)' + model: 'Y33' + - regex: 'V2109(?:[);/ ]|$)' + model: 'Y33s' - regex: 'V1934A(?:[);/ ]|$)' model: 'Y5s' - - regex: 'V1965A(?:[);/ ]|$)' + - regex: '(?:V1965A|vivo 1935)(?:[);/ ]|$)' model: 'Y50' + - regex: 'V2023EA' + model: 'Y50t' + - regex: 'V(?:2024|203[05])(?:[);/ ]|$)' + model: 'Y51' + - regex: 'vivo 1707(?:[);/ ]|$)' + model: 'Y51 (2015)' + - regex: 'V2031(?:_21)?(?:[);/ ]|$)' + model: 'Y51s' + - regex: 'V2054A(?:[);/ ]|$)' + model: 'Y31s' + - regex: 'V2057A(?:[);/ ]|$)' + model: 'Y52s' + - regex: 'V2053(?:[);/ ]|$)' + model: 'Y52' - regex: 'vivo 1606(?:[);/ ]|$)' model: 'Y53i' + - regex: 'vivo 1606a(?:[);/ ]|$)' + model: 'Y53' + - regex: '(?:V2058|V2111A|V2123A)(?:[);/ ]|$)' + model: 'Y53s' + - regex: 'V2069A' + model: 'Y53s T1' - regex: 'vivo 1603(?:[);/ ]|$)' model: 'Y55l' - regex: 'vivo 1610(?:[);/ ]|$)' model: 'Y55s' + - regex: 'V2045A' + model: 'Y54s' - regex: 'vivo 1719(?:[);/ ]|$)' model: 'Y65' - - regex: 'vivo 1714(?:[);/ ]|$)' + - regex: 'vivo (?:1714|Y69A?)(?:[);/ ]|$)' model: 'Y69' - regex: 'V2002A(?:[);/ ]|$)' model: 'Y70s' - - regex: 'vivo 1724(?:[);/ ]|$)' + - regex: 'V2006(?:[);/ ]|$)' + model: 'Y60s' + - regex: 'vivo (?:1724|Y71A?)(?:[);/ ]|$)' model: 'Y71' - - regex: 'vivo 1801(?:[);/ ]|$)' + - regex: 'vivo 1801i?(?:[);/ ]|$)' model: 'Y71i' - regex: 'V1731CA(?:[);/ ]|$)' model: 'Y73' + - regex: 'V2059(?:[);/ ]|$)' + model: 'Y73 (2021)' + - regex: 'V2031A(?:[);/ ]|$)' + model: 'Y73s' + - regex: 'V2124(?:[);/ ]|$)' + model: 'Y76 5G' + - regex: 'V2156A' + model: 'Y76s' - regex: 'V1913[AT](?:[);/ ]|$)' model: 'Y7s' - regex: 'vivo 180([38]|8i)(?:[);/ ]|$)' model: 'Y81' - - regex: 'vivo 1812(?:[);/ ]|$)' + - regex: 'vivo 1812(?:_19)?(?:[);/ ]|$)' model: 'Y81i' - regex: 'V1732[AT](?:[);/ ]|$)' model: 'Y81s' + - regex: 'vivo (?:Y83A?|1802)(?:[);/ ]|$)' + model: 'Y83' - regex: 'vivo 1726(?:[);/ ]|$)' model: 'Y83 Pro' - regex: 'V1730EA(?:[);/ ]|$)' model: 'Y89' + - regex: 'vivo (?:1823|1908)(?:_19)?(?:[);/ ]|$)' + model: 'Y90' - regex: 'vivo 181[17](?:[);/ ]|$)' model: 'Y91' + - regex: 'vivo 1820(?:_19)?(?:[);/ ]|$)' + model: 'Y91i' - regex: 'V1945A(?:[);/ ]|$)' model: 'Y9s' + - regex: '(?:V2026|V2033|V2042)(?:[);/ ]|$)' + model: 'Y12s' + - regex: '(?:V20[63]9|V2026_21)(?:[);/ ]|$)' + model: 'Y12s (2021)' - regex: 'vivo 18(16|20)(?:[);/ ]|$)' model: 'Y91i' - regex: '(V1818[AT]|vivo 181[45])(?:[);/ ]|$)' @@ -2634,13 +3904,15 @@ Vivo: model: 'Y97' - regex: 'V1801A0(?:[);/ ]|$)' model: 'Z1' + - regex: 'vivo (?:1918|1951)(?:[);/ ]|$)' + model: 'Z1 Pro' - regex: 'V1730D[AT](?:[);/ ]|$)' model: 'Z1i' - regex: 'vivo 1917(?:[);/ ]|$)' model: 'Z1x' - regex: 'V1813B[AT](?:[);/ ]|$)' model: 'Z3' - - regex: 'V1730GA(?:[);/ ]|$)' + - regex: '(?:vivo Z3x|V1730GA)(?:[);/ ]|$)' model: 'Z3x' - regex: 'V1921A(?:[);/ ]|$)' model: 'Z5' @@ -2650,7 +3922,28 @@ Vivo: model: 'Z5x (2020)' - regex: 'V1963A(?:[);/ ]|$)' model: 'Z6' - + - regex: 'V2142(?:[);/ ]|$)' + model: 'Y75 5G' + - regex: 'vivo Y75s(?:[);/ ]|$)' + model: 'Y75s' + - regex: 'vivo X710L?(?:[);/ ]|$)' + model: 'X Shot' + - regex: 'X6SPlus(?: [AD])?(?:[);/ ]|$)' + model: 'X6S Plus' + - regex: 'vivo X6S(?: A)?(?:[);/ ]|$)' + model: 'X6S' + - regex: 'vivo X([5679]|20)[ALD]?(?:[);/ ]|$)' + model: 'X$1' + - regex: 'vivo X5Pro(?: L)?(?:[);/ ]|$)' + model: 'X5 Pro' + - regex: 'vivo Y66i(?: A)?(?:[);/ ]|$)' + model: 'Y66i' + - regex: 'vivo Y(\d{2})[AL]?(?:[);/ ]|$)' + model: 'Y$1' + - regex: 'vivo Xplay(\d)S(?:[);/ ]|$)' + model: 'X Play $1S' + - regex: 'vivo Xplay(\d)[AL]?(?:[);/ ]|$)' + model: 'X Play $1' - regex: '(?:VIV-|BBG-)?vivo[ _]([^/;]+) Build' model: '$1' - regex: '(?:VIV-|BBG-)?vivo[ _]([^);/]+)(?:[);/]|$)' @@ -2680,12 +3973,12 @@ Becker: # Beeline Beeline: - regex: 'Beeline' + regex: 'Beeline|A239s(?:[);/]|$)' device: 'smartphone' models: - regex: 'Beeline[_ ]Pro[_ ]([2436])' model: 'Pro $1' - - regex: 'Tab (Fast|Pro)' + - regex: 'Tab (Fast(?: 2)?|Pro)' model: 'Tab $1' device: 'tablet' - regex: 'Tab ([0-9])' @@ -2694,11 +3987,9 @@ Beeline: - regex: 'Tab' model: 'Tab' device: 'tablet' - - regex: 'E700' - model: 'E700' - - regex: 'Smart2' - model: 'Smart 2' - - regex: 'Smart ([0-9])' + - regex: 'E([67]00)' + model: 'E$1' + - regex: '(?:Beeline[_ ])?Smart[ _]?([0-9])' model: 'Smart $1' - regex: 'Smart Dual' model: 'Smart Dual' @@ -2706,6 +3997,8 @@ Beeline: model: 'Fast 2' - regex: 'Fast(?:[);/ ]|$)' model: 'Fast' + - regex: 'A239s(?:[);/ ]|$)' + model: 'Smart 8 A239s' # Beetel Beetel: @@ -2721,13 +4014,17 @@ BenQ-Siemens: # BenQ BenQ: - regex: 'BENQ(?:[ \-])?([a-z0-9]+)' + regex: 'BENQ(?:[ \-])?([a-z0-9]+)|(?:F52_09|F5_15)(?:[);/ ]|$)' device: 'feature phone' - model: '$1' + models: + - regex: 'F(52|5)_(?:15|09)(?:[);/ ]|$)' + model: 'F$1' + - regex: 'BENQ(?:[ \-])?([a-z0-9]+)' + model: '$1' -# Blaupunkt +# Blaupunkt (blaupunkt.com) Blaupunkt: - regex: 'Blaupunkt|Atlantis[_ ](?:1001A|1010A|A10\.G40[23])|Discovery[_ ](?:A10_302|111C|1000C|1001A?)|Endeavour[_ ](?:785|101[GLM]|1000|1001|101[03]|1100)|Polaris[_ ]803' + regex: 'Blaupunkt|Soundphone S2|Atlantis[_ ](?:1001A|1010A|A10\.G40[23])|SLplus02|Discovery[_ ](?:A10_302|111C|1000C|1001A?)|Endeavour[_ ](?:785|101[GLM]|1000|1001|101[03]|1100)|Polaris[_ ]803|BP_6010' device: 'tablet' models: - regex: 'Discovery[_ ]111C' @@ -2740,25 +4037,45 @@ Blaupunkt: model: 'Discovery 1001A' - regex: 'Discovery[_ ]1001' model: 'Discovery 1001' + - regex: 'Soundphone S2' + model: 'Soundphone S2' - regex: 'Endeavour[_ ](101[GLM]|785|100[01]|101[03]|1100)' model: 'Endeavour $1' - regex: 'Polaris[_ ](803)' model: 'Polaris $1' - regex: 'Atlantis[_ ](1001A|1010A|A10\.G40[23])' model: 'Atlantis $1' - - regex: 'Blaupunkt (SL 0[124]|SM 01)' + - regex: 'SLplus02' + model: 'SL Plus 02' + - regex: '(BP_6010)' + model: '$1' + - regex: 'Blaupunkt[_ ](SL[_ ]0[124]|SM[_ ]0[12])' device: 'smartphone' model: '$1' + - regex: '(SF02)' + device: 'smartphone' + model: '$1' + - regex: '(4K Android TV)' + device: 'tv' + model: '$1' # Bmobile Bmobile: - regex: 'Bmobile[_ ]|AX-?([1-9][0-9]{2,3}[eEO+]?|7OO)' + regex: 'Bmobile[_ ]|B60Pro_MV03|BL54_?Pro|(?:B50Pro|FUN 4 2018|AX-?(?:[1-9][0-9]{2,3}[eEO+]?|7OO))(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'AX-?([1-9][0-9]{2,3}[eEO+]?)' model: 'AX$1' - regex: 'AX7OO' model: 'AX700' + - regex: 'FUN 4 2018' + model: 'Fun 4 (2018)' + - regex: 'B60Pro_MV03' + model: 'B60 Pro' + - regex: 'B50Pro' + model: 'B50 Pro' + - regex: 'BL54_?Pro' + model: 'BL54 Pro' - regex: 'Bmobile[_ ]([^/;]+) Build' model: '$1' - regex: 'Bmobile[_ ]([a-z0-9]+)' @@ -2766,21 +4083,35 @@ Bmobile: # bq bq: - regex: 'Aquaris|bq [^/;]+ Build|BQS[-_]([0-9]{4})|(BQ(ru)?[_ -][0-9]{3,4})|BQ5059|BQ1008G' + regex: 'Aquaris|bq [^/;]+ Build|BQS[-_]([0-9]{4})|(BQ(ru)?[_ -][0-9]{3,4})|BQ5059|BQ1008G|BQru_BQru-' device: 'smartphone' models: - regex: 'BQ(?:ru)?-(?:5209L|5044)(?:[);/ ]|$)' model: 'Strike LTE' - regex: 'BQ(?:ru)?-(?:6035L)(?:[);/ ]|$)' model: 'Strike Power Max' - - regex: 'BQ(?:ru)?-(5535L)(?:[);/ ]|$)' + - regex: 'BQ(?:ru)?-(?:5535L)(?:[);/ ]|$)' model: 'Strike Power Plus' - - regex: 'BQ(S|ru)?-(5070|6040L)(?:[);/ ]|$)' + - regex: 'BQ(S|ru)?-(?:5070|6040L)(?:[);/ ]|$)' model: 'Magic' + - regex: 'BQ(S|ru)?-(?:6424L)(?:[);/ ]|$)' + model: 'Magic O' - regex: 'BQ(?:S|ru)?-(?:5730L)(?:[);/ ]|$)' model: 'Magic C' - regex: 'BQ(?:S|ru)?-(?:5731L)(?:[);/ ]|$)' model: 'Magic S' + - regex: 'BQ(?:S|ru)?-5745L(?:[);/ ]|$)' + model: 'Clever' + - regex: 'BQ(?:S|ru)?-5533G(?:[);/ ]|$)' + model: 'Fresh' + - regex: 'BQ(?:S|ru)?-5031G(?:[);/ ]|$)' + model: 'Fun' + - regex: 'BQ(?:S|ru)?-(?:5732L)(?:[);/ ]|$)' + model: 'Aurora SE' + - regex: 'BQ(?:S|ru)?-6430L(?:[);/ ]|$)' + model: 'Aurora' + - regex: 'BQ(?:S|ru)?-6630L(?:[);/ ]|$)' + model: 'Magic L' - regex: 'BQ-9011[G]?(?:[);/ ]|$)' model: 'Vision' device: 'tablet' @@ -2827,9 +4158,13 @@ bq: device: 'tablet' - regex: 'BQ-6200L|BQ-6000L' model: 'Aurora' + - regex: 'BQ-6631G' + model: 'Surf' + - regex: 'BQ-6022G' + model: 'Aura' - regex: 'BQ(ru)?[ -]6015L' model: 'Universe' - - regex: 'BQ-6010G|BQ(?:ru)?-5525' + - regex: 'BQ(?:S|ru)?-(?:5525|6030G|6010G)' model: 'Practic' - regex: 'BQ-6001L|BQ-6050' model: 'Jumbo' @@ -2839,7 +4174,7 @@ bq: model: 'Spring' - regex: 'BQ-5700L(?:[);/ ]|$)' model: 'Space X' - - regex: 'BQ-(?:5591|5518G)(?:[);/ ]|$)' + - regex: 'BQ-(?:5591|551[89]G)(?:[);/ ]|$)' model: 'Jeans' - regex: 'BQ-5522' model: 'Next' @@ -2847,6 +4182,8 @@ bq: model: 'Silk' - regex: 'BQ-5519L(?:[);/ ]|$)' model: 'Fast Plus' + - regex: 'BQ-5540L(?:[);/ ]|$)' + model: 'Fast Pro' - regex: 'BQ-5517L(?:[);/ ]|$)' model: 'Twin Pro' - regex: 'BQ-5516L(?:[);/ ]|$)' @@ -2873,6 +4210,10 @@ bq: model: 'Strike Selfie Max' - regex: 'BQ(?:ru)?-5503(?:[);/ ]|$)' model: 'Nice 2' + - regex: 'BQ(?:ru)?-6045L(?:[);/ ]|$)' + model: 'Nice' + - regex: 'BQ(?:ru)?-4030G(?:[);/ ]|$)' + model: 'Nice Mini' - regex: 'BQS-5502(?:[);/ ]|$)' model: 'Hammer' - regex: 'BQS-5501(?:[);/ ]|$)' @@ -2901,13 +4242,19 @@ bq: model: 'Space' - regex: 'BQ-5082(?:[);/ ]|$)' model: 'Sense 2' + - regex: 'BQ-5045L(?:[);/ ]|$)' + model: 'Wallet' + - regex: 'BQ-5047L(?:[);/ ]|$)' + model: 'Like' - regex: 'BQ-5071(?:[);/ ]|$)' model: 'Belief' - regex: 'BQ[S]?-(?:5065|5340)(?:[);/ ]|$)' model: 'Choice' + - regex: 'BQ(?:S|ru)?-5046L(?:[);/ ]|$)' + model: 'Choice LTE' - regex: 'BQ(?:ru)?-?(?:5059|5514G)(?:[);/ ]|$)' model: 'Strike Power' - - regex: 'BQ-5058(?:[);/ ]|$)' + - regex: '(?:BQru_)?BQ(?:ru)?-5058(?:[);/ ]|$)' model: 'Strike Power Easy' - regex: 'BQ(?:ru)?-5057(?:[);/ ]|$)' model: 'Strike 2' @@ -2921,6 +4268,10 @@ bq: model: 'Crystal' - regex: 'BQ-5052(?:[);/ ]|$)' model: 'Sense' + - regex: 'BQ-5060L' + model: 'Basic' + - regex: 'BQ-6051G(?:[);/ ]|$)' + model: 'Soul' - regex: 'BQ[S]?-5045(?:[);/ ]|$)' model: 'Fast' - regex: 'BQ(?:ru)?-(?:5037|5514L)(?:[);/ ]|$)' @@ -2939,16 +4290,24 @@ bq: model: 'Bond' - regex: 'BQ-5015L(?:[);/ ]|$)' model: 'First' + - regex: 'BQ-5016G(?:[);/ ]|$)' + model: 'Choice' - regex: 'BQ-5012L(?:[);/ ]|$)' model: 'Rich' + - regex: 'BQ-5521L(?:[);/ ]|$)' + model: 'Rich Max' - regex: 'BQS-5011(?:[);/ ]|$)' model: 'Monte Carlo' - regex: 'BQ-5010G(?:[);/ ]|$)' model: 'Spot' + - regex: 'BQ-5000G(?:[);/ ]|$)' + model: 'Velvet Easy' - regex: 'BQS-5010(?:[);/ ]|$)' model: 'Prague' - regex: 'BQ-5009L(?:[);/ ]|$)' model: 'Trend' + - regex: 'BQ-5560L' + model: 'Trend (2021)' - regex: 'BQS-500[59](?:[);/ ]|$)' model: 'Sydney' - regex: 'BQ-5008L(?:[);/ ]|$)' @@ -3075,9 +4434,9 @@ bq: - regex: 'Aquaris M8' model: 'Aquaris M8' device: 'tablet' - - regex: 'Aquaris_A4.5' - model: 'Aquaris A4.5' - - regex: 'BQ(?:ru)?[_ ]5590(?:[);/ ]|$)' + - regex: 'Aquaris_([AM])4.5' + model: 'Aquaris $14.5' + - regex: 'BQ(?:ru)?[_ -](?:5590|5740G)(?:[);/ ]|$)' model: 'Spring' - regex: 'BQ[S]?-(?:6016L|5520)(?:[);/ ]|$)' model: 'Mercury' @@ -3128,9 +4487,15 @@ bq: - regex: 'BQ-1045[G]?(?:[);/ ]|$)' model: 'Orion' device: 'tablet' - - regex: 'BQ-1054L(?:[);/ ]|$)' + - regex: 'BQ-(?:1054L|1020L)(?:[);/ ]|$)' model: 'Nexion' device: 'tablet' + - regex: 'BQ-7083G(?:[);/ ]|$)' + model: 'Light' + device: 'tablet' + - regex: 'BQ-8077L(?:[);/ ]|$)' + model: 'Exion Plus' + device: 'tablet' - regex: 'BQ(?:ru)?-7083(?:[);/ ]|$)' model: '7083' device: 'tablet' @@ -3140,12 +4505,21 @@ bq: - regex: 'BQ(?:ru)?-1022l(?:[);/ ]|$)' model: 'Armor Pro LTE+' device: 'tablet' + - regex: 'BQ(?:ru)?-1024L(?:[);/ ]|$)' + model: 'Exion Pro' + device: 'tablet' + - regex: 'BQ(?:ru)?-7055L(?:[);/ ]|$)' + model: 'Exion One' + device: 'tablet' + - regex: 'BQ(?:ru)?-1025L(?:[);/ ]|$)' + model: 'Exion Max' + device: 'tablet' - regex: 'BQ(?:ru)?-7081(?:[);/ ]|$)' model: 'Charm' device: 'tablet' - regex: '(?:bq )?(Aquaris[^/;]*) Build' model: '$1' - - regex: 'Aquaris (E(4.5|[56])|M(5|10)|U2 Lite|U2|U (Lite|Plus)|V Plus|X5 Plus|X5|X Pro|[CMUVX])' + - regex: 'Aquaris (VS|E(4.5|[56])|M(5|10)|U2 Lite|U2|U (Lite|Plus)|V Plus|X5 Plus|X2? Pro|X[25]|[CMUVX])' model: 'Aquaris $1' - regex: 'bq ([^/;]+) Build' model: '$1' @@ -3153,14 +4527,20 @@ bq: # Bush Bush: - regex: 'Bush[ _-]' + regex: 'Bush[ ,_-]|Bush10Nou' device: 'smartphone' models: - - regex: 'BUSH ([^;/]+)Tablet Build' + - regex: 'Bush10Nou' + device: 'tablet' + model: '10Nou' + - regex: 'BUSH ([^;/)]+)Tablet(?: Build|[);])' model: '$1Tablet' device: 'tablet' - - regex: 'BUSH ([^;/]+) Build' + - regex: 'BUSH ([^;/)]+)(?: Build|[);])' model: '$1' + - regex: 'BUSH, ([a-z0-9_ \-]+), (?:wired|wireless)' + model: '' + device: 'tv' # CAGI CAGI: @@ -3196,30 +4576,36 @@ Casio: - regex: 'C811 4G(?:[);/ ]|$)' model: "G'zOne Commando 4G LTE" -# Casper +# Casper (casper.com.tr) Casper: - regex: 'CASPER[_ ]|VIA[- _](T7D|A[34]|E3|F[123]|G4|M4|[LS]8|S7|P2|V8C|A1_Plus|A1|S10|S|T17_M|T1[07]|T7|T7-3G|T8B|T8D-3G)(?:[);/ ]|$)' + regex: 'CASPER[_ ]|VIA[- _]([XF]20|T7D|A[34]|E[43]|F[123]|G[345]|M4|[LS]8|S7|P[23]|V8C|A[13]_Plus(?:_64)?|A1(?:_1)?|S[13]0|S48|S|T17_M|T1[07]|T7|T7-3G|T8B|T8D-3G|S1[78]|S48_0)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'CASPER[_ ]VIA_(G1_Plus|G1|E1|[AE]2|M[123]|V[35689]|V10|G3)(?:[);/ ]|$)' + - regex: '(?:CASPER[_ ])?VIA_A1_Plus(?:_64)?' + model: 'VIA A1 Plus' + - regex: '(?:CASPER[_ ])?VIA[_ ]([XF]20|G1_Plus|A3_Plus|G[135]|E[14]|[AE]2|M[123]|V[35689]|V10|G3|V6X|A[34]|E3|F[123]|G4|M4|P[23]|S|V8C|A1(?:_1)?)(?:[);/ ]|$)' model: 'VIA $1' - regex: 'CASPER_VIA_E1c' model: 'VIA E1C' - regex: 'CASPER_L10_4.5G' model: 'L10 4.5G' device: 'tablet' + - regex: 'CASPER_(S[23]8)(?:[);/ ]|$)' + model: '$1' + device: 'tablet' - regex: 'VIA[- _](T7|T8D)-3G' model: 'VIA $1 3G' device: 'tablet' - - regex: 'VIA[- _](T7D|S10|[LS]8|S7|T17_M|T1[07]|T7|T8B)(?:[);/ ]|$)' + - regex: 'VIA[- _](T7D|S[13]0|S48|[LS]8|S7|T17_M|T1[07]|T7|T8B|S1[78])(?:[);/ ]|$)' model: 'VIA $1' device: 'tablet' - - regex: 'VIA[_ ](A[34]|E3|F[123]|G4|M4|P2|S|V8C|A1_Plus|A1)' + - regex: 'VIA[- _](S48)(?:_0)?(?:[);/ ]|$)' model: 'VIA $1' + device: 'tablet' # Cat (Caterpillar, Catphones) Cat: - regex: 'Cat ?(tablet|stargate|nova)|B15Q|CAT B35' + regex: 'Cat ?(tablet|stargate|nova)|(?:B15Q|CAT B35|CAT-B100|S62 Pro)(?:[);/ ]|$)' device: 'tablet' models: - regex: 'B15Q' @@ -3228,31 +4614,59 @@ Cat: - regex: 'CAT B35' model: 'B35' device: 'smartphone' + - regex: 'S62 Pro' + model: 'S62 Pro' + device: 'smartphone' - regex: 'Cat ?(?:tablet)? ?((?:Galactica|Nova|StarGate|PHOENIX)[^/;]*) Build' model: '$1' - regex: 'Cat ?tablet' model: 'Nova' + - regex: 'CAT-(B100)' + device: 'feature phone' + model: '$1' + # Carrefour Carrefour: - regex: 'CT(?:10[0123]0|7[12]0|820)(?:W|FR)?(?:[);/ ]|$)' + regex: 'CT(?:10[0123]0|7[12]0|820|735_16GB)(?:W|FR)?(?:[);/ ]|$)' device: 'tablet' models: - regex: 'CT820' model: 'Touch Tablet Neo2' - regex: 'CT(10[0123]0(?:W|FR)?)' model: 'CT$1' - - regex: 'CT(7[12]0(?:W|FR)?)' + - regex: 'CT(7[12]0(?:W|FR)?|735)' model: 'CT$1' +# Celcus +Celcus: + regex: 'CELCUS, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' + # Celkon Celkon: - regex: 'Celkon' + regex: 'Celkon|Android 7.+ UNIQ(?: Build|[);])|(?:Millennia Hero|2GBStar|2GBXpress|CliQ2|Campus Prime)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Celkon[ _*](C[78]20)' model: '$1' device: 'tablet' + - regex: 'Celkon[_ ]4G_TAB-8' + model: '4G Tab 8' + device: 'tablet' + - regex: 'Millennia Hero' + model: 'Millennia Hero' + - regex: '2GBStar' + model: '2GB Star' + - regex: '2GBXpress' + model: '2GB Xpress' + - regex: 'CliQ2(?:[);/ ]|$)' + model: 'CliQ 2' + - regex: 'Android 7.+ UniQ(?: Build|[);])' + model: 'UniQ' + - regex: '(Campus Prime)(?:[);/ ]|$)' + model: '$1' - regex: 'Celkon[ _*](CT[^;/]+) Build' model: '$1' device: 'tablet' @@ -3261,69 +4675,128 @@ Celkon: - regex: 'Celkon[\. _*]([^;/\)]+)[\)/]' model: '$1' +# Cellution +Cellution: + regex: 'Cosmas|CT_Cosmas_V' + device: 'smartphone' + models: + - regex: 'Cosmas' + model: 'Cosmas' + - regex: 'CT_Cosmas_V' + model: 'Cosmas V' + # Changhong Changhong: regex: 'Changhong' - device: 'tv' + device: 'smartphone' models: - - regex: 'Changhong-([^);/]+)' + - regex: 'Changhong[ ]?(X1-K|X6|R8|Z9S?|Z1S|S18)(?:[);/ ]|$)' + model: '$1' + + - regex: 'ChangHong Android TV' + device: 'tv' + model: '' + - regex: 'changhong,([a-z0-9_ \-]+),(?:wired|wireless)' + device: 'tv' + model: '$1' + - regex: '(?:Opera TV.+)Changhong-([^);/]+)' + device: 'tv' model: '$1' -# Cherry Mobile +# Cherry Mobile (cherrymobile.com) 'Cherry Mobile': - regex: 'Cherry|Flare([ _])?(2X|4|A[123]|J[1235]|P[13]|S[4568]|X2)|Flare[ _](?:S Play|HD_MAX|LITE|XL Plus|X_V2)|Fusion Bolt|OMEGA HD 4' + regex: 'Cherry|Superion[_ ](?:S2|Radar Deluxe|S1 DTV|S1 Plus DTV)|Flare([ _])?(2X|4|A[123]|J[123568]|P[13]|S[4-8]|X2|Y[367]|S Play|HD|LITE|XL|X_V2|Y3s|Tab)(?:[ _](?:Pro|Plus|Max|LTE))?|Fusion Bolt|Omega[_ ](?:Icon 2|Icon Lite 2|lite[_ ][43][Cs]?|HD [45]|HD_Duo)|Spin Max 2|Selfie_Two|Flare_5' device: 'smartphone' models: - - regex: 'Cherry(?: ?Mobile)?[ _]?([^/;]+) Build' - model: '$1' - regex: '(Flare2X)' model: '$1' + - regex: 'Flare[_ ]HD[_ ]([345])' + model: 'Flare HD $1' - regex: 'Flare_HD_MAX' model: 'Flare HD Max' - regex: 'FLARE LITE' model: 'Flare Lite' - regex: 'Flare S Play' model: 'Flare S Play' + - regex: 'Flare[_ ]J([26])S' + model: 'Flare J$1s' + - regex: 'Flare_([A-Z]\d+)_Prime' + model: 'Flare $1 Prime' + - regex: 'Flare_([A-Z]\d+)_Deluxe' + model: 'Flare $1 Deluxe' + - regex: 'Flare[_ ]([A-Z]\d+)[_ ]Power' + model: 'Flare $1 Power' + - regex: 'Flare[_ ]([A-Z]\d+)[_ ]Pro' + model: 'Flare $1 Pro' + - regex: 'Flare[_ ]([A-Z]\d+)[_ ]Lite' + model: 'Flare $1 Lite' + - regex: 'Flare[_ ]([A-Z]\d+)[_ ]Plus' + model: 'Flare $1 Plus' - regex: 'Flare XL Plus' model: 'Flare XL Plus' + - regex: 'Flare ?J3 ?Plus' + model: 'Flare J3 Plus' + - regex: 'Cherry[_ ]X740' + model: 'Flare A5' - regex: 'Flare[ _]X[_ ]V2' model: 'Flare X V2' - - regex: 'Flare[ _](A2|J3|P1|S[46])[ _]Lite' - model: 'Flare $1 Lite' - - regex: 'Flare[ _](J[12]|S5)[ _]mini' + - regex: 'Flare[ _](J[12]|S[57]|Y3|J6|P1)[ _]mini' model: 'Flare $1 Mini' - - regex: 'Flare J2S' - model: 'Flare J2s' + - regex: 'Flare_J2_2018' + model: 'Flare J2 (2018)' - regex: 'Flare S4 Max LTE' model: 'Flare S4 Max LTE' - - regex: 'Flare S4 Max' - model: 'Flare S4 Max' - - regex: 'FlareS5LiteDTV ' + - regex: 'Flare[_ ](S[47]|J2)[_ ]Max' + model: 'Flare $1 Max' + - regex: 'FlareS5LiteDTV' model: 'Flare S5 Lite DTV' - - regex: 'Flare_S6_Plus' - model: 'Flare S6 Plus' - - regex: 'FLARE S6 POWER' - model: 'Flare S6 Power' - - regex: 'Flare S6' - model: 'Flare S6' - - regex: 'Flare S8' - model: 'Flare S8' - - regex: 'Flare(?:[ _])?(4|A[13]|J[135]|P[13]|S4|X2)' + - regex: 'Flare[_ ]J2[_ ]DTV' + model: 'Flare S2 DTV' + - regex: 'Flare[_ ]Lite[_ ]3S' + model: 'Flare Lite S3' + - regex: 'Flare(?:[ _])?(A[123]|J8 LTE|J[13568]|P[13]|S[4-8]|X2|Y3s|Y7_LTE|Y[673]|[45])' model: 'Flare $1' - - regex: 'OMEGA HD 4' - model: 'Omega HD 4' - - regex: '(Fusion Bolt)' + - regex: 'OMEGA HD ([45])' + model: 'Omega HD $1' + - regex: 'Omega_HD_Duo' + model: 'Omega HD Duo' + - regex: 'Omega Icon Lite 2' + model: 'Omega Icon Lite 2' + - regex: 'Omega Icon 2' + model: 'Omega Icon 2' + - regex: 'Omega[_ ]Lite[_ ](3[Cs]|4)' + model: 'Omega Lite $1' + - regex: 'Spin Max 2' + model: 'Spin Max 2' + - regex: 'Selfie_Two' + model: 'Selfie Two' + - regex: 'Superion_S2_Plus' + model: 'Superion S2 Plus' + device: 'tablet' + - regex: 'Superion S1 Plus DTV' + model: 'Superion S1 Plus DTV' + device: 'tablet' + - regex: 'Flare Tab Pro V(\d)' + device: 'tablet' + model: 'Flare Tab Pro V$1' + + - regex: '(Fusion Bolt|Flare Tab Pro|Flare Tab|Superion[_ ](?:S2|Radar Deluxe|S1 DTV))' model: '$1' device: 'tablet' + - regex: 'Cherry(?:[ _]?Mobile)?[ _]?([^/;]+)(?: Build|[);])' + model: '$1' + # China Mobile 'China Mobile': - regex: '(M812C|1501_M02|9930i|A1303|A309W|M651CY) Build' + regex: '(M812C|1501_M02|9930i|A1303|A309W|M651CY|CMCC[ -]M(?:670|860))(?: Build|[);])' device: 'smartphone' models: - regex: 'M651CY' model: 'A3' - - regex: '(M812C|1501_M02|9930i|A1303|A309W)' + - regex: 'CMCC-M860' + model: 'N5 Pro' + - regex: '(M812C|1501_M02|9930i|A1303|A309W|M670)' model: '$1' # Comio @@ -3341,9 +4814,7 @@ Comio: model: 'CT701G Plus' device: 'tablet' - - regex: 'Comio[ _-]?([^;/)]+) Build' - model: '$1' - - regex: 'Comio[ _-]?([^;/)]+)' + - regex: 'Comio[ _-]?([^;/)]+)(?: Build|[);])' model: '$1' # Compal @@ -3352,9 +4823,36 @@ Compal: device: 'feature phone' model: '$1' +# Artel (artelgroup.org) +Artel: + regex: 'Artel[_ ]|\w+_ARTEL_\w+|(?:GAP YOQ| ALO|U1 MINI|Android 8.+; U4(?!/))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'GAP YOQ(?:[);/ ]|$)' + model: 'Gap Yo Q' + - regex: 'U1 MINI(?:[);/ ]|$)' + model: 'U1 Mini' + - regex: 'Android 8.+ U4(?:[);/ ]|$)' + model: 'U4' + - regex: ' ALO(?:[);/ ]|$)' + model: 'Allo' + - regex: 'Artel[_ ](Quadro(?: Pro)?|Tesla|Air|Tomchi|Premium|U3_4G|Z5|Sentinel (?:X 8G|X D5|X)|T10)' + model: '$1' + - regex: 'Artel[_ ]Komi3' + model: 'Komi 3' + - regex: 'Artel[_ ]Q21_PRO' + model: 'Q21 Pro' + - regex: 'Artel[_ ](Star|Nova|Connect|Choice|Style)' + model: '$1' + device: 'tablet' + + - regex: '(?:\w+_)?ARTEL_([FVM]5|X[45])_\w+' + device: 'feature phone' + model: '$1' + # ComTrade Tesla ComTrade Tesla: - regex: 'Tesla|Impulse 7.85 3G|Smartphone_6.1|SP(?:6.2|6.2_Lite)|TTL(?:713G|8)' + regex: 'Tesla(?!Group/LUMUS)|Impulse 7.85 3G|Impulse 10.1 OCTA|Smartphone_6.1|SP(?:6.2|6.2_Lite)|TTL(?:713G|8)' device: 'smartphone' models: - regex: 'TeslaEvo5.0' @@ -3365,12 +4863,17 @@ ComTrade Tesla: - regex: '(Impulse 7.85 3G)' model: '$1' device: 'tablet' - - regex: 'Tesla_SP([^/;]+)L Build' + - regex: 'Impulse 10.1 OCTA' + model: 'Impulse 10.1" OCTA' + device: 'tablet' + - regex: 'Tesla_SP([^/;)]+)L(?: Build|[;)])' model: 'Smartphone $1 Lite' - regex: 'Smartphone_6.1' model: 'Smartphone 6.1' - regex: 'SP6.2_Lite' model: 'Smartphone 6.2 Lite' + - regex: 'Tesla_SP(\d+)[_.](\d+)(?: Build|[;)])' + model: 'Smartphone $1.$2' - regex: 'Tesla_SP([^/;]+) Build' model: 'Smartphone $1' - regex: 'SP([^/;]+) Build' @@ -3414,11 +4917,17 @@ ComTrade Tesla: model: 'M8' device: 'tablet' + - regex: 'TESLA,([a-z0-9_ \-]+),(?:wired|wireless)' + model: '' + device: 'tv' + # ConCorde ConCorde: - regex: 'ConCorde ([^/;]+) Build' + regex: 'ConCorde ([^/;]+) Build|Concorde_Raptor_Z55(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'Concorde_(Raptor_Z55)(?:[);/ ]|$)' + model: '$1' - regex: 'ConCorde Tab ?([^/;]+) Build' model: 'Tab $1' device: 'tablet' @@ -3428,18 +4937,18 @@ ConCorde: - regex: 'ConCorde ([^/;]+) Build' model: '$1' -# Condor +# Condor (www.condor.dz) Condor: - regex: 'Allure M[13]|Griffe T[256789]|TFX712G|TRA-901G|TGW[-]?(710G|709)|(?:PGN\-?[456][012][0-9]|PHS\-601|PHQ519|PHQ52[056]|PKT\-301|Plume (?:H1|L[123]|P8))(?:[);/ ]|$)|CTAB[^/;]+ Build' + regex: 'Allure (?:M[123]|X)|Griffe T[235-9]|TFX712G|TRA-901G|TGW[-]?(710G|709|102L|801[GL])|(?:PGN\-?[456][012][0-9]|PHS\-601|PHQ519|PHQ52[056]|TB105L|TB717G|PKT\-301|Plume (?:H1|L[1-468]|P8|P6 PRO LTE))(?:[);/ ]|$)|CTAB[^/;]+ Build' device: 'smartphone' models: - regex: 'CTAB([^/;]+) Build' device: 'tablet' model: 'CTAB $1' - - regex: '(TGW)-?(710G|709)(?:[);/ ]|$)' + - regex: '(TGW)-?(710G|709|801[GL]|102L)(?:[);/ ]|$)' device: 'tablet' model: '$1 $2' - - regex: '(TFX712G)(?:[);/ ]|$)' + - regex: '(TFX712G|TB105L|TB717G)(?:[);/ ]|$)' device: 'tablet' model: '$1' - regex: '(TRA)-(901G)(?:[);/ ]|$)' @@ -3462,7 +4971,7 @@ Condor: model: 'C8S' - regex: 'PGN\-?506' model: 'C7' - - regex: '(Allure M[13])' + - regex: '(Allure (?:M[123]|X))' model: '$1' - regex: 'PGN\-?507' model: 'Allure A9' @@ -3492,26 +5001,20 @@ Condor: model: 'Plume P6' - regex: 'PGN\-?521' model: 'Griffe G4 Plus' - - regex: 'Griffe T2' - model: 'Griffe T2' - - regex: 'Griffe T5' - model: 'Griffe T5' - - regex: 'Griffe T6' - model: 'Griffe T6' - - regex: 'Griffe T7' - model: 'Griffe T7' - - regex: 'Griffe T8 Plus' - model: 'Griffe T8 Plus' - - regex: 'Griffe T9' - model: 'Griffe T9' + - regex: 'Griffe T3 ?pro' + model: 'Griffe T3 Pro' + - regex: 'Griffe T([0-9]) Plus' + model: 'Griffe T$1 Plus' + - regex: 'Griffe T([0-9])' + model: 'Griffe T$1' - regex: 'PGN\-?522' model: 'P6 Plus' - regex: 'PGN\-?523' model: 'P7 Plus' - regex: 'PGN\-?527' model: 'Plume P4 Plus' - - regex: 'PGN\-?528' - model: 'Plume P6 Pro Lte' + - regex: 'PGN\-?528|PLUME P6 PRO LTE' + model: 'Plume P6 Pro LTE' - regex: 'PGN\-?605' model: 'Plume P8' - regex: 'PGN\-?606' @@ -3532,72 +5035,147 @@ Condor: model: 'Allure A55 Plus' - regex: 'Plume H1' model: 'Plume H1' - - regex: 'Plume L1' - model: 'Plume L1' - - regex: 'Plume L2 Pro' - model: 'Plume L2 Pro' + - regex: 'Plume L([2468]) Pro' + model: 'Plume L$1 Pro' - regex: 'Plume L3 Plus' model: 'Plume L3 Plus' + - regex: 'Plume L3 Smart' + model: 'Plume L3 Smart' + - regex: 'Plume L([1-4])' + model: 'Plume L$1' - regex: 'Plume P8 Pro' model: 'Plume P8 Pro' - regex: 'PGN\-?([0-9]{3})' model: 'PGN-$1' -# Coolpad +# Coolpad (coolpad.us) Coolpad: - regex: '(?:YL-)?Coolpad|(?:Cool_9S|8190Q|1831-A0|8676-A01|CP8298_I00|CP3648A|CP8676_I0[23]|REVVLPLUS C3701A|VCR-[AI]0|C106-7|MTS-T0|cp3705A[S]?|ORL-C0)(?:[);/ ]|$)|(8295|5860S) Build' + regex: '(?:YL-)?Coolpad|(?:Cool_9S|1824-S0|8190Q|1831-A0|8676-[AM]01|1872-A0|CP8298_I00|CP3648AT?|CP8676_I0[23]|REVVLPLUS C3701A|VCR-[AI]0|C105-(?:8|E0)|C106-[789]|C107-9| C106|MTS-T0|cp3705A[S]?|ORL-C0|DLS-E0|1826-I01|8298-(?:M02|A01)|5560S|CP3320AS2|CP3667AT|CP3706AS|CP3669AS|CP3321AT|CP350[34]L|C103|CP03)(?:[);/ ]|$)|(8295|5860S) Build' device: 'smartphone' models: - regex: 'VCR-[AI]0' model: 'Cool Play 6' - regex: '1831-A0(?:[);/ ]|$)' model: 'Cool Play C7' + - regex: '1872-A0(?:[);/ ]|$)' + model: 'Cool Play 7' - regex: 'REVVLPLUS C3701A' model: 'REVVL Plus' device: 'phablet' + - regex: 'CP3667AT' + model: 'Tasker' + device: 'tablet' - regex: '8190Q(?:[);/ ]|$)' model: '8190Q' + - regex: 'DLS-E0(?:[);/ ]|$)' + model: 'N5' + - regex: '1824-S0(?:[);/ ]|$)' + model: 'N5C' + - regex: 'CP3321AT(?:[);/ ]|$)' + model: 'Bellaza' - regex: 'CP3705A[S]?(?:[);/ ]|$)' model: 'Legacy' - - regex: 'CP3648A(?:[);/ ]|$)' + - regex: 'CP3648AT?(?:[);/ ]|$)' model: 'Legacy S' + - regex: 'CP3320AS2?(?:[);/ ]|$)' + model: 'Legacy S SR' + - regex: 'CP3706AS(?:[);/ ]|$)' + model: 'Legacy Brisa' + - regex: 'CP3669AS(?:[);/ ]|$)' + model: 'Suva' - regex: 'MTS-T0(?:[);/ ]|$)' model: 'N2M' - - regex: 'C106-7(?:[);/ ]|$)' + - regex: '(?:C106-[789]|R116|C10[36])(?:[);/ ]|$)' model: 'Cool 1' + - regex: 'C107-9(?:[);/ ]|$)' + model: '1C' + - regex: 'C105-(?:E0|8)(?:[);/ ]|$)' + model: 'Cool S1' + - regex: '1826-I01(?:[);/ ]|$)' + model: 'Cool 5' - regex: 'ORL-C0(?:[);/ ]|$)' model: 'Cool 9' - regex: 'Cool_9S(?:[);/ ]|$)' model: 'Cool 9S' + - regex: 'CP03(?:[);/ ]|$)' + model: 'Cool 20' + - regex: '5560S(?:[);/ ]|$)' + model: 'Arise' - regex: '(5860S|8295) Build' model: '$1' + - regex: 'E501' + model: 'Modena' + - regex: 'E502' + model: 'Modena 2' - regex: 'CP8676_I02(?:[);/ ]|$)' model: 'Note 3' - regex: 'CP8676_I03(?:[);/ ]|$)' model: 'Note 3 Plus' - regex: 'CP8298_I00(?:[);/ ]|$)' model: 'Note 3 Lite' - - regex: '(8676-A01)(?:[);/ ]|$)' + - regex: '(CP350[34]L)(?:[);/ ]|$)' + model: '$1' + - regex: '(8676-[AM]01|8298-(?:M02|A01))(?:[);/ ]|$)' model: '$1' - regex: '(?:YL-)?Coolpad[ _\-]?([^/;]+) Build' model: '$1' - regex: '(?:YL-)?Coolpad[ _\-]?([a-z0-9\-]+)' model: '$1' -# Clarmin +# Clarmin (clarmin.com) Clarmin: regex: 'Clarmin' device: 'smartphone' models: - - regex: 'Clarmin_B6' - model: 'B6' + - regex: 'Clarmin[_ ](B[65]|C1)' + model: '$1' + +# CORN (corn-mobile.com) +CORN: + regex: 'CORN[_ ]' + device: 'smartphone' + models: + - regex: 'CORN R([124])0' + model: 'R$10' + - regex: 'CORN[_ ]X(4|55|5)' + model: 'X$1' + +# Cosmote (https://www.telekom.ro/) +Cosmote: + regex: 'Cosmote' + device: 'smartphone' + models: + - regex: 'Cosmote_My_mini_Tab' # Allview My Mini Tab + device: 'tablet' + model: 'My Mini Tab' # Cricket Cricket: - regex: 'Cricket-([a-z0-9]+)' - device: 'feature phone' - model: '$1' + regex: 'Cricket-([a-z0-9]+)|(?:U304AC|U325AC|U705AC|V350C|EC1002|EC21100[1-4])(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'EC211001' + model: 'Dream 5G' + - regex: 'U304AC' + model: 'Icon' + - regex: 'U325AC' + model: 'Icon 2' + - regex: 'EC211002' + model: 'Icon 3' + - regex: 'V350C' + model: 'Influence' + - regex: 'EC211004' + model: 'Innovate 5G' + - regex: 'U705AC' + model: 'Ovation' + - regex: 'EC1002' + model: 'Ovation 2' + - regex: 'EC211003' + model: 'Splendor' + - regex: 'Cricket-([a-z0-9]+)' + device: 'feature phone' + model: '$1' # Crius 'Crius Mea': @@ -3607,39 +5185,62 @@ Cricket: # Crosscall Crosscall: - regex: 'Crosscall|ODYSSEY_Plus|Odyssey S1|Trekker-[MSX][1234]|Action-X3|Core-X3' + regex: 'Crosscall|ODYSSEY_Plus|Odyssey S1|Trekker-[MSX][1-4]|Action-X[35]|Core-(?:M[45]|T4|X[34])' device: 'smartphone' models: - - regex: 'Action-X3' - model: 'Action-X3' - - regex: 'Core-X3' - model: 'Core-X3' + - regex: 'Action-X3 Pro(?:[);/ ]|$)' + model: 'Action-X3 Pro' + - regex: 'Action-X([35])(?:[);/ ]|$)' + model: 'Action-X$1' + - regex: 'Core-(M[45]|X[34])(?:[);/ ]|$)' + model: 'Core-$1' - regex: 'Crosscall ([^;/]+) Build' model: '$1' - regex: 'ODYSSEY_Plus' model: 'ODYSSEY+' - regex: 'Odyssey S1' model: 'ODYSSEY S1' - - regex: 'Trekker-([MSX][1234](?: Core)?)' + - regex: 'Trekker-([MSX][1-4]) Core' + model: 'Trekker-$1 Core' + - regex: 'Trekker-([MSX][1-4](?: Core)?)' model: 'Trekker-$1' + - regex: 'Core-T4' + device: 'tablet' + model: 'Core-T4' -# AllDocube (https://www.alldocube.com/) +# Crown +Crown: + regex: 'CROWN, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' + +# AllDocube (alldocube.com) AllDocube: - regex: '(?:T1001XS?|iPlay_20|U1006)(?:[);/ ]|$)' + regex: '(?:T1001XS?|T1006S?|T1001|iPlay_[234]0|U1006H?|U63PLUS|iPlay8|iPlay_?8T|iPlay[34]0|iPlay_40H|iPlay20S|kPad)(?:[);/ ]|$)' device: 'tablet' models: - regex: 'T1001XS(?:[);/ ]|$)' model: 'M5XS' + - regex: 'kPad(?:[);/ ]|$)' + model: 'kPad' + - regex: 'T1006S(?:[);/ ]|$)' + model: 'M5S' + - regex: 'T1006(?:[);/ ]|$)' + model: 'M5' - regex: 'T1001X(?:[);/ ]|$)' model: 'M5X' - - regex: 'U1006(?:[);/ ]|$)' + - regex: 'T1001(?:[);/ ]|$)' + model: 'Power M3' + - regex: 'U63PLUS(?:[);/ ]|$)' + model: 'U63 Plus' + - regex: 'U1006H?(?:[);/ ]|$)' model: 'iPlay 10 Pro 10.1"' - - regex: 'iPlay_20(?:[);/ ]|$)' - model: 'iPlay 20' + - regex: 'iPlay_?([234]0|8T?|40H|20s)(?:[);/ ]|$)' + model: 'iPlay $1' # Cube (short name Alldocube) Cube: - regex: '(<!myPhone ?)Cube|(U[0-9]+GT|K8GT)|(?:T8-PLUSM?S?|T8PLUSML|I1-TF[BD]?|I1-TC|i1002S|Iwork10 Flagship|iwork10 Pro)(?:[);/ ]|$)' + regex: '(<!myPhone ?)Cube|(U[0-9]+GT|K8GT)|(?:T8-PLUSM?S?|T8PLUSML|I1-TF[BD]?|I1-TC|i15-TG|i1002S|Iwork10 Flagship|iwork10 Pro)(?:[);/ ]|$)' device: 'tablet' models: - regex: 'U27GT' @@ -3654,6 +5255,8 @@ Cube: model: 'iWork 8 Air' - regex: 'I1-TC(?:[);/ ]|$)' model: 'iWork 8 Ultimate' + - regex: 'i15-TG(?:[);/ ]|$)' + model: 'iWork 10 Ultimate' - regex: '(?:i1002S|iwork10 Pro)(?:[);/ ]|$)' model: 'iWork 10 Pro' - regex: 'Iwork10 Flagship(?:[);/ ]|$)' @@ -3666,37 +5269,69 @@ Cube: - regex: '(K8GT)' model: '$1' +# Oculus (https://www.oculus.com/) +Oculus: + regex: '(?:Pacific|Quest).+OculusBrowser|Standalone HMD' + device: 'wearable' + models: + - regex: 'Pacific' + model: 'Go' + - regex: '(?:Quest 2|Standalone HMD)' + model: 'Quest 2' + - regex: 'Quest' + model: 'Quest' + # CUBOT CUBOT: - regex: 'CUBOT|RAINBOW 2|KING_KONG_3|KINGKONG_MINI|QUEST LITE' + regex: 'CUBOT|(?<!QUMO )QUEST(?!(?:[0-9]|\s[0-9]))(?: LITE)?|(?:(?<!(?:Redmi|Tegra) )NOTE 7|NOTE 20(?: PRO)?|RAINBOW 2|KING_KONG_3|KINGKONG [57]|KINGKONG 5 Pro|ZORRO 001|KINGKONG[_ ]MINI2?|KING KONG CS|R15_PRO|S550 Pro| CHEETAH| [RX]19|X19 S|(?<!MI )MAX 3)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'CHEETAH 2' - model: 'Cheetah 2' + - regex: 'CHEETAH( 2)?' + model: 'Cheetah$1' - regex: 'RAINBOW 2' model: 'Rainbow 2' - regex: 'RAINBOW' model: 'Rainbow' - regex: 'DINOSAUR' model: 'Dinosaur' + - regex: 'KINGKONG MINI2' + model: 'King Kong Mini 2' - regex: 'KINGKONG_MINI' model: 'King Kong Mini' - - regex: 'KING_KONG_3' - model: 'King Kong 3' + - regex: 'KINGKONG 5 Pro' + model: 'King Kong 5 Pro' + - regex: 'KING[_ ]?KONG[_ ]([357])' + model: 'King Kong $1' + - regex: 'KING KONG CS' + model: 'King Kong CS' - regex: 'KING KONG' model: 'King Kong' - regex: 'QUEST LITE' model: 'Quest Lite' + - regex: 'QUEST' + model: 'Quest' + - regex: 'ZORRO 001' + model: 'Zorro 001' - regex: 'CUBOT[ _]Echo' model: 'Echo' - regex: 'CUBOT[ _]MANITO' model: 'Manito' - regex: 'CUBOT[ _]MAGIC' model: 'Magic' + - regex: 'MAX 3' + model: 'Max 3' - regex: 'CUBOT[ _]MAX' model: 'Max' - regex: 'NOTE Plus' model: 'Note Plus' + - regex: 'NOTE 7' + model: 'Note 7' + - regex: 'NOTE 20 PRO' + model: 'Note 20 Pro' + - regex: 'NOTE 20' + model: 'Note 20' + - regex: '(R15|S550|J3)[_ ]PRO' + model: '$1 Pro' - regex: 'CUBOT[_ ]NOTE[_ ]S' model: 'Note S' - regex: 'CUBOT_NOVA' @@ -3705,7 +5340,9 @@ CUBOT: model: 'Power' - regex: 'CUBOT_X18_Plus' model: 'X18 Plus' - - regex: 'CUBOT[ _](A5|C6W|H3|J3|P7|P20|[RX]9|R11|X18)(?:[);/ ]|$)' + - regex: 'CUBOT[ _](A5|C6W|H3|J3|P7|P20|[RXJ]9|R11|X18)(?:[);/ ]|$)' + model: '$1' + - regex: ' (X19 S|[RX]19)(?:[);/ ]|$)' model: '$1' - regex: 'CUBOT ([^;/]+) Build' model: '$1' @@ -3734,7 +5371,7 @@ Clout: # Concord Concord: - regex: 'Concord[ _-]|Flyfix 6|C-721(?:[);/ ]|$)' + regex: 'Concord[ _-]|(?:Flyfix 6|C-721|Plus-7_C777|Plus_M19_C779|Plus-9_C778)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'M10' @@ -3744,6 +5381,9 @@ Concord: - regex: 'C-721' model: 'Flyfix Q' device: 'tablet' + - regex: 'Plus[-_]([79]|M19)_(C77[789])(?:[);/ ]|$)' + model: 'Plus-$1 $2' + device: 'tablet' # Crescent Crescent: @@ -3759,7 +5399,7 @@ Crescent: # Cyrus Cyrus: - regex: 'Cyrus[ _-]' + regex: 'Cyrus[ _-]|CyrusApel' device: 'smartphone' models: - regex: 'Cyrus[ _-]?([^;/)]+) Build' @@ -3787,26 +5427,43 @@ Datsun: - regex: 'Datsun_D5001' model: 'D5001' -# Danew +# Danew (danew.fr) Danew: - regex: 'Dslide ?([^;/]+) Build|Konnect_?(402|504|60[127])' + regex: 'Dslide ?([^;/]+) Build|Konnect_?(?:402|50[246]|60[1278])|GEODROID_A5|Dslide[ _]?(?:714|101[45]|1020|1013QC)' device: 'smartphone' models: - - regex: 'Konnect_?(402|504|60[127])' + - regex: 'Konnect_?(402|50[246]|60[1278])' model: 'Konnect $1' - regex: 'Dslide ?([^;/]+) Build' device: 'tablet' model: 'DSlide $1' + - regex: 'GEODROID_A5' + device: 'tablet' + model: 'Geodroid A5' + - regex: 'Dslide[ _]?(714|1013QC|101[45]|1020)' + device: 'tablet' + model: 'Dslide $1' + +# Dazen +Dazen: + regex: 'dazen' + device: 'smartphone' + models: + - regex: '6A' + model: '6A' -# Denver Electronics +# Denver Electronics (denver-electronics.com) Denver: - regex: '(?:TA[CDQ]-[0-9]+)|P(?:.+)TAQ-(?:[0-9]+)' + regex: '(?:TA[CDQ]-[0-9]+)|P(?:.+)TAQ-(?:[0-9]+)|SDQ[_-](?:550[24]4L|52001G|50002G|57004L)' device: 'tablet' models: - - regex: 'P(?:.+)TAQ-(10172MK3|10242MK2|70242MK2|[0-9]+)(?:[);/ ]|$)' + - regex: 'P(?:.+)TAQ-(10213GMK2|10172MK3|10242MK2|70242MK2|[0-9]+)(?:[);/ ]|$)' model: 'TAQ-$1' - regex: '(TA[CDQ]-[0-9]+)' model: '$1' + - regex: 'SDQ[_-](550[24]4L|52001G|50002G|57004L)' + device: 'smartphone' + model: 'SDQ-$1' # Dell Dell: @@ -3815,16 +5472,24 @@ Dell: models: - regex: 'XCD35' model: 'XCD35' - - regex: 'Venue (8 7840|10 7040)' + - regex: 'Venue ((?:10|[78]) [0-9]{4}|[78] HSPA\+)' model: 'Venue $1' device: 'tablet' - - regex: '(?:Dell )?Venue Build' + - regex: '(?:Dell )?Venue(?: Build|[);])' model: 'Venue' - regex: 'Dell; Venue Pro' model: 'Venue Pro' + + - regex: '(OptiPlex (?:3050|7010))' + device: 'desktop' + model: '$1' + - regex: '(?:Dell )?(Streak|Venue) ?([^/;]*) Build' model: '$1 $2' device: 'tablet' + - regex: '(?:Dell Inc./)?(XPS 13 9360|Latitude 7480)(?:[);/ ]|$)' + device: 'desktop' + model: '$1' - regex: 'Dell; ((?:Streak|Venue)[^;/\)]*)' model: '$1' device: 'tablet' @@ -3843,43 +5508,65 @@ Desay: - regex: 'Desay[ _-]?([^;/)]+)(?:[);/ ]|$)' model: '$1' -# DEXP +# DEXP (dexp.club) DEXP: - regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build|(SENIOR|F4[38]D8000K|VA[12]10|ML450|MS[56]50|BL[12]50|BS155|BS160|BS[1256]50|AL[12]40|AS260| (?:B450|B340))(?:[);/ ]|$)' + regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build|Larus_TV1|Ixion(?:ML4.7|ES250)|M150Storm|(?:SENIOR|F4[38]D8000K|VA(?:[12]10|170)|ML450|MS[56]50|BL(?:[123]50|160|155)|BS(?:155|160|[1256]50)|(?<!ILIUM )S(?:3[78]0|2[89]0|670)|AL(?:[12]40|[23]50)|AS(?:155|[123]60)| (?:N280i|P310|P380i?|R1[18]0|Q110|E1[78]0|E[12]10|B(?:450|340|35[05])|M445|T155|U43F8000Q|A(?:1[456]0|340|[34]55)|GS15[035]|GL[23]55|G25[05]|G15[05]|ES750|XL150|Z[1-4]55|H170|H310|P510|L2[17]0)|Z250|A440|N[13]80i|L3[17]0i|(?<!VOX )G450|G660|Q[123]10|Q[12]80|N[234]10|N[35]70|EX111)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Ixion[_ ]([^;/]+)(?: Build|\))' model: 'Ixion $1' - - regex: '(ML450|MS[56]50)(?:[);/ ]|$)' + - regex: '(ML450|MS[56]50|ES750|XL150)(?:[);/ ]|$)' model: 'Ixion $1' + - regex: 'IxionES250(?:[);/ ]|$)' + model: 'Ixion ES250 Rage' + - regex: 'IxionML4.7(?:[);/ ]|$)' + model: 'Ixion ML 4.7"' + - regex: 'M150Storm(?:[);/ ]|$)' + model: 'Ixion M150 Storm' + - regex: 'M445(?:[);/ ]|$)' + model: 'Ixion M445 Onyx 2' + - regex: 'AL250(?:[);/ ]|$)' + model: '4.5" AL250' + - regex: 'AL350(?:[);/ ]|$)' + model: '5.0" AL350' + - regex: 'AS155(?:[);/ ]|$)' + model: '5.45" AS155' - regex: 'AS260(?:[);/ ]|$)' model: '5.85" AS260' device: 'phablet' + - regex: 'AS360(?:[);/ ]|$)' + model: '6.22" AS360' + device: 'phablet' - - regex: 'Ursus ([^;/)]+)(?: Build|\))' + - regex: 'Ursus[ _]([^;/)]+)(?: Build|[);])' model: 'Ursus $1' device: 'tablet' - - regex: '(VA[21]10)(?:[);/ ]|$)' + - regex: '(VA[21]10|VA170|E210|R1[18]0|Q110|N280i|P380i?|P[35]10|S2[89]0|S3[78]0|S670|H170|H310|L2[17]0|N[13]80i|N[234]10|E1[178]0|Q[123]10|Q[12]80|EX111|N[35]70|L3[17]0i)(?:[);/ ]|$)' model: 'Ursus $1' device: 'tablet' - - regex: ' (B450|B340)(?:[);/ ]|$)' + - regex: '(G450)[ _](2021)' + model: '$1 ($2)' + - regex: ' (A440|A[34]55|B450|B340|B35[05]|BL155|BL160|A160|A340|T155|Z[1-4]55|G25[05]|Z250|G450|G660)(?:[);/ ]|$)' model: '$1' - regex: 'SENIOR(?:[);/ ]|$)' model: 'Senior' + - regex: 'Larus_TV1' + device: 'feature phone' + model: 'Larus_TV1' + - regex: 'H135[ _]Build' model: 'Atlas' device: 'desktop' - - regex: '(BL[12]50|BS155|BS160|BS[1256]50|AL[12]40)(?:[);/ ]|$)' + - regex: '(BL[123]50|BS155|BS160|BS[1256]50|AL[12]40|A1[45]0|GS15[035]|AS160|GL[23]55|G15[05])(?:[);/ ]|$)' model: '$1' - regex: 'DEXP[ _]([^;/]+) Build' model: '$1' - regex: 'DEXP[ _]([^);/]+)(?:[);/ ]|$)' model: '$1' - - regex: '(F4[38]D8000K)(?:[);/ ]|$)' + - regex: '(F4[38]D8000K|U43F8000Q)(?:[);/ ]|$)' device: 'tv' model: '$1' @@ -3891,7 +5578,7 @@ Dbtel: # Dialog Dialog: - regex: 'Dialog ?([^;/]+) Build' + regex: 'Dialog ?([^;/]+)(?: Build|[;)])' device: 'smartphone' model: '$1' @@ -3909,26 +5596,41 @@ Digi: # Digicel Digicel: - regex: 'DIGICEL' + regex: 'DIGICEL|DL3(?:PlusPro)?(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'DL3PlusPro' + model: 'DL3 Plus Pro' + - regex: 'DL3(?:[);/ ]|$)' + model: 'DL3' + - regex: 'DL755' + model: 'DL755' - regex: 'DL810' model: 'DL810' - regex: 'DIGICEL ([^/;]+) Build' model: '$1' +# Digihome +Digihome: + regex: 'DIGIHOME, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' + # Digiland Digiland: - regex: 'DL1008M' - device: 'smartphone' + regex: '(?:DL721-RB|DL(?:1023|1036|9002|[78]006|1008M)|Compumax Blue)(?:[);/ ]|$)' + device: 'tablet' models: - regex: 'DL1008M' - device: 'tablet' model: 'DL1008M' + - regex: 'DL(1023|1036|9002|[78]006|721-RB)' + model: 'DL$1' + - regex: '(Compumax Blue)' + model: '$1' # Digma Digma: - regex: 'Digma[_ ]([^;/]+) Build|HIT HT707[10]MG|CITI ATL 4G|CITI Octa 80|CITI 1902 3G|CITI Z530 3G|(CITI[_ ](?:[A-Z0-9]+)[_ ][34]G)[ _][TC][ST](11[459]4MG|1195MG|1196ML|3001ML|500[67]PG|7113PL|7193MG|8209MG|8139ML|8152ML|1050PL|8205PG|7203MG)|HIT 4G|HT7074ML|IDX5|(iDx10|iDx7)|MVM900H(?:WZ|C)|MVM908HCZ|(iDxD8 3G|iDxD10 3G|iDrQ10 3G|iDxD[45]|iDxQ5|iD[nx]D7(?:[_ ]3G)?)|PS604M|PT452E|LINX B510 3G LT5037MG|LINX A452 3G LT4030PG|LINX A453 3G LT4038PG|LINX A420 3G LS4019PG|LINX A450 3G LT4028PG|Linx A400 3G LT4001PG|Linx C500 3G LT5001PG|Linx PS474S|LS504[01]PL|LT40(47|54)MG|PS1043MG|LS405[01]MG|LS5053ML|LT5048MG|HT7071MG|LT5052ML|HT5035PG|HT4039PG|LT4049PG|NS6902QL|NS9797MG|TT1004PG|TT7025MG|((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)' + regex: 'Digma[_ ]([^;/]+) Build|HIT HT707[10]MG|CITI (?:7 E401 4G|8 E400 4G|ATL 4G|Kids|Octa [178]0|1902 3G|10 E402|Z530 3G)|(CITI[_ ](?:[A-Z0-9]+)[_ ][34]G)[ _][TC][ST](?:[0-9]{4}[PM][LG])|HIT 4G|HT7074ML|IDX5|(iDx10|iDx7)|MVM900H(?:WZ|C)|MVM908HCZ|(iDxD8 3G|iDxD10 3G|iDrQ10 3G|iDxD[45]|iDxQ5|iD[nx]D7(?:[_ ]3G)?)|PS604M|PT452E|Linx.+ [34]G L[TS][0-9]{4}[PM][GL]|Linx PS474S|PS1043MG|HT7071MG|HT5035PG|HT4039PG|NS6902QL|NS9797MG|TS7854M|TS1012E 3G|TT1004PG|TT702[045]MG|TT1002MG|TT7026MW|VRL42|((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)|DM-LED(?:43SR23|24SR20)' device: 'smartphone' models: - regex: 'HIT(?: 3G)? HT707[10]MG' @@ -3974,10 +5676,18 @@ Digma: model: 'CITI ATL 4G' - regex: '(CITI Z530 3G)' model: '$1' + - regex: '(CITI [A-Z0-9]+ [34]G) C[ST](?:606[32]ML|4024PG|5009PL|5021ML|502[56]PL)' + model: '$1' + - regex: 'TS7854M' + model: 'Plane 8.1" 3G' + device: 'tablet' - regex: 'PS1043MG' model: 'Plane 10.3" 3G' device: 'tablet' + - regex: 'TS1012E 3G' + model: 'Plane 10.1" 3G' + device: 'tablet' - regex: 'MVM900H(?:WZ|C)' model: 'iDx8' device: 'tablet' @@ -3994,13 +5704,10 @@ Digma: - regex: 'HIT 4G HT7074ML' model: 'HIT 4G' device: 'tablet' - - regex: '(CITI 1902 3G)' - model: '$1' - device: 'tablet' - - regex: '(CITI_8527_4G|CITI Octa 80)' - model: '$1' + - regex: 'CITI[_ ](1902 3G|Kids|8527_4G|Octa [178]0|10 E402 4G|8 E400 4G|7 E401 4G)' + model: 'CITI $1' device: 'tablet' - - regex: '(CITI[ _](?:[A-Z0-9]+)[ _][34]G)[ _][TC][ST](?:3001ML|500[67]PG|8209MG|11[459]4MG|1195MG|1196ML|3001ML|8152ML|1050PL|7113PL|7193MG|8205PG|7203MG)' + - regex: '(CITI[ _](?:[A-Z0-9]+)[ _][34]G)[ _][TC][ST](?:106[24]ML|111[46]ML|1115MG|1117PG|1207MG|1210MG|3001ML|500[67]PG|7052PG|706[567]MG|7097MG|720[48]MG|820[69]MG|11[459]4MG|1195MG|1196ML|3001ML|8152ML|1050PL|709[68]PL|7113PL|7193MG|7216MG|8205PG|7203MG|8143MG|7153MG|7141MG|7140ML)' model: '$1' device: 'tablet' - regex: 'iDxD8 3G' @@ -4018,21 +5725,49 @@ Digma: - regex: 'TT1004PG' model: 'Optima 10.4" 3G' device: 'tablet' + - regex: 'TT1002MG' + model: 'Optima D 10.4" 3G' + device: 'tablet' - regex: 'TT7025MG' model: 'Optima 7.5" 3G' device: 'tablet' - - regex: '((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.STNM]+|Prime)(?:[ _][43]G)?)' + - regex: 'TT7026MW' + model: 'Optima 7.6" 3G' + device: 'tablet' + - regex: 'TT7020MG' + model: 'Optima 7.3" 3G' + device: 'tablet' + - regex: 'TT7024MG' + model: 'Optima 7.4" 3G' + device: 'tablet' + - regex: 'Optima ([0-9]+ [AXZ][0-9]+S?) ([43])G' + model: 'Optima $1 $2G' + device: 'tablet' + - regex: 'Optima ([0-9]+ A500S) 3G' + model: 'Optima $1 3G' + device: 'tablet' + - regex: '((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.STNMEV]+|Prime)(?:[ _][43]G)?)' model: '$1' device: 'tablet' - regex: 'Digma[_ ]([^;/]+) Build' model: '$1' device: 'tablet' + # VR headset + - regex: 'VRL42(?:[);/ ]|$)' + device: 'wearable' + model: 'VR L42' + # TV models + - regex: 'DM-LED(\d+SR\d+)(?:[);/ ]|$)' + device: 'tv' + model: 'DM-LED$1' # DoCoMo DoCoMo: regex: 'DoCoMo|\;FOMA|KGT/1\.0' device: 'feature phone' models: + - regex: 'DoCoMo/.+MST.+(SH2101V)' + model: '$1' - regex: 'DoCoMo/[12]\.0[/ ]([a-z0-9]+)' model: '$1' - regex: '([a-z0-9]+)(?:_W)?\;FOMA' @@ -4042,29 +5777,62 @@ DoCoMo: # Doogee Doogee: - regex: 'DOOGEE[ _-]|Valencia2_Y100_?(?:pro|plus)|Y100_Plus|X5max(?:[_ ]PRO)?|(KISSME|BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)(?:[);/ ]|$)|BL[579]000(?:[);/ ]|$)|BL12000|BL5500[_ ]Lite|X9 Mini|LEO_DG280|Y9Plus|Hitman_DG850' + regex: 'DOOGEE[/ _-]|Valencia2_Y100(?:_?(?:pro|plus))?|Y100_Plus|X5max(?:[_ ]PRO)?|Shoot_[12]|x5_doogee|(KISSME|BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)(?:[);/ ]|$)|(?:BL12000|BL5500[_ ]Lite|X9 Mini|LEO_DG280|Y9Plus|Y8 Plus|Hitman_DG850|S(?:[568]8|9[0567]|59|40|86)Pro|X9[56]Pro|S[478]0Lite|S88Plus|BL[579]000|N[24]0Pro|(?<!Lenovo )S90C|Ibiza_F2|S55_Lite|S60 ?Lite|Iron-bone DG750|X10S|X[56]0L|MIX2|Y6 Max|Y6_Piano(?:_black)?|X[679]pro)(?:[);/ ]|$)' device: 'smartphone' models: - regex: '(?:Valencia2_)?Y100_Plus(?:[);/ ]|$)' model: 'Valencia2 Y100 Plus' - regex: 'Valencia2_Y100pro' model: 'Valencia2 Y100 Pro' + - regex: 'Valencia2_Y100(?:[);/ ]|$)' + model: 'Valencia2 Y100' - regex: 'LEO_(DG280)' model: 'Leo $1' - - regex: '(BL[579]000)(?:[);/ ]|$)' - model: '$1' + - regex: 'Iron-bone (DG750)' + model: 'Iron Bone $1' + - regex: '(BL[579]000|S90C|X10S|X[56]0L)(?:[);/ ]|$)' + model: '$1' + - regex: 'X(9[56])Pro(?:[);/ ]|$)' + model: 'X$1 Pro' + - regex: 'N([24]0)Pro(?:[);/ ]|$)' + model: 'N$1 Pro' - regex: 'BL12000 PRO' model: 'BL12000 Pro' - regex: 'BL5500[_ ]Lite' model: 'BL5500 Lite' - regex: 'BL12000' model: 'BL12000' + - regex: 'S([568]8|9[0567]|59|40|86)Pro' + model: 'S$1 Pro' + - regex: 'S(88)Plus' + model: 'S$1 Plus' + - regex: 'S([4-8]0|55)[_ ]?Lite' + model: 'S$1 Lite' - regex: 'KISSME-DG580' model: 'Kissme DG580' - regex: 'Hitman_DG850' model: 'Hitman DG580' - regex: 'X9 Mini' model: 'X9 Mini' + - regex: 'x5_doogee' + model: 'X5' + - regex: 'Doogee X5MP' + model: 'X5 Max Pro' + - regex: 'Shoot_([12])' + model: 'Shoot $1' + - regex: 'Ibiza_F2' + model: 'Ibiza F2' + - regex: 'Y6_Piano_black' + model: 'Y6 Piano Black' + - regex: 'Y6_Piano' + model: 'Y6 Piano' + - regex: 'Y6 Max 3D' + model: 'Y6 Max 3D' + - regex: 'Y6 Max' + model: 'Y6 Max' + - regex: 'X([679])pro' + model: 'X$1 Pro' + - regex: '(X5max(?:[_ ]PRO)?)' model: '$1' - regex: '(?:DOOGEE[ _-])?(BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|Valencia2_Y100pro|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)(?:[);/ ]|$)' @@ -4073,8 +5841,10 @@ Doogee: model: '$1' - regex: 'DOOGEE[ _-]([^);/]+)(?:[);/ ]|$)' model: '$1' - - regex: 'Y9Plus(?:[);/ ]|$)' - model: 'Y9 Plus' + - regex: 'Y([89]) ?Plus(?:[);/ ]|$)' + model: 'Y$1 Plus' + - regex: 'MIX2(?:[);/ ]|$)' + model: 'Mix 2' # Doov Doov: @@ -4092,11 +5862,25 @@ Dopod: device: 'feature phone' model: '$1' -# Doro +# Doppio +Doppio: + regex: 'Doppio ' + device: 'smartphone' + models: + - regex: 'Doppio DP355(?:[);/ ]|$)' + model: 'DP355' + - regex: 'Doppio ([0-9a-z]+)' + model: '$1' + +# Doro (doro.com) Doro: - regex: 'Doro' + regex: 'Doro|DSB-02[23]0' device: 'smartphone' models: + - regex: 'DSB-0230(?:[);/ ]|$)' + model: '8050' + - regex: 'DSB-0220(?:[);/ ]|$)' + model: '8080' - regex: 'Doro[ _-]?([^;/)]+) Build' model: '$1' - regex: 'Doro[ _-]([0-9a-z]+)' @@ -4104,9 +5888,11 @@ Doro: # Dune HD 'Dune HD': - regex: 'DuneHD' + regex: 'DuneHD|SOLO 4K(?:[);/ ]|$)' device: 'tv' models: + - regex: 'SOLO 4K(?:[);/ ]|$)' + model: 'Solo 4k' - regex: 'DuneHD/\d.\d \([a-z]+__([a-z0-9_-]+);' model: '$1' - regex: 'DuneHD/\d.\d \(([a-z0-9_-]+);' @@ -4114,25 +5900,30 @@ Doro: # DNS DNS: - regex: '(?:DNS|AirTab)[ _\-]([^;/)]+)(?: Build|\))|(?:S4505M|SD01M)(?:[);/ ]|$)' + regex: '(?:DNS|AirTab)[ _\-]([^;/)]+)|(?:S4505M|S4004M|SD01M)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: '(?:DNS[_ ])?(S4505M|SD01M|S4502|S4003|S4003)(?:[);/ ]|$)' + - regex: '(?:DNS[_ ])?(S4505M|S4004M|SD01M|S4502|S4003|S4003)(?:[);/ ]|$)' model: '$1' - - regex: 'AirTab[ _\-]([^;/]+)Build' + - regex: 'S-4003(?:[);/ ]|$)' + model: 'S4003' + - regex: 'AirTab[ _\-]([^;/]+)(?: Build|[);])' model: 'AirTab $1' device: 'tablet' - - regex: 'DNS[ _\-]([^;/]+)Build' + - regex: 'DNS[ _\-]([^;/]+)(?: Build|[);])' model: '$1' -# E-Boda +# E-Boda (e-boda.ro) E-Boda: - regex: 'E-Boda|Eclipse_(?:G400M|G500)' + regex: 'E-Boda|Eclipse_(?:G400M|G500)|Revo R77 GPS' device: 'smartphone' models: - regex: 'E-Boda ((?:Revo|Izzycomm|Essential|Intelligence|Supreme)[^/;]+) Build' device: 'tablet' model: '$1' + - regex: 'Revo R77 GPS' + device: 'tablet' + model: 'Revo R77 GPS' - regex: 'Eclipse_(G400M|G500)' model: 'Eclipse $1' - regex: 'E-Boda ([^/;]+) Build' @@ -4140,13 +5931,13 @@ E-Boda: # Easypix Easypix: - regex: 'EasyPad|EasyPhone' + regex: 'EasyPad|(?<!INOI )EasyPhone' device: 'smartphone' models: - regex: '(EasyPhone[^/;]+) Build' model: '$1' - - regex: '(EasyPad[^/;]+) Build' - model: '$1' + - regex: 'EasyPad ([^/;)]+)(?: Build|[;)])' + model: 'EasyPad $1' device: 'tablet' # Ebest @@ -4159,29 +5950,37 @@ EBEST: - regex: 'EBEST[ _-]?([^;/)]+)(?:[);/ ]|$)' model: '$1' +# Horizont (https://horizont.by/en/) +Horizont: + regex: 'Horizont (32LE7011D)' + device: 'tv' + model: '$1' + # Echo Mobiles Echo Mobiles: - regex: 'ECHO[ _](HOLI|HORIZON|MAX|MOSS|NOTE|POWER|SMART|DUNE|JAVA)|HORIZON_M' + regex: 'ECHO[ _](HOLI|HORIZON|MAX|MOSS|NOTE|POWER|SMART|DUNE|JAVA|FUSION)|HORIZON_M|Stellar 3G|FEELING' device: 'smartphone' models: - regex: 'ECHO_HORIZON_LITE' model: 'HORIZON Lite' - - regex: '(HORIZON_M)(?:[);/ ]|$)' + - regex: '(HORIZON_M|FEELING)(?:[);/ ]|$)' model: '$1' + - regex: 'STELLAR 3G' + model: 'STELLAR 3G' - regex: 'ECHO_SMART_4G' model: 'SMART 4G' - - regex: 'ECHO[ _](HOLI|MAX|MOSS|NOTE|POWER|SMART|DUNE|JAVA)' + - regex: 'ECHO[ _](HOLI|MAX|MOSS|NOTE|POWER|SMART|DUNE|JAVA|FUSION)' model: '$1' # ECS ECS: - regex: '(?:TA10CA3|TM105A?|TR10CS1)(?:[);/ ]|$)' + regex: '(?:TA10CA3|TM105A?|TR10[CR]S1|TF10EA2)(?:[);/ ]|$)' device: 'tablet' models: - regex: 'TA10CA3(?:[);/ ]|$)' model: 'TA10CA3' - - regex: 'TR10CS1(?:[);/ ]|$)' - model: 'TR10CS1' + - regex: '(TR10[CR]S1|TF10EA2)(?:[);/ ]|$)' + model: '$1' - regex: 'TM105A(?:[);/ ]|$)' model: 'TM105A' - regex: 'TM105(?:[);/ ]|$)' @@ -4189,11 +5988,27 @@ ECS: # EE EE: - regex: 'Hawk_from_EE' + regex: '(?:Harrier(?: Tab)?|Hawk|Rook)[_ ]from[_ ]EE' device: 'smartphone' models: - - regex: 'Hawk_from_EE' - model: 'Hawk' + - regex: '(Harrier Tab)[_ ]from[_ ]EE' + device: 'tablet' + model: '$1' + - regex: 'Rook[_ ]from[_ ]EE' + model: 'Rock' + - regex: '(Harrier|Hawk)[_ ]from[_ ]EE' + model: '$1' + +# EKT +EKT: + regex: 'EK-(?:5040|5336|5540|5937|6020|8680|MII|T7020)' + device: 'tablet' + models: + - regex: 'EK-(MII|T7020)' + model: 'EK-$1' + - regex: 'EK-(5040|5336|5540|5937|6020|8680)' + device: 'smartphone' + model: 'EK-$1' # Eks Mobility Eks Mobility: @@ -4207,21 +6022,40 @@ Eks Mobility: # Elephone Elephone: - regex: 'Elephone|P6000( ?Pro| ?Plus|\+| ?02)? Build' + regex: 'Elephone|Vowney(?: Lite)?|P6000(?!_Plus)( ?Pro| ?Plus|\+| ?02| 5.0 01)?|Soldier|(?:Trunk 1|P8_3D|P8_Max|A6_mini|Android 9.+ PX|PX_Pro| U3H)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Elephone Trunk(?:[);/ ]|$)' + - regex: '(?:Elephone[_ ])?Trunk(?: 1)?(?:[);/ ]|$)' model: 'Trunk' + - regex: 'Vowney Lite(?:[);/ ]|$)' + model: 'Vowney Lite' + - regex: 'Vowney(?:[);/ ]|$)' + model: 'Vowney' - regex: 'P6000(\+| ?Plus)(?:[);/ ]|$)' model: 'P6000 Plus' - regex: 'P6000 02(?:[);/ ]|$)' model: 'P6000 02' + - regex: 'P6000 5.0 01(?:[);/ ]|$)' + model: 'P6000 01' - regex: 'P6000 ?Pro(?:[);/ ]|$)' model: 'P6000 Pro' - - regex: '(?:Elephone[ _])?(P[68]000|S2)(?:[);/ ]|$)' + - regex: 'Soldier(?:[);/ ]|$)' + model: 'Soldier' + - regex: 'A6_mini(?:[);/ ]|$)' + model: 'A6 Mini' + - regex: 'PX_Pro(?:[);/ ]|$)' + model: 'PX Pro' + - regex: ' U3H(?:[);/ ]|$)' + model: 'U3H' + - regex: 'Android 9.+ PX(?:[);/ ]|$)' + model: 'PX' + - regex: '(P8_3D|P8_Max)(?:[);/ ]|$)' + model: '$1' + - regex: '(?:Elephone[ _])?(P[768]000|S2)(?:[);/ ]|$)' model: '$1' - - regex: 'Elephone[ _\-]([^/;]+) Build' + - regex: 'Elephone[ _\-]([^/;]+)(?: Build|[;)])' model: '$1' + # Element Element: regex: 'AFTRS' @@ -4234,12 +6068,6 @@ Elenberg: device: 'tablet' model: '$1' -# Energy Sistem -'Energy Sistem': - regex: 'ENERGY[ _-]?([^;/]+) Build' - device: 'tablet' - model: '$1' - # Ericy Ericy: regex: 'Ericy-([a-z0-9]+)' @@ -4264,16 +6092,18 @@ E-tel: # Evercoss Evercoss: - regex: 'EVERCOSS[ _]|(A75A\*|U50A_PLUS|M50 STAR)(?:[);/ ]|$)' + regex: 'EVERCOSS[ _]|(A75A\*|U50A_PLUS|M50 STAR|A75 MAX)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'A75A\*(?:[);/ ]|$)' model: 'A75A Star' + - regex: 'A75 MAX*(?:[);/ ]|$)' + model: 'A75 Max' - regex: 'U50A_PLUS(?:[);/ ]|$)' model: 'U50A Plus' - regex: 'M50 STAR(?:[);/ ]|$)' model: 'M50 Star' - - regex: 'EVERCOSS[ _](A7[BRLZ]|A65|A74A)(?:[);/ ]|$)' + - regex: 'EVERCOSS[ _](A7[BRLZ]|A65|A74A|A5Z)(?:[);/ ]|$)' model: '$1' # Eurostar @@ -4299,13 +6129,28 @@ Eton: # Essentielb Essentielb: - regex: '(?:Wooze[_ ](?:I55?|L|XL)|HEYOU[135])(?:[);/ ]|$)' + regex: '(?:Wooze[_ ]?(?:I55?|I45|X?L)|HEYOU(?:[135]|30))(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'HEYOU([135])(?:[);/ ]|$)' + - regex: 'HEYOU([135]|30)(?:[);/ ]|$)' model: 'HEYou $1' - - regex: '(Wooze[_ ](?:I55?|L|XL))(?:[);/ ]|$)' - model: '$1' + - regex: 'Wooze[_ ]?((?:I55?|I45|X?L))(?:[);/ ]|$)' + model: 'Wooze $1' + +# Facebook +Facebook: + regex: 'PortalTV' + device: 'tv' + model: 'Portal TV' + +# Gateway +Gateway: + regex: 'GWAT8-1' + device: 'smartphone' + models: + - regex: 'GWAT8-1' + device: 'tablet' + model: 'Tablet 8"' # Rikomagic Rikomagic: @@ -4319,23 +6164,34 @@ Rinno: device: 'smartphone' model: '$1' -# Riviera +# Riviera (www.riviera.com.ec) Riviera: - regex: 'RIVIERA ' + regex: 'RIVIERA[ _]' device: 'smartphone' models: - - regex: 'F23' - model: 'F23' + - regex: 'RIVIERA[ _](F23|U963)' + model: '$1' # Senseit Senseit: - regex: 'SENSEIT[ _]?([^;/)]+)( Build|\))' - device: 'smartphone' - model: '$1' + regex: 'SENSEIT[ _]?([^;/)]+)( Build|\))' + device: 'smartphone' + model: '$1' + +# SunWind (sunwind.ru.com) +SUNWIND: + regex: 'SUNWIND[_ ]|SUN[-_]LED\d+|(?:SKY 9 [EA]\d+ 3G)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'SKY ([79]) ([EA]\d+) 3G' + model: 'Sky $1 $2 3G' + - regex: 'SUN[-_]LED(\d+\w\d+)' + device: 'tv' + model: 'SUN-LED$1' # Sony & Sony Ericsson (combined as they are mixed up) Sony: - regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|(?:[4-9]0[12])SO|C1[569]0[45]|C2[01]0[45]|C230[45]|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5316|D5322|D5503|D58[03]3|D65(?:0[23]|43|63)|D66[03458]3|D66[14]6|D6708|E(?:20[0345]3|2006|210[45]|2115|2124|230[36]|2312|23[356]3|530[36]|53[3456]3|5506|55[356]3|56[46305][36]|58[02]3|65[35]3|66[0358]3|68[358]3)|I[34]312|I4332|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3416|G342[136]|G823[12]|G834[123]|G8[14]4[12]|H(?:3113|3123|3133|3213|3223|3311|3321|4113|4133|4213|4233|4311|4331|4413|4433|82[167]6|83[12]4|8416|9436)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|W960|portalmmm/2\.0 K|S3[69]h|SOG01|SOL2[246]|SOV3[1-9]|SOV4[0-3]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[345]D|[234]E|[1-5]F|[1-5]G|[1-4]H|[1-4]J|[1-5]K|1M|[1-3]L)|R800[aix]|J82[17]0|J9110|J92[16]0|J81[17]0|I[34]113|I3[12]23|I42[19]3|H9493|H8296|H8166|H4493|LiveWithWalkman|BRAVIA|SGP771|E3 Dual|A001SO|I4193|E6508|SOT31|SO-[45]1A|XQ-AD51|XQ-AU52' + regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|(?:[4-9]0[12])SO|C1[569]0[45]|C2[01]0[45]|C230[45]|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D(?:200[45]|21(?:0[45]|14)|22(?:0[236]|12|43)|230[2356]|240[36]|2502|2533|510[236]|530[36]|5316|5322|5503|58[03]3|65(?:0[23]|43|63)|66[03458]3|66[14]6|6708)|E(?:20[0345]3|2006|210[45]|2115|2124|230[36]|2312|23[356]3|530[36]|53[3456]3|5506|55[356]3|56[46305][36]|58[02]3|6508|65[35]3|66[0358]3|68[358]3)|F(?:311[12356]|331[13]|321[12356]|5[13]21|5122|813[12]|833[12])|G(?:2299|312[135]|311[26]|322[136]|3212|331[123]|3412|3416|342[136]|823[12]|834[123]|8[14]4[12]|8188)|H(?:3113|3123|3133|3213|3223|3311|3321|4113|4133|4213|4233|4311|4331|4413|4433|4493|8116|8166|82[1679]6|83[12]4|8416|9436|9493)|I(?:3[12]23|3213|[34]113|[34]312|4193|42[19]3|4332)|J(?:3173|3273|81[17]0|82[17]0|91[15]0|92[16]0)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|XQ-[A-Z]{2}[0-9]{2}|W960|portalmmm/2\.0 K|S3[69]h|SOG0[1-5]|SOL2[2-6]|SOT31|SOV3[1-9]|SOV4[0-3]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[2-5]D|[1-4]E|[1-5]F|[1-5]G|[1-4]H|[1-4]J|[1-5]K|1M|[1-3]L)|R800[aix]|LiveWithWalkman|BRAVIA|SGP771|E3 Dual|A[01]01SO|A102SO|SO-[45]1[AB]|SO-5[23][AB]|A103SO|A002SO|NW-(A100|Z1000)Series|NSZ-GS7|SmartWatch 3|SVP-DTV15' device: 'smartphone' models: # SONY ERICSSON: explicit smartphone models @@ -4465,22 +6321,42 @@ Sony: device: 'feature phone' # SONY: explicit smartphone models + - regex: 'SO-01E(?:[);/ ]|$)' + model: 'Xperia AX' + - regex: 'XQ-BE[4-7]2' + model: 'Xperia Pro I' - regex: 'SO-04F' model: 'Xperia A2' + - regex: 'SO-02D' + model: 'Xperia NX' + - regex: 'G2299' + model: 'Xperia R1 Plus' - regex: 'SO-04G' model: 'Xperia A4' - regex: '(?:Sony(?:Ericsson)?)?I(?:4113|31[12]3)' model: 'Xperia 10' - - regex: '(?:A001SO|XQ-AU52|SO-41A|SOV43)(?:[);/ ]|$)' + - regex: '(?:Sony(?:Ericsson)?)?J3173(?:[);/ ]|$)' + model: 'Xperia Ace' + - regex: 'SO-41B(?:[);/ ]|$)' + model: 'Xperia Ace II' + - regex: '(?:A001SO|XQ-AU42|XQ-AU51|XQ-A[TU]52|SO-41A|SOV43)(?:[);/ ]|$)' model: 'Xperia 10 II' - - regex: '(?:Sony(?:Ericsson)?)?I(?:42[19]3|3223)' + - regex: '(?:A10[12]SO|SO-52B|SOG04|XQ-BT52)(?:[);/ ]|$)' + model: 'Xperia 10 III' + - regex: 'XQ-BT44(?:[);/ ]|$)' + model: 'Xperia 10 III Lite' + - regex: '(?:Sony(?:Ericsson)?)?I(?:42[19]3|32[12]3)' model: 'Xperia 10 Plus' - regex: '(?:Sony(?:Ericsson)?)?I4193' model: 'Xperia 10 Dual' - regex: '(?:Sony(?:Ericsson)?)?(?:J(?:9110|81[17]0)|SOV40|SO-03L|802SO)' model: 'Xperia 1' - - regex: '(?:Sony(?:Ericsson)?)?(?:SOG01|SO-51A)(?:[);/ ]|$)' + - regex: '(?:Sony(?:Ericsson)?)?(?:J9150)' + model: 'Xperia 1 Professional Edition' + - regex: '(?:Sony(?:Ericsson)?)?(?:SOG01|SO-51A|XQ-AT42|XQ-AT51|SO51Aa|XQ-AT72)(?:[);/ ]|$)' model: 'Xperia 1 II' + - regex: '(?:Sony(?:Ericsson)?)?(?:SO-51B|SOG03|XQ-BC[457]2)(?:[);/ ]|$)' + model: 'Xperia 1 III' - regex: '(?:Sony(?:Ericsson)?)?LT22i|Xperia P' model: 'Xperia P' - regex: '(?:Sony(?:Ericsson)?)?LT25i|Xperia V' @@ -4489,8 +6365,14 @@ Sony: model: 'Xperia 5 Dual' - regex: '(?:Sony(?:Ericsson)?)?(?:J82[17]0|SO-01M|SOV41|901SO)' model: 'Xperia 5' + - regex: '(?:Sony(?:Ericsson)?)?(?:SOG02|A002SO|XQ-AS[4567]2|SO-52A)' + model: 'Xperia 5 II' + - regex: '(?:Sony(?:Ericsson)?)?(?:SO-53B|A103SO|SOG05|XQ-BQ72)' + model: 'Xperia 5 III' - regex: '(?:Sony(?:Ericsson)?)?(?:SOV42|902SO)' model: 'Xperia 8' + - regex: '(?:Sony(?:Ericsson)?)?J3273' + model: 'Xperia 8 Lite' - regex: '(?:Sony(?:Ericsson)?)?LT26ii' model: 'Xperia SL' - regex: '(?:Sony(?:Ericsson)?)?LT26i|Xperia S(?:[);/ ]|$)' @@ -4519,6 +6401,8 @@ Sony: model: 'Xperia U' - regex: '(?:Sony(?:Ericsson)?)?SOL22' model: 'Xperia UL' + - regex: '(?:Sony(?:Ericsson)?)?SOL21' + model: 'Xperia VL' - regex: '(?:Sony(?:Ericsson)?)?ST26[ia]' model: 'Xperia J' - regex: '(?:Sony(?:Ericsson)?)?ST27[ia]' @@ -4545,13 +6429,13 @@ Sony: model: 'Xperia ZR' - regex: '(?:Sony(?:Ericsson)?)?C650[236]|Xperia ZL(?:[);/ ]|$)' model: 'Xperia ZL' + - regex: '(?:Sony(?:Ericsson)?)?SOL25(?:[);/ ]|$)' + model: 'Xperia ZL2' - regex: '(?:Sony(?:Ericsson)?)?(?:C66(?:0[236]|16)|SO-02E)' model: 'Xperia Z' - regex: '(?:Sony(?:Ericsson)?)?(?:C68(?:0[26]|[34]3)|XL39H|SOL24)|Xperia Z Ultra(?:[);/ ]|$)' device: 'phablet' model: 'Xperia Z Ultra' - - regex: '(?:Sony(?:Ericsson)?)?(?:C69(?:0[236]|16|43)|L39H|SO-0[12]F)' - model: 'Xperia Z1' - regex: 'Xperia Z(?:[);/ ]|$)' model: 'Xperia Z' - regex: '(?:Sony(?:Ericsson)?)?D200[45]' @@ -4572,7 +6456,7 @@ Sony: model: 'Xperia L3' - regex: 'I43[13]2' model: 'Xperia L3 Dual' - - regex: 'XQ-AD51' + - regex: 'XQ-AD5[12]' model: 'Xperia L4' - regex: '(?:Sony(?:Ericsson)?)?D2302' model: 'Xperia M2 Dual' @@ -4610,16 +6494,21 @@ Sony: device: 'phablet' - regex: '(?:Sony(?:Ericsson)?)?D5503|Xperia Z1 Compact' model: 'Xperia Z1 Compact' - - regex: '(?:Sony(?:Ericsson)?)?(?:D58[03]3|SO-02G)' + - regex: '(?:Sony(?:Ericsson)?)?(?:C69(?:0[236]|16|43)|SOL23|L39H|SO-0[12]F)|Xperia Z1(?:[);/ ]|$)' + model: 'Xperia Z1' + - regex: '(?:Sony(?:Ericsson)?)?(?:D58[03]3|SO-02G)|Xperia Z3 Compact(?:[);/ ]|$)' model: 'Xperia Z3 Compact' - - regex: '(?:Sony(?:Ericsson)?)?(?:D65(?:0[23]|43)|SO-03F)' - model: 'Xperia Z2' - regex: 'Xperia Z2 Tablet Wifi' model: 'Xperia Z2 Tablet WiFi' device: 'tablet' + - regex: 'SGP561' + model: 'Xperia Z2 Tablet' + device: 'tablet' + - regex: '(?:Sony(?:Ericsson)?)?(?:D65(?:0[23]|43)|SO-03F)|Xperia Z2(?:[);/ ]|$)' + model: 'Xperia Z2' - regex: 'D6563' model: 'Xperia Z2a' - - regex: '(?:Sony(?:Ericsson)?)?(?:D66[045]3|D66[14]6|SO-01G|SOL26|401SO)' + - regex: '(?:Sony(?:Ericsson)?)?(?:D66[045]3|D66[14]6|SO-01G|SOL26|401SO)|Xperia Z3(?:[);/ ]|$)' model: 'Xperia Z3' - regex: '(?:Sony(?:Ericsson)?)?(?:D6633|D6683)' model: 'Xperia Z3 Dual' @@ -4680,7 +6569,7 @@ Sony: model: 'Xperia XA2 Ultra' - regex: '(?:Sony(?:Ericsson)?)?G823[12]|SOV35|602SO|SO-03J' model: 'Xperia XZs' - - regex: '(?:Sony(?:Ericsson)?)?G814[12]|SO-04[JK]' + - regex: '(?:Sony(?:Ericsson)?)?(?:G814[12]|G8188|SO-04[JK])' model: 'Xperia XZ Premium' - regex: '(?:Sony(?:Ericsson)?)?(?:H83[12]4|H82[17]6|SOV37|SO-03K|H8296|702SO)' model: 'Xperia XZ2' @@ -4688,7 +6577,7 @@ Sony: model: 'Xperia XZ2 Dual' - regex: 'SO-05K' model: 'Xperia XZ2 Compact' - - regex: '(?:H8166|SOV38)(?:[);/ ]|$)' + - regex: '(?:H81[16]6|SOV38)(?:[);/ ]|$)' model: 'Xperia XZ2 Premium Dual' - regex: '(?:Sony(?:Ericsson)?)?(?:H(8416|9436|9493)|SO-01L|SOV39|801SO)' model: 'Xperia XZ3' @@ -4714,7 +6603,7 @@ Sony: model: 'Xperia X Performance Dual' # SONY: explicit tablet models - - regex: 'SGP(?:311|312|321)(?:[);/ ]|$)|SO-03E' + - regex: '(?:SGP(?:311|312|321)|(Sony)?SO-03E|Tablet Z LTE)(?:[);/ ]|$)' model: 'Xperia Tablet Z' device: 'tablet' - regex: 'SGP712(?:[);/ ]|$)' @@ -4730,15 +6619,39 @@ Sony: model: 'Xperia Tablet S' device: 'tablet' - # SONY: Bravia - - regex: '(?:BRAVIA )(2K GB ATV3|4K UR2|4K GB ATV3|4K GB|4K 2015|2015)(?:[);/ ]|$)' + # SONY: explicit wearable models + - regex: 'SmartWatch 3' + model: 'SmartWatch 3' + device: 'wearable' + + # SONY: Bravia or TV Box + - regex: '(?:BRAVIA )(2K GB ATV3|4K UR[23]|4K GB ATV3|4K GB|4K 2015|2015)(?:[);/ ]|$)' model: 'Bravia $1' device: 'tv' + - regex: 'SVP-DTV15(?:[);/ ]|$)' + model: 'Bravia 4K (2015)' + device: 'tv' + - regex: '(NSZ-GS7)(?:[);/ ]|$)' + model: '$1' + device: 'tv' + - regex: 'Sony-BRAVIA-VH1(?:[);/ ]|$)' + model: 'Bravia VH1' + device: 'tv' + + - regex: 'NW-A100Series' + model: 'Walkman A100' + device: 'portable media player' + - regex: 'NW-Z1000Series' + model: 'Walkman Z1000' + device: 'portable media player' # general detections - regex: 'SonyBDP|SonyDBV' model: 'Blu-ray Player' device: 'tv' + - regex: 'BDP2015' + model: 'Blu-ray Player (2015)' + device: 'tv' - regex: '(?:Sony-)?(KDL?-?[0-9a-z]+)' model: '$1' device: 'tv' @@ -4754,6 +6667,9 @@ Sony: - regex: 'portalmmm/2.0 K([a-z0-9]+)' model: 'K$1' brand: 'Sony Ericsson' + - regex: 'SonyEricsson ?IS11S' + model: 'arco IS11S' + brand: 'Sony Ericsson' - regex: 'Sony ?Ericsson?([^/;]*) Build' model: '$1' brand: 'Sony Ericsson' @@ -4764,6 +6680,9 @@ Sony: - regex: 'Sony ?Ericsson ?([a-z0-9\-]+)' model: '$1' brand: 'Sony Ericsson' + - regex: 'Sony Corporation/([^/;]*)\)' + model: '$1' + device: 'desktop' - regex: 'Sony (Tablet[^/;]*) Build' model: '$1' @@ -4774,8 +6693,12 @@ Sony: - regex: 'Xperia ([^/;]*Tablet[^/;]*) Build' model: 'Xperia $1' device: 'tablet' + - regex: 'Xperia ([^;/]+) \(AOSP\) Build' + model: 'Xperia $1' - regex: 'Xperia ([^;/]+) Build' model: 'Xperia $1' + - regex: '(XQ-[A-Z]{2}[0-9]{2})' + model: '$1' - regex: 'Sony[ -]?([^/;]*) Build' model: '$1' - regex: 'Sony[ -]?([a-z0-9\-]+)' @@ -4846,8 +6769,15 @@ Ergo: - regex: 'ERGO[_ ]Tab[ _]Hero[ _]II' model: 'Tab Hero II' device: 'tablet' + - regex: 'ERGO[_ ](B700)' + model: 'Tab $1' + device: 'tablet' -# Ericsson + - regex: 'ERGO SmartBox SX' + model: 'SmartBox SX' + device: 'tv' + +# Ericsson Ericsson: regex: '(?:Ericsson(?:/ )?[a-z0-9]+)|(?:R380 2.0 WAP1.1)' device: 'feature phone' @@ -4857,9 +6787,9 @@ Ericsson: - regex: 'R380 2.0 WAP1.1' model: 'R380' -# Energizer +# Energizer (www.energizeyourdevice.com) Energizer: - regex: 'PowerMax|ENERGY[_ ]?(?:[45]00|400S|S[56]00|E520)(?:[_ ]LTE)?' + regex: 'PowerMax|HARDCASEH550S|ENERGY[_ ]?(?:[45]00|400S|S[56]00|E12|E5[02]0S?)(?:[_ ](?:LTE|EU))?' device: 'smartphone' models: - regex: 'PowerMax(P[0-9]+S?)' @@ -4872,6 +6802,21 @@ Energizer: model: 'Energy 400' - regex: 'ENERGY[_ ]S([56]00)' model: 'Energy S$1' + - regex: 'ENERGY[_ ]?(E500S|E500|E12)' + model: 'Energy $1' + - regex: 'HARDCASE(H550S)' + model: 'Hard Case $1' + +# Energy Sistem +'Energy Sistem': + regex: 'ENERGY[ _-]?([^;/]+) Build|Energy Phone Pro 3' + device: 'smartphone' + models: + - regex: 'Energy Phone Pro 3' + model: 'Energy Phone Pro 3' + - regex: 'ENERGY[ _-]?([^;/]+) Build' + device: 'tablet' + model: '$1' # eTouch eTouch: @@ -4903,12 +6848,16 @@ Storex: # Evertek Evertek: - regex: '(Ever(?:Glory|Shine|Miracle|Mellow|Classic|Trendy|Fancy|Vivid|Slim|Glow|Magic|Smart|Star)[^/;]*) Build|E70[25]0HD|E805[01]HD|E9054HD|E8050HG|E7914HG' + regex: '(Ever(?:Glory|Shine|Miracle|Mellow|Classic|Trendy|Fancy|Vivid|Slim|Glow|Magic|Smart|Star)[^/;]*) Build|E70[25]0HD|E805[01]HD|E9054HD|E8050HG|E7914HG|V5_Nano|EverMiracle Plus' device: 'smartphone' models: - regex: '(E70[25]0HD|E805[01]HD|E9054HD|E8050HG|E7914HG)' device: 'tablet' model: 'Everpad $1' + - regex: 'V5_Nano' + model: 'V5 Nano' + - regex: 'EverMiracle Plus' + model: 'EverMiracle Plus' - regex: '(Ever(?:Glory|Shine|Miracle|Mellow|Classic|Trendy|Fancy|Vivid|Slim|Glow|Magic|Smart|Star)[^/;]*) Build' model: '$1' @@ -4926,64 +6875,73 @@ Evolio: # Evolveo Evolveo: - regex: 'EVOLVEO' + regex: 'EVOLVEO|StrongPhone' device: 'smartphone' models: + - regex: 'EVOLVEO MultiMedia Box M4' + device: 'tv' + model: 'MultiMedia Box M4' - regex: 'Smart TV ([^;/]*) Build' device: 'tv' model: 'Smart TV $1' - - regex: 'EVOLVEO StrongPhone G([248])' + - regex: 'EVOLVEO StrongPhone G(\d)' model: 'StrongPhone G$1' + - regex: '(?:EVOLVEO[ _])?StrongPhone[ _]?Q([679])(_LTE)?' + model: 'StrongPhone Q$1$2' - regex: 'EVOLVEO[ _]([^;/]*) Build' model: '$1' -# Explay -Explay: - regex: 'Explay|ActiveD[ _]|Atlant |Informer[ _][0-9]+|CinemaTV 3G|Surfer[ _][0-9\.]|sQuad[ _][0-9\.]|Onliner[1-3]|RioPlay|Leader|Infinityll|Imperium[78]' - device: 'tablet' +# Evoo +Evoo: + regex: 'EVM4G3(?:[);/ ]|$)' + device: 'smartphone' models: - - regex: 'ActiveD[ _]7.4[ _]3G' - model: 'ActiveD 7.4 3G' - - regex: 'Imperium([78])(?:[);/ ]|$)' - model: 'Imperium $1 3G' - - regex: 'ActiveD[ _]8.2[ _]3G' - model: 'ActiveD 8.2 3G' - - regex: 'CinemaTV[ _]3G' - model: 'CinemaTV 3G' - - regex: 'Infinityll' - model: 'Infinity II' - - regex: 'Informer[ _]([0-9]+(?:[ _]3G)?)' - model: 'Informer $1' - - regex: 'Surfer[ _]([0-9\.]+(?:[ _]3G)?)' - model: 'Surfer $1' - - regex: 'sQuad[ _]([0-9\.]+(?:[ _]3G)?)' - model: 'sQuad $1' - - regex: 'Onliner([1-3])' - model: 'Onliner $1' - - regex: 'Atlant(?:[);/ ]|$)' - device: 'smartphone' - model: 'Atlant' - - regex: 'Explay[ _-]([^;/]+) Build' - model: '$1' - - regex: 'Explay[ _-]([^;/]+)(?:[;/)]|$)' - model: '$1' - - regex: '(RioPlay)(?:[);/ ]|$)' - device: 'smartphone' - model: 'Rio Play' - - regex: 'Leader' - model: 'Leader' + - regex: 'EVM4G3(?:[);/ ]|$)' + model: 'EVM4G3' + +# Leotec +Leotec: + regex: '(LESPH501[14]|LESPH5003B|SUPERNOVA (?:Qi16|Qi32|i3G96[X]?|iS3G)|PULSAR QI3G)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'LESPH5011' + model: 'Argon e250' + - regex: 'LESPH5003B' + model: 'Argon A250B' + - regex: 'LESPH5014' + model: 'Krypton K150' + - regex: 'SUPERNOVA (Qi16|Qi32|i3G96[X]?|iS3G)' + device: 'tablet' + model: 'Supernova $1' + - regex: 'PULSAR (QI3G)' + device: 'tablet' + model: 'Pulsar $1' + +# EVPAD (https://www.evpadpro.com/) +EVPAD: + regex: 'EVBOX-PLUS\+' + device: 'tv' + models: + - regex: 'EVBOX-PLUS\+' + model: 'EVBox Plus' # EvroMedia EvroMedia: - regex: 'EVROMEDIA|Playpad[ _]' + regex: 'EVROMEDIA|Playpad[ _]|PLAY_PAD_PRO_XL|3G NOTE XL' device: 'tablet' models: - regex: 'Playpad 3G GOO' model: 'Play Pad 3G Goo' + - regex: 'Play Pad 3G 2Goo' + model: 'Play Pad 3G 2Goo' - regex: 'Play Pad PRO' model: 'Play Pad Pro' + - regex: 'PLAY_PAD_PRO_XL' + model: 'Play Pad Pro XL' - regex: 'PlayPad 3GTab XL' model: 'Play Pad 3G Tab XL' + - regex: '3G NOTE XL' + model: 'Play Pad 3G Note XL' # EKO EKO: regex: 'EKO' @@ -4996,11 +6954,19 @@ EKO: # Extrem Extrem: - regex: 'Rock X9+' + regex: 'Rock X9+|ROCK_X11' device: 'smartphone' models: - regex: 'Rock X9+' model: 'Rock X9+' + - regex: 'ROCK_X11' + model: 'Rock X11' + +# Jumper (jumper.com.ru) +Jumper: + regex: 'EZpad ([^;/)]+)(?: Build|[;)])' + device: 'tablet' + model: 'EZpad $1' # Ezze Ezze: @@ -5020,10 +6986,10 @@ Ezio: # Forstar Forstar: - regex: 'Amosta 3G5' + regex: 'Amosta ?3G5' device: 'smartphone' models: - - regex: 'Amosta 3G5' + - regex: 'Amosta ?3G5' model: 'Amosta 3G5' # Foxconn @@ -5047,9 +7013,9 @@ Fondi: - regex: 'Fondi[- _]([^;/)]+)' model: '$1' -# Fairphone +# Fairphone (fairphone.com) Fairphone: - regex: '(FP(?:1U?|2))(?:[);/ ]|$)' + regex: ' (FP(?:1U?|[23]))(?:[);/ ]|$)' device: 'smartphone' model: '$1' @@ -5059,9 +7025,9 @@ Famoco: device: 'smartphone' model: '$1' -# FiGO +# FiGO (figoglobal.com) FiGO: - regex: 'ATRIUM II F55L2|TRIO F40LT|EPIC F50G|Gravity X55L|Orion M50L|ULTRA M50G|M405B|VIRTUE3|F55L Build' + regex: 'ATRIUM II F55L2|TRIO F40LT|CENTRIC S50G|EPIC F50G|Gravity X55L|Orion M50L|ULTRA M50G|UltraJ8|M405B|VIRTUE3|F55L Build|Orbit_ll' device: 'smartphone' models: - regex: 'ATRIUM II F55L2' @@ -5082,6 +7048,12 @@ FiGO: model: 'Virtue II' - regex: 'VIRTUE3' model: 'Virtue III' + - regex: 'CENTRIC S50G' + model: 'Centric S50G' + - regex: 'UltraJ8' + model: 'Ultra J8' + - regex: 'Orbit_ll' + model: 'Orbit II' # FNB FNB: @@ -5101,15 +7073,17 @@ FNB: # Fujitsu Fujitsu: - regex: '(?:F-01[FHJKL]|F-02[EFGHLK]|F-03[DEFGH]|F-04[EGKJ]|F-05[DEFJ]|F-06E|F-07[DE]|F-08D|F-09[DE]|F-10D|F-[45]1A|F-11D|F-12C|M532|FARTM933KZ|901FJ|arrows(?:M03|M04-PREMIUM)|801FJ)(?:[);/ ]|$)' + regex: '(?:F-01[FHJKLM]|F-02[EFGHLK]|F-03[DEFGKHL]|F-04[EGFHKJ]|F-05[DEFJG]|F-06[EF]|F-07[DE]|F-08D|F-09[DE]|F-10D|F-[45]1A|F-41B|F-[45]2A|F-11D|F-12C|F-51B|M532|FARTM933KZ|901FJ|arrows(?:RX|M03|M0[45](?:-PREMIUM)?)|801FJ|FJL2[12]|RM02|FCG01)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'F-51A(?:[);/ ]|$)' model: 'Arrows 5G F-51A' - regex: 'F-01F(?:[);/ ]|$)' model: 'Arrows NX F-01F' - - regex: 'F-01L(?:[);/ ]|$)' - model: 'Easy Phone F-01L' + - regex: '(F-01[LM]|F-06F|F-03K|F-42A)(?:[);/ ]|$)' + model: 'Easy Phone $1' + - regex: 'F-03L(?:[);/ ]|$)' + model: 'Arrows Phone F-03L' - regex: 'F-01J(?:[);/ ]|$)' model: 'Arrows NX F-01J' - regex: 'F-01K(?:[);/ ]|$)' @@ -5120,8 +7094,14 @@ Fujitsu: model: 'Arrows X F-02E' - regex: 'F-02G(?:[);/ ]|$)' model: 'Arrows NX F-02G' + - regex: 'FJL21(?:[);/ ]|$)' + model: 'Arrows EF FJL21' + - regex: 'FJL22(?:[);/ ]|$)' + model: 'Arrows Z FJL22' - regex: 'F-02H(?:[);/ ]|$)' model: 'Arrows NX F-02H' + - regex: 'F-52A(?:[);/ ]|$)' + model: 'Arrows NX9 F-52A' - regex: 'F-03D(?:[);/ ]|$)' model: 'Arrows Kiss F-03D' - regex: 'F-03E(?:[);/ ]|$)' @@ -5142,16 +7122,22 @@ Fujitsu: model: 'Arrows NX F-05F' - regex: 'F-05J(?:[);/ ]|$)' model: 'Arrows Be F-05J' + - regex: 'F-05G(?:[);/ ]|$)' + model: 'Arrows K-tai' - regex: 'F-04K(?:[);/ ]|$)' model: 'Arrows Be F-04K' - regex: 'F-02L(?:[);/ ]|$)' model: 'Arrows Be 3 F-02L' - regex: 'F-41A(?:[);/ ]|$)' model: 'Arrows Be 4 F-41A' + - regex: 'F-41B(?:[);/ ]|$)' + model: 'Arrows Be 4 Plus F-41B' - regex: 'F-06E(?:[);/ ]|$)' model: 'Arrows NX F-06E' - regex: 'F-07D(?:[);/ ]|$)' model: 'Arrows μ F-07D' + - regex: '(?:F-51B|FCG01)(?:[);/ ]|$)' + model: 'Arrows We' - regex: '801FJ(?:[);/ ]|$)' model: 'Arrows U 801FJ' - regex: 'F-07E(?:[);/ ]|$)' @@ -5168,24 +7154,21 @@ Fujitsu: model: 'Arrows Me F-11D' - regex: 'F-12C(?:[);/ ]|$)' model: 'F-12C' - - regex: 'F-04J(?:[);/ ]|$)' - model: 'F-04J' + - regex: '(F-04[JF])(?:[);/ ]|$)' + model: '$1' - regex: 'arrowsM03(?:[);/ ]|$)' model: 'Arrows M03' + - regex: 'RM02(?:[);/ ]|$)' + model: 'Arrows RM02' + - regex: 'arrowsRX(?:[);/ ]|$)' + model: 'Arrows RX' - regex: 'arrowsM04-PREMIUM(?:[);/ ]|$)' model: 'Arrows M04 Premium' + - regex: 'arrowsM(0[45])(?:[);/ ]|$)' + model: 'Arrows M$1' - - regex: 'F-02F(?:[);/ ]|$)' - model: 'Arrows Tab F-02F' - device: 'tablet' - - regex: 'F-02K(?:[);/ ]|$)' - model: 'Arrows Tab F-02K' - device: 'tablet' - - regex: 'F-03G(?:[);/ ]|$)' - model: 'Arrows Tab F-03G' - device: 'tablet' - - regex: 'F-05E(?:[);/ ]|$)' - model: 'Arrows Tab F-05E' + - regex: '(F-0[32]F|F-03G|F-04H|F-05E|F-02K)(?:[);/ ]|$)' + model: 'Arrows Tab $1' device: 'tablet' - regex: 'FARTM933KZ' model: 'Arrows Tab M504/HA4' @@ -5214,19 +7197,40 @@ Gemini: device: 'tablet' model: '$1' -# General Mobile +# General Mobile (www.generalmobile.com) General Mobile: - regex: 'GM 5 Plus|GM8 go|GM 8 d|GM 8' + regex: 'GM 5 Plus|GM8 go|GM [568] d|GM 8|General Mobile 4G|GM 9 (?:Pro|Plus)|(?:e-tab 20|Android 1.+ (?:G[35]01|G[35]10|(?<!Huawei )G700))(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'GM 5 Plus' model: 'GM 5 Plus' - - regex: 'GM 8 d' - model: 'GM 8D' + - regex: 'G310' + model: 'GM 21' + - regex: 'G510' + model: 'GM 21 Plus' + - regex: 'G700' + model: 'GM 21 Pro' + - regex: 'G301' + model: 'GM 20' + - regex: 'G501' + model: 'GM 20 Pro' + - regex: 'GM (\d+) d' + model: 'GM $1D' - regex: 'GM 8' model: 'GM 8' - regex: 'GM8 go' model: 'GM 8 Go' + - regex: 'GM 9 Pro' + model: 'GM 9 Pro' + - regex: 'GM 9 Plus' + model: 'GM 9 Plus' + - regex: 'General Mobile 4G Dual' + model: '4G Dual' + - regex: 'General Mobile 4G' + model: '4G' + - regex: 'e-tab 20(?:[);/ ]|$)' + device: 'tablet' + model: 'E-Tab 20' # Geotel Geotel: @@ -5237,33 +7241,26 @@ Geotel: model: 'G1' - regex: 'GEOTEL[ _]?Note' model: 'Note' - -# Ghia -Ghia: - regex: 'GHIA|QS702' - device: 'smartphone' - models: - - regex: 'QS702' - model: 'QS702' - - regex: 'GHIA_ZEUS_3G' - model: 'Zeus 3G' - - regex: 'GHIA_AXIS7' - model: 'Axis 7' - device: 'tablet' + - regex: 'GEOTEL[ _]AMIGO' + model: 'Amigo' # Gigabyte Gigabyte: - regex: 'GSmart[ _][a-z0-9 ]+(?: Build|\))|Gigabyte-[a-z0-9]+' + regex: 'GSmart[ _][a-z0-9 ]+(?: Build|\))|Gigabyte-[a-z0-9]+|Simba SX1|GSmart_Classic_Lite|(?<!Eagle )Classic[_ ](?:Joy|Pro)' device: 'smartphone' models: - - regex: '(GSmart[ _][a-z0-9 ]+)(?: Build|\))' + - regex: '(GSmart[ _][a-z0-9 ]+)(?: Build|[);])' model: '$1' - regex: 'Gigabyte-([a-z0-9]+)' model: '$1' + - regex: '(Classic[ _](?:Joy|Pro)|GSmart_Classic_Lite)' + model: '$1' + - regex: 'Simba SX1' + model: 'GSmart Simba SX1' # Gigaset Gigaset: - regex: 'Gigaset|(?:GS5[357]-6|GS[23]70(?:_Plus)?)(?:[);/ ]|$)' + regex: 'Gigaset|(?: GX290|GS80|GS1[0189]0|GS1[89]5|GS2[89]0|GS5[357]-6|GS[23]70(?:_Plus)?|E940-2795-00)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Gigaset QV(1030|830)' @@ -5272,12 +7269,16 @@ Gigaset: - regex: 'G(S[23]70)[_ ]Plus(?:[);/ ]|$)' model: 'G$1 Plus' - - regex: 'GS([23]70)(?:[);/ ]|$)' + - regex: 'GS([23]70|1[0189]0|1[89]5|2[89]0|80)(?:[);/ ]|$)' model: 'GS$1' + - regex: '(GX290)(?:[);/ ]|$)' + model: '$1' - regex: 'GS57-6' model: 'ME Pro' - regex: 'GS55-6' model: 'ME' + - regex: 'E940-2795-00' + model: 'GS4' - regex: 'GS53-6' model: 'ME Pure' @@ -5288,39 +7289,51 @@ Gigaset: # Ginzzu Ginzzu: - regex: 'GINZZU[_ ]|((?:RS(?:7[14]|81|9[67])D)|S50[45]0|S5120|RS(6[12]|9[45])D|S40[23]0|RS850[12]|RS9602)(?:[);/ ]|$)' + regex: 'GINZZU[_ ]|((?:RS(?:7[14]|81|9[67])D)|S5002|(?<!Wave Pro )S5021|S5230|S50[45]0|S51[24]0|RS(6[12]|9[45])D|S40[23]0|RS850[12]|RS9602)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'GINZZU[_ ]?(S40[17]0|S4710|ST6040|ST6120)' + - regex: 'GINZZU[_ ]?(S40[17]0|S4710|ST60[14]0|ST6120)' model: '$1' - - regex: 'GINZZU[_ ]?(GT-(?:1050|7105|70[1-4]0|7115|7210|[WX]831|X770|7810|8[01]10))' + - regex: 'GINZZU[_ ]?(GT-(?:1050|7105|70[1-4]0|7115|7210|[WX]831|X[78]70|7810|8[01]10|X853|X890))' model: '$1' device: 'tablet' - regex: '(RS6[12]D) ULTIMATE' model: '$1 Ultimate' - - regex: '(?:GINZZU[ _])?((?:RS(?:7[14]|81|9[4-7])D)|S50[45]0|S5120|S40[23]0|RS850[12]|RS9602|RS94D)(?:[);/ ]|$)' + - regex: '(?:GINZZU[ _])?((?:RS(?:7[14]|81|9[14-7]|7)D)|S50[45]0|S5002|S5021|S5230|S51[24]0|S40[23]0|RS850[12]|RS9602|RS94D|R8 Dual)(?:[);/ ]|$)' model: '$1' # Gionee Gionee: - regex: '(?:GIO-)?GIONEE[ _-]?[a-z0-9]+|(?:Dream_D1|V188S?|GN[0-9]{3,4}[a-z]?)(?:[);/ ]|$)|F103(?: Pro)? Build|P5 mini Build|P7 Max Build|(M7 Power|F106L|F100A|F103S)(?:[);/ ]|$)' + regex: '(?:GIO-)?GIONEE[ _-]?[a-z0-9]+|(?:Dream_D1|V188S?|GN[0-9]{3,4}[a-z]?)(?:[);/ ]|$)|F103(?: Pro)?(?: Build|\))|P5 mini Build|P7 Max Build|(M7 Power|F106L|F100A|F103S|F103 Pro|M6 mirror|20190620G)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'GN810(?:[);/ ]|$)' model: 'GN810' device: 'phablet' + - regex: 'GN8003L' + model: 'M6L' + - regex: 'GN8003' + model: 'M6' - regex: 'GN([0-9]{3,4}[a-z]?)(?:[);/ ]|$)' model: 'GN$1' - regex: '(F106L|F100A|V188S|V188|F103S)(?:[);/ ]|$)' model: '$1' - - regex: 'F103( Pro)? Build' - model: 'F103$1' - regex: 'M7 Power(?:[);/ ]|$)' model: 'M7 Power' + - regex: '20190620G(?:[);/ ]|$)' + model: 'M11' - regex: 'P5 mini Build' model: 'P5 mini' - regex: 'P7 Max Build' model: 'P7 Max' + - regex: '(S11|F205|S10) Lite(?:[);/ ]|$)' + model: '$1 Lite' + - regex: 'M6 mirror(?:[);/ ]|$)' + model: 'M6 Mirror' + - regex: 'F9 Plus(?:[);/ ]|$)' + model: 'F9 Plus' + - regex: 'F103( Pro)?( BUILD|\))' + model: 'F103$1' - regex: '(?:(?:GIO-)?GIONEE[ _-])?Dream_D1(?:[);/ ]|$)' model: 'Dream D1' - regex: '(?:GIO-)?GIONEE[ _-]([a-z0-9_-]+).*Android' @@ -5337,20 +7350,24 @@ Grape: device: 'smartphone' model: 'GTM-5$1' -# Vizio +# Vizio (vizio.com) Vizio: - regex: 'Vizio|VAP430|VTAB1008' + regex: 'Vizio|(?:VAP430|VTAB1008|XR6[PM]10)(?:[);/ ]|$)' device: 'tv' models: - regex: 'VAP430' model: 'VAP430' - - regex: 'VTAB1008' + - regex: 'ISV-B11' + model: 'ISV-B11' + - regex: 'D50u-D1' + model: 'D50u-D1' + - regex: '(VTAB1008|XR6[PM]10)' device: 'tablet' - model: 'VTAB1008' + model: '$1' -# GOCLEVER +# GOCLEVER (goclever.com) GOCLEVER: - regex: 'GOCLEVER|QUANTUM_[0-9]{3}|QUANTUM [0-9]{1}|QUANTUM 700N|QUANTUM_(1010N|1010M|900)|ARIES|INSIGNIA|ORION_|ELIPSO|LIBRA[ _]97' + regex: 'GOCLEVER|QUANTUM_(?:[235]_)?[0-9]{3}|QUANTUM [0-9]{1}|QUANTUM 700N|Quantum2 500|QUANTUM_(1010N|1010M|900|II_500_N)|ARIES|INSIGNIA|ORION_|ELIPSO|LIBRA[ _]97' device: 'smartphone' models: - regex: 'QUANTUM_(1010N|1010M|900)' @@ -5365,8 +7382,29 @@ GOCLEVER: - regex: 'TQ700N' model: 'QUANTUM 700N' device: 'tablet' + - regex: 'QUANTUM_1010_Lite' + model: 'Quantum 1010 Lite' + device: 'tablet' + - regex: 'QUANTUM_2_(1010|700|960)_Mobile' + model: 'Quantum 2 $1 Mobile' + device: 'tablet' + - regex: 'QUANTUM_([235])_(5[05]0)_RUGGED' + model: 'Quantum $1 $2 Rugged' + - regex: 'QUANTUM_(\d+)_RUGGED_PRO' + model: 'Quantum $1 Rugged Pro' + - regex: 'QUANTUM[_ ]([235])_([45]00)[_ ]LITE' + model: 'Quantum $1 $2 Lite' + - regex: 'QUANTUM_II_500_N' + model: 'Quantum 2 500 N' + - regex: 'QUANTUM[_ ]([45]00)[_ ]LITE' + model: 'Quantum $1 Lite' + - regex: 'QUANTUM[ _]?([235])[ _]([^;/]+)(?: Build|[);])' + model: 'Quantum $1 $2' - regex: '((?:QUANTUM|ARIES|INSIGNIA|ORION|ELIPSO)[ _-]?[^;/]+)(?: Build|\))' model: '$1' + - regex: 'NETBOOK R103' + device: 'desktop' + model: 'Netbook R103' - regex: 'GOCLEVER[ _-]TAB[ _-]?([^;/]+) Build' model: 'TAB $1' device: 'tablet' @@ -5396,6 +7434,71 @@ GoMobile: - regex: 'GO([0-9]{3,4})' model: 'Go$1' +# Explay +Explay: + regex: 'Explay|[\w]+-EXPLAY-FIN|ActiveD[ _]|Atlant |Informer[ _][0-9]+|CinemaTV 3G|Surfer[ _][0-9\.]|sQuad[ _][0-9\.]|Onliner[1-4]|RioPlay|Leader|Pulsar|Infinityll|Joy_TV|Imperium[78]|Winner[78]|Indigo|Lagoon|Tornado(?! 348)(?:3G)?|Onyx(?!_[A-Z]{1,2})' + device: 'tablet' + models: + - regex: 'ActiveD[ _]7.4[ _]3G' + model: 'ActiveD 7.4 3G' + - regex: 'Imperium([78])(?:[);/ ]|$)' + model: 'Imperium $1 3G' + - regex: 'ActiveD[ _]8.2[ _]3G' + model: 'ActiveD 8.2 3G' + - regex: 'CinemaTV[ _]3G' + model: 'CinemaTV 3G' + - regex: 'Infinityll' + model: 'Infinity II' + - regex: 'Informer[ _]([0-9]+(?:[ _]3G)?)' + model: 'Informer $1' + - regex: 'Surfer[ _]([0-9\.]+(?:[ _]3G)?)' + model: 'Surfer $1' + - regex: 'sQuad[ _]([0-9\.]+(?:[ _]3G)?)' + model: 'sQuad $1' + - regex: 'Onliner([1-4])' + model: 'Onliner $1' + - regex: 'Winner([78])' + model: 'Winner $1' + - regex: 'Atlant(?:[);/ ]|$)' + device: 'smartphone' + model: 'Atlant' + - regex: 'Indigo(?:[);/ ]|$)' + device: 'smartphone' + model: 'Indigo' + - regex: 'Pulsar(?:[);/ ]|$)' + device: 'smartphone' + model: 'Pulsar' + - regex: 'Tornado(?:3G)?(?:[);/ ]|$)' + device: 'smartphone' + model: 'Tornado 3G' + - regex: 'Onyx(?:[);/ ]|$)' + device: 'smartphone' + model: 'Onyx' + - regex: 'Joy_TV(?:[);/ ]|$)' + device: 'smartphone' + model: 'JoyTV' + - regex: '[\w]+-EXPLAY-FIN' + device: 'feature phone' + model: 'Fin' + + - regex: 'Lagoon(?:[);/ ]|$)' + model: 'Lagoon' + - regex: 'Explay[ _-]([^;/]+)(?: Build|[;)])' + model: '$1' + - regex: 'RioPlay(?:[);/ ]|$)' + device: 'smartphone' + model: 'Rio Play' + - regex: 'Leader' + model: 'Leader' + +# Gol Mobile (gol-mobile.com) +Gol Mobile: + regex: 'F10_PRIME' + device: 'smartphone' + models: + - regex: 'F10_PRIME' + model: 'F10 Prime' + # Goly Goly: regex: 'Goly[ _-]' @@ -5408,13 +7511,15 @@ Goly: # Google Google: - regex: 'Nexus|GoogleTV|Glass(?<!Browser)|CrKey[^a-z0-9]|Pixel(?: Build|\))|Pixel (?:XL|C|[2-4]|[2-4] XL)|Google 2XL|G011A' + regex: 'Nexus(?! 6P)|GoogleTV|Google Fiber|Google Pixel|Glass(?<!Browser)|CrKey[^a-z0-9]|(?:Pixel|sailfish|taimen|blueline|Chromecast)(?: Build|[)])|Pixel (?:XL|C|[2-6]|[2-4] XL)|Google 2XL|G011A|AOSP on (?:HammerHead|Manta)' device: 'smartphone' models: - regex: 'Glass' model: 'Glass' - regex: 'Galaxy Nexus' model: 'Galaxy Nexus' + - regex: 'AOSP on HammerHead' + model: 'Nexus 5' - regex: '(Nexus (?:S|4|5X?|One))' model: '$1' - regex: '(Nexus (?:6P?))' @@ -5423,39 +7528,61 @@ Google: - regex: '(Nexus (?:7|9|10))' device: 'tablet' model: '$1' + - regex: 'AOSP on Manta' + device: 'tablet' + model: 'Nexus 10' + - regex: 'Pixel Slate' + device: 'tablet' + model: 'Pixel Slate' + # explicit tv models + - regex: '(GFHD[12]00)' + device: 'tv' + model: 'Fiber $1' - regex: 'CrKey[^a-z0-9]' model: 'Chromecast' device: 'tv' + - regex: 'Chromecast' + model: 'Chromecast (2020)' + device: 'tv' - regex: 'GoogleTV' device: 'tv' model: 'GoogleTV' - - regex: 'Pixel(?: Build|\))' + # explicit smartphone models + - regex: '(?:Pixel|sailfish)(?: Build|[)])' model: 'Pixel' - regex: 'Pixel XL' model: 'Pixel XL' + - regex: 'blueline' + model: 'Pixel 3' - regex: 'Pixel 3 XL' model: 'Pixel 3 XL' - - regex: 'Pixel 2 XL' + - regex: 'Pixel 2 XL|taimen' model: 'Pixel 2 XL' - regex: 'Pixel 3a XL' model: 'Pixel 3a XL' - regex: 'Pixel 3a' model: 'Pixel 3a' - - regex: 'Pixel 3' - model: 'Pixel 3' - regex: 'Pixel 4 XL' model: 'Pixel 4 XL' - - regex: 'pixel 4a' - model: 'Pixel 4a' - - regex: 'pixel 4' - model: 'Pixel 4' - - regex: 'Pixel 2|G011A' + - regex: 'Pixel 4a \(5G\)' + model: 'Pixel 4a (5G)' + - regex: 'pixel ([45])a' + model: 'Pixel $1a' + - regex: 'G011A' model: 'Pixel 2' - regex: 'Google 2XL' model: 'Pixel 2 XL' + - regex: 'Pixel 6 Pro' + model: 'Pixel 6 Pro' + - regex: 'pixel ([2-6])' + model: 'Pixel $1' + - regex: 'Pixel C' device: 'tablet' model: 'Pixel C' + - regex: 'Nexus Player' + device: 'tv' + model: 'Nexus Player' # Gradiente Gradiente: @@ -5486,36 +7613,81 @@ Grundig: - regex: 'AFTEU011' model: 'Vision 6 HD (2019)' -# Hafury +# Gtel (https://gtel.co.zw/) +Gtel: + regex: 'Gtel[ _]' + device: 'smartphone' + models: + - regex: 'Infinity 8s(?:[);/ ]|$)' + model: 'Infinity 8s' + - regex: 'Infinity 9(?:[);/ ]|$)' + model: 'Infinity 9' + +# H96 (https://www.h96tvbox.com/) +H96: + regex: 'H96[ _]' + device: 'tv' + models: + - regex: 'Max RK3318(?:[);/ ]|$)' + model: 'Max RK3318' + - regex: 'Max X2(?:[);/ ]|$)' + model: 'Max X2' + - regex: 'Max(?:[);/ ]|$)' + model: 'Max' + +# Hafury (hafury.com) Hafury: - regex: 'HAFURY' + regex: 'HAFURY|GT20(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'GT20(?:[);/ ]|$)' + model: 'GT20' - regex: '(MIX|UMAX)' model: '$1' -# Haier +# Haier (www.haier.com) Haier: - regex: 'Haier|I6_Infinity|Titan[ _]T[13]|(?:HW-)?W(?:716|757|860|970)(?:[);/ ]|$)|S5 Silk|(?:HM-)?(N505|N700|G(?:152|303|353|552|70[01])?-FL|HM-N501-FL|G(?:303)?-W|I(?:557)?-FL)|(?:PAD[ _](D71|G781|d85))' + regex: 'Haier|(?:M53-52401|I6_Infinity|Titan[ _]T[135]|(?:HW-)?W(?:71[67]|757|86[07]|970)|S5 Silk|(?:HM-)?(N505|N700|G(?:152|303|353|552|70[01])?-FL|HM-(?:I559|N50[15]|I560|G553|N70[01])-FL|HR-V101|G(?:303)?-W|I(?:557)?-FL)|(?:PAD[ _](?:D71|G781|d85))|A2_Lite_NFC|A4_Lite|HL810G)(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'A2_Lite_NFC' + model: 'Alpha A2 Lite NFC' + - regex: 'A4_Lite' + model: 'Alpha A4 Lite' - regex: 'HM-N505-FL' model: 'I8' - regex: 'S5 Silk' model: 'S5 Silk' - regex: 'HM-N700-FL' model: 'L7' + - regex: 'HM-N701-FL' + model: 'L8' - regex: 'HM-N501-FL' model: 'L56' + - regex: 'HM-I559-FL' + model: 'L55s' + - regex: 'HM-I560-FL' + model: 'G7s' + - regex: 'HM-G553-FL' + model: 'G51' - regex: '(?:HM-)?(G(?:152|353|552|70[01])|G(?:303)|I(?:557))' model: '$1' - - regex: '(Titan[_ ]T[13]|I6_Infinity)' + - regex: '(Titan[_ ]T[135]|I6_Infinity)' model: '$1' - - regex: '(?:HW-)?W(716|757|860|970)(?:[);/ ]|$)' + - regex: '(?:HW-)?W(71[67]|757|86[07]|970)(?:[);/ ]|$)' model: 'W$1' - regex: 'PAD[ -_](D71|G781|d85)' device: 'tablet' model: '$1' + - regex: '(HL810G|HR-V101|M53-52401)' + device: 'tablet' + model: '$1' + - regex: 'haierATVnippori' + device: 'tv' + model: '2K Android TV' + - regex: 'haierATV' + device: 'tv' + model: 'Android TV' - regex: 'Haier[ _\-](H[WT]-[^/;]+) Build' model: '$1' - regex: 'Haier[ _\-](H[WT]-[a-z0-9_\-]+)' @@ -5556,15 +7728,18 @@ Hasee: - regex: 'Hasee ([^;/)]+)(?:[);/ ]|$)' model: '$1' -# Hisense +# Hisense (www.hisense-usa.com) Hisense: - regex: '(?:HS-)?Hisense ([^;/]+) Build|Hisense [^);/]+|HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\-]*|E270BSA|HITV300C|M470BS[AE]|E2281|EG680|I46D1G|HAT4KDTV|HLTE([237]00T|200M|203T|202N|21[023567]T|22[67]T|22[13]E|310[TM]|31[16]T|500T|501N|510[TM]|7[23]0T)' + regex: '(?:HS-)?Hisense ([^;/]+) Build|Hisense [^);/]+|HISENSE; |HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\-]*|HNR55[01]T|E270BSA|HWCD100E|HITV300C|M470BS[AE]|EG98|E2281|EG680|I46D1G|HAT4KDTV|HITV10[12]C|HLTE([237]00T|200M|203T|202N|21[023567][TM]|22[67]T|22[13]E|230E|103E|310[TM]|31[16]T|500T|501N|510[TM]|7[23]0T)|KS(?:907|964)|U601S Pro|HNR320T|HiSmart 4K ATV4' device: 'smartphone' models: # explicit tablet models - regex: 'E270BSA' device: 'tablet' model: 'Sero 7' + - regex: 'HITV10[12]C' + device: 'tablet' + model: 'E22' - regex: 'M470BS[AE]' device: 'tablet' model: 'Sero 7 Pro' @@ -5579,16 +7754,26 @@ Hisense: model: 'A6' - regex: 'HLTE730T' model: 'A6L' - - regex: 'HLTE221E' + - regex: 'HNR320T' + model: 'A7' + - regex: 'M50 Lite 2021' + model: 'M50 Lite (2021)' + - regex: 'Infinity E MAX' + model: 'Infinity E Max' + - regex: 'HLTE221E|E MAX(?:[);/ ]|$)' model: 'E Max' - regex: 'HLTE501N' model: 'V Plus' + - regex: 'KS907' + model: 'V3' - regex: 'HLTE223E' model: 'H30' - regex: 'I46D1G' model: 'Smartfren Andromax R' - regex: 'EG680' model: 'Smartfren Andromax Z' + - regex: 'EG98' + model: 'Smartfren Andromax U2' - regex: 'HLTE200T(?:[);/ ]|$)' model: 'F26' - regex: 'HLTE210T(?:[);/ ]|$)' @@ -5599,39 +7784,67 @@ Hisense: model: 'King Kong 4' - regex: 'HLTE311T(?:[);/ ]|$)' model: 'King Kong 4 Pro' - - regex: 'HLTE216T(?:[);/ ]|$)' + - regex: 'HLTE216[TM](?:[);/ ]|$)' model: 'King Kong 5' - regex: 'HLTE316T(?:[);/ ]|$)' model: 'King Kong 5 Pro' - regex: 'HLTE226T(?:[);/ ]|$)' model: 'King Kong 6' + - regex: 'F8 MINI(?:[);/ ]|$)' + model: 'F8 Mini' - regex: 'HLTE217T(?:[);/ ]|$)' model: 'F30S' - regex: 'HLTE227T(?:[);/ ]|$)' model: 'F40' + - regex: 'HNR550T(?:[);/ ]|$)' + model: 'F50' + - regex: 'HNR551T(?:[);/ ]|$)' + model: 'F50 Plus' - regex: 'HLTE310[TM](?:[);/ ]|$)' model: 'H18' - regex: 'HLTE510[TM](?:[);/ ]|$)' model: 'H20' + - regex: 'HLTE103E' + model: 'E20' - regex: 'HLTE500T(?:[);/ ]|$)' model: 'H11' + - regex: '(?:HLTE230E|Infinity H40 Lite)(?:[);/ ]|$)' + model: 'Infinity H40 Lite' - regex: 'HLTE720T(?:[);/ ]|$)' model: 'U30' device: 'phablet' + - regex: 'HWCD100E(?:[);/ ]|$)' + model: 'U40 Lite' - regex: '(HLTE300T|HLTE200M|HLTE212T)(?:[);/ ]|$)' model: '$1' - regex: 'HITV300C(?:[);/ ]|$)' model: 'E9' + - regex: 'E260T\+(?:[);/ ]|$)' + model: 'Nana' + - regex: 'U601S Pro(?:[);/ ]|$)' + model: 'U601S Pro' + - regex: 'Infinity H50 ZOOM(?:[);/ ]|$)' + model: 'Infinity H50 Zoom' + - regex: 'Infinity E30SE(?:[);/ ]|$)' + model: 'Infinity E30 SE' - regex: '(HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\-]*)' model: '$1' - - regex: '(HAT4KDTV)(?:[);/ ]|$)' + - regex: '(HAT4KDTV|HiSmart 4K ATV4)(?:[);/ ]|$)' device: 'tv' model: '$1' - - regex: '(?:HS-)?Hisense ([^;/]+) Build' + - regex: 'KS964(?:[);/ ]|$)' + model: 'U3 (2019)' + - regex: '(?:HS-)?Hisense (U3) 2021(?: Build|[);])' + model: 'U3 (2021)' + - regex: '(?:HS-)?Hisense ([^;/)]+) Pro(?: Build|[);])' + model: '$1 Pro' + - regex: '(?:HS-)?Hisense ([^;/)]+) Plus(?: Build|[);])' + model: '$1 Plus' + - regex: '(?:HS-)?Hisense ([^;/)]+)(?: Build|[);])' model: '$1' - - regex: 'Hisense ([^);/]+)' + - regex: '(?:HS-)?Hisense ([^/]+)/' model: '$1' # Hi-Level @@ -5640,26 +7853,36 @@ Hi-Level: device: 'tablet' model: 'HLV-T$1' -# Hoffmann +# HKPro +HKPro: + regex: 'HKPRO,([a-z0-9_ \-]+),(?:wired|wireless)' + device: 'tv' + model: '' + +# Hoffmann (hoffmann-electric.com) Hoffmann: - regex: '(HOFFMANN|Neo[_ ]A[1379]00)(?:[);/ ]|$)' + regex: '(HOFFMANN|Neo[_ ]A[1379]00|X-Go|X-Play|X-Pro|X_Ultra)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Neo[_ ](A[1379]00)' model: 'Neo $1' - regex: 'HOFFMANN[ _]X[-_ ](Prime|Twist|Max)' model: 'X $1' - + - regex: 'X[-_](Play|Go|Pro|Ultra)' + model: 'X $1' # Homtom Homtom: - regex: 'Homtom|(?:HT[0-9]{1,2})(?: ?Pro)?(?:[);/ ]|$)' + regex: 'Homtom|(?:HT[0-9]{1,2}(?: ?Pro)?|HT3_Pro)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: '(?:Homtom[_ ])?HT([0-9]{1,2}(?: ?Pro)?)(?:[);/ ]|$)' + - regex: '(?:Homtom[_ ])?HT ?([0-9]{1,2})[ _]?Pro(?:[);/ ]|$)' + model: 'HT$1 Pro' + - regex: '(?:Homtom[_ ])?HT ?([0-9]{1,2}?)(?:[);/ ]|$)' model: 'HT$1' - regex: 'Homtom ([^;/]+) Build' model: '$1' + # Hosin Hosin: regex: 'HOSIN[ _-]' @@ -5670,19 +7893,28 @@ Hosin: - regex: 'HOSIN[ _-]([^;/]+)(?:[;/)]|$)' model: '$1' -# Hoozo +# Hoozo (hoozoelectronics.com) Hoozo: - regex: 'HOOZO[_ ](MT232|MT116|MT Pad 116 LTE|X1001)(?:[);/ ]|$)' + regex: '(?:HOOZO[_ ](MT232|MT116|MT Pad 116 LTE|X1001)|MZ104|HZ0010|HZ1012|YK_P30(?:_EEA)?)(?:[);/ ]|$)' device: 'tablet' - model: '$1' + models: + - regex: 'HOOZO[_ ](MT232|MT116|MT Pad 116 LTE|X1001|MZ104)(?:[);/ ]|$)' + model: '$1' + - regex: '(HZ0010|HZ1012)(?:[);/ ]|$)' + model: '$1' + - regex: '(YK_P30)(?:_EEA)?(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' # Minix (minix.us) Minix: - regex: 'NEO-(?:X8-H|U9-H|X[57]-mini|X8H-PLUS|X88-?I|X7-216A|X5-116A|X[68]|U1|Z64)(?:[);/ ]|$)' + regex: 'NEO[- ](?:X8-H|U9-H|X[57]-mini|X8H-PLUS|X88-?I|X7-216A|X5-116A|X[68]|U1|Z64|U22-XJ)(?:[);/ ]|$)' device: 'tv' models: - regex: 'NEO-X8-H(?:[);/ ]|$)' model: 'NEO X8H' + - regex: 'NEO U22-XJ(?:[);/ ]|$)' + model: 'NEO U22' - regex: 'NEO-X([57])-mini(?:[);/ ]|$)' model: 'NEO X$1 Mini' - regex: 'NEO-X8H-PLUS(?:[);/ ]|$)' @@ -5702,9 +7934,71 @@ Minix: - regex: 'NEO-U9-H(?:[);/ ]|$)' model: 'NEO U9H' +# Huavi (https://www.huavi.us/) +Huavi: + regex: 'KHATAR H-20 PRO(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'KHATAR H-20 PRO(?:[);/ ]|$)' + model: 'KHATAR H-20 Pro' + +# Turkcell (https://www.turkcell.com.tr/) +Turkcell: + regex: 'TURKCELL[_ ]' + device: 'smartphone' + models: + - regex: 'Turbo T50(?:[);/ ]|$)' + model: 'Turbo T50' + - regex: 'T([124-8])0(?:[);/ ]|$)' + model: 'T$10' + - regex: 'Maxi Plus 5(?:[);/ ]|$)' + model: 'T21 Maxi Plus 5' + - regex: 'MaxiPRO5(?:[);/ ]|$)' + model: 'T21 Maxi Pro 5' # Huawei + + - regex: 'Turkcell_T_Tablet(?:[);/ ]|$)' + device: 'tablet' + model: 'T Tablet' + +# China Telecom +China Telecom: + regex: '(?:TYH61[12]M|TYH211U|TYH201H)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'TYH611M' + model: 'Maimang 10 SE 5G' + - regex: 'TYH612M' + model: 'Maimang 10 5G' + - regex: 'TYH211U' + model: 'Tianyi One (2021)' + - regex: 'TYH201H' + model: 'Tianyi One' + +# U-Magic (China Unicom) +U-Magic: + regex: '(?:Liantong)?(?:VP00[123])(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(?:Liantong)?VP001' + model: 'Enjoy 20 Plus 5G' + - regex: '(?:Liantong)?VP002' + model: 'Enjoy 20 5G' + - regex: '(?:Liantong)?VP003' + model: 'Enjoy 30e 5G' + +# Hi Nova +Hi Nova: + regex: '(?:Hebe|Hera)-BD00' + device: 'smartphone' + models: + - regex: 'Hebe-BD00' + model: '9 Pro' # Nova 9 Pro + - regex: 'Hera-BD00' + model: '9' # Nova 9 + # Huawei Huawei: - regex: '(HW-)?(?:Huawei|MediaPad T1|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANE|ARE|ARS|ASK|ATH|ATU|AUM|BAC|BAH[23]?|BG2|BGO|B[ZK]K|BKL|BL[ALN]|BND|BTV|CA[GMNZ]|CH[CM]|CHE[12]?|CLT|CMR|COL|COR|CPN|CRO|CRR|CUN|DIG|DLI|DRA|DUA|DUB|DUK|EDI|ELE|EML|EVA|EVR|FDR|FIG|FLA|FRD|GEM|GRA|HDN|HLK|HMA|Hol|HRY|HWI|H[36]0|INE|JAT|JDN|JDN2|JKM|JMM|JSN|KII|KIW|KNT|KOB|KSA|LDN|LEO|LIO|LLD|LND|LON|LRA|LUA|LY[AO]|MAR|MHA|MRD|MYA|NCE|NEM|NEO|NXT|PAR|PCT|PIC|PLE|PLK|POT|PRA|RIO|RNE|RVL|SCC|SCL|SCM|SEA|SHT|SLA|SNE|SPN|STF|STK|TAG|TIT|TNY|TRT|VCE|VEN|VIE|VKY|VNS|VOG|VRD|VTR|WAS|YAL|G(?:527|620S|621|630|735)|Y(?:221|330|550|6[23]5))-(?:[A-Z]{0,2}[0-9]{1,4}[A-Z]{0,3}?)|H1711|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))(?:[);/ ]|$))|hi6210sft|PE-(UL00|TL[12]0|TL00M)|T1-(A21[Lw]|A23L|701u|823L)|G7-(?:L01|TL00)|HW-01K|JNY-(LX[12]|AL10)|OXF-AN[01]0|TAS-(A[LN]00|L29|TL00)|WLZ-(AL10|AN00)|NIC-LX1A|MRX-(AL09|W09)|CDY-([AT]N00|AN90)|GLK-[AT]L00|JER-[AT]N10|ELS-(?:[AT]N[10]0|NX9|N39|N04)|AKA-(AL10|L29)|MON-(W|AL)19|BMH-AN[12]0|AQM-([AT]L[01]0|LX1)|MOA-(AL00|LX9N)|NTS-AL00|ART-(?:[AT]L00[xm]|L29N?)|JEF-[AT]N00|MED-(?:[AT]L00|LX9N?)|EBG-AN[01]0|ANA-(?:[AT]N00|NX9)|BZ[AK]-W00|BZT-(W09|AL[01]0)|HDL-(AL09|W09)|HWV3[123]|HW-02L|TEL-[AT]N(?:00a?|10)|KKG-AN00|MXW-AN00|TAH-AN00m|C8817D|T1-821W|d-01J|d-02[HK]|HWT31|Y320-U10|Y541-U02|VAT-L19|70[14]HW|60[58]HW|TNNH-AN00|LIO-(?:[TA]L00|[LN]29|AN00)|KOB2-L09' + regex: '(HW-)?(?:Huawei(?!Browser)|MediaPad T1|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANA|ANE|ARE|ARS|ASK|ATH|ATU|AUM|BAC|BAH[23]?|BG2|BGO|B[ZK]K|BKL|BL[ALN]|BND|BTV|CA[GMNZ]|CH[CM]|CHE[12]?|CLT|CMR|COL|COR|CPN|CRO|CRR|CUN|DIG|DLI|DRA|DUA|DUB|DUK|EDI|ELE|EML|EVA|EVR|FDR|FIG|FLA|FRD|FRL|GEM|GRA|HDN|HLK|HMA|Hol|HRY|HWI|H[36]0|INE|JAT|JEF|JDN|JDN2|JKM|JMM|JSN|KII|KIW|KNT|KOB|KSA|LDN|LEO|LIO|LLD|LND|LON|LRA|LUA|LY[AO]|MAR|MHA|MRD|MYA|NCE|NEN|NEM|NEO|NXT|PAR|PCT|PIC|PLE|PLK|POT|PPA|PRA|RIO|RNE|RVL|SCC|SCL|SCM|SEA|SHT|SLA|SNE|SPN|STF|STK|TAG|TIT|TNY|TRT|VCE|VEN|VIE|VKY|VNS|VOG|VRD|VTR|WAS|YAL|G(?:527|620S|621|630|735)|Y(?:221|330|550|6[23]5))-(?:[A-Z]{0,2}[0-9]{1,4}[A-Z]{0,3}?)|H1711|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))(?:[);/ ]|$))|hi6210sft|PE-(UL00|TL[12]0|TL00M)|T1-(A21?[Lw]|A2[23]L|701u|823L)|G7-(?:L01|TL00)|HW-01K|JNY-(LX[12]|AL10)|OXF-AN[01]0|TAS-(A[LN]00|L29|TL00)|WLZ-(AL10|AN00)|YOK-AN[10]0|NIC-LX1A|MRX-(AN19|AL[01]9|W[0-3]9)|CDY-(?:[AT]N00|AN[29][05]|NX9[AB]|TN[29]0)|GLK-(?:[AT]L00|LX1U)|JER-(?:[AT]N20|[AT]N10)|ELS-(?:[AT]N[10]0|NX9|N39|N04)|AKA-(AL10|L29)|MON-(W|AL)19|BMH-AN[12]0|AQM-([AT]L[01]0|LX1)|MOA-([AT]L[02]0|LX9N)|NTS-AL00|ART-(?:[AT]L00[xm]|L29N?|L28)|MED-(?:[AT]L00|LX9N?|AL20)|EBG-(?:AN[01]0|TN00)|ANA-(?:[AT]N00|NX9)|BZ[AK]-W00|BZT-(W09|AL[01]0)|HDL-(AL09|W09)|HWV3[123]|HW-02L|TEL-[AT]N(?:00a?|10)|KKG-AN00|MXW-[AT]N00|JKM-AL00[ab]|TAH-(?:N29|AN00)m?|C8817D|T1-821W|d-01[JK]|d-02[HK]|KRJ-(?:W09|AN00)|HWT31|Y320-U10|Y541-U02|VAT-L19|70[14]HW|60[58]HW|NOH-(?:NX9|AN0[01]|AN50|AL[01]0)|TNNH?-AN00|LIO-(?:[TA]L00|[LN]29|AN00)|KOB2-[LW]09|AGS3-(?:[WL]09|AL0[09]|W00[DE])|DNN-LX9|NEY-NX9|LON-AL00|HLK-L41|503HW|AGR-(?:[LW]09|AL09)|PPA-LX[12]|ANG-(?:AN00|LX[12])|NOP-AN00|ALA-AN70|DVC-[AT]N[02]0|302HW|Nexus 6P|DBY-W09|WKG-(?:LX9|[AT]N00)|JSC-(?:AN00|AL50)|OCE-A[NL][015]0|NZA-AL00|BRQ-A[LN]00|BZC-(?:AL|W)00|NEN-L(?:X1|22)|KOZ-AL[04]0|NTH-(?:AN00|NX9)|MRR-W[23]9|WGR-(?:W[10]9|AN19)|TET-AN00|SCMR-(?:W09|AL09)|OXP-AN00|HJC-(?:AN90|LX9)|CDL-AN50|CND-AN00|NTN-(?:LX[13]|AN20|L22)|RNA-[AT]N00|CHL-(?:A[LN]00|AL60)|ELZ-AN[012]0|NAM-(?:LX9|AL00)|JLH-AN00|JAD-AL[056]0|AGS3K-[WL]09|AGRK-[WL]09|MT2L03|LSA-AN00|KJR-W09|TET-A[NL][05]0|TYH601M|RTE-AL00|BAL-AL00|BZI-AL00|BZT3-(?:AL00|W09)|BZD-(?:W00|AL00)|MLD-AL[01]0|AGM3-(?:W09|AL09)HN|ABR-AL00|GIA-AN00' device: 'smartphone' models: - regex: 'POT-[TA]L00a(?:[);/ ]|$)' @@ -5729,6 +8023,8 @@ Huawei: model: 'Ascend G630' - regex: 'G7-(?:L01|TL00)(?:[);/ ]|$)' model: 'Ascend G7' + - regex: 'P7-L10(?:[);/ ]|$)' + model: 'Ascend P7' - regex: 'G730-C00(?:[);/ ]|$)' model: 'Ascend G730' - regex: 'U9200(?:[);/ ]|$)' @@ -5739,11 +8035,15 @@ Huawei: model: 'Ascend Y221' - regex: 'Y550-L03(?:[);/ ]|$)' model: 'Ascend Y550' + - regex: 'Y560-L01(?:[);/ ]|$)' + model: 'Ascend Y560' + - regex: 'Huawei g700(?:-(?:U[012]0|T0[01]))?' + model: 'Ascend G700' - regex: 'ART-[AT]L00[xm](?:[);/ ]|$)' model: 'Enjoy 10' - regex: 'STK-[AT]L00(?:[);/ ]|$)' model: 'Enjoy 10 Plus' - - regex: 'MED-[AT]L00(?:[);/ ]|$)' + - regex: 'MED-(?:[AT]L00|AL20)(?:[);/ ]|$)' model: 'Enjoy 10E' - regex: 'AQM-[AT]L00(?:[);/ ]|$)' model: 'Enjoy 10S' @@ -5757,7 +8057,7 @@ Huawei: model: 'Enjoy 7' - regex: 'FIG-(?:[AT]L[10]0)(?:[);/ ]|$)' model: 'Enjoy 7S' - - regex: 'TRT-AL00[A]?(?:[);/ ]|$)' + - regex: '(?:TRT-AL00[A]?|TRT-TL10A)(?:[);/ ]|$)' model: 'Enjoy 7 Plus' - regex: 'LDN-(?:AL[12]0|TL[02]0)(?:[);/ ]|$)' model: 'Enjoy 8' @@ -5767,6 +8067,16 @@ Huawei: model: 'Enjoy 8e' - regex: 'MRD-[TA]L00(?:[);/ ]|$)' model: 'Enjoy 9e' + - regex: 'DVC-[AT]N20(?:[);/ ]|$)' + model: 'Enjoy 20 Pro' + - regex: 'DVC-AN00(?:[);/ ]|$)' + model: 'Enjoy Z 5G' + - regex: 'PPA-AL20(?:[);/ ]|$)' + model: 'Enjoy 20 SE' + - regex: 'FRL-[AT]N00' + model: 'Enjoy 20 Plus 5G' + - regex: 'MLD-AL[01]0' + model: 'Enjoy 20e' - regex: 'U8665(?:[);/ ]|$)' model: 'Fusion 2' - regex: 'MED-LX9N?(?:[);/ ]|$)' @@ -5785,9 +8095,17 @@ Huawei: model: 'GR5 (2017)' - regex: 'RIO-L03(?:[);/ ]|$)' model: 'GX8' + - regex: 'RIO-L01(?:[);/ ]|$)' + model: 'G8' + - regex: 'JAD-AL[056]0' + model: 'P50 Pro' + - regex: 'ABR-AL00' + model: 'P50' + - regex: 'BAL-AL00' + model: 'P50 Pocket' - regex: 'U8860(?:[);/ ]|$)' model: 'Honor' - - regex: 'COL-(?:AL[01]0|TL[01]0|L29)(?:[);/ ]|$)' + - regex: 'COL-(?:AL[01]0|TL[01]0|L29|L10)(?:[);/ ]|$)' model: 'Honor 10' - regex: 'HRY-(?:[AT]L00[A]?|LX[12]|LX1MEB)(?:[);/ ]|$)' model: 'Honor 10 Lite' @@ -5805,16 +8123,18 @@ Huawei: model: 'Honor 20 Pro' - regex: '(MAR-LX1H|YAL-AL50)(?:[);/ ]|$)' model: 'Honor 20S' - - regex: '(?:BMH-AN[12]0|MXW-AN00)(?:[);/ ]|$)' + - regex: 'BMH-(?:AN[12]0|TN10)(?:[);/ ]|$)' model: 'Honor 30' - - regex: 'EBG-AN00(?:[);/ ]|$)' + - regex: 'EBG-[AT]N00(?:[);/ ]|$)' model: 'Honor 30 Pro' - regex: 'EBG-AN10(?:[);/ ]|$)' model: 'Honor 30 Pro Plus' - - regex: 'CDY-AN90(?:[);/ ]|$)' + - regex: 'CDY-(?:AN9[05]|NX9A|TN90)(?:[);/ ]|$)' model: 'Honor 30S' - regex: 'LRA-LX1(?:[);/ ]|$)' model: 'Honor 30I' + - regex: 'MXW-[AT]N00(?:[);/ ]|$)' + model: 'Honor 30 Lite' - regex: '(?:Honor_|HW-)?H30-(?:C00|L01M?|L02|U10|T00|T10)(?:_TD)?(?:[);/ ]|$)' model: 'Honor 3C' - regex: 'Hol-U19(?:[);/ ]|$)' @@ -5825,6 +8145,8 @@ Huawei: model: 'Honor 4A' - regex: '(?:Honor_|HW-)?CHM-U01(?:_TD)?(?:[);/ ]|$)' model: 'Honor 4C' + - regex: 'Honor 4c Pro(?:[);/ ]|$)' + model: 'Honor 4C Pro' - regex: 'AQM-AL10(?:[);/ ]|$)' model: 'Honor 4T Pro' - regex: '(CHE2?-[UT]L00[HM]?|CHE1-CL[12]0|CHE2-L(?:1[12]|23)|Che1-L04|CHE-TL00)(?:[);/ ]|$)' @@ -5839,6 +8161,18 @@ Huawei: model: 'Honor 5C Dual SIM' - regex: '(?:Honor_|HW-)?KIW-(?:AL10|TL00H|[TC]L00|L2[1-4]|UL00)(?:_TD)?(?:[);/ ]|$)' model: 'Honor 5X' + - regex: 'NTH-(?:NX9|AN00)' + model: 'Honor 50 5G' + - regex: 'JLH-AN00(?:[);/ ]|$)' + model: 'Honor 50 SE' + - regex: 'NTN-(?:LX[13]|L22)(?:[);/ ]|$)' + model: 'Honor 50 Lite' + - regex: 'RNA-[AT]N00' + model: 'Honor 50 Pro 5G' + - regex: 'LSA-AN00' + model: 'Honor 60' + - regex: 'GIA-AN00' + model: 'Honor 60 SE 5G' - regex: '((?:Honor_|HW-)?H60-L(?:01|02|03|04|11|12)(?:_TD)?|HW-H60-J1)(?:[);/ ]|$)' model: 'Honor 6' - regex: 'MYA-TL10(?:[);/ ]|$)' @@ -5851,7 +8185,7 @@ Huawei: model: 'Honor 6C' - regex: 'JMM-L22(?:[);/ ]|$)' model: 'Honor 6C Pro' - - regex: '(?:HONOR[ _]?)?BLN-(?:L2[124]|AL[1234]0|TL[01]0(?:[);/ ]|$))' + - regex: '(?:HONOR[ _]?)?BLN-(?:L2[124]|AL[1-4]0|TL[01]0(?:[);/ ]|$))' model: 'Honor 6X' - regex: '(?:Honor[_]?|HW-)?PLK-(?:AL10|CL00|TL00|TL01H?|UL00|L01)(?:[);/ ]|$)' model: 'Honor 7' @@ -5863,7 +8197,7 @@ Huawei: model: 'Honor 7A Pro' - regex: '(?:Honor_|HW-)?(?:LND-(?:AL[34]0|L29|TL40)|AUM-L41)(?:[);/ ]|$)' model: 'Honor 7C' - - regex: 'ATH-(?:AL00|UL00|TL00H)(?:[);/ ]|$)' + - regex: 'ATH-(?:[CAU]L00|TL00H)(?:[);/ ]|$)' model: 'Honor 7i' - regex: '(?:Honor_|HW-)?DUA-(?:L22|LX3)(?:[);/ ]|$)' model: 'Honor 7S' @@ -5883,13 +8217,13 @@ Huawei: model: 'Honor 8A Pro' - regex: 'BKK-(?:AL[10]0|L21|L22|LX2|TL00)(?:[);/ ]|$)' model: 'Honor 8C' - - regex: 'KSA-(LX[29]|AL00)(?:[);/ ]|$)' + - regex: 'KSA-(LX[239]|AL00)(?:[);/ ]|$)' model: 'Honor 8S' - regex: 'JSN-L(?:2[123]|42)|JSN-[TA]L00[a]?(?:[);/ ]|$)' model: 'Honor 8X' - - regex: 'ARE-(?:AL[10]0|L22HN|TL00)(?:[);/ ]|$)' + - regex: 'ARE-(?:AL[10]0|L22(?:HN)?|TL00)(?:[);/ ]|$)' model: 'Honor 8X Max' - - regex: 'STF-(?:AL[10]0|L09|TL10)(?:[);/ ]|$)' + - regex: 'STF-(?:AL[10]0|L09S?|TL10)(?:[);/ ]|$)' model: 'Honor 9' - regex: 'MOA-LX9N(?:[);/ ]|$)' model: 'Honor 9A' @@ -5903,7 +8237,7 @@ Huawei: model: 'Honor 9S' - regex: 'HLK-AL00a?(?:[);/ ]|$)' model: 'Honor 9X' - - regex: 'HLK-AL10(?:[);/ ]|$)' + - regex: 'HLK-(?:AL10|L4[12])(?:[);/ ]|$)' model: 'Honor 9X Pro' - regex: 'CAM-UL00(?:[);/ ]|$)' model: 'Honor Holly 3' @@ -5911,6 +8245,12 @@ Huawei: model: 'Honor Magic' - regex: 'TNY-[AT]L00(?:[);/ ]|$)' model: 'Honor Magic 2' + - regex: 'ELZ-AN00' + model: 'Honor Magic 3' + - regex: 'ELZ-AN10' + model: 'Honor Magic 3 Pro' + - regex: 'ELZ-AN20' + model: 'Honor Magic 3 Pro+' - regex: 'RVL-AL09(?:[);/ ]|$)' model: 'Honor Note 10' - regex: 'EDI-AL10(?:[);/ ]|$)' @@ -5919,11 +8259,15 @@ Huawei: model: 'Honor P10 Plus' - regex: 'VOG-AL00(?:[);/ ]|$)' model: 'Honor P30 Pro' - - regex: 'ANA-(?:[AT]N00|NX9)(?:[);/ ]|$)' - model: 'Honor P40' + - regex: 'ANA-(?:[AT]N00)(?:[);/ ]|$)' + model: 'Honor P40 5G' + - regex: 'ANA-AL00(?:[);/ ]|$)' + model: 'Honor P40 4G' + - regex: 'ANA-NX9(?:[);/ ]|$)' + model: 'Honor P40 Dual' - regex: 'COR-(?:AL[01]0|L29|TL10)(?:[);/ ]|$)' model: 'Honor Play' - - regex: 'ASK-AL00x(?:[);/ ]|$)' + - regex: 'ASK-AL(00x|20)(?:[);/ ]|$)' model: 'Honor Play 3' - regex: 'KSA-AL10(?:[);/ ]|$)' model: 'Honor Play 3E' @@ -5933,16 +8277,32 @@ Huawei: model: 'Honor Play 4C' - regex: 'AKA-AL10(?:[);/ ]|$)' model: 'Honor Play 4T' + - regex: 'OXP-AN00(?:[);/ ]|$)' + model: 'Honor Play 4 Pro' + - regex: '(?:NZA-AL00?|KOZ-AL40)(?:[);/ ]|$)' + model: 'Honor Play 5T' # Vitality Edition + - regex: 'CHL-AL00(?:[);/ ]|$)' + model: 'Honor Play 5T Pro' + - regex: 'CHL-AN00(?:[);/ ]|$)' + model: 'Honor X20 SE' - regex: 'DUA-[TA]L00(?:[);/ ]|$)' model: 'Honor Play 7' + - regex: 'HJC-AN90(?:[);/ ]|$)' + model: 'Honor Play 5' + - regex: 'KOZ-AL00(?:[);/ ]|$)' + model: 'Honor Play 20' + - regex: 'HJC-LX9(?:[);/ ]|$)' + model: 'Honor Play 20 Pro' - regex: 'JAT-[AT]L00(?:[);/ ]|$)' model: 'Honor Play 8A' - - regex: 'MOA-AL00(?:[);/ ]|$)' + - regex: '(?:MOA-(?:AL[02]0|TL00))(?:[);/ ]|$)' model: 'Honor Play 9A' - regex: 'BKL-(?:AL00|AL20|AL30|L09|TL10)(?:[);/ ]|$)' model: 'Honor V10' - regex: 'PCT-[TA]L10(?:[);/ ]|$)' model: 'Honor V20' + - regex: 'YOK-AN10(?:[);/ ]|$)' + model: 'Honor V40' - regex: 'KNT-(?:AL[12]0|[TU]L10)(?:[);/ ]|$)' model: 'Honor V8' - regex: 'DUK-AL20(?:[);/ ]|$)' @@ -5957,14 +8317,20 @@ Huawei: model: 'Honor View 30' - regex: 'OXF-AN10(?:[);/ ]|$)' model: 'Honor View 30 Pro' - - regex: '(?:Honor_|HW-)?SCL-L(01|32)(?:_TD)?(?:[);/ ]|$)' + - regex: '(?:Honor_|HW-)?SCL-L(0[1-4]|21|32)(?:_TD)?(?:[);/ ]|$)' model: 'Honor Y6' - regex: '(?:Honor_|HW-)?LYO-L21(?:[);/ ]|$)' model: 'Honor Y6 II Compact' + - regex: 'NTN-AN20(?:[);/ ]|$)' + model: 'Honor X20' - regex: 'TEL-(?:AN(?:00a?|10)|TN00)(?:[);/ ]|$)' model: 'Honor X10' - regex: 'KKG-AN00(?:[);/ ]|$)' model: 'Honor X10 Max' + - regex: 'DNN-LX9(?:[);/ ]|$)' + model: 'Honor X10 Lite' + - regex: 'ALA-AN70(?:[);/ ]|$)' + model: 'Honor V40 Lite' - regex: 'U8500(?:[);/ ]|$)' model: 'Ideos X2' - regex: 'U8510(?:[);/ ]|$)' @@ -5975,8 +8341,18 @@ Huawei: model: 'Maimang 5' - regex: 'POT-AL10(?:[);/ ]|$)' model: 'Maimang 8' - - regex: 'TAH-AN00m(?:[);/ ]|$)' + - regex: 'TNN-AN00(?:[);/ ]|$)' + model: 'Maimang 9' + - regex: 'TYH601M' + model: 'Maimang 9 5G' + - regex: 'TAH-(?:N29|AN00)m(?:[);/ ]|$)' model: 'Mate XS' + - regex: 'TAH-AN00' + model: 'Mate X' + - regex: 'TET-A[NL]00(?:[);/ ]|$)' + model: 'Mate X2' + - regex: 'TET-AN50' + model: 'Mate X2 5G' - regex: 'ALP-(?:[TA]L00|L[02]9)(?:[);/ ]|$)' model: 'Mate 10' - regex: 'RNE-(?:AL00|L(?:01|03|21|23))(?:[);/ ]|$)' @@ -5997,19 +8373,31 @@ Huawei: model: 'Mate 30' - regex: 'TAS-AN00(?:[);/ ]|$)' model: 'Mate 30 5G' + - regex: 'LIO-AN00P(?:[);/ ]|$)' + model: 'Mate 30 RS Porsche Design' - regex: 'SPN-AL00(?:[);/ ]|$)' model: 'Mate 30 Lite' - regex: 'LIO-(?:[TA]L00|L29|AN00)(?:[);/ ]|$)' model: 'Mate 30 Pro' - regex: 'LIO-N29(?:[);/ ]|$)' model: 'Mate 30 Pro 5G' - - regex: 'NXT-(?:AL10|L29)(?:[);/ ]|$)' + - regex: 'LIO-AN00m(?:[);/ ]|$)' + model: 'Mate 30E Pro 5G' + - regex: 'NOH-(?:NX9|AN0[01]|AN50|AL[01]0)(?:[);/ ]|$)' + model: 'Mate 40 Pro' + - regex: 'NOP-AN00(?:[);/ ]|$)' + model: 'Mate 40 Pro+' + - regex: 'OCE-AN10(?:[);/ ]|$)' + model: 'Mate 40' + - regex: 'OCE-(?:A[NL]50|AN00)(?:[);/ ]|$)' + model: 'Mate 40E' + - regex: 'NXT-(?:AL10|L[02]9)(?:[);/ ]|$)' model: 'Mate 8' - regex: 'MHA-(?:L[02]9|[AT]L00)(?:[);/ ]|$)' model: 'Mate 9' - regex: 'BLL-L23(?:[);/ ]|$)' model: 'Mate 9 Lite' - - regex: 'LON-(?:AL00|L29)(?:[);/ ]|$)' + - regex: 'LON-(?:AL00(?:-PD)?|L29)(?:[);/ ]|$)' model: 'Mate 9 Pro' - regex: 'NEO-AL00(?:[);/ ]|$)' model: 'Mate RS' @@ -6021,8 +8409,10 @@ Huawei: model: 'Mate SE' - regex: '(CAZ-(?:AL[01]0|TL[12]0)|CAN-L[01][1-3])(?:[);/ ]|$)' model: 'Nova' - - regex: '608HW(?:[);/ ]|$)' + - regex: '(?:608HW|PRA-LX[23])(?:[);/ ]|$)' model: 'Nova Lite' + - regex: 'MLA-L11(?:[);/ ]|$)' + model: 'Nova Plus' - regex: '(?:PIC-(?:[AT]L00|LX9)|HWV31)(?:[);/ ]|$)' model: 'Nova 2' - regex: '704HW(?:[);/ ]|$)' @@ -6035,11 +8425,11 @@ Huawei: model: 'Nova 2I' - regex: 'HWI-[AT]L00(?:[);/ ]|$)' model: 'Nova 2S' - - regex: 'PAR-(?:[AT]L00|LX[19]|TL20)(?:[);/ ]|$)' + - regex: 'PAR-(?:[AT]L00|LX[19]|LX1M|TL20)(?:[);/ ]|$)' model: 'Nova 3' - regex: 'ANE-AL00(?:[);/ ]|$)' model: 'Nova 3e' - - regex: 'INE-(?:AL00|LX1r|LX[12]|TL00)(?:[);/ ]|$)' + - regex: 'INE-(?:AL00|LX[12]r|LX[12]|TL00)(?:[);/ ]|$)' model: 'Nova 3i' - regex: 'VCE-(L22|[AT]L00)(?:[);/ ]|$)' model: 'Nova 4' @@ -6049,7 +8439,7 @@ Huawei: model: 'Nova 5' - regex: 'SEA-AL10(?:[);/ ]|$)' model: 'Nova 5 Pro' - - regex: 'GLK-[AT]L00(?:[);/ ]|$)' + - regex: 'GLK-(?:[AT]L00|LX1U)(?:[);/ ]|$)' model: 'Nova 5i' - regex: 'SPN-TL00(?:[);/ ]|$)' model: 'Nova 5i Pro' @@ -6059,22 +8449,50 @@ Huawei: model: 'Nova 6 5G' - regex: 'JNY-AL10(?:[);/ ]|$)' model: 'Nova 6 SE' - - regex: 'JEF-[AT]N00(?:[);/ ]|$)' + - regex: 'JEF-(?:[AT]N00|[AT]N20|NX9)(?:[);/ ]|$)' model: 'Nova 7 5G' - - regex: 'JER-[AT]N10(?:[);/ ]|$)' + - regex: 'JER-(?:[AT]N10|[AT]N20)(?:[);/ ]|$)' model: 'Nova 7 Pro 5G' - - regex: 'CDY-[AT]N00(?:[);/ ]|$)' + - regex: '(?:CDY-(?:[AT]N00|NX9B|[AT]N20)|CDL-AN50|CND-AN00)(?:[);/ ]|$)' model: 'Nova 7 SE 5G' - regex: 'JNY-LX2(?:[);/ ]|$)' model: 'Nova 7i' + - regex: 'ANG-LX[12](?:[);/ ]|$)' + model: 'Nova 8' + - regex: 'NEN-L(?:X[13]|22)(?:[);/ ]|$)' + model: 'Nova 8i' + - regex: 'ANG-AN00(?:[);/ ]|$)' + model: 'Nova 8 5G' + - regex: 'JSC-AN00' + model: 'Nova 8 SE 5G' + - regex: 'JSC-AL50' + model: 'Nova 8 SE 4G' + - regex: 'CHL-AL60' + model: 'Nova 8 SE Vitality' + - regex: 'BRQ-AL00(?:[);/ ]|$)' + model: 'Nova 8 Pro 4G' + - regex: 'BRQ-AN00(?:[);/ ]|$)' + model: 'Nova 8 Pro 5G' + - regex: 'NAM-(?:AL00|LX9)(?:[);/ ]|$)' + model: 'Nova 9' + - regex: 'RTE-AL00(?:[);/ ]|$)' + model: 'Nova 9 Pro' # 4G - regex: 'DIG-L01(?:[);/ ]|$)' model: 'Nova Smart' - regex: 'WAS-AL00(?:[);/ ]|$)' model: 'Nova Youth' + - regex: 'WKG-[AT]N00' + model: 'Enjoy 20 5G' + - regex: 'WKG-LX9(?:[);/ ]|$)' + model: 'Nova Y60' - regex: 'FIG-L(?:A1|X[123])(?:[);/ ]|$)' model: 'P smart' - - regex: 'POT-(?:LX(?:[13]|2J|1AF)|AL00)(?:[);/ ]|$)' + - regex: 'POT-(?:LX(?:[13]|1T|2J|1AF)|AL00)(?:[);/ ]|$)' model: 'P smart (2019)' + - regex: 'POT-LX1A(?:[);/ ]|$)' + model: 'P smart (2020)' + - regex: 'PPA-LX[12](?:[);/ ]|$)' + model: 'P smart (2021)' - regex: 'STK-LX1(?:[);/ ]|$)' model: 'P smart Z' - regex: 'VTR-(?:L[02]9|AL00|TL00)(?:[);/ ]|$)' @@ -6089,42 +8507,46 @@ Huawei: model: 'P20' - regex: '(?:ANE-(?:LX[123]|LX2J|TL00)|HWV32)(?:[);/ ]|$)' model: 'P20 Lite' - - regex: '(?:CLT-(?:AL0[01]|TL0[01]|L(?:04|[02]9))|HW-01K)(?:[);/ ]|$)' + - regex: '(?:CLT-(?:AL0[01]|TL0[01]|L(?:04|[02]9))l?|HW-01K)(?:[);/ ]|$)' model: 'P20 Pro' - regex: '(ELE-L(?:04|09|29)|ELE-[AT]L00)(?:[);/ ]|$)' model: 'P30' - - regex: '(?:MAR-(?:LX(?:1[BM]|2J?|3BM)|TL00)|NIC-LX1A|HWV33)(?:[);/ ]|$)' + - regex: '(?:MAR-(?:LX(?:1[BM]|2B|[13]Am?|2J?|3BM)|TL00)|NIC-LX1A|HWV33)(?:[);/ ]|$)' model: 'P30 Lite' - - regex: 'MAR-LX[13]A(?:[);/ ]|$)' - model: 'P30 Lite Dual SIM' - regex: '(?:VOG-(?:L(?:04|09|29)|TL00|AL10)|HW-02L)(?:[);/ ]|$)' model: 'P30 Pro' + - regex: 'ANA-LX4(?:[);/ ]|$)' + model: 'P40' - regex: 'JNY-LX1(?:[);/ ]|$)' model: 'P40 Lite' - regex: 'ART-L29(?:[);/ ]|$)' model: 'P40 Lite E' - regex: 'ART-L29N(?:[);/ ]|$)' model: 'P40 Lite E NFC' - - regex: 'ELS-(?:[AT]N00|NX9|N04)(?:[);/ ]|$)' + - regex: '(?:ELS-(?:[AT]N00|NX9|N04)|NEY-NX9)(?:[);/ ]|$)' model: 'P40 Pro' - regex: 'ELS-(?:AN10|N39)(?:[);/ ]|$)' model: 'P40 Pro Plus' - regex: 'GRA-(?:L09|UL00)(?:[);/ ]|$)' model: 'P8' - - regex: '(?:ALE-L(?:02|21|23)|ALE-UL00|ALE-TL00)(?:[);/ ]|$)' + - regex: '(?:ALE-L(?:02|21|23)|ALE-[TUC]L00|503HW)(?:[);/ ]|$)' model: 'P8 Lite (2015)' - - regex: '(?:PRA-L(?:A1|X2|X1|X3)|hi6210sft)(?:[);/ ]|$)' + - regex: '(?:PRA-L(?:A1|X[12])|hi6210sft)(?:[);/ ]|$)' model: 'P8 Lite (2017)' - regex: 'EVA-(?:AL[10]0|L[012]9|[TCD]L00)(?:[);/ ]|$)' model: 'P9' - - regex: 'VNS-L(?:[23]1|[26]2)(?:[);/ ]|$)' + - regex: 'VNS-L(?:[23]1|[26]2|53|23)(?:[);/ ]|$)' model: 'P9 Lite' + - regex: 'VNS-L52(?:[);/ ]|$)' + model: 'P9 Lite Premium' - regex: 'SLA-L(?:02|03|22|23)(?:[);/ ]|$)' model: 'P9 Lite Mini' - regex: 'DIG-L(?:03|23)(?:[);/ ]|$)' model: 'P9 Lite Smart' - regex: 'VIE-(?:AL10|L[02]9)(?:[);/ ]|$)' model: 'P9 Plus' + - regex: 'MLA-TL[01]0(?:[);/ ]|$)' + model: 'G9 Plus' - regex: 'ATH-UL0[16](?:[);/ ]|$)' model: 'ShotX' - regex: 'U(8230|8661|8667)(?:[);/ ]|$)' @@ -6141,10 +8563,12 @@ Huawei: model: 'Y5 (2017)' - regex: 'DRA-L(?:01|03|21|23|X3)(?:[);/ ]|$)' model: 'Y5 (2018)' - - regex: 'AMN-LX[129](?:[);/ ]|$)' + - regex: 'AMN-LX[1239](?:[);/ ]|$)' model: 'Y5 (2019)' - regex: 'DRA-LX5(?:[);/ ]|$)' model: 'Y5 lite' + - regex: 'DRA-LX9(?:[);/ ]|$)' + model: 'Y5p' - regex: 'CRO-L[02]3(?:[);/ ]|$)' model: 'Y5 Lite (2017)' - regex: 'CAG-L[02]3(?:[);/ ]|$)' @@ -6155,7 +8579,7 @@ Huawei: model: 'Y5 Pro (2017)' - regex: 'CUN-(?:L(?:0[123]|2[123]|33)|U29)(?:[);/ ]|$)' model: 'Y5II' - - regex: 'SCC-U21(?:[);/ ]|$)' + - regex: '(?:SCC-U21|SCL-U31)(?:[);/ ]|$)' model: 'Y6' - regex: 'MYA-L11(?:[);/ ]|$)' model: 'Y6 (2016)' @@ -6183,7 +8607,7 @@ Huawei: model: 'Y7 (2017)' - regex: 'LDN-L(?:01|X3)(?:[);/ ]|$)' model: 'Y7 (2018)' - - regex: 'DUB-(?:LX[13]|TL00)(?:[);/ ]|$)' + - regex: '(?:HUAWEI[ _]?)?DUB-(?:LX[13]|TL00)(?:[);/ ]|$)' model: 'Y7 (2019)' - regex: '(LDN-(?:AL00|L21)|TRT-TL10)(?:[);/ ]|$)' model: 'Y7 Prime' @@ -6191,16 +8615,31 @@ Huawei: model: 'Y7 Prime (2018)' - regex: 'DUB-(?:LX2|AL00)(?:[);/ ]|$)' model: 'Y7 Pro (2019)' + - regex: 'DUB-AL00a(?:[);/ ]|$)' + model: 'Enjoy 9' - regex: 'DUB-AL20(?:[);/ ]|$)' model: 'Y7 Pro (2019)' + - regex: 'PPA-LX3(?:[);/ ]|$)' + model: 'Y7a' + - regex: 'ART-L28(?:[);/ ]|$)' + model: 'Y7p' - regex: 'AQM-LX1(?:[);/ ]|$)' model: 'Y8p' - regex: 'FLA-(LX[123]|AL20|TL10)(?:[);/ ]|$)' model: 'Y9 (2018)' - - regex: 'JKM-(?:[TA]L00|LX[123])(?:[);/ ]|$)' + - regex: 'JKM-(?:[TA]L00[ab]?|LX[123])(?:[);/ ]|$)' model: 'Y9 (2019)' - regex: 'STK-(L2[12]|LX3)(?:[);/ ]|$)' model: 'Y9 Prime (2019)' + - regex: 'FRL-L2[23](?:[);/ ]|$)' + model: 'Y9a' + - regex: '302HW(?:[);/ ]|$)' + model: 'Stream S' + - regex: 'NMO-L31(?:[);/ ]|$)' + model: 'GT3' + - regex: 'Nexus 6P(?:[);/ ]|$)' + device: 'phablet' + model: 'Nexus 6P' - regex: 'HWT31(?:[);/ ]|$)' model: 'Qua Tab 02 10.1"' @@ -6208,8 +8647,29 @@ Huawei: - regex: 'HDN-[LW]09(?:[);/ ]|$)' model: 'Honor Water Play 10.1' device: 'tablet' - - regex: 'BAH3-AL00(?:[);/ ]|$)' - model: 'MatePad 10.4' + - regex: 'BAH3-(?:AL00|[LW]09)(?:[);/ ]|$)' + model: 'MatePad 10.4"' + device: 'tablet' + - regex: 'BAH3-W59(?:[);/ ]|$)' + model: 'MatePad 10.4" WiFi' + device: 'tablet' + - regex: 'BAH3-AN10(?:[);/ ]|$)' + model: 'MatePad 10.4" 5G' + device: 'tablet' + - regex: 'DBY-W09(?:[);/ ]|$)' + model: 'MatePad 11 WiFi' + device: 'tablet' + - regex: 'SCMR-W09(?:[);/ ]|$)' + model: 'MatePad 10.8" WiFi' + device: 'tablet' + - regex: 'SCMR-AL09(?:[);/ ]|$)' + model: 'MatePad 10.8"' + device: 'tablet' + - regex: 'AGS3-(L09|AL00)(?:[);/ ]|$)' + model: 'MatePad T10s' + device: 'tablet' + - regex: 'AGS3-W09(?:[);/ ]|$)' + model: 'MatePad T10s WiFi' device: 'tablet' - regex: 'HDL-(?:W09|AL09)(?:[);/ ]|$)' model: 'Honor Water Play 8.0' @@ -6217,18 +8677,63 @@ Huawei: - regex: 'JDN-(?:AL00|W09)(?:[);/ ]|$)' model: 'Honor Pad 2' device: 'tablet' + - regex: 'KRJ-W09(?:[);/ ]|$)' + model: 'Honor Pad V6' + device: 'tablet' + - regex: 'KRJ-AN00' + model: 'Honor Pad V6 10.4" 5G' + device: 'tablet' + - regex: 'KJR-W09' + model: 'Honor Pad V6 10.4" WiFi' + device: 'tablet' + - regex: 'KOB2-W09HN' + device: 'tablet' + model: 'Honor Pad X7 8" WiFi' + - regex: 'AGR-W09HN' + device: 'tablet' + model: 'Honor Pad X6' + - regex: 'AGR-AL09HN' + device: 'tablet' + model: 'Honor Pad X6 9.7"' + - regex: 'AGS3-AL09HN(?:[);/ ]|$)' + device: 'tablet' + model: 'Honor Pad 6 10.1"' + - regex: 'AGS3-W09HN(?:[);/ ]|$)' + device: 'tablet' + model: 'Honor Pad 6 10.1" WiFi' - regex: 'MON-(W|AL)19(?:[);/ ]|$)' device: 'tablet' model: 'MatePad C5 8' - regex: 'BZA-W00(?:[);/ ]|$)' device: 'tablet' model: 'C3 9.6' + - regex: 'BZC-AL00(?:[);/ ]|$)' + device: 'tablet' + model: 'C3 9.7" (2020)' + - regex: 'BZC-W00(?:[);/ ]|$)' + device: 'tablet' + model: 'C3 9.7" (2020) WiFi' - regex: 'M2-801L(?:[);/ ]|$)' device: 'tablet' model: 'MediaPad M2 8.0"' - - regex: 'MRX-(AL09|W09)(?:[);/ ]|$)' + - regex: 'MRX-AL[01]9(?:[);/ ]|$)' + device: 'tablet' + model: 'MatePad Pro 10.8"' + - regex: 'MRX-W[0-3]9(?:[);/ ]|$)' + device: 'tablet' + model: 'MatePad Pro 10.8" WiFi' + - regex: 'MRR-W[23]9(?:[);/ ]|$)' device: 'tablet' - model: 'MatePad Pro' + model: 'MatePad Pro 10.8" (2021) WiFi' + - regex: 'MRX-AN19(?:[);/ ]|$)' + device: 'tablet' + model: 'MatePad Pro 10.8" 5G' + - regex: 'WGR-W[10]9(?:[);/ ]|$)' + device: 'tablet' + model: 'MatePad Pro 12.6" WiFi' + - regex: 'WGR-AN19(?:[);/ ]|$)' + device: 'tablet' + model: 'MatePad Pro 12.6"' - regex: 'CMR-(?:AL[01]9|W09)(?:[);/ ]|$)' device: 'tablet' model: 'MediaPad M5 10.8' @@ -6237,7 +8742,7 @@ Huawei: model: 'MediaPad M5 Pro 10.8' - regex: 'SCM-AL09(?:[);/ ]|$)' device: 'tablet' - model: 'MediaPad M5 Pro' + model: 'MediaPad M6 10.8"' - regex: 'GEM-70[1-3]L(?:[);/ ]|$)' device: 'tablet' model: 'MediaPad X2' @@ -6252,28 +8757,37 @@ Huawei: model: 'MediaPad M6 8.4' - regex: 'SCM-W09(?:[);/ ]|$)' device: 'tablet' - model: 'MediaPad M6 10' + model: 'MediaPad M6 10.8" WiFi' - regex: 'BTV-W09(?:[);/ ]|$)' device: 'tablet' model: 'MediaPad M3 8' - regex: '(BAH-W09|CPN-(?:L|W)09|CPN-AL00|701HW)(?:[);/ ]|$)' device: 'tablet' model: 'MediaPad M3 Lite' - - regex: '(BAH-(?:L09|AL00)|BAH3-W09)(?:[);/ ]|$)' + - regex: 'BAH-(?:L09|AL00)(?:[);/ ]|$)' device: 'tablet' model: 'MediaPad M3 Lite 10' - regex: 'BTV-DL09' device: 'tablet' model: 'MediaPad M3' - - regex: '(AGS2-AL00|JDN2-W09)HN(?:[);/ ]|$)' + - regex: '(AGS2-AL00|JDN2-(?:AL00|W09))HN(?:[);/ ]|$)' device: 'tablet' model: 'Honor Tab 5' - - regex: 'AGS2-(?:[LW]09|L03)(?:[);/ ]|$)' + - regex: 'AGM3-W09HN' + device: 'tablet' + model: 'Honor Pad 7 10.1" WiFi' + - regex: 'AGM3-AL09HN' + device: 'tablet' + model: 'Honor Pad 7 10.1"' + - regex: 'AGS2-(?:[LW]09|W09HN|W19|L03)(?:[);/ ]|$)' device: 'tablet' model: 'MediaPad T5 10' - - regex: 'KOB2-L09(?:[);/ ]|$)' + - regex: 'KOB2-[LW]09(?:[);/ ]|$)' device: 'tablet' model: 'MediaPad T 8.0"' + - regex: 'AGR-[LW]09(?:[);/ ]|$)' + device: 'tablet' + model: 'MediaPad T 10' - regex: 'AGS-(?:L0[39]|W09)(?:[);/ ]|$)' device: 'tablet' model: 'MediaPad T3 10' @@ -6295,7 +8809,7 @@ Huawei: - regex: '(?:FDR-(A01[LW]|A03L)|605HW)(?:[);/ ]|$)' device: 'tablet' model: 'MediaPad T2 10.0" Pro' - - regex: 'T1-(?:A21[LW]|A23L)(?:[);/ ]|$)' + - regex: 'T1-(?:A21[LW]|A2[23]L)(?:[);/ ]|$)' device: 'tablet' model: 'MediaPad T1 10' - regex: 'T1-701u(?:[);/ ]|$)' @@ -6304,15 +8818,48 @@ Huawei: - regex: '(?:T1-82(?:3L|1W)|MediaPad T1 8.0)(?:[);/ ]|$)' device: 'tablet' model: 'MediaPad T1 8' + - regex: 'AGS3K-W09' + device: 'tablet' + model: 'MediaPad T10s 10.1" WiFi' + - regex: 'AGS3K-L09' + device: 'tablet' + model: 'MediaPad T10s 10.1" LTE' + - regex: 'AGRK-W09' + device: 'tablet' + model: 'MediaPad T10 9.7" WiFi' + - regex: 'AGRK-L09' + device: 'tablet' + model: 'MediaPad T10 9.7" LTE' - regex: 'AGS2-AL00(?:[);/ ]|$)' device: 'tablet' model: 'Enjoy Tablet 10.1' + - regex: 'AGS3-W00[DE](?:[);/ ]|$)' + device: 'tablet' + model: 'Enjoy Tablet 2 10.1" WiFi' - regex: 'BZT-(W09|AL[01]0)(?:[);/ ]|$)' device: 'tablet' model: 'MediaPad C5 10.1' + - regex: 'BZI-AL00' + model: 'C5e 10.1"' + device: 'tablet' + - regex: 'BZT3-W09' + model: 'C5 10.4" WiFi' + device: 'tablet' + - regex: 'BZT3-AL00' + model: 'C5 10.4"' + device: 'tablet' + - regex: 'BZD-W00' + device: 'tablet' + model: 'MediaPad C3 8.0" WiFi' + - regex: 'BZD-AL00' + device: 'tablet' + model: 'MediaPad C3 8.0"' - regex: '(?:d-01J|d-02[HK])(?:[);/ ]|$)' device: 'tablet' model: 'D Tab Compact' + - regex: '(d-01K)(?:[);/ ]|$)' + device: 'tablet' + model: 'dtab d-01K' # smart watch regex @@ -6331,26 +8878,65 @@ Huawei: model: 'Ascend Mate $1' - regex: 'Huawei[ _\-]?([^/;]*) Build' model: '$1' - - regex: '(?:HW-)?Huawei(?:/1\.0/0?(?:Huawei))?[_\- /]?([a-z0-9\-_]+)' + - regex: '(?:HW-)?Huawei(?!Browser)(?:/1\.0/0?(?:Huawei))?[_\- /]?([a-z0-9\-_]+)' model: '$1' - regex: 'Huawei; ([a-z0-9 \-]+)' model: '$1' # Hyundai Hyundai: - regex: 'Hyundai|Ultra (?:Active|Air|Charm|Dream|Energy|Latitude|Link|Live|Shadow|Shine|Storm|Style|Sync|Trend|Vision|Wave)|G(24027|2552[34])K|W25042L' + regex: 'Hyundai|Ultra (?:Active|Air|Charm|Dream|Energy|Latitude|Link|Live|Shadow|Shine|Storm|Style|Sync|Trend|Vision|Wave)|Ultra_Vision_Plus|E(?:475|504|603)|G(?:24027|2552[34])K|W25042L|HP554O|Seoul S8|L503F Plus|HT0701L16|HT0704K08|HT1004L16|HT1004LI16|Koral_8W2|Eternity[_ ]G25|HYMI 5S Plus|7GB1|7WD1|(?:Android 9.+ E553)(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'Ultra[_ ]Vision[_ ]Plus' + model: 'Ultra Vision Plus' - regex: 'Ultra (Active|Air|Charm|Dream|Energy Lite|Energy Plus|Energy|Latitude|Link|Live II|Live|Shadow|Shine|Storm|Style|Sync|Trend|Vision|Wave)' model: 'Ultra $1' + - regex: 'Seoul S8' + model: 'Seoul S8' - regex: 'G25523K' model: 'Eternity G23' + - regex: 'Eternity[_ ]G25' + model: 'Eternity G25' - regex: 'G25524K' model: 'Eternity G24' - regex: 'G24027K' model: 'Eternity G27' - regex: 'W25042L' model: 'Eternity W42' + - regex: 'HP554O' + model: 'HP554O' + - regex: 'L503F Plus' + model: 'L503F Plus' + - regex: 'HYMI 5S Plus' + model: 'Hymi 5S Plus' + - regex: 'E(475|504|553|603)(?:[);/ ]|$)' + model: 'E$1' + - regex: '(?:Hyundai_)?(Eternity_(?:G57L?|G[56]0))' + model: '$1' + + # explicit tables models + - regex: 'HT0701L16' + model: 'Koral 7XL' + device: 'tablet' + - regex: 'HT1004LI16' + model: 'Koral 10XL' + device: 'tablet' + - regex: 'Koral_8W2' + model: 'Koral 8W2' + device: 'tablet' + - regex: 'HT1004L16' + model: 'Koral 10XL' + device: 'tablet' + - regex: 'HT0704K08' + model: 'Koral 7M4' + device: 'tablet' + - regex: '7GB1(?:[);/ ]|$)' + model: 'HyTab 7GB1' + device: 'tablet' + - regex: '7WD1(?:[);/ ]|$)' + model: 'HyTab Lite 7WD1' + device: 'tablet' - regex: 'Hyundai ([^;/]+) Build' model: '$1' device: 'tablet' @@ -6390,14 +8976,28 @@ Hyundai: - regex: 'i-Joy ([^;/]+) Build' model: '$1' -# iBall +# iBall (iball.co.in) iBall: - regex: 'iBall[ _]([^;/)]+)[ _]Build|(Snap_4G2)(?:[);/ ]|$)' + regex: 'iBall[ _]([^;/)]+)[ _]Build|iBall_Slide|(?:Snap[_ ]4G2|6351-Q400i|iT-KSA0003|iT-KSA0012|iT-KSA0066|Avid|Twinkle_i5|Gorgeo[_ ]4GL|Brisk 4G2|Blaze_V4|Wondro 10|Q27 4G|Andi (?:Wink|5G Blink) 4G|Co-Mate)(?:[);/ ]|$)' device: 'tablet' models: - - regex: '(Snap_4G2)(?:[);/ ]|$)' + - regex: 'Andi Wink 4G' + device: 'smartphone' + model: 'Andi Wink 4G' + - regex: 'Andi 5G Blink 4G' + device: 'smartphone' + model: 'Andi 5G Blink 4G' + - regex: '(Snap[_ ]4G2|Avid|Twinkle_i5|Gorgeo[_ ]4GL|Blaze_V4|Wondro 10|Q27 4G|Brisk 4G2|Co-Mate)(?:[);/ ]|$)' model: '$1' - - regex: 'iBall[ _]([^;/)]+)[ _]Build' + - regex: '6351-Q400i(?:[);/ ]|$)' + model: 'Slide' + - regex: 'iT-KSA0003(?:[);/ ]|$)' + model: 'iTAB BizniZ' + - regex: 'iT-KSA0066(?:[);/ ]|$)' + model: 'iTAB BizniZ Mini' + - regex: 'iT-KSA0012(?:[);/ ]|$)' + model: 'iTAB Moviez Pro' + - regex: 'iBall[ _]([^;/)]+)(?:[ _]Build|\))' model: '$1' # iRola @@ -6414,13 +9014,18 @@ iRola: # iRulu iRulu: - regex: 'iRULU[ _](X11|V[34])(?:[);/ ]|$)' + regex: 'iRULU[ _-](X11|V[34]|U2|AL101)(?:[);/ ]|$)' device: 'tablet' - model: '$1' + models: + - regex: 'iRULU[ _-](X11|V[34]|AL101)(?:[);/ ]|$)' + model: '$1' + - regex: 'iRULU[ _](U2)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' # Irbis Irbis: - regex: 'IRBIS|TZ(1(?:0[04]|42|50|84|65|7[01345-89]|8[356]|9[12578])|49|7(?:1[2467]|2[01567]|37|4[257]|5[23457]|6[12]|72|7[17]|8[1]|9[47])|8(?:[34]1|5[3-8]|6[45]|7[2478]|8[1-5]|9[0127])|96[0-9])|TZ(?:one|art|HIT|81L)|(SP(?:0[56]|2[01]|4[1-36]|40[12]|45[345]|49[34]|50|51[0147]|531|54[12]|55[0124]|571))(?:[);/ ]|$)' + regex: 'IRBIS|TZ(1(?:0[04]|42|5[01]|84|65|7[01345-89]|8[356]|9[12578])|200|49|55|72|22|7(?:0[127]|1[1-46789]|2[021567]|3[025-8]|4[257]|5[23457]|6[12]|72|7[137]|8[1]|9[147])|8(?:[34]1|32|5[3-8]|6[2-5]|7[12478]|8[1-5]|9[0127])|96[0-9])|TZ85|TZ13|TZ(?:one|art|HIT|81L)|(SP(?:0[56]|2[01]|4[1-36]|40[12]|45[345]|49[34]|50|51[0147]|531|54[12]|55[0124]|571))(?:[);/ ]|$)' device: 'tablet' models: - regex: '(TZ(?:[0-9]+)|TZ(?:one|art|HIT|81L))(?:[);/ ]|$)' @@ -6441,17 +9046,25 @@ iBerry: # iHunt iHunt: - regex: 'iHunt|One_ Love_|TITAN_P11000_PRO|Like_(3|4U|3_Pro)|X300 Elite|S10_Tank_2019|S60_Discovery_2019|AlienXLite2020' + regex: 'iHunt|One_ Love_|TITAN[_ ]P\d+|Like_(3|4U|3_Pro)|X300 Elite|S10_Tank_2019|S10 Tank PRO 2020|S60_Discovery_2019|AlienXLite2020|Alien X Lite|Alien_X|S[23]0 Ultra ApeX 2021|S21 Ultra 4G 2021|Like 11 Panda Pro|Like_Hi10_2021|S21 Plus 2021' device: 'smartphone' models: + - regex: 'Like_Hi10_2021' + model: 'Like Hi10 (2021)' - regex: 'iHunt_Like' model: 'Like' - regex: 'S10_Tank_2019' model: 'S10 Tank (2019)' + - regex: 'S10 Tank PRO 2020' + model: 'S10 Tank Pro (2020)' - regex: 'One_ Love_' model: 'One Love' - regex: 'TITAN_P11000_PRO' model: 'Titan P11000 Pro' + - regex: 'TITAN P4000 Pro 2021' + model: 'Titan P4000 Pro (2021)' + - regex: 'Titan P8000 PRO 2021' + model: 'Titan P8000 Pro (2021)' - regex: 'Like_3_Pro' model: 'Like 3 Pro' - regex: 'Like_3' @@ -6462,12 +9075,34 @@ iHunt: model: 'X300 Elite' - regex: 'S60_Discovery_2019' model: 'S60 Discovery (2019)' + - regex: 'S60 Discovery Pro 2022' + model: 'S60 Discovery Pro (2022)' - regex: 'AlienXLite2020' model: 'Alien X Lite (2020)' + - regex: 'Alien X Lite PRO' + model: 'Alien X Lite Pro' + - regex: 'Alien X Lite' + model: 'Alien X Lite' + - regex: 'Alien_X_ApeX_2020' + model: 'Alien X ApeX (2020)' + - regex: 'Alien_X_ApeX' + model: 'Alien X ApeX' + - regex: 'Alien_X' + model: 'Alien X' + - regex: 'S21 Plus 2021' + model: 'S21 Plus (2021)' + - regex: 'S([23]0) Ultra ApeX 2021' + model: 'S$1 Ultra ApeX (2021)' + - regex: 'S21 Ultra 4G 2021' + model: 'S21 Ultra 4G (2021)' + - regex: 'Like 11 Panda Pro 2022' + model: 'Like 11 Panda Pro (2022)' + - regex: 'iHunt ([^;)/]+)(?: Build|[;)])' + model: '$1' # IconBIT IconBIT: - regex: 'IconBIT|NT-(3506M|0704S|0909T|1009T|10[01]1T|1017T|3601P/3602P|3603P|3702S|3805C|3905T|3701S|0701S|0805C|0902S|370[23]M)|XDS[789]4K' + regex: 'IconBIT|NT-(3506M|1501C|0704S|0909T|1009T|10[01]1T|1017T|3601P/3602P|3603P|3702S|3805C|3905T|3701S|0701S|0805C|0902S|370[23]M)|XDS[789]4K|Omnicast UHD|Movie Smart 4K|Movie IPTV Quad|TOUCAN (?:NANO|Stick) 4K|NetTAB_Space_3G' device: 'tablet' models: - regex: 'NT-3506M' @@ -6501,12 +9136,26 @@ IconBIT: model: 'NetTAB Skat MX' - regex: 'NT-0902S' model: 'NetTAB Space quad RX' + - regex: 'NetTAB_Space_3G' + model: 'NetTAB Space 3G' - regex: 'NT-3702M' model: 'NetTAB Matrix 3G duo' - regex: 'NT-3703M' model: 'NetTAB Matrix 3GT' + - regex: 'MATRIX ULTRA' + model: 'NetTAB Matrix Ultra' + + - regex: 'NT-1501C' + model: 'Callisto 100' + device: 'wearable' - - regex: '(?:iconBIT )?(Movie Ultra HD 4K|XDS[789]4K)' + - regex: 'TOUCAN NANO 4K' + model: 'Toucan Nano 4K' + device: 'tv' + - regex: 'TOUCAN Stick 4K' + model: 'Toucan Stick 4K' + device: 'tv' + - regex: '(?:iconBIT )?(Movie Smart 4K|Movie IPTV Quad|Movie Ultra HD 4K|XDS[789]4K|Omnicast UHD|Stick|XDS1000)' model: '$1' device: 'tv' @@ -6585,17 +9234,21 @@ LYF: # Lumus Lumus: - regex: '(?:NEO(SR620|SC600)|Lumus[_ ]Ion)(?:[);/ ]|$)' + regex: '(?:NEO(SR620|SC600)|INNOSR545|Lumus[_ ]Ion|AEONSR570)(?:[);/ ]|$)' device: 'smartphone' models: + # explicit smartphone models - regex: 'NEO(SR620|SC600)(?:[);/ ]|$)' model: 'Neo $1' + - regex: 'INNO(SR545)(?:[);/ ]|$)' + model: 'INNO $1' - regex: 'Lumus[_ ]Ion(?:[);/ ]|$)' model: 'Ion' - + - regex: 'AEON(SR570)(?:[);/ ]|$)' + model: 'AEON $1' # M4tel M4tel: - regex: 'M4 SS[0-9]{4}(?:-R)?|M4_B[23]' + regex: '(?:M4 SS[0-9]{4}(?:-R)?|M4_B[23]|M4_R2|R2_Plus)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'SS1050' @@ -6626,6 +9279,10 @@ M4tel: model: 'Believe' - regex: 'SS4452' model: 'Dream' + - regex: 'SS4453-R' + model: 'R1 Feel' + - regex: 'R2_Plus' + model: 'R2 Plus' - regex: 'SS4453' model: 'Inspiration' - regex: 'SS4455' @@ -6642,20 +9299,28 @@ M4tel: model: 'Attitude' - regex: 'M4_B([23])' model: 'B$1' + - regex: 'M4_R(2)' + model: 'R$1' -# IMO Mobile +# IMO Mobile or In My Opinion Mobile (imomobile.co.uk) IMO Mobile: - regex: '(?:IMO)(?:[);/ ]|$)' + regex: 'IMO[ _]\w' device: 'smartphone' models: - - regex: 'IMO[ _]Q2 Plus(?:[);/ ]|$)' - model: 'Q2 Plus' + - regex: 'IMO[ _]Q([23]) Plus(?:[);/ ]|$)' + model: 'Q$1 Plus' + - regex: 'IMO[ _]Q([4]) Pro(?:[);/ ]|$)' + model: 'Q$1 Pro' - regex: 'IMO[ _]Q2(?:[);/ ]|$)' model: 'Q2' + - regex: 'IMO[ _]S2(?:[);/ ]|$)' + model: 'S2' - regex: 'IMO[ _]FEEL A2(?:[);/ ]|$)' model: 'Feel A2' - regex: 'IMO[ _]S50(?:[);/ ]|$)' model: 'S50 Light' + - regex: 'IMO[ _]S80(?:[);/ ]|$)' + model: 'S80 Hero' - regex: 'IMO[ _]S89(?:[);/ ]|$)' model: 'S89 Miracle' - regex: 'IMO[ _]S88(?:[);/ ]|$)' @@ -6674,6 +9339,8 @@ IMO Mobile: model: 'Q8 Clarity' - regex: 'IMO[ _]Discovery II(?:[);/ ]|$)' model: 'Discovery II' + - regex: 'IMO[ _]Q(?:[);/ ]|$)' + model: 'Q' - regex: 'IMO[ _](Y5|Z[67])(?:[);/ ]|$)' model: 'Tab $1' @@ -6682,7 +9349,7 @@ IMO Mobile: model: 'Tab X9' device: 'tablet' -# iLA +# iLA or ILA Mobile iLA: regex: 'iLA[-_ ](Silk|X)(?:[);/ ]|$)' device: 'smartphone' @@ -6690,7 +9357,7 @@ iLA: # iNew iNew: - regex: 'iNew|(?:V7A|V3 Plus|V3-?E|V3C)(?:[);/ ]|$)' + regex: 'iNew|(?:V7A|V3 Plus|V3-?E|V3C|FIRE_Tab_6)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'V3C(?:[);/ ]|$)' @@ -6701,23 +9368,42 @@ iNew: model: 'V3 Plus' - regex: 'V7A(?:[);/ ]|$)' model: 'V7A' + - regex: 'FIRE_Tab_6(?:[);/ ]|$)' + device: 'tablet' + model: 'Fire Tab 6' + - regex: 'iNew[ -_]([^;/]+) Build' model: '$1' # iPro iPro: - regex: 'Kylin[ _]5.[05]|Jade7s' + regex: '(?:Kylin[ _]5.[05]S?|KYLIN40|Jade[78]s|Amber[67]S?|Amber5S_Pro|Phonenix50S|Zafiro|I9355A|Opal 4S)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Kylin_5.0S' model: 'Kylin 5.0S' - regex: 'Kylin (5.[05])' model: 'Kylin $1' - - regex: 'Jade7s' - model: 'Jade 7s' - - -# Infinix + - regex: 'KYLIN40' + model: 'Kylin 40' + - regex: 'Opal 4S' + model: 'Opal 4S' + - regex: 'Jade([78])s' + model: 'Jade $1s' + - regex: 'Amber7S' + model: 'Amber 7S' + - regex: 'Amber5S_Pro' + model: 'Amber 5S Pro' + - regex: 'Amber6' + model: 'Amber 6' + - regex: 'Phonenix50S' + model: 'Phonenix 50S' + - regex: 'Zafiro' + model: 'Zafiro' + - regex: '(I9355A)' + model: '$1' + +# Infinix (infinixmobility.com) Infinix: regex: 'Infinix' device: 'smartphone' @@ -6773,6 +9459,12 @@ Infinix: model: 'Zero 5 Pro' - regex: 'Infinix[ _-]X620' model: 'Zero 6' + - regex: 'Infinix[ _-]X687B' + device: 'phablet' + model: 'Zero 8i' + - regex: 'Infinix[ _-]X687' + device: 'phablet' + model: 'Zero 8' - regex: 'Infinix[ _-]X507' model: 'Hot' @@ -6798,22 +9490,58 @@ Infinix: model: 'Hot 6 Pro' - regex: 'Infinix[ _-]X624' model: 'Hot 7' + - regex: 'Infinix[ _-]X625' + model: 'Hot 7 Pro' - regex: 'Infinix[ _-]X650' model: 'Hot 8' - - regex: 'Infinix[ _-]X680' + - regex: 'Infinix[ _-]X655F' + model: 'Hot 9 Pro' + - regex: 'Infinix[ _-]X655' + model: 'Hot 9' + - regex: 'Infinix[ _-]X680[BCEF]' model: 'Hot 9 Play' + - regex: 'Infinix[ _-]X680D' + model: 'Smart 4 Plus' + - regex: 'Infinix[ _-]X680' + model: 'Smart 4' + - regex: 'Infinix[ _-]X688' + model: 'Hot 10 Play' + - regex: 'Infinix[ _-]X682[BC]' + model: 'Hot 10' + - regex: 'Infinix[ _-]X689C' + model: 'Hot 10T' + - regex: 'Infinix X689D' + model: 'Hot 10s NFC' + - regex: 'Infinix X689' + model: 'Hot 10s' + - regex: 'Infinix[ _-](?:X659|PR652|X658)' + model: 'Hot 10i' - regex: 'Infinix[ _-]X573B?' model: 'Hot S3' + - regex: 'Infinix[ _-]X6812' + model: 'Hot 11S' + - regex: 'Infinix[ _-]X612' + model: 'Smart HD (2021)' - regex: 'Infinix[ _-]X5010' model: 'Smart' - regex: 'Infinix[ _-]X5515F' model: 'Smart 2' + - regex: 'Infinix[ _-]X609' + model: 'Smart 2 HD' + - regex: 'Infinix[ _-]X627' + model: 'Smart 3 Plus' - regex: 'Infinix[ _-]X5514D' model: 'Smart 2 Pro' - regex: 'Infinix[ _-]X653' model: 'Smart 4' + - regex: 'Infinix[ _-]X657' + model: 'Smart 5' + - regex: 'Infinix[ _-]X6511' + model: 'Smart 6' + - regex: 'Infinix[ _-]X652B' + model: 'S5 Lite' - regex: 'Infinix[ _-]X626' model: 'S4' - regex: 'Infinix[ _-]X652' @@ -6839,6 +9567,9 @@ Infinix: - regex: 'Infinix[ _-]X604' model: 'Note 5' device: 'phablet' + - regex: 'Infinix[ _-]X605' + model: 'Note 5 Stylus' + device: 'phablet' - regex: 'Infinix[ _-]X610' model: 'Note 6' device: 'phablet' @@ -6848,10 +9579,28 @@ Infinix: - regex: 'Infinix[ _-]X656' model: 'Note 7 Lite' device: 'phablet' - - - regex: 'Infinix HOT ([a-z]?[1-6])( (?:Lite|Plus|Pro))?' - model: 'Hot $1$2' - - regex: 'Infinix[ _-](X[78]00)' + - regex: 'Infinix[ _-]X692' + model: 'Note 8' + device: 'phablet' + - regex: 'Infinix[ _-]X683' + model: 'Note 8i' + device: 'phablet' + - regex: 'Infinix[ _-]X695' + model: 'Note 10 Pro' + device: 'phablet' + - regex: 'Infinix[ _-]X693' + model: 'Note 10' + device: 'phablet' + - regex: 'Infinix[ _-]X663' + model: 'Note 11' + device: 'phablet' + - regex: 'Infinix[ _-]X697' + model: 'Note 11 Pro' + device: 'phablet' + + - regex: 'Infinix HOT ([a-z]?[1-6])( (?:Lite|Plus|Pro))?' + model: 'Hot $1$2' + - regex: 'Infinix[ _-](X[78]00)' device: 'tablet' model: '$1' - regex: 'Infinix[ _-](X\d+)' @@ -6861,7 +9610,7 @@ Infinix: # InFocus InFocus: - regex: 'IF(9001|9007|9021|9035|9031)(?:[);/ ]|$)' + regex: 'IF(900[1237]|902[19]|903[15])(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'IF9001' @@ -6872,12 +9621,18 @@ InFocus: model: 'Turbo 5 Plus' - regex: 'IF9035' model: 'A2' + - regex: 'IF9002' + model: 'M5s' + - regex: 'IF9003' + model: 'M6s' - regex: 'IF9031' model: 'Vision 3' + - regex: 'IF9029' + model: 'Vision 3 Pro' -# InnJoo +# InnJoo (innjoo.es) InnJoo: - regex: 'InnJoo|(?:Halo Plus|Halo X|Halo[ _]4(?:[ _]mini[ _]LTE)?|Halo2 3G)(?:[);/ ]|$)' + regex: 'InnJoo|(?:Halo Plus|Halo X|Halo[ _]4(?:[ _]mini[ _]LTE)?|Halo2 3G|Fire2 Plus LTE|Superb_PLus)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'InnJoo[ _]X3(?:[);/ ]|$)' @@ -6902,6 +9657,10 @@ InnJoo: model: '2 LTE' - regex: 'InnJoo[ _]([2-4])' model: '$1' + - regex: 'Fire2 Plus LTE' + model: 'Fire 2 Plus LTE' + - regex: 'Superb_PLus' + model: 'SuperB Plus' # Inkti Inkti: @@ -6909,6 +9668,12 @@ Inkti: device: 'smartphone' model: '$1' +# Innos +Innos: + regex: 'Innos_?(D6000)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + # Innostream Innostream: regex: 'INNO([a-z0-9]+)' @@ -6939,6 +9704,14 @@ Insignia: model: '4K (2018)' device: 'tv' +# INSYS (https://www.insys.pt/) +INSYS: + regex: 'HK9-4010(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'HK9-4010' + model: 'HK9-4010' + # Inq INQ: regex: 'INQ[/ ]' @@ -6952,11 +9725,29 @@ INQ: # Intex Intex: - regex: 'Intex|(Aqua|Cloud[ _][XY][0-9]{1}|Cloud (?:Fame|Glory) 4G)' - device: 'smartphone' - models: + regex: 'Intex|(Aqua|Cloud[ _][XY][0-9]{1}|Cloud (?:Fame|Glory) 4G)|CLOUD TREAD|IM0318ND(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'IM0318ND' + model: 'Aqua Lions 3' + - regex: 'AQUA[ _]LIONS[ _]T1[ _]LITE(?:[);/ ]|$)' + model: 'Aqua Lions T1 Lite' + - regex: 'AQUA[ _]LIONS[ _]([NT]1|[23]|E3)(?:[);/ ]|$)' + model: 'Aqua Lions $1' + - regex: 'AQUA (A4) PLUS(?:[);/ ]|$)' + model: 'Aqua $1 Plus' + - regex: 'AQUA[ _](A4|S[13])(?:[);/ ]|$)' + model: 'Aqua $1' + - regex: 'AQUA CRYSTAL\+(?:[);/ ]|$)' + model: 'Aqua Crystal Plus' + - regex: 'AQUA FulVU e5(?:[);/ ]|$)' + model: 'Aqua Fulvu E5' + - regex: 'AQUA JEWEL 2(?:[);/ ]|$)' + model: 'Aqua Jewel 2' - regex: 'Intex[ _]([^/;]*)[ _]Build' model: '$1' + - regex: 'CLOUD TREAD(?:[);/ ]|$)' + model: 'Cloud Tread' - regex: '(Cloud (?:Fame|Glory) 4G)' model: '$1' - regex: '(Aqua|Cloud)[ _\.]([^/;\)]+)(?:[ _]Build|(?<!Build)/|\))' @@ -7018,14 +9809,15 @@ iOcean: - regex: 'iOCEAN[ _\-]?([^);/ ]+)' model: '$1' -# iView +# iView (iviewus.com) iView: - regex: '733TPC' - device: 'smartphone' + regex: '(?:(?:733|730|766|930)TPC|769TPC(?:II)?|744TPC plus)(?:[);/ ]|$)' + device: 'tablet' models: - - regex: '733TPC' - device: 'tablet' - model: '733TPC' + - regex: '744TPC plus' + model: '744TPC Plus' + - regex: '((?:733|730|766|930)TPC|769TPC(?:II)?)(?:[);/ ]|$)' + model: '$1' # Impression Impression: @@ -7048,22 +9840,100 @@ Impression: #iLife or i-life (lifedigital.com) iLife: - regex: '(ITELL_K3500N)(?:[);/ ]|$)' + regex: '(ITELL[_ ](?:K3300|K3500N?|K4700)|WTAB_714|WTAB 805)(?:[);/ ]|$)' device: 'tablet' model: '$1' # iTel iTel: - regex: 'itel|iNote' + regex: 'itel|iNote|GP10X2019(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'W6502' + device: 'phablet' + model: 'S16' + - regex: 'L6503' + device: 'phablet' + model: 'S16 Pro' + - regex: 'W5505' + model: 'A36' + - regex: 'A571W' + model: 'A37' + - regex: 'W6002E?' + model: 'S15' + - regex: 'W5005' + model: 'P15' + - regex: 'L5502' + model: 'A44 Air' + - regex: 'L5505' + model: 'A47' + - regex: 'W5006X' + model: 'A17' + - regex: 'L6006' + model: 'A48' + - regex: 'P651W' + model: 'P37' + - regex: 'P681L' + model: 'P37 Pro' + - regex: 'L5007' + model: 'A24' + - regex: 'L6003P' + model: 'A55 LTE' + - regex: 'L6002P' + model: 'S15 Pro' + - regex: 'L5006C' + model: 'A23 Pro' + - regex: 'L5002P' + model: 'A25 Pro' + - regex: 'L5002' + model: 'A25' + - regex: 'L5503' + model: 'A46' + - regex: 'W6004P' + model: 'A56 Pro' + - regex: 'L6004L' + model: 'AC60' + - regex: 'W4001' + model: 'AC13' + - regex: '[LW]6004' + model: 'A56 LTE' + - regex: 'W6001' + model: 'P33 Plus' + - regex: 'W5001P' + model: 'A33' + - regex: 'W6003' + model: 'A55' + - regex: 'A611W' + model: 'A57' + - regex: 'L6005' + model: 'Vision 1' + - regex: 'P651L' + model: 'Vision 2S' + - regex: 'L6501' + model: 'Vision 1 Plus' + - regex: 'L6502' + model: 'Vision 1 Pro' + - regex: 'GP10X2019' + model: 'GP10X2019' - regex: 'iNote ([^/;]*)Build' model: 'iNote $1' - regex: 'iNote_([a-z0-9\-_]+)' model: 'iNote $1' - - regex: 'itel-it(1512|1520)(?:[);/ ]|$)' + - regex: 'itel-it(1410|1512|1520)(?:[);/ ]|$)' model: 'it$1' - - regex: 'iTel ([^/;]*)Build' + - regex: 'itel-it1553(?:[);/ ]|$)' + model: 'Power Pro' + - regex: 'itel[- ](A14|A16 Plus|A44 Power|A23S|A52 Lite)' + model: '$1' + + - regex: 'itel it1701' + device: 'tablet' + model: 'iNote Prime' + - regex: 'itel it170([23])' + device: 'tablet' + model: 'iNote Prime $1' + + - regex: 'iTel ([^/;)]+)(?: Build|[;)])' model: '$1' - regex: 'iTel[_ ]([a-z0-9\-_]*)' model: '$1' @@ -7080,7 +9950,7 @@ iZotron: # JAY-Tech JAY-Tech: - regex: 'TPC-[A-Z0-9]+|TPCY-TX[TE][^);/ ]+' + regex: '(?<!VIVAX )TPC-[A-Z0-9]+|TPCY-TX[TE][^);/ ]+' device: 'tablet' models: - regex: 'TPC-([A-Z0-9]+)' @@ -7090,15 +9960,15 @@ JAY-Tech: # Jiayu Jiayu: - regex: 'JIAYU[ _-]|(?:JY-G4[\\_]G5|(?:JY-[a-z0-9]+))(?:[);/ ]|$)' + regex: 'JIAYU[ _-]|(?:JY-G4[\\_]G5|(?:JY-[a-z0-9]+)|JY_G4C)(?:[);/ ]|$)' device: 'smartphone' models: - regex: '(?:JIAYU G4_G5|JY-G4[\\_]G5)(?:[);/ ]|$)' model: 'G4/G5' - regex: 'JIAYU[ _-](G4[S]?|G2F|G3[S]?|S[23])(?:[);/ ]|$)' model: '$1' - - regex: '(JY-[a-z0-9]+)(?:[);/ ]|$)' - model: '$1' + - regex: 'JY[-_]([a-z0-9]+|G4C)(?:[);/ ]|$)' + model: 'JY-$1' # Jolla Jolla: @@ -7106,7 +9976,16 @@ Jolla: device: 'smartphone' model: '' -# Just5 +# Juniper Systems (https://junipersys.com/) +'Juniper Systems': + regex: 'Junipers/' + device: 'smartphone' + models: + - regex: 'Cedar#CT8' + device: 'tablet' + model: 'CT8' + +# Just5 (www.just5.com) Just5: regex: 'JUST5(-)?SPACER(s)?|COSMO[_ ](L707|L808)|BLASTER|FREEDOM[ _](C100|M303|X1)|Freedom' device: 'smartphone' @@ -7128,13 +10007,34 @@ Just5: - regex: 'BLASTER' model: 'Blaster' -# Kalley +# Kalley (www.kalley.com.co) Kalley: - regex: 'ELEMENT Q' - device: 'smartphone' - models: + regex: 'KALLEY|(?:ELEMENT (?:4 Plus|MAX|Q)|ELEMENT_PRO_2|K-BOOK(?:8MG|73G)|SILVER_MAX|Silver Max (?:Lite|Pro)|Black G|ATV R[12])(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Black G' + model: 'Black G' + - regex: 'Element 4 Plus' + model: 'Element 4 Plus' + - regex: 'ELEMENT MAX' + model: 'Element Max' + - regex: 'SILVER_MAX' + model: 'Silver Max' + - regex: 'Silver Max (Lite|Pro)' + model: 'Silver Max $1' - regex: 'ELEMENT Q' model: 'Element Q' + - regex: 'ELEMENT_PRO_2' + model: 'Element Pro 2' + - regex: 'K-BOOK(8MG|73G)' + device: 'tablet' + model: 'K-BOOK$1' + - regex: 'ATV (R[12])' + device: 'tv' + model: 'Android TV $1' + - regex: 'KALLEY,(55D1240)' + device: 'tv' + model: '$1' # Kaan Kaan: @@ -7144,24 +10044,34 @@ Kaan: # Kazam Kazam: - regex: 'Kazam|Trooper_X[0-9][0-9](?:[);/ ]|$)|Tornado 348' + regex: 'Kazam|(?:Trooper_X[0-9][0-9]|Tornado 348|TROOPER 4\.0)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Tornado 348' model: 'Tornado 348' - regex: 'Thunder 450W' model: 'Thunder 450W' + - regex: 'TROOPER 4\.0' + model: 'Trooper X4.0' - regex: 'Trooper_X([0-9])([0-9])(?:[);/ ]|$)' model: 'Trooper X$1.$2' - regex: 'Kazam[; _]([^;/)]+)(?: Build|\))' model: '$1' +# Kazuna (https://kazuna.co.jp/) +Kazuna: + regex: 'KAZ-N20' + device: 'smartphone' + models: + - regex: 'KAZ-N20' + model: 'eTalk MYFLIX' + # Keneksi Keneksi: - regex: 'KENEKSI|(Hemera|Teta Dual)(?:[);/ ]|$)' + regex: 'KENEKSI|(?:Hemera|Teta Dual|Helios)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: '(Hemera|Teta Dual)(?:[);/ ]|$)' + - regex: '(Hemera|Teta Dual|Helios)(?:[);/ ]|$)' model: '$1' - regex: 'KENEKSI[ _-]liberty' model: 'Liberty' @@ -7176,9 +10086,9 @@ Keneksi: - regex: 'KENEKSI[ _-](Moon|Libra_Dual|Glass|Amber|Chance|Amulet|Choice|Crystal|Dream|Delta[_ ]Dual|Norma 2|Norma|Sky|Fire 2|Fire|Flame|Flora|Rock|Solo|Soul|Step|Smart|Star|Storm|Wind)' model: '$1' -# Kempler & Strauss +# Kempler & Strauss (www.kemplerusa.com) 'Kempler & Strauss': - regex: 'Alumini_?3_?Plus|Alumini ?[23]|KEMPLER_(TV|X)' + regex: 'Alumini_?3_?Plus|Alumini ?[23]|KEMPLER_(?:P1|TV|[X9]|8_PLUS)' device: 'smartphone' models: - regex: 'Alumini ?2' @@ -7187,22 +10097,25 @@ Keneksi: model: 'Alumini 3 Plus' - regex: 'Alumini3' model: 'Alumini 3' + - regex: 'KEMPLER_P1' + model: 'P1' - regex: 'KEMPLER_TV' model: 'TV' - regex: 'KEMPLER_X' model: 'X' + - regex: 'KEMPLER_8_PLUS' + model: '8 Plus' + - regex: 'KEMPLER_9' + model: '9' # Kiano Kiano: - regex: 'Kiano|Elegance_[45]_[015](?:_PRO)?|CORE 10.1 DUAL 3G|Intelect ?(7|8|10)|Slim ?Tab ?\d+(?:[_ ]3GR?)?(?:[);/ ]|$)|Cavion[_ ]' + regex: 'Kiano|Elegance_[45]_[015](?:_PRO)?|Elegance 6|CORE 10.1 DUAL 3G|Intelect ?(7|8|10)|Slim ?Tab ?\d+(?:[_ ]3GR?)?(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Slim ?Tab ?(\d+)(?:[_ ]3GR?)?' model: 'Slim Tab $1' device: 'tablet' - - regex: 'Cavion[_ ](?:Base[_ ])?(\d+)' - model: 'Cavion Base $1' - device: 'tablet' - regex: 'CORE 10.1 DUAL 3G' model: 'CORE 10.1 DUAL 3G' device: 'tablet' @@ -7210,12 +10123,20 @@ Kiano: model: 'Elegance $1.$2" Pro' - regex: 'Elegance_([45])_([015])' model: 'Elegance $1.$2"' + - regex: 'Elegance 6' + model: 'Elegance 6 5.85"' - regex: '(Kiano)?(Intelect|Elegance) ?(7|8|10)?' model: '$2 $3' device: 'tablet' - regex: 'Kiano[ _]([^;/]+) Build' model: '$1' +# Kingbox +Kingbox: + regex: 'Kingbox' + device: 'tv' + model: '' + # Kingsun Kingsun: regex: 'Kingsun[ _-]' @@ -7228,9 +10149,11 @@ Kingsun: # Kocaso Kocaso: - regex: 'Kocaso|M(?:729|7[357][026][hw]?|76[01236][bw]?|83[016]|8[567]0|1050s|106[012368]w?|1070|X736(?:-kit)?|X780)(?:[);/ ]|$)' + regex: 'Kocaso|M(?:6200|729|7[357][026][hw]?|76[01236][bw]?|83[016]|8[567]0|1050s|106[012368]w?|1070|X736(?:-kit)?|X780)(?:[);/ ]|$)' device: 'tablet' models: + - regex: 'M6200(?:[);/ ]|$)' + model: 'M6200' - regex: 'M729(?:[);/ ]|$)' model: 'M729' - regex: 'M(7[357][026])[hw]?(?:[);/ ]|$)' @@ -7253,8 +10176,6 @@ Kocaso: model: 'M1070' - regex: 'MX736(?:-kit)?(?:[);/ ]|$)' model: 'MX736' - - regex: 'MX780(?:[);/ ]|$)' - model: 'MX780' - regex: 'Kocaso[ _\-]?([^;/]+) Build' model: '$1' - regex: 'Kocaso[ _\-]?([a-z0-9_-]+)' @@ -7272,12 +10193,12 @@ Kogan: # Komu Komu: - regex: 'Komu[ -]' + regex: 'Komu[_ -]' device: 'smartphone' models: - - regex: 'Komu[ -]([^;/]+) Build' + - regex: 'Komu[_ -]([^;/]+) Build' model: '$1' - - regex: 'Komu[ -]([a-z0-9_-]+)' + - regex: 'Komu[_ -]([a-z0-9_-]+)' model: '$1' # Koobee @@ -7308,23 +10229,30 @@ KT-Tech: # kddi KDDI: - regex: 'kddi-([a-z0-9]+)' + regex: 'kddi-([a-z0-9]+)|INFOBAR A01' device: 'feature phone' - model: '$1' + models: + - regex: 'kddi-([a-z0-9]+)' + model: '$1' + - regex: 'INFOBAR (A01)' + device: 'smartphone' + model: 'iida InfoBar $1' # Kodak Kodak: - regex: 'KODAK|IM5|Ektra(?:[);/ ]|$)' + regex: 'KODAK|(?:IM5|KD50|Ektra|Smartway[_ ](?:[FT]1|L2)|D55L|D60LX)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'IM5' model: 'IM5' + - regex: '(KD50|D55L|D60LX)' + model: 'Seren $1' - regex: 'Ektra(?:[);/ ]|$)' model: 'Ektra' - - regex: 'KODAK_SMARTWAY_((M|T)1)' + - regex: '(?:KODAK[_ ])?SMARTWAY[_ ]L1 PRO' + model: 'Smartway L1 Pro' + - regex: '(?:KODAK[_ ])?SMARTWAY[_ ]([FLMTX]1|[LM]2|T3)' model: 'Smartway $1' - - regex: 'SMARTWAY X1' - model: 'Smartway X1' - regex: 'Tablet (7|10)' device: 'tablet' model: 'Tablet $1' @@ -7347,25 +10275,35 @@ Koridy: # KRONO KRONO: - regex: 'NET1100' + regex: 'NET1100|NET_(?:TITAN|VOLT)' device: 'smartphone' models: - regex: 'NET1100' model: 'NET 1100' + - regex: 'NET_(TITAN|VOLT)' + model: 'NET $1' #k-touch K-Touch: - regex: 'K-?Touch[ _][a-z0-9]+' + regex: 'K-?Touch[ _][a-z0-9]+|Pace 2 Lite(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'Pace 2 Lite' + model: 'Pace 2 Lite' - regex: 'K-?Touch[ _]([^/;]*)[ _]Build' model: '$1' - regex: 'K-?Touch[ _]([a-z0-9]+)' model: '$1' +# Diva +Diva: + regex: '(QC-(?:703GN|704GA|803GN|1013G|7BHD))(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + # kyocera (kyocera.co.jp, kyocera.com) Kyocera: - regex: 'Kyocera|KWC-|QC-|(?:NP501KC|503KC|602KC|705KC|C51[27]0|C5155|C5215|C67[35]0|C6522N?|C6530N|C6740N?|C6743|E6[89]10|KYL2[13]|KYV3[13-9]|KYT3[123]|KYF3[12579]|KYY2[1-4]|S2151|KC-S701|S4-KC|KYV40U?|KYV4[1-8]|KYV4[47][-_]u|KC-S301AE|X3-KC|S6-KC|E6560[CT]|E6782[L]?|E6790(?:TM)?|704KC)(?:[);/ ]|$)' + regex: 'Kyocera|KWC-|QC-[0-9]{4}|(?:QC6035|NP501KC|302KC|503KC|602KC|705KC|901KC|C51[27]0|C5155|C5215|C67[35]0|C6522N?|C6530N|C6740N?|C6743|E6[89]10|KYL2[13]|KYV3[1-9]|KYT3[123]|KYF3[123579]|KYF40|KYX31|KYG01|KYY2[1-4]|S2151|KC-S701|S[468]-KC|KYV40U?|KYV4[1-8]|KYV4[47]|KC-S301AE|X3-KC|E6560[CT]|E6782[L]?|E6790(?:TM)?|SZJ-JS201|KCP01K|[47]04KC|A001KC|WX10K|URBANO PROGRESSO|E7110|E6921)(?:[-_]u2?)?(?:[);/ ]|$)' device: 'smartphone' models: # explicit smartphone models @@ -7375,20 +10313,32 @@ Kyocera: model: 'One S4' - regex: 'S6-KC(?:[);/ ]|$)' model: 'One S6' + - regex: 'S8-KC(?:[);/ ]|$)' + model: 'One S8' - regex: 'C5155(?:[);/ ]|$)' model: 'Rise' - regex: '602KC(?:[);/ ]|$)' model: 'Digno G' - regex: '503KC(?:[);/ ]|$)' model: 'Digno E' + - regex: '404KC(?:[);/ ]|$)' + model: 'Digno C' - regex: '704KC(?:[);/ ]|$)' model: 'Digno J' + - regex: '302KC(?:[);/ ]|$)' + model: 'Digno T' - regex: 'NP501KC(?:[);/ ]|$)' model: 'Digno' + - regex: 'WX10K(?:[);/ ]|$)' + model: 'Digno Dual 2' - regex: 'KYV36(?:[);/ ]|$)' model: 'Digno Rafre' + - regex: '901KC(?:[);/ ]|$)' + model: 'Digno BX' - regex: 'KYV39(?:[);/ ]|$)' model: 'Miraie F' + - regex: 'KYX31(?:[);/ ]|$)' + model: 'Infobar XV' - regex: 'C5170(?:[);/ ]|$)' model: 'Hydro' - regex: 'C5215(?:[);/ ]|$)' @@ -7407,12 +10357,16 @@ Kyocera: model: 'Hydro Reach' - regex: 'E6560[CT]' model: 'DuraForce' - - regex: 'E6810' + - regex: '(?:KYOCERA-)?E68[12]0' model: 'DuraForce Pro' - - regex: 'E6910' + - regex: '(?:KYOCERA-)?(?:E69[12]0|E6921)' model: 'DuraForce Pro 2' + - regex: 'E7110' + model: 'DuraForce Ultra 5G' - regex: 'KC-S701' model: 'Torque' + - regex: 'KYG01' + model: 'Torque 5G' - regex: 'KYL21(?:[);/ ]|$)' model: 'Digno S' - regex: 'KYL23(?:[);/ ]|$)' @@ -7423,16 +10377,22 @@ Kyocera: model: 'Easy Mobile Phone' - regex: 'KYF35(?:[);/ ]|$)' model: 'Marvera' + - regex: 'KYF40(?:[);/ ]|$)' + model: 'Mamorino 5' - regex: 'KYF3[179](?:[);/ ]|$)' model: 'Gratina 4G' - regex: 'KYV48(?:[);/ ]|$)' model: 'Gratina KYV48' + - regex: 'KYF33(?:[);/ ]|$)' + model: 'Torque X01' - regex: 'KYV35(?:[);/ ]|$)' model: 'Torque G02' - regex: 'KYV41(?:[);/ ]|$)' model: 'Torque G03' - regex: 'KYV46(?:[);/ ]|$)' model: 'Torque G04' + - regex: 'KYV32?(?:[);/ ]|$)' + model: 'Basio' - regex: 'KYV47(?:-u)?(?:[);/ ]|$)' model: 'Basio 4' - regex: 'KYV43(?:[);/ ]|$)' @@ -7441,9 +10401,9 @@ Kyocera: model: 'Kantan Sumaho' - regex: 'KYV37(?:[);/ ]|$)' model: 'Qua Phone' - - regex: 'KYV42(?:[);/ ]|$)' + - regex: 'KYV42(?:_u)?(?:[);/ ]|$)' model: 'Qua Phone QX' - - regex: 'KYV44(?:_u)?(?:[);/ ]|$)' + - regex: 'KYV44(?:_u2?)?(?:[);/ ]|$)' model: 'Qua Phone QZ' - regex: 'KYT33(?:[);/ ]|$)' model: 'Qua Tab QZ10' @@ -7478,8 +10438,14 @@ Kyocera: model: 'Brigadier' - regex: 'E6782L(?:[);/ ]|$)' model: 'DuraScout' - - regex: '(KC-S301AE)(?:[);/ ]|$)' + - regex: 'KCP01K(?:[);/ ]|$)' + model: 'Luce' + - regex: '(KC-S301AE|SZJ-JS201)(?:[);/ ]|$)' model: '$1' + - regex: 'A001KC(?:[);/ ]|$)' + model: 'Katan Sumaho 2' + - regex: 'URBANO PROGRESSO(?:[);/ ]|$)' + model: 'Urbano Progresso' # explicit feature phone models - regex: 'S2151' @@ -7490,25 +10456,35 @@ Kyocera: model: 'KZ $1' - regex: 'Kyocera(?:[\-/])?([a-z0-9]+)' model: '$1' - - regex: '(?:KWC|QC)-([a-z0-9]+)' - model: '$1' + - regex: '(KWC|QC)-?([a-z0-9]+)' + model: '$1-$2' + +# Mymaga (support.mymaga.eu) +Mymaga: + regex: '(MOVE_S201)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' -# Krüger&Matz (Kruger&Matz) +# Krüger&Matz or Kruger&Matz (www.krugermatz.com) Krüger&Matz: - regex: 'Kruger[ _&]Matz|KrugerMatz[ _]|MOVE_|LIVE4_KM043[89]|KM(?:106[67]|1065G|0701_1|0805_1)' + regex: 'Kruger[ _&]Matz|KrugerMatz[ _]|K&M|FLOW ?5PLUS|FLOW 4 PLUS|Flow 9|FLOW_5|FLOW7|FLOW6(?:S|Lite)|DRIVE9|DRIVE 8|DRIVE[_ ]6S?|MOVE8mini|MOVE9|MOVE_|LIVE_6plus|LIVE 5 PLUS|Live [89]|LIVE4_KM043[89]|LIVE 7S|Flow 7S|KM(?:106[679]|1065G|0701_1|0702|0805_1|1070)' device: 'smartphone' models: + - regex: 'MOVE8mini' + model: 'MOVE 8 Mini' - regex: 'MOVE_6_mini' model: 'MOVE 6 Mini' - - regex: 'MOVE[_ ]([78]|6S)' + - regex: 'MOVE[_ ]([78]|6S?)' model: 'MOVE $1' - regex: 'DRIVE 4 mini LTE' model: 'DRIVE 4 mini LTE' - - regex: 'DRIVE (4[S]?)(?:[);/ ]|$)' + - regex: 'DRIVE[ _]?([45689][S]?)(?:[);/ ]|$)' model: 'DRIVE $1' - - regex: 'Drive 5(?:[);/ ]|$)' - model: 'DRIVE 5' - - regex: 'FLOW (4[S]?)(?:[);/ ]|$)' + - regex: 'FLOW ?([54]) ?PLUS(?:[);/ ]|$)' + model: 'FLOW $1 Plus' + - regex: 'FLOW6Lite(?:[);/ ]|$)' + model: 'FLOW 6 Lite' + - regex: 'FLOW[ _]?([4-7][S]?|9)(?:[);/ ]|$)' model: 'FLOW $1' - regex: 'LIVE4_(KM043[89])(?:[);/ ]|$)' model: 'LIVE 4 $1' @@ -7516,10 +10492,23 @@ Krüger&Matz: model: 'LIVE 4' - regex: '_LIVE5_(KM0450)(?:[);/ ]|$)' model: 'LIVE 5 $1' - - - regex: 'KM(106[67])(?:[);/ ]|$)' + - regex: 'LIVE 5 PLUS(?:[);/ ]|$)' + model: 'LIVE 5 Plus' + - regex: 'LIVE_6plus(?:[);/ ]|$)' + model: 'LIVE 6 Plus' # KM0454 + - regex: 'LIVE ([79])S(?:[);/ ]|$)' + model: 'LIVE $1S' + - regex: 'Live ([89])(?:[);/ ]|$)' + model: 'LIVE $1' + - regex: 'MOVE9(?:[);/ ]|$)' + model: 'MOVE 9' + + - regex: 'KM(106[679])(?:[);/ ]|$)' device: 'tablet' model: 'EAGLE $1 10.1"' + - regex: 'KM(1070)(?:[);/ ]|$)' + device: 'tablet' + model: 'EAGLE $1 10.5"' - regex: 'KM(1065G)(?:[);/ ]|$)' device: 'tablet' model: 'EAGLE $1 10.1"' @@ -7529,84 +10518,192 @@ Krüger&Matz: - regex: 'KM0(805)_1(?:[);/ ]|$)' device: 'tablet' model: 'EAGLE $1 8.0"' + - regex: 'KM0(702)(?:[);/ ]|$)' + device: 'tablet' + model: 'EAGLE $1 7.0"' + + - regex: 'K&M,([a-z0-9_ \-]+),(?:wired|wireless)' + model: '$1' + device: 'tv' # LAIQ LAIQ: regex: 'LAIQ' device: 'smartphone' models: - - regex: '(Glam|New York)' + - regex: '(Glam|New York|Dubai)(?:[);/ ]|$)' model: '$1' # AIS AIS: - regex: 'iris708' + regex: 'iris708|Kingcomm C500' device: 'smartphone' models: - regex: 'iris708' model: 'LAVA PRO 4.5' + - regex: 'Kingcomm C500' + model: 'Super Smart Plus X3' + +# Benco (www.bencomobile.com) +Benco: + regex: 'Benco[_ ]|(?:AE9010|AE9950)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'AE9950' + model: 'V60' + - regex: 'AE9010' + model: 'V80' -# Lava +# Lava (Lavamobiles.com) Lava: - regex: 'Lava[ _]|iris[ _]?([^/;]+)(?:\)| Build)|A(?:67|76) Build|X1 Selfie Build|X41 Plus Build|(?:Flair Z1|PixelV1|Z61_2GB|A97 IPS)(?:[);/ ]|$)' + regex: 'Lava[ _]|LAVA(?:A1|X10)|(?:DISCOVER136|KKT QUADRA)|iris(?! Plus 2021)[ _]?([^/;)]+)(?<!Plus 2021)(?: Build|[;)])|A(?:67|76) Build|X1 Selfie Build|X41 Plus Build|(?:Flair (?:[ZS]1|P8)|PixelV1|Pixel V2\+?|Z60s|Z61_2GB|A97 IPS|A97 2GB PLUS|L[EH]9920(?:[_ ]P)?|L[NEH]9910|LH9810|Ivory(?:S1|S4G)?|A76Plus|Grand2c|AH9910| A3_mini)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Flair Z1(?:[);/ ]|$)' - model: 'Flair Z1' + # explicit smartphone models + - regex: 'Flair ([ZS]1|P8)(?:[);/ ]|$)' + model: 'Flair $1' + - regex: 'AH9910(?:[);/ ]|$)' + model: 'Benco Y40' + - regex: 'LXX501(?:[);/ ]|$)' + model: 'Agni 5G' + - regex: 'Z61P(?:[);/ ]|$)' + model: 'Z61 Pro' - regex: 'A97 IPS(?:[);/ ]|$)' model: 'A97 IPS' - - regex: 'A67 Build' - model: 'A67' - - regex: 'A76 Build' - model: 'A76' - - regex: 'PixelV1(?:[);/ ]|$)' - model: 'Pixel V1' - - regex: 'X1 Selfie Build' + - regex: 'LF6810(?:[);/ ]|$)' + model: 'R5s Play' + - regex: 'A97 2GB PLUS(?:[);/ ]|$)' + model: 'A97 2GB Plus' + - regex: 'A76Plus(?:[);/ ]|$)' + model: 'A76 Plus' + - regex: ' A3_mini(?:[);/ ]|$)' + model: 'A3 Mini' + - regex: 'Pixel V2\+(?:[);/ ]|$)' + model: 'Pixel V2 Plus' + - regex: 'Pixel ?V([12])(?:[);/ ]|$)' + model: 'Pixel V$1' + - regex: 'X1 Selfie(?:[);/ ]|$)' model: 'Iris X1 Selfie' - - regex: 'X41 Plus Build' + - regex: 'X41 Plus(?:[);/ ]|$)' model: 'X41 Plus' - - regex: 'LAVA_A3' - model: 'A3' + - regex: '(?:LAVA[_ ]?)?A([13]|67|76)(?:[);/ ]|$)' + model: 'A$1' - regex: 'LAVA_R1' model: 'R1' - regex: 'Z61_2GB(?:[);/ ]|$)' model: 'Z61' - - regex: 'iris[ _]?([^/;]+)(?:\)| Build)' + - regex: 'LMX06(?:[);/ ]|$)' + model: 'Z6' + - regex: 'LMG01(?:[);/ ]|$)' + model: 'Z2' + - regex: 'LZG403(?:[);/ ]|$)' + model: 'Z3' + - regex: 'Z60s(?:[);/ ]|$)' + model: 'Z60s' + - regex: 'LE9920[ _]P(?:[);/ ]|$)' + model: 'V7' + - regex: 'LE9920(?:[);/ ]|$)' + model: 'Z53' + - regex: 'LH9910(?:[);/ ]|$)' + model: 'Z52' + - regex: 'LF9810(?:_2GB)?(?:[);/ ]|$)' + model: 'Z62' + - regex: 'LE9830(?:[);/ ]|$)' + model: 'Z93' + - regex: 'LH9810(?:[);/ ]|$)' + model: 'Iris 52' + - regex: 'LH9930(?:[);/ ]|$)' + model: 'Iris 54' + - regex: 'LE9930(?:[);/ ]|$)' + model: 'Iris 59' + - regex: 'LH9950(?:[);/ ]|$)' + model: 'Iris 46' + - regex: 'LN9910(?:[);/ ]|$)' + model: 'Z41' + - regex: 'LE9910(?:[);/ ]|$)' + model: 'V8' + - regex: 'LH9920(?:[);/ ]|$)' + model: 'V+6' + - regex: 'Grand2c' + model: 'Grand 2C' + # explicit feature phone models + - regex: 'DISCOVER136' + device: 'feature phone' + model: 'Discover 136' + - regex: 'KKT QUADRA' + device: 'feature phone' + model: 'KKT Quadra' + - regex: 'KKT40[ ]?Power[P\+]' + device: 'feature phone' + model: 'KKT40 Power Plus' + # explicit tablet models + - regex: 'Ivory(S1|S4G)?(?:[);/ ]|$)' + device: 'tablet' + model: 'Ivory $1' + # explicit general + - regex: 'iris[ _]?([^/;)]+)(?: Build|[);])' model: 'Iris $1' - - regex: 'Lava[ _]?([^/;]+)(?:/| Build)' + - regex: 'Lava[ _]?([^/;)]+)(?: Build|[);])' + model: '$1' + - regex: 'LAVA[ _]([^/;)]+)/MIDP' + device: 'feature phone' model: '$1' +# SKG (skgmobile.net | skgmobile.com) +SKG: + regex: '(Modern[ _](?:S10?|S[3679]))(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# iVA +iVA: + regex: '(LAMCY (?:L3[05]0|C100|L400)|IVA S6)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'LAMCY (L3[05]0|C100|L400)(?:[);/ ]|$)' + model: 'Lamcy $1' + - regex: 'IVA S6(?:[);/ ]|$)' + model: 'S6' + # Landvo Landvo: regex: 'XM[123]00|(?<!Blade )S6 Build' device: 'smartphone' models: - - regex: 'S6 Build' + - regex: 'S6 Build' # clone Galaxy S6 model: 'S6' - regex: 'XM([123])00([^/;]*) Build' model: 'XM$100$2' # Land Rover Land Rover: - regex: 'Land[ ]?Rover[d]?[ _-](?:X1[0-9]|Explore|T878|L15\+|V18|V[168]|X)(?:[);/ ]|$)|Polar3' + regex: 'Land[ ]?Rover[d]?[ _-](?:X1[0-9]|Explore|T878|L15\+|V18|V[168]|X)(?:[);/ ]|$)|Polar3|Vphone[- ]X3' device: 'smartphone' models: - regex: 'Land[ ]?Rover[d]?[ _-](X1[0-9]|Explore|T878|L15\+|V18|V[168]|X)(?:[);/ ]|$)' model: '$1' + - regex: 'Vphone[- ]X3' + model: 'Vphone X3' - regex: 'Polar3' model: 'Ioutdoor Polar 3' -# lanix +# iOutdoor +iOutdoor: + regex: 'iOutdoor (X)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# lanix (lanix.com) Lanix: - regex: 'LANIX-([a-z0-9]+)|Ilium[ _]|X120C|Alpha 950' + regex: 'LANIX-([a-z0-9]+)|Ilium[ _]|IliumPad|X120C|Alpha 950' device: 'smartphone' models: - - regex: 'ILIUM[ _]PAD[ _]([^;/]+) Build' + - regex: 'ILIUM[ _]?PAD[ _]?([^;/]+)(?: Build|[;)])' model: 'Ilium Pad $1' device: 'tablet' - regex: 'X120C' model: 'Ilium X120C' - - regex: 'Ilium[ _](Alpha 3|L(?:200|6[12]0|9[125]0|1[0124]00|1050|1120)|LT5[012]0|M[13579]|S(?:106|520|6[27]0)|X(?:1[12]0|2[0126]0|5[12]0|500B|710))' + - regex: 'Ilium[ _](Alpha [15]s|Alpha [379]|Alpha 1T|L(?:200|6[12]0|9[0125]0|1[0124]00|1050|1120)|LT5[012]0|M[579]s|M7T|M[13579]|S(?:106|520|6[27]0)|X(?:1[12]0|2[0126]0|5[12]0|500B|710))(?:[);/ ]|$)' model: 'Ilium $1' - regex: 'ILIUM[ _]([^;/]+) Build' model: 'Ilium $1' @@ -7618,7 +10715,7 @@ Lanix: # Lark Lark: - regex: '(Lark|Cumulus|Evolution|FreeMe|Ultimate (?:X4|7i))[ _-]|Build/Lark|Bjorn[_ ]SP-500' + regex: '(Lark|Cumulus|Evolution|FreeMe|Ultimate (?:X4|7i))[ _-]|Build/Lark|Bjorn[_ ]SP-500|FreeBird 5WiFi' device: 'tablet' models: - regex: 'Cumulus[ _](5\.5|[56])[ _]HD' @@ -7630,13 +10727,17 @@ Lark: model: 'FreeMe X4 7HD 3G' - regex: 'FreeMe[ _]X2[ _]([7-9])' model: 'FreeMe X2 $1' - - regex: 'FreeMe X4[ _]7[_ ]HD' + - regex: 'FreeMe X4[ _]7[_ ]?HD' model: 'FreeMe X4 7HD' - regex: 'FreeMe X4[ _]9' model: 'FreeMe X4 9' + - regex: 'FreeMe X4 7' + model: 'FreeMe X4 7' + - regex: 'FreeBird 5WiFi' + model: 'FreeBird 5 WiFi' - regex: '(?:Lark[ _-])?Evolution[ _](X2 7 3G-GPS|X4[_ ]10\.1|10|X4[_ ]7[ _]IPS)' model: 'Evolution $1' - - regex: 'Ultimate (X4 10\.1 3G IPS|X4 8s 3G|7i)' + - regex: 'Ul(?:ti|it)mate (X4 10\.1 3G IPS|X4 8s 3G|7i)' model: 'Ultimate $1' - regex: 'PHABLET 7' model: 'Phablet 7' @@ -7675,12 +10776,12 @@ LCT: # Leagoo Leagoo: - regex: 'LEAGOO[ _-]?|(?:M5 EDGE|KIICAA (POWER|MIX)|Leapad[ _]7s|Elite 1|Venture 1)(?:[);/ ]|$)' + regex: '(?:MY)?LEAGOO[ _-]?|(?:XRover(?: C)?|Shark 5000|M5 EDGE|KIICAA (POWER|MIX)|Leapad[ _](?:X|7s)|Alfa [125]|Elite [15]|Venture 1|Z10-E|M9 Pro|Power 5|Power[ _]2(?: Pro)?|Android 9.+ M1[23])(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'LEAGOO[- _]M8[_-]?Pro(?:[);/ ]|$)' - model: 'M8 Pro' - - regex: 'LEAGOO[- _](Z[156]|M[58]|T1)(?:[);/ ]|$)' + - regex: '(?:LEAGOO[- _])?M([89])[_-]?Pro(?:[);/ ]|$)' + model: 'M$1 Pro' + - regex: 'LEAGOO[- _](Z[156]|Z5c|M[58]|T1)(?:[);/ ]|$)' model: '$1' - regex: 'M5 EDGE' model: 'M5 Edge' @@ -7690,13 +10791,27 @@ Leagoo: model: 'KICCAA Power' - regex: 'KIICAA MIX' model: 'KICCAA Mix' - - regex: 'Elite 1(?:[);/ ]|$)' - model: 'Elite 1' + - regex: 'Elite ([15])(?:[);/ ]|$)' + model: 'Elite $1' + - regex: 'Shark 5000(?:[);/ ]|$)' + model: 'Shark 5000' + - regex: 'Power 2 Pro(?:[);/ ]|$)' + model: 'Power 2 Pro' + - regex: 'Power[ _]([25])(?:[);/ ]|$)' + model: 'Power $1' - regex: 'Venture 1(?:[);/ ]|$)' model: 'Venture 1' - - - regex: '(Leapad[ _]7s)' + - regex: 'Alfa ([125])(?:[);/ ]|$)' + model: 'Alfa $1' + - regex: 'XRover( C)?(?:[);/ ]|$)' + model: 'XRover$1' + - regex: '(?:LEAGOO[- _])?(Z10-E|M6|M1[23])(?:[);/ ]|$)' + model: '$1' + - regex: '(?:My)?Leagoo[- _](E4)(?:[);/ ]|$)' model: '$1' + + - regex: '(?:Leapad[ _])(7s|10|X)' + model: 'LeaPad $1' device: 'tablet' # Ledstar @@ -7711,7 +10826,7 @@ Ledstar: # LeEco LeEco: - regex: 'Letv|LeEco|X[89]00\+(?:[);/ ]|$)|Le ?X[0-9][^;/]+|Le Max|Le [12]|X900 Build' + regex: 'Letv|LeEco|Le ?X[0-9][^;/]+|Le Max|Le [12]|Le2[_ ]x527|X900 Build|(?:X[89]00\+|X52[67])(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'X800\+' @@ -7724,8 +10839,12 @@ LeEco: model: '$1' - regex: 'X900 Build' model: 'Le X900' - - regex: 'Le ?X526 Build' + - regex: 'LEX72[07](?:[);/ ]|$)' + model: 'Le Pro 3' + - regex: '(?:Le ?X526|Le2[_ ]x527|Le 2|X52[67])(?:[);/ ]|$)' model: 'Le 2' + - regex: 'LEX82[09]' + model: 'Le Max 2' - regex: 'Le ?X([^;/]+) Build' model: 'Le X$1' - regex: 'Le ?X([^) ;/]+)' @@ -7739,43 +10858,41 @@ LeEco: - regex: 'LeEco ([^;/]+) Build' model: '$1' -# Leotec -Leotec: - regex: 'LESPH501[14]|LESPH5003B|SUPERNOVA (Qi16|i3G96[X]?)' - device: 'smartphone' - models: - - regex: 'LESPH5011' - model: 'Argon e250' - - regex: 'LESPH5003B' - model: 'Argon A250B' - - regex: 'LESPH5014' - model: 'Krypton K150' - - regex: 'SUPERNOVA (Qi16|i3G96[X]?)' - device: 'tablet' - model: 'Supernova $1' - # Lephone Lephone: - regex: 'lephone[ _]' + regex: 'lephone[ _]|lephoneP1' device: 'smartphone' models: - regex: 'lephone[ _](K7|K10)' device: 'feature phone' model: '$1' - - regex: 'lephone[ _](W(1[0125]|[279])|T2)(?:[);/ ]|$)' + - regex: 'lephone(?:[ _])?(W(1[0125]|[279])|T2|P1)(?:[);/ ]|$)' model: '$1' - regex: 'lephone_W7_plus' model: 'W7 Plus' # lenco Lenco: - regex: 'Lenco ([^/;]*) Build' + regex: 'Lenco ([^/);]*)(?: Build|[);])' device: 'tablet' - model: '$1' + models: + - regex: 'LENCO Diverso-700' + device: 'portable media player' + model: 'Diverso 700' + - regex: 'Lenco ([^/);]*)(?: Build|[);])' + model: '$1' + +# Aligator +Aligator: + regex: 'ALIGATOR[_ ]' + device: 'smartphone' + models: + - regex: 'ALIGATOR[ _](S4080|S50(?:6[56]|[678]0)|S5540|RX510|S6[05]00|RX710|RX800|S5520)(?:[);/ ]|$)' + model: '$1' -# lenovo +# lenovo (lenovo.com) Lenovo: - regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|ZUK[ -_]|(?:TB2-X30L|TB3-710I|YT3-X50[ML]|K50a40|TB-(?:8504F|X304F|X704V|X704A)|A2107A-H|S6000|Z2 Plus|VIBE Z2|Vibe K5(?: Plus)?|P2A42|L18011|[5-8]01LV|Z2131|K350t|VIBE X2|K31-t3|TAB 2 A8-50LC)(?:[);/ ]|$)' + regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|ZUK[ -_]|(?:TB2-X30L|TB3-710I|YT3-X50[ML]|K50a40|TB-(?:X103F|8504F|X304F|X704V|X704A)|A5500-H|A2107A-H|A3500-HV|A2109A|S6000|Z2 Plus|Vibe[ _](?:P1|S6i Plus|S[23567]i|C|[ZX]2|K5(?: Plus)?|V7)|P2A42|L38011|L18011|[5-8]01LV|[67]02LV|Z2131|K350t|K31-t3|TAB 2 A8-50LC|S90-A|P70-A|VR-1541F|d-42A)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Lenovo ?G780' @@ -7784,54 +10901,141 @@ Lenovo: - regex: 'Lenovo ?A3500-FL' model: 'IdeaTab A7-40' device: 'tablet' - - regex: 'Lenovo ?A3500-(H|HV|F)' + - regex: '(?:Lenovo ?)?A3500-(?:H|HV|F)' model: 'IdeaTab A7-50' device: 'tablet' - - regex: 'Lenovo ?A5500-[HF]' + - regex: '(?:Lenovo[ _])?A5500-[HF]' model: 'IdeaTab A8-50' device: 'tablet' - - regex: 'Lenovo ?A7600-[HF]' + - regex: 'Lenovo ?A7600' model: 'IdeaTab A10-70' device: 'tablet' - regex: 'A2107A-H' model: 'A2107' device: 'tablet' + - regex: 'A2109A' + model: 'IdeaTab A2109A' + device: 'tablet' - regex: 'TB2-X30[FL]' model: 'Tab 2 A10-30' device: 'tablet' + - regex: 'TB-X6C6[XF]' + model: 'Tab K10' + device: 'tablet' - regex: 'YT3-X50[FLM]' model: 'Yoga Tab 3' device: 'tablet' + - regex: 'YT-J706[XF]' + model: 'Yoga Tab 11' + device: 'tablet' + - regex: 'YT-K606F' + model: 'Yoga Pad Pro' + device: 'tablet' - regex: 'TB3-730X' model: 'TAB3 7' device: 'tablet' - regex: 'TB3-710[IF]' model: 'TAB3 7 Essential' device: 'tablet' + - regex: 'TB-7703X' + model: 'TAB3 7 Plus' + device: 'tablet' + - regex: 'TB3-X70L' + model: 'TAB3 10 Plus' + device: 'tablet' + - regex: 'TB-8703X' + model: 'TAB3 8 Plus' + device: 'tablet' - regex: 'TAB 2 A8-50LC' model: 'TAB2 A8-50LC' device: 'tablet' - regex: '501LV(?:[);/ ]|$)' model: 'TAB2 8.0"' device: 'tablet' + - regex: 'TAB 2 A10-70L(?:[);/ ]|$)' + model: 'TAB 2 A10' + device: 'tablet' - regex: '(?:TB3-850[FM]|601LV)(?:[);/ ]|$)' model: 'TAB3 8' device: 'tablet' - - regex: 'Lenovo TB-X304[FL]' + - regex: '602LV(?:[);/ ]|$)' + model: 'TAB3 8 Dual' + device: 'tablet' + - regex: 'TB-X304[FL]' model: 'TAB4 10' device: 'tablet' - - regex: '(?:TB-X704[VL]|701LV)(?:[);/ ]|$)' + - regex: 'TB-8504X' + model: 'TAB4 8' + device: 'tablet' + - regex: 'TB-8704X' + model: 'TAB4 8 Plus' + device: 'tablet' + - regex: '(?:TB-X704[FVL]|70[12]LV)(?:[);/ ]|$)' model: 'TAB4 10 Plus' device: 'tablet' - regex: '801LV(?:[);/ ]|$)' model: 'TAB5 10.1"' device: 'tablet' + - regex: 'TB-X103F(?:[);/ ]|$)' + model: 'TAB10 10.1"' + device: 'tablet' - regex: 'TB-X704A(?:[);/ ]|$)' model: 'Moto Tab' device: 'tablet' - regex: 'TB-X605F(?:[);/ ]|$)' model: 'Tab M10' device: 'tablet' + - regex: 'TB-X705[FL](?:[);/ ]|$)' + model: 'Tab P10' + device: 'tablet' + - regex: 'TB-J606[LF](?:[);/ ]|$)' + device: 'tablet' + model: 'Tab P11' + - regex: 'TB-J607F(?:[);/ ]|$)' + device: 'tablet' + model: 'Tab QT K11 Pro WiFi' + - regex: 'TB-J616[XF](?:[);/ ]|$)' + model: 'Tab P11 Plus' + device: 'tablet' + - regex: 'TB-J706[LF](?:[);/ ]|$)' + model: 'Tab P11 Pro' + device: 'tablet' + - regex: 'TB-7104[IF](?:[);/ ]|$)' + model: 'Tab E7' + device: 'tablet' + - regex: 'TB-8304F1(?:[);/ ]|$)' + model: 'Tab E8' + device: 'tablet' + - regex: 'TB-7304' + model: 'Tab 7 Essential' + device: 'tablet' + - regex: 'TB-7504X(?:[);/ ]|$)' + model: 'Tab 7' + device: 'tablet' + - regex: 'PB-6505' + model: 'Tab V7' + device: 'tablet' + - regex: 'TB-X606[FXV]A?(?:[);/ ]|$)' + model: 'Tab M10 FHD Plus' + device: 'tablet' + - regex: 'TB-X605[FL]C' + model: 'Tab M10 FHD Rel' + device: 'tablet' + - regex: 'TB-X605' + model: 'Tab M10 FHD' + device: 'tablet' + - regex: 'Lenovo TB-X306' + model: 'Tab M10 HD' + device: 'tablet' + - regex: 'Lenovo TB-X505' # 2019 + model: 'Tab M10' + device: 'tablet' + - regex: 'TB-7305[IXF](?:[);/ ]|$)' + model: 'Tab M7' + device: 'tablet' + - regex: 'TB-7306[XF](?:[);/ ]|$)' + model: 'Tab M7 (Gen 3)' + device: 'tablet' - regex: 'Lenovo ?B8000(-[FH])?' model: 'Yoga Tablet 10' device: 'tablet' @@ -7856,6 +11060,15 @@ Lenovo: - regex: 'YT3-850M' model: 'Yoga Tab 3 10' device: 'tablet' + - regex: 'YT-X703L' + model: 'Yoga Tab 3 Plus' + device: 'tablet' + - regex: 'YT-X705[FL]' + model: 'Yoga Smart Tab' + device: 'tablet' + - regex: 'TB-J716F' + model: 'XiaoXin Pad Pro 11.5" (2021)' + device: 'tablet' - regex: 'S6000(?:[);/ ]|$)' model: 'IdeaTab S6000' @@ -7869,25 +11082,28 @@ Lenovo: - regex: 'ThinkPad ?Tablet([^;/]*) Build' model: 'ThinkPad Tablet$1' device: 'tablet' - - regex: 'IdeaPad ?([^;/]*) Build' - model: 'IdeaPad $1' - device: 'tablet' - - regex: 'Lenovo TAB ?([^/;]*) Build' - model: 'TAB $1' - device: 'tablet' - regex: 'Lenovo ?A3300-(?:GV|H)' model: 'TAB 2 A7-30' device: 'tablet' + - regex: 'TAB 2 A7-30[HGD]C' + model: 'TAB 2 A7' + device: 'tablet' - regex: 'TB-8504F' model: 'TAB 4 8' device: 'tablet' + - regex: 'TB-8704F' + model: 'Tab 4 8" Plus' + device: 'tablet' + - regex: 'TB-X304X' + model: 'Tab 4 10.1"' + device: 'tablet' - regex: 'TB-X304F' - model: 'TAB 4 10' + model: 'TAB4 10' device: 'tablet' - - regex: 'Lenovo TB-X505F' + - regex: 'TB-X505[FX]' model: 'M10' device: 'tablet' - - regex: 'Lenovo TB-X104[FXL]' + - regex: 'TB-X104[FXL]' model: 'E10' device: 'tablet' - regex: 'Tab2A([0-9]-[0-9]{2}[a-z]?)' @@ -7896,17 +11112,38 @@ Lenovo: - regex: 'IdeaTab[ \-_]?([a-z0-9]+)' model: 'IdeaTab $1' device: 'tablet' + - regex: 'YB-Q501F' # tablet/pc + model: 'Yoga A12' + device: 'tablet' + - regex: 'YT-X705X' + model: 'Yoga Smart Tab' + device: 'tablet' - regex: 'Yoga Tablet([^;/]+) Build' model: 'Yoga Tablet$1' device: 'tablet' - - regex: 'Lenovo TB\-X704F Build/NMF26F' - model: 'Tab 4 10 Plus' + - regex: 'TB-8505[FX]S' + model: 'Smart Tab M8' + device: 'tablet' + - regex: 'TB-8505[FX]|TB-8506F' + model: 'Tab M8' + device: 'tablet' + - regex: 'TB-8705[FX]' + model: 'Tab M8 FHD' device: 'tablet' - regex: 'Lenovo (TB[0-9]?\-[a-z0-9\-]+) Build' model: '$1' device: 'tablet' + - regex: 'L18011(?:[);/ ]|$)' model: 'A5' + - regex: 'L18081(?:[);/ ]|$)' + model: 'A5s' + - regex: 'L19111(?:[);/ ]|$)' + model: 'A7' + - regex: 'L10041(?:[);/ ]|$)' + model: 'A8' + - regex: 'L78121(?:[);/ ]|$)' + model: 'Z6' - regex: 'Z2 Plus' model: 'Z2 Plus' - regex: 'Z2151' @@ -7919,26 +11156,58 @@ Lenovo: model: 'ZUK $1' - regex: 'K10a40(?:[);/ ]|$)' model: 'C2' - - regex: 'k50a40(?:[);/ ]|$)' + - regex: '(?:k50a40|K50-t5)(?:[);/ ]|$)' model: 'K3 Note' - - regex: 'A7010a48(?:[);/ ]|$)' + - regex: 'K(1[30]) Note(?:[);/ ]|$)' + model: 'K$1 Note' + - regex: 'A7010(?:a48)?(?:[);/ ]|$)' model: 'K4 Note' - regex: 'K350t(?:[);/ ]|$)' model: 'K5' - - regex: 'A7020a4[08](?:[);/ ]|$)' + - regex: 'L38011(?:[);/ ]|$)' + model: 'K5 Play' + - regex: '(?:L38041|K5 Pro)(?:[);/ ]|$)' + model: 'K5 Pro' + - regex: 'L39051(?:[);/ ]|$)' + model: 'K10 Plus' + - regex: '(?:A7020a4[08]|L38012|K52e78)(?:[);/ ]|$)' model: 'K5 Note' + - regex: 'L19041(?:[);/ ]|$)' + model: 'A6 Note' - regex: 'K31-t3(?:[);/ ]|$)' model: 'K31' + - regex: 'A6010Pro(?:[);/ ]|$)' + model: 'A6010 Pro' - regex: '(?:A6020a46|Vibe K5 Plus)(?:[);/ ]|$)' model: 'Vibe K5 Plus' - regex: '(?:Lenovo-)?(?:A6020(?:a40|l36)|Vibe K5)(?:[);/ ]|$)' model: 'Vibe K5' - regex: 'VIBE Z2(?:[);/ ]|$)' model: 'Vibe Z2' - - regex: 'VIBE X2(?:[);/ ]|$)' + - regex: '(?:VIBE C|A2020a40)(?:[);/ ]|$)' + model: 'Vibe C' + - regex: '(?:VIBE X2)(?:[);/ ]|$)' model: 'Vibe X2' + - regex: 'X3(?:a40|c50)(?:[);/ ]|$)' + model: 'Vibe X3' + - regex: 'Lenovo X3 Lite(?:[);/ ]|$)' + model: 'Vibe X3 Lite' + - regex: 'VIBE V7(?:[);/ ]|$)' + model: 'Vibe V7' + - regex: 'VIBE S6i Plus(?:[);/ ]|$)' + model: 'Vibe S6i Plus' + - regex: 'VIBE[ _]S([23567])i(?:[);/ ]|$)' + model: 'Vibe S$1i' + - regex: 'L79031(?:[);/ ]|$)' + model: 'Legion Pro' + - regex: 'L70081(?:[);/ ]|$)' + model: 'Legion 2 Pro' - regex: 'k33a48(?:[);/ ]|$)' model: 'K6' + - regex: 'L38043(?:[);/ ]|$)' + model: 'K9' + - regex: 'L38082(?:[);/ ]|$)' + model: 'K11' - regex: 'P2A42(?:[);/ ]|$)' model: 'P2' - regex: 'k53a48(?:[);/ ]|$)' @@ -7947,32 +11216,83 @@ Lenovo: model: 'K6 Power' - regex: 'P1ma40(?:[);/ ]|$)' model: 'Vibe P1m' - - regex: 'P1(?:a42|c72)(?:[);/ ]|$)' + - regex: 'Vibe P1 Turbo(?:[);/ ]|$)' + model: 'Vibe P1 Turbo' + - regex: '(?:P1(?:a42|c72)|Vibe P1)(?:[);/ ]|$)' model: 'Vibe P1' - regex: 'A2016a40(?:[);/ ]|$)' model: 'Vibe B' - regex: 'A1010a20(?:[);/ ]|$)' model: 'A Plus' - - regex: 'Z90a40(?:[);/ ]|$)' + - regex: '(?:Z90a40|Z90-7)(?:[);/ ]|$)' model: 'Vibe Shot' - regex: 'S1a40(?:[);/ ]|$)' model: 'Vibe S1' + - regex: 'S1La40(?:[);/ ]|$)' + model: 'Vibe S1 Lite' - regex: 'L78071(?:[);/ ]|$)' model: 'Z5s' + - regex: 'L78011(?:[);/ ]|$)' + model: 'Z5' + - regex: 'L78031(?:[);/ ]|$)' + model: 'Z5 Pro' + - regex: '(?:Z6 Pro|L78051)(?:[);/ ]|$)' + model: 'Z6 Pro' + - regex: 'L78032(?:[);/ ]|$)' + model: 'Z5 Pro GT' + - regex: 'L38111(?:[);/ ]|$)' + model: 'Z6 Youth' - regex: 'L58041(?:[);/ ]|$)' model: 'S5 Pro' + - regex: 'L58091(?:[);/ ]|$)' + model: 'S5 Pro GT' - regex: 'L18021(?:[);/ ]|$)' model: 'A3' - - regex: 'PB2-670M(?:[);/ ]|$)' + - regex: 'PB2-6(?:70M|50[YM])(?:[);/ ]|$)' model: 'Phab 2' - - regex: 'Lenovo ([^/;]*) Build' + - regex: 'PB1-750M(?:[);/ ]|$)' + model: 'Phab' + - regex: 'PB1-770M(?:[);/ ]|$)' + model: 'Phab Plus' + - regex: '(S90-A|P70-A)(?:[);/ ]|$)' + model: '$1' + - regex: 'IdeaPad ?([^;/]*) Build' + model: 'IdeaPad $1' + device: 'tablet' + - regex: 'd-42A(?:[);/ ]|$)' + model: 'dtab Compact 42A' # NNT Docomo + device: 'tablet' + + - regex: 'Lenovo K12 Pro' + model: 'K12 Pro' + - regex: 'Lenovo X2(?:-[ER]U)?' + model: 'X2' + + - regex: 'VR-1541F' # VR headset + device: 'wearable' + model: 'Mirage Solo' + + - regex: 'LENOVO/81W8(?:[);/ ]|$)' + device: 'desktop' + model: 'IdeaPad S145-15IIL' + - regex: 'LENOVO/81MV(?:[);/ ]|$)' + device: 'desktop' + model: 'IdeaPad S145-15IWL' + - regex: 'LENOVO/81SS(?:[);/ ]|$)' + device: 'desktop' + model: 'Flex 14API 81SS' + + - regex: 'Lenovo TAB ?([^/);]*)(?: Build|[;)])' + model: 'TAB $1' + device: 'tablet' + - regex: 'Lenovo ([^/);]*)(?: Build|[;)])' model: '$1' - regex: '(?:LNV-|Lenovo-)?Lenovo[ \-_]?([a-z0-9_+\-]+)' model: '$1' -# Lexand +# Lexand or LEXAND (lexand.ru) Lexand: - regex: '(?:SC7 PRO HD|S5A[1-4]|S4A[1-5]|S6A1|A811|A802)(?:[);/ ]|$)|Lexand ([^;/]+) Build' + regex: 'Lexand[ _]|(?:SC7 PRO HD|S5A[1-4]|S4A[1-5]|S6A1|A811|A802|LPH7_Smarty)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'A(811|802)' @@ -8001,8 +11321,9 @@ Lexand: model: 'Antares' - regex: 'SC7 PRO HD' model: 'SC7 PRO HD' - - - regex: 'Lexand ([^;/]+) Build' + - regex: 'LPH7_Smarty' + model: 'LPH7 Smarty' + - regex: 'Lexand[ _]([^;/)]+)(?: Build|[;)])' model: '$1' # lexibook @@ -8059,15 +11380,31 @@ Lexibook: - regex: '(MFC[0-9]{3}[a-z]{2,})' model: '$1' -# LG +# LG (lg.com) LG: - regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713|(LM-[A-Z][0-9]{3}[A-Z]{0,3}(?:\(FGN?\)|\(G\)|\.FN|\.F(?:GN?)?)?)|LM-(X625N1|G820QM[0127]))(?:[);/ ]|$)|NetCast|RS98[78]|RS500|VS(?:50[01]|835|876|880|98[0578]|99[056]|(410|415|425|500|880)PP)|Nexsus 5|LML(41[34]D|211B|713D|212V)L|VK810 4G|VK815|X5-LG|L-05D|L-03K|L-01[LJK]|L-[45]1A|901LG|A001LG|802LG' + regex: 'LG|Web0S; Linux/SmartTV|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713|(LM-[A-Z][0-9]{3}[A-Z]{0,3}(?:\(FGN?\)|\(G\)|\.FN|\.F(?:GN?)?)?)|LM-(X625N1|G820QM[0127])|G Watch)(?:[);/ ]|$)|NetCast|RS98[78]|RS500|VS(?:50[01]|835|876|880|98[05-8]|99[056]|(410|415|425|500|880)PP)|VS820|VS870 4G|Nexsus 5|LML(41[34]D|211B|713D|212V)L|VK810 4G|VK815|X5-LG|L-05[DE]|L-03K|L-01[LJK]|L-52A|L-[45]1A|901LG|A001LG|80[12]LG|402LG|LGT32|L-02K|L-01F|LM-V40|DM-01K|DM-02H|LMX130IM|VS810PP|VS425|VM670' device: 'smartphone' models: - - regex: 'LG-D325' + - regex: 'DM-(01K|02H)' + model: 'Disney Mobile DM-$1' + - regex: 'LG-D32[05]' model: 'L70' + - regex: 'LG-?(D315|L31L)' + model: 'F70' + - regex: 'LG-D4(?:[01]5|10)' + model: 'L90' + - regex: 'LG-D373' + model: 'L80' - regex: 'LG-D340F8' model: 'L70 Tri' + - regex: 'LG-D125' + model: 'L30' + - regex: 'LG-X145' + model: 'L60' + - regex: 'LG-X135' + model: 'L60i' + - regex: 'LG-D285' + model: 'L65' - regex: 'LM-X210APM' model: 'Phoenix 4' - regex: 'LG-P505R' @@ -8076,15 +11413,29 @@ LG: model: 'Zone 4' - regex: 'LM-X220PM' model: 'Tribute Empire' - - regex: 'VS980' + - regex: 'LG-SP200' + model: 'Tribute Dynasty' + - regex: 'LGLS675' + model: 'Tribute 5' + - regex: 'LG-F570' + model: 'Band Play' + - regex: 'VS980|L-01F|LG-F320L|LG-D800' model: 'G2' - regex: 'LG-D6(?:18|20)' model: 'G2 Mini' - - regex: 'LG-D85[0125]|VS985' + - regex: 'LG-(?:D85[012568]|AS990)|VS985|LGLS990|LGL24(?:[);/ ]|$)' model: 'G3' - - regex: 'LG-D72[2458]' + - regex: 'LG-D722' + model: 'G3S' + - regex: 'LG-D693n?|LG-D690n' + model: 'G3 Stylus' + - regex: 'LG-(?:D72[23568]|F470K)' model: 'G3 Beat' - - regex: 'LG-H81[158]' + - regex: 'LG-F460' + model: 'G3 Cat. 6' + - regex: 'LG-D724' + model: 'G3s' + - regex: 'LG-?H81[012589]|LG-?[LU]S991|LGV32|LG-F500[LSK]|VS986' model: 'G4' - regex: 'LG-H525n?' model: 'G4c' @@ -8094,155 +11445,301 @@ LG: model: 'G4s' - regex: 'LG-H735' model: 'G4 Beat' - - regex: 'LG-H8(?:20|30|5[08]|60)|VS987|RS988' + - regex: 'LG-H8(?:20|3[01]|5[08]|6[08])|VS987|(?:LG-)?RS988|LG-F700[SKL]|LG-?[LU]S992' model: 'G5' - regex: 'LG-H84[05]' model: 'G5 SE' - - regex: 'VS988|LG-H870DS' + - regex: 'VS988|LG-H87(?:[01](?:DS|[SI]|AR)?|[23])|LG-?US997|LGM-G600[SKL]|LG-[AL]S993' model: 'G6' - regex: 'LM-Q850' model: 'G7 Fit' - regex: 'LM-Q910' model: 'G7 One' - - regex: 'LM-G820(N|QM[0127]|UMB)?' + - regex: 'LGL23(?:[);/ ]|$)' + model: 'G Flex' + - regex: 'LG-H950' + model: 'G Flex 2' + - regex: 'LG-D68[06]' + model: 'G Pro Lite' + - regex: 'LM-G820([NV]|QM[0127]|UMB)?' model: 'G8' + - regex: 'LM-G850' + model: 'G8X ThinQ' - regex: 'LM-G810' model: 'G8S ThinQ' - regex: '901LG(?:[);/ ]|$)' model: 'G8X ThinQ' - - regex: 'VS501' + - regex: 'LG-H410(?:[);/ ]|$)' + model: 'Wine Smart H410' + - regex: 'VS501|LM-X120' model: 'K20' - - regex: '(?:LG-)?H502' + - regex: 'LGMS395' + model: 'F60' + - regex: 'LG-(?:F520K|H788)' + model: 'AKA' + - regex: 'LM-K920' + model: 'K92' + - regex: 'LGL41C' + model: 'Ultimate 2' + - regex: 'LGLS660' + model: 'Tribute' + - regex: '(?:LG-)?H50[02]' model: 'Magna' + - regex: 'LGL63BL' + model: 'Fiesta' + - regex: 'LG-(?:X15[05]|X165g)' + model: 'Bello 2' + - regex: 'LG-D33[15]' + model: 'L Bello' + - regex: 'LG-D29[05]' + model: 'L Fino' - regex: '(?:LG-)?H343' model: 'Risio' - regex: '(?:LG-)?H650' model: 'Zero' - regex: '(?:LG-)?M154' model: 'Risio 2' + - regex: 'LGM-K120[LSK]' + model: 'X300' + - regex: 'LG-K120(?:[);/ ]|$)' + model: 'Spree' + - regex: 'LGM-X401S' + model: 'X400' + - regex: 'LGM-X320[SKL]?(?:[);/ ]|$)' + model: 'X500' + - regex: 'LG-F620K' + model: 'Class' - regex: '(?:LG-)?P500H' model: 'Optimus One' - - regex: 'L-05D(?:[);/ ]|$)' - model: 'Optimus it L-05D' + - regex: 'LG-E975' + model: 'Optimus G' + - regex: 'LG-F240[KLS]' + model: 'Optimus G Pro' + - regex: 'LG-E435f' + model: 'Optimus L3 II' + - regex: 'LG-E4(?:70f|40|65f)' + model: 'Optimus L4 II' + - regex: 'LG-E467f' + model: 'Optimus L4 II Dual' + - regex: 'LG-E460' + model: 'Optimus L5 II' + - regex: 'LG-E4[17]5f' + model: 'Optimus L1 II' + - regex: 'LG-P875' + model: 'Optimus F5' + - regex: 'LGMS500' + model: 'Optimus F6' + - regex: '(L-05[DE])(?:[);/ ]|$)' + model: 'Optimus it $1' - regex: 'LG-L160L(?:[);/ ]|$)' model: 'Optimus LTE 2' - - regex: 'P713(?:[);/ ]|$)' - model: 'Optimus L7II' + - regex: '(?:P713|LG-P71[05])(?:[);/ ]|$)' + model: 'Optimus L7 II' - regex: 'L-01D(?:[);/ ]|$)' model: 'Optimus LTE L-01D' - regex: 'L-02D(?:[);/ ]|$)' model: 'PRADA phone L-02D' - regex: 'L-07C' model: 'Optimus Bright L-07C' - - regex: '(?:LG-)?F800(?:S|K|L)?' + - regex: '(?:LG-?)?(?:F800[SKL]?|H990|H910(?:PR)?|US996|V34|LS997)(?:[);/ ]|$)' model: 'V20' - regex: 'LM-Q710(?:\(FGN\)|[\.]?FGN)' model: 'Q Stylus Plus' + - regex: '801LG' + model: 'Q Stylus' + - regex: 'LG-M400' + model: 'Stylus 3' + - regex: 'LG-(?:K520|F720[SL])' + model: 'Stylus 2' + - regex: 'LG-(?:K53[05])' + model: 'Stylus 2 Plus' - regex: 'LM-Q[67]10\.FG(?:[);/ ]|$)' model: 'Q7' - - regex: 'LM-(Q725[KL]|Q610.FGN)(?:[);/ ]|$)' + - regex: 'LM-(Q72[57][KLS]|Q610.FGN)(?:[);/ ]|$)' model: 'Q7+' - - regex: 'LM-Q815[SL](?:[);/ ]|$)' + - regex: 'LM-Q815[KSL](?:[);/ ]|$)' model: 'Q8+' - - regex: 'LM-Q925L(?:[);/ ]|$)' + - regex: 'LGM-X800[KL]|LG-H970' + model: 'Q8' + - regex: 'LM-Q925[LKS](?:[);/ ]|$)' model: 'Q9' + - regex: 'LM-(?:Q730N|Q620)(?:[);/ ]|$)' + model: 'Q70' + - regex: 'LM-Q520N(?:[);/ ]|$)' + model: 'Q52' - regex: 'LGV33(?:[);/ ]|$)' model: 'Qua Phone PX' - regex: 'L-03K(?:[);/ ]|$)' model: 'Style' - regex: 'L-01L(?:[);/ ]|$)' model: 'Style 2' + - regex: 'LGLS775' + model: 'Stylo 2' - regex: 'VS835(?:[);/ ]|$)' model: 'Stylo 2 V' + - regex: 'LG-?(?:MS550|K550)' + model: 'Stylo 2 Plus' - regex: 'L-41A(?:[);/ ]|$)' model: 'Style 3' - - regex: 'LM-Q710|LML713DL' + - regex: 'LG-?(?:MS63[14]|H63[45])(?:[);/ ]|$)' + model: 'G Stylo' + - regex: 'LG-?(?:LS777|L84VL|M430|L83BL)(?:[);/ ]|$)' + model: 'Stylo 3' + - regex: 'LG-?([TM]P450)(?:[);/ ]|$)' + model: 'Stylo 3 Plus' + - regex: 'LM-Q710|LML713DL|LG-Q710[AP]L' model: 'Stylo 4' - - regex: 'LM-Q720' + - regex: '(?:LM-Q720|LGL722DL)(?:[);/ ]|$)' model: 'Stylo 5' - - regex: 'LM-G710(N|VM)?' + - regex: 'LM-Q730(?:[);/ ]|$)' + model: 'Stylo 6' + - regex: 'LM-G710(N|VM)?|LG-G710' model: 'G7 ThinQ' + - regex: 'LG-M153' + model: 'Fortune' - regex: 'LM-X210CM' model: 'Fortune 2' - - regex: 'LM-X410\.F(?:[);/ ]|$)' + - regex: 'LM-X410\.FG?(?:[);/ ]|$)' model: 'Premier Pro' + - regex: 'LGL455DL(?:[);/ ]|$)' + model: 'Premier Pro Plus' - regex: 'LML41[34]DL(?:[);/ ]|$)' model: 'Premier Pro LTE' - regex: 'LM-X525' model: 'Q60' + - regex: 'LM-K315IM' + model: 'W31' + - regex: 'LG-?L355DL' + model: 'K31' + - regex: 'LGL423DL' + model: 'Solo LTE' + - regex: 'LG-F820L' + model: 'U' - regex: 'LM-X210K' model: 'X2' - - regex: 'LG-K580' + - regex: 'LG-(?:K580|F690[LS])' model: 'X Cam' + - regex: 'LG-(?:SP320|M32[27])' + model: 'X Charge' + - regex: 'LG-K200|LGLS676' + model: 'X Style' + - regex: 'LG-F740L' + model: 'X Skin' + - regex: 'LG-(?:K500|F650)' + model: 'X Screen' + - regex: 'LG-(?:M710|H700|US701)' + model: 'X Venture' - regex: 'LM-X510WM' model: 'X Power 3' - regex: 'LM-X(?:41[05]K|410S)' model: 'X4' - regex: 'LM-X(415[LS]|410L)' model: 'X4+' - - regex: 'LM-X410\.FN' + - regex: 'LM-X410(?:\.FN|\(FG\))' model: 'K11' - - regex: 'LM-X(?:320|410[UP]M)' + - regex: 'LM-X(?:320|410[UP]M)|LGL322DL' model: 'K30' + - regex: 'LMX130IM' + model: 'W10' + - regex: 'LM-K310IM' + model: 'W11' + - regex: 'LM-X600IM' + model: 'W30 Pro' + - regex: 'LM-X440ZMW' + model: 'W30' + - regex: 'LM-K610IM' + model: 'W41' + - regex: 'LG-H522' + model: 'Prime Plus 4G' + - regex: 'LGL58VL' + model: 'Rabel 2' + - regex: 'LG-X190' + model: 'Ray' + - regex: 'LGLS740' + model: 'Volt' - regex: 'LM-X410' model: 'LM-X410' + - regex: 'LGM-K121' + model: 'X400' + - regex: 'LGM-X401L' + model: 'X401' - regex: 'LM-X420N' model: 'X4 (2019)' - - regex: 'LG-X230' + - regex: '(?:LG-X230|VS425)(?:[);/ ]|$)' model: 'K4' + - regex: 'LG-K130(?:[);/ ]|$)' + model: 'K4 LTE' + - regex: '(?:LG-?)?(?:M160|L57BL)(?:[);/ ]|$)' + model: 'K4 (2017)' - regex: 'LM-X420' model: 'K40' + - regex: 'LM-X430(?:[);/ ]|$)' + model: 'K40S' + - regex: 'LM-K410' + model: 'K41S' - regex: 'LG-X220' model: 'K5' - regex: 'LM-X540' model: 'K50S' - - regex: '802LG' + - regex: '(?:802LG|LM-X520)(?:[);/ ]|$)' model: 'K50' + - regex: '402LG' + model: 'Spray' + - regex: 'L-02K' + model: 'JoJo' - regex: '(?:LM-X510[KLS]|X5-LG)' model: 'X5' - regex: 'LM-X625N1' model: 'X6' - regex: 'LM-X625N' model: 'X6 (2019)' - - regex: 'LGMS210' + - regex: 'LGMS210|LG-M210' model: 'Aristo' - regex: 'LM-X210[G]?' model: 'Aristo 2' - - regex: 'LM-X220' + - regex: 'LM-X220(?:[);/ ]|$)' model: 'Aristo 3' - - regex: 'LM-V40(5|9N)' + - regex: 'LM-X220N(?:[);/ ]|$)' + model: 'X2 (2019)' + - regex: 'LM-V40(?:5|9N|5EBW)?(?:[);/ ]|$)' model: 'V40 ThinQ' - - regex: 'LM-V500N' - model: 'V50' - - regex: '(?:LG-)?(?:RS987|H901|H96[0128]|VS990)' + - regex: 'LM-(?:V500N?|V450)(?:[);/ ]|$)' + model: 'V50 ThinQ' + - regex: 'LM-V510N' + model: 'V50S ThinQ' + - regex: 'LM-Q920N' + model: 'Q92' + - regex: 'LM-Q927L' + model: 'Q9 One' + - regex: '(?:LG-)?(?:RS987|H90[01]|H96[0218]|VS990|F600[LK]|K428)' model: 'V10' - - regex: 'LG-X240' + - regex: 'LG-(?:X240|M200)' model: 'K8 (2017)' + - regex: 'LM-X220QMA' + model: 'K8s' - regex: '(?:LG-)?RS500' model: 'K8 4G' - regex: '(?:LG-)?VS500' model: 'K8 V' - - regex: 'LM-X212\(G\)' + - regex: 'LM-X212\(G\)|LGUS215' model: 'K8 (2018)' - - regex: '(?:LG-)?H91[058]' - model: 'V20' - - regex: '(?:LG-)?H990(?:DS|N|T)?' - model: 'V20' - - regex: '(?:LG-)?LS997' + - regex: '(?:LG-)?(?:VS995|F800K|US999|LS997|H91[058]|H990(?:DS|[NT])?)' model: 'V20' - - regex: '(?:LG-)?VS995' - model: 'V20' - - regex: '(?:LG-)?US999' - model: 'V20' - - regex: 'VS996' + - regex: '(?:VS996|LG-(?:H933|H93[012]|H930RE|H932PR|[LU]S998|AS998)|LGM-V300[KLS])(?:[);/ ]|$)' model: 'V30' - regex: 'L-01J(?:[);/ ]|$)' model: 'V20 Pro' - - regex: 'L-01K(?:[);/ ]|$)' + - regex: '(?:L-01K|LGV35|LG-H930DS)(?:[);/ ]|$)' model: 'V30 Plus' - regex: 'L-51A(?:[);/ ]|$)' model: 'V60' - - regex: 'A001LG(?:[);/ ]|$)' + - regex: '(?:L-52A|LM-G900(?:N|TM)?)(?:[);/ ]|$)' + model: 'Velvet 5G' + - regex: 'LM-V700N(?:[);/ ]|$)' + model: 'Velvet 2 Pro' + - regex: 'LM-G910' + model: 'Velvet 4G' + - regex: '(?:A001LG|LM-V600V?)(?:[);/ ]|$)' model: 'V60 ThinQ 5G' - regex: '(?:LG-)?VS410PP' model: 'Optimus Zone' @@ -8252,31 +11749,57 @@ LG: model: 'Optimus Zone 2' - regex: '(?:LG-)?VS425PP' model: 'Optimus Zone 3' - - regex: '(?:LG-)?K100' + - regex: '(?:LG-?)?(?:K100|LS450)' model: 'K3' - - regex: '(?:LG-?)?(?:K|MS)33[02]' + - regex: 'LG-AS110' + model: 'K3 (2017)' + - regex: '(?:LG-?)?(?:K|MS)33[02]|LG-X210' model: 'K7' - regex: '(?:LG-?)?(?:K|MS)350' model: 'K8' - regex: 'VS500PP' model: 'K8 V' - - regex: '(?:LG-)?K420(?:N)?' - model: 'K10' - - regex: '(?:LG-)?K430(?:DS|DSF|DSY)?' + - regex: '(?:LG-?)?(?:K420(?:N)?|F670[KLS]?|K430(?:DS|DSF|DSY)?|K410|MS428)' model: 'K10' - regex: '(?:LG-)?M250N?' model: 'K10 (2017)' - - regex: '(?:LG-)?F670[KLS]?' - model: 'K10' - regex: '(?:LG-)?M255' model: 'K20' - regex: '(?:LG-?)?[MT]P260' model: 'K20 Plus' - - regex: '(?:LG-)?M700(?:N|A|DSK|AN)?' + - regex: 'LM-K200(?:[);/ ]|$)' + model: 'K22' + - regex: 'LM-K300(?:[);/ ]|$)' + model: 'K31' + - regex: 'LM-K420(?:[);/ ]|$)' + model: 'K42' + - regex: '(?:LM-K500|LGL555DL)(?:[);/ ]|$)' + model: 'K51' + - regex: 'LM-K510(?:[);/ ]|$)' + model: 'K51S' + - regex: 'LM-K520(?:[);/ ]|$)' + model: 'K52' + - regex: 'LM-K525(?:[);/ ]|$)' + model: 'K56' + - regex: 'LM-K526(?:[);/ ]|$)' + model: 'K56 Plus' + - regex: 'LM-Q510N(?:[);/ ]|$)' + model: 'Q51' + - regex: ' LM-Q310N(?:[);/ ]|$)' + model: 'Q31' + - regex: 'LM-Q630N?(?:[);/ ]|$)' + model: 'Q61' + - regex: '(?:LG-)?M700(?:N|A|DSK|AN)?|LGM-X600[SLK]|LG-M703|LG-US700' model: 'Q6' - - regex: 'LM-X440IM' + - regex: 'LM-X440' model: 'W30' - - regex: '(?:LG-?)?K220' + - regex: 'LGV36(?:[);/ ]|$)' + model: 'it' + - regex: 'LG-M257(?:[);/ ]|$)' + model: 'Harmony' + - regex: 'LM-K400(?:[);/ ]|$)' + model: 'Harmony 4' + - regex: '(?:LG-?)?(?:K220|LS755|F750K)' model: 'X Power' - regex: '(?:LG-?)?M320' model: 'X Power 2' @@ -8286,35 +11809,78 @@ LG: model: 'Phoenix 3' - regex: '(?:LG-)?F100[SL]' model: 'Optimus Vu' + - regex: '(?:LG-)?VM670' + model: 'Optimus V' - regex: '(?:LG-)?P880' model: 'Optimus 4X HD' - - regex: '(?:LG-)?(H340n?|H324)' + - regex: '(?:LG-)?(H340n?|H32[04])' model: 'Leon' - - regex: '(?:LG-)?H342' + - regex: '(?:LG-)?H342|LGMS345' model: 'Leon 4G LTE' - - regex: '(?:LG-)?H422' + - regex: '(?:LG-)?H4(?:40|2[02])' model: 'Spirit' - regex: '(?:LG)?C660' model: 'Optimus Pro' + - regex: 'LGL158VL' + model: 'Rebel 3' - regex: 'LML21(?:1B|2V)L' model: 'Rebel 4' - regex: 'VS876' model: 'Lucid 3' - - regex: 'VS880(PP)?' + - regex: 'VS880(PP)?|LG-D690' model: 'G Vista' + - regex: 'VS820' + model: 'Lancet' + - regex: 'VS870 4G' + model: 'Lucid 2' + - regex: 'VS810PP' + model: 'Transpyre' + - regex: 'LG-D838' + model: 'G Pro 2' + + - regex: 'LM-F100N?(?:[);/ ]|$)' + device: 'phablet' + model: 'WING' - - regex: 'LG-V490' + - regex: 'LM-T60[05]' + model: 'G Pad 5 10.1" FHD' + device: 'tablet' + - regex: 'LG-?(?:UK|V)410' + model: 'G Pad 7.0" LTE' + device: 'tablet' + - regex: 'LG-V533' + model: 'G Pad IV 8.0"' + device: 'tablet' + - regex: 'LG-?(?:LK430|V400)' + model: 'G Pad F 7.0"' + device: 'tablet' + - regex: 'LGLK430' + model: 'G Pad F 7.0"' + device: 'tablet' + - regex: 'LG-V49[56]' + model: 'G Pad F 8.0"' + device: 'tablet' + - regex: 'LG-V4[89]0' model: 'G Pad 8.0' device: 'tablet' + - regex: 'LGT01' + model: 'G Pad 8.0" LTE' + device: 'tablet' - regex: 'LG-V500' model: 'G Pad 8.3' device: 'tablet' - regex: 'LG-V700' model: 'G Pad 10.1' device: 'tablet' + - regex: 'LG-V497' + model: 'G Pad II 8.0"' + device: 'tablet' - regex: 'LG-V935' model: 'G Pad II 10.1' device: 'tablet' + - regex: 'LGT02' + model: 'G Pad III 8.0' + device: 'tablet' - regex: 'LG-V521' model: 'G Pad X 8.0' device: 'tablet' @@ -8324,7 +11890,31 @@ LG: - regex: 'VK815' model: 'G Pad X 8.3' device: 'tablet' + - regex: 'LG-V520' + model: 'G Pad X 8.0"' + device: 'tablet' + - regex: 'LG-V530' + model: 'G Pad X2 8.0" Plus' + device: 'tablet' + - regex: 'LGT32' + model: 'Qua Tad PZ' + device: 'tablet' + - regex: 'LGT31' + model: 'Qua Tad PX' + device: 'tablet' + - regex: '\(LGE?, WEBOS[123], (?:wired|wireless)' + device: 'tv' + model: 'WebOS TV' + - regex: '\(LGE?, ([a-z0-9_ \-]+), (?:wired|wireless)' + model: '$1' + device: 'tv' + - regex: 'Media/BP740' + model: 'BP740' + device: 'tv' + - regex: '47LA790W-ZA' + model: '47LA790W-ZA' + device: 'tv' - regex: 'webOS.TV' device: 'tv' model: 'WebOS TV' @@ -8335,6 +11925,9 @@ LG: - regex: 'LG Watch Urbane' device: 'wearable' model: 'Watch Urbane' + - regex: 'G Watch( R)?' + device: 'wearable' + model: 'G Watch$1' # general detections - regex: '(LM-[A-Z]{1}[0-9]{3}([A-Z]{1,3})?)' @@ -8348,6 +11941,8 @@ LG: - regex: 'LG[ _\-](V90.*|Optimus[ _\-]Pad.*) Build' device: 'tablet' model: '$1' + - regex: 'LGM-([^/;]*)( Build|[;)])' + model: '$1' - regex: 'LG(?:/|-LG| |-)?([^/;]*) Build' model: '$1' - regex: 'LG(?:/|-LG| |-)?([a-z0-9]+)' @@ -8359,6 +11954,16 @@ LG: - regex: '(VX[0-9]+)' model: '$1' + - regex: 'Web0S; Linux/SmartTV' + device: 'tv' + model: '' + +# Lifemaxx +Lifemaxx: + regex: 'LIFEMAXX, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' + # Lingwin Lingwin: regex: 'Lingwin[ _\-]' @@ -8369,27 +11974,32 @@ Lingwin: - regex: 'Lingwin[ _\-]?([^);/ ]+)' model: '$1' -# Logicom +# Logicom (logicom-europe.com) Logicom: - regex: 'LOGICOM[_ ]|(TAB950|TAB1062|E731|E812|E912|E1031|POWER BOT|La Tab 72|(?:B|C|M|ID|VR)[ _]?BOT[ _]?(?:TAB[ _])?([0-9]+\+?)(?:PLUS)?|KT712A_4\.4|L-?IXIR[0-9]*|L-ITE|L-?EMENT|Le[ _]?(?:Hop|Lift|Hola|Moov[2]?|Fit FR|Smooth(?: FR)?))[_);/ ]' + regex: 'LOGICOM[_ ]|(TAB950|TAB1062|E731|E812|E912|E1031|POWER BOT|La[ _]Tab[ _](?:7[24]|10[57]|11[345])|(?:B|C|M|ID|VR)[ _]?BOT[ _]?(?:TAB[ _])?([0-9]+\+?)(?:PLUS)?|KT712A_4\.4|L-?IXIR[0-9]*|L-ITE|L-EGANTONE(?:-R)?|Le Fizz|L-?EMENT.+|Le[ _]?(?:Up|Connect|Hop|Hello|Lift|Hola|Moov[2]?|Must(?: 2)?|Starter L|Fit FR|Spark|Prime|Smooth(?: FR)?))[_);/ ]' device: 'tablet' models: - - regex: 'La Tab 72' - model: 'La Tab 72' + - regex: 'La[ _]Tab[ _](7[24]|10[57]|11[345]|105_P)(?:[);/ ]|$)' + model: 'La Tab $1' - regex: 'LOGICOM_LA_TAB_LINK_71' model: 'La Tab Link 71' - - regex: 'KT712A_4.4' - model: 'L-ixir Tab 701' + - regex: 'KT712A_4.4|L-IXIR TAB 701 3G' + model: 'L-ixir Tab 701 3G' - regex: 'LIXIR1041' model: 'L-ixir Tab 1041' - - regex: 'L-?IXIR TAB ([^;/]+) Build' + - regex: 'L-?IXIR[ _]TAB[ _]([^);/]+)( Build|[);])' model: 'L-ixir Tab $1' + - regex: 'L-ITE[ _](400M|452|50[46] HD|506R HD|552 HD)(?:[);/ ]|$)' + device: 'smartphone' + model: 'L-ite $1' - regex: 'L-ITE[ _]([^;/]+) Build' model: 'L-ite Tab $1' - - regex: 'L-EMENT (400)(?:[);/ ]|$)' + - regex: 'L-?EMENT[ _]?(350|451|40[103]|55[013]|50[15]|500L?)(?:[);/ ]|$)' model: 'L-ement $1' device: 'smartphone' - - regex: 'L-?EMENT[ _](?:TAB)?([^;/]+) Build' + - regex: 'L-?EMENT[ _](?:TAB)[ )]?([^);/]+)(?: Build|[);])' + model: 'L-ement Tab $1' + - regex: 'L-?EMENT[ _]?(74[01])(?:[);/ ]|$)' model: 'L-ement Tab $1' - regex: '(TAB950|TAB1062|E731|E812|E912|E1031)(?:[);/ ]|$)' model: '$1' @@ -8400,6 +12010,9 @@ Logicom: - regex: 'Le Lift' model: 'Le Lift' device: 'smartphone' + - regex: 'Le[ _]Connect' + model: 'Le Connect' + device: 'smartphone' - regex: 'Le Hola FR(?:[);/ ]|$)' model: 'Le Hola FR' device: 'smartphone' @@ -8415,19 +12028,49 @@ Logicom: - regex: 'Le Fit FR(?:[);/ ]|$)' model: 'Le Fit FR' device: 'smartphone' + - regex: 'Le Fizz' + model: 'Le Fizz' + device: 'smartphone' - regex: 'Le Hop(?:[);/ ]|$)' model: 'Le Hop' device: 'smartphone' + - regex: 'Le[ _]Hello(?:[);/ ]|$)' + model: 'Le Hello' + device: 'smartphone' - regex: 'Le Smooth FR(?:[);/ ]|$)' model: 'Le Smooth FR' device: 'smartphone' - regex: 'Le Smooth(?:[);/ ]|$)' model: 'Le Smooth' device: 'smartphone' + - regex: 'Le Must 2(?:[);/ ]|$)' + device: 'smartphone' + model: 'Le Must 2' + - regex: 'Le Must(?:[);/ ]|$)' + model: 'Le Must' + device: 'smartphone' + - regex: 'Le Starter L(?:[);/ ]|$)' + model: 'Le Starter L' + device: 'smartphone' + - regex: 'Le[ _]Spark(?:[);/ ]|$)' + model: 'Le Spark' + device: 'smartphone' + - regex: 'Le[ _]Prime(?:[);/ ]|$)' + model: 'Le Prime' + device: 'smartphone' + - regex: 'L-EGANTONE-R' + model: 'L-Egant One R' + device: 'smartphone' + - regex: 'L-EGANTONE' + model: 'L-Egant One' + device: 'smartphone' + - regex: 'Le Up(?:[);/ ]|$)' + model: 'Le Up' + device: 'smartphone' # Konka Konka: - regex: 'KONKA[_ ]([a-z0-9]+)' + regex: 'KONKA[_ ]([a-z0-9]+)|(?: RE1)(?:[);/ ]|$)' device: 'smartphone' models: # Explicit smartphone models @@ -8439,30 +12082,40 @@ Konka: model: 'Expose $1' - regex: 'W990' model: 'Tuxedo 990' + - regex: '( RE1)(?:[);/ ]|$)' + model: '$1' - regex: 'KONKA[_ ]([a-z0-9]+)' device: 'feature phone' model: '$1' -# Konrow +# Konrow (konrow.com) Konrow: - regex: '(?:BIGCOOL|COOLFIVE|COOL-K|Just5|Link5)(?:[);/ ]|$)' + regex: '(?:BIGCOOL|COOLFIVE|COOL-K|Just5|Link5|EASY(?:5|62)|CITY55|Cool55|SKY_55_EEA)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'BIGCOOL(?:[);/ ]|$)' model: 'BigCool' - regex: 'COOL-K(?:[);/ ]|$)' model: 'Cool-K' + - regex: 'Cool55(?:[);/ ]|$)' + model: 'Cool 55' - regex: 'COOLFIVE(?:[);/ ]|$)' model: 'Cool Five' - regex: 'Just5(?:[);/ ]|$)' model: 'Just 5' - regex: 'Link5(?:[);/ ]|$)' model: 'Link 5' + - regex: 'EASY(5|62)(?:[);/ ]|$)' + model: 'Easy $1' + - regex: 'CITY55(?:[);/ ]|$)' + model: 'City 55' + - regex: 'SKY_55_EEA(?:[);/ ]|$)' + model: 'Sky 55' -# Karbonn +# Karbonn (karbonnmobiles.com) Karbonn: - regex: '(?:Browser-)?Karbonn|K9 Kavach 4G|K9 Music 4G|K9 Smart|K9 VIRAAT 4G|Aura Sleek Plus|Aura Note Play|Titanium (?:Vista 4G|Jumbo)' + regex: '(?:Browser-)?Karbonn|K9 Kavach 4G|K9[_ ](?:Viraat|Smart)[_ ]Plus|K9 Music 4G|K9 Smart|K9 VIRAAT 4G|Aura (?:Sleek Plus|Power 4G Plus|Note Play|Note 2)|Titanium[ _](?:3D-Plex|Octane Plus|Vista 4G|Jumbo|S360|S1[059]|S35|S20[13]|S22|S[15]|S200 HD|Frames S7|MOGHUL|S9)|MACHFIVE|MACHONE|K-lite F3|Sparkle V|Alfa A114 Quad|Quattro[ _]L(?:45|5[025])[ _](?:HD|IPS|VR)|A9 Indian|S2052GB' device: 'smartphone' models: - regex: 'K9 Kavach 4G' @@ -8477,24 +12130,64 @@ Karbonn: model: 'K9 Smart Grand' - regex: 'K9 Smart Yuva' model: 'K9 Smart Yuva' + - regex: 'K9[_ ]Smart[_ ]Plus' + model: 'K9 Smart Plus' - regex: 'K9 Smart' model: 'K9 Smart' + - regex: 'A9 Indian' + model: 'A9 Indian' + - regex: 'K9[_ ]Viraat[_ ]Plus' + model: 'K9 Viraat Plus' - regex: 'Aura Sleek Plus' model: 'Aura Sleek Plus' + - regex: 'Aura Power 4G Plus' + model: 'Aura Power 4G Plus' - regex: 'Aura Note Play' model: 'Aura Note Play' + - regex: 'Aura Note 2' + model: 'Aura Note 2' + - regex: 'Alfa A114 Quad' + model: 'Alfa A114 Quad' - regex: 'karbonnK9 Viraat 4G|K9 VIRAAT 4G' model: 'K9 Viraat 4G' + - regex: 'MACHFIVE' + model: 'Mach Five' + - regex: 'MACHONEPLUS' + model: 'Titanium Mach One Plus' + - regex: 'MACHONE' + model: 'Titanium Mach One' - regex: 'Titanium[ _]S2[ _]Plus' model: 'Titanium S2 Plus' - - regex: 'Titanium_S99' - model: 'Titanium S99' + - regex: 'Titanium_S9Plus' + model: 'Titanium S9 Plus' + - regex: 'Titanium[_ ]S(99|360|1[059]|109|35|200 HD|20[13]|22|[15])(?:[);/ ]|$)' + model: 'Titanium S$1' - regex: 'Titanium Vista 4G' model: 'Titanium Vista 4G' - regex: 'Titanium Jumbo 2' model: 'Titanium Jumbo 2' - regex: 'Titanium Jumbo' model: 'Titanium Jumbo' + - regex: 'Titanium[ _]MOGHUL' + model: 'Titanium Moghul' + - regex: 'Titanium Frames S7' + model: 'Titanium Frames S7' + - regex: 'Titanium Octane Plus' + model: 'Titanium Octane Plus' + - regex: 'Titanium[ _]3D-Plex' + model: 'Titanium 3D Plex' + - regex: 'S2052GB' + model: 'Titanium S250 2GB' + - regex: 'K-lite F3' + model: 'K-Lite F3' + - regex: 'Sparkle V' + model: 'Sparkle V' + - regex: 'Quattro[ _]L(5[05])[ _]HD' + model: 'Quattro L$1 HD' + - regex: 'Quattro[ _]L(45)[ _]IPS' + model: 'Quattro L$1 IPS' + - regex: 'Quattro[ _]L(52)[ _]VR' + model: 'Quattro L$1 VR' - regex: 'Karbonn ([a-z0-9]+) WAP-Browser' model: '$1' device: 'feature phone' @@ -8522,61 +12215,82 @@ Sagem: model: '$1' - regex: 'portalmmm/2.0 ((?:SG|my)[a-z0-9]+)' model: '$1' + - regex: 'DI384_UHD_TKC' + model: 'DI384' + device: 'tv' + - regex: 'DIW350_TP' + model: 'DIW350' + device: 'tv' + - regex: 'Sagemcom_Broadband_SAS,([a-z0-9_ \-]+),(?:wired|wireless)' + model: '$1' + device: 'tv' # Coby Kyros Coby Kyros: - regex: '(MID(?:1024|1125|1126|1045|1048|1060|1065|4331|7012|7015A?|7016|7022|7032|7035|7036|7042|7047|7048|7052|7065|7120|8024|8042|8048|8065|8125|8127|8128|9724|9740|9742))(?:[);/ ]|$)' + regex: '(MID(?:1024|112[56]|1045|1048|106[05]|4331|701[26]|7015A?|70[32]2|703[56]|704[278]|7052|7065|7120|8024|80[47]2|8048|8065|8125|812[78]|9724|974[02]))(?:[);/ ]|$)' device: 'tablet' model: '$1' -# Mpman +# Mpman (mpmaneurope.com) Mpman: - regex: '(?:MPQC|MPDC)[0-9]+|PH(?:150|340|350|360|451|500|520)|(?:MID(?:7C|74C|82C|84C|801|811|701|711|170|77C|43C|102C|103C|104C|114C)|MP100i OCTA|MP(?:843|717|718|1010|7007|7008|843|888|959|969)|MGP7)(?:[);/ ]|$)' + regex: '(?:MPQC|MPDC)[0-9]+|PH(?:150|340|350|360|451|500|520|544|604)|(?:MID(?:7C|74C|82C|84C|801|811|701|711|170|77C|43C|102C|103C|104C|114C)|MP100i OCTA|MP(?:843|717|718|1010|7007|7008|843|888|959|969|QCG(1[01]|77)(?: 3G)?)|MGP7)(?:[);/ ]|$)' device: 'tablet' models: - regex: '((?:MPQC|MPDC)[0-9]+[^/;)]+)(?: Build|\))' model: '$1' - regex: 'MP100i OCTA(?:[);/ ]|$)' model: 'MP100i OCTA' - - regex: '(MID(?:7C|74C|82C|84C|801|811|701|711|170|77C|43C|102C|103C|104C|114C)|MP(?:843|717|718|1010|7007|7008|843|888|959|969)|MGP7)(?:[);/ ]|$)' + - regex: 'MPQCG10(?: 3G)?(?:[);/ ]|$)' + model: 'MPQCG10 3G' + - regex: '(MID(?:7C|74C|82C|84C|801|811|701|711|170|77C|43C|102C|103C|104C|114C)|MP(?:843|717|718|1010|7007|7008|843|888|959|969|QCG(?:11|77))|MGP7)(?:[);/ ]|$)' model: '$1' - - regex: '(PH(?:150|340|350|360|451|500|520))' + - regex: '(PH(?:150|340|350|360|451|500|520|544|604))' model: '$1' device: 'smartphone' -# Majestic +# Majestic (www.newmajestic.com) Majestic: - regex: 'MAJESTIC[ _-]|CRONO ?[0-9]+|TAB (?:647|411) 3G|URANO 77LTE' - device: 'smartphone' - models: - - regex: 'URANO 77LTE(?:[);/ ]|$)' - model: 'Urano 77 LTE' - - regex: 'TAB (647|411) 3G' - model: 'Tab $1 3G' - device: 'tablet' - - regex: 'MAJESTIC[ _]Tab([^;/]+)Build' - model: 'Tab$1' - device: 'tablet' - - regex: 'MAJESTIC[ _]Tab([^);/]+)(?:[);/]|$)' - model: 'Tab$1' - device: 'tablet' - - regex: 'MAJESTIC[ _]([^;/]+)Build' - model: '$1' - - regex: 'MAJESTIC[ _]([^);/]+)(?:(?:[);/ ]|$)|$)' - model: '$1' - - regex: 'CRONO ?([0-9]+) Build' - model: 'Crono $1' - - regex: 'CRONO ?([0-9]+)(?:[);/]|$)' - model: 'Crono $1' - -# Manta Multimedia + regex: 'MAJESTIC[ _-]|CRONO ?[0-9]+|(?:TAB (?:647|411) 3G|TAB-714|TAB 711 4G|URANO 77LTE|PLUTO__?26N?)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'URANO 77LTE(?:[);/ ]|$)' + model: 'Urano 77 LTE' + - regex: 'PLUTO__?(26N?)(?:[);/ ]|$)' + model: 'Pluto $1' + - regex: 'TAB (647|411) 3G' + model: 'Tab $1 3G' + device: 'tablet' + - regex: 'TAB 711 4G' + model: 'Tab 711 4G' + device: 'tablet' + - regex: 'TAB-714' + model: 'Tab 714 WiFi' + device: 'tablet' + - regex: 'MAJESTIC[ _]Tab([^;/]+)Build' + model: 'Tab$1' + device: 'tablet' + - regex: 'MAJESTIC[ _]Tab([^);/]+)(?:[);/]|$)' + model: 'Tab$1' + device: 'tablet' + - regex: 'MAJESTIC[ _]([^;/]+)Build' + model: '$1' + - regex: 'MAJESTIC[ _]([^);/]+)(?:(?:[);/ ]|$)|$)' + model: '$1' + - regex: 'CRONO ?([0-9]+) Build' + model: 'Crono $1' + - regex: 'CRONO ?([0-9]+)(?:[);/]|$)' + model: 'Crono $1' + +# Manta Multimedia or Manta Manta Multimedia: - regex: 'MSP950(1[45]|2[01])|MSP96017|((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))(?:[);/ ]|$)' + regex: 'MSP950(1[245]|2[01])|MSP96017|MSP94501|MSP95009|MSP96002|MSP450[79]|((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))(?:[);/ ]|$)' device: 'smartphone' models: - regex: '((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))(?:[);/ ]|$)' device: 'tablet' model: '$1' + - regex: 'MSP95012' + model: 'Titano 1' - regex: 'MSP95014' model: 'Titano 3' - regex: 'MSP95015' @@ -8587,54 +12301,112 @@ Manta Multimedia: model: 'Rocky 3 Pro' - regex: 'MSP96017' model: 'Forto 2' + - regex: 'MSP96002' + model: 'Forto 1' + - regex: 'MSP94501' + model: 'Easy Selfie' + - regex: '(MSP450[79]|MSP95009)(?:[);/ ]|$)' + model: '$1' # Masstel Masstel: - regex: 'Masstel' + regex: 'Masstel|Juno[ _]Q[567]' device: 'smartphone' models: - - regex: 'Masstel[_ ](Juno[_ ]Q3|X9|N4[56]0|N5[2458]0|N536|M05|M1[29]0|M1[125]|M250|M25)(?:[);/ ]|$)' + - regex: '(?:Masstel[_ ])?(Juno[_ ]Q[3567]|X9|N4[56]0|N5[2458]0|N536|M05|M1[29]0|M1[125]|M250|M25)(?:[);/ ]|$)' model: '$1' - regex: 'Masstel[_ ]\((M18)\)' model: '$1' - regex: 'Masstel_Tab7LTE(?:[);/ ]|$)' model: 'Tab 7 LTE' device: 'tablet' + - regex: 'Masstel_Tab10_?4G(?:[);/ ]|$)' + model: 'Tab 10 4G' + device: 'tablet' - regex: 'Masstel Tab (840|700i)(?:[);/ ]|$)' model: 'Tab $1' device: 'tablet' +# Mastertech (https://mastertechhome.com/) +Mastertech: + regex: 'MASTERTECH,([a-z0-9_ \-]+),(?:wired|wireless)' + device: 'tv' + model: '$1' + # Maxwest Maxwest: - regex: '(?:Astro_5N_LTE|Virtue Z5|Astro X55s|Nitro_4)(?:[);/ ]|$)' - device: 'smartphone' - models: - - regex: 'Astro_5N_LTE' - model: 'Astro 5N LTE' + regex: '(?:Astro[_ ](?:Phablet_9|55?N[_ ]LTE|5 PRO|5s|[45]P|X4|5_GO_LTE|X55s?|4\.5|4|X5)|Astro6|Virtue Z5|Nitro[_ ](?:4S?|55R|5[XRP]|[45] GO|4s LTE)|Gravity_55?_GO|Nitro_Phablet_9s)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Astro[_ ](55?)N[_ ]LTE' + model: 'Astro $1N LTE' + - regex: 'Astro[_ ]X55[_ ]LTE' + model: 'Astro X55 LTE' + - regex: 'Astro_5_GO_LTE' + model: 'Astro 5 Go LTE' + - regex: 'Astro 5 PRO' + model: 'Astro 5 Pro' + - regex: 'Astro[_ ](X55s?|5s|4|X[45]|[45]P)(?:[);/ ]|$)' + model: 'Astro $1' + - regex: 'Astro[_ ](4\.5)' + model: 'Astro $1"' - regex: 'Virtue Z5' model: 'Virtue Z5' - - regex: 'Astro X55s' - model: 'Astro X55s' - - regex: 'Nitro_4' - model: 'Nitro 4' + - regex: 'Astro (X55s?|5s)' + model: 'Astro $1' + - regex: 'Astro[_ ]X4' + model: 'Astro X4' + - regex: 'Nitro ([45]) GO' + model: 'Nitro $1 GO' + - regex: 'Nitro 4s LTE' + model: 'Nitro 4s LTE' + - regex: 'Nitro[ _]4s' + model: 'Nitro 4s' + - regex: 'Nitro[_ ](4|55R|5[XRP])' + model: 'Nitro $1' + - regex: 'Gravity_(55?)_GO' + model: 'Gravity $1 GO' + + - regex: 'Astro6' + device: 'phablet' + model: 'Astro 6' + + - regex: 'Nitro_Phablet_9s' + device: 'tablet' + model: 'Nitro Phablet 9s' + - regex: 'Astro_Phablet_9' + device: 'tablet' + model: 'Astro Phablet 9' + +# True Slim (ssbphones.com) +True Slim: + regex: '(SSB-508[ED])(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' -# Maze +# Maze Speed (ssbphones.com) +Maze Speed: + regex: '(SSB-(?:500|508)|SSB408D|SSB504R)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'SSB-?(500|508|408D|504R)(?:[);/ ]|$)' + model: 'SSB-$1' + +# Maze (mazephone.com) Maze: - regex: '(?:SSB-500|Alpha[_ ]X|Maze Alpha|SSB504R)(?:[);/ ]|$)' + regex: '(?:Alpha[_ ]X|Maze Alpha)(?:[);/ ]|$)|(?:Android [78].+ Blade|Comet)(?: Build|[;)])' device: 'smartphone' models: - - regex: 'SSB-500(?:[);/ ]|$)' - model: 'SSB-500' - - regex: 'SSB504R(?:[);/ ]|$)' - model: 'Speed' - regex: 'Alpha[_ ]X(?:[);/ ]|$)' model: 'Alpha X' - regex: 'Maze Alpha(?:[);/ ]|$)' model: 'Alpha' + - regex: '(Blade|Comet)(?:[);/ ]|$)' + model: '$1' -# Mediacom +# Mediacom (mediacomeurope.it) Mediacom: - regex: '(?:SmartPad7503G|M-SP10MXA|SmartPad970s2(?:3G)?|M[_-][MPS]P[0-9a-z]+|M-IPRO[0-9a-z]+)(?:[);/ ]|$)' + regex: '(?:SmartPad7503G|M-SP10MXA|M-PPAB500|SmartPad970s2(?:3G)?|M[_-][MPS]P[0-9a-z]+|M-IPRO[0-9a-z]+|1AEC|1AZ2[TP])(?:[);/ ]|$)' device: 'tablet' models: - regex: 'SmartPad7503G(?:[);/ ]|$)' @@ -8644,53 +12416,73 @@ Mediacom: - regex: 'SmartPad970s2(?:[);/ ]|$)' model: 'SmartPad 970 S2' - regex: 'M-MP84[02]M(?:[);/ ]|$)' - model: 'SmartPad 8.0 Mobile' + model: 'SmartPad 8.0" Mobile' - regex: 'M-MP940M(?:[);/ ]|$)' - model: 'SmartPad 9.7 Mobile' + model: 'SmartPad 9.7" Mobile' - regex: 'M-SP10MXA(?:[);/ ]|$)' - model: 'SmartPad MX 10' + model: 'SmartPad MX 10.1"' + - regex: 'M-SP8MXA(?:[);/ ]|$)' + model: 'SmartPad MX 8.0"' + - regex: 'M-SP7HXAH(?:[);/ ]|$)' + model: 'SmartPad HX 7.0"' + - regex: 'M-SP8HXAH(?:[);/ ]|$)' + model: 'SmartPad HX 8.0" HD' - regex: 'M-MP(?:710|720|725|726|740)GOx?(?:[);/ ]|$)' - model: 'SmartPad 7.0 Go' + model: 'SmartPad 7.0" Go' - regex: 'M-MP876S2(?:[);/ ]|$)' - model: 'SmartPad 8.0 S2' + model: 'SmartPad 8.0" S2' - regex: 'M-MP8S2[AB]?3G(?:[);/ ]|$)' - model: 'SmartPad 8.0 S2 3G' + model: 'SmartPad 8.0" S2 3G' - regex: 'M-MP(101|102|860|875)S2[BW]?(?:[);/ ]|$)' model: 'SmartPad $1 S2' - regex: 'M-MP85S23G(?:[);/ ]|$)' model: 'SmartPad 875 S2 3G' - regex: 'M-SP1AGO3G' model: 'SmartPad 10 Go 3G' + - regex: 'M-SP7xGO3G' + model: 'SmartPad 10.1" iPro 3G' + - regex: '1AEC' + model: 'SmartPad 10 Eclipse' - regex: 'M-MP10[45][01]S2(?:[);/ ]|$)' - model: 'SmartPad 10.1 S2' + model: 'SmartPad 10.1" S2' - regex: 'M-MP1S2[AB]3G(?:[);/ ]|$)' - model: 'SmartPad 10.1 S2 3G' + model: 'SmartPad 10.1" S2 3G' - regex: 'M-MP8[24]S4(?:[);/ ]|$)' - model: 'SmartPad 8.0 S4' + model: 'SmartPad 8.0" S4' - regex: 'M-MP8S4[AB]3G(?:[);/ ]|$)' - model: 'SmartPad 8.0 S4 3G' + model: 'SmartPad 8.0" S4 3G' - regex: 'M-MP9S4A3G(?:[);/ ]|$)' - model: 'SmartPad 9.7 S4 3G' + model: 'SmartPad 9.7" S4 3G' - regex: 'M-MP1[02]S4(?:[);/ ]|$)' - model: 'SmartPad 10.1 S4' + model: 'SmartPad 10.1" S4' + - regex: 'M-MP7S4A3G(?:[);/ ]|$)' + model: 'SmartPad 7.0" S4 HD' - regex: 'M-MP1040MC?(?:[);/ ]|$)' - model: 'SmartPad 10.1 HD S4 3G' + model: 'SmartPad 10.1" HD S4 3G' - regex: 'M-MP1S4[AB]3G(?:[);/ ]|$)' - model: 'SmartPad 10.1 S4 3G' + model: 'SmartPad 10.1" S4 3G' + - regex: 'M-SP10HXxH(?:[);/ ]|$)' + model: 'SmartPad 10.1" HX HD' + - regex: 'M-SP10MXHA(?:[);/ ]|$)' + model: 'SmartPad 10.1" MX' + - regex: 'M-SP10MXHL(?:[);/ ]|$)' + model: 'SmartPad 10.1" MX Lite' - regex: 'M-MP8PA3G(?:[);/ ]|$)' - model: 'SmartPad 8.0 HD Pro 3G' + model: 'SmartPad 8.0" HD Pro 3G' - regex: 'M-MP10PA(?:[);/ ]|$)' - model: 'SmartPad 10.1 HD Pro' + model: 'SmartPad 10.1" HD Pro' - regex: 'M-MP10PA3G(?:[);/ ]|$)' - model: 'SmartPad 10.1 HD Pro 3G' + model: 'SmartPad 10.1" HD Pro 3G' - regex: 'M-IPRO([18][01]0)[BW](?:[);/ ]|$)' - model: 'SmartPad 8.0 HD iPro$1 3G' + model: 'SmartPad 8.0" HD iPro$1 3G' + - regex: '1AZ2[TP](?:[);/ ]|$)' + model: 'SmartPad 10.0" Azimut 2' - regex: '(?:M-MP75S23G|M-MP72[01]M)(?:[);/ ]|$)' - model: 'SmartPad 7.0 Mobile' + model: 'SmartPad 7.0" Mobile' device: 'phablet' - regex: 'M-MP7S2[ABDK]3G(?:[);/ ]|$)' - model: 'SmartPad 7.0 S2 3G' + model: 'SmartPad 7.0" S2 3G' device: 'phablet' - regex: 'M-MP5303G(?:[);/ ]|$)' model: 'SmartPad Mini Mobile' @@ -8701,6 +12493,9 @@ Mediacom: - regex: 'M-PPAG550(?:[);/ ]|$)' model: 'PhonePad Duo G550' device: 'phablet' + - regex: 'M-PPAB500(?:[);/ ]|$)' + model: 'PhonePad Duo B500' + device: 'phablet' - regex: 'M-PP2G530(?:[);/ ]|$)' model: 'PhonePad Duo G530' device: 'phablet' @@ -8720,6 +12515,9 @@ Mediacom: model: 'PhonePad Duo S551U' device: 'phablet' + - regex: 'M-PPAG4(?:[);/ ]|$)' + model: 'PhonePad Duo G4' + device: 'smartphone' - regex: 'M-PP[ABC]G500(?:[);/ ]|$)' model: 'PhonePad Duo G500' device: 'smartphone' @@ -8729,36 +12527,42 @@ Mediacom: - regex: 'M[_-]PP[Ax]X(470|510|520)U(?:[);/ ]|$)' model: 'PhonePad Duo X$1U' device: 'smartphone' - - regex: 'M-PPxG(400|501)(?:[);/ ]|$)' + - regex: 'M-PPxG(400|501|[457][PM]?)(?:[);/ ]|$)' model: 'PhonePad Duo G$1' device: 'smartphone' - - regex: 'M-PPxS(470|501)(?:[);/ ]|$)' + - regex: 'M-PPxS(532[LU]|470|501|5P?|7P?)(?:[);/ ]|$)' model: 'PhonePad Duo S$1' device: 'smartphone' + - regex: 'M-PPxG(450)(?:[);/ ]|$)' + model: 'PhonePad Duo G$1' + device: 'smartphone' - regex: 'M-MP([0-9a-z]+)' model: 'SmartPad $1' # Medion Medion: - regex: 'Medion|(?:MD_)?LIFETAB|([SPX]10[0-9]{2}X|E10[45]1X|X5001|P851X|P850X)(?:[);/ ]|$)' + regex: 'Medion|(?:MD_)?LIFETAB|([SPX]10[0-9]{2}X|E10[45]1X|X5001|P851X|P850X|E691X|E1050X)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: '(?:MD_)?LIFETAB_([a-z0-9]+)' + - regex: '(?:MD_)?LIFETAB[_ ]([a-z0-9]+)' device: 'tablet' model: 'Lifetab $1' - - regex: '(E450[46]|E5004|S5004|X5001|E5020|P5015)(?:[);/ ]|$)' + - regex: '(E450[46]|E5004|S5004|X5001|E5020|P5015|P500[45]|X6001)(?:[);/ ]|$)' model: 'Life $1' - regex: '(B5530)(?:[);/ ]|$)' model: '$1' - regex: '(E10[45]1X)(?:[);/ ]|$)' device: 'tablet' model: '$1' - - regex: '([SPX]10[0-9]{2}X|P851X|P850X)(?:[);/ ]|$)' + - regex: '([SPX]10[0-9]{2}X|P851X|P850X|E691X|E1050X)(?:[);/ ]|$)' model: 'Lifetab $1' device: 'tablet' - regex: 'Medion(?: Smartphone)? ([^/;]+) Build' model: '$1' + - regex: 'MEDION, ([a-z0-9_ \-]+), (?:wired|wireless)' + model: '' + device: 'tv' # MEEG MEEG: @@ -8770,106 +12574,29 @@ MEEG: - regex: 'MEEG[ _\-]?([^);/ ]+)' model: '$1' -# Meizu -Meizu: - regex: 'Meizu|MZ-[a-z]|(M04[05]|MZ-16th(?: Plus)?|MZ-16[st]|M7[12]1C|M35[1356]|M612C|M578CA|M181[36]|M1822|M681C|M6T|MX[ -]?[2345](?: Pro)?|(?:MZ-)?m[1-6] note|M621C|M1852|M57[18]C|M3[ESX]|M031|m1 metal|M1 E|M2|M2 E|M5s Build|PRO 6|PRO 7-H|MZ-15 (?:Lite|Plus)|MZ-16 X)(?:[);/ ]|$)' +# Fourel +Fourel: + regex: '(?:EASYSMARTM3|EasySmart M2)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: '(?:MZ-)?M571C' - device: 'phablet' - model: 'M2 Note' - - regex: '(?:MZ-)?m([1-6]) note(?:[);/ ]|$)' - device: 'phablet' - model: 'M$1 Note' - - regex: 'M1 E(?:[);/ ]|$)' - model: 'M1E' - - regex: 'M2 E(?:[);/ ]|$)' - model: 'M2E' - - regex: '(?:MZ-)?M578C[A]?|M2(?:[);/ ]|$)' - model: 'M2' - - regex: 'M681C(?:[);/ ]|$)' - model: 'M3 Note' - device: 'phablet' - - regex: 'M621C(?:[);/ ]|$)' - model: 'M5 Note' - device: 'phablet' - - regex: 'M711C(?:[);/ ]|$)' - model: 'M6' - - regex: 'M721C(?:[);/ ]|$)' - model: 'M6 Note' - device: 'phablet' - - regex: 'M6T' - model: 'M6T' - - regex: 'M3E' - model: 'M3E' - - regex: 'M3S' - model: 'M3S' - - regex: 'M3X' - model: 'M3X' - - regex: 'M5S|M612C' - model: 'M5S' - - regex: '(M04[05]|MX[ -]?2)(?:[);/ ]|$)' - model: 'MX2' - - regex: '(M35[1356]|MX[ -]?3)(?:[);/ ]|$)' - model: 'MX3' - - regex: 'MX[ -]?4 Pro(?:[);/ ]|$)' - model: 'MX4 Pro' - - regex: 'MX[ -]?4(?:[);/ ]|$)' - model: 'MX4' - - regex: 'MX[ -]?5(?:[);/ ]|$)' - model: 'MX5' - - regex: 'm1 metal' - model: 'M1 Metal' - - regex: 'M1813(?:[);/ ]|$)' - model: 'M8' - - regex: 'M1816(?:[);/ ]|$)' - model: 'M8 Lite' - - regex: 'PRO 6' - model: 'PRO 6' - - regex: 'PRO 7-H(?:[);/ ]|$)' - model: 'PRO 7' - - regex: 'M031(?:[);/ ]|$)' - model: 'MX Dual Core' - - regex: 'M1852(?:[);/ ]|$)' - model: 'X8' - - regex: 'M1822(?:[);/ ]|$)' - model: 'Note 8' - - regex: 'MZ-16T(?:[);/ ]|$)' - model: '16T' - - regex: 'MZ-16th Plus(?:[);/ ]|$)' - model: '16th Plus' - - regex: 'MZ-15 Plus(?:[);/ ]|$)' - model: '15 Plus' - - regex: 'MZ-15 Lite(?:[);/ ]|$)' - model: '15 Lite' - - regex: 'MZ-16th(?:[);/ ]|$)' - model: '16th' - - regex: 'MZ-16 X(?:[);/ ]|$)' - model: '16X' - - regex: 'Meizu[_ ]note([89])(?:[);/ ]|$)' - device: 'phablet' - model: 'Note $1' - - - regex: '(?:MZ-)?Meizu[_ ]([^/;]+) Build' - model: '$1' - - regex: '(?:MZ-)?Meizu[_ ]([a-z0-9_]+)' - model: '$1' - - regex: 'MZ-([^/;]+) Build' - model: '$1' + - regex: 'EASY ?SMART ?M([32])' + model: 'Easy Smart M$1' # Meitu Meitu: - regex: '(?:(?<!MI CC 9 )Meitu[2]?|MP1503|MP1512|MP160[235]|MP170[19]|MP171[138])(?:[);/ ]|$)' + regex: '(?:(?<!MI CC 9 )Meitu[2]?|MP1503|MP1512|MP160[235]|MP170[19]|MP171[138]|MP1801)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'MP1503(?:[);/ ]|$)' model: 'M6' - - regex: 'MP1512(?:[);/ ]|$)' + - regex: '(?:MP1512|Meizu M6s)(?:[);/ ]|$)' model: 'M6s' - regex: 'MP1602(?:[);/ ]|$)' model: 'T8' - regex: 'MP1605(?:[);/ ]|$)' model: 'V6' + - regex: 'MP1801(?:[);/ ]|$)' + model: 'V7' - regex: 'MP17(?:01|13)(?:[);/ ]|$)' model: 'T8s' - regex: 'MP1718(?:[);/ ]|$)' @@ -8885,41 +12612,60 @@ Meitu: # Memup Memup: - regex: 'SlidePad ?([^;/]*) Build|SPNG?[0-9]{2,4}[a-z]{0,2}(?:[);/ ]|$)|SP704CE?' + regex: 'SlidePad ?([^;/]*) Build|SPNG?[0-9]{2,4}[a-z]{0,2}(?:[);/ ]|$)|SP704CE?|SP-NG708-3G' device: 'tablet' models: - regex: 'SlidePad ?([^;/]*) Build' model: 'SlidePad $1' - regex: 'SPNG([0-9]{2,4}[a-z]{0,2})(?:[);/ ]|$)' model: 'SlidePad NG$1' + - regex: 'SP-NG(708)-3G(?:[);/ ]|$)' + model: 'SlidePad NG$1 3G' - regex: 'SP704(CE?)' model: 'SlidePad 704$1' -# Mecer +# Mecer (mecer.co.za) Mecer: - regex: '(M785|800P3[12]C|101P51C|X1010)(?:[);/ ]|$)' + regex: '(M785|800P3[12]C|101P51C|X1010|M7[67]QF6|M17QF6_[43]G)(?:[);/ ]|$)' device: 'tablet' models: - regex: 'M785(?:[);/ ]|$)' model: 'Xpress Smartlife M785' - regex: 'X1010(?:[);/ ]|$)' model: 'X1010' + - regex: 'M17QF6_([34])G(?:[);/ ]|$)' + model: 'M17QF6 $1G' - regex: '800P31C(?:[);/ ]|$)' model: 'Xpress Smartlife 800P31C' - regex: '800P32C(?:[);/ ]|$)' model: 'Xpress Smartlife 800P32C' - regex: '101P51C(?:[);/ ]|$)' model: 'Xpress Smartlife 101P51C' + - regex: 'M7([76])QF6(?:[);/ ]|$)' + model: 'Xpress Smartlife M7$1QF6' + +# Mione +Mione: + regex: 'Mione[_ ]' + device: 'smartphone' + models: + - regex: 'Hero (\d+)' + model: 'Hero $1' + - regex: 'Mione_Pro(?:[);/ ]|$)' + model: 'Pro' # mio Mio: - regex: 'MIO(?:/)?([a-z0-9]+)|MOBIX M6(?:[);/ ]|$)' + regex: 'MIO(?:/)?([a-z0-9]+)|(?:MOBIX M6|Mio TouchPad 7 Quad Core)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'MOBIX M6(?:[);/ ]|$)' model: 'Mobix M6' - regex: 'MIO(?:/)?([a-z0-9]+)' model: '$1' + - regex: 'Mio TouchPad 7 Quad Core' + device: 'tablet' + model: 'TouchPad 7 Quad Core' # Miray Miray: @@ -8990,37 +12736,130 @@ Mobiola: - regex: 'Wave5' model: 'Wave 5' -# Mobicel +# Matrix +Matrix: + regex: '(?:7116-A5|818 3G|MATRIX GRAVITY|Matrix7116)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'MATRIX GRAVITY' + device: 'smartphone' + model: 'Gravity' + - regex: '(7116-A5|818 3G)(?:[);/ ]|$)' + model: '$1' + - regex: 'Matrix7116(?:[);/ ]|$)' + model: '7116 A5' + +# Mobicel or Mobicell Mobicel: - regex: 'Mobicel_(R1)|Matrix' + regex: 'Mobicel_(R1)|ASTRO(?: Build|[;)]|$)|(?:Android 8.+ BEAM|FAME(?:_DS)?|CLIK|R7_1|HYPE|DANDY(?:_ZAM)?|(?<!SMADL )Matrix|VENUS_G|TRENDY PLUS|FENDY_DS|TANGO_LITE|BLINK|BERRY|BERRY[_ ]?(?:[12]|PLUS)|R1PLUS_1|ZOOM-H|REBEL|LEGEND MAX|HERO_DS|Switch[ _]GO|SWITCH1|PULSE_1|TRENDY 2|TRENDY_LITE|FEVER_PLUS_[HJ]|RIO_(?:SS|ZAM)|Clik plus|(PURE|Fendy) PLUS|Neo[ _]LTE|Titan_1|ZOOM_1|R4 LTE|NEO_1)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Matrix' model: 'Matrix' + - regex: 'LEGEND MAX' + model: 'Legend Max' + - regex: 'BLINK' + model: 'Blink' + - regex: 'BERRY1' + model: 'Berry 1' + - regex: 'BERRY 2' + model: 'Berry 2' + - regex: 'TRENDY 2' + model: 'Trendy 2' + - regex: 'BERRY[_ ]PLUS' + model: 'Berry Plus' + - regex: 'BERRY' + model: 'Berry' + - regex: 'TRENDY PLUS' + model: 'Trendy Plus' + - regex: 'TRENDY_LITE' + model: 'Trendy Lite' + - regex: 'R4 LTE' + model: 'R4 LTE' + - regex: 'HYPE' + model: 'Hype' + - regex: 'DANDY_ZAM' + model: 'Dandy Zam' + - regex: 'DANDY' + model: 'Dandy' + - regex: 'ASTRO' + model: 'Astro' + - regex: 'VENUS_G' + model: 'Venus Go' + - regex: 'TANGO_LITE' + model: 'Tango Lite' + - regex: 'FENDY_DS' + model: 'Fendy DS' + - regex: 'REBEL' + model: 'Rebel' + - regex: 'R7_1' + model: 'R7' + - regex: 'Titan_1' + model: 'Titan 1' + - regex: 'ZOOM_1' + model: 'Zoom 1' + - regex: 'HERO_DS' + model: 'Hero DS' + - regex: 'FAME_DS' + model: 'Fame DS' + - regex: 'FAME' + model: 'Fame' + - regex: 'BEAM' + model: 'Beam' + - regex: 'Neo[ _]LTE' + model: 'Neo LTE' + - regex: 'NEO_1' + model: 'Neo' + - regex: 'RIO_(SS|ZAM)' + model: 'Rio $1' + - regex: 'Switch[ _]GO' + model: 'Switch Go' + - regex: 'Switch1' + model: 'Switch' + - regex: 'R1PLUS_1' + model: 'R1 Plus' + - regex: 'Clik plus' + model: 'Clik Plus' + - regex: 'CLIK' + model: 'Clik' + - regex: 'PULSE_1' + model: 'Pulse 1' + - regex: 'PURE PLUS' + model: 'Pure Plus' + - regex: 'Fendy plus' + model: 'Fendy Plus' - regex: 'Mobicel_(R1)' model: '$1' + - regex: 'ZOOM-H' + device: 'tablet' + model: 'Zoom H' + - regex: 'FEVER_PLUS_([HJ])' + device: 'tablet' + model: 'Fever Plus $1' # Mobiistar Mobiistar: - regex: 'Mobiistar|Zumbo_|PRIME X MAX|X1 Notch|E1 Selfie' + regex: 'Mobiistar|Zumbo[ _]S|(?:PRIME X MAX|X1 (?:Notch|Dual)|E1 Selfie|XQ[_ ]Dual)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'X1 Notch(?:[);/ ]|$)' - model: 'X1 Notch' + - regex: 'X1 (Notch|Dual)(?:[);/ ]|$)' + model: 'X1 $1' - regex: 'E1 Selfie(?:[);/ ]|$)' model: 'E1 Selfie' - - regex: 'mobiistar_LAI_Zumbo Build' + - regex: 'XQ[_ ]Dual(?:[);/ ]|$)' + model: 'XQ Dual' + - regex: 'mobiistar_LAI_Zumbo(?:[);/ ]|$)' model: 'Zumbo' - - regex: 'Zumbo_S_2017 Build' - model: 'Lai Zumbo S (2017)' - - regex: 'Zumbo_S_2017_Lite Build' + - regex: 'Zumbo[_ ]S[_ ]2017[_ ]Lite(?:[);/ ]|$)' model: 'Lai Zumbo S Lite (2017)' - - regex: 'mobiistar ZUMBO S2( Dual)? Build' + - regex: 'Zumbo[_ ]S[_ ]2017(?:[);/ ]|$)' + model: 'Lai Zumbo S (2017)' + - regex: 'mobiistar ZUMBO S2( Dual)' model: 'Zumbo S2' - - regex: 'Mobiistar_LAI_Zumbo_J Build' - model: 'Lai Zumbo J' - - regex: 'Mobiistar_LAI_Zumbo_J_2017 Build' + - regex: 'Mobiistar_LAI_Zumbo_J_2017(?:[);/ ]|$)' model: 'Lai Zumbo J (2017)' + - regex: 'Mobiistar_LAI_Zumbo_J(?:[);/ ]|$)' + model: 'Lai Zumbo J' - regex: 'Mobiistar_Zumbo_J2' model: 'Lai Zumbo J2' - regex: 'Mobiistar[_ ]Zumbo[_ ]S2' @@ -9043,9 +12882,9 @@ Mobiistar: model: 'Touch Lai 512' - regex: 'mobiistar LAI 504([KC])' model: 'Lai 504$1' - - regex: 'mobiistar LAI Y Build' + - regex: 'mobiistar LAI Y' model: 'Lai Y' - - regex: 'mobiistar PRIME X 2017 Build' + - regex: 'mobiistar PRIME X 2017' model: 'Prime X' - regex: 'mobiistar[ _]PRIME[ _](X1|558|X[ _]Plus|X[ _]Grand) Build' model: 'Prime $1' @@ -9057,19 +12896,17 @@ Mobiistar: model: 'Kat 452' - regex: 'mobiistar_LAI_YOLLO Build' model: 'Lai Yollo' - - regex: 'Mobiistar[ _]([^;/]+) Build' + - regex: 'Mobiistar[ _]([^;/)]+)(?: Build|[;)])' model: '$1' -# MSI +# MSI (msi.com) MSI: - regex: 'Primo ?(?:91|76)|Enjoy 7 Plus' + regex: 'Primo ?(?:9[13]|81|76)|Enjoy 7 Plus' device: 'tablet' models: # explicit tablet models - - regex: 'Primo ?76' - model: 'Primo 76' - - regex: 'Primo ?91' - model: 'Primo 91' + - regex: 'Primo ?(9[13]|76|81)' + model: 'Primo $1' - regex: 'Enjoy 7 Plus' model: 'Enjoy 7 Plus' @@ -9089,9 +12926,17 @@ Mobistel: device: 'smartphone' model: '$1' +# MobiIoT (https://mobi-iot.com/) +MobiIoT: + regex: 'MobiPrint 4\+(?:[);/ ]|$)' + device: 'peripheral' + models: + - regex: 'MobiPrint 4\+(?:[);/ ]|$)' + model: 'MobiPrint 4 Plus' + # Mecool Mecool: - regex: '(?:KM9PRO|BB2 PRO|KII PRO|KM9_TV_BOX|M8SPROW|M8S (?:PLUS|PRO) (?:DVB|[LW]|PLUS)|M8S (?:MAX|PRO))(?:[);/ ]|$)' + regex: 'Mecool[ _-]|(?:KM9PRO|BB2 PRO|K[I]{1,3} PRO|KI PLUS|KM9_TV_BOX|M8SPROW|M8S (?:PLUS|PRO) (?:DVB|[LW]|PLUS)|M8S (?:MAX|PRO))(?:[);/ ]|$)' device: 'tv' models: - regex: 'KM9PRO(?:[);/ ]|$)' @@ -9100,8 +12945,10 @@ Mecool: model: 'KM9 TV Box' - regex: 'BB2 PRO(?:[);/ ]|$)' model: 'BB2 Pro' - - regex: 'KII PRO(?:[);/ ]|$)' - model: 'KII Pro' + - regex: '(K[I]{1,3}) PRO(?:[);/ ]|$)' + model: '$1 Pro' + - regex: 'KI PLUS(?:[);/ ]|$)' + model: 'KI Plus' - regex: 'M8SPROW(?:[);/ ]|$)' model: 'M8S Pro W' - regex: 'M8S PLUS DVB(?:[);/ ]|$)' @@ -9116,6 +12963,8 @@ Mecool: model: 'M8S Pro' - regex: 'M8S MAX(?:[);/ ]|$)' model: 'M8S Max' + - regex: 'Mecool[ _-]([^/);]+)(?: Build|[;)])' + model: '$1' # Modecom Modecom: @@ -9145,9 +12994,23 @@ Mofut: - regex: 'Mofut[ _\-]?((?!Build)[^);/ ]+)' model: '$1' +# BrightSign (brightsign.biz) +BrightSign: + regex: 'BrightSign' + device: 'tv' + models: + - regex: '(HD1023|XD233|XD230|XD1030|XD1132|XT114[34]|4K1142|LS424)' + model: '$1' + +# Verssed +Verssed: + regex: 'MotionE11(?:[);/ ]|$)' + device: 'tablet' + model: 'Motion E1.1' + # motorola Motorola: - regex: 'MOT(?!TO)|(?<!AN)DROID ?(?:Build|[a-z0-9]+)|portalmmm/2.0 (?:E378i|L6|L7|v3)|XOOM [^;/]*Build|XT1941-2|XT1924-9|XT1925-10|XT1965-6|XT1970-5|XT1799-2|XT1021|XT1710-08|XT180[3-5]|XT194[23]-1|XT1929-15|(?:XT|MZ|MB|ME)[0-9]{3,4}[a-z]?(?:\(Defy\)|-0[1-5])?(?:[;]? Build|\))' + regex: 'MOT(?!TO)|(?<!AN)DROID ?(?:Build|[a-z0-9]+)|portalmmm/2.0 (?:E378i|L6|L7|v3)|XOOM [^;/]*Build|XT1941-2|XT1924-9|XT1925-10|XT1965-6|XT1970-5|XT1799-2|XT1021|XT2071-4|XT2125-4|XT2143-1|XT2153-1|XT2201-2|XT2137-2|XT1710-08|XT180[3-5]|XT194[23]-1|XT1929-15|(?:XT|MZ|MB|ME)[0-9]{3,4}[a-z]?(?:\(Defy\)|-0[1-5])?(?:[;]? Build|\))' device: 'smartphone' models: # Explicit feature phone models @@ -9162,6 +13025,12 @@ Motorola: model: 'Motosmart ME' - regex: '(?:MOT-|Motorola-)?XT31[16]' model: 'Fire' + - regex: '(?:MOT-|Motorola-)?XT2125-4' + model: 'Edge S' + - regex: '(?:MOT-|Motorola-)?XT2143-1' + model: 'Edge 20' + - regex: '(?:MOT-|Motorola-)?XT2153-1' + model: 'Edge S Pro' - regex: '(?:MOT-|Motorola-)?XT32[01]' model: 'Defy Mini' - regex: '(?:MOT-|Motorola-)?XT3(?:89|90)' @@ -9220,55 +13089,91 @@ Motorola: model: 'Droid RAZR D3' - regex: '(?:MOT-|Motorola-)?XT925' model: 'Droid RAZR HD' - - regex: '(?:MOT-|Motorola-)?XT102[12]' + - regex: '(?:MOT-|Motorola-)?(?:XT102[12]|XT830C)' model: 'Moto E' + - regex: 'Moto E \(XT2052DL\)' + model: 'Moto E (XT2052DL)' - regex: '(?:MOT-|Motorola-)?XT1706' model: 'Moto E3 Power' + - regex: 'MotoE2\(4G-LTE\)' + model: 'Moto E2 (4G-LTE)' - regex: '(?:MOT-|Motorola-)?XT1924-9' model: 'Moto E5 Plus' + - regex: 'moto e\(?([0-9])\)? plus' + model: 'Moto E$1 Plus' + - regex: 'Moto E([0-9]) Play' + model: 'Moto E$1 Play' + - regex: 'moto e6 \(XT2005DL\)' + model: 'Moto E6 (XT2005DL)' + - regex: 'moto e5 cruise(?:[);/ ]|$)' + model: 'Moto E5 Cruise' + - regex: 'moto e5 supra(?:[);/ ]|$)' + model: 'Moto E5 Supra' + - regex: 'Moto E5 go(?:[);/ ]|$)' + model: 'Moto E5 Go' + - regex: 'Moto E\(?(\di?)\)? Power(?:[);/ ]|$)' + model: 'Moto E$1 Power' + - regex: 'Moto E\(?([567]i?)\)?(?:[);/ ]|$)' + model: 'Moto E$1' + - regex: 'Moto E\(?([567])s\)?(?:[);/ ]|$)' + model: 'Moto E$1s' + - regex: 'Moto E(?: Build|[;)])' + model: 'Moto E' - regex: '(?:MOT-|Motorola-)?XT1030' model: 'Droid Mini' + - regex: '(?:MOT-|Motorola-)?XT1565' + model: 'Droid Maxx 2' - regex: '(?:MOT-|Motorola-)?XT1096' model: 'Moto X2' - regex: '(?:MOT-|Motorola-)?XT1254' model: 'Droid Turbo' - - regex: 'moto g power' - model: 'Moto G Power' - - regex: 'moto g\(([0-9])\) power' - model: 'Moto G$1 Power' - - regex: 'moto g\(([0-9])\) plus' - model: 'Moto G$1 Plus' - - regex: '(?:MOT-|Motorola-)?XT10(?:28|3[1234]|68|69)' + - regex: '(?:MOT-|Motorola-)?XT10(?:28|3[12349]|68|69)' model: 'Moto G' - - regex: '(?:MOT-|Motorola-)?XT1799-2' - model: 'Moto G5s' - - regex: '(?:MOT-|Motorola-)?XT180[3-5]' + - regex: '(?:MOT-|Motorola-)?g\(?(\d+)\)? 5G' + model: 'Moto G$1 5G' + - regex: '(?:MOT-|Motorola-)?XT1609' + model: 'Moto G4 Play' + - regex: '(?:MOT-|Motorola-)?XT180[3-5]|Moto G ?5S Plus|Moto G \(5S\) Plus' model: 'Moto G5s Plus' + - regex: '(?:MOT-|Motorola-)?XT1799-2|Moto G \(5S\)' + model: 'Moto G5s' - regex: '(?:MOT-|Motorola-)?XT168[57]' model: 'Moto G5 Plus' - - regex: '(?:MOT-|Motorola-)?XT1670' #XT1671 XT1677 + - regex: '(?:MOT-|Motorola-)?XT167[06]' #XT1671 XT1677 model: 'Moto G5' - regex: '(?:MOT-|Motorola-)?XT1925-10' model: 'Moto G6' - regex: '(?:MOT-|Motorola-)?XT1965-6' model: 'Moto G7 Plus' + - regex: 'XT2137-2' + model: 'Moto G50' - regex: '(?:MOT-|Motorola-)?XT10(?:49|5[23568]|60|9[23457])' model: 'Moto X' - - regex: '(?:MOT-|Motorola-)?XT1562' + - regex: '(?:MOT-|Motorola-)?XT156[234]|Moto X Play(?:[);/ ]|$)' model: 'Moto X Play' - regex: '(?:MOT-|Motorola-)?XT1572' model: 'Moto X Style' + - regex: '(?:MOT-|Motorola-)?XT1575' + model: 'Moto X Pure Edition' + - regex: '(?:MOT-|Motorola-)?XT158[01]' + model: 'Moto X Force' - regex: '(?:MOT-|Motorola-)?XT1080' model: 'Droid Ultra' - - regex: '(?:MOT-|Motorola-)?XT1650-05' + - regex: '(?:MOT-|Motorola-)?XT1585' + model: 'Droid Turbo 2' + - regex: '(?:MOT-|Motorola-)?XT1650(?:-05)?' model: 'Moto Z' + - regex: 'moto z4(?:[);/ ]|$)' + model: 'Moto Z4' + - regex: 'Moto Z3 Play(?:[);/ ]|$)' + model: 'Moto Z3 Play' - regex: '(?:MOT-|Motorola-)?XT1635(?:-0[1-3])?' model: 'Moto Z Play' - regex: '(?:MOT-|Motorola-)?XT1710-(?:-0[28])?' model: 'Moto Z2 Play' - - regex: '(?:MOT-|Motorola-)?XT1789-05' + - regex: '(?:MOT-|Motorola-)?XT1789-05|Moto Z2 Force(?:[);/ ]|$)' model: 'Moto Z2 Force' - - regex: '(?:MOT-|Motorola-)?XT1929-15' + - regex: '(?:MOT-|Motorola-)?XT1929-15|moto z3(?:[);/ ]|$)' model: 'Moto Z3' - regex: '(?:MOT-|Motorola-)?XT1663' model: 'Moto M' @@ -9278,27 +13183,144 @@ Motorola: model: 'P30 Play' - regex: '(?:MOT-|Motorola-)?XT1942-1' model: 'P30 Note' - - regex: '(?:MOT-|Motorola-)?XT1970-5' + - regex: '(?:MOT-|Motorola-)?edge plus' + model: 'Edge Plus' + - regex: 'XT2201-2' + model: 'Edge X30' + - regex: '(?:MOT-|Motorola-)?edge 20 fusion' + model: 'Edge 20 Fusion' + - regex: '(?:MOT-|Motorola-)?edge 20 lite' + model: 'Edge 20 Lite' + - regex: '(?:MOT-|Motorola-)?edge 20 pro' + model: 'Edge 20 Pro' + - regex: '(?:MOT-|Motorola-)?edge 5G UW \(2021\)' + model: 'Edge 5G UW (2021)' + - regex: '(?:MOT-|Motorola-)?edge (\d+)' + model: 'Edge $1' + - regex: '(?:MOT-|Motorola-)?edge \(2021\)' + model: 'Edge (2021)' + - regex: '(?:MOT-|Motorola-)?edge' + model: 'Edge' + - regex: '(?:MOT-|Motorola-)?one vision plus' + model: 'One Vision Plus' + - regex: '(?:MOT-|Motorola-)?(?:XT1970-5|one vision)' model: 'One Vision' + - regex: '(?:MOT-|Motorola-)?one power' + model: 'One Power' + - regex: '(?:MOT-|Motorola-)?one hyper' + model: 'One Hyper' - regex: '(?:MOT-|Motorola-)?one zoom' model: 'One Zoom' + - regex: '(?:MOT-|Motorola-)?one fusion\+' + model: 'One Fusion Plus' + - regex: '(?:MOT-|Motorola-)?one fusion' + model: 'One Fusion' - regex: 'motorola one action' model: 'One Action' + - regex: 'motorola one macro' + model: 'One Macro' + - regex: 'motorola one 5G UW ace' + model: 'One 5G UW Ace' + - regex: 'motorola one 5G UW' + model: 'One 5G UW' + - regex: 'motorola one 5G ace' + model: 'One 5G Ace' + - regex: 'motorola one vision' + model: 'One Vision' + - regex: 'moto g stylus \(XT2115DL\)' + model: 'Moto G Stylus (XT2115DL)' + - regex: 'moto g stylus \(2021\)' + model: 'Moto G Stylus (2021)' + - regex: 'moto g stylus 5G' + model: 'Moto G Stylus 5G' + - regex: 'moto g stylus' + model: 'Moto G Stylus' + - regex: 'moto g play \(XT2093DL\)' + model: 'Moto G Play (XT2093DL)' + - regex: 'moto g play \(2021\)' + model: 'Moto G Play (2021)' + - regex: 'moto g power \(XT2041DL\)' + model: 'Moto G Power' + - regex: 'moto g power \(2021\)' + model: 'Moto G Power (2021)' + - regex: 'moto g power \(2022\)' + model: 'Moto G Power (2022)' + - regex: 'moto g power' + model: 'Moto G Power' + - regex: 'moto g pro' + model: 'Moto G Pro' + - regex: 'moto g pure' + model: 'Moto G Pure' + - regex: 'moto g fast' + model: 'Moto G Fast' + - regex: 'moto g 5G plus' + model: 'Moto G 5G Plus' + - regex: 'moto g 5G' + model: 'Moto G 5G' + - regex: 'moto g\(?40\)? fusion' + model: 'Moto G40 Fusion' + - regex: 'moto g(31|41)(?:[);/ ]|$)' + model: 'Moto G$1' + - regex: 'moto g\(?60\)?s' + model: 'Moto G60s' + - regex: 'moto g\(([0-9]+)\) \(XT1925DL\)' + model: 'Moto G$1 (XT1925DL)' + - regex: 'moto g\(([0-9]+)\) forge' + model: 'Moto G$1 Forge' + - regex: 'moto g\(([0-9]+)\) optimo \(XT1952DL\)' + model: 'Moto G$1 Optimo (XT1952DL)' + - regex: 'moto g\(([0-9]+)\) optimo maxx\(XT1955DL\)' + model: 'Moto G$1 Optimo Maxx (XT1955DL)' + - regex: 'moto g\(([0-9])\) power lite' + model: 'Moto G$1 Power Lite' + - regex: 'moto g\(([0-9]|10)\) power' + model: 'Moto G$1 Power' + - regex: 'moto g\(([0-9])\) supra' + model: 'Moto G$1 Supra' + - regex: 'moto g\(([0-9])\) plus' + model: 'Moto G$1 Plus' + - regex: 'moto g\(([0-9]+)\) play' + model: 'Moto G$1 Play' + - regex: 'moto g\(([0-9]+)\)' + model: 'Moto G$1' + - regex: 'moto e\(?([0-9]+)\)?(?: Build|[;)])' + model: 'Moto E$1' + - regex: 'moto x\(?(4+)\)?(?: Build|[;)])' + model: 'Moto X$1' + - regex: 'moto(?:rola)? one 5G' + model: 'One 5G' + - regex: 'Moto MAXX' + model: 'Moto Maxx' - regex: 'Moto ([CGEXZ]) ?\(([a-z0-9]+)\)( Plus| Play)?' model: 'Moto $1$2$3' - regex: 'Moto ?([CGEXZ])([0-9]+)( Plus| Play)?' model: 'Moto $1$2$3' - - regex: 'Moto ?([CGEXZ])( Plus| Play)?' + - regex: '(?:Motorola-)?Moto[ _]?([CGEXZ])([ _](?:Plus|Play))?' model: 'Moto $1$2' + - regex: 'MotoroiX' + model: 'MotoroiX' - - regex: 'Motorola[ _\-]([a-z0-9]+)' - model: '$1' - - regex: 'MOTORAZR[ _\-]([a-z0-9]+)' + - regex: 'Moto 360' + device: 'wearable' + model: 'Moto 360' + - regex: 'Moto(?:rola)?[- _]F100' + device: 'wearable' + model: 'Moto ACTV' + + - regex: 'XT2071-4' + model: 'RAZR 5G' + - regex: 'razr \(2020\)' + model: 'RAZR (2020)' + - regex: 'MOTORAZR[ _-]([a-z0-9]+)' model: 'RAZR $1' - regex: 'MOTORIZR[ _\-]([a-z0-9]+)' model: 'RIZR $1' - - regex: 'MOT(?!OROLA)[O]?[_\-]?([a-z0-9.]+)' + - regex: 'Motorola[ _-]([^/);]+)(?: Build|[);])' + model: '$1' + - regex: 'Moto[ _-]([^/);]+)(?: Build|[);])' + model: '$1' + - regex: 'MOT(?!OROLA)[O]?[_-]?([a-z0-9.]+)' model: '$1' - regex: '(?<!AN)DROID ?([a-z0-9 ]*) Build' model: 'DROID $1' @@ -9317,11 +13339,13 @@ Motorola: # Movic Movic: - regex: 'MOVIC' + regex: 'MOVIC|F4502' device: 'smartphone' models: - regex: 'MOVIC[ -]W([2345])' model: 'W$1' + - regex: 'F4502' + model: 'F4502' # MTN MTN: @@ -9346,30 +13370,56 @@ MyTab: - regex: 'MyTAB-U55GT(?:[);/ ]|$)' model: 'U55GT' -# myphone +# myphone (myphone.com.ph) MyPhone: - regex: '(?:MyPhone|MyPad|MyTab)[ _][^;/)]+( Build|\))|Cube_LTE|myTab10II|HAMMER[ _](Blade2_PRO|ENERGY|Titan 2|AXE[_ ](?:M[_ ]LTE|Pro)|Iron 2|Active[2]?(_LTE)?)|C-Smart_pix|myPhone_Fun_8|myA17' + regex: '(?:MyPhone|MyPad|MyTab)[ _][^;/)]+( Build|\))|Cube_LTE|myTab10II|LUNA_II|HAMMER[ _](FORCE|Blade_3|Blade2_PRO|IRON_[23]|Explorer|ENERGY|Titan 2|AXE[_ ](?:M[_ ]LTE|Pro)|Iron 2|Active[2]?(_LTE)?)|IRON_2|C-Smart_pix|myPhone_Fun_8|FUN_18x9|MyPhoneMY27|Prime_4_Lite|myA17|myX12|Pocket_2|Prime_18x9|Prime3Lite|myT6 DTV|myXI1 (?:Plus|Pro)|myXI3|Q_Smart_BE|Brown 1|Q-Smart_III_Plus|SmartView_(?:[78]|9_6)_(?:LTE|[34]G)' device: 'smartphone' models: + # explicit table models - regex: 'MyPad[ _]([^;/]+) Build' model: 'MyPad $1' device: 'tablet' - regex: 'MyTab[ _]([^;/]+) Build' model: 'MyTab $1' device: 'tablet' + - regex: 'myTab_10III' + model: 'MyTab 10 III' + device: 'tablet' - regex: 'myTab10II' model: 'MyTab 10 II' device: 'tablet' + - regex: 'myT6 DTV' + model: 'myT6 DTV' + device: 'tablet' + - regex: 'SmartView_7_3G' + model: 'SmartView 7" 3G' + device: 'tablet' + - regex: 'SmartView_8_LTE' + model: 'SmartView 8" LTE' + device: 'tablet' + - regex: 'SmartView_9_6_3G' + model: 'SmartView 9.6" 3G' + device: 'tablet' + + # explicit smartphones models - regex: 'Cube_LTE' model: 'Cube LTE' + - regex: 'Prime_4_Lite' + model: 'Prime 4 Lite' + - regex: 'HAMMER[ _]ENERGY[ _](\d+)' + model: 'Hammer Energy $1' - regex: 'HAMMER[ _]ENERGY' model: 'Hammer Energy' - regex: 'HAMMER_AXE[_ ]M[_ ]LTE' model: 'Hammer Axe M LTE' - regex: 'Hammer Titan 2' model: 'Hammer Titan 2' - - regex: 'Hammer Iron 2' - model: 'Hammer Iron 2' + - regex: 'Hammer[_ ]FORCE' + model: 'Hammer Force' + - regex: '(?:Hammer[ _])?Iron[ _](2|3)' + model: 'Hammer Iron $1' + - regex: 'Hammer[ _]Explorer' + model: 'Hammer Explorer' - regex: 'Hammer Active(?:[);/ ]|$)' model: 'Hammer Active' - regex: 'Hammer_Active2(?:[);/ ]|$)' @@ -9380,12 +13430,47 @@ MyPhone: model: 'Hammer Axe Pro' - regex: 'Hammer_Blade2_PRO' model: 'Hammer Blade 2 Pro' + - regex: 'Hammer_Blade_3' + model: 'Hammer Blade 3' - regex: 'C-Smart_pix' model: 'C-Smart Pix' + - regex: 'Pocket_2(?:[);/ ]|$)' + model: 'Pocket 2' - regex: 'myA17(?:[);/ ]|$)' model: 'myA17' - - regex: 'myPhone_Fun_8' - model: 'FUN 8' + - regex: '(?:myPhone_)?Fun[_ ]?(\d)[_ ]?Lite' + model: 'FUN $1 Lite' + - regex: '(?:myPhone_)?Fun[_ ]?(\d)[_ ]?LTE' + model: 'FUN $1 LTE' + - regex: '(?:myPhone_)?Fun_?([48]|18x9)' + model: 'FUN $1' + + - regex: 'MyPhoneMY27' + model: 'my27' + - regex: 'myX12(?:[);/ ]|$)' + model: 'myX12' + - regex: 'myXI1 Plus(?:[);/ ]|$)' + model: 'myXI1 Plus' + - regex: 'myXI1 Pro(?:[);/ ]|$)' + model: 'myXI1 Pro' + - regex: 'myXI3(?:[);/ ]|$)' + model: 'myXI3' + - regex: 'Q_Smart_BE(?:[);/ ]|$)' + model: 'Q-Smart BE' + - regex: 'Prime_18x9(_LTE)?(?:[);/ ]|$)' + model: 'Prime 18x9$1' + - regex: 'Prime3Lite(?:[);/ ]|$)' + model: 'Prime 3 Lite' + - regex: 'Brown 1(?:[);/ ]|$)' # ARK Brown 1 + model: 'Brown 1' + - regex: 'myPhone[_ ]Pocket[_ ]Pro' + model: 'Pocket Pro' + - regex: 'Q-Smart_III_Plus' + model: 'Q-Smart III Plus' + - regex: 'LUNA_II' + model: 'Luna II' + + # general detections - regex: 'MyPhone[ _]([^;/)]+)( Build|\))' model: '$1' @@ -9397,6 +13482,12 @@ MyWigo: - regex: 'City3' model: 'City 3' +# Myros (myrosworld.com) +Myros: + regex: '(E70 Ultra)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + # Myria Myria: regex: ' (Myria_[^/;]+|502M|Cozy|Easy tab 9|Grand) Build|Myria_FIVE|Myria_Grand_4G|Myria_Wide_2|Myria_Wide_4G' @@ -9420,24 +13511,30 @@ Myria: # M.T.T. M.T.T.: - regex: 'M.T.T.' + regex: 'M\.T\.T\.' device: 'smartphone' models: - - regex: 'M.T.T. ?Tablet([^;/]+)? Build' + - regex: 'M\.T\.T\. ?Tablet([^;/]+)? Build' device: 'tablet' model: 'Tablet$1' - - regex: 'M.T.T. ?([^;/]+) Build' + - regex: 'M\.T\.T\. ?([^;/]+) Build' model: '$1' # Navon Navon: - regex: '(?:Superme_Max|Supreme[_ ](?:Fine|Chief|Pure|Pro)(?:[_ ](?:Mini|Plus))?|Navon[_ ]Infinity)(?:[);/ ]|$)' + regex: 'Navon[_ ]|(?:Vision_Tab_(?:7|10)|Pure Micro|Superme_Max|Raptor3G8GB|Predator (?:10|3G)|Platinum[_ ]10[_ ]3G(?:_V2)?|Supreme[_ ](?:Fine(?:[_ ]Micro)?|Chief|Pure|Pro)(?:[_ ](?:Mini|Plus))?)(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'M505 LTE(?:[);/ ]|$)' + model: 'Mizu M505 LTE' + - regex: '(F552|D504)(?:[);/ ]|$)' + model: 'Mizu $1' - regex: 'Superme_Max(?:[);/ ]|$)' model: 'Supreme Max' - regex: 'Supreme_Fine_Mini(?:[);/ ]|$)' model: 'Supreme Fine Mini' + - regex: 'Supreme_Fine_Micro(?:[);/ ]|$)' + model: 'Supreme Fine Micro' - regex: 'Supreme[_ ]Fine[_ ]Plus(?:[);/ ]|$)' model: 'Supreme Fine Plus' - regex: 'Supreme_Fine(?:[);/ ]|$)' @@ -9450,18 +13547,41 @@ Navon: model: 'Supreme Pure' - regex: 'Supreme[_ ]Pro(?:[);/ ]|$)' model: 'Supreme Pro' + - regex: 'Pure Micro(?:[);/ ]|$)' + model: 'Pure Micro' - regex: 'Navon[_ ]Infinity(?:[);/ ]|$)' model: 'Infinity' + - regex: 'Navon[_ ](D405)(?:[);/ ]|$)' + model: '$1' + + - regex: '(?:Navon[_ ])?Platinum[ _]10[ _]3G(_V2)?(?:[);/ ]|$)' + device: 'tablet' + model: 'Platinum 10.1" 3G$1' + - regex: '(?:Navon[_ ])?Orpheus[ _]3G(?:[);/ ]|$)' + device: 'tablet' + model: 'Orpheus 3G' + - regex: '(?:Navon_)?Predator[_ ](3G|10|7)(?:[);/ ]|$)' + device: 'tablet' + model: 'Predator $1' + - regex: 'Raptor3G8GB(?:[);/ ]|$)' + device: 'tablet' + model: 'Raptor 3G 8GB' + + - regex: 'Vision_Tab_(7|10)(?:[);/ ]|$)' + device: 'tablet' + model: 'Vision Tab $1' -# NOA +# NOA or NOA Mobile (noa-mobile.eu) NOA: - regex: 'NOA[ _]|HummerLE|NextSE' + regex: '(?:NOA-)?NOA[ _]|Hummer(?:_2019_R|LE)|NextSE|Vivo 4G_r|SPRINT4G' device: 'smartphone' models: - regex: 'NOA[_ ]CORE[_ ]FORTE' model: 'Core Forte' - regex: 'HummerLE' model: 'Hummer LE' + - regex: 'Hummer_2019_R' + model: 'Hummer R (2019)' - regex: 'NOA[_ ]Hummer[_ ]Lite' model: 'Hummer Lite' - regex: 'NOA[_ ]MOVEse' @@ -9476,7 +13596,7 @@ NOA: model: 'Vision H3' - regex: 'NOA[_ ]LOOP' model: 'Loop' - - regex: 'NOA[_ ]H4se' + - regex: '(?:NOA-)?NOA[_ ]H4se' model: 'H4SE' - regex: 'NOA[_ ]Mg12' model: 'MG12' @@ -9484,43 +13604,56 @@ NOA: model: 'H44SE' - regex: 'NOA[_ ]H10LE' model: 'H10LE' + - regex: 'SPRINT4G' + model: 'Sprint 4G' + - regex: '(?:NOA[_ ])?Vivo 4G_r' + model: 'Vivo 4G' - regex: 'NOA[_ ]([^;)/ ]+)' model: '$1' +# Nobby (nobby.ru) Nobby: - regex: 'Nobby[ ](S500|X800|S300(?: Pro)?)(?:[);/ ]|$)' + regex: 'Nobby[ ](S500|X800(?: Pro)?|S300(?: Pro)?)(?:[);/ ]|$)' device: 'smartphone' model: '$1' -# nec +# nec or nec lavie (www.nec-lavie.jp) NEC: - regex: 'NEC[ _\-]|KGT/2\.0|PC-TE508HAW|portalmmm/1\.0 (?:DB|N)|(?:portalmmm|o2imode)/2.0[ ,]N|N-06C(?:[);/ ]|$)' + regex: 'NEC[ _\-]|KGT/2\.0|portalmmm/1\.0 (?:DB|N)|(?:portalmmm|o2imode)/2.0[ ,]N|(?:PC-T[SE]\d{3}[\w]{2,3}|N-06C|N-02E|LAVIE Tab E (?:10|8)FHD[12]|7SD1|8HD1)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'N-06C(?:[);/ ]|$)' model: 'Medias Amadana' + - regex: 'N-02E(?:[);/ ]|$)' + model: 'Medias U' - regex: '(?:NEC[ _\-]|KGT/2\.0 )([a-z0-9]+)' model: '$1' - regex: 'portalmmm/1\.0 ((?:DB|N)[a-z0-9]+)' model: '$1' - regex: '(?:portalmmm|o2imode)/2\.0[ ,](N[a-z0-9]+)' model: '$1' - - regex: 'PC-TE508HAW(?:[);/ ]|$)' + - regex: 'LAVIE Tab E ((?:10|8)FHD[12]|7SD1|8HD1)(?:[);/ ]|$)' + device: 'tablet' + model: 'LAVIE Tab E $1' + - regex: 'PC-TE(\d+)' device: 'tablet' - model: 'LAVIE Tab E TE508' + model: 'LAVIE Tab E TE$1' + - regex: 'PC-TS(\d+)' + device: 'tablet' + model: 'LAVIE Tab S TS$1' -# Neffos (TP-Link) +# Neffos (sub brand TP-Link) (neffos.com) Neffos: regex: 'Neffos|(TP601A)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'TP601A(?:[);/ ]|$)' + - regex: '(?:C57|TP601A)(?:[);/ ]|$)' model: 'C5L' - regex: 'Neffos[_ ]Y50' model: 'Y50' - regex: 'Neffos X20 Pro' model: 'X20 Pro' - - regex: 'Neffos[_ ]((?:Y|N|C|X)[0-9][A-Z]?(?: Max| Lite)?)' + - regex: 'Neffos[_ ]((?:[YNCXA])[0-9][A-Z]?(?: Max| Lite| Plus)?)' model: '$1' # Nextbit @@ -9542,8 +13675,8 @@ Netgear: regex: 'GTV100' device: 'tv' models: - - regex: 'GTV100' - model: 'NeoTV Prime' + - regex: 'GTV100' + model: 'NeoTV Prime' # NeuImage NeuImage: @@ -9555,13 +13688,21 @@ NeuImage: # NextBook NextBook: - regex: 'Next[0-9]|NX785QC8G|NXM900MC|NX008HD8G|NX010HI8G|NXM908HC|NXM726|NXA8QC116' + regex: 'Next[0-9]|NX(?:785QC8G|M900MC|008HD8G|010HI8G|M908HC|M726|16A8116K|A8QC116|16A10132S|16A11264)' device: 'tablet' models: - regex: 'NX008HD8G' model: 'Premium 8 HD' - regex: 'NXA8QC116' model: 'Ares 8' + - regex: 'NX16A8116K' + model: 'Ares A8' + - regex: 'NX16A10132S' + model: 'Ares A10' + - regex: 'NX16A11264' + model: 'Ares A11' + - regex: 'NEXT1015BAP' + model: 'Ares 10' - regex: 'NXM908HC' model: 'Premium 9' - regex: 'NX010HI8G' @@ -9576,11 +13717,13 @@ NextBook: - regex: 'Next([0-9]+[^;/]+) Build' model: 'Next $1' -# ngm +# ngm (www.ngm.eu) NGM: - regex: 'NGM[_ ][a-z0-9]+|(Forward|Dynamic)[ _]?[^/;]+(?:Build|/)' + regex: 'NGM[_ ][a-z0-9]+|(Forward|Dynamic)[ _]?[^/;]+(?:Build|/)|Smart5Plus32GB' device: 'smartphone' models: + - regex: 'Smart5Plus32GB' + model: 'Smart 5 Plus' - regex: '(Forward|Dynamic)[ _]?([^/;]+) Build' model: '$1 $2' - regex: '(Forward|Dynamic)[ _]?([^/;]+)/' @@ -9620,39 +13763,157 @@ Noblex: - regex: '(?:Noblex|NBX)[ _-]([^;/)]+)(?:[;/)]|$)' model: '$1' +# NOGA (https://noganet.ar/) +NOGA: + regex: 'NOGAPAD7G(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'NOGAPAD7G(?:[);/ ]|$)' + device: 'tablet' + model: 'NOGAPAD 7G' + # Nomu Nomu: - regex: 'Nomu[ _-](?:T18|S30mini)(?:[);/ ]|$)' + regex: '(?:Nomu[ _-](?:T18|S30mini|S10)|(?:V1600S|S10 PRO|S50_Pro))(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Nomu[ _-]T18(?:[);/ ]|$)' model: 'T18' + - regex: 'Nomu[ _-]s10(?:[);/ ]|$)' + model: 'S10' - regex: 'Nomu[ _-]S30mini(?:[);/ ]|$)' model: 'S30 Mini' + - regex: 'S([15]0)[_ ]PRO(?:[);/ ]|$)' + model: 'S$1 Pro' + - regex: '(V1600S)(?:[);/ ]|$)' + model: '$1' + +# Noontec (http://www.noontec.com.au/) +Noontec: + regex: 'Noontec ' + device: 'tv' + model: '' + +# Opsson +Opsson: + regex: 'Opsson|IUSAI' + device: 'smartphone' + models: + - regex: 'IUSAI[ _]([^/;]+) Build' + model: 'Iusai $1' + - regex: 'IUSAI[ _]([^/;\)]+)[/;\)]' + model: 'Iusai $1' + - regex: 'Opsson[ _]([^/;]+) Build' + model: '$1' + - regex: '(?:Opsson-)?Opsson[ -_]([^/;]+)/' + model: '$1' -# Nomi +# Nomi (nomi-electronics.com) Nomi: - regex: 'Nomi[ _-]|(C101010 Ultra2|i501[234]|i5032|i5050|i5510|i5532|C0(700(?:[02358]|2HD)|7850)|C1010[0-3])(?:[);/ ]|$)' + regex: 'Nomi[ _-]|(C101010 Ultra2|i501[234]|i5032|i50[57]0|i5510|i5532|C0(700(?:[02358]|2HD)|7850)|C1010[0-3]|i(?:50[015]|450|40[01]|55[02]))(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'i501[23](?:[);/ ]|$)' model: 'Evo M2' + - regex: 'Nomi[ _]i5010(?:[);/ ]|$)' + model: 'Evo M' + - regex: 'Nomi[ _]i5001(?:[);/ ]|$)' + model: 'Evo M3' + - regex: 'Nomi[ _]i5011(?:[);/ ]|$)' + model: 'Evo M1' + - regex: 'Nomi[ _]i506(?:[);/ ]|$)' + model: 'i506 Shine' + - regex: 'Nomi[ _]i5730(?:[);/ ]|$)' + model: 'i5730 Infinity' + - regex: 'Nomi[ _]i6030(?:[);/ ]|$)' + model: 'Note-X' + - regex: 'I5070(?:[);/ ]|$)' + model: 'Iron-X' + - regex: 'i5071(?:[);/ ]|$)' + model: 'Iron-X1' + - regex: 'Nomi[_ ]I4070(?:[);/ ]|$)' + model: 'Iron-M' - regex: 'i5014(?:[);/ ]|$)' model: 'Evo M4' - regex: 'i5032(?:[);/ ]|$)' model: 'Evo X2' - regex: 'i5050(?:[);/ ]|$)' model: 'Evo Z' - - regex: 'Nomi_i4510(?:[);/ ]|$)' + - regex: '(?:Nomi_)?i4510(?:[);/ ]|$)' model: 'Beat M' + - regex: '(?:Nomi_)?i4500(?:[);/ ]|$)' + model: 'Beat M1' - regex: 'i5532(?:[);/ ]|$)' model: 'Space X2' - regex: 'i5510(?:[);/ ]|$)' model: 'Space M' + - regex: 'Nomi[_ ]i5511(?:[);/ ]|$)' + model: 'Space M1' + - regex: '(?:Nomi_)?i5710(?:[);/ ]|$)' + model: 'Infinity X1' + - regex: '(?:Nomi[ _])?i(50[015]|450|40[01]|55[02])(?:[);/ ]|$)' + model: 'i$1' - regex: 'C101010 Ultra2' model: 'Ultra 2' device: 'tablet' - - regex: '(C0(?:700(?:[02358]|2HD)|7850)|C1010[0-3])(?:[);/ ]|$)' + - regex: '(?:Nomi_)?C101040' + model: 'Ultra 3 Pro' + device: 'tablet' + - regex: '(?:Nomi_)?C101030' + model: 'Ultra 3 LTE' + device: 'tablet' + - regex: '(?:Nomi_)?C101012' + model: 'Ultra 3 3G' + device: 'tablet' + - regex: '(?:Nomi_)?C101014' + model: 'Ultra 4 3G' + device: 'tablet' + - regex: '(?:Nomi_)?C101034' + model: 'Ultra 4 LTE' + device: 'tablet' + - regex: '(?:Nomi_)?C101044' + model: 'Ultra 4 Pro LTE' + device: 'tablet' + - regex: '(?:Nomi_)?C070010' + device: 'tablet' + model: 'Corsa' + - regex: '(?:Nomi_)?C070020' + model: 'Corsa Pro' + device: 'tablet' + - regex: '(?:Nomi_)?C070011' + model: 'Corsa 2' + device: 'tablet' + - regex: '(?:Nomi_)?C070030' + model: 'Corsa 3 LTE' + device: 'tablet' + - regex: '(?:Nomi_)?C070012' + model: 'Corsa 3 3G' + device: 'tablet' + - regex: '(?:Nomi_)?C070014L' + model: 'Corsa 4 Light 3G' + device: 'tablet' + - regex: '(?:Nomi_)?C0700[13]4' + model: 'Corsa 4 LTE' + device: 'tablet' + - regex: '(?:Nomi_)?C070044' + model: 'Corsa 4 Pro LTE' + device: 'tablet' + - regex: '(?:Nomi_)?C080012' + model: 'Libra 3 3G' + device: 'tablet' + - regex: '(?:Nomi_)?C080034' + model: 'Libra 4 LTE' + device: 'tablet' + - regex: '(?:Nomi_)?C080014' + model: 'Libra 4 3G' + device: 'tablet' + - regex: '(?:Nomi_)?C07008' + model: 'Sigma' + device: 'tablet' + - regex: '(?:Nomi_)?C10105' + model: 'Stella Plus' + device: 'tablet' + - regex: '(?:Nomi[ _])?(C0(?:700(?:[0235]|2HD)|7850|9600)|C1010[0-3])(?:[);/ ]|$)' model: '$1' device: 'tablet' - regex: 'Nomi[ _-]([^;/]+) Build' @@ -9662,25 +13923,33 @@ Nomi: # NUU Mobile NUU Mobile: - regex: 'NUU_|(?:(?:N(5702|5001)L|S6001L)|A6L-[CG])(?:[);/ ]|$)' + regex: 'NUU_|(?:(?:N(5702|500[12])L|S6001L|[SN]5501L)|A6L-[CG]|N5502L)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'NUU_A([13])' model: 'A$1' - - regex: 'NUU_M3(?:[);/ ]|$)' - model: 'M3' + - regex: 'NUU_M([32])(?:[);/ ]|$)' + model: 'M$1' - regex: 'NUU_X5(?:[);/ ]|$)' model: 'X5' - regex: 'S6001L' model: 'G2' + - regex: 'S5501L' + model: 'M19' - regex: 'N5702L' model: 'G3' + - regex: 'N5501L' + model: 'A5L' + - regex: 'N5002L' + model: 'A7L' + - regex: 'N5502L' + model: 'A10L' - regex: '(N5001L|A6L-[CG])(?:[);/ ]|$)' model: '$1' # NYX Mobile NYX Mobile: - regex: 'NYX[ _]' + regex: 'NYX[ _]|(?:GLAM|ARGON)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'NYX_A1' @@ -9721,6 +13990,10 @@ NYX Mobile: model: 'Vox' - regex: 'NYX_ZEUZ_HD' model: 'Zeus HD' + - regex: 'GLAM' + model: 'Glam' + - regex: 'ARGON' + model: 'Argon' # Nous Nous: @@ -9734,16 +14007,25 @@ Nous: # Nvidia Nvidia: - regex: '(SHIELD Tablet K1) Build|SHIELD Android TV|Tegra(Note-P1640| Note 7)' + regex: 'NVIDIA|SHIELD|Tegra(Note-P1640| Note 7)' device: 'tablet' models: - regex: 'TegraNote-P1640' model: 'Tegra Note P1640' - - regex: '(SHIELD Tablet K1|Tegra Note 7)(?: Build|\))' + - regex: '(SHIELD Tablet(?: K1)?|Tegra Note 7)(?: Build|[;)])' model: '$1' - - regex: 'SHIELD Android TV' + - regex: 'SHIELD Andr[o0]id TV' model: 'SHIELD Android TV' device: 'tv' + - regex: 'NVIDIA_SHIELD_PRO_2019' + model: 'SHIELD TV Pro' + device: 'tv' + - regex: 'NVIDIA Shield' + model: 'SHIELD TV' + device: 'tv' + - regex: 'SHIELD' + model: 'SHIELD Portable' + device: 'console' # O+ (OPlus) O+: @@ -9771,9 +14053,25 @@ O2: - regex: 'O2-([a-z0-9]+)' model: '$1' -# Odys +# Funai (https://www2.funai.co.jp/) +Funai: + regex: 'FUNAI, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' + +# Fusion5 (www.fusion5store.com) +Fusion5: + regex: 'Fusion5|F104Bv2' + device: 'tablet' + models: + - regex: '(?:Fusion5_)?(F104B)v2_PRO' + model: '$1v2 Pro' + - regex: '(?:Fusion5_)?(F104B)v2' + model: '$1v2' + +# Odys (odys.de) Odys: - regex: 'ODYS[ _-]|IEOS[_ ]([^/;]+)|NOON(?:_PRO)? Build|SPACE10_(?:PLUS|PRO)_3G|THOR_?10|TAO_X10|RAPID_?(?:10|7)_?LTE|MAVEN_?10_|CONNECT[78]|ELEMENT10_PLUS_3G|XELIO[_0-9P]|ADM816HC|ADM8000KP|NEO6_LTE|EOS10|AEON|FALCON_10_PLUS_3G|FUSION|THANOS_10|MAVEN_X10_HD(?:_LTE)?|JUNIOR_8_PRO' + regex: 'ODYS[ _-]|IEOS[_ ]([^/;]+)|NOON(?:_PRO)? Build|SPACE10_(?:PLUS|PRO)_3G|THOR_?10|TAO_X10|RAPID_?(?:10|7)_?LTE|MAVEN_?10_|CONNECT[78]|ELEMENT10_PLUS_3G|XELIO[_0-9P]|ADM816HC|ADM8000KP|NEO6_LTE|EOS10|AEON|FALCON_10_PLUS_3G|FUSION|THANOS_10|MAVEN_X10_HD(?:_LTE)?|JUNIOR_8_PRO|JuniorT8Pro|(?:NOVA|PYRO)_X?7_PLUS_3G|UNO_X8|MAVEN_G10|SLADE_X55|XELIO_PRO_10_LTE|NOTOSplus3G|PACE ?10|PACE_10_LTE|Titan_10_LTE|PEDI_PLUS_W' device: 'tablet' models: - regex: 'XELIO[_ ]A10' @@ -9790,6 +14088,12 @@ Odys: model: 'Xelio 10 Xtreme' - regex: 'XELIO10_PLUS_3G' model: 'Xelio 10 Plus 3G' + - regex: 'XELIO10_HD_PLUS_3G' + model: 'Xelio 10 HD Plus 3G' + - regex: 'XELIO_10_HD' + model: 'Xelio 10 HD' + - regex: 'XELIO_PRO_10_LTE' + model: 'Xelio Pro 10 LTE' - regex: 'ELEMENT10_PLUS_3G' model: 'Element 10 Plus 3G' - regex: 'CONNECT8PLUS' @@ -9820,25 +14124,54 @@ Odys: model: 'Space 10 Pro 3G' - regex: 'THOR_?10 Build' model: 'Thor 10' + - regex: 'JuniorT8Pro' + model: 'Junior T8 Pro' - regex: 'JUNIOR_8_PRO' model: 'Junior 8 Pro' - regex: 'ADM816HC' model: 'Neo X' - regex: 'EOS10' model: 'EOS 10' + - regex: 'PACE_10_LTE_V2' + model: 'Pace 10 LTE V2' + - regex: 'PACE ?10' + model: 'Pace 10' - regex: 'AEON' model: 'Aeon' - regex: 'FALCON_10_PLUS_3G' model: 'Falcon 10 Plus 3G' - regex: 'FUSION' model: 'Fusion 7' - - regex: 'NEO6[_ ]LTE' - model: 'Neo 6 LTE' - device: 'smartphone' + - regex: 'UNO_X8' + model: 'Uno X8' - regex: 'ADM8000KP' model: 'Titan' + - regex: 'Titan_10_LTE' + model: 'Titan 10 LTE' + - regex: 'PYRO_7_PLUS_3G' + model: 'Pyro 7 Plus 3G' + - regex: 'NOVA_X7_PLUS_3G' + model: 'Nova X7 Plus 3G' + - regex: 'ODYS_NOVA_X7' + model: 'Nova X7' - regex: 'THOR_?10_PLUS_3G' model: 'Thor 10 Plus 3G' + - regex: 'NOTOSplus3G' + model: 'Notos Plus 3G' + - regex: 'MAVEN_G10' + model: 'Maven G10' + - regex: 'PEDI_PLUS_W' + model: 'Pedi Plus W' + + # explicit smartphones models + - regex: 'NEO6[_ ]LTE' + model: 'Neo 6 LTE' + device: 'smartphone' + - regex: 'SLADE_X55' + model: 'Slade X55' + device: 'smartphone' + + # general detections - regex: 'IEOS[ _]([^/;]+) Build' model: 'Ieos $1' - regex: '(?:ODYS[ _-])?NOON Build' @@ -9850,7 +14183,7 @@ Odys: # Obi Obi: - regex: 'Obi[ _-]|(SJ1\.5|SJ2\.6|S400|S452\+|S451|S453|S501|S502|S503\+?|S507|S520|S550|S551|falcon)[ _]' + regex: 'Obi[ _-]|(SJ1\.5|SJ2\.6|(?<!verykool )S(400|452\+|45[13]|50[127]|503\+?|520|55[01])|falcon)[ _]' device: 'smartphone' models: - regex: 'SJ2\.6' @@ -9888,13 +14221,24 @@ Obi: - regex: 'Obi[ _-]([^;/)]+)(?:[;/)]|$)' model: '$1' -# onda +# Okapia +Okapia: + regex: 'Signature (?:L|Pro|Touch)' + device: 'smartphone' + models: + - regex: 'Signature (L|Pro|Touch)' + model: 'Signature $1' + +# onda (ondatlc.com) Onda: - regex: 'Onda|(?:(?:V820w|V891[w]?|V919(?: 3G)? Air)[ _-]DualOS|(?:V919 4G Air|V989 Air) Core8|T2101L2B1C| V10 4G|OBOOK (?:20 SE|20 PLUS DUALOS)|OBOOK10 SE|V919 Air CH DualOS)(?:[);/ ]|$)' + regex: 'Onda|(?:(?:V820w|V891[w]?|V919(?: 3G)? Air)[ _-]DualOS|(?:V919 4G Air|V989 Air|V972) Core[48]|T2101L2B1C| V10 4G|OBOOK (?:20 SE|20 PLUS DUALOS)|OBOOK10 SE|V919 Air CH DualOS| T9S)(?:[);/ ]|$)' device: 'smartphone' models: + - regex: '(?: T9S)(?:[);/ ]|$)' + model: 'T9 S' + # explicit tablet models - - regex: 'ONDA MID' + - regex: 'ONDA[ _]MID' model: 'MID' device: 'tablet' - regex: 'V820w[ _-]DualOS' @@ -9918,9 +14262,15 @@ Onda: - regex: 'V919 4G Air Core8' model: 'V919 4G Air Core 8' device: 'tablet' + - regex: 'V972 Core4' + model: 'V919 Core 4' + device: 'tablet' - regex: 'V989 Air Core8' model: 'V989 Air Core 8' device: 'tablet' + - regex: 'ONDA V989' + model: 'V989 Core 8' + device: 'tablet' - regex: 'T2101L2B1C|OBOOK 20 PLUS DUALOS' model: 'oBook 20 Plus Dual OS' device: 'tablet' @@ -9939,27 +14289,57 @@ Onda: - regex: 'Onda ([a-z0-9]+)' model: '$1' -# OnePlus +# OnePlus (www.oneplus.com or oneplus.com.ru) OnePlus: - regex: '(?:du_)?ONEPLUS|(?:A0001|A200[135]|AC200[13]|A300[03]|A3010|A5000|A600[03]|A601[03]|E100[135]|GM191[03517]|GM190[0135]|GM1920|HD191[013]|HD190[01357]|HD1925|IN201[037]|IN202[03])(?: Build|\))' + regex: '(?:du_)?ONEPLUS|(?:A0001|A200[135]|AC200[13]|A300[03]|A3010|A5000|A600[03]|A601[03]|BE201[1235]|BE202[5689]|E100[135]|GM191[03517]|GM190[0135]|GM192[05]|HD191[013]|HD190[01357]|HD1925|IN201[013579]|IN202[0135]|KB200[01357]|LE211[01357]|LE212[035]|Nord N10 5G|LE210[01]|LE212[17]|DE211[78]|DN210[13]|EB210[13]|MT211[01])(?: Build|\))' device: 'smartphone' models: - regex: 'AC200[13](?:[);/ ]|$)' model: 'Nord 5G' - - regex: 'IN202[03](?:[);/ ]|$)' + - regex: 'EB210[13](?:[);/ ]|$)' + model: 'Nord CE 5G' + - regex: 'BE2012(?:[);/ ]|$)' + model: 'Clover' + - regex: 'BE201[135](?:[);/ ]|$)' + model: 'Nord N100' + - regex: 'DE211[78](?:[);/ ]|$)' + model: 'Nord N200 5G' + - regex: 'BE2025(?:[);/ ]|$)' + model: 'Nord N10' + - regex: '(BE202[69]|Nord N10 5G)(?:[);/ ]|$)' + model: 'Nord N10 5G' + - regex: 'BE2028(?:[);/ ]|$)' + model: 'Nord N10 Lite' + - regex: 'DN210[13](?:[);/ ]|$)' + model: 'Nord 2 5G' + - regex: 'IN202[0135](?:[);/ ]|$)' model: '8 Pro' - - regex: 'IN201[037](?:[);/ ]|$)' + - regex: 'KB2000(?:[);/ ]|$)' + model: '8T' + - regex: '(?:IN201[01357]|OnePlus 8)(?:[);/ ]|$)' model: '8' - - regex: 'GM191[03517](?:[);/ ]|$)' + - regex: 'IN2019(?:[);/ ]|$)' + model: '8 5G UW' + - regex: 'LE211[01357](?:[);/ ]|$)' + model: '9' + - regex: 'MT211[01](?:[);/ ]|$)' + model: '9RT 5G' + - regex: 'LE210[01](?:[);/ ]|$)' + model: '9R' + - regex: 'LE212[01357](?:[);/ ]|$)' + model: '9 Pro' + - regex: '(?:GM191[01357]|OnePlus 7 Pro)(?:[);/ ]|$)' model: '7 Pro' - regex: 'GM190[0135](?:[);/ ]|$)' model: '7' - regex: 'HD190[01357](?:[);/ ]|$)' model: '7T' - - regex: 'HD191[013](?:[);/ ]|$)' + - regex: '(?:HD191[013]|OnePlus 7T Pro)(?:[);/ ]|$)' model: '7T Pro' - - regex: '(?:HD1925|GM1920)(?:[);/ ]|$)' + - regex: '(?:HD1925|GM192[05])(?:[);/ ]|$)' model: '7T Pro 5G' + - regex: 'KB200[1357](?:[);/ ]|$)' + model: '8T' - regex: 'A0001(?:[);/ ]|$)' model: 'One' - regex: 'A200[135]|OnePlus2' @@ -9970,7 +14350,7 @@ OnePlus: model: '3T' - regex: 'A300[03]|OnePlus3' model: '3' - - regex: 'A5010|OnePlus5T' + - regex: 'A5010|OnePlus[ ]?5T' model: '5T' - regex: 'A5000|OnePlus5' model: '5' @@ -9978,39 +14358,49 @@ OnePlus: model: '6' - regex: 'A601[03](?:[);/ ]|$)' model: '6T' - - regex: '(?:du_)?ONEPLUS ?([^;/]+) Build' + - regex: '(?:du_)?ONEPLUS[ _]?([^;/)]+)(?: Build|[;)])' model: '$1' # Realme (sub brand Oppo) Realme: - regex: '(?:RMX(?:19(03|4[1235]|19|9[23]|2[157]|[01379]1|73)|20(?:[025-7]1|[037]2|2[57]|63|76|86|[234]0)|21(?:[12]1|42|76|8[059])|2200|18(0[1579]|11|3[13]|2[157]|[45]1|45))|(?:OPPO[ _]?)?CPH1861)(?:[);/ ]|$)' + regex: 'Realme[ _]|(?:RMX(?:19(03|4[1235]|19|9[23]|2[1579]|[01379]1|73)|20(?:[025-7]1|42|[0357]2|03|2[257]|63|7[56]|8[1356]|[2-5]0)|21(?:0[13]|1[27]|[12]1|4[24]|5[156]|6[13]|7[036]|8[059]|9[345])|220[0125]|18(0[13579]|11|3[13]|2[1257]|[45]1|53|45)|32(?:0[13]|42|[346]1)|30(?:[3468]1|4[23]|9[23]|63|85)|31(?:2[12]|15|42|9[1357]|51|6[16]|71)|3125|33[57]0|330[01]|3357|3393|336[036]|326[3589]|3235|3430|3461|3491|33[86]1)|(?:OPPO[ _]?)?CPH1861|RMP210[23])(?:[);/ ]|$)' device: 'smartphone' models: + - regex: '(?:OPPO[ _]?)?RMX3142(?:[);/ ]|$)' + model: 'Q3 Pro Play' - regex: '(?:OPPO[ _]?)?CPH1861(?:[);/ ]|$)' model: '1' - regex: 'RMX180[59]' model: '2' - - regex: 'RMX180[17]' + - regex: 'RMX180[137]' model: '2 Pro' - - regex: 'RMX(1833|182[15])' + - regex: 'RMX(1833|182[125])' model: '3' - regex: 'RMX1827' model: '3i' - - regex: 'RMX1851' + - regex: 'RMX185[13]' model: '3 Pro' - - regex: 'RMX190[13]' + - regex: 'RMX190[13]|Realme X(?:[);/ ]|$)' model: 'X' - regex: 'RMX199[12]' model: 'X2' - regex: 'RMX1993' model: 'X2 Dual' - - regex: 'RMX1931' + - regex: 'RMX1931|Realme X2 Pro(?:[);/ ]|$)' model: 'X2 Pro' + - regex: 'RMX2117' + model: 'Q2 5G' + - regex: 'RMX2173' + model: 'Q2 Pro' + - regex: 'RMX2205' + model: 'Q3 Pro 5G' + - regex: 'RMX3161' + model: 'Q3 5G' - regex: 'RMX2176(?:[);/ ]|$)' model: 'X7 5G' - regex: 'RMX2121(?:[);/ ]|$)' model: 'X7 Pro 5G' - - regex: 'RMX1921' + - regex: 'RMX1921|Realme XT(?:[);/ ]|$)' model: 'XT' - regex: 'RMX19(1[19]|27)' model: '5' @@ -10018,21 +14408,45 @@ Realme: model: '5 Pro' - regex: 'RMX203[02]' model: '5i' - - regex: 'RMX2001' + - regex: 'RMX1929' + model: '5s' + - regex: 'RMX200[13]' model: '6' - - regex: 'RMX2040' - model: '6I' + - regex: 'RMX204[02]' + model: '6i' - regex: 'RMX2002' model: '6S' - regex: 'RMX206[13](?:[);/ ]|$)' model: '6 Pro' + - regex: 'RMX215[15]' + model: '7' + - regex: 'RMX2103' + model: '7I' + - regex: 'RMX2170' + model: '7 Pro' + - regex: 'RMX3115' + model: 'X7 Pro Extreme Edition' + - regex: 'RMX3081' + model: '8 Pro' + - regex: 'RMX3085' + model: '8' + - regex: 'RMX3151' + model: '8i' + - regex: 'RMX3381' + model: '8s' + - regex: 'RMX3241' + model: '8 5G' + - regex: 'RMX3491' + model: '9i' + - regex: 'RMX3393' + model: '9 Pro+ 5G' - regex: 'RMX1925(?:[);/ ]|$)' model: '5S' - regex: 'RMX1811(?:[);/ ]|$)' model: 'C1' - regex: 'RMX194[1235](?:[);/ ]|$)' model: 'C2' - - regex: 'RMX202[107](?:[);/ ]|$)' + - regex: 'RMX202[1207](?:[);/ ]|$)' model: 'C3' - regex: 'RMX2185(?:[);/ ]|$)' model: 'C11' @@ -10040,38 +14454,121 @@ Realme: model: 'C12' - regex: 'RMX2180(?:[);/ ]|$)' model: 'C15' + - regex: 'RMX219[45](?:[);/ ]|$)' + model: 'C15 Qualcomm Edition' + - regex: 'RMX2101(?:[);/ ]|$)' + model: 'C17' + - regex: 'RMX306[13](?:[);/ ]|$)' + model: 'C20' + - regex: 'RMX320[13]' + model: 'C21' + - regex: 'RMX326[13]' + model: 'C21Y' + - regex: 'RMX319[13]' + model: 'C25' + - regex: 'RMX319[57]' + model: 'C25s' + - regex: 'RMX326[589]' + model: 'C25Y' + - regex: 'RMX3231' + model: 'C11 (2021)' + - regex: 'RMX330[01]' + model: 'GT 2 Pro' + - regex: 'RMX3031(?:[);/ ]|$)' + model: 'GT Neo' + - regex: 'RMX3370(?:[);/ ]|$)' + model: 'GT Neo 2' + - regex: 'RMX3357(?:[);/ ]|$)' + model: 'GT Neo 2T' + - regex: 'RMX336[0136]' + model: 'GT Master Edition' + - regex: 'RMX3350(?:[);/ ]|$)' + model: 'GT Neo Flash' + - regex: 'RMX216[13](?:[);/ ]|$)' + model: 'Narzo 20 Pro' + - regex: 'RMX2193(?:[);/ ]|$)' + model: 'Narzo 20' + - regex: 'RMX2050(?:[);/ ]|$)' + model: 'Narzo 20A' + - regex: 'RMX3171(?:[);/ ]|$)' + model: 'Narzo 30A' + - regex: 'RMX2156(?:[);/ ]|$)' + model: 'Narzo 30' + - regex: 'RMX3242' + model: 'Narzo 30 5G' + - regex: 'RMX3430' + model: 'Narzo 50A' + - regex: 'RMX3235' + model: 'Narzo 50i' - regex: 'RMX1831(?:[);/ ]|$)' model: 'U1' - - regex: 'RMX20(?:51|25)(?:[);/ ]|$)' + - regex: 'RMX(?:20(?:51|[2]5)|2144)(?:[);/ ]|$)' model: 'X50 5G' + - regex: 'RMX2052(?:[);/ ]|$)' + model: 'X50t 5G' - regex: 'RMX2071(?:[);/ ]|$)' model: 'X50 Pro' - - regex: 'RMX2076(?:[);/ ]|$)' + - regex: 'RMX207[56](?:[);/ ]|$)' model: 'X50 Pro 5G' - regex: 'RMX2072(?:[);/ ]|$)' model: 'X50 Pro Player' - - regex: 'RMX2142(?:[);/ ]|$)' + - regex: 'RMX(2142|2081)(?:[);/ ]|$)' model: 'X3' - - regex: 'RMX2086(?:[);/ ]|$)' + - regex: 'RMX208[56]' model: 'X3 Super Zoom' - - regex: 'RMX2111' + - regex: 'RMX2083' + model: 'X3' + - regex: 'RMX2173' + model: 'Q2 Pro' + - regex: 'RMX346[12]' + model: 'Q3s' + - regex: 'RMX211[12]' model: 'V5 5G' - - regex: 'RMX2200' + - regex: 'RMX220[01]' model: 'V3 5G' + - regex: 'RMX312[12]' + model: 'V11 5G' + - regex: 'RMX3125' + model: 'V11s 5G' + - regex: 'RMX304[123]' + model: 'V13 5G' + - regex: 'RMX309[23]' + model: 'V15 5G' + - regex: 'RMX2202' + model: 'GT 5G' + - regex: 'Realme[ _]([1-9])[ _]Pro(?:[);/ ]|$)' + model: '$1 Pro' + - regex: 'RMP210[23](?:[);/ ]|$)' + device: 'tablet' + model: 'Pad' # Oppo (oppo.com) OPPO: - regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|OPG01|(?:X90[07][0679]|U707T?|X909T?|R(?:10[01]1|2001|201[07]|6007|7005|7007|80[13579]|81[13579]|82[01379]|83[013]|800[067]|8015|810[679]|811[13]|820[057])[KLSTW]?|N520[79]|N5117|A33f|A33fw|A37fw?|PAAM00|PAAT00|PAC[TM]00)(?:[);/ ]|$)|R7kf|R7plusf|R7Plusm|A1601|CPH[0-9]{4}|CPH19(69|79|23|1[179])|PB(A[TM]00|CT10|BT30|CM[13]0|[FD]M00)|P(DAM10|ADM00|AF[TM]00|ADT00|AHM00|BBM[03]0|BBT00|BDT00|BFT00|[CB]E[MT]00|CA[MT]00|C[CDG]M00|CA[MT]10|[CD]PM00|CRM00|CDT00|CD[TM]10|CHM[013]0|CKM[08]0|CLM[15]0|DEM[13]0|DHM00|DK[TM]00|DPT00|DB[TM]00|DCM00|[CD]NM00|DVM00|DY[TM]20|DNT00|EA[TM]00)' + regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|R8001|A101OP|OPG01|A00[12]OP|(?:OPG02|X90[07][0679]|U70[57]T?|X909T?|R(?:10[01]1|2001|201[07]|6007|7005|7007|80[13579]|81[13579]|82[01379]|83[013]|800[067]|8015|810[679]|811[13]|820[057])[KLSTW]?|N520[79]|N5117|A33[wf]|A33fw|A37fw?|PAAM00|PAAT00|PAC[TM]00|R7kf|R7plus[fmt]?|A1601|CPH[0-9]{4}|CPH19(69|79|23|1[179])|PB(A[TM]00|CT10|BT30|CM[13]0|[FD]M00)|P(E[RFHG]M\d{2}|E[GH]T\d{2}|DAM10|ADM00|AF[TM]00|ADT00|AHM00|BBM[03]0|BBT00|BDT00|BFT00|[CB]E[MT]00|CA[MT]00|C[CDG]M00|CA[MT]10|[CD]PM00|CRM00|CDT00|CD[TM]10|CHM[013]0|CKM[08]0|CLM[15]0|DEM[13]0|DHM00|D[RK][TM]00|DPT00|DB[TM]00|DCM00|[CD]NM00|DVM00|DY[TM][12]0|DNT00|EA[TM]00|CRT01|EDM00)|PFDM00|PEG[MT]10|PEM[MT][02]0|PDET10|PDS[TM]00|PEC[MT]30|OPG03|PE[QYPEXNLU]M00|PCHT30|PFGM00|PF[VU]M10|A102OP|PFCM00|PFJM10|PGCM10|PECM20|PDAT10)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'PCHM10(?:[);/ ]|$)' model: 'A11' + - regex: 'PCHT30(?:[);/ ]|$)' + model: 'A11x' - regex: '(?:CPH2083|CPH2077)(?:[);/ ]|$)' model: 'A12' + - regex: '(?:CPH2179)(?:[);/ ]|$)' + model: 'A15s' + - regex: '(?:CPH2271)(?:[);/ ]|$)' + model: 'A16s' + - regex: '(?:CPH2185)(?:[);/ ]|$)' + model: 'A15' - regex: 'PCHM00(?:[);/ ]|$)' model: 'A11x' - regex: 'CPH1923(?:[);/ ]|$)' - model: 'A1K' + model: 'A1k' + - regex: 'CPH2071(?:[);/ ]|$)' + model: 'A11k' + - regex: 'CPH1925(?:[);/ ]|$)' + model: 'A1s' + - regex: 'CPH2269(?:[);/ ]|$)' + model: 'A16' - regex: '(?:OPPO[ _]?)?(CPH1837|PAD[TM]00)(?:[);/ ]|$)' model: 'A3' - regex: '(?:OPPO[ _]?)?A37f(w)(?:[);/ ]|$)' @@ -10082,30 +14579,66 @@ OPPO: model: 'A39' - regex: 'CPH20(?:81|73|31|15)(?:[);/ ]|$)' model: 'A31' + - regex: 'CPH2137(?:[);/ ]|$)' + model: 'A33' - regex: '(?:OPPO[ _]?)?(?:CPH18(?:0[35]|53)|PBBM30)(?:[);/ ]|$)' model: 'A3s' - regex: '(?:OPPO[ _]?)?(?:CPH1809|PBA[TM]00|PBBT30)(?:[);/ ]|$)' model: 'A5' - regex: 'CPH19(?:3[13]|43)(?:[);/ ]|$)' model: 'A5 (2020)' + - regex: '(?:PEC[MT]30|PECM20)(?:[);/ ]|$)' + model: 'A53 5G' - regex: 'PDVM00(?:[);/ ]|$)' model: 'A32' - - regex: '(?:PDAM10|CPH2069|CPH2061)(?:[);/ ]|$)' + - regex: 'PEFM00(?:[);/ ]|$)' + model: 'A35' + - regex: '(?:PDA[TM]10|CPH2069|CPH2061)(?:[);/ ]|$)' model: 'A52' - - regex: 'CPH2127(?:[);/ ]|$)' + - regex: 'CPH(?:2127|213[19])(?:[);/ ]|$)' model: 'A53' + - regex: 'CPH2135(?:[);/ ]|$)' + model: 'A53s' + - regex: 'CPH2321(?:[);/ ]|$)' + model: 'A53s 5G' + - regex: '(?:CPH2195|OPG02|CPH2303)(?:[);/ ]|$)' + model: 'A54 5G' + - regex: '(?:CPH2239|CPH2241)(?:[);/ ]|$)' + model: 'A54' + - regex: 'CPH2273(?:[);/ ]|$)' + model: 'A54s' + - regex: 'PEM[MT][02]0(?:[);/ ]|$)' + model: 'A55 5G' + - regex: 'CPH2325(?:[);/ ]|$)' + model: 'A55' + - regex: '(?:A102OP|CPH2309)(?:[);/ ]|$)' + model: 'A55s 5G' + - regex: 'PFVM10' + model: 'A56 5G' - regex: '(?:OPPO[ _]?)?CPH170[15](?:[);/ ]|$)' model: 'A57' - regex: 'CPH19(?:09|1[02])(?:[);/ ]|$)' model: 'A5S' - regex: '(?:OPPO[ _]?)?(?:CPH190[15]|PBF[TM]00)(?:[);/ ]|$)' model: 'A7' - - regex: '(?:OPPO[ _]?)?(CPH1801|CPH1717)(?:[);/ ]|$)' + - regex: '(?:OPPO[ _]?)?CPH1717(?:[);/ ]|$)' model: 'A71' + - regex: '(?:OPPO[ _]?)?CPH1801(?:[);/ ]|$)' + model: 'A71 (2018)' - regex: '(?:OPPO[ _]?)?(?:PDY[TM]20|CPH2067)(?:[);/ ]|$)' model: 'A72' + - regex: 'CPH(?:2161|2099)(?:[);/ ]|$)' + model: 'A73 5G' + - regex: 'CPH2219(?:[);/ ]|$)' + model: 'A74' + - regex: 'CPH2263(?:[);/ ]|$)' + model: 'A74 5G' + - regex: '(?:OPPO[ _]?)?(?:PDY[TM]10)(?:[);/ ]|$)' + model: 'A72n 5G' - regex: '(?:OPPO[ _]?)?CPH1715(?:[);/ ]|$)' model: 'A77' + - regex: '(?:OPPO[ _]?)?A79kt' + model: 'A79' - regex: 'PCD[TM]00(?:[);/ ]|$)' model: 'A7n' - regex: '(PBBT00|PBBM00)(?:[);/ ]|$)' @@ -10116,20 +14649,28 @@ OPPO: model: 'A83' - regex: '(?:OPPO[ _]?)?CPH1827(?:[);/ ]|$)' model: 'A83 (2018)' - - regex: 'PCA[TM]10(?:[);/ ]|$)' + - regex: '(?:OPPO[ _]?)?(?:PCA[TM]10|CPH1938)(?:[);/ ]|$)' model: 'A9' - regex: '(CPH1937|CPH1941|PCHM30)(?:[);/ ]|$)' model: 'A9 (2020)' - - regex: '(?:OPPO[ _]?)?CPH1938(?:[);/ ]|$)' - model: 'A9 (EN)' - regex: '(?:PCPM00|CPH20[02]1)(?:[);/ ]|$)' model: 'A91' - regex: 'CPH2059(?:[);/ ]|$)' model: 'A92' - - regex: 'PDKT00(?:[);/ ]|$)' + - regex: 'PDK[TM]00(?:[);/ ]|$)' model: 'A92s' - - regex: 'PDKM00(?:[);/ ]|$)' + - regex: '(?:PEH[MT]00|CPH212[13])(?:[);/ ]|$)' + model: 'A93' + - regex: '(?:PFGM00)(?:[);/ ]|$)' model: 'A93s' + - regex: 'PFUM10' + model: 'A96 5G' + - regex: '(?:CPH2203)(?:[);/ ]|$)' + model: 'A94' + - regex: '(?:CPH2197)(?:[);/ ]|$)' + model: 'A74 5G' + - regex: 'CPH2365|PELM00' + model: 'A95' - regex: 'PCE[TM]00(?:[);/ ]|$)' model: 'A9x' - regex: '(?:OPPO[ _]?)?CPH1851(?:[);/ ]|$)' @@ -10140,10 +14681,14 @@ OPPO: model: 'AX7' - regex: '(?:OPPO[ _]?)?X9009(?:[);/ ]|$)' model: 'F1 Plus' - - regex: 'CPH1911(?:[);/ ]|$)' + - regex: 'CPH191[135](?:[);/ ]|$)' model: 'F11' - regex: 'CPH19(?:69|87)(?:[);/ ]|$)' model: 'F11 Pro' + - regex: '(?:OPPO[ _]?)?CPH2095' + model: 'F17' + - regex: '(?:OPPO[ _]?)?(?:CPH2119)(?:[);/ ]|$)' + model: 'F17 Pro' - regex: '(?:OPPO[ _]?)?A1601(?:[);/ ]|$)' model: 'F1s' - regex: '(?:OPPO[ _]?)?CPH1609(?:[);/ ]|$)' @@ -10154,12 +14699,18 @@ OPPO: model: 'F5' - regex: '(?:OPPO[ _]?)?CPH1725(?:[);/ ]|$)' model: 'F5 Youth' - - regex: '(?:OPPO[ _]?)?CPH(1859|18(?:19|21))(?:[);/ ]|$)' + - regex: '(?:OPPO[ _]?)?CPH18(?:[15]9|21)(?:[);/ ]|$)' model: 'F7' - regex: '(?:OPPO[ _]?)?(?:CPH1825|CPH1881)(?:[);/ ]|$)' model: 'F9' - regex: '(?:OPPO[ _]?)?CPH1823(?:[);/ ]|$)' model: 'F9 Pro' + - regex: '(?:OPPO[ _]?)?CPH2223(?:[);/ ]|$)' + model: 'F19s' + - regex: '(?:OPPO[ _]?)?CPH2285(?:[);/ ]|$)' + model: 'F19 Pro' + - regex: '(?:OPPO[ _]?)?CPH2213(?:[);/ ]|$)' + model: 'F19 Pro Plus' - regex: '(?:OPPO[ _]?)?X909T?(?:[);/ ]|$)' model: 'Find 5' - regex: '(?:OPPO[ _]?)?R827T?(?:[);/ ]|$)' @@ -10168,6 +14719,8 @@ OPPO: model: 'Find 7' - regex: '(?:OPPO[ _]?)?X900[067](?:[);/ ]|$)' model: 'Find 7a' + - regex: '(?:OPPO[ _]?)?PEUM00' + model: 'Find N 5G' - regex: '(?:OPPO[ _]?)?R815[TW]?(?:[);/ ]|$)' model: 'Find Clover' - regex: '(?:OPPO[ _]?)?R8015(?:[);/ ]|$)' @@ -10178,16 +14731,22 @@ OPPO: model: 'Find Muse' - regex: '(?:OPPO[ _]?)?U707T?(?:[);/ ]|$)' model: 'Find Way S' + - regex: '(?:OPPO[ _]?)?U705T(?:[);/ ]|$)' + model: 'Ulike 2' - regex: '(?:OPPO[ _]?)?(?:CPH187[15]|PAF[MT]00)(?:[);/ ]|$)' model: 'Find X' - regex: '(?:OPPO[ _]?)?(?:PAHM00)(?:[);/ ]|$)' model: 'Find X Lamborghini' - - regex: '(?:OPPO[ _]?)?(?:PDEM10|CPH2023)(?:[);/ ]|$)' + - regex: '(?:OPPO[ _]?)?(?:PDE[TM]10|CPH2023)(?:[);/ ]|$)' model: 'Find X2' - regex: '(?:OPPO[ _]?)?CPH2005(?:[);/ ]|$)' model: 'Find X2 Lite' - regex: '(?:OPPO[ _]?)?(?:PDEM30|OPG01|CPH2025)(?:[);/ ]|$)' model: 'Find X2 Pro' + - regex: 'PEDM00(?:[);/ ]|$)' + model: 'Find X3' + - regex: '(?:PEEM00|CPH2173|OPG03)(?:[);/ ]|$)' + model: 'Find X3 Pro' - regex: '(?:OPPO[ _]?)?R1011 Build' model: 'Joy Plus' - regex: '(?:OPPO[ _]?)?(PBC(?:M30|T10))(?:[);/ ]|$)' @@ -10198,6 +14757,10 @@ OPPO: model: 'K5' - regex: '(?:OPPO[ _]?)?(PCLM50)(?:[);/ ]|$)' model: 'K7' + - regex: '(?:OPPO[ _]?)?(PERM00)(?:[);/ ]|$)' + model: 'K7x' + - regex: '(?:OPPO[ _]?)?(?:PGCM10)' + model: 'K9x' - regex: '(?:OPPO[ _]?)?N5117(?:[);/ ]|$)' model: 'N1 Mini' - regex: '(?:OPPO[ _]?)?N520[79](?:[);/ ]|$)' @@ -10208,7 +14771,7 @@ OPPO: model: 'Neo 3' - regex: '(?:OPPO[ _]?)?R831[SL](?:[);/ ]|$)' model: 'Neo 5' - - regex: '(?:OPPO[ _]?)?A33f(?:[);/ ]|$)' + - regex: '(?:OPPO[ _]?)?A33[wf](?:[);/ ]|$)' model: 'Neo 7' - regex: '(?:OPPO[ _]?)?A33fw(?:[);/ ]|$)' model: 'Neo 7s' @@ -10216,10 +14779,14 @@ OPPO: model: 'Piano' - regex: '(?:OPPO[ _]?)?CPH1707(?:[);/ ]|$)' model: 'R11' - - regex: '(?:OPPO[ _]?)?CPH1719(?:[);/ ]|$)' - model: 'R11s' - - regex: '(?:OPPO[ _]?)?CPH1721(?:[);/ ]|$)' + - regex: '(?:OPPO[ _]?)?R11 Plusk?t?(?:[);/ ]|$)' + model: 'R11 Plus' + - regex: 'R8001(?:[);/ ]|$)' + model: 'R1K' + - regex: '(?:OPPO[ _]?)?(?:CPH1721|R11s Plust?)(?:[);/ ]|$)' model: 'R11s Plus' + - regex: '(?:OPPO[ _]?)?(?:CPH1719|R11st?)(?:[);/ ]|$)' + model: 'R11s' - regex: '(?:OPPO[ _]?)?(?:CPH1835|PAC[TM]00|PAAM00)(?:[);/ ]|$)' model: 'R15' - regex: '(?:OPPO[ _]?)?(?:CPH183[13]|PAAT00)(?:[);/ ]|$)' @@ -10230,7 +14797,7 @@ OPPO: model: 'R17' - regex: '(?:OPPO[ _]?)?(?:CPH1893)(?:[);/ ]|$)' model: 'R17 Neo' - - regex: '(?:OPPO[ _]?)?(?:CPH1877|CPH2119|PBD[MT]00)(?:[);/ ]|$)' + - regex: '(?:OPPO[ _]?)?(?:CPH1877|PBD[MT]00)(?:[);/ ]|$)' model: 'R17 Pro' - regex: '(?:OPPO[ _]?)?R8006(?:[);/ ]|$)' model: 'R1L' @@ -10240,13 +14807,13 @@ OPPO: model: 'R5' - regex: '(?:OPPO[ _]?)?R7kf(?:[);/ ]|$)' model: 'R7 Lite' - - regex: '(?:OPPO[ _]?)?R7Plusm(?:[);/ ]|$)' + - regex: '(?:OPPO[ _]?)?R7Plus[mt]?(?:[);/ ]|$)' model: 'R7 Plus' - regex: '(?:OPPO[ _]?)?R7Plusf(?:[);/ ]|$)' model: 'R7 Plus F' - regex: '(?:OPPO[ _]?)?X9079(?:[);/ ]|$)' model: 'R9 Plus' - - regex: '(?:OPPO[ _]?)?CPH1607(?:[);/ ]|$)' + - regex: '(?:OPPO[ _]?)?(?:CPH1607|R9sk)(?:[);/ ]|$)' model: 'R9s' - regex: '(?:OPPO[ _]?)?(?:CPH1611|R9s Plus)(?:[);/ ]|$)' model: 'R9s Plus' @@ -10254,9 +14821,7 @@ OPPO: model: 'Reno' - regex: 'CPH1983(?:[);/ ]|$)' model: 'Reno A' - - regex: 'PCCM00(?:[);/ ]|$)' - model: 'Reno 10X' - - regex: 'CPH1919(?:[);/ ]|$)' + - regex: '(?:CPH1919|PCCM00)(?:[);/ ]|$)' model: 'Reno 10X Zoom' - regex: '(?:PCKM00|CPH1907)(?:[);/ ]|$)' model: 'Reno 2' @@ -10266,26 +14831,70 @@ OPPO: model: 'Reno 2Z' - regex: 'CPH2043(?:[);/ ]|$)' model: 'Reno 3' - - regex: 'CPH2013(?:[);/ ]|$)' + - regex: '(?:CPH2013|A002OP)(?:[);/ ]|$)' model: 'Reno 3A' - - regex: 'PDCM00(?:[);/ ]|$)' + - regex: '(?:PDCM00|A001OP)(?:[);/ ]|$)' model: 'Reno 3 5G' - - regex: '(?:PCRM00|CPH203[57]|CPH2009)' + - regex: '(?:PCRM00|CPH203[567]|CPH2009)' model: 'Reno 3 Pro' + - regex: 'PCRT01(?:[);/ ]|$)' + model: 'Reno 3 Lite' - regex: 'CPH2113(?:[);/ ]|$)' model: 'Reno 4 4G' - regex: 'CPH2125(?:[);/ ]|$)' model: 'Reno 4 Lite' - regex: 'CPH2109(?:[);/ ]|$)' model: 'Reno 4 Pro 4G' - - regex: 'PDP[TM]00(?:[);/ ]|$)' + - regex: '(?:PDP[TM]00|CPH2091)(?:[);/ ]|$)' model: 'Reno 4 5G' - regex: 'PEA[TM]00(?:[);/ ]|$)' model: 'Reno 4 SE 5G ' - - regex: 'PDN[TM]00(?:[);/ ]|$)' + - regex: '(?:PDN[TM]00|CPH2089)(?:[);/ ]|$)' model: 'Reno 4 Pro 5G' - - regex: 'CPH192[15]' + - regex: 'CPH2065(?:[);/ ]|$)' + model: 'Reno 4Z 5G' + - regex: 'CPH2209(?:[);/ ]|$)' + model: 'Reno 4F' + - regex: 'CPH2159(?:[);/ ]|$)' + model: 'Reno 5' + - regex: '(?:CPH2199|A101OP)(?:[);/ ]|$)' + model: 'Reno 5A' + - regex: 'CPH2205(?:[);/ ]|$)' + model: 'Reno 5 Lite' + - regex: '(?:PEG[MT]00|CPH2145)(?:[);/ ]|$)' + model: 'Reno 5 5G' + - regex: 'PEG[MT]10(?:[);/ ]|$)' + model: 'Reno 5K' + - regex: 'CPH2217(?:[);/ ]|$)' + model: 'Reno 5F' + - regex: 'CPH2211(?:[);/ ]|$)' + model: 'Reno 5Z' + - regex: '(?:PDS[TM]00|CPH220[17])(?:[);/ ]|$)' + model: 'Reno 5 Pro 5G' + - regex: 'PDR[TM]00(?:[);/ ]|$)' + model: 'Reno 5 Pro Plus 5G' + - regex: 'CPH1921(?:[);/ ]|$)' model: 'Reno 5G' + - regex: '(?:CPH2235|PEQM00|CPH2251)(?:[);/ ]|$)' + model: 'Reno 6' + - regex: 'CPH2237(?:[);/ ]|$)' + model: 'Reno 6 Z 5G' + - regex: 'PEPM00(?:[);/ ]|$)' + model: 'Reno 6 Pro' + - regex: 'CPH224[79](?:[);/ ]|$)' + model: 'Reno 6 Pro 5G' + - regex: 'PENM00(?:[);/ ]|$)' + model: 'Reno 6 Pro Plus' + - regex: 'PFJM10' + model: 'Reno 7' + - regex: 'PFCM00' + model: 'Reno 7 SE' + - regex: 'PFDM00(?:[);/ ]|$)' + model: 'Reno 7 Pro' + - regex: '(?:PEYM00)(?:[);/ ]|$)' + model: 'K9 Pro 5G' + - regex: '(?:PEXM00)(?:[);/ ]|$)' + model: 'K9 5G' - regex: 'PCLM10(?:[);/ ]|$)' model: 'Reno Ace' - regex: 'PDHM00(?:[);/ ]|$)' @@ -10294,6 +14903,8 @@ OPPO: model: 'Reno K3' - regex: '(?:OPPO[ _]?)?(?:CPH1979|PCD[TM]10)(?:[);/ ]|$)' model: 'Reno Z' + - regex: 'A59st(?:[);/ ]|$)' + model: 'A59s' - regex: 'N1T?(?:[);/ ]|$)' model: 'N1T' @@ -10308,28 +14919,16 @@ OPPO: - regex: '(?:OB-)?OPPO[ _]?((?!Browser)[a-z0-9]+)' model: '$1' -# Opsson -Opsson: - regex: 'Opsson|IUSAI' - device: 'smartphone' - models: - - regex: 'IUSAI[ _]([^/;]+) Build' - model: 'Iusai $1' - - regex: 'IUSAI[ _]([^/;\)]+)[/;\)]' - model: 'Iusai $1' - - regex: 'Opsson[ _]([^/;]+) Build' - model: '$1' - - regex: '(?:Opsson-)?Opsson[ -_]([^/;]+)/' - model: '$1' - -# orange -Orange: - regex: 'SPV[ \-]?([a-z0-9]+)|(?<!FBCR/)Orange[ _-](?!Tahiti-LS\))([^/;]+)( Build|\))(?<!Tahiti-LS\))|SC/IHD92|Nura 2|FunTab ([^/;]+) Build' +# orange +Orange: + regex: 'SPV[ \-]?([a-z0-9]+)|(?<!FBCR/)Orange[ _-](?!Tahiti-LS\))([^/;]+)( Build|\))(?<!Tahiti-LS\))|SC/IHD92|Nura 2|FunTab ([^/;]+) Build|Orange Mahpee|Dive 50' device: 'smartphone' models: - regex: 'SC/IHD92' - model: 'Livebox Play' device: 'tv' # set top box + model: 'Livebox Play' + - regex: 'Nola play' + model: 'Nola Play' - regex: 'Nura 2' model: 'Nura 2' - regex: 'Sego' @@ -10340,31 +14939,63 @@ Orange: device: 'tablet' - regex: 'Orange[ _-](Rise)(3[12]|5[12])(?:[);/ ]|$)' model: '$1 $2' - - regex: 'Orange[ _-](Dive)72(?:[);/ ]|$)' - model: '$1 72' - - regex: 'Orange[ _-](Daytona|Dive (30|7[13])|Dublin|Fova|Gova|Hi 4G|Hiro|Kivo|Monte Carlo|Neva 80|Neva play|Nura|Reyo|Rise[_ ](3[034]|40|5[345])|Rono|Roya|San Francisco|Tactile internet 2|Tado|Yomi|Yumo|Zali)(?:[);/ ]|$)' + - regex: '(?:Orange[ _-])?Dive ?(\d+) Dual(?:[);/ ]|$)' + model: 'Dive $1 Dual' + - regex: '(?:Orange[ _-])?Dive ?(\d+)(?:[);/ ]|$)' + model: 'Dive $1' + - regex: 'Orange[ _-](Daytona|Dublin|Fova|Gova|Hi 4G|Hiro|Kivo|Monte Carlo|Neva 80|Neva play|Nura|Reyo|Rise[_ ](3[034]|40|5[345])|Rono|Roya|San Francisco|Tactile internet 2|Tado|Yomi|Yumo|Zali|Mahpee)(?:[);/ ]|$)' model: '$1' - regex: 'SPV[ \-]?([a-z0-9]+)' model: 'SPV $1' # Oukitel Oukitel: - regex: 'OUKITEL|(?:(?:C15|C16|K10000|K[46]000)(?:[ _]Pro)|U20_Plus|WP5 Pro|K[46]000[ _](?:Plus|Lite)|Y4800|K10000|K[4567]000)(?:[);/ ]|$)' + regex: 'OUKITEL|(?:Android 10.+ (?:C19|C22)|Android 8.+ U23|Android 7.+ (?:U1[78]|U22)|(?:C1[569]|K10000|K[46]000)(?:[ _]Pro)|K4000Pro|C1[18]_Pro|C1[0237] Pro|C2[13] Pro|C12 Plus|U15 Pro|K15_Plus|U16 Max|C11_F|U7 Max|U7 Plus|U11[_ ]Plus|U20_Plus|OK6000 Plus|WP5000|WP[58] Pro|K[46]000[ _](?:Plus|Lite)|Y4800|K10000|K7 Power|K[4-8]000| RT1| WP(?:[15-79]|1[02357])|K[37]_Pro|K13_Pro|U25_Pro)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: '(C15|C16|K10000|K[46]000|WP5)[ _]Pro(?:[);/ ]|$)' + - regex: '(C1[0-9]|C2[13]|K10000|K[46]000|WP[258]|WP12|U[12]5|K[37]|K13)[ _]?Pro(?:[);/ ]|$)' model: '$1 Pro' - - regex: 'OUKITEL K3(?:[);/ ]|$)' - model: 'K3' - - regex: '(K10000)[ _]Max(?:[);/ ]|$)' + - regex: 'OUKITEL K([37])(?:[);/ ]|$)' + model: 'K$1' + - regex: '(K10000|U16|U7)[ _]Max(?:[);/ ]|$)' model: '$1 Max' - - regex: '(U20|K[46]000)[_ ]Plus(?:[);/ ]|$)' + - regex: '(U20|K[46]000|U7|U11|OK6000|K15|C12)[_ ]?Plus(?:[);/ ]|$)' model: '$1 Plus' - regex: '(K4000)[_ ]Lite(?:[);/ ]|$)' model: '$1 Lite' - - regex: '(Y4800|K10000|K[4567]000)(?:[);/ ]|$)' + - regex: '(K10000)[_ ]Mix(?:[);/ ]|$)' + model: '$1 Mix' + - regex: 'K7 Power(?:[);/ ]|$)' + model: 'K7 Power' + - regex: '(Y4800|K10000|K[4-8]000|WP5000|[CU]2|U1[078]|U2[23]|C19|C22)(?:[);/ ]|$)' model: '$1' + - regex: ' (RT1)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + + - regex: '(?:OUKITEL)? (WP\d+|C11_F)(?:[);/ ]|$)' + model: '$1' + - regex: 'OUKITEL; ([^;]+);' + model: '$1' + +# OKWU +OKWU: + regex: 'OKWU SIGMA(?:[);/ ]|$)' + device: 'smartphone' + model: 'Sigma' + +# Orion +Orion: + regex: 'ORION, ([a-z0-9_ \-]+), (?:wired|wireless)|CRANE-EVB' + device: 'tv' + models: + - regex: 'ORION, ([a-z0-9_ \-]+), (?:wired|wireless)' + model: '' + - regex: '(CRANE-EVB)' + model: 'CRANE-EVB' + device: 'tablet' + # Ouki Ouki: regex: 'OUKI|OK[AU][0-9]+[a-z]* Build' @@ -10381,7 +15012,7 @@ Ouki: # Overmax Overmax: - regex: 'OV-[a-z]+(?:[^;(/]*)[();/ ]|Qualcore 1010|Vertis 5021 Aim|OV1027[34]G' + regex: 'OV-[a-z]+(?:[^;(/]*)[();/ ]|Qualcore 10(?:10|27)|Livecore7032|Vertis 5021 Aim|Vertis 4004 You|OV1027[34]G' device: 'tablet' models: - regex: 'OV-V10' @@ -10390,28 +15021,34 @@ Overmax: - regex: 'Vertis 5021 Aim' model: 'Vertis 5021 Aim' device: 'smartphone' + - regex: 'Vertis 4004 You' + model: 'Vertis 4004 You' + device: 'smartphone' - regex: 'OV-Vertis[ _-]([^;/]+) Build' model: 'Vertis $1' device: 'smartphone' - + - regex: 'Livecore7032' + model: 'Livecore 7032' - regex: 'Qualcore 1010' model: 'Qualcore 1010' - device: 'tablet' + - regex: 'Qualcore 1027 4G' + model: 'Qualcore 1027 4G' - regex: 'OV1027([34])G' model: 'Qualcore 1027 $1G' - device: 'tablet' - - regex: '(OV-[a-z]+(?:[^;(/]*))(?<!Build)[();/ ]' model: '$1' # Oysters Oysters: - regex: 'Oysters|T84ERI[ _]3G|T72HM(s_)?3G|T102MS_3G|T102ER3G|(T74HMi|T84Bi)[_ ]4G|T74MR4G|T84Ni[_ ][34]G|Pacific[ ]?800i|T104B_[34]G|IndianV|T72HA_3G|T74D_3G|T74N_3G|T74SC_3G|T74Mai_3G|T104MBi_3G|T104SCi_3G|T104ER4G|Atlantic4G|AntarcticE' + regex: 'Oysters|T84ERI[ _]3G|T72HM(s_)?3G|T102MS_3G|T102ER3G|(T74HMi|T84Bi)[_ ]4G|T74MR4G|T84Ni[_ ][34]G|Pacific(?:[ ]?800i|E)|T104B_[34]G|IndianV|T72HA_3G|T74D_3G|T74N_3G|T74SC_3G|T74Mai_3G|T104MBi_3G|T104SCi_3G|T104ER4G|Atlantic4G|AntarcticE|T7V 3G|Pacific(?:VS?|4G)' device: 'tablet' models: - regex: 'Pacific[ ]?800i' device: 'smartphone' model: 'Pacific 800i' + - regex: 'PacificE' + device: 'smartphone' + model: 'Pacific E' - regex: 'Atlantic4G' device: 'smartphone' model: 'Atlantic 4G' @@ -10421,20 +15058,24 @@ Oysters: - regex: 'IndianV' device: 'smartphone' model: 'Indian V' + - regex: '(?:Oysters[_ ])?Pacific(VS?|4G)' + device: 'smartphone' + model: 'Pacific $1' - regex: 'Oysters ((?:Arctic|Indian|Atlantic|Pacific)[^/;]+) Build' device: 'smartphone' model: '$1' - regex: '(T84ERI[ _]3G|T72HM(s_)?3G|(?:(T74HMi|T84Bi)[_ ]4G)|T84Ni[_ ][34]G)' model: '$1' - - regex: '(T74MR|T102MS|T104B|T74SC|T74[DN]|T72HA|T102ER|T104SCi|T104MBi|T104ER)[ _]?([34]G)' + - regex: '(T74MR|T102MS|T104B|T74SC|T74[DN]|T72HA|T102ER|T104SCi|T104MBi|T104ER|T7V)[ _]?([34]G)' model: '$1 $2' - regex: 'T74Mai_3G' model: 'T74MAi 3G' - regex: 'Oysters ([^/;]+)( Build|\))' model: '$1' -# öwn (own) + +# öwn (own mobile) öwn: - regex: 'OWN|S4035[ _][34]G' + regex: 'OWN[ _]|(?:S4035[ _][34]G|Smart8|SMART PLUS LTE)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'FUN ([67])' @@ -10449,6 +15090,10 @@ Oysters: model: 'One' - regex: 'SMART 9' model: 'Smart 9' + - regex: 'Smart8(?:[);/ ]|$)' + model: 'Smart 8' + - regex: 'SMART PLUS LTE(?:[);/ ]|$)' + model: 'Smart Plus LTE' # Panacom Panacom: @@ -10461,18 +15106,26 @@ Panacom: # panasonic Panasonic: - regex: 'Panasonic|PANATV[0-9]+|Viera/|(?:P902i|P-08D|FZ-B2D|FZ-[NX]1|DMC-CM1|P-01J)(?:[);/ ]|$)|Eluga[ _]|P55 Novo 4G' + regex: 'Panasonic|PANATV[0-9]+|Viera/|(?:P902i|P-0[28]D|FZ-B2D|FZ-[NX]1|DMC-CM1|P-01J|P-0[23]E|P55 Max)(?:[);/ ]|$)|Eluga[ _]|P55 Novo 4G' device: 'smartphone' models: - regex: 'P-01J(?:[);/ ]|$)' model: 'P-smart Keitai' + - regex: 'P-03E(?:[);/ ]|$)' + model: 'Eluga P' + - regex: 'P-02E(?:[);/ ]|$)' + model: 'Eluga X' + - regex: 'Eluga[ _]I7(?:_EE)?' + model: 'Eluga I7' - regex: 'Eluga[ _-]([^;/]+) Build' model: 'Eluga $1' - - regex: 'Eluga[ _-]([^;/]+)(?:[;/)]|$)' + - regex: 'Eluga[ _-]([^);/]+)[;/)]' model: 'Eluga $1' - regex: '(DMC-CM1)' model: 'Lumix $1' device: 'camera' + - regex: 'P-02D(?:[);/ ]|$)' + model: 'Lumix Phone P-02D' - regex: '(FZ-[XN]1)(?:[);/ ]|$)' model: 'Toughpad $1' - regex: 'FZ-B2D(?:[);/ ]|$)' @@ -10480,6 +15133,8 @@ Panasonic: device: 'tablet' - regex: 'P55 Novo 4G' model: 'P55 Novo 4G' + - regex: 'P55 Max' + model: 'P55 Max' - regex: 'P902i(?:[);/ ]|$)' device: 'feature phone' model: 'P902i' @@ -10489,6 +15144,12 @@ Panasonic: - regex: 'PANATV[0-9]+|Viera/' device: 'tv' model: 'Smart TV' + - regex: '(43D1200|(?:32|43)D1270|32D1280)' + device: 'tv' + model: '$1' + - regex: 'PANASONIC, ([a-z0-9_ \-]+), (?:wired|wireless)' + model: '' + device: 'tv' - regex: 'Panasonic[ _\-]?([a-z0-9]+)' model: '$1' - regex: 'portalmmm/2.0 (P[a-z0-9]+)' @@ -10534,7 +15195,7 @@ PCD Argentina: # ArmPhone ArmPhone: - regex: '(TSD Octa A0520P|TSD Quadra A0509P)(?:[);/ ]|$)' + regex: '(TSD Octa A0520P|TSD Quadra A050[59]P)(?:[);/ ]|$)' device: 'smartphone' model: '$1' @@ -10545,7 +15206,7 @@ Pentagram: models: - regex: '(?:PENTAGRAM[_ ])?EON[_ ]PRIX' model: 'Eon Prix' - - regex: 'Quadra 7( UltraSlim)?' + - regex: 'Quadra 7(?: UltraSlim)?' model: 'Quadra 7 UltraSlim' - regex: 'Monster X5?' model: 'Monster X5' @@ -10558,43 +15219,116 @@ Pentagram: model: '$1' device: 'smartphone' -# philips -Philips: - regex: 'Philips|AND1E(?:[);/ ]|$)|NETTV/|PI3210G|TLE(821L|722G)|TPM1[79]1E|70PUH6774_96|QM16[134]E|Xenium S[25]66' +# Tcl (tcl.com) +TCL: + regex: 'TCL,|TCL[_ -][a-z0-9]+|(?:TCL[_ -][^;/]+ Build)|(?:TCLGalaG60(?:\(9108A\))?|4187[DMU]|5004S|5087Z|5101A|5102[BKM]|5107G|5130[JM]|5133A|5148A|5152D|5159[AJ]|5199I|6125[ADFH]|6156H|7040N|9048S|A(?:50[279]|600)DL|T(?:671[EFHO]|766[AHJU]|767H|770[BH]|773O|774H|775[BH]|780H|781|782H|790Y|799[BH]|810[HS])|Percee TV|BeyondTV\d?)(?:_(?:RU|EEA|TR))?(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Xenium S([25]66)(?:[);/ ]|$)' - model: 'Xenium S$1' - - regex: 'AND1E(?: TV)?(?:[);/ ]|$)' - model: 'Android TV' - device: 'tv' - - regex: '(PI3210G)' + - regex: 'TCLGalaG60(?:\(9108A\))?(?:[);/ ]|$)' + model: 'Gala G60' + - regex: '5004S(?:[);/ ]|$)' + model: 'Signa' + - regex: '4187D(?:[);/ ]|$)' + model: '205' + - regex: 'T774H(?:[);/ ]|$)' + model: '20L' + - regex: 'T775B(?:[);/ ]|$)' + model: '20L Plus Premium Edition' + - regex: 'T775H(?:[);/ ]|$)' + model: '20L Plus' + - regex: '6125[ADFH]' + model: '20E' + - regex: '6156H' + model: '20Y' + - regex: '5199I(?:[);/ ]|$)' + model: 'C9' + - regex: 'A509DL(?:[);/ ]|$)' + model: 'A3' + - regex: 'A600DL(?:[);/ ]|$)' + model: 'A3X' + - regex: '5152D(?:[);/ ]|$)' + model: 'C5' + - regex: '5133A(?:[);/ ]|$)' + model: 'L5' + - regex: '5102[BKM](?:[);/ ]|$)' + model: 'L7' + - regex: '5159[AJ](?:[);/ ]|$)' + model: 'L9' + - regex: '5101A(?:[);/ ]|$)' + model: 'L9 Plus' + - regex: '5107G(?:[);/ ]|$)' + model: 'L9S' + - regex: '5130J(?:[);/ ]|$)' + model: 'L10+' + - regex: '4187[MU](?:[);/ ]|$)' + model: 'L10 Lite' + - regex: '5148A(?:[);/ ]|$)' + model: 'T9' + - regex: '5130M(?:[);/ ]|$)' + model: 'T Pro' + - regex: 'T780H(?:[);/ ]|$)' + model: 'Plex' + - regex: 'T782H(?:[);/ ]|$)' + model: '10 Plus' + - regex: 'T790Y(?:[);/ ]|$)' + model: '10 5G' + - regex: 'TCL[_ -]([^;/]+) Build' model: '$1' - device: 'tablet' - - regex: '(TPM1[79]1E)' # Smart Tv 2018/2019 + - regex: 'TCL[_ -]([a-z0-9]+)' + model: '$1' + - regex: '(7040N)(?:[);/ ]|$)' model: '$1' + - regex: 'A502DL(?:[);/ ]|$)' + model: 'LX' + - regex: 'A507DL(?:[);/ ]|$)' # TracFone A507DL + model: 'A2' + - regex: 'T770[HB](?:[);/ ]|$)' + model: '10L' + - regex: 'T766[AHJU](?:_(?:EEA|RU))?(?:[);/ ]|$)' + model: '10 SE' + - regex: 'T671[HFEO](?:_EEA)?(?:[);/ ]|$)' + model: '20 SE' + - regex: 'T767H(?:[);/ ]|$)' + model: '20R 5G' + - regex: 'T773O(?:[);/ ]|$)' + model: '20S' + - regex: '5087Z(?:[);/ ]|$)' + model: '20 XE' + - regex: 'T781(?:[);/ ]|$)' + model: '20 5G' + - regex: 'T810[SH](?:[);/ ]|$)' + model: '20 Pro 5G' + - regex: 'T799[BH]' + model: '10 Pro' + - regex: 'T766H' + model: '10 SE' + + - regex: '9048S(?:[);/ ]|$)' + device: 'tablet' + model: 'Tab 8" 4G' + + - regex: '(Percee TV)(?:[);/ ]|$)' device: 'tv' - - regex: '(QM16[134]E)' model: '$1' + - regex: 'BeyondTV(\d)?(?:[);/ ]|$)' device: 'tv' - - regex: '(70PUH6774)_96' - model: '$1/96 4K UHD' + model: 'Beyond TV $1' + - regex: '((?:43|55)S62FS|(?:43|50)P65US|U(?:43|60|65)P60|65P4USM|(?:40|49)S62|L32S6|55P610|50P8S|55S62|(?:43|50)P6US|55DP60)' device: 'tv' - - regex: '(TLE821L)(?:[);/ ]|$)' - model: '$1 4G LTE' - device: 'tablet' - - regex: '(TLE722G)(?:[);/ ]|$)' model: '$1' - device: 'tablet' - - regex: 'Philips, BDP([0-9]{4})' - model: 'Blu-ray Player (BDP$1)' - device: 'tv' - - regex: '(NETTV/[0-9\.]{5})' - model: 'NetTV Series' + +# JVC +JVC: + regex: 'JVC[;,]|AV-10NT310' + device: 'tv' + models: + - regex: 'JVC[;,](32D1290)' + model: '$1' + - regex: 'JVC, ([a-z0-9_ \-]+), (?:wired|wireless)' + model: '' device: 'tv' - - regex: 'Philips-FISIO ([a-z0-9]+)' - model: 'Fisio $1' - - regex: 'Philips[ _-]?([a-z0-9\-@]+)' + - regex: '(AV-10NT310)' + device: 'tablet' model: '$1' # phoneOne @@ -10615,35 +15349,59 @@ Primepad: # Pioneer Pioneer: - regex: 'Pioneer|.*; R1 Build|dvr700pi' + regex: 'Pioneer|.*; R1 Build|(?:dvr700pi|XDP-300R|F9212[AB])(?:[);/ ]|$)' device: 'smartphone' models: - regex: '.*; R1 Build' model: 'R1' device: 'tablet' + - regex: 'dvr700pi' + model: 'DVR700PI 7.0"' + device: 'tablet' + - regex: '(XDP-300R)' + device: 'portable media player' + model: '$1' + - regex: '(F9212[AB])' + device: 'car browser' + model: '$1' + - regex: 'BDP-160' + device: 'tv' + model: 'BDP-160' + - regex: 'Pioneer, ?([a-z0-9_ \-]+), ?(?:wired|wireless)' + device: 'tv' + model: '' - regex: 'Pioneer[ _-]?([^;/]+) Build' model: '$1' - regex: 'Pioneer[ _-]?([^;/)]+)(?:[;/)]|$)' model: '$1' - - regex: 'dvr700pi' - model: 'DVR700PI 7.0"' - device: 'tablet' # Pixus Pixus: - regex: 'Pixus|(Ride[_ ][34]G|Play[ _]Three[ _]v(?:[24].0|3.1))(?:[);/ ]|$)' + regex: 'Pixus|(hiPower|Touch_7_3G|Ride[_ ][34]G|Play[ _]Three[ _]v(?:[234].0|3.1))(?:[);/ ]|$)' device: 'tablet' models: - regex: 'Ride[_ ]([34])G' model: 'Ride $1G' - - regex: 'Play[ _]Three[ _]v([24].0|3.1)' + - regex: 'Play[ _]Three[ _]v([234].0|3.1)' model: 'Play Three v$1' - regex: 'Play Two' model: 'Play Two' - - regex: 'Touch 7 3G' + - regex: 'Play Five' + model: 'Play Five' + - regex: 'hiPower' + model: 'hiPower' + - regex: 'Pixus[ _]Sprint' + model: 'Sprint' + - regex: '(?:Pixus_)?Touch[ _]7[ _]3G' model: 'Touch 7 3G' - regex: 'Pixus[ _]hiMax' model: 'HiMax 9.6"' + - regex: 'Pixus[ _]Blast' + model: 'Blast 10.1"' + - regex: 'Pixus[ _]Joker' + model: 'Joker 10.1"' + - regex: 'Pixus Blaze 10.1 3G' + model: 'Blaze 10.1" 3G' - regex: 'Raze' model: 'Raze' @@ -10667,6 +15425,22 @@ PULID: - regex: 'PULID[ _]([a-z0-9_]+)\)' model: '$1' +# Purism (https://puri.sm/) +Purism: + regex: 'Librem 5' + device: 'smartphone' + models: + - regex: 'Librem 5' + model: 'Librem 5' + +# Point Mobile (https://pointmobile.com/) +'Point Mobile': + regex: 'PM80' + device: 'peripheral' + models: + - regex: 'PM80' + model: 'PM80' + # Point of View 'Point of View': regex: 'POV_TV|POV_TAB|MOB-5045' @@ -10719,53 +15493,102 @@ PPTV: # ProScan ProScan: - regex: 'PLT([^;/]+) Build' + regex: 'PLT([^;/]+) Build|PLT(?:777[45]|9774|1074)G(?:[);/ ]|$)' device: 'tablet' - model: 'PLT$1' + models: + - regex: 'PLT([^;/]+) Build' + model: 'PLT$1' + - regex: 'PLT(777[45]|9774|1074)G' + model: 'PLT$1G' -# RCA Tablets +# RCA Tablets (RCA) (www.rca.com) 'RCA Tablets': - regex: 'RCT([^;/]+) Build|RCA RLTP4028' + regex: 'RCT([^;/]+) Build|RCA RLTP4028|RC7T3G21|RCT6B06P23|RCT6613W23P|RCT6513W87|RCT6973W43(?:MD)?|RCT6703W12|RCT(?:6A06P22|6603W47M7|6303W87(?:DK|M)|6773W22B|6203W46L|6873W42M|6K03W13|6876Q22N|6A06Q22)' device: 'smartphone' models: - regex: 'RCA RLTP4028' model: 'RLTP4028' - - regex: 'RCT([^;/]+) Build' + - regex: 'RCT6513W87' + device: 'tablet' + model: 'Galileo Pro 11.5"' + - regex: 'RCT6873W42M|RCT6876Q22N?' + device: 'tablet' + model: 'Voyager 7.0"' + - regex: 'RCT6973W43(?:MD)?' + device: 'tablet' + model: 'Voyager III 7.0"' + - regex: 'RCT6773W22B' + device: 'tablet' + model: 'Voyager II 7.0"' + - regex: 'RCT6703W12|RCT6B06P23' + device: 'tablet' + model: 'Atlas 10.0"' + - regex: 'RCT6203W46L' + device: 'tablet' + model: 'Pro 10 Edition II' + - regex: 'RCT6A06P22' + device: 'tablet' + model: 'Endeavor 10.0" HD' + - regex: 'RCT(?:6303W87(?:DK|M)|6K03W13)' + device: 'tablet' + model: 'Viking Pro 10.0"' + - regex: 'RCT6603W47M7' + device: 'tablet' + model: 'Viking II 10.0"' + - regex: 'RCT6613W23P' + device: 'tablet' + model: 'Delta Pro 11.6"' + - regex: 'RCT([^;/)]+)(?: Build|[;)])' device: 'tablet' model: 'RCT$1' + - regex: 'RC([^;/)]+)(?: Build|[;)])' + device: 'tablet' + model: 'RC$1' # Readboy Readboy: regex: 'Readboy[ _-]' device: 'tablet' models: - - regex: 'Readboy[ _-]([^;/]+) Build' - model: '$1' - - regex: 'Readboy[ _-]([^;/]+)(?:[;/)]|$)' + - regex: 'Readboy[ _-]C18Max' + model: 'C18 Max' + - regex: 'Readboy[ _-]C(\d+)Pro' + model: 'C$1 Pro' + - regex: 'Readboy[ _-]([^;/)]+)(?: Build|[;)])' model: '$1' # Roku Roku: - regex: 'Roku/DVP' + regex: 'Roku(?:OS)?/(?:DVP|Pluto)?-?|QSP; Roku' device: 'tv' - model: 'Digital Video Player' + models: + - regex: '3930X' + model: 'Express' + - regex: '' + model: 'Digital Video Player' -# Rokit +# Rokit (rokitphones.com) Rokit: - regex: 'IO Pro' + regex: 'IO (?:Pro|3D|Light)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'IO Pro' model: 'IO Pro' + - regex: 'IO Light' + model: 'IO Light' + - regex: 'IO 3D' + model: 'IO 3D' -# Rombica +# Rombica (rumbica.ru) Rombica: - regex: '(Rombica|SSQ-A0500)(?:[);/ ]|$)' + regex: 'Rombica[_ ]|(SSQ-A0500|Smart Box v[0-9]+|Smart Box (?:[ADBXZ]1|[GDFQ]2|A3|H4))(?:[);/ ]|$)' device: 'tv' models: - regex: 'SSQ-A0500(?:[);/ ]|$)' model: 'Smart Stick 4K' - - regex: '(Infinity K8|Smart Box (?:v005|Quad|Ultra HD v002|4K V001))(?:[);/ ]|$)' + - regex: '(?:Rombica[_ ])?Cinema4K_v01' + model: 'Cinema 4K v01' + - regex: '(Infinity K8|Smart Box (?:v00[3-9]|Quad|Ultra HD v002|4K V001|[ADBXZ]1|[GDFQ]2|A3|H4)|TV (?:Ultima|Fly))(?:[);/ ]|$)' model: '$1' # Rover @@ -10774,16 +15597,18 @@ Rover: device: 'feature phone' model: '$1' -# RoverPad +# RoverPad or Rover Pad RoverPad: - regex: '(RoverPad|RoverPhone)(?:[);/ ]|$)' + regex: '(?:Rover[ ]?Pad|RoverPhone|Sky 7.85 3G|Pro_Q(?:8|10)_LTE)(?:[);/ ]|$)' device: 'tablet' models: - regex: 'RoverPhone(?:[);/ ]|$)' model: '' device: 'smartphone' - - regex: 'RoverPad sky 7.85(?:[);/ ]|$)' - model: 'Sky 7.85' + - regex: 'Pro_Q(8|10)_LTE(?:[);/ ]|$)' + model: 'Pro Q$1 LTE' + - regex: '(?:Rover[ ]?Pad)?sky 7.85(?: 3G)?(?:[);/ ]|$)' + model: 'Sky 7.85" 3G' - regex: 'RoverPad (10.4|Air S70|9.7 3G|Sky 9.7|3W A73|3W7|3WT70|3W9.4)(?:[);/ ]|$)' model: '$1' @@ -10795,34 +15620,53 @@ Roadrover: # RT Project RT Project: - regex: 'Shock 5' + regex: 'Shock ?(?:5|5\.5)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Shock ?(5|5\.5)(?:[);/ ]|$)' + model: 'Shock $1' + +# S-TELL +S-TELL: + regex: 'S-TELL|(?:M630|M55[78]|P760|M555i)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Shock 5' - model: 'Shock 5' + - regex: '(P760)(?:[);/ ]|$)' + model: '$1' + - regex: '(?:S-TELL[ _])?M([0-9]{3}|555i)(?:[);/ ]|$)' + model: 'M$1' # Safaricom Safaricom: - regex: 'NEON_RAY' + regex: 'NEON[_ ]RAY' device: 'smartphone' models: + - regex: 'NEON_RAY_PRO' + model: 'Neon Ray Pro' - regex: 'NEON_RAY' model: 'Neon Ray' - + - regex: 'NEON RAY 2' + model: 'Neon Ray 2' # Santin Santin: - regex: '(?:SANTIN|BiTBiZ_V58|ACTOMA ACE|DREAMPLUS03A|Candy U7 Pro)[);/_ ]' + regex: 'SANTIN|(?:BiTBiZ_V58|ACTOMA ACE|DREAMPLUS03A|Candy U7 Pro|GAAMII|RS635H)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'BiTBiZ_V58(?:[);/ ]|$)' model: 'BiTBiZ V58' + - regex: 'GAAMII G1(?:[);/ ]|$)' + model: 'GAAMII G1' + - regex: 'GAAMII(?:[);/ ]|$)' + model: 'GAAMII' - regex: 'Candy U7 Pro(?:[);/ ]|$)' model: 'Candy U7 Pro' - regex: 'DREAMPLUS03A(?:[);/ ]|$)' model: 'Dream Plus 03A' - regex: 'GreenOrange(?:[);/ ]|$)' model: 'Green Orange' + - regex: 'CLASSONE(?:[);/ ]|$)' + model: 'Class One' - regex: 'halove(?:[);/ ]|$)' model: 'Halove' - regex: 'ACTOMA ACE(?:[);/ ]|$)' @@ -10835,32 +15679,40 @@ Santin: model: 'Galaz' - regex: 'NEWDUN(?:[);/ ]|$)' model: 'Newdun' - - regex: 'SANTIN[ _][#]?(Dante|Candy U7|Armor|YSL-Y7|ANT.W|N[13]|JS|S6|V9)(?:[);/ ]|$)' + - regex: 'SANTIN[ _][#]?(Dante|Candy U7|Armor|YSL-Y7|ANT.W|N[13]|JS|S6|V9(?:[ _]Pro)?|Life Shine|ovvi|D|11 XS Max|SHUGUO)(?:[);/ ]|$)' + model: '$1' + - regex: '(RS635H)(?:[);/ ]|$)' + model: '$1' + - regex: 'Santin[ _#]?([^;/)]+)(?: Build|[;)])' model: '$1' # Siemens Siemens: - regex: 'SIEMENS|SIE-|portalmmm/2\.0 SI|S55|SL45i' + regex: 'SIEMENS|SIE-|portalmmm/2\.0 SI|(?:S55(?! Nova)|SL45i)(?:[);/ ]|$)' device: 'smartphone' models: + - regex: '(?:SIE-)?(S[56]5|S40|C45|ME45|SLIK)(?:[);/ ]|$)' + device: 'feature phone' + model: '$1' + - regex: 'SIEMENS[ \-]([a-z0-9]+)' model: '$1' - regex: 'SIE(?:MENS )?[\-]?([a-z0-9]+)' model: '$1' - - regex: '(?:SIE-)?(S55|SL45i)' + - regex: '(?:SIE-)?(SL45i)' model: '$1' - regex: 'portalmmm/2.0 (SI[a-z0-9]+)' model: '$1' # Soundmax Soundmax: - regex: '((?:SM-LED32M(?:11|04)S)(?:_-Ver01)?|SM-LED40M04S)(?:[);/ ]|$)' - device: 'tv' - model: '$1' + regex: '((?:SM-LED32M(?:11|04)S)(?:_-Ver01)?|SM-LED40M04S)(?:[);/ ]|$)' + device: 'tv' + model: '$1' # Samsung Samsung: - regex: 'SAMSUNG(?! ?Browser)|Maple |SC-(?:02[CHMKJG]|03[JLK]|04[ELJ]|05G|52A|01[HFGLKM])|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|(?<!GOG|GOG )Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|vollo Vi86(?:[);/ ]|$)|(?:OTV-)?SMT-E5015|ISW11SC|SCV4[0-35678]|SCV3[1-9]|40[34]SC|SCL22|SCG0[126]|SCT21' + regex: 'SAMSUNG(?! ?Browser)|lineage_j5y17lte|FamilyHub|Maple (?!III)|Gear Live|(?:SEC_)?SC-(?:001|01[FGHKLM]|02[CGHJKLMF]|03[EFJKL]|04[EFJL]|05[GL]|(?:4[12]|5[1-4])A|5[1-5]B)|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|(?<!GOG|GOG )Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|vollo Vi86(?:[);/ ]|$)|(?:OTV-)?SMT-E5015|ISW11SC|40[34]SC|SC(?:V3[1-9]|V4[0-9]|51Aa|-56B|T21|G0[1-9]|G1[012]|L2[234])(?:-[uj])?(?:[);/ ]|$)' device: 'smartphone' models: # explicit tv models @@ -10873,454 +15725,630 @@ Samsung: - regex: 'Maple ' device: 'tv' model: '' + - regex: 'Samsung, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '$1' # explicit tablet models - regex: '(?:SAMSUNG-)?(?:GT-)?N5100' device: 'tablet' - model: 'GALAXY Note 8.0"' + model: 'Galaxy Note 8.0"' - regex: '(?:SAMSUNG-)?SM-T677(?:[ATV]|N[KL])?(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY View 18.4" LTE' + model: 'Galaxy View 18.4" LTE' - regex: '(?:SAMSUNG-)?SM-T670(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY View 18.4" WiFi' + model: 'Galaxy View 18.4" WiFi' - regex: '(?:SAMSUNG-)?(?:GT-)?N5110' device: 'tablet' - model: 'GALAXY Note 8.0" WiFi' + model: 'Galaxy Note 8.0" WiFi' - regex: '(?:SAMSUNG-)?GT-N5120' device: 'tablet' - model: 'GALAXY Note 8.0" LTE' - - regex: '(?:SAMSUNG-)?GT-N8000' + model: 'Galaxy Note 8.0" LTE' + - regex: '(?:SAMSUNG-)?(?:GT|SM)-N8000' device: 'tablet' - model: 'GALAXY Note 10.1"' + model: 'Galaxy Note 10.1"' - regex: '(?:SAMSUNG-)?GT-N8010' device: 'tablet' - model: 'GALAXY Note 10.1" WiFi' + model: 'Galaxy Note 10.1" WiFi' - regex: '(?:SAMSUNG-)?GT-N8020' device: 'tablet' - model: 'GALAXY Note 10.1" LTE' + model: 'Galaxy Note 10.1" LTE' - regex: '(?:SAMSUNG-)?GT-P1000M?|SCH-I800' device: 'tablet' - model: 'GALAXY Tab' + model: 'Galaxy Tab' - regex: '(?:SAMSUNG-)?GT-P3100B?' device: 'tablet' - model: 'GALAXY Tab 2 7"' + model: 'Galaxy Tab 2 7"' - regex: '(?:SAMSUNG-)?GT-P311[03]' device: 'tablet' - model: 'GALAXY Tab 2 7" WiFi' + model: 'Galaxy Tab 2 7" WiFi' - regex: '(?:SAMSUNG-)?GT-P5100|SCH-I915' device: 'tablet' - model: 'GALAXY Tab 2 10.1"' + model: 'Galaxy Tab 2 10.1"' - regex: '(?:SAMSUNG-)?GT-P511[03]' device: 'tablet' - model: 'GALAXY Tab 2 10.1" WiFi' + model: 'Galaxy Tab 2 10.1" WiFi' - regex: '(?:SAMSUNG-)?SM-T217T' device: 'tablet' - model: 'GALAXY Tab 3 7.0" 4G' + model: 'Galaxy Tab 3 7.0" 4G' - regex: '(?:SAMSUNG-)?GT-P5200' device: 'tablet' - model: 'GALAXY Tab 3 10.1"' + model: 'Galaxy Tab 3 10.1"' - regex: '(?:SAMSUNG-)?GT-P5210' device: 'tablet' - model: 'GALAXY Tab 3 10.1" WiFi' + model: 'Galaxy Tab 3 10.1" WiFi' - regex: '(?:SAMSUNG-)?GT-P5220' device: 'tablet' - model: 'GALAXY Tab 3 10.1" LTE' + model: 'Galaxy Tab 3 10.1" LTE' - regex: '(?:SAMSUNG-)?GT-P6200' device: 'tablet' - model: 'GALAXY Tab 7" Plus' + model: 'Galaxy Tab 7" Plus' - regex: '(?:SAMSUNG-)?GT-P6201' device: 'tablet' - model: 'GALAXY Tab 7" Plus N' + model: 'Galaxy Tab 7" Plus N' - regex: '(?:SAMSUNG-)?GT-P6810' device: 'tablet' - model: 'GALAXY Tab 7.7"' + model: 'Galaxy Tab 7.7"' - regex: '(?:SAMSUNG-)?GT-P7100' device: 'tablet' - model: 'GALAXY Tab 10.1v' + model: 'Galaxy Tab 10.1v' - regex: '(?:SAMSUNG-)?GT-P75[01]0' device: 'tablet' - model: 'GALAXY Tab 10.1"' + model: 'Galaxy Tab 10.1"' - regex: '(?:SAMSUNG-)?SM-P600' device: 'tablet' - model: 'GALAXY Note 10.1" 2014 Edition WiFi' + model: 'Galaxy Note 10.1" 2014 Edition WiFi' - regex: '(?:SAMSUNG-)?SM-P60[12]' device: 'tablet' - model: 'GALAXY Note 10.1" 2014 Edition' + model: 'Galaxy Note 10.1" 2014 Edition' - regex: '(?:SAMSUNG-)?SM-(?:P605|P607T)' device: 'tablet' - model: 'GALAXY Note 10.1" 2014 Edition LTE' + model: 'Galaxy Note 10.1" 2014 Edition LTE' - regex: '(?:SAMSUNG-)?SM-P900' device: 'tablet' - model: 'GALAXY NotePRO 12.2" WiFi' + model: 'Galaxy NotePRO 12.2" WiFi' - regex: '(?:SAMSUNG-)?SM-P901' device: 'tablet' - model: 'GALAXY NotePRO 12.2"' + model: 'Galaxy NotePRO 12.2"' - regex: '(?:SAMSUNG-)?SM-P905' device: 'tablet' - model: 'GALAXY NotePRO 12.2" LTE' - - regex: '(?:SAMSUNG-)?SM-P587(?:[);/ ]|$)' + model: 'Galaxy NotePRO 12.2" LTE' + - regex: '(?:SAMSUNG-)?SM-(?:P587|P588C)(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab A 10.1" with S Pen (2016) LTE' + model: 'Galaxy Tab A 10.1" with S Pen (2016) LTE' + - regex: '(?:SAMSUNG-)?SM-P583(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab A 10.1" with S Pen (2016) WiFi' - regex: '(?:SAMSUNG-)?SM-P205(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab A 8.0" with S Pen (2019) LTE' + model: 'Galaxy Tab A 8.0" with S Pen (2019) LTE' - regex: '(?:SAMSUNG-)?SM-P200(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab A 8.0" with S Pen (2019) WiFi' + model: 'Galaxy Tab A 8.0" with S Pen (2019) WiFi' + - regex: '(?:SAMSUNG-)?SM-T307U(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab A 8.4" (2020) LTE' + - regex: '(?:SAMSUNG-)?SM-T297' + device: 'tablet' + model: 'Galaxy Tab A 8.0" (2019) LTE' + - regex: '(?:SAMSUNG-)?SM-(?:T505[CN]?|T507)(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab A7 10.4" (2020) LTE' + - regex: '(?:SAMSUNG-)?SM-T500(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab A7 10.4" (2020) WiFi' + - regex: '(?:SAMSUNG-)?SM-T225' + device: 'tablet' + model: 'Galaxy Tab A7 Lite 8.7" (2021) LTE' + - regex: '(?:SAMSUNG-)?SM-T220(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab A7 Lite 8.7" (2021) WiFi' - regex: '(?:SAMSUNG-)?SM-T11[03]' device: 'tablet' - model: 'GALAXY Tab 3 7.0" Lite WiFi' + model: 'Galaxy Tab 3 Lite 7.0" WiFi' + - regex: '(?:SAMSUNG-)?SM-X205' + device: 'tablet' + model: 'Galaxy Tab A8 10.5" LTE' + - regex: '(?:SAMSUNG-)?SM-X200' + device: 'tablet' + model: 'Galaxy Tab A8 10.5" WiFi' - regex: '(?:SAMSUNG-)?SM-(?:T830[X]?|T837R4)(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab S4 10.5" WiFi' - - regex: '(?:SAMSUNG-)?SM-(?:T835[CN]?|T837[VTA])(?:[);/ ]|$)' + model: 'Galaxy Tab S4 10.5" WiFi' + - regex: '(?:SAMSUNG-)?SM-T837P(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab S4 10.5" with S Pen' + - regex: '(?:SAMSUNG-)?SM-(?:T835[CN]?|T837[VTA]?)(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab S4 10.5"' - - regex: '(?:SAMSUNG-)?SM-(?:T725[N]?|T720X|T727[AV])(?:[);/ ]|$)' + model: 'Galaxy Tab S4 10.5"' + - regex: '(?:SAMSUNG-)?SM-(?:T725[CN]?|T720X|T727(?:R4|[AUV])?)(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab S5e 10.5"' + model: 'Galaxy Tab S5e 10.5"' - regex: '(?:SAMSUNG-)?SM-T720(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab S5e 10.5" WiFi' + model: 'Galaxy Tab S5e 10.5" WiFi' - regex: '(?:SAMSUNG-)?SM-T865N?(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab S6 10.5"' - - regex: '(?:SAMSUNG-)?SM-T867[V]?(?:[);/ ]|$)' + model: 'Galaxy Tab S6 10.5"' + - regex: '(?:SAMSUNG-)?SM-T867(?:R4|[VU])?(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab S6 10.5" LTE' - - regex: '(?:SAMSUNG-)?SM-P615(?:[);/ ]|$)' + model: 'Galaxy Tab S6 10.5" LTE' + - regex: '(?:SAMSUNG-)?SM-(?:P615[CN]?|P617)(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab S6 10.4" Lite' - - regex: '(?:SAMSUNG-)?SM-P610(?:[);/ ]|$)' + model: 'Galaxy Tab S6 Lite 10.4"' + - regex: '(?:SAMSUNG-)?SM-P610X?(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab S6 10.4" Lite WiFi' - - regex: '(?:SAMSUNG-)?SM-T860(?:[);/ ]|$)' + model: 'Galaxy Tab S6 Lite 10.4" WiFi' + - regex: '(?:SAMSUNG-)?SM-T860X?(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab S6 10.5" WiFi' - - regex: '(?:SAMSUNG-)?SM-T111[M]?(?:[);/ ]|$)' + model: 'Galaxy Tab S6 10.5" WiFi' + - regex: '(?:SAMSUNG-)?SM-T866N(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab 3 7.0" Lite' + model: 'Galaxy Tab S6 10.5" 5G' + - regex: '(?:SAMSUNG-)?SM-T111' + device: 'tablet' + model: 'Galaxy Tab 3 Lite 7.0"' - regex: '(?:SAMSUNG-)?SM-T116(?:BU|NU|NY)?' device: 'tablet' - model: 'GALAXY Tab 3 V' + model: 'Galaxy Tab 3 V' - regex: '(?:SAMSUNG-)?SM-(?:T2105|T212)' device: 'tablet' - model: 'GALAXY Tab 3 7.0" Kids' + model: 'Galaxy Tab 3 7.0" Kids' - regex: '(?:SAMSUNG-)?SM-T210R?' device: 'tablet' - model: 'GALAXY Tab 3 7.0" WiFi' + model: 'Galaxy Tab 3 7.0" WiFi' - regex: '(?:SAMSUNG-)?SM-T21(?:[15]|7[AS])' device: 'tablet' - model: 'GALAXY Tab 3 7.0"' + model: 'Galaxy Tab 3 7.0"' - regex: '(?:SAMSUNG-)?SM-T230(?:NU)?' device: 'tablet' - model: 'GALAXY Tab 4 7.0" WiFi' + model: 'Galaxy Tab 4 7.0" WiFi' - regex: '(?:SAMSUNG-)?SM-T23[15]|403SC' device: 'tablet' - model: 'GALAXY Tab 4 7.0" 3G' - - regex: '(?:SAMSUNG-)?SM-(?:T239|T237P)' + model: 'Galaxy Tab 4 7.0" 3G' + - regex: '(?:SAMSUNG-)?SM-(?:T239|T237[PV])' + device: 'tablet' + model: 'Galaxy Tab 4 7.0" LTE' + - regex: '(?:SAMSUNG-)?SM-T232(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab 4 7.0" LTE' + model: 'Galaxy Tab 4 7.0" WiFi + 3G' - regex: '(?:SAMSUNG-)?SM-T310' device: 'tablet' - model: 'GALAXY Tab 3 8.0" WiFi' + model: 'Galaxy Tab 3 8.0" WiFi' + - regex: '(?:SAMSUNG-)?SM-T312' + device: 'tablet' + model: 'Galaxy Tab 3 8.0" 3G' - regex: '(?:SAMSUNG-)?SM-T311' device: 'tablet' - model: 'GALAXY Tab 3 8.0"' + model: 'Galaxy Tab 3 8.0"' - regex: '(?:SAMSUNG-)?SM-T315' device: 'tablet' - model: 'GALAXY Tab 3 8.0" LTE' + model: 'Galaxy Tab 3 8.0" LTE' - regex: '(?:SAMSUNG-)?SM-T330' device: 'tablet' - model: 'GALAXY Tab 4 8.0" WiFi' + model: 'Galaxy Tab 4 8.0" WiFi' - regex: '(?:SAMSUNG-)?SM-(?:T33[215]|T337[AVT])' device: 'tablet' - model: 'GALAXY Tab 4 8.0" LTE' + model: 'Galaxy Tab 4 8.0" LTE' - regex: '(?:SAMSUNG-)?SM-T520' device: 'tablet' - model: 'GALAXY TabPRO 10.1" WiFi' + model: 'Galaxy TabPRO 10.1" WiFi' - regex: '(?:SAMSUNG-)?SM-(?:T53[15]|T537[AV])' device: 'tablet' - model: 'GALAXY Tab 4 10.1" LTE' + model: 'Galaxy Tab 4 10.1" LTE' - regex: '(?:SAMSUNG-)?SM-T536(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab 4 10.1" Advanced' + model: 'Galaxy Tab 4 10.1" Advanced' + - regex: '(?:SAMSUNG-)?SM-T532(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab 4 10.1"' - regex: '(?:SAMSUNG-)?SM-T320' device: 'tablet' - model: 'GALAXY TabPRO 8.4" WiFi' + model: 'Galaxy TabPRO 8.4" WiFi' - regex: '(?:SAMSUNG-)?SM-T325' device: 'tablet' - model: 'GALAXY TabPRO 8.4" LTE' + model: 'Galaxy TabPRO 8.4" LTE' - regex: '(?:SAMSUNG-)?SM-T525' device: 'tablet' - model: 'GALAXY TabPRO 10.1" LTE' + model: 'Galaxy TabPRO 10.1" LTE' - regex: '(?:SAMSUNG-)?SM-(?:T530(?:NU)?|T533)' device: 'tablet' - model: 'GALAXY Tab 4 10.1" WiFi' + model: 'Galaxy Tab 4 10.1" WiFi' - regex: '(?:SAMSUNG-)?SM-T700' device: 'tablet' - model: 'GALAXY Tab S 8.4" WiFi' - - regex: '(?:SAMSUNG-)?SM-(?:T705|T707A)' + model: 'Galaxy Tab S 8.4" WiFi' + - regex: '(?:SAMSUNG-)?SM-(?:T705|T707[AV])' device: 'tablet' - model: 'GALAXY Tab S 8.4" LTE' + model: 'Galaxy Tab S 8.4" LTE' - regex: '(?:SAMSUNG-)?SM-T800' device: 'tablet' - model: 'GALAXY Tab S 10.5" WiFi' - - regex: '(?:SAMSUNG-)?(?:SM-(?:T805|T807[VP]?)|SCT21)' + model: 'Galaxy Tab S 10.5" WiFi' + - regex: '(?:SAMSUNG-)?(?:SM-(?:T805|T807[PV]?)|SCT21)' device: 'tablet' - model: 'GALAXY Tab S 10.5" LTE' + model: 'Galaxy Tab S 10.5" LTE' - regex: '(?:SAMSUNG-)?SM-(?:T813|T810)' device: 'tablet' - model: 'GALAXY Tab S2 9.7" WiFi' - - regex: '(?:SAMSUNG-)?SM-(?:T719[YC]?|T715(?:[YC]|N0)?)(?:[);/ ]|$)' + model: 'Galaxy Tab S2 9.7" WiFi' + - regex: '(?:SAMSUNG-)?SM-(?:T719[CY]?|T715(?:N0|[CY])?)(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab S2 8.0" LTE' + model: 'Galaxy Tab S2 8.0" LTE' - regex: '(?:SAMSUNG-)?SM-(?:T71[03]|T710X)(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab S2 8.0" WiFi' - - regex: '(?:SAMSUNG-)?SM-(?:T815|T817[ATW]?|T818[ATW]|T819[Y]?)' + model: 'Galaxy Tab S2 8.0" WiFi' + - regex: '(?:SAMSUNG-)?SM-(?:T815|T817[ATW]?|T818[ATVW]?|T819[Y]?)' device: 'tablet' - model: 'GALAXY Tab S2 9.7" LTE' + model: 'Galaxy Tab S2 9.7" LTE' - regex: '(?:SAMSUNG-)?SM-T820' device: 'tablet' - model: 'GALAXY Tab S3 9.7" WiFi' + model: 'Galaxy Tab S3 9.7" WiFi' - regex: '(?:SAMSUNG-)?SM-T82[57]' device: 'tablet' - model: 'GALAXY Tab S3 9.7" LTE' + model: 'Galaxy Tab S3 9.7" LTE' + - regex: '(?:SAMSUNG-)?SM-T975N?(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab S7+ 12.4" LTE' + - regex: '(?:SAMSUNG-)?SM-T970(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab S7+ 12.4" WiFi' + - regex: '(?:SAMSUNG-)?SM-(?:T976[BN]|T978U)(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab S7+ 12.4" 5G' + - regex: '(?:SAMSUNG-)?SM-T870(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab S7 11.0" WiFi' + - regex: '(?:SAMSUNG-)?SM-T875N?(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab S7 11.0" LTE' + - regex: '(?:SAMSUNG-)?SM-T878U(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab S7 11.0" 5G' + - regex: '(?:SAMSUNG-)?SM-T735' + device: 'tablet' + model: 'Galaxy Tab S7 FE 12.4" LTE' + - regex: '(?:SAMSUNG-)?SM-T736' + device: 'tablet' + model: 'Galaxy Tab S7 FE 12.4" 5G' + - regex: '(?:SAMSUNG-)?SM-T733' + device: 'tablet' + model: 'Galaxy Tab S7 FE 12.4" WiFi' - regex: '(?:SAMSUNG-)?SM-T900' device: 'tablet' - model: 'GALAXY TabPRO 12.2" WiFi' + model: 'Galaxy TabPRO 12.2" WiFi' - regex: '(?:SAMSUNG-)?SM-T280' device: 'tablet' - model: 'GALAXY Tab A 7.0" WiFi' + model: 'Galaxy Tab A 7.0" WiFi' - regex: '(?:SAMSUNG-)?SM-T285' device: 'tablet' - model: 'GALAXY Tab A 7.0" LTE' + model: 'Galaxy Tab A 7.0" LTE' - regex: '(?:SAMSUNG-)?SM-T3[58]0' device: 'tablet' - model: 'GALAXY Tab A 8.0" WiFi' + model: 'Galaxy Tab A 8.0" WiFi' - regex: '(?:SAMSUNG-)?SM-(?:P350|T3[58]5|T357[TW])' device: 'tablet' - model: 'GALAXY Tab A 8.0" LTE' - - regex: '(?:SAMSUNG-)?SM-T387(?:R4|VK|AA|[WVT])' + model: 'Galaxy Tab A 8.0" LTE' + - regex: '(?:SAMSUNG-)?SM-T387(?:AA|R4|VK|[TVW])' device: 'tablet' - model: 'GALAXY Tab A 8.0" LTE (2018)' + model: 'Galaxy Tab A 8.0" LTE (2018)' - regex: '(?:SAMSUNG-)?SM-T295' device: 'tablet' - model: 'GALAXY Tab A 8.0" LTE (2019)' + model: 'Galaxy Tab A 8.0" LTE (2019)' - regex: '(?:SAMSUNG-)?SM-T290' device: 'tablet' - model: 'GALAXY Tab A 8.0" WiFi (2019)' + model: 'Galaxy Tab A 8.0" WiFi (2019)' - regex: '(?:SAMSUNG-)?SM-(?:P355([MY])?|T550)' device: 'tablet' - model: 'GALAXY Tab A 9.7" WiFi' + model: 'Galaxy Tab A 9.7" WiFi' - regex: '(?:SAMSUNG-)?SM-(?:P550|P555(M)?|T555)' device: 'tablet' - model: 'GALAXY Tab A 9.7" LTE' + model: 'Galaxy Tab A 9.7" LTE' - regex: '(?:SAMSUNG-)?SM-(?:T58[05]|P58[05])' device: 'tablet' - model: 'GALAXY Tab A 10.1" WiFi (2016)' + model: 'Galaxy Tab A 10.1" WiFi (2016)' - regex: '(?:SAMSUNG-)?SM-T587[P]?' device: 'tablet' - model: 'GALAXY Tab A 10.1" LTE (2016)' + model: 'Galaxy Tab A 10.1" LTE (2016)' - regex: '(?:SAMSUNG-)?SM-T59[057]' device: 'tablet' - model: 'GALAXY Tab A 10.5" LTE (2018)' - - regex: '(?:SAMSUNG-)?SM-T51[05]' + model: 'Galaxy Tab A 10.5" LTE (2018)' + - regex: '(?:SAMSUNG-)?SM-T51(?:7P|[057])' device: 'tablet' - model: 'GALAXY Tab A 10.1" (2019)' + model: 'Galaxy Tab A 10.1" (2019)' - regex: '(?:SAMSUNG-)?SM-(?:T37[57]|T378[KLSV])' device: 'tablet' - model: 'GALAXY Tab E 8.0"' + model: 'Galaxy Tab E 8.0"' - regex: '(?:SAMSUNG-)?SM-T56[02]' device: 'tablet' - model: 'GALAXY Tab E 9.6" WiFi' + model: 'Galaxy Tab E 9.6" WiFi' - regex: '(?:SAMSUNG-)?SM-T561' device: 'tablet' - model: 'GALAXY Tab E 9.6" 3G' + model: 'Galaxy Tab E 9.6" 3G' - regex: '(?:SAMSUNG-)?SM-T567V' device: 'tablet' - model: 'GALAXY Tab E 9.6" 4G' - - regex: '(?:SAMSUNG-)?SM-T365(?:[);/ ]|$)' + model: 'Galaxy Tab E 9.6" 4G' + - regex: '(?:SAMSUNG-)?SM-T365(?:F0|[MY])?(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab Active 8.0"' + model: 'Galaxy Tab Active 8.0"' - regex: '(?:SAMSUNG-)?SM-T360(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab Active 8.0" WiFi' - - regex: '(?:SAMSUNG-)?SM-T39[057][U]?(?:[);/ ]|$)' + model: 'Galaxy Tab Active 8.0" WiFi' + - regex: '(?:SAMSUNG-)?SM-(?:T395[CN]?|T397U)(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab Active 2 8.0"' + - regex: '(?:SAMSUNG-)?SM-T390(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab Active 2 8.0" WiFi' + - regex: '(?:SAMSUNG-)?SM-(?:T575N?|T577U?)(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab Active 3 8.0"' + - regex: '(?:SAMSUNG-)?SM-T570(?:[);/ ]|$)' device: 'tablet' - model: 'GALAXY Tab Active 2 8.0"' - - regex: '(?:SAMSUNG-)?SM-P902(?:[);/ ]|$)' + model: 'Galaxy Tab Active 3 8.0" WiFi' + - regex: '(?:SAMSUNG-)?SM-(?:T545|T547U?)(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab Active Pro 10.1"' + - regex: '(?:SAMSUNG-)?SM-T540(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Tab Active Pro 10.1" WiFi' + - regex: '(?:SAMSUNG-)?SM-(?:P902|P907A)(?:[);/ ]|$)' + device: 'tablet' + model: 'Galaxy Note Pro 12.2"' + - regex: '(?:SAMSUNG[- ])?SM-T2519' + model: 'Galaxy Tab Q' device: 'tablet' - model: 'GALAXY Note Pro 12.2"' # explicit wearable models - - regex: '(?:SAMSUNG )?SM-R820' + - regex: 'SM-R820' + device: 'wearable' + model: 'Galaxy Watch Active 2 44mm' + - regex: 'SM-V7000' + device: 'wearable' + model: 'Galaxy Gear' + - regex: 'SM-R3500' + device: 'wearable' + model: 'Galaxy Gear Fit' + - regex: 'SM-R3800' + device: 'wearable' + model: 'Galaxy Gear 2' + - regex: 'SSM-R3810' + device: 'wearable' + model: 'Galaxy Gear 2 Neo' + - regex: 'SM-R825' + device: 'wearable' + model: 'Galaxy Watch Active 2 44mm LTE' + - regex: 'SM-R830' + device: 'wearable' + model: 'Galaxy Watch Active 2 40mm' + - regex: 'SM-R835' + device: 'wearable' + model: 'Galaxy Watch Active 2 40mm LTE' + - regex: 'SM-R800' + device: 'wearable' + model: 'Galaxy Watch 46mm' + - regex: 'SM-R805' + device: 'wearable' + model: 'Galaxy Watch 46mm LTE' + - regex: 'SM-R810' + device: 'wearable' + model: 'Galaxy Watch 42mm' + - regex: 'SM-R815' + device: 'wearable' + model: 'Galaxy Watch 42mm LTE' + - regex: 'SM-R500' + device: 'wearable' + model: 'Galaxy Watch Active' + - regex: 'SM-R600' + device: 'wearable' + model: 'Galaxy Gear Sport 43mm' + - regex: 'SM-R760' + device: 'wearable' + model: 'Galaxy Gear S3 Frontier 46mm' + - regex: 'SM-R750' + device: 'wearable' + model: 'Gear S 40mm' + - regex: 'SM-R732' + device: 'wearable' + model: 'Gear S2 42mm' + - regex: 'SM-R765' + device: 'wearable' + model: 'Galaxy Gear S3 Frontier 33mm' + - regex: 'SM-R770' + device: 'wearable' + model: 'Galaxy Gear S3 Classic 41mm' + - regex: 'SM-R845' + device: 'wearable' + model: 'Galaxy Watch 3 45mm LTE' + - regex: 'SM-R840' + device: 'wearable' + model: 'Galaxy Watch 3 45mm' + - regex: 'SM-R850' device: 'wearable' - model: 'GALAXY Watch Active 2' + model: 'Galaxy Watch 3 41mm' + - regex: 'SM-R855' + device: 'wearable' + model: 'Galaxy Watch 3 41mm 4G' + - regex: 'Gear Live' + device: 'wearable' + model: 'Gear Live' + + # smart fridge models + - regex: 'Family ?Hub' + device: 'peripheral' + model: 'Family Hub' # explicit smartphone models - - regex: '(?:SAMSUNG-)?SM-G850[AMSWYKLX]' - model: 'GALAXY Alpha' + - regex: '(?:SAMSUNG-)?SM-G850(?:8S|[AFKLMSWXY])' + model: 'Galaxy Alpha' - regex: '(?:SAMSUNG-)?GT-B5330' - model: 'GALAXY Chat' + model: 'Galaxy Chat' - regex: '(?:SAMSUNG-)?SM-A605K' - model: 'GALAXY Jean' + model: 'Galaxy Jean' - regex: '(?:SAMSUNG-)?SM-A202K' - model: 'GALAXY Jean 2' + model: 'Galaxy Jean 2' - regex: '(?:SAMSUNG-)?GT-B5510' - model: 'GALAXY Y Pro' + model: 'Galaxy Y Pro' - regex: '(?:SAMSUNG-)?GT-B5512' - model: 'GALAXY Y Pro Duos' + model: 'Galaxy Y Pro Duos' - regex: '(?:SAMSUNG-)?GT-B7510' - model: 'GALAXY Pro' + model: 'Galaxy Pro' - regex: '(?:SAMSUNG-)?GT-I5700' - model: 'GALAXY Spica' + model: 'Galaxy Spica' - regex: '(?:SAMSUNG-)?GT-I5801' - model: 'GALAXY Apollo' + model: 'Galaxy Apollo' - regex: '(?:SAMSUNG-)?GT-I5800' - model: 'GALAXY 3' + model: 'Galaxy 3' - regex: '(?:SAMSUNG-)?GT-I8000' model: 'Omnia II' - regex: '(?:SAMSUNG-)?(?:GT-I8150|SM-T255S)' - model: 'GALAXY W' + model: 'Galaxy W' - regex: 'SC-01H(?:[);/ ]|$)' - model: 'GALAXY Active Neo' + model: 'Galaxy Active Neo' - regex: '(?:SAMSUNG-)?GT-S5830' - model: 'GALAXY Ace' + model: 'Galaxy Ace' - regex: '(?:SAMSUNG-)?SM-(?:G357(?:FZ|M)|G310HN)' - model: 'GALAXY Ace Style' + model: 'Galaxy Ace Style' - regex: '(?:SAMSUNG-)?GT-I8160' - model: 'GALAXY Ace 2' + model: 'Galaxy Ace 2' - regex: '(?:SAMSUNG-)?SM-G313(?:HY|M[LUY]|[FM])' - model: 'GALAXY Ace 4' + model: 'Galaxy Ace 4' - regex: '(?:SAMSUNG-)?SM-G316M' - model: 'GALAXY Ace 4 Duos' + model: 'Galaxy Ace 4 Duos' - regex: '(?:SAMSUNG-)?SM-G313[HU]' - model: 'GALAXY Ace 4 Lite' - - regex: '(?:SAMSUNG-)?SM-G318(?:H|ML)(?:[);/ ]|$)' - model: 'GALAXY Ace 4 Neo' + model: 'Galaxy Ace 4 Lite' + - regex: '(?:SAMSUNG-)?SM-(?:G316U|G318(?:H|ML))(?:[);/ ]|$)' + model: 'Galaxy Ace 4 Neo' - regex: '(?:SAMSUNG-)?SM-G9100(?:[);/ ]|$)' - model: 'GALAXY S II' + model: 'Galaxy S II' - regex: '(?:SAMSUNG-)?SHV-E120S(?:[);/ ]|$)' - model: 'GALAXY S II HD LTE' + model: 'Galaxy S II HD LTE' - regex: '(?:SAMSUNG-)?GT-I8190' - model: 'GALAXY S III mini' + model: 'Galaxy S III mini' - regex: '(?:SAMSUNG-)?GT-I8200' - model: 'GALAXY S III mini Value Edition' + model: 'Galaxy S III mini Value Edition' - regex: '(?:SAMSUNG-)?GT-I826[02]' - model: 'GALAXY Core' + model: 'Galaxy Core' - regex: '(?:SAMSUNG-)?SM-G386W' - model: 'GALAXY Core LTE' + model: 'Galaxy Core LTE' + - regex: '(?:SAMSUNG-)?SM-G3589W' + model: 'Galaxy Core Lite LTE' - regex: '(?:SAMSUNG-)?GT-I8320' model: 'H1' - regex: '(?:SAMSUNG-)?GT-I85[23]0' - model: 'GALAXY Beam' + model: 'Galaxy Beam' - regex: '(?:SAMSUNG-)?SM-G3858' - model: 'GALAXY Beam 2' + model: 'Galaxy Beam 2' - regex: '(?:SAMSUNG-)?SM-G600S' - model: 'GALAXY Wide' + model: 'Galaxy Wide' - regex: '(?:SAMSUNG-)?GT-I855[028]' - model: 'GALAXY Win' + model: 'Galaxy Win' - regex: '(?:SAMSUNG-)?SM-G381[28]' - model: 'GALAXY Win Pro' + model: 'Galaxy Win Pro' - regex: '(?:SAMSUNG-)?GT-I8580' - model: 'GALAXY Core Advance' + model: 'Galaxy Core Advance' - regex: '(?:SAMSUNG-)?GT-I8730' - model: 'GALAXY Express' + model: 'Galaxy Express' - regex: '(?:SAMSUNG-)?SM-(?:E500(?:HQ|YZ|[0FHM])|S978L)' - model: 'GALAXY E5' - - regex: '(?:SAMSUNG-)?SM-E700(?:0|9|F|H|M)' - model: 'GALAXY E7' + model: 'Galaxy E5' + - regex: '(?:SAMSUNG-)?SM-E700[09FHM]' + model: 'Galaxy E7' - regex: '(?:SAMSUNG-)?GT-I90(?:00|08|18|88)' - model: 'GALAXY S' + model: 'Galaxy S' - regex: '(?:SAMSUNG-)?GT-I9001' - model: 'GALAXY S Plus' + model: 'Galaxy S Plus' - regex: '(?:SAMSUNG-)?GT-I9003' - model: 'GALAXY SL' + model: 'Galaxy SL' - regex: '(?:SAMSUNG-)?GT-I9010' - model: 'GALAXY S Giorgio Armani' + model: 'Galaxy S Giorgio Armani' - regex: '(?:SAMSUNG-)?GT-I9070' - model: 'GALAXY S Advance' + model: 'Galaxy S Advance' - regex: '(?:SAMSUNG-)?GT-I910[08]' - model: 'GALAXY S II' + model: 'Galaxy S II' - regex: '(?:SAMSUNG-)?ISW11SC' - model: 'GALAXY S II WiMAX' + model: 'Galaxy S II WiMAX' - regex: '(?:SAMSUNG-)?GT-I9103' - model: 'GALAXY R' + model: 'Galaxy R' - regex: '(?:SAMSUNG-)?GT-I9105' - model: 'GALAXY S II Plus' + model: 'Galaxy S II Plus' - regex: '(?:SAMSUNG-)?SM-G730(?:W8|[AV])' - model: 'GALAXY S3 mini' + model: 'Galaxy S3 mini' - regex: '(?:SAMSUNG-)?(?:GT-I919[025]|SCH-I435)' - model: 'GALAXY S4 mini' + model: 'Galaxy S4 mini' - regex: '(?:SAMSUNG-)?GT-I9515' - model: 'GALAXY S4 Value Edition' + model: 'Galaxy S4 Value Edition' - regex: '(?:SAMSUNG-)?GT-I9295' - model: 'GALAXY S4 ACTIVE' - - regex: '(?:SAMSUNG-)?(?:GT-I9300|SCH-I535|SCH-L710|SCH-I939)' - model: 'GALAXY S III' + model: 'Galaxy S4 ACTIVE' + - regex: '(?:SAMSUNG-)?(?:GT-I9300|SCH-(?:I535|I939|L710))|SC-03E' + model: 'Galaxy S III' - regex: '(?:SAMSUNG-)?(?:GT-I9305|SCH-R530)' - model: 'GALAXY S III LTE' - - regex: '(?:SAMSUNG-)?(?:SM-S975L|GT-I9500|GT-I9502|GT-I9505|SCH-I545|SCH-I959|SCH-R970|GALAXY-S4|SGH-M919N?)|SC-04E' - model: 'GALAXY S4' - - regex: '(?:SAMSUNG-)?GT-I9506' - model: 'GALAXY S4 with LTE+' + model: 'Galaxy S III LTE' + - regex: '(?:SAMSUNG-)?(?:SM-S975L|GT-I950[025]|SC-04E|SCH-(?:I545|I959|R970)|SGH-M919N?|Galaxy-S4|SHV-E300K)' + model: 'Galaxy S4' + - regex: '(?:SAMSUNG-)?(?:GT-I9506)' + model: 'Galaxy S4 with LTE+' + - regex: '(?:SAMSUNG-)?SHV-E330' + model: 'Galaxy S4 LTE' - regex: '(?:SAMSUNG-)?GT-S5280' - model: 'GALAXY STAR' + model: 'Galaxy STAR' - regex: '(?:SAMSUNG-)?GT-S5301' - model: 'GALAXY POCKET Plus' + model: 'Galaxy POCKET Plus' - regex: '(?:SAMSUNG-)?GT-S5310' - model: 'GALAXY POCKET Neo' + model: 'Galaxy POCKET Neo' - regex: '(?:SAMSUNG-)?SM-G110[BHM]' - model: 'GALAXY POCKET 2' + model: 'Galaxy POCKET 2' - regex: '(?:SAMSUNG-)?GT-S5360' - model: 'GALAXY Y Hello Kitty' + model: 'Galaxy Y Hello Kitty' - regex: '(?:SAMSUNG-)?GT-S6310' - model: 'GALAXY Young' + model: 'Galaxy Young' - regex: '(?:SAMSUNG-)?GT-S6312' - model: 'GALAXY Young DUOS' + model: 'Galaxy Young DUOS' - regex: '(?:SAMSUNG-)?SM-G130(?:BT|HN|[EHMU])' - model: 'GALAXY Young 2' + model: 'Galaxy Young 2' - regex: '(?:SAMSUNG-)?SM-G130BU' - model: 'GALAXY Young 2 Pro' + model: 'Galaxy Young 2 Pro' - regex: '(?:SAMSUNG-)?GT-S6790' - model: 'GALAXY FAME Lite with NFC' + model: 'Galaxy FAME Lite with NFC' - regex: '(?:SAMSUNG-)?GT-S6810' - model: 'GALAXY FAME' + model: 'Galaxy FAME' - regex: '(?:SAMSUNG-)?GT-S6812' - model: 'GALAXY FAME Duos' + model: 'Galaxy FAME Duos' - regex: 'SC-04J(?:[);/ ]|$)' - model: 'GALAXY Feel' + model: 'Galaxy Feel' + - regex: 'SC-02L(?:[);/ ]|$)' + model: 'Galaxy Feel 2' - regex: '(?:SAMSUNG-)?GT-S7275' - model: 'GALAXY ACE 3' + model: 'Galaxy ACE 3' - regex: '(?:SAMSUNG-)?GT-S7500' - model: 'GALAXY ACE Plus' + model: 'Galaxy ACE Plus' - regex: '(?:SAMSUNG-)?(?:GT-S7560|SCH-I699)' - model: 'GALAXY Trend' + model: 'Galaxy Trend' - regex: '(?:SAMSUNG-)?GT-S7390' - model: 'GALAXY Trend Lite' + model: 'Galaxy Trend Lite' - regex: '(?:SAMSUNG-)?GT-S7580' - model: 'GALAXY Trend Plus' + model: 'Galaxy Trend Plus' - regex: '(?:SAMSUNG-)?SCH-I739' - model: 'GALAXY Trend 2' + model: 'Galaxy Trend 2' - regex: '(?:SAMSUNG-)?(?:GT-S7562|SCH-I919)' - model: 'GALAXY S DUOS' + model: 'Galaxy S DUOS' - regex: '(?:SAMSUNG-)?GT-S7582' - model: 'GALAXY S DUOS 2' + model: 'Galaxy S DUOS 2' - regex: '(?:SAMSUNG-)?SM-(?:G31[36]HU|G313HZ)' - model: 'GALAXY S DUOS 3' + model: 'Galaxy S DUOS 3' - regex: '(?:SAMSUNG-)?GT-S7710' - model: 'GALAXY Xcover 2' + model: 'Galaxy Xcover 2' + - regex: '(?:SAMSUNG-)?SM-G388F' + model: 'Galaxy Xcover 3' - regex: '(?:SAMSUNG-)?SM-G389F' - model: 'GALAXY Xcover 3' - - regex: '(?:SAMSUNG-)?SM-G715FN' - model: 'GALAXY Xcover Pro' + model: 'Galaxy Xcover 3 VE' + - regex: '(?:SAMSUNG-)?SM-G390[FWY]' + model: 'Galaxy Xcover 4' - regex: '(?:SAMSUNG-)?SM-G398FN' - model: 'GALAXY Xcover 4s' - - regex: '(?:SAMSUNG-)?SM-G390Y' - model: 'GALAXY Xcover 4' + model: 'Galaxy Xcover 4s' + - regex: '(?:SAMSUNG-)?SM-G715(?:FN|U1|[AUW])' + model: 'Galaxy Xcover Pro' + - regex: '(?:SAMSUNG-)?SM-G889(?:YB|[AFG])' + model: 'Galaxy Xcover FieldPro' + - regex: '(?:SAMSUNG-)?SM-G525F' + model: 'Galaxy Xcover 5' - regex: '(?:SAMSUNG-)?GT-S8500' model: 'Wave' - regex: '(?:SAMSUNG-)?GT-S8530' @@ -11340,519 +16368,634 @@ Samsung: - regex: '(?:SAMSUNG-)?GT-S7230' model: 'Wave 723' - regex: '(?:SAMSUNG-)?SM-(?:C101|C105([AL])?)' - model: 'GALAXY S4 zoom' + model: 'Galaxy S4 zoom' - regex: '(?:SAMSUNG-)?SM-(?:C111(M)?|C115)' - model: 'GALAXY K zoom' + model: 'Galaxy K zoom' - regex: '(?:SAMSUNG-)?SM-G318[HM]Z' - model: 'GALAXY V Plus' - - regex: '(?:SAMSUNG-)?SM-(?:G355[HM]|G3556D)' - model: 'GALAXY Core 2' + model: 'Galaxy V Plus' + - regex: '(?:SAMSUNG-)?SM-G355(?:6D|[89HM])' + model: 'Galaxy Core 2' - regex: '(?:SAMSUNG-)?SM-G350' - model: 'GALAXY Core Plus' + model: 'Galaxy Core Plus' - regex: '(?:SAMSUNG-)?SM-(?:G360[FH]?|S820L)' - model: 'GALAXY Core Prime' + model: 'Galaxy Core Prime' - regex: '(?:SAMSUNG-)?SM-G361[FH]?' - model: 'GALAXY Core Prime Value Edition' - - regex: '(?:SAMSUNG-)?SM-(?:G386F|G3586V)' - model: 'GALAXY Core LTE' + model: 'Galaxy Core Prime Value Edition' + - regex: '(?:SAMSUNG-)?SM-(?:G386F|G3518(?:_TD)?|G3586V)' + model: 'Galaxy Core LTE' - regex: '(?:SAMSUNG-)?SM-G3568V' - model: 'GALAXY Core Mini 4G' - - regex: '(?:SAMSUNG-)?SM-G5108Q' - model: 'GALAXY Core Max' + model: 'Galaxy Core Mini 4G' + - regex: '(?:SAMSUNG-)?SM-G5108Q?' + model: 'Galaxy Core Max' - regex: '(?:SAMSUNG-)?SM-G3815' - model: 'GALAXY EXPRESS II' - - regex: '(?:SAMSUNG-)?SM-G388F' - model: 'GALAXY Xcover 3' - - regex: '(?:SAMSUNG-)?SM-G390[FW]' - model: 'GALAXY Xcover 4' + model: 'Galaxy EXPRESS II' - regex: '(?:SAMSUNG-)?SM-G800' - model: 'GALAXY S5 mini' + model: 'Galaxy S5 mini' - regex: '(?:SAMSUNG-)?SM-G9009D' - model: 'GALAXY S5 Dual-SIM' - - regex: '(?:SAMSUNG-)?SM-(?:G900|G906[KLS]|S902L|S903VL)|GALAXY-S5' - model: 'GALAXY S5' + model: 'Galaxy S5 Dual-SIM' + - regex: '(?:SAMSUNG-)?SM-G900FD' + model: 'Galaxy S5 Duos' + - regex: '(?:SAMSUNG-)?SM-(?:G900|G906[KLS]|S902L|S903VL)|Galaxy-S5|SCL23|SC-04F' + model: 'Galaxy S5' - regex: '(?:SAMSUNG-)?SM-G901F' - model: 'GALAXY S5 LTE+' + model: 'Galaxy S5 LTE+' - regex: '(?:SAMSUNG-)?SM-G870[AFW]|SC-02G' - model: 'GALAXY S5 Active' + model: 'Galaxy S5 Active' - regex: '(?:SAMSUNG-)?SM-G903[FMW]' - model: 'GALAXY S5 Neo' + model: 'Galaxy S5 Neo' - regex: '(?:SAMSUNG-)?SM-G860P' - model: 'GALAXY S5 K Sport' - - regex: '(?:SAMSUNG-)?(?:SM-G920(?:F[DQ]|W8|[089AFIKLPRSTVX])?|SM-S907VL)|SC-05G' - model: 'GALAXY S6' + model: 'Galaxy S5 K Sport' + - regex: '(?:SAMSUNG-)?(?:SM-G920(?:F[DQ]|W8|[089AFIKLPRSTVX])?|SM-S906L|SM-S907VL)|SC-05G' + model: 'Galaxy S6' - regex: '(?:SAMSUNG-)?SM-G890A' - model: 'GALAXY S5 Active' + model: 'Galaxy S5 Active' - regex: '(?:SAMSUNG-)?SM-G925[0ADFIKLPRSTVWX]|SCV31|404SC' - model: 'GALAXY S6 Edge' - - regex: '(?:SAMSUNG-)?SM-G928(?:7C|R4|W8|[07ACFGIKLPSTVX])' - model: 'GALAXY S6 Edge+' - - regex: '(?:SAMSUNG-)?SM-G930(?:FD|W8|[0AFKLPRSTUVX8])?(?:[);/ ]|$)' - model: 'GALAXY S7' + model: 'Galaxy S6 Edge' + - regex: '(?:SAMSUNG-)?SM-G928(?:7C|N0|R4|W8|[07ACFGIKLPSTVX])' + model: 'Galaxy S6 Edge+' + - regex: '(?:SAMSUNG-)?SM-G930(?:AZ|FD|R[467]|T1|V[CL]|W8|[0AFKLPRSTUVX8])?(?:[);/ ]|$)' + model: 'Galaxy S7' - regex: '(?:SAMSUNG-)?SM-G935(?:R4|W8|[0AFKLPSTUVX])|SC-02H|SCV33' - model: 'GALAXY S7 Edge' + model: 'Galaxy S7 Edge' - regex: '(?:SAMSUNG-)?SM-G891A' - model: 'GALAXY S7 Active' + model: 'Galaxy S7 Active' - regex: '(?:SAMSUNG-)?SM-G950[08FNUW]?|SCV36|SC-02J' - model: 'GALAXY S8' + model: 'Galaxy S8' - regex: '(?:SAMSUNG-)?SM-G8750' - model: 'GALAXY S8 Lite' + model: 'Galaxy S8 Lite' - regex: '(?:SAMSUNG-)?SM-G892[AU]' - model: 'GALAXY S8 Active' - - regex: '(?:SAMSUNG-)?SM-G955[AFKLNPRTUVW0X]?|SCV35|SC-03J' - model: 'GALAXY S8+' - - regex: '(?:SAMSUNG-)?SM-G960[FNUWX0]?|SCV38|SC-02K' - model: 'GALAXY S9' - - regex: '(?:SAMSUNG-)?SM-G965[FNUWX0]|SCV39|SC-03K' - model: 'GALAXY S9+' - - regex: '(?:SAMSUNG-)?(?:SM-(?:G973|G977[PUTNB])|SCV41|SC-03L)' - model: 'GALAXY S10' - - regex: '(?:SAMSUNG-)?SM-G770F' - model: 'GALAXY S10 Lite' - - regex: '(?:SAMSUNG-)?(?:SM-G975[0FUWNX]|SCV42|SC-04L)' - model: 'GALAXY S10+' - - regex: '(?:SAMSUNG-)?SM-G970[08FUNWX](?:[);/ ]|$)' - model: 'GALAXY S10e' + model: 'Galaxy S8 Active' + - regex: '(?:SAMSUNG-)?SM-G955[0AFKLNPRTUVWX]?|SCV35|SC-03J' + model: 'Galaxy S8+' + - regex: '(?:SAMSUNG-)?SM-G960[0FNUWX]?|SCV38|SC-02K' + model: 'Galaxy S9' + - regex: '(?:SAMSUNG-)?SM-G965[0FNUWX]|SCV39|SC-03K' + model: 'Galaxy S9+' + - regex: '(?:SAMSUNG-)?(?:SM-(?:G973|G977[BNPTU])|SCV41|SC-03L)' + model: 'Galaxy S10' + - regex: '(?:SAMSUNG-)?SM-(?:S10 Lite|G770(?:U1|F))' + model: 'Galaxy S10 Lite' + - regex: '(?:SAMSUNG-)?(?:SM-G975[08FUNWX]|SCV42|SC-04L)' + model: 'Galaxy S10+' + - regex: 'SC-05L' + model: 'Galaxy S10+ Olympic Games Edition' + - regex: '(?:SAMSUNG-)?SM-G970(?:U1|[08FUNWX])(?:[);/ ]|$)' + model: 'Galaxy S10e' - regex: '(?:SAMSUNG-)?SM-G980F' - model: 'GALAXY S20' - - regex: '(?:SAMSUNG-)?SM-G981(?:[0BNUW]|U1)|SCG01' - model: 'GALAXY S20 5G' - - regex: '(?:SAMSUNG-)?SM-G988(?:[0BNUW]|U1)' - model: 'GALAXY S20 Ultra 5G' + model: 'Galaxy S20' + - regex: '(?:SAMSUNG-)?SM-G981(?:U1|[0BNUVW])|SCG01|SC-51A|SC51Aa' + model: 'Galaxy S20 5G' + - regex: '(?:SAMSUNG-)?SM-G780' + model: 'Galaxy S20 FE' + - regex: '(?:SAMSUNG-)?SM-G781(?:U1|[0BNUVW])' + model: 'Galaxy S20 FE 5G' + - regex: '(?:SAMSUNG-)?SM-G988(?:U1|[0BNQUW])|SCG03' + model: 'Galaxy S20 Ultra 5G' - regex: '(?:SAMSUNG-)?SM-G985F|SCG02' - model: 'GALAXY S20+' - - regex: '(?:SAMSUNG-)?SM-G986(?:[0BNUW]|U1)|SC-52A' - model: 'GALAXY S20+ 5G' - - regex: '(?:SAMSUNG-)?SM-F700(?:[0FNUW]|U1)|SCV47' - model: 'GALAXY Z Flip' + model: 'Galaxy S20+' + - regex: '(?:SAMSUNG-)?SM-G986(?:U1|[0BNUW])|SC-52A' + model: 'Galaxy S20+ 5G' + - regex: '(?:SAMSUNG-)?SM-G991(?:U1|[0BNWQU])|SCG09' + model: 'Galaxy S21 5G' + - regex: '(?:SAMSUNG-)?SM-G990' + model: 'Galaxy S21 FE 5G' + - regex: '(?:SAMSUNG-)?SC-51B' + model: 'Galaxy S21 5G Olympic Games Edition' + - regex: '(?:SAMSUNG-)?(?:SM-G998(?:U1|[0BNUW])|SC-52B)' + model: 'Galaxy S21 Ultra 5G' + - regex: '(?:SAMSUNG-)?SM-G996(?:U1|[0BNWU])|SCG10' + model: 'Galaxy S21+ 5G' + - regex: '(?:SAMSUNG-)?SM-S901(?:U1|[0BENUW])' + model: 'Galaxy S22' + - regex: '(?:SAMSUNG-)?SM-S908(?:U1|[0BENUW])' + model: 'Galaxy S22 Ultra' + - regex: '(?:SAMSUNG-)?SM-S906(?:U1|[0BENUW])' + model: 'Galaxy S22+' + - regex: '(?:SAMSUNG-)?SM-F700(?:U1|[0FNUW])|SCV47' + model: 'Galaxy Z Flip' + - regex: '(?:SAMSUNG-)?SM-F707(?:U1|[0BNUW])|SCG04' + model: 'Galaxy Z Flip 5G' - regex: '(?:SAMSUNG-)?SCH-I200' - model: 'GALAXY Stellar' + model: 'Galaxy Stellar' - regex: '(?:SAMSUNG-)?SCH-I829' - model: 'GALAXY Style Duos' - - regex: '(?:SAMSUNG-)?(?:SGH-S730|SCH-R740)' - model: 'GALAXY Discover' + model: 'Galaxy Style Duos' + - regex: '(?:SAMSUNG-)?(?:SCH-R740|SGH-S730)' + model: 'Galaxy Discover' - regex: '(?:SAMSUNG-)?SCH-S738' - model: 'GALAXY Centura' + model: 'Galaxy Centura' - regex: 'vollo Vi86(?:[);/ ]|$)' model: 'Vollo Vi86' - regex: '(?:SAMSUNG-)?SM-G386(?:T1|T)' - model: 'GALAXY Avant' - - regex: '(?:SAMSUNG-)?SM-A015[AFGM]' - model: 'GALAXY A01' + model: 'Galaxy Avant' + - regex: '(?:SAMSUNG-)?SM-A716S' + model: 'Galaxy A Quantum' + - regex: '(?:SAMSUNG-)?SM-(?:A015(?:DL|[TU]1|[AFGMUV])|S111DL)' + model: 'Galaxy A01' + - regex: '(?:SAMSUNG-)?SM-A013[FGM]' + model: 'Galaxy A01 Core' + - regex: '(?:SAMSUNG-)?SM-(?:A025(?:[AFGM]|AZ)?|S124DL)' + model: 'Galaxy A02s' + - regex: '(?:SAMSUNG-)?SM-A037[F]?' + model: 'Galaxy A03s' + - regex: '(?:SAMSUNG-)?SM-A035[F]?' + model: 'Galaxy A03' + - regex: '(?:SAMSUNG-)?SM-A032[F]?' + model: 'Galaxy A03 Core' + - regex: '(?:SAMSUNG-)?SM-A022[GMF]?' + model: 'Galaxy A02' - regex: '(?:SAMSUNG-)?SM-A260[FG]' - model: 'GALAXY A2 Core' - - regex: '(?:SAMSUNG-)?SM-A300(?:FU|YZ|XU|[09FGHMY])' - model: 'GALAXY A3 (2015)' - - regex: '(?:SAMSUNG-)?SM-A310(?:N0|[FMYX])' - model: 'GALAXY A3 (2016)' - - regex: '(?:SAMSUNG-)?SM-A320(?:FL|[FYX])' - model: 'GALAXY A3 (2017)' - - regex: '(?:SAMSUNG-)?SM-A500[LSWY9]?(?:[);/ ]|$)' - model: 'GALAXY A5' - - regex: '(?:SAMSUNG-)?SM-A500[FGHKM0]' - model: 'GALAXY A5 Duos' + model: 'Galaxy A2 Core' + - regex: '(?:SAMSUNG-)?SM-S115(?:DL)?' + model: 'Galaxy A11' + - regex: '(?:SAMSUNG-)?SM-A225[F]?' + model: 'Galaxy A22' + - regex: '(?:SAMSUNG-)?SM-A226|SC-56B' + model: 'Galaxy A22 5G' + - regex: '(?:SAMSUNG-)?SM-A300(?:FU|YZ|XU|XZ|[09FGHMXY])' + model: 'Galaxy A3 (2015)' + - regex: '(?:SAMSUNG-)?SM-A310(?:N0|[FMXY])' + model: 'Galaxy A3 (2016)' + - regex: '(?:SAMSUNG-)?SM-A320(?:FL|[FXY])' + model: 'Galaxy A3 (2017)' + - regex: '(?:SAMSUNG-)?SM-A430F' + model: 'Galaxy A4' + - regex: '(?:SAMSUNG-)?SM-A500(?:YZ|[9LSWY])?(?:[);/ ]|$)' + model: 'Galaxy A5' + - regex: '(?:SAMSUNG-)?SM-A500[0FGHKM]' + model: 'Galaxy A5 Duos' - regex: '(?:SAMSUNG-)?SM-A500(?:FU|X)' - model: 'GALAXY A5 (2015)' - - regex: '(?:SAMSUNG-)?SM-A510[08FKLMSYX]' - model: 'GALAXY A5 (2016)' + model: 'Galaxy A5 (2015)' + - regex: '(?:SAMSUNG-)?SM-A510[08FKLMSXY]' + model: 'Galaxy A5 (2016)' - regex: '(?:SAMSUNG-)?SM-A520[FKLSWX]' - model: 'GALAXY A5 (2017)' + model: 'Galaxy A5 (2017)' + - regex: '(?:SAMSUNG-)?SM-A525' + model: 'Galaxy A52' + - regex: '(?:SAMSUNG-)?(?:SC-53B|SM-A526)' + model: 'Galaxy A52 5G' + - regex: '(?:SAMSUNG-)?SM-A528' + model: 'Galaxy A52s 5G' - regex: '(?:SAMSUNG-)?SM-A600(?:AZ|FN|GN|T1|[AFGNPTUX])' - model: 'GALAXY A6' + model: 'Galaxy A6' - regex: '(?:SAMSUNG-)?SM-A605(?:[FG]N|[08FGX])' - model: 'GALAXY A6+' + model: 'Galaxy A6+' - regex: '(?:SAMSUNG-)?SM-G6200' - model: 'GALAXY A6s (2018)' - - regex: '(?:SAMSUNG-)?SM-A60(?:60|6Y)' - model: 'GALAXY A60' + model: 'Galaxy A6s (2018)' + - regex: '(?:SAMSUNG-)?SM-A606[0Y]' + model: 'Galaxy A60' - regex: '(?:SAMSUNG-)?SM-A700(?:YD|[09FHKLSX])' - model: 'GALAXY A7' - - regex: '(?:SAMSUNG-)?SM-A710[08FKLMSYX]' - model: 'GALAXY A7 (2016)' - - regex: '(?:SAMSUNG-)?SM-A720[FSX]' - model: 'GALAXY A7 (2017)' - - regex: '(?:SAMSUNG-)?SM-A750(?:GN|[FGCNX])' - model: 'GALAXY A7 (2018)' + model: 'Galaxy A7' + - regex: '(?:SAMSUNG-)?SM-A710[08FKLMSXY]' + model: 'Galaxy A7 (2016)' + - regex: '(?:SAMSUNG-)?SM-A720[FMSX]' + model: 'Galaxy A7 (2017)' + - regex: '(?:SAMSUNG-)?SM-A750(?:GN|[CFGNX])' + model: 'Galaxy A7 (2018)' - regex: '(?:SAMSUNG-)?SM-A71(?:5[FW])?(?:[);/ ]|$)' - model: 'GALAXY A71' - - regex: '(?:SAMSUNG-)?SM-A716U(?:[);/ ]|$)' - model: 'GALAXY A71 5G' - - regex: '(?:SAMSUNG-)?SM-A(?:530F|800[0FISY])|SCV32' - model: 'GALAXY A8' + model: 'Galaxy A71' + - regex: '(?:SAMSUNG-)?SM-A725[FM](?:[);/ ]|$)' + model: 'Galaxy A72' + - regex: '(?:SAMSUNG-)?SM-A716(?:U1|[0BUV])(?:[);/ ]|$)' + model: 'Galaxy A71 5G' + - regex: '(?:SAMSUNG-)?SM-A(?:530F|800[0FISXY])|SCV32' + model: 'Galaxy A8' - regex: '(?:SAMSUNG-)?SM-G885[FSY]' - model: 'GALAXY A8 Star' + model: 'Galaxy A8 Star' - regex: '(?:SAMSUNG-)?SM-A810(?:YZ|[FS])' - model: 'GALAXY A8 (2016)' - - regex: '(?:SAMSUNG-)?SM-G887[0F]' - model: 'GALAXY A8s' - - regex: '(?:SAMSUNG-)?SM-A530[NWXM]' - model: 'GALAXY A8 (2018)' - - regex: '(?:SAMSUNG-)?SM-A730F' - model: 'GALAXY A8+ (2018)' - - regex: '(?:SAMSUNG-)?SM-A9000' - model: 'GALAXY A9' + model: 'Galaxy A8 (2016)' + - regex: '(?:SAMSUNG-)?SM-(?:A8s|G887[0F])' + model: 'Galaxy A8s' + - regex: '(?:SAMSUNG-)?SM-A530[MNWX]' + model: 'Galaxy A8 (2018)' + - regex: '(?:SAMSUNG-)?SM-A730[FX]' + model: 'Galaxy A8+ (2018)' + - regex: '(?:SAMSUNG-)?SM-A900[0F]' + model: 'Galaxy A9' - regex: 'SM-A9\[7\]' - model: 'GALAXY A9 7' + model: 'Galaxy A9 7' - regex: '(?:SAMSUNG-)?SM-A920[0FXN]' - model: 'GALAXY A9 (2018)' + model: 'Galaxy A9 (2018)' - regex: '(?:SAMSUNG-)?SM-G885[08]' - model: 'GALAXY A9 Star' - - regex: '(?:SAMSUNG-)?SM-(?:A910[0F]|G887N)' - model: 'GALAXY A9 Pro' + model: 'Galaxy A9 Star' + - regex: '(?:SAMSUNG-)?SM-(?:A9 Pro|A910[0F]|G887N)' + model: 'Galaxy A9 Pro' - regex: '(?:SAMSUNG-)?SM-A105[FGMN]' - model: 'GALAXY A10' + model: 'Galaxy A10' - regex: '(?:SAMSUNG-)?SM-A107[FM]' - model: 'GALAXY A10s' - - regex: '(?:SAMSUNG-)?SM-(?:S102DL|A102[NWU])' - model: 'GALAXY A10e' - - regex: '(?:SAMSUNG-)?SM-A115F' - model: 'GALAXY A11' - - regex: '(?:SAMSUNG-)?SM-(?:A205(?:[FGSWU]|YN|U1)|S205DL)|SC-02M|SCV46' - model: 'GALAXY A20' - - regex: '(?:SAMSUNG-)?SM-A215U(?:[);/ ]|$)' - model: 'GALAXY A21' - - regex: '(?:SAMSUNG-)?SM-A217F(?:[);/ ]|$)' - model: 'GALAXY A21s' + model: 'Galaxy A10s' + - regex: '(?:SAMSUNG-)?SM-(?:S102DL|A102[NUW])' + model: 'Galaxy A10e' + - regex: '(?:SAMSUNG-)?SM-A115(?:A[PZ]|U1|[AFMUW])' + model: 'Galaxy A11' + - regex: '(?:SAMSUNG-)?SM-(?:A12(?:5[FMNUW]|7[FM])|S127DL)' + model: 'Galaxy A12' + - regex: '(?:SAMSUNG-)?SM-A136(?:U1|[UW])' + model: 'Galaxy A13 5G' + - regex: '(?:SAMSUNG-)?SM-(?:A205(?:U1|YN|[FGSWU])|S205DL)|SC-02M|SCV46' + model: 'Galaxy A20' + - regex: '(?:SAMSUNG-)?(?:SM-A215(?:DL|U1|[UW])|SM-S215DL|SC-42A|SCV49)(?:[);/ ]|$)' + model: 'Galaxy A21' + - regex: '(?:SAMSUNG-)?SM-A217[FMN](?:[);/ ]|$)' + model: 'Galaxy A21s' - regex: '(?:SAMSUNG-)?SM-A202[FG]' - model: 'GALAXY A20e' + model: 'Galaxy A20e' - regex: '(?:SAMSUNG-)?SM-A207[0FM]' - model: 'GALAXY A20s' - - regex: '(?:SAMSUNG-)?(?:SM-A305(?:[GYF]N|GT|[NFG])|SCV43)' - model: 'GALAXY A30' + model: 'Galaxy A20s' + - regex: '(?:SAMSUNG-)?(?:SM-A305(?:[FGY]N|GT|[FGN])|SCV43)' + model: 'Galaxy A30' - regex: '(?:SAMSUNG-)?SM-A307(?:FN|GN|GT|[FG])' - model: 'GALAXY A30s' - - regex: '(?:SAMSUNG-)?SM-A315[FNG](?:[);/ ]|$)' - model: 'GALAXY A31' + model: 'Galaxy A30s' + - regex: '(?:SAMSUNG-)?SM-A315[FGN](?:[);/ ]|$)' + model: 'Galaxy A31' + - regex: '(?:SAMSUNG-)?SM-A325' + model: 'Galaxy A32' + - regex: '(?:SAMSUNG-)?(?:SM-(?:A326(?:BR|U1|[BUW])|S326DL)|SCG08)' + model: 'Galaxy A32 5G' - regex: '(?:SAMSUNG-)?SM-A405(?:F[NM]|S)' - model: 'GALAXY A40' - - regex: '(?:SAMSUNG-)?SM-A305[01](?:[);/ ]|$)' - model: 'GALAXY A40s' - - regex: '(?:SAMSUNG-)?(?:SM-A415F|SCV48)(?:[);/ ]|$)' - model: 'GALAXY A41' - - regex: '(?:SAMSUNG-)?SM-(?:A505(?:F[NG]|[FGNWUX]|YN|U1?)|S506DL|505FN)' - model: 'GALAXY A50' + model: 'Galaxy A40' + - regex: '(?:SAMSUNG-)?SM-A305[018](?:[);/ ]|$)' + model: 'Galaxy A40s' + - regex: '(?:SAMSUNG-)?(?:SM-A415F|SC-41A|SCV48)(?:[);/ ]|$)' + model: 'Galaxy A41' + - regex: '(?:SAMSUNG-)?SM-A426(?:U1|[0BNU])(?:[);/ ]|$)' + model: 'Galaxy A42 5G' + - regex: '(?:SAMSUNG-)?SM-(?:A505(?:F[GN]|U1|YN|[FGNUWX])|S506DL|505FN)' + model: 'Galaxy A50' - regex: '(?:SAMSUNG-)?SM-A5070(?:[);/ ]|$)' - model: 'GALAXY A50s' + model: 'Galaxy A50s' - regex: '(?:SAMSUNG-)?SM-A507FN' - model: 'GALAXY A50s' - - regex: '(?:SAMSUNG-)?SM-A515[F]' - model: 'GALAXY A51' - - regex: '(?:SAMSUNG-)?SM-A705(?:GM|[MYF]N|F|[W0X])' - model: 'GALAXY A70' + model: 'Galaxy A50s' + - regex: '(?:SAMSUNG-)?SM-(?:A515[FUW]|S515DL)' + model: 'Galaxy A51' + - regex: '(?:SAMSUNG-)?(?:SM-A516(?:U1|[0BNUV])|SC-54A|SCG07)' + model: 'Galaxy A51 5G' + - regex: '(?:SAMSUNG-)?SM-A705(?:GM|[MYF]N|[0FUWX])' + model: 'Galaxy A70' - regex: '(?:SAMSUNG-)?SM-A707[0F]' - model: 'GALAXY A70s' + model: 'Galaxy A70s' - regex: '(?:SAMSUNG-)?SM-A805[0FNX]' - model: 'GALAXY A80' + model: 'Galaxy A80' - regex: '(?:SAMSUNG-)?SM-A908[BN]' - model: 'GALAXY A90' + model: 'Galaxy A90' + - regex: '(?:SAMSUNG-)?SM-A9080' + model: 'Galaxy A90 5G' + - regex: '(?:SAMSUNG-)?SM-F127G(?:[);/ ]|$)' + model: 'Galaxy F12' + - regex: '(?:SAMSUNG-)?SM-E225F(?:[);/ ]|$)' + model: 'Galaxy F22' + - regex: '(?:SAMSUNG-)?SM-F415F(?:[);/ ]|$)' + model: 'Galaxy F41' + - regex: '(?:SAMSUNG-)?SM-E5260(?:[);/ ]|$)' + model: 'Galaxy F52 5G' + - regex: '(?:SAMSUNG-)?SM-E625' + model: 'Galaxy F62' - regex: '(?:SAMSUNG-)?GT-I9301I' - model: 'GALAXY S III Neo' + model: 'Galaxy S III Neo' - regex: '(?:SAMSUNG-)?SM-S120VL(?:[);/ ]|$)' - model: 'GALAXY Luna' - - regex: '(?:SAMSUNG-)?SM-J100(?:FN|VPP|MU|[FHMY])' - model: 'GALAXY J1' + model: 'Galaxy Luna' + - regex: '(?:SAMSUNG-)?SM-(?:J100(?:FN|VPP|MU|[FGHMY])|S777C)' + model: 'Galaxy J1' - regex: '(?:SAMSUNG-)?SM-J105[BFHYM]' - model: 'GALAXY J1 Mini' - - regex: '(?:SAMSUNG-)?SM-J106[FMHB]' - model: 'GALAXY J1 mini Prime' - - regex: '(?:SAMSUNG-)?SM-(?:J120(?:ZN|[AFHGMTW])|J05H)' - model: 'GALAXY J1 (2016)' - - regex: '(?:SAMSUNG-)?SM-(?:J110[FHMLG]|J111[FM])' - model: 'GALAXY J1 Ace' - - regex: '(?:SAMSUNG-)?SM-J200[FGHYM]' - model: 'GALAXY J2' + model: 'Galaxy J1 Mini' + - regex: '(?:SAMSUNG-)?SM-J106[BFHM]' + model: 'Galaxy J1 mini Prime' + - regex: '(?:SAMSUNG-)?SM-(?:J120(?:ZN|[AFGHMPTW])|J05H)' + model: 'Galaxy J1 (2016)' + - regex: '(?:SAMSUNG-)?SM-(?:J110[FGHLM]|J111[FM])' + model: 'Galaxy J1 Ace' + - regex: '(?:SAMSUNG-)?SM-J200[FGHMY]' + model: 'Galaxy J2' - regex: '(?:SAMSUNG-)?SM-J200BT' - model: 'GALAXY J2 Duos' + model: 'Galaxy J2 Duos' - regex: '(?:SAMSUNG-)?SM-J260AZ' - model: 'GALAXY J2 Pure' + model: 'Galaxy J2 Pure' - regex: '(?:SAMSUNG-)?SM-(?:J260([AFGMY]|T1)|S260DL)' - model: 'GALAXY J2 Core' - - regex: '(?:SAMSUNG-)?SM-J(?:210F|250[FNMGY])' - model: 'GALAXY J2 Pro' + model: 'Galaxy J2 Core' + - regex: '(?:SAMSUNG-)?SM-J(?:210F|250[FGMNY])' + model: 'Galaxy J2 Pro' - regex: '(?:SAMSUNG-)?SM-(?:S367VL|S357BL)' - model: 'GALAXY J3 Orbit' + model: 'Galaxy J3 Orbit' - regex: '(?:SAMSUNG-)?SM-J311(?:[09]|9S)' - model: 'GALAXY J3 Pro' + model: 'Galaxy J3 Pro' - regex: '(?:SAMSUNG-)?SM-S320VL(?:[);/ ]|$)' - model: 'GALAXY J3 Sky' + model: 'Galaxy J3 Sky' - regex: '(?:SAMSUNG-)?SM-S327VL(?:[);/ ]|$)' - model: 'GALAXY J3 Luna Pro' + model: 'Galaxy J3 Luna Pro' - regex: '(?:SAMSUNG-)?SM-J327(?:T1|[ATW])(?:[);/ ]|$)' - model: 'GALAXY J3 Prime' + model: 'Galaxy J3 Prime' - regex: '(?:SAMSUNG-)?SM-J327(?:[FP]|R4)' - model: 'GALAXY J3 Emerge' + model: 'Galaxy J3 Emerge' - regex: '(?:SAMSUNG-)?SM-J337R4(?:[);/ ]|$)' - model: 'GALAXY J3 Aura' + model: 'Galaxy J3 Aura' - regex: '(?:SAMSUNG-)?SM-J337T(?:[);/ ]|$)' - model: 'GALAXY J3 Star' + model: 'Galaxy J3 Star' - regex: '(?:SAMSUNG-)?SM-J327V' - model: 'GALAXY J3 Eclipse' + model: 'Galaxy J3 Eclipse' - regex: '(?:SAMSUNG-)?SM-S337TL' - model: 'GALAXY J3 Luna Pro' + model: 'Galaxy J3 Luna Pro' - regex: '(?:SAMSUNG-)?SM-J3109' - model: 'GALAXY J3 (2015)' - - regex: '(?:SAMSUNG-)?SM-J320(?:[ZF]N|R4|W8|YZ|[AFGHMNPVY])' - model: 'GALAXY J3 (2016)' - - regex: '(?:SAMSUNG-)?SM-(?:J330(?:[08FGLN]|FN)|J327(?:R7|U))(?:[);/ ]|$)' - model: 'GALAXY J3 (2017)' - - regex: '(?:SAMSUNG-)?SM-J337(?:[AWPUV]|VPP)(?:[);/ ]|$)' - model: 'GALAXY J3 (2018)' - - regex: '(?:SAMSUNG-)?SM-J400[FGM]' - model: 'GALAXY J4' - - regex: '(?:SAMSUNG-)?SM-J500(?:[8F]|FN|[7GYMH]|N0)(?:[);/ ]|$)' - model: 'GALAXY J5 (2015)' - - regex: '(?:SAMSUNG-)?SM-(?:J510(?:[8FHKLSYG]|[UFMG]N)|5108|G510H)(?:[);/ ]|$)' - model: 'GALAXY J5 (2016)' - - regex: '(?:SAMSUNG-)?SM-J530' - model: 'GALAXY J5 (2017)' + model: 'Galaxy J3 (2015)' + - regex: '(?:SAMSUNG-)?SM-(?:J300H|J320(?:[ZF]N|R4|W8|YZ|[AFGHMNPVY]))' + model: 'Galaxy J3 (2016)' + - regex: '(?:SAMSUNG-)?SM-(?:J330(?:FN|[08FGLN])|J327(?:R7|U))(?:[);/ ]|$)' + model: 'Galaxy J3 (2017)' + - regex: '(?:SAMSUNG-)?SM-J337(?:VPP|[AWPUV])(?:[);/ ]|$)' + model: 'Galaxy J3 (2018)' + - regex: '(?:SAMSUNG-)?SM-(?:G400[FG]|J400[FGM])' + model: 'Galaxy J4' + - regex: '(?:SAMSUNG-)?SM-J500(?:FN|N0|[78FGHMY])(?:[);/ ]|$)' + model: 'Galaxy J5 (2015)' + - regex: '(?:SAMSUNG-)?SM-(?:J510(?:[FGMU]N|FQ|[8FGHKLSY])|5108|G510H)(?:[);/ ]|$)' + model: 'Galaxy J5 (2016)' + - regex: '(?:SAMSUNG-)?SM-J530|lineage_j5y17lte' + model: 'Galaxy J5 (2017)' - regex: '(?:SAMSUNG-)?SM-G570[0FMY]' - model: 'GALAXY J5 Prime' - - regex: '(?:SAMSUNG-)?SM-J600[NFGL]' # 2018 - model: 'GALAXY J6' + model: 'Galaxy J5 Prime' + - regex: '(?:SAMSUNG-)?SM-J600[FGLN]' # 2018 + model: 'Galaxy J6' - regex: '(?:SAMSUNG-)?SM-J610[FG]' - model: 'GALAXY J6+' + model: 'Galaxy J6+' - regex: '(?:SAMSUNG-)?SM-J410[FG]' - model: 'GALAXY J4 Core' - - regex: '(?:SAMSUNG-)?SM-J415(?:[FNG]|[FG]N)' - model: 'GALAXY J4+' - - regex: '(?:SAMSUNG-)?SM-J7[01]0(?:8|F|FN|H|K|M|MN)' - model: 'GALAXY J7' + model: 'Galaxy J4 Core' + - regex: '(?:SAMSUNG-)?SM-J415(?:[FG]N|[FGN])' + model: 'Galaxy J4+' + - regex: '(?:SAMSUNG-)?SM-J7[01]0(?:FN|MN|[8FHKM])' + model: 'Galaxy J7' - regex: '(?:SAMSUNG-)?SM-J700P' - model: 'GALAXY J7 (2015)' + model: 'Galaxy J7 (2015)' - regex: '(?:SAMSUNG-)?SM-(?:J700(?:T1|T)|J710GN|J7109)' - model: 'GALAXY J7 (2016)' - - regex: '(?:SAMSUNG-)?SM-(?:J730[K]|J727(?:[AUSF]|R4))(?:[);/ ]|$)' - model: 'GALAXY J7 (2017)' - - regex: '(?:SAMSUNG-)?SM-J737(?:[AVPUS]|T1?|VPP|R4)(?:[);/ ]|$)' - model: 'GALAXY J7 (2018)' + model: 'Galaxy J7 (2016)' + - regex: '(?:SAMSUNG-)?SM-(?:J730[K]|J727(?:R4|[AFSU]))(?:[);/ ]|$)' + model: 'Galaxy J7 (2017)' + - regex: '(?:SAMSUNG-)?SM-J737(?:R4|T1|VPP|[APSTUV])(?:[);/ ]|$)' + model: 'Galaxy J7 (2018)' - regex: '(?:SAMSUNG-)?SM-C710F' - model: 'GALAXY J7+ (C7)' + model: 'Galaxy J7+ (C7)' - regex: '(?:SAMSUNG-)?SM-G610[FMY]' - model: 'GALAXY J7 Prime' + model: 'Galaxy J7 Prime' - regex: '(?:SAMSUNG-)?SM-G611(?:FF|MT|M)' - model: 'GALAXY J7 Prime 2' - - regex: '(?:SAMSUNG-)?SM-G615[F]' - model: 'GALAXY J7 Max' + model: 'Galaxy J7 Prime 2' + - regex: '(?:SAMSUNG-)?SM-G615F' + model: 'Galaxy J7 Max' - regex: '(?:SAMSUNG-)?SM-(?:S727VL|S737TL)' - model: 'GALAXY J7 Sky Pro' - - regex: '(?:SAMSUNG-)?SM-J730(?:F|G|GM)' - model: 'GALAXY J7 Pro' - - regex: '(?:SAMSUNG-)?SM-J701(?:F|M)' - model: 'GALAXY J7 Core' # also GALAXY J7 Nxt and GALAXY J7 Neo + model: 'Galaxy J7 Sky Pro' + - regex: '(?:SAMSUNG-)?SM-(?:J7 Pro|J730(?:GM|[FG]))' + model: 'Galaxy J7 Pro' + - regex: '(?:SAMSUNG-)?SM-J701[FM]' + model: 'Galaxy J7 Core' # also Galaxy J7 Nxt and Galaxy J7 Neo - regex: '(?:SAMSUNG-)?SM-J720[FM]' - model: 'GALAXY J7 Duo' + model: 'Galaxy J7 Duo' - regex: '(?:SAMSUNG-)?SM-(?:S767VL|S757BL)' - model: 'GALAXY J7 Crown' - - regex: '(?:SAMSUNG-)?SM-J727(?:P|T|V)' - model: 'GALAXY J7 V' + model: 'Galaxy J7 Crown' + - regex: '(?:SAMSUNG-)?SM-J727[PTV]' + model: 'Galaxy J7 V' - regex: 'SM-J7\[7\]' - model: 'GALAXY J7 7' + model: 'Galaxy J7 7' - regex: '(?:SAMSUNG-)?SM-J810' - model: 'GALAXY J8' + model: 'Galaxy J8' + - regex: 'SM-J8 Plus' + model: 'Galaxy J8 Plus' - regex: 'SM-J8 Pro' - model: 'GALAXY J8 Pro' + model: 'Galaxy J8 Pro' - regex: 'SM-J9\[7\] Prime' - model: 'GALAXY J9 7 Prime' + model: 'Galaxy J9 7 Prime' - regex: 'SM-J9\[8\] Pro' - model: 'GALAXY J9 8 Pro' + model: 'Galaxy J9 8 Pro' - regex: '(?:SAMSUNG-)?SM-M015[FG]' - model: 'GALAXY M01' - - regex: '(?:SAMSUNG-)?SM-M105[FGM]' - model: 'GALAXY M10' + model: 'Galaxy M01' + - regex: '(?:SAMSUNG-)?SM-M013F' + model: 'Galaxy M01 Core' + - regex: '(?:SAMSUNG-)?SM-M017F' + model: 'Galaxy M01s' + - regex: '(?:SAMSUNG-)?SM-M025F' + model: 'Galaxy M02s' + - regex: '(?:SAMSUNG-)?SM-M022[FGM]' + model: 'Galaxy M02' + - regex: '(?:SAMSUNG-)?SM-M105[FGMY]' + model: 'Galaxy M10' - regex: '(?:SAMSUNG-)?SM-M107F' - model: 'GALAXY M10s' - - regex: '(?:SAMSUNG-)?SM-M115F' - model: 'GALAXY M11' - - regex: '(?:SAMSUNG-)?SM-M205[FGNM]' - model: 'GALAXY M20' + model: 'Galaxy M10s' + - regex: '(?:SAMSUNG-)?SM-M115[FM]' + model: 'Galaxy M11' + - regex: '(?:SAMSUNG-)?SM-M127[FG]' + model: 'Galaxy M12' + - regex: '(?:SAMSUNG-)?SM-(?:M205(?:[FGMN]|FN)|M20)(?:[);/ ]|$)' + model: 'Galaxy M20' - regex: '(?:SAMSUNG-)?SM-M215F' - model: 'GALAXY M21' - - regex: '(?:SAMSUNG-)?SM-M307([0F]|FN)' - model: 'GALAXY M30s' - - regex: '(?:SAMSUNG-)?SM-M305' - model: 'GALAXY M30' + model: 'Galaxy M21' + - regex: '(?:SAMSUNG-)?SM-M215G' + model: 'Galaxy M21 (2021)' + - regex: '(?:SAMSUNG-)?SM-M225' + model: 'Galaxy M22' + - regex: '(?:SAMSUNG-)?SM-(?:M307(?:FN|[0F])|M30s)' + model: 'Galaxy M30s' + - regex: '(?:SAMSUNG-)?SM-M305?' + model: 'Galaxy M30' - regex: '(?:SAMSUNG-)?SM-M315F' - model: 'GALAXY M31' + model: 'Galaxy M31' + - regex: '(?:SAMSUNG-)?SM-M325F' + model: 'Galaxy M32' + - regex: '(?:SAMSUNG-)?SM-M326' + model: 'Galaxy M32 5G' - regex: '(?:SAMSUNG-)?SM-M317F' - model: 'GALAXY M31s' + model: 'Galaxy M31s' - regex: '(?:SAMSUNG-)?SM-M405' - model: 'GALAXY M40' + model: 'Galaxy M40' + - regex: '(?:SAMSUNG-)?SM-M426' + model: 'Galaxy M42 5G' + - regex: '(?:SAMSUNG-)?SM-M515F' + model: 'Galaxy M51' + - regex: '(?:SAMSUNG-)?SM-M526' + model: 'Galaxy M52 5G' + - regex: '(?:SAMSUNG-)?SM-M625' + model: 'Galaxy M62' - regex: '(?:SAMSUNG-)?SM-W201([689])' - model: 'GALAXY W201$1' + model: 'Galaxy W201$1' + - regex: '(?:SAMSUNG-)?SM-W2022' + model: 'Galaxy W22' - - regex: '(?:SAMSUNG-)?SM-G850F' - model: 'GALAXY Alpha' + - regex: '(?:SAMSUNG-)?SM-W2015' + model: 'Galaxy Golden 2' - regex: '(?:SAMSUNG-)?SM-G910S' - model: 'GALAXY Round' + model: 'Galaxy Round' - regex: '(?:SAMSUNG-)?SM-(?:G550(?:FY|T[12]?)|S550TL|G55[01]0|G5520)' - model: 'GALAXY On5' + model: 'Galaxy On5' - regex: '(?:SAMSUNG-)?SM-G5528' - model: 'GALAXY On5 (2016)' + model: 'Galaxy On5 (2016)' - regex: '(?:SAMSUNG-)?SM-G600(?:FY|[0F])' - model: 'GALAXY On7' + model: 'Galaxy On7' - regex: '(?:SAMSUNG-)?SM-G610[0KLS]' - model: 'GALAXY On7 (2016)' - - regex: '(?:SAMSUNG-)?SM-G611[FSKL]' - model: 'GALAXY On7 Prime' - - regex: '(?:SAMSUNG-)?SM-C5000' - model: 'GALAXY C5' + model: 'Galaxy On7 (2016)' + - regex: '(?:SAMSUNG-)?SM-G611[FKLS]' + model: 'Galaxy On7 Prime' + - regex: '(?:SAMSUNG-)?SM-C500[0X]' + model: 'Galaxy C5' - regex: '(?:SAMSUNG-)?SM-C501[08]' - model: 'GALAXY C5 Pro' - - regex: '(?:SAMSUNG-)?SM-C7000' - model: 'GALAXY C7' - - regex: '(?:SAMSUNG-)?SM-C701[08F]' - model: 'GALAXY C7 Pro' + model: 'Galaxy C5 Pro' + - regex: '(?:SAMSUNG-)?SM-C700[0X]' + model: 'Galaxy C7' + - regex: '(?:SAMSUNG-)?SM-C701[08FX]' + model: 'Galaxy C7 Pro' - regex: '(?:SAMSUNG-)?SM-C710[08]' - model: 'GALAXY C8' + model: 'Galaxy C8' - regex: '(?:SAMSUNG-)?SM-C900[08FY]' - model: 'GALAXY C9 Pro' + model: 'Galaxy C9 Pro' - regex: '(?:SAMSUNG-)?SM-Z130H' - model: 'GALAXY Z1' + model: 'Galaxy Z1' - regex: '(?:SAMSUNG-)?SM-Z200[FMY]' - model: 'GALAXY Z2' + model: 'Galaxy Z2' - regex: '(?:SAMSUNG-)?SM-Z300H' - model: 'GALAXY Z3' + model: 'Galaxy Z3' - regex: '(?:SAMSUNG-)?SM-Z400[FY]' - model: 'GALAXY Z4' - - regex: '(?:SAMSUNG-)?SM-(?:G150|G155S)(?:[);/ ]|$)' - model: 'GALAXY Folder' - - regex: '(?:SAMSUNG-)?(?:SM-G16(?:[05]0?|0N))(?:[);/ ]|$)' - model: 'GALAXY Folder 2' + model: 'Galaxy Z4' + - regex: '(?:SAMSUNG-)?SM-(?:G150(?:N[0KLS])?|G155S)(?:[);/ ]|$)' + model: 'Galaxy Folder' + - regex: '(?:SAMSUNG-)?(?:SM-G16(?:0N|[05]0?|5N))(?:[);/ ]|$)' + model: 'Galaxy Folder 2' - regex: '(?:SAMSUNG-)?SM-J321AZ(?:[);/ ]|$)' - model: 'GALAXY Sol' + model: 'Galaxy Sol' - regex: '(?:SAMSUNG-)?SM-J326AZ(?:[);/ ]|$)' - model: 'GALAXY Sol 2' + model: 'Galaxy Sol 2' - regex: '(?:SAMSUNG-)?SM-J336AZ(?:[);/ ]|$)' - model: 'GALAXY Sol 3' + model: 'Galaxy Sol 3' - regex: '(?:SAMSUNG-)?SM-J727AZ(?:[);/ ]|$)' - model: 'GALAXY Halo' + model: 'Galaxy Halo' - regex: '(?:SAMSUNG-)?SM-J327AZ' - model: 'GALAXY Amp Prime 2' + model: 'Galaxy Amp Prime 2' - regex: '(?:SAMSUNG-)?SM-J337AZ' - model: 'GALAXY Amp Prime 3 (2018)' + model: 'Galaxy Amp Prime 3 (2018)' # explicit phablet models - - regex: '(?:SAMSUNG-)?SM-(?:F900[0FU]|F907[BN])' - model: 'GALAXY Fold' + - regex: '(?:SAMSUNG-)?SM-(?:F900[0FUW]|F907[BN])|SCV44' + model: 'Galaxy Fold' + device: 'phablet' + - regex: '(?:SAMSUNG-)?(?:SM-F711|SCG12|SC-54B)' + model: 'Galaxy Z Flip 3' + device: 'phablet' + - regex: '(?:SAMSUNG-)?SM-F916(?:U1|[0BNQUW])|SCG05' + model: 'Galaxy Z Fold 2 5G' + device: 'phablet' + - regex: '(?:SAMSUNG-)?(?:SM-F926|SC-55B|SCG11)' + model: 'Galaxy Z Fold 3 5G' device: 'phablet' - regex: '(?:SAMSUNG-)?GT-I9060(?:[);/ ]|$)' - model: 'GALAXY Grand Neo' + model: 'Galaxy Grand Neo' device: 'phablet' - regex: '(?:SAMSUNG-)?GT-I9063' - model: 'GALAXY Grand Neo Duos' + model: 'Galaxy Grand Neo Duos' device: 'phablet' - regex: '(?:SAMSUNG-)?GT-I9(?:080|128)' - model: 'GALAXY Grand' + model: 'Galaxy Grand' device: 'phablet' - regex: '(?:SAMSUNG-)?GT-I9168' - model: 'GALAXY Grand Neo+' + model: 'Galaxy Grand Neo+' device: 'phablet' - regex: '(?:SAMSUNG-)?GT-I9082' - model: 'GALAXY Grand Duos' + model: 'Galaxy Grand Duos' device: 'phablet' - regex: '(?:SAMSUNG-)?GT-N7000' - model: 'GALAXY Note' + model: 'Galaxy Note' device: 'phablet' - - regex: 'SC-01G(?:[);/ ]|$)' - model: 'GALAXY Note Edge' + - regex: '(?:SC-01G|SCL24)(?:[);/ ]|$)' + model: 'Galaxy Note Edge' device: 'phablet' - regex: '(?:SAMSUNG-)?SM-N935[FSLK](?:[);/ ]|$)' - model: 'GALAXY Note Fan Edition' + model: 'Galaxy Note Fan Edition' device: 'phablet' - - regex: '(?:SAMSUNG-)?(?:(?:GT-)?N7100|SCH-I605|SCH-N719|SCH-R950|SPH-L900)(?:[);/ ]|$)' - model: 'GALAXY Note II' + - regex: '(?:SAMSUNG-)?(?:(?:GT-)?N7100|SCH-(?:I605|N719|R950)|SPH-L900)(?:[);/ ]|$)' + model: 'Galaxy Note II' device: 'phablet' - regex: '(?:SAMSUNG-)?GT-N7105' - model: 'GALAXY Note II LTE' + model: 'Galaxy Note II LTE' device: 'phablet' - - regex: '(?:SAMSUNG-)?SM-G710[25L]?(?:[);/ ]|$)' - model: 'GALAXY Grand 2' + - regex: '(?:SAMSUNG-)?SM-G710(?:2T|5[HL]|[25689KLS])?(?:[);/ ]|$)' + model: 'Galaxy Grand 2' device: 'phablet' - regex: '(?:SAMSUNG-)?SM-G720(?:AX|N0|[02])(?:[);/ ]|$)' - model: 'GALAXY Grand Max' - - regex: '(?:SAMSUNG-)?SM-(?:G53(?:0[AFTYHWMP]|0[AF]Z|1[FH]|0[689]W|0MU|0BT|0R[47])|S920L)(?:[);/ ]|$)' - model: 'GALAXY Grand Prime' + model: 'Galaxy Grand Max' + - regex: '(?:SAMSUNG-)?SM-(?:G530(?:[689]W|[AF]Z|BT|MU|R[47]|[AFHMPTWY])|G531[FH]|S920L)(?:[);/ ]|$)' + model: 'Galaxy Grand Prime' device: 'phablet' - regex: '(?:SAMSUNG-)?SM-G531(?:BT|[MY])(?:[);/ ]|$)' - model: 'GALAXY Grand Prime VE Duos' + model: 'Galaxy Grand Prime VE Duos' device: 'phablet' - regex: '(?:SAMSUNG-)?SM-G532F(?:[);/ ]|$)' - model: 'GALAXY Grand Prime Plus' # also GALAXY J2 Prime + model: 'Galaxy Grand Prime Plus' # also Galaxy J2 Prime device: 'phablet' - regex: '(?:SAMSUNG-)?SM-G532MT(?:[);/ ]|$)' - model: 'GALAXY J2 Prime (TV)' + model: 'Galaxy J2 Prime (TV)' device: 'phablet' - regex: '(?:SAMSUNG-)?SM-G532[MG](?:[);/ ]|$)' - model: 'GALAXY J2 Prime' + model: 'Galaxy J2 Prime' device: 'phablet' - regex: '(?:SAMSUNG-)?SM-N7502(?:[);/ ]|$)' - model: 'GALAXY Note 3 Neo Duos' + model: 'Galaxy Note 3 Neo Duos' device: 'phablet' - - regex: '(?:SAMSUNG-)?SM-N750[QL50]?' - model: 'GALAXY Note 3 Neo' + - regex: '(?:SAMSUNG-)?SM-N750[05LQ]?' + model: 'Galaxy Note 3 Neo' device: 'phablet' - regex: '(?:SAMSUNG-)?SM-N9002(?:[);/ ]|$)' - model: 'GALAXY Note 3 Duos' + model: 'Galaxy Note 3 Duos' device: 'phablet' - regex: '(?:SAMSUNG-)?SM-9005(?:[);/ ]|$)' - model: 'GALAXY Note 3 LTE' + model: 'Galaxy Note 3 LTE' device: 'phablet' - - regex: '(?:SAMSUNG-)?(?:SM-N900(?:[05689][VQ]?|[AKLPSTV]|W8)?|SCL22|SC-01F(?:[);/ ]|$))' - model: 'GALAXY Note 3' + - regex: '(?:SAMSUNG-)?(?:SM-N900(?:W8|[05689][VQ]?|[AKLPSTV])?|SCL22|SC-01F|SC-02F)' + model: 'Galaxy Note 3' device: 'phablet' - regex: '(?:SAMSUNG-)?SM-(?:N910|910U)|N9100(?:[);/ ]|$)' - model: 'GALAXY Note 4' + model: 'Galaxy Note 4' device: 'phablet' - - regex: '(?:SAMSUNG-)?SM-N916[SKL]' - model: 'GALAXY Note 4 LTE' + - regex: '(?:SAMSUNG-)?SM-N916[KLS]' + model: 'Galaxy Note 4 LTE' device: 'phablet' - regex: '(?:SAMSUNG-)?SM-N915' - model: 'GALAXY Note 4 Edge' + model: 'Galaxy Note 4 Edge' device: 'phablet' - - regex: '(?:SAMSUNG-)?SM-N920(?:[0ACGIKLSTPFVX]|R[467]|W8)' - model: 'GALAXY Note 5' + - regex: '(?:SAMSUNG-)?SM-N920(?:R[467]|W8|[0ACFGIKLPSTVX])' + model: 'Galaxy Note 5' device: 'phablet' - regex: '(?:SAMSUNG-)?SM-N9208' - model: 'GALAXY Note 5 Duos' + model: 'Galaxy Note 5 Duos' device: 'phablet' - regex: '(?:SAMSUNG-)?SM-G750(?:8Q|[9AFH])' - model: 'GALAXY Mega 2' + model: 'Galaxy Mega 2' device: 'phablet' - regex: '(?:SAMSUNG-)?GT-I915[028]' - model: 'GALAXY Mega 5.8' + model: 'Galaxy Mega 5.8' device: 'phablet' - regex: '(?:SAMSUNG-)?GT-I920[05]' - model: 'GALAXY Mega 6.3' + model: 'Galaxy Mega 6.3' device: 'phablet' - - regex: '(?:SAMSUNG-)?(?:SM-N930[VFST0P]|SCV34)' - model: 'GALAXY Note 7' + - regex: '(?:SAMSUNG-)?(?:SM-N930(?:R[467]|W8|[0AFKLPSTUVX])|SCV34)' + model: 'Galaxy Note 7' device: 'phablet' - regex: '(?:SAMSUNG[- ])?SM-N950|SCV37|SC-01K' - model: 'GALAXY Note 8' + model: 'Galaxy Note 8' device: 'phablet' - regex: '(?:SAMSUNG[- ])?(?:SM-N960|SCV40|SC-01L)' - model: 'GALAXY Note 9' + model: 'Galaxy Note 9' device: 'phablet' - - regex: '(?:SAMSUNG[- ])?SM-(?:N970(?:U1|W8|[089DFJKLSXUW])|N971N)' - model: 'GALAXY Note 10' + - regex: '(?:SAMSUNG[- ])?SM-(?:N970(?:U1|W8|[089DFJKLSUWX])|N971N)' + model: 'Galaxy Note 10' device: 'phablet' - regex: '(?:SAMSUNG[- ])?SM-N770[FX]' - model: 'GALAXY Note 10 Lite' + model: 'Galaxy Note 10 Lite' device: 'phablet' - - regex: '(?:SAMSUNG[- ])?(?:SM-N975(?:[0FUXW]|U1|Xu)|SM-N976[0BVNUQ]|SC-01M|SCV45)' - model: 'GALAXY Note 10+' + - regex: '(?:SAMSUNG[- ])?(?:SM-N975(?:U1|XU|[0CFUWX])|SM-N976[0BVNQU]|SC-01M|SCV45)' + model: 'Galaxy Note 10+' device: 'phablet' - - regex: '(?:SAMSUNG[- ])?(?:SM-N980(?:F|F/DS))' - model: 'GALAXY Note 20' + - regex: '(?:SAMSUNG[- ])?(?:SM-N980(?:F/DS|F))' + model: 'Galaxy Note 20' device: 'phablet' - - regex: '(?:SAMSUNG[- ])?(?:SM-N981(?:B|B/DS|N|U|U1|W))' - model: 'GALAXY Note 20 5G' + - regex: '(?:SAMSUNG[- ])?(?:SM-N981(?:B/DS|U1|[0BNUW]))' + model: 'Galaxy Note 20 5G' device: 'phablet' - - regex: '(?:SAMSUNG[- ])?(?:SM-N985(?:F|F/DS))' - model: 'GALAXY Note 20 Ultra' + - regex: '(?:SAMSUNG[- ])?(?:SM-N985(?:F/DS|F))' + model: 'Galaxy Note 20 Ultra' device: 'phablet' - - regex: '(?:SAMSUNG[- ])?(?:SM-N986(?:B/DS|U1|[BNWU])|SCG06)' - model: 'GALAXY Note 20 Ultra 5G' + - regex: '(?:SAMSUNG[- ])?(?:SM-N986(?:B/DS|U1|[0BNUW])|SC-53A|SCG06)' + model: 'Galaxy Note 20 Ultra 5G' device: 'phablet' - regex: '(?:SAMSUNG-)?SM-W750V' @@ -11865,12 +17008,17 @@ Samsung: model: 'E2152' device: 'feature phone' + # explicit notebooks + - regex: 'Chromebook 3' + model: 'Chromebook 3' + device: 'desktop' + # general detections - regex: '(?:SAMSUNG-)?(GT-(P|N8|N5)[0-9]+[a-z]?)' device: 'tablet' model: '$1' - regex: 'SC-02C' - model: 'GALAXY S II' + model: 'Galaxy S II' - regex: '(?:SAMSUNG-)?((?:SM-[TNP]|GT-P)[a-z0-9_\-]+)' device: 'tablet' model: '$1' @@ -11880,9 +17028,9 @@ Samsung: device: 'tv' model: 'Smart TV' - regex: 'Galaxy ([^/;]+) Build' - model: 'GALAXY $1' + model: 'Galaxy $1' - regex: 'Galaxy ([a-z0-9]+)' - model: 'GALAXY $1' + model: 'Galaxy $1' - regex: 'SAMSUNG[\-][ ]?([a-z0-9]+[\-_][a-z0-9]+)' model: '$1' - regex: 'SAMSUNG;[ ]?([a-z0-9]+[\-_][a-z0-9]+)' @@ -11891,6 +17039,8 @@ Samsung: model: '$1' - regex: 'SAMSUNG;[ ]?([a-z0-9 ]+)' model: '$1' + - regex: 'SEC_SC-([a-z0-9]+)' + model: 'SC-$1' # NTT DoCoMo - regex: 'SEC-([a-z0-9]+)' model: '$1' - regex: 'SAM-([a-z0-9]+)' @@ -11923,13 +17073,17 @@ Selfix: model: 'Slash 6' - regex: 'VOYAGER-V45' model: 'Voyager V45' + - regex: 'SELFIX_Q5_URBAN' + model: 'Q5 Urban' -# Sencor +# Sencor (sencor.cz or sencor.com) Sencor: - regex: 'Sencor|ELEMENT[ _]?(?:7|8|9\.7|10[ _]1)(?:[ _]?V[23])?(?:[);/ ]|$)|ELEMENT[ _]?(?:P[0-9]+)(?:[);/ ]|$)' + regex: 'Sencor|(?:ELEMENT[ _]?(?:(?:7|8|9\.7|10[ _]1)(?:[ _]?V[23])?|P[0-9]+|10.1 Q001)|10_1Q205)(?:[);/ ]|$)' device: 'tablet' models: # explicit tablet models + - regex: '(?:SENCOR[ _])?Element (10\.1) (Q001)' + model: 'Element $1" $2' - regex: '(?:SENCOR[ _])?ELEMENT[ _]?7[ _]?V3' model: 'Element 7 V3' - regex: '(?:SENCOR[ _])?ELEMENT[ _]?7[ _]?V2[ _]BASIC' @@ -11950,6 +17104,10 @@ Sencor: model: 'Element 9.7' - regex: '(?:SENCOR[ _])?ELEMENT10[ _]1' model: 'Element 10.1' + - regex: '(?:SENCOR[ _])?(7Q105)(?:[);/ ]|$)' + model: '$1' + - regex: '(10)_(1Q205)(?:[);/ ]|$)' + model: '$1.$2' - regex: '(?:SENCOR[ _])?ELEMENT[ _]?P([0-9]+)' model: 'Element P$1' @@ -11958,43 +17116,88 @@ Sencor: - regex: 'Sencor[ _]([^;/]+) Build' model: '$1' -# Senwa +# Senwa (senwamobile.com) Senwa: - regex: 'Senwa|(?:S\-?(?:471|7[12]5|6[01]5|915|905TL|1000|5018)|V705B)[ /;\)]' + regex: 'Senwa|(?:S\-?(?:471|7[12]5|6[01]5|915|905TL|1000|5018)|V705B|LS50F| LS50?|LS5518H|LS5718|LS5018F)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'S\-?471[ /;\)]' + - regex: 'S-?471(?:[);/ ]|$)' model: 'Jazz' - - regex: 'S\-?605[ /;\)]' + - regex: 'S-?605(?:[);/ ]|$)' model: 'City' - - regex: 'S\-?905TL[ /;\)]' + - regex: 'S-?905TL(?:[);/ ]|$)' model: 'Odin' - - regex: 'S\-?1000[ /;\)]' + - regex: 'S-?1000(?:[);/ ]|$)' model: 'Odin' - - regex: 'S\-?5018[ /;\)]' + - regex: 'S-?5018(?:[);/ ]|$)' model: 'Inizio' - - regex: 'S\-?(615|7[12]5|915)[ /;\)]' + - regex: 'LS5018F(?:[);/ ]|$)' + model: 'Inizio LTE' + - regex: 'S-?(615|7[12]5|915)(?:[);/ ]|$)' model: 'S$1' - - regex: 'V705B[ /;\)]' + - regex: 'V705B(?:[);/ ]|$)' model: 'V705B' - - regex: 'Senwa[ _-]*([^;/]+) Build' - model: '$1' - - regex: 'Senwa[ _-]*([^ ;/)]+)(?:[);/ ]|$)' - model: '$1' - -# Sky + - regex: 'LS50F(?:[);/ ]|$)' + model: 'Evolution' + - regex: ' LS50(?:[);/ ]|$)' + model: 'Pegasus' + - regex: ' LS5(?:[);/ ]|$)' + model: 'Thor' + - regex: 'LS5518H(?:[);/ ]|$)' + model: 'Sparkly' + - regex: 'LS5718(?:[);/ ]|$)' + model: 'Diamond' + - regex: 'Senwa[ _-]*([^;/]+)(?: Build|[;)])' + model: '$1' + +# Sky or Sky Devices (skydevices.com) Sky: - regex: '(SKY|Elite|Fuego)[_ ][3-7]\.[05]([A-Z]{1,2})?|Elite_5_5_Octa|Platinum_(5.0M|M5)' + regex: '(?:SKY|Elite|Fuego)[_ ][3-7]\.[05](?:[A-Z]{1,2})?|Elite[ _](?:5_0T|M45|[45]T|45T|GO|M5Plus|[TE]55|T[46]|[ABCHP]5|5_5_Octa|Octa|[BCEHPT]55)|Platinum[_ ](?:5.0M|5\.5C|[56]\.[05]\+?|[HJM]5|[ABCMP]4|[ACGK]55|[ABDEFG]5|A57|P9|X|UNO|VIEW2|O|4\.0|4_0Plus)|PLATINUMVIEW|SKY[ _](?:55M|Pro_III)|SKYVISION|SKY Black| SKY[ _]Prestige' device: 'smartphone' models: - - regex: 'Platinum_(5.0M|M5)' + - regex: 'Platinum[_ ](?:5\.0M|M5)' model: 'Platinum 5.0M' + - regex: 'Platinum[_ ]5\.5C' + model: 'Platinum 5.5C' + - regex: 'Platinum[_ ]([56])\.([05])\+' + model: 'Platinum $1.$2 Plus' + - regex: 'Platinum_4_0Plus' + model: 'Platinum 4.0 Plus' + - regex: 'Platinum[ _]4\.0' + model: 'Platinum 4.0' + - regex: 'Platinum[_ ](P9) Pro(?:[);/ ]|$)' + model: 'Platinum $1 Pro' + - regex: 'Platinum[_ ]([ABCMP]4|[HJ]5|[ACGK]55|[ABDEFG]5|A57|P9|X|UNO|O|6\.0)(?:[);/ ]|$)' + model: 'Platinum $1' + - regex: 'Platinum[_ ]?VIEW(2)?(?:[);/ ]|$)' + device: 'tablet' + model: 'Platinum View$1' + - regex: 'SKYVISION' + device: 'tablet' + model: 'Vision' + - regex: 'Elite Octa(?:[);/ ]|$)' + device: 'tablet' + model: 'Elite Octa' - regex: 'Elite_5_5_Octa' model: 'Elite 5.5 Octa' - - regex: 'Elite[_ ]([3-7]\.[05](?:[A-Z]{1,2})?\+?)' + - regex: 'Elite M5Plus' + model: 'Elite M5 Plus' + - regex: 'Elite[ _](M45|Go|[45]T|T[46]|[ABCHP]5|[ABCEHPT]55|45T)(?:[);/ ]|$)' model: 'Elite $1' + - regex: 'Elite[_ ]([3-7])[\._]([05](?:[A-Z]{1,2})?\+?)' + model: 'Elite $1.$2' - regex: 'Fuego[_ ]([3-7]\.[05](?:[A-Z]{1,2})?\+?)' model: 'Fuego $1' + - regex: 'SKY Black' + model: 'Black' + - regex: 'SKY_Pro_III' + model: 'Pro III' + - regex: 'SKY 55M' + model: '55M' + - regex: 'SKY[ _]PrestigeX' + model: 'Prestige X' + - regex: 'SKY[ _]Prestige' + model: 'Prestige' - regex: 'SKY[_ ]([3-7]\.[05](?:[A-Z]{1,2})?)' model: '$1' @@ -12048,7 +17251,7 @@ Smartfren: # Smartisan Smartisan: - regex: '(SM(?:70[15]|[89]01|919)|OD10[35]|YQ60[1357]|DE106|DT1901A|O[CE]106|OS103|O[CS]105)[ /;\)]' + regex: 'Smartisan[_ ]|(SM(?:70[15]|[89]01|919)|OD10[35]|YQ60[1357]|DT2002C|DE106|DT190[12]A|O[CE]106|OS103|O[CS]105)[ /;\)]' device: 'smartphone' models: - regex: 'SM70[15]' @@ -12071,14 +17274,18 @@ Smartisan: model: 'Nut Pro 2s' - regex: 'OC10[56][ /;\)]' model: 'Nut 3' - - regex: 'DT1901A[ /;\)]' + - regex: 'DT2002C[ /;\)]' + model: 'Nut 2' + - regex: 'DT190[12]A[ /;\)]' model: 'Nut Pro 3' - regex: 'OS103[ /;\)]' model: 'JianGuo Pro 2' + - regex: 'Smartisan U3 Pro' + model: 'U3 Pro' # STF Mobile STF Mobile: - regex: 'Fractal|AERIAL PLUS|Origins Pro' + regex: '(?:AERIAL PLUS|BLOCK_MINI|BLOCK GO|BLOCK 3|Fractal|Joy Pro|Origins Pro|SLAY II)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Fractal' @@ -12087,6 +17294,18 @@ STF Mobile: model: 'Origins Pro' - regex: 'AERIAL PLUS' model: 'Aerial Plus' + - regex: 'BLOCK_MINI' + model: 'Block Mini' + - regex: 'BLOCK 3 mini' + model: 'Block 3 Mini' + - regex: 'BLOCK 3' + model: 'Block 3' + - regex: 'BLOCK GO' + model: 'Block Go' + - regex: 'SLAY II' + model: 'Slay II' + - regex: 'Joy Pro' + model: 'Joy Pro' # STK STK: @@ -12100,7 +17319,7 @@ STK: # Stonex Stonex: - regex: 'STX[ -]([^;/]+)' + regex: 'STX[ -]([^;/]+)|STONE EVO' device: 'smartphone' models: - regex: 'STX[ -]([^;/]+) Build' @@ -12110,19 +17329,19 @@ Stonex: # SuperSonic SuperSonic: - regex: '(SC-[0-9]+[a-z]+)' + regex: '(SC-[0-9]+[a-z]+|SC-2110)' device: 'tablet' model: '$1' # Supra Supra: - regex: 'SUPRA|NVTAB 7.0 3G' + regex: 'SUPRA|NVTAB 7.0 3G|M74C 3G' device: 'smartphone' models: - - regex: 'SUPRA[ _]([^;/]+)(?: Build|\))' + - regex: 'SUPRA[ _]([^;/)]+)(?: Build|[;)])' device: 'tablet' model: '$1' - - regex: '(NVTAB 7.0 3G)' + - regex: '(NVTAB 7.0 3G|M74C 3G)' device: 'tablet' model: '$1' @@ -12142,26 +17361,32 @@ SunVan: - regex: 'SUNVAN[ _\-]?([^);/ ]+)' model: '$1' -# SWISSMOBILITY +# SWISSMOBILITY or Swiss Mobility SWISSMOBILITY: - regex: 'SCHR9GR|ZUR722M' + regex: '(?:SCHR9G[RL]|PRA(?:U8|100|557|507)|ZUR(?:722M|70016W?|700[RW]|805A))(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'SCHR9GR' + - regex: 'SCHR9G[RL]' model: 'SCHON R9' + - regex: 'PRA(U8|100|557|507)(?:[);/ ]|$)' + model: 'PRA$1' - regex: 'ZUR722M' device: 'phablet' model: 'Z72 go' + - regex: 'ZUR(70016W?|700[RW]|805A)(?:[);/ ]|$)' + device: 'tablet' + model: 'ZUR$1' + # Thomson Thomson: - regex: '(?:Primo(7|8)|QM73[45]-8G|QM734-2|QM736-8G\(HD\)|8950|MID1002|5014G)(?:[);/ ]|$)|(?:Tlink|Every)[0-9]+' + regex: '(?:Primo(7|8)|QM73[45]-8G|QM734-2|QM736-8G\(HD\)|(?<!\.)8950|MID1002|5014G|TEO7RK|TEO104G|Friendly_TH101|Delight TH201)(?:[);/ ]|$)|(?:Tlink|Every)[0-9]+|THOMSON,' device: 'tablet' models: # already detected as manta device #- regex: 'MID1002' # model: 'MID1002' - - regex : 'Primo(7|8)' + - regex: 'Primo(7|8)' model: 'Primo $1' - regex: 'QM734-2' model: 'QM734-2' @@ -12171,8 +17396,10 @@ Thomson: model: 'QM735-8G' - regex: 'QM736-8G\(HD\)' model: 'QM736-8G (HD)' - - regex: '8950(?:[);/ ]|$)' + - regex: '(?<!\.)8950(?:[);/ ]|$)' model: '3G 8950' + - regex: 'TEO(7RK|104G)(?:[);/ ]|$)' + model: 'TEO$1' - regex: '5014G(?:[);/ ]|$)' device: 'smartphone' @@ -12183,10 +17410,31 @@ Thomson: - regex: 'Every([0-9]+)' device: 'smartphone' model: 'Every$1' + - regex: 'Delight TH201' + device: 'smartphone' + model: 'Delight TH201' + - regex: 'Friendly_TH101' + device: 'smartphone' + model: 'Friendly TH101' + - regex: '((?:49|55)UC6306|55UC63|32HD55|40FD54|55UD63)' + device: 'tv' + model: '$1' + +# Tanix +Tanix: + regex: '(?:TX5 MAX|TX[69]s|TX3 Mini)(?:[);/ ]|$)' + device: 'tv' + models: + - regex: 'TX([69])s' + model: 'TX$1s' + - regex: 'TX5 MAX' + model: 'TX5 Max' + - regex: 'TX3 Mini' + model: 'TX3 Mini' # pantech Pantech: - regex: 'Pantech|P[GN]-|PT-[a-z0-9]{3,}|TX[T]?[0-9]+|IM-[a-z0-9]+(?:[);/ ]|$)|ADR910L' + regex: 'Pantech|P[GN]-|PT-[a-z0-9]{3,}|(?<!Winmax )TX[T]?[0-9]+|IM-[a-z0-9]+(?:[);/ ]|$)|ADR910L' device: 'smartphone' models: # explicit smartphone models @@ -12201,6 +17449,8 @@ Pantech: model: '$1' - regex: '(P[GTN]-[a-z0-9]+)' model: '$1' + - regex: '(TX[T]?[0-9]+) Pro' + model: '$1 Pro' - regex: '(TX[T]?[0-9]+)' model: '$1' - regex: '(IM-[a-z0-9]+)(?:[);/ ]|$)' @@ -12220,17 +17470,30 @@ Ployer: - regex: 'MOMO([0-9][^);/]*)(?:[);/]|$)' model: 'MOMO $1' -# Plum +# Plum (plum-mobile.com) Plum: - regex: 'PLUM ' + regex: 'PLUM[ _]' device: 'smartphone' models: - regex: 'Z405' model: 'Gator 3' + - regex: 'Z407' + model: 'Axe 4' + - regex: 'Z516' + model: 'Compass' + - regex: 'Z811' + device: 'tablet' + model: 'Optimax 11' + - regex: 'Z709' + device: 'tablet' + model: 'Optimax 7' + - regex: 'Z712' + device: 'tablet' + model: 'Optimax 12' # Polaroid Polaroid: - regex: 'Polaroid|(?:PMID|MIDC)[0-9a-z]+(?:[);/ ]|$)|MID(?:1014|0714)|PRO[VG]?(?:[0-9]{3,}[a-z]*|[0-9]{2}[a-z])|(?:P(?:400[56]|4526|500[56]|502[56]|504[67]|552[56])A|PSPC(?:505|550|[MZL]20A0|K21NA)|SIGMA 5)(?:[);/ ]|$)' + regex: 'Polaroid|(?:PMID|MIDC)[0-9a-z]+(?:[);/ ]|$)|MID(?:1014|0714)|PRO[VG]?(?:[0-9]{3,}[a-z]*|[0-9]{2}[a-z])|(?:P(?:400[56]|4526|500[56]|502[56]|504[67]|552[56])A|P902/A900|PSPC(?:505|550|[MZL]20A0|K2[01]NA)|SIGMA 5|MIDS145PXE|MIDS747PX|MID4004JBL|MIDS185PR|PSPTD21NA|POMDTB006|PSPCL30A0|PSN-H116)(?:[);/ ]|$)' device: 'smartphone' models: # explicit smartphone models @@ -12240,14 +17503,20 @@ Polaroid: model: 'Turbo C5' - regex: 'P4006A' model: 'Turbo D4' + - regex: 'PSPTD21NA' + model: 'Turbo D2 Plus' - regex: 'P4526A' model: 'Turbo E' - regex: 'PSPC(505|550)' model: 'Cosmo $1' + - regex: 'PSPCL30A0' + model: 'Cosmo C6' - regex: 'P5006A' model: 'Cosmo K' - regex: 'P5526A' model: 'Cosmo K Plus' + - regex: 'PSPCK20NA' + model: 'Cosmo K2' - regex: 'PSPCK21NA' model: 'Cosmo K2 Plus' - regex: 'P5026A' @@ -12268,6 +17537,8 @@ Polaroid: model: 'L5s' - regex: 'PRO4611(?:PR201)?' model: 'Pro4611' + - regex: 'PRO5023' + model: 'Phantom 5' - regex: 'PROV400' model: 'Agate' - regex: 'PROV350' @@ -12276,13 +17547,28 @@ Polaroid: model: 'Sigma 5' - regex: 'PRO([VG]?(?:[0-9]{3,}[a-z]*|[0-9]{2}[a-z]))' model: 'Pro$1' + - regex: 'PSPT350' + model: 'Turbo 350 Gris' + - regex: 'PSN-H116' + model: 'Snap' - - regex: '(MID(?:1014|0714))' + - regex: 'POLAROID, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' + + - regex: 'MIDS185PR' + model: 'Pure 10.1"' + device: 'tablet' + - regex: '(MID(?:1014|0714|S145PXE|S747PX|4004JBL)|POMDTB006)' model: '$1' device: 'tablet' + - regex: '((?:PMID|MIDC)[0-9a-z]+)(?:[);/ ]|$)' model: '$1' device: 'tablet' + - regex: '(P902/A900)(?:[);/ ]|$)' + model: '$1' + device: 'tablet' - regex: 'Polaroid' model: '' device: 'tablet' @@ -12316,14 +17602,20 @@ Polytron: model: 'Rocket R2' - regex: 'POLYTRON[ _-]R2407' model: 'Rocket R3' + - regex: 'POLYTRON[ _-]R2452' + model: 'Rocket S1' - regex: 'POLYTRON[ _-]R2457' model: 'Rocket S2' - regex: 'POLYTRON[ _-]R2501' model: 'Rocket T1' + - regex: 'POLYTRON[ _-]R2507' + model: 'Rocket T3' - regex: 'POLYTRON[ _-]R2509SE' model: 'Rocket T6 SE' - regex: 'POLYTRON[ _-]R2509' model: 'Rocket T6' + - regex: 'POLYTRON[ _-]R250A' + model: 'Rocket T7' - regex: 'POLYTRON[ _-]R2506' model: 'Rocket T4' - regex: 'POLYTRON[ _-](?:R3450|W1400)' @@ -12344,6 +17636,8 @@ Polytron: model: 'Rocket L501' - regex: 'POLYTRON[ _]P520' model: 'Prime 7S' + - regex: 'POLYTRON[ _]P552' + model: 'Prime 7 Pro' - regex: '4G500' model: 'Zap 6 Cleo' - regex: 'W8480' @@ -12373,47 +17667,209 @@ Polytron: model: 'Rocket Pad' device: 'tablet' - -# Positivo +# Positivo (www.positivoempresas.com.br) Positivo: - regex: 'YPY_S450' + regex: '(?:YPY_S450|Twist 4(?: Fit|Pro)?|T1085|Positivo Q20|M10 4G PRO X)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'YPY_S450' model: 'YPY S450' + - regex: 'Positivo (Q20)(?:[);/ ]|$)' + model: '$1' + - regex: 'Twist 4 (Fit|Pro)' + model: 'Twist 4 $1' + - regex: 'Twist 4' + model: 'Twist 4' + - regex: 'T1085' + device: 'tablet' + model: 'T1085' + - regex: 'M10 4G PRO X' + device: 'tablet' + model: 'M10 4G Pro X' -# Prestigio +# Prestigio (prestigio.ru) Prestigio: - regex: '(?:PMP|PAP|PMT|PSP|PGPS)[0-9]+[a-z0-9_]+(?:[);/ ]|$)|Muze C3' + regex: 'Prestigio 5500 DUO|(?:PMP|PAP|PMT|PSP|PGPS)[0-9]+[a-z0-9_]+(?:[);/ ]|$)|Muze C3' device: 'tablet' models: - - regex: 'PMT3277_3G' - model: 'MultiPad Ranger 7.0 3G' - - regex: 'PGPS7799CIS08GBPG(?:[);/ ]|$)' - model: 'Geo Vision Tour 3' - - regex: 'PGPS7797(?:[);/ ]|$)' - model: 'Geo Vision Tour 2' - - regex: 'PMT3201_4G' - model: 'Grace 4G' + # explicit smartphone models + - regex: 'Prestigio 5500 DUO' # PAP5500DUO + model: 'MultiPhone 5500 Duo' + device: 'smartphone' + - regex: 'PSP(5517|550[578])DUO(?:[);/ ]|$)' + model: 'MultiPhone $1 Duo' + device: 'smartphone' - regex: 'PSP5551DUO' + device: 'smartphone' model: 'Grace S5' - - regex: 'PMT3287_3G' - model: 'MultiPad Ranger 8.0 3G' - - regex: 'PMT3208[_ ]3G' - model: 'MultiPad Wize 8.0 3G' - - regex: 'PSP7546DUO([ _][A-Z]{2})?' - model: 'X Pro' - - regex: 'PSP7610DUO([ _][A-Z]{2})?' - model: 'S Max' - - regex: '(PM[PT][0-9]+[a-z0-9_]+)(?:[);/ ]|$)' - model: '$1' - - regex: '((?:PAP|PSP)[0-9]+[a-z0-9_]+(?: DUO)?)(?:[);/ ]|$)' - model: '$1' + - regex: 'PSP7590DUO' device: 'smartphone' - - regex: 'Muze C3(?:[);/ ]|$)' - model: 'Muze C3' + model: 'Grace V7 LTE' + - regex: 'PSP7551DUO' device: 'smartphone' - + model: 'Grace S7 LTE' + - regex: 'PSP5470DUO' + device: 'smartphone' + model: 'Grace X5' + - regex: 'PSP5530DUO' + device: 'smartphone' + model: 'Grace Z5' + - regex: 'PSP3533DUO' + device: 'smartphone' + model: 'Grace Z3' + - regex: 'PSP5515DUO' + device: 'smartphone' + model: 'Grace P5' + - regex: 'PSP5552DUO' + device: 'smartphone' + model: 'Grace R5 LTE' + - regex: 'PSP5506DUO' + device: 'smartphone' + model: 'Grace Q5' + - regex: 'PSP5511DUO' + device: 'smartphone' + model: 'Grace M5 LTE' + - regex: 'PSP7501DUO' + device: 'smartphone' + model: 'Grace R7' + - regex: 'PSP7570DUO' + device: 'smartphone' + model: 'Grace P7 LTE' + - regex: 'PSP7572DUO' + device: 'smartphone' + model: 'Grace B7' + - regex: 'PSP3552DUO' + device: 'smartphone' + model: 'Muze H3' + - regex: 'PSP5523DUO' + device: 'smartphone' + model: 'Muze H5 LTE' + - regex: 'PSP3515DUO' + device: 'smartphone' + model: 'Muze M3 LTE' + - regex: 'PSP3495DUO' + device: 'smartphone' + model: 'Muze V3 LTE' + - regex: 'PSP5513DUO' + device: 'smartphone' + model: 'Muze D5 LTE' + - regex: 'PSP5520DUO' + device: 'smartphone' + model: 'Muze B5' + - regex: 'PSP5518DUO' + device: 'smartphone' + model: 'Muze X5 LTE' + - regex: 'PSP5553DUO' + device: 'smartphone' + model: 'Muze F5 LTE' + - regex: 'PSP5502DUO' + device: 'smartphone' + model: 'Muze A5' + - regex: 'PSP5545DUO' + device: 'smartphone' + model: 'Muze E5 LTE' + - regex: 'PSP7512DUO' + device: 'smartphone' + model: 'Muze E7 LTE' + - regex: 'PSP3511DUO' + device: 'smartphone' + model: 'Muze G3 LTE' + - regex: 'PSP5522DUO' + device: 'smartphone' + model: 'Muze G5 LTE' + - regex: 'PSP7550DUO' + device: 'smartphone' + model: 'Muze G7 LTE' + - regex: 'PSP7510DUO' + device: 'smartphone' + model: 'Muze C7 LTE' + - regex: '(?:Muze C3|PSP3504DUO)(?:[);/ ]|$)' + device: 'smartphone' + model: 'Muze C3' + - regex: 'PSP3512DUO' + device: 'smartphone' + model: 'Muze B3' + - regex: 'PSP3532DUO' + device: 'smartphone' + model: 'Muze F3' + - regex: 'PSP3470DUO' + device: 'smartphone' + model: 'Muze J3' + - regex: 'PSP5524DUO' + device: 'smartphone' + model: 'Muze J5' + - regex: 'PSP7511DUO' + device: 'smartphone' + model: 'Muze B7' + - regex: 'PSP3514DUO' + device: 'smartphone' + model: 'Wize U3' + - regex: 'PSP3513DUO' + device: 'smartphone' + model: 'Wize V3' + - regex: 'PSP3416DUO' + device: 'smartphone' + model: 'Wize YA3' + - regex: 'PSP3406DUO' + device: 'smartphone' + model: 'Wize Y3' + - regex: 'PSP3423DUO' + device: 'smartphone' + model: 'Wize R3' + - regex: 'PSP3471DUO' + device: 'smartphone' + model: 'Wize Q3 LTE' + - regex: 'PSP3510DUO' + device: 'smartphone' + model: 'Wize G3' + - regex: 'PSP3537DUO' + device: 'smartphone' + model: 'Wize NV3' + - regex: 'PSP3528DUO' + device: 'smartphone' + model: 'Wize PX3' + - regex: 'PSP3527DUO' + device: 'smartphone' + model: 'Wize NK3' + - regex: 'PSP3468DUO' + device: 'smartphone' + model: 'Wize OK3' + # explicit tables models + - regex: 'PMT3277_3G' + model: 'MultiPad Ranger 7.0" 3G' + - regex: 'PMT4208' + model: 'Node A8 3G' + - regex: 'PMT4771' + model: 'Root A10 3G' + - regex: 'PMP7070C3G' + model: 'MultiPad 4 Diamond 7.0" 3G' + - regex: 'PGPS7799CIS08GBPG(?:[);/ ]|$)' + model: 'Geo Vision Tour 3' + - regex: 'PGPS7797(?:[);/ ]|$)' + model: 'Geo Vision Tour 2' + - regex: 'PMT(3118|38[74]8|3[12]01|3[12]57|778[18]|5588|5791|577[18]|4327|3768)[_ ]([34])G' + model: 'Grace $1 $2G' + - regex: 'PMT3287_3G' + model: 'MultiPad Ranger 8.0 3G' + - regex: 'PMT4238_4G' + model: 'Q Pro' + - regex: 'PMT(1177|3208|3618|31[357]1|1157|1196|3[10]96|3[17]61)[_ ]([34])GE?' + model: 'MultiPad Wize $1 $2G' + - regex: 'PMT(4638|4311|413[17]|411[178]|3771)[_ ]([34])GE?' + model: 'Wize $1 $2G' + - regex: 'PMT(3231|4231|4667|38[3678]1)[_ ]([34])GE?' + model: 'Muze $1 $2G' + - regex: 'PSP7546DUO([ _][A-Z]{2})?' + model: 'X Pro' + - regex: 'PSP7610DUO([ _][A-Z]{2})?' + model: 'S Max' + # general detection + - regex: '(PM[PT][0-9]+[a-z0-9_]+)(?:[);/ ]|$)' + model: '$1' + - regex: '((?:PAP|PSP)[0-9]+[a-z0-9_]+(?: DUO)?)(?:[);/ ]|$)' + model: '$1' + device: 'smartphone' + # Sanyo Sanyo: regex: 'Sanyo|MobilePhone[ ;]' @@ -12427,14 +17883,14 @@ Sanyo: - regex: 'SCP-?6780' model: 'Innuendo' - - regex: 'SANYO[ \-_]([a-z0-9\-]+)' + - regex: 'SANYO[ /_-]([a-z0-9\-]+)' model: '$1' - regex: 'MobilePhone ([a-z0-9\-]+)' model: '$1' -# Qilive (Auchan) +# Qilive Qilive: - regex: 'Qilive [0-9][^;/]*|Q(7S5[5]?IN4G|7T10INP|8T10IN|8S55IN4G2|8S[56]IN4G|10S5[37]IN4G|10S[56]IN4G|10S[56]IN4GR|9S5IN4G|6T7IN)' + regex: 'Qilive [0-9][^;/]*|Q(7S5[5]?IN4G|7T10INP|T19101HV|8T10IN|8S55IN4G2|8S[56]IN4G|9T9IN|9T(?:7|10)IN4G|9S55IN4G|10S5[37]IN4G|10S[56]IN4G|10S[56]IN4GR|9S5IN4G|6T7IN)' device: 'smartphone' models: - regex: 'Q7S5IN4G' @@ -12449,6 +17905,8 @@ Qilive: model: 'Q8 5.1" 4G' - regex: 'Q9S5IN4G' model: 'Q9 5.0" 4G' + - regex: 'Q9S55IN4G' + model: 'Q9 5.5" 4G' - regex: 'Q10S53IN4G' model: 'Q10 5.3" 4G' - regex: 'Q10S57IN4G' @@ -12466,22 +17924,92 @@ Qilive: - regex: 'Q8T10IN' model: 'Q8 10.1"' device: 'tablet' - - regex: 'Qilive ([0-5][^;/]*) Build' + - regex: 'Q9T7IN4G' + model: 'Q9 7.0" 4G' + device: 'tablet' + - regex: 'Q9T9IN' + model: 'Q9 9.0"' + device: 'tablet' + - regex: 'Q9T10IN4G' + model: 'Q9 10.1" 4G' + device: 'tablet' + - regex: '(QT19101HV)' + model: '$1' + device: 'tablet' + - regex: 'Qilive (1\d+[^;/)]*)(?: Build|[;)])' model: '$1' - - regex: 'Qilive ([0-5][^;/]*)/' + device: 'tablet' + - regex: 'Qilive ([0-5][^;/)]*)(?: Build|[;)])' model: '$1' - - regex: 'Qilive ([6-9][^;/]*) Build' + - regex: 'Qilive ([0-5]*)/' model: '$1' + - regex: '97R-2' + model: '97R2' device: 'tablet' - - regex: 'Qilive ([6-9][^;/]*)/' + - regex: 'Qilive ([6-9][^;/)]*)(?: Build|[;)])' model: '$1' device: 'tablet' -# QMobile +# Vankyo +Vankyo: + regex: 'Vankyo[_ ]|QTAB1010X' + device: 'tablet' + models: + - regex: 'Vankyo[_ ]S(10|[78])' + model: 'MatrixPad S$1' + - regex: 'QTAB(1010X)' + model: 'QTab $1' + +# QMobile or QSmart or Q-Smart (qmobile.com.pk) QMobile: - regex: 'QMobile|QTab|Q-Smart|Noir X1S|LUNA PRO|NICE S' + regex: 'QMobile|QTab(?!10EW)|Q-Smart|(?:E2 Noir|Noir X1S|LUNA PRO|NICE S|JazzX JS(?:[27]|10)(?: PRO)?|LT[57]00[ _]PRO|LT950|Q Infinity|Hot 5|Hot Pro 2|VITA S|i7i 2020|i10[ _]20(?:20|19)|Z12 PRO| GLi)(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'JazzX JS7 PRO' + model: 'Jazz X JS7 Pro' + - regex: 'JazzX JS(2|10)' + model: 'Jazz X JS$1' + - regex: 'Noir X1S' + model: 'Noir X1S' + - regex: 'A600(?:[);/ ]|$)' + model: 'Noir A600' + - regex: 'Z12 PRO' + model: 'Noir Z12 Pro' + - regex: 'E2 Noir' + model: 'E2 Noir' + - regex: 'Hot Pro 2' + model: 'Hot Pro 2' + - regex: 'Hot 5' + model: 'Hot 5' + - regex: 'LT([57]00)[ _]PRO' + model: 'Noir LT$1 Pro' + - regex: 'LUNA PRO' + model: 'Luna Pro' + - regex: 'VITA S' + model: 'Vita S' + - regex: 'NICE S' + model: 'Nice S' + - regex: 'i7i 2020' + model: 'i7i (2020)' + - regex: 'i10[ _]20(20|19)' + model: 'i10 (20$1)' + - regex: 'i8i PRO' + model: 'i8i Pro' + - regex: 'Q Infinity PRO' + model: 'Q Infinity Pro' + - regex: 'Q Infinity E Lite' + model: 'Q Infinity E Lite' + - regex: 'Q Infinity ([FCB])' + model: 'Q Infinity $1' + - regex: '(LT950)(?:[);/ ]|$)' + model: '$1' + - regex: 'GLi Lite(?:[);/ ]|$)' + model: 'GLi Lite' + - regex: ' GLi(?:[);/ ]|$)' + model: 'GLi' + - regex: 'QMobile ENERGY (X[12])(?:[);/ ]|$)' + model: 'Energy $1' + # general detections - regex: 'QTab[ _-]([^;/]+) Build' model: '$1 Tab' device: 'tablet' @@ -12492,24 +18020,45 @@ QMobile: model: '$1' - regex: '(?:QMobile|Q-Smart)[ _-]([^;/)]+)(?:[;/)]|$)' model: '$1' - - regex: 'Noir X1S' - model: 'Noir X1S' - - regex: 'LUNA PRO' - model: 'Luna Pro' - - regex: 'NICE S' - model: 'Nice S' + - regex: 'Q Infinity' + model: 'Q Infinity' + +# Maximus (maximus-mobile.com) +Maximus: + regex: 'Maximus[ _]|(Noir X|G10 max)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(?:Maximus[ _])?(Noir X|D1)(?:[);/ ]|$)' + model: '$1' + - regex: 'G10 max(?:[);/ ]|$)' + model: 'G10 Max' + - regex: 'Maximus_(T2)' + device: 'tablet' + model: '$1' # Quantum Quantum: - regex: 'Quantum (?:Fit|MUV (?:PRO|UP)|Go|Mini|V|You [2E])(?:[);/ ]|$)' + regex: '(?:Quantum (?:Fit|Five|UP|MUV (?:PRO|UP)|Go|Mini|V|You [2E])|Q20|LIO\+|Q-TITANO(_007i|-H2)?|Q-Pulse70M|Q-Wave(?:101|71M))(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Quantum (Fit|Go|Mini|V|You [2E])(?:[);/ ]|$)' + - regex: 'LIO\+(?:[);/ ]|$)' + model: 'Lio Plus' + - regex: 'Quantum (Fit|Five|Go|Mini|V|You [2E]|Q20)(?:[);/ ]|$)' model: '$1' - regex: 'Quantum MUV PRO(?:[);/ ]|$)' model: 'MUV Pro' - regex: 'Quantum MUV UP(?:[);/ ]|$)' model: 'MUV Up' + - regex: 'Quantum UP(?:[);/ ]|$)' + model: 'Up' + - regex: 'Q-TITANO[ _-](BOS|X|M1|007i|H[12]|AK47)(?:[);/ ]|$)' + model: 'Q-Titano $1' + - regex: 'Q-Pulse70M(?:[);/ ]|$)' + device: 'tablet' + model: 'Q-Pulse 70M' + - regex: 'Q-Wave(101|71M)(?:[);/ ]|$)' + device: 'tablet' + model: 'Q-Wave $1' # Quechua Quechua: @@ -12519,9 +18068,21 @@ Quechua: # Ramos Ramos: - regex: 'Ramos ?([^/;]+) Build' - device: 'tablet' - model: '$1' + regex: 'Ramos ?([^/);]+)(?: Build|[);])|(?:MOS1(?:max)?|W22PRO 3G)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(?:Ramos[ _])?(R10|R9|M7)(?:[);/ ]|$)' + model: '$1' + - regex: '(MOS1)(?:[);/ ]|$)' + model: '$1' + - regex: 'MOS1max' + model: 'MOS1 Max' + - regex: 'W22PRO 3G' + device: 'tablet' + model: 'W22 Pro 3G' + - regex: 'Ramos ?([^/;]+)(?: Build|[);])' + device: 'tablet' + model: '$1' # Razer Razer: @@ -12537,22 +18098,34 @@ Sendo: # Turbo-X Turbo-X: - regex: 'Turbo-X|Hive V 3G|Turbox_S3' + regex: 'Turbo-X|(?:Hive V 3G|Turbox_S3|Fire_II_WiFi)(?:[);/ ]|$)|Mercury(?!/)' device: 'smartphone' models: + # specific smartphone models - regex: 'Turbox_S3' model: 'S3' - regex: 'Turbo-X_A2(?:[);/ ]|$)' model: 'A2' - regex: 'Turbo-X_e3(?:[);/ ]|$)' model: 'E3' + - regex: 'Mercury(?!/)' + model: 'Mercury' + + # specific tablet models - regex: 'Turbo-X Ice(?:[);/ ]|$)' device: 'tablet' model: 'Ice' - regex: 'Hive V 3G(?:[);/ ]|$)' device: 'tablet' model: 'Hive V 3G' + - regex: 'Fire_II_WiFi(?:[);/ ]|$)' + device: 'tablet' + model: 'Fire II WiFi' + # general detections + - regex: 'TURBO-X, ([a-z0-9_ \-]+), (?:wired|wireless)' + model: '' + device: 'tv' - regex: 'Turbo-X Tablet([^;/]+) Build' device: 'tablet' model: 'Tablet$1' @@ -12585,14 +18158,16 @@ Turbo: device: 'smartphone' model: 'Blackphone 2' -# Sigma +# Sigma or Sigma Mobile (sigmamobile.net) Sigma: - regex: 'Sigma|(X[_-]Style[ _]?Tab[_ ]A([0-9]{2,3})|X[-_ ]?treme[-_ ]?PQ[0-9]{2}|X-Style_S5501)(?:[);/ ]|$)' + regex: 'Sigma(?!Designs)|(X[_-]Style[ _]?Tab[_ ]A(\d+)|X[-_ ]?treme[-_ ]?PQ[0-9]{2}|X-Style_S5501)(?:[);/ ]|$)' device: 'smartphone' models: + - regex: '(?:Sigma[ _])?X[-_ ]?treme[-_ ]?PQ([0-9]{2}) Max(?:[);/ ]|$)' + model: 'X-Treme PQ$1 Max' - regex: '(?:Sigma[ _])?X[-_ ]?treme[-_ ]?PQ([0-9]{2})(?:[);/ ]|$)' model: 'X-Treme PQ$1' - - regex: 'X[_-]Style[ _]?Tab[_ ]A([0-9]{2,3})(?:[);/ ]|$)' + - regex: 'X[_-]Style[ _]?Tab[_ ]A(\d+)(?:[);/ ]|$)' model: 'X-Style Tab A$1' device: 'tablet' - regex: '(?:Sigma[ _])?X[-_ ]?Style[-_ ]S([0-9]+)(?:[);/ ]|$)' @@ -12600,17 +18175,29 @@ Sigma: # Spice Spice: - regex: 'Spice' + regex: '(?<![\d];)Spice|(?:Xlife[-_ ](?:\d+Q?|Victor5|M5q\+|M5 Pro|Proton5|Electro55HD))(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Spice[ _\-]?([^/;]+)(?:[\)]| Build)' + - regex: '(?:Spice_)?Xlife[-_ ](\d+Q?|M5\+)(?:[);/ ]|$)' + model: 'Xlife $1' + - regex: 'Xlife-M5q\+' + model: 'Xlife M5Q+' + - regex: 'Xlife-M5 Pro' + model: 'Xlife M5 Pro' + - regex: 'Xlife-Victor5' + model: 'Xlife Victor 5' + - regex: 'Xlife-Proton5 Pro' + model: 'Xlife Proton 5 Pro' + - regex: 'Xlife-Electro55HD' + model: 'Xlife Electro 55 HD' + - regex: 'Spice[-_ ]?([^/;]+)(?: Build|[;)])' model: '$1' - - regex: 'Spice[ _\-]?([^/;]+)(?:/|$)' + - regex: 'Spice[-_ ]?([^/;]+)(?:/|$)' model: '$1' # Sharp (jp.sharp) Sharp: - regex: 'SHARP|SBM|SH-?[0-9]+[a-z]?(?:[);/ ]|$)|AQUOS|(?:SH-M0[45789]|SH-M1[123]|S[357]-SH|SH-Z(10|01)|SH-[CL]02|SH-RM1[12]|404SH|[45]02SH|[36]05SH|70[1246]SH|80[138]SH|90[1678]SH|50[3679]SH|SHL22|SHV4[0-8]|SHV3[13-9](?:[-_]u)?|FS80(?:1[08]|32|28|0[29])|TG-L900S|NP601SH|603SH|SHV4[035][-_]u|SW001SH|SHG01)(?:[);/ ]|$)' + regex: 'SHARP(?!_2)|SBM|SH-?[0-9]+[a-z]?(?:[);/ ]|$)|AQUOS|(?:SH-M0[14-9]|SH-M1[1-7](?:-y)?|S[357]-SH|SH-[MZ](10|01)|SH-[CL]02|SH-RM(?:1[1258]|02)|SH-R?M19|SH-R10A|[34]04SH|401SH|[45]02SH|306SH|[36]05SH|70[1246]SH|80[138]SH|90[1678]SH|50[3679]SH|SHL2[125]|SHV4[0-8]|SHV3[1-9](?:[-_]u)?|FS80(?:1[08]|32|28|0[29])|TG-L900S|NP601SH|403SH|603SH|SHF3[1-4]|SHV4[035][-_]u|SW001SH|SHG0[1-6]|X4-SH|A002SH|SH-A01|DM-01[JH]|SH-D01|SH-01FDQ|A[01]01SH|606SH|FS801[56]|d-41A|NP80[567]SH|NP501SH|A00[34]SH|A102SH|IS05|SH-(?:53A|51B|H01)|LP-01|FS8014|SBM00[35]SH|SBM103SH)(?:[);/ ]|$)' device: 'smartphone' models: # explicit smartphone models @@ -12620,8 +18207,10 @@ Sharp: model: 'Aquos Xx3 Mini' - regex: '50[23]SH(?:[);/ ]|$)' model: 'Aquos Xx2' - - regex: '404SH(?:[);/ ]|$)' + - regex: '[34]04SH(?:[);/ ]|$)' model: 'Aquos Xx' + - regex: '606SH(?:[);/ ]|$)' + model: 'Aquos ea' - regex: '507SH(?:[);/ ]|$)' model: 'Android One' - regex: 'S3-SH(?:[);/ ]|$)' @@ -12630,57 +18219,87 @@ Sharp: model: 'Android One S5' - regex: 'S7-SH(?:[);/ ]|$)' model: 'Android One S7' + - regex: 'X4-SH(?:[);/ ]|$)' + model: 'Android One X4' + - regex: 'SHG06(?:[);/ ]|$)' + model: 'Aquos Wish' - regex: 'SH-M04(?:[);/ ]|$)' model: 'Aquos SH-M04' - regex: 'SH-M05(?:[);/ ]|$)' model: 'Aquos Sense Lite' - regex: 'SH-M07(?:[);/ ]|$)' model: 'Aquos Sense Plus' - - regex: 'SH-M12(?:[);/ ]|$)' + - regex: 'A003SH(?:[);/ ]|$)' + model: 'Aquos Sense 4 Basic' + - regex: 'SH-41A(?:[);/ ]|$)' + model: 'Aquos Sense 4' + - regex: '(?:SH-54B|SHG05|SH-R?M19)(?:[);/ ]|$)' + model: 'Aquos Sense 6' + - regex: '(?:SHG03|A004SH|SH-M17|SH-53A)(?:[);/ ]|$)' + model: 'Aquos Sense 5G' + - regex: 'SH-D01(?:[);/ ]|$)' + model: 'Aquos D10' + - regex: 'SH-M12(?:-y)?(?:[);/ ]|$)' model: 'Aquos S3 Dual SIM' - - regex: '(?:SH-Z10|801SH)(?:[);/ ]|$)' - model: 'Aquos zero' - - regex: '(?:SH-M13|906SH)(?:[);/ ]|$)' + - regex: 'SH-H01(?:[);/ ]|$)' + model: 'Aquos Zeta' + - regex: '(?:SH-[MZ]10|801SH)(?:[);/ ]|$)' + model: 'Aquos Zero' + - regex: '(?:SH-M13|906SH|SH-01M)(?:[);/ ]|$)' model: 'Aquos Zero 2' - - regex: 'SH-Z01(?:[);/ ]|$)' + - regex: '(?:SHG04|A102SH|SH-RM18)(?:[);/ ]|$)' + model: 'Aquos Zero 6' + - regex: '(?:SHG02|A002SH)(?:[);/ ]|$)' + model: 'Aquos Zero 5G Basic' + - regex: '(?:SH-Z01|Aquos S2 4/64)(?:[);/ ]|$)' model: 'Aquos S2 (C10)' - - regex: '(?:SH-02E|SH-01[GH]|SH-04H)(?:[);/ ]|$)' + - regex: '(?:SH-02E|SH-01[GH]|SH-04H|SH-09D)(?:[);/ ]|$)' model: 'Aquos Phone Zeta' - - regex: 'SH06D(?:[);/ ]|$)' + - regex: 'SH-01FDQ(?:[);/ ]|$)' + model: 'Dragon Quest' + - regex: 'SH-?06D(?:[);/ ]|$)' model: 'Aquos Phone SH-06D' - - regex: 'SHL22(?:[);/ ]|$)' - model: 'Aquos Phone SHL22' + - regex: '(SHL2[125]|SH-M01)(?:[);/ ]|$)' + model: 'Aquos Phone $1' + - regex: 'SBM(203SH|30[23]SH)(?:[);/ ]|$)' + model: 'Aquos Phone XX $1' - regex: 'SH-L02(?:[);/ ]|$)' model: 'Aquos L2' - regex: '(?:605SH|SH-03J|SHV39)(?:[);/ ]|$)' model: 'Aquos R' - - regex: '(?:605SH|SH-03J|SHV39)(?:[);/ ]|$)' - model: 'Aquos R' - - regex: '(?:701SH|SHV41)(?:[);/ ]|$)' + - regex: '(?:701SH|SHV41|SH-M06)(?:[);/ ]|$)' model: 'Aquos R Compact' - regex: '(?:SH-M09|SHV42|706SH|SH-03K)(?:[);/ ]|$)' model: 'Aquos R2' - regex: '803SH(?:[);/ ]|$)' model: 'Aquos R2 Compact' - - regex: '(?:908SH|SHG01)(?:[);/ ]|$)' + - regex: '(?:908SH|SHG01|SH-M14)(?:[);/ ]|$)' model: 'Aquos R5G' + - regex: 'SH-M16(?:[);/ ]|$)' + model: 'Aquos S4 Plus' + - regex: 'SH-M15(?:[);/ ]|$)' + model: 'Aquos S4 SIM' - regex: 'SH-C02(?:[);/ ]|$)' model: 'Aquos V' + - regex: '(SHF3[1-4])(?:[);/ ]|$)' + model: 'Aquos K $1' - regex: '704SH(?:[);/ ]|$)' model: 'Simple Smartphone 4' - regex: '(?:SH-02J|SH-04G)(?:[);/ ]|$)' model: 'Aquos Ever' - regex: 'SH-02H(?:[);/ ]|$)' model: 'Aquos Compact' - - regex: '305SH(?:[);/ ]|$)' + - regex: '30[56]SH(?:[);/ ]|$)' model: 'Aquos Crystal' - regex: '402SH(?:[);/ ]|$)' model: 'Aquos Crystal X' - - regex: '509SH(?:[);/ ]|$)' + - regex: '403SH(?:[);/ ]|$)' + model: 'Aquos Crystal 2' + - regex: '(?:509SH|SH-R10A)(?:[);/ ]|$)' model: 'Aquos 3' - regex: 'NP601SH(?:[);/ ]|$)' model: 'Aquos 2' - - regex: '(?:SHV40|SHV34)(?:_u)?(?:[);/ ]|$)' + - regex: '(?:SHV40|SHV3[24])(?:_u)?(?:[);/ ]|$)' model: 'Aquos S' - regex: '702SH(?:[);/ ]|$)' model: 'Aquos S Basic' @@ -12688,11 +18307,13 @@ Sharp: model: 'Aquos S Mini' - regex: '(?:FS8010|SH-M08|SHV43(?:-u)?|SH-01[KL])(?:[);/ ]|$)' model: 'Aquos S2' + - regex: 'FS8016(?:[);/ ]|$)' + model: 'Aquos S2 Plus' - regex: '(?:SHV46|SH-R?M11|901SH)(?:[);/ ]|$)' model: 'Aquos S3 Plus' - regex: '(?:SHV44|808SH|SH-04L|SH-03G)(?:[);/ ]|$)' model: 'Aquos R3' - - regex: '(?:FS8032|SH-02M|SHV45(?:-U)?)(?:[);/ ]|$)' + - regex: '(?:FS8032|FS8015|SH-02M|SHV45(?:-U)?)(?:[);/ ]|$)' model: 'Aquos S3' - regex: 'FS8018(?:[);/ ]|$)' model: 'Aquos S3 Mini' @@ -12700,27 +18321,62 @@ Sharp: model: 'Aquos S3 Basic' - regex: 'SH-RM12(?:[);/ ]|$)' model: 'Aquos S3 Lite' + - regex: 'SH-RM15(?:[);/ ]|$)' + model: 'Aquos S4 Lite' - regex: 'SH-51A(?:[);/ ]|$)' model: 'Aquos R5G' + - regex: '(?:SH-51B|A101SH)(?:[);/ ]|$)' + model: 'Aquos R6' - regex: 'SHV3[57](?:_u)?(?:[);/ ]|$)' model: 'Aquos U' - regex: 'TG-L900S(?:[);/ ]|$)' model: 'Luna S' + - regex: 'SH-A01(?:[);/ ]|$)' + model: 'B10' - regex: '(?:FS8002|SHV47)(?:[);/ ]|$)' model: 'Z2' - regex: 'FS8009(?:[);/ ]|$)' model: 'Z3' + - regex: 'FS8014(?:[);/ ]|$)' + model: 'R1' - regex: 'FS8028(?:[);/ ]|$)' model: 'R1S' - regex: 'SHV36(?:[);/ ]|$)' model: 'Basio 2' - regex: 'SW001SH(?:[);/ ]|$)' model: 'Star Wars' + - regex: 'SH-RM02' + model: 'Aquos SH-RM02' + - regex: '401SH' + model: 'Aquos 401SH' + - regex: '(DM-01[JH])' + model: 'Disney Mobile $1' + - regex: 'A001SH' + model: 'Simple Sumaho 5' # (Simple Smartphone 5) + - regex: 'NP80[56]SH' + model: 'Aquos Keitai 3' + - regex: 'NP807SH' + model: 'Aquos Keitai 10' + - regex: 'NP501SH' + model: 'Aquos Keitai' + - regex: 'LP-01(?:[);/ ]|$)' + model: 'Leica Leitz Phone 1' + - regex: 'SBM(00[35]SH)(?:[);/ ]|$)' + model: 'Galapagos $1' # SoftBank + - regex: 'SBM(103SH)(?:[);/ ]|$)' + model: 'Aquos Phone $1' # SoftBank + - regex: 'SH-02L(?:[);/ ]|$)' + model: 'Aquos K-tai' + - regex: 'SBM200SH(?:[);/ ]|$)' + model: 'Pantone 6' # SoftBank # explicit tablet models - regex: 'SH-08E(?:[);/ ]|$)' device: 'tablet' model: 'Sharp Aquos Pad' + - regex: 'd-41A(?:[);/ ]|$)' + device: 'tablet' + model: 'dtab d-41A' - regex: '(LC-(?:[0-9]{2})[a-z0-9]+)(?:[);/ ]|$)' device: 'tv' @@ -12732,9 +18388,15 @@ Sharp: model: '$1' - regex: '(?:SHARP|SBM)([a-z0-9]+)' model: '$1' - - regex: '(SH-?[0-9]+[a-z]?)(?:[);/ ]|$)' + - regex: '(SH-?[0-9]+[a-z]?|IS05)(?:[);/ ]|$)' model: '$1' +# Simply or SIMPLE Mobile (simplemobile.com) +Simply: + regex: '(NP602SI)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + # Softbank Softbank: regex: 'Softbank|J-PHONE' @@ -12749,7 +18411,7 @@ Softbank: # Sonim Sonim: - regex: 'Sonim[ -]|XP[67]700(?:[);/ ]|$)' + regex: 'Sonim[ -]|XP(?:[67]7|88)00(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Sonim-XP3400' @@ -12759,6 +18421,8 @@ Sonim: model: 'XP6700' - regex: 'XP7700(?:[);/ ]|$)' model: 'XP7700' + - regex: 'XP8800(?:[);/ ]|$)' + model: 'XP8' # Star Star: @@ -12771,9 +18435,94 @@ Star: - regex: 'N(9[5678]00|8800|9977)(?:[);/ ]|$)' model: 'N$1' +# Starmobile (starmobile.ph) +Starmobile: + regex: '(?:Starmobile (?:Play (?:Neo|Spark|GO|Click)|Astra)|UP[_ ](?:Sense|Rave|Groove|Prime|Selfie|Xtreme|XL|Max)|PLAY (?:Club|Style))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Starmobile PLAY GO(?:[);/ ]|$)' + model: 'Play Go' + - regex: 'Starmobile ASTRA(?:[);/ ]|$)' + model: 'Astra' + - regex: '(?:Starmobile )?Play (Neo|Spark|Click|Club|Style)(?:[);/ ]|$)' + model: 'Play $1' + - regex: 'UP[_ ](Sense|Rave|Groove|Prime|Selfie|Xtreme|XL|Max)(?:[);/ ]|$)' + model: 'UP $1' + +# Toshiba +Toshiba: + regex: 'Toshiba|TSBNetTV/|portalmmm/[12].0 TS|(?:T-01C|T-0[12]D|IS04|IS11T|AT1S0|AT300SE|AT(?:7-C|10-A|10[PL]E-A|100|200|270|300|330|374|400|470|500a?|503|570|703|830)|AFTKMST12|AFTBAMR311)(?:[);/ ]|$)' + device: 'smartphone' + models: + # explicit smartphone models + - regex: 'T-01C' + model: 'Regza T-01C' + - regex: 'T-01D' + model: 'Regza T-01D' + - regex: 'T-02D' + model: 'Regza T-02D' + - regex: 'IS04' + model: 'Regza IS04' + - regex: 'IS11T' + model: 'Regza IS11T' + + # explicit tablet models + - regex: 'AT7-C' + model: 'Excite' + device: 'tablet' + - regex: 'AT1S0' + model: 'Regza AT1S0' + device: 'tablet' + - regex: 'AT300SE' + model: 'Regza AT300SE' + device: 'tablet' + - regex: 'AT500a' + model: 'Regza AT500a' + device: 'tablet' + - regex: 'AT(100|200|270|300|330|374|400|470|500|503|570|703|830)' + model: 'Regza AT$1' + device: 'tablet' + - regex: 'AT10([PL])E-A' + model: 'Excite AT10$1-A' + device: 'tablet' + - regex: 'AT10-A' + model: 'Excite AT10-A' + device: 'tablet' + + - regex: 'AFTKMST12' + device: 'tv' + model: '43LF711U20' + - regex: 'AFTBAMR311' + device: 'tv' + model: '43LF421U19' + - regex: 'TOSHIBA, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' + - regex: 'TSBNetTV/' + device: 'tv' + model: '' + - regex: 'Toshiba[ /_\-]?([a-z0-9_ \-]+) Build' + model: '$1' + - regex: 'Toshiba[ /_\-]?([a-z0-9_\-]+)' + model: '$1' + - regex: 'portalmmm/[12].0 (TS[a-z0-9 ]+)' + model: '$1' + +# Ok +Ok: + regex: 'AFTWI001(?:[);/ ]|$)' + device: 'tv' + model: '4K (2020)' + +# Anker (https://www.anker.com/) +Anker: + regex: 'AFTMM(?:[);/ ]|$)' + device: 'tv' + model: 'Nebula Soundbar' + # Kindle Amazon: - regex: 'KF(?:OT|ONWI|TT|JWI|JWA|[DFS]OWI|A[PRSU]WI|T[BH]WI|SAW[IA]|GIWI|KAWI|MAWI|MEWI|MUWI|SUWI)(?:[);/ ]|$)|Kindle|Silk/\d+\.\d+|Amazon (?:Tate|Jem)|AFT[ABMNRST]|SD4930UR|AEO(BC|KN)(?:[);/ ]|$)' + regex: '(?:AFT[ABMNRST]|AFTSSS?|AFTKA|SD4930UR|AEO(?:BC|C[HW]|KN)|KF(?:OT|ONWI|TT|JWI|JWA|[DFS]OWI|A[PRSU]WI|T[BH]WI|TRP?WI|SAW[IA]|GIWI|KAWI|MAWI|MEWI|MUWI|SUWI))(?:[);/ ]|$)|Kindle|AlexaMediaPlayer|Amazon (?:Tate|Jem)|Silk/\d+\.\d+|Echo/1|.+FIRETVSTICK' device: 'tablet' models: - regex: 'AFTA' @@ -12786,10 +18535,22 @@ Amazon: model: 'Fire TV (Gen 3)' device: 'tv' - regex: 'AFTB' - model: 'Fire TV' + model: 'Fire TV (Gen 1)' + device: 'tv' + - regex: 'AFTSSS' + model: 'Fire TV Stick (Gen 3)' + device: 'tv' + - regex: 'AFTSS' + model: 'Fire TV Stick Lite (Gen 1)' device: 'tv' - regex: 'AFT[MST]' - model: 'Fire TV stick' + model: 'Fire TV Stick' + device: 'tv' + - regex: '.+FIRETVSTICK2018' + model: 'Fire TV Stick 4K' + device: 'tv' + - regex: 'AFTKA' + model: 'Fire TV Stick 4K Max' # 2021 device: 'tv' - regex: 'KFFOWI(?:[);/ ]|$)' model: 'Fire 7"' @@ -12837,32 +18598,59 @@ Amazon: model: 'Fire HD 10 (2017)' - regex: 'KFMAWI(?:[);/ ]|$)' model: 'Fire HD 10 (2019)' + - regex: 'KFTRWI(?:[);/ ]|$)' + model: 'Fire HD 10 (2021)' + - regex: 'KFTRPWI(?:[);/ ]|$)' + model: 'Fire HD 10 Plus (2021)' - regex: 'SD4930UR' model: 'Fire Phone' device: 'smartphone' - - regex: 'KFOT|Kindle Fire|Silk/\d+\.\d+' model: 'Kindle Fire' - regex: 'Kindle' model: 'Kindle' - - regex: 'AEO(BC|KN)(?:[);/ ]|$)' + - regex: 'Echo/1|AEO(?:BC|KN)(?:[);/ ]|$)' model: 'Echo' device: 'smart speaker' + - regex: 'AEOC[HW](?:[);/ ]|$)' + model: 'Echo Show 8' + device: 'smart speaker' + - regex: 'AlexaMediaPlayer' + model: 'Alexa' + device: 'smart speaker' # Symphony Symphony: - regex: 'SYMPHONY[ \_]([a-z0-9]+)|roar (V20|E80)' + regex: 'SYMPHONY[ \_]([a-z0-9]+)|(?:(?:roar[ _](?:V20|V78|E80|V150))|roarV95|ZVIII|V141)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'roar V20' - model: 'Roar V20' - - regex: 'roar E80' - model: 'Roar E80' + - regex: 'ZVIII' + model: 'ZVIII' + - regex: 'Symphony Atom ii' + model: 'Atom II' + - regex: 'roar[ _]?(V20|E80|V78|V95|V150)(?:[);/ ]|$)' + model: 'Roar $1' + - regex: '(V141)(?:[);/ ]|$)' + model: '$1' - regex: 'SYMPHONY[ \_]([a-z0-9]+)' model: '$1' +# Helio +Helio: + regex: 'Helio (S60|S5)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# HERO (https://www.only4hero.com/) +HERO: + regex: 'SP-001(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'SP-001(?:[);/ ]|$)' + model: 'SP-001' + # Syrox Syrox: regex: '(SYX-(?:T70[04]|T10[12]))(?:[);/ ]|$)' @@ -12875,23 +18663,53 @@ Qtek: device: 'smartphone' model: '$1' -# Q-Touch +# Q-Box +Q-Box: + regex: 'QBOX(?:[);/ ]|$)' + device: 'tv' + model: '' + +# Q-Touch or Q.Touch or QTouch Q-Touch: - regex: '(Q09) Build' + regex: 'Qtouch_|[ ](Q09|QS701|Q05A|QS31)(?:[);/ ]|$)' device: 'smartphone' - model: '$1' + models: + - regex: '(?:Qtouch[_ ])?[ ]?(Q09|QS701|Q05A|Q85|QS31)(?:[);/ ]|$)' + model: '$1' + +# G-Touch or GTouch +G-Touch: + regex: 'GTouch[_ ]|(?:Stella (?:XS?|Omega))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Stella (XS?|Omega)' + model: 'Stella $1' + - regex: 'GTouch[_ ]STELLA' + model: 'Stella' # T-Mobile T-Mobile: - regex: 'T-Mobile[ _][a-z0-9 ]+|REVVLRY|REVVL 2( PLUS)?(?:[);/ ]|$)' + regex: 'T-Mobile[ _][a-z0-9 ]+|(?:REVVLRY\+?|REVVL V\+ 5G|REVVL 2(?: PLUS)?|5062[ZW]|5007[ZW]|T790[WZ]|Telekom Puls|TMRVL4G)(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'TMRVL4G' + model: 'REVVL V' + - regex: '5062[ZW]' + model: 'REVVL 4 Plus' + - regex: '5007[ZW]' + model: 'REVVL 4' + - regex: 'T790[WZ]' + model: 'REVVL 5G' - regex: 'REVVL 2 PLUS' model: 'REVVL 2 Plus' + - regex: 'REVVL V\+ 5G' + model: 'REVVL V+ 5G' - regex: 'REVVLRY' model: 'REVVL Plus' - regex: 'REVVL 2(?:[);/ ]|$)' model: 'REVVL 2' + - regex: 'Telekom Puls(?:[);/ ]|$)' + model: 'Telekom Puls' - regex: 'T-Mobile[ _]([a-z0-9_ ]+) Build' model: '$1' - regex: 'T-Mobile[ _]([a-z0-9_ ]+)' @@ -12905,49 +18723,46 @@ T-Mobile: - regex: 'Ignis ([89])' model: 'Ignis $1' -# Tcl -TCL: - regex: 'TCL[_ -][a-z0-9]+|(?:TCL[_ -][^;/]+ Build)|(?:TCLGalaG60(?:\(9108A\))?|A502DL|T780H|5199I|7040N|5133A|5159[AJ]|5152D)(?:[);/ ]|$)' - device: 'smartphone' - models: - - regex: 'TCLGalaG60(?:\(9108A\))?(?:[);/ ]|$)' - model: 'Gala G60' - - regex: '5199I(?:[);/ ]|$)' - model: 'C9' - - regex: '5152D(?:[);/ ]|$)' - model: 'C5' - - regex: '5133A(?:[);/ ]|$)' - model: 'L5' - - regex: 'T780H(?:[);/ ]|$)' - model: 'Plex' - - regex: 'TCL[_ -]([^;/]+) Build' - model: '$1' - - regex: 'TCL[_ -]([a-z0-9]+)' - model: '$1' - - regex: '(7040N)(?:[);/ ]|$)' - model: '$1' - - regex: 'A502DL(?:[);/ ]|$)' - model: 'LX' - - regex: '5159[AJ](?:[);/ ]|$)' - model: 'L9' - -# Teclast +# Teclast (teclast.com) Teclast: - regex: 'Teclast|X98 Air III|X98 Air II\(HG5N\)|Tbook|X80 Power\(B2N4\)|(?:T30|P80X|P20HD)_(?:ROW|EEA)|T10\(E3C6\)|P10S\(N4H5\)|98\(M1E[45789]\)|98\(M3E3\)' + regex: 'Teclast|P80_G3M2|TLA002|TLA016|X98 Air III|M20_4G|X98 Air II\(HG5N\)|Tbook|X80 Power\(B2N4\)|(?:T40 Plus|T30|P80[XH]|P20HD|P10[_ ]HD|M40|P10S|M30_Pro|M40SE|P80)_(?:ROW|EEA|RUS)|T40 Plus\(M7T3\)|T40 PRO\(T1A1\)|T10\(E3C[56]\)|P10S\(N4H5\)|98\(M1E[45789]\)|98\(M3E3\)|X10 \(M1D3\)|M89 Pro|M40\(N9H3\)|M40(?:SE|Pro)_(?:ROW|EEA|RUS)' + device: 'tablet' models: - regex: 'Tbook[_ -]([^;/]+) Build' model: 'Tbook $1' - - regex: 'T10\(E3C6\)' + - regex: 'T10\(E3C[56]\)' model: 'T10' - - regex: 'T30_(ROW|EEA)' - model: 'T30 $1' - - regex: 'P80X_(ROW|EEA)' - model: 'P80X $1' - - regex: 'P10S\(N4H5\)' + - regex: 'X10 \(M1D3\)' + model: 'X10' + - regex: 'P10S(?:\(N4H5\)|_(?:ROW|EEA))(?:[);/ ]|$)' model: 'P10S' - - regex: 'P20HD_(?:ROW|EEA)' + - regex: 'P20HD_(?:ROW|EEA|RUS)' model: 'P20HD' + - regex: 'P10[_ ]HD_(?:ROW|EEA)' + model: 'P10HD' + - regex: 'P80[_ ](?:ROW|EEA)|P80_G3M2' + model: 'P80' + - regex: 'M([43]0)_?Pro[_ ](?:ROW|EEA|RUS)' + model: 'M$1 Pro' + - regex: 'M20_4G' + model: 'M20 4G' + - regex: 'M89 Pro' + model: 'M89 Pro' + - regex: 'TLA002' + model: 'M30 4G' + - regex: 'TLA016' + model: 'M16' + - regex: 'M40\(N9H3\)' + model: 'M40' + - regex: 'M40SE' + model: 'M40 SE' + - regex: 'T40 PRO\(T1A1\)' + model: 'T40 Pro' + - regex: 'T40 Plus(?:_(?:ROW|EEA)|\(M7T3\))' + model: 'T40 Plus' + - regex: '(P80[Xh]|T30|M40)[_ ](?:ROW|EEA)' + model: '$1' - regex: '98\(M1E[45789]\)|98\(M3E3\)' model: 'TPad 98 10.1" 4G' - regex: 'X80 Power\(B2N4\)(?:[);/ ]|$)' @@ -12968,64 +18783,314 @@ Tecno Mobile: model: 'Phantom 6 Plus' - regex: 'Phantom6' model: 'Phantom 6' + - regex: 'TECNO[ _]AC8(?:[);/ ]|$)' + model: 'Phantom X' + - regex: 'TECNO[ _]AB7(?:[);/ ]|$)' + model: 'Phantom 9' + - regex: 'TECNO[ _]AX8(?:[);/ ]|$)' + model: 'Phantom 8' - regex: 'TECNO-W3' model: 'W3' - regex: 'TECNO[ _]F4 Pro(?:[);/ ]|$)' model: 'F4 Pro' + - regex: 'TECNO[ _]IN5(?:[);/ ]|$)' + model: 'Camon i' + - regex: 'TECNO[ _]ID5b(?:[);/ ]|$)' + model: 'Camon i2X' - regex: 'TECNO[ _]ID6(?:[);/ ]|$)' model: 'Camon iClick 2' + - regex: 'TECNO[ _]IN2(?:[);/ ]|$)' + model: 'Camon iSky' + - regex: 'TECNO[ _]KB3(?:[);/ ]|$)' + model: 'Camon iSky 3' - regex: 'Tecno[ _]7C(?:[);/ ]|$)' model: 'DroidPad 7C' device: 'tablet' + - regex: 'Tecno[ _]P701(?:[);/ ]|$)' + model: 'DroidPad 7D' + device: 'tablet' - regex: 'DP7C Pro-SGA1(?:[);/ ]|$)' model: 'DroidPad 7C Pro' device: 'tablet' + - regex: 'Tecno[ _]P703(?:[);/ ]|$)' + model: 'DroidPad 7F' + device: 'tablet' + - regex: 'Tecno[ _]P704a(?:[);/ ]|$)' + model: 'DroidPad 7G' + device: 'tablet' - regex: 'TECNO[ _]DP10A Pro(?:[);/ ]|$)' model: 'DroidPad 10A Pro' device: 'tablet' - regex: 'TECNO[ _]P904(?:[);/ ]|$)' model: 'DroidPad 10D 4G' device: 'tablet' + - regex: 'Tecno[ _]RC6(?:[);/ ]|$)' + model: 'R7+' - regex: 'Tecno[ _]CB7[j]?' model: 'Camon i4' + - regex: 'Tecno[- _]C9(?:[);/ ]|$)' + model: 'Camon C9' + - regex: 'Tecno[ _]CF7k?(?:[);/ ]|$)' + model: 'Camon 11' + - regex: 'Tecno[ _]CF8(?:[);/ ]|$)' + model: 'Camon 11 Pro' + - regex: 'Tecno[ _]CC7S?(?:[);/ ]|$)' + model: 'Camon 12' + - regex: 'Tecno[ _]CC9(?:[);/ ]|$)' + model: 'Camon 12 Pro' + - regex: 'Tecno[ _](?:CC6|KC3)(?:[);/ ]|$)' + model: 'Camon 12 Air' + - regex: 'Tecno[ _-]CD7(?:[);/ ]|$)' + model: 'Camon 15' + - regex: 'Tecno[ _-]CD6S?(?:[);/ ]|$)' + model: 'Camon 15 Air' + - regex: 'Tecno[ _-]CD8j(?:[);/ ]|$)' + model: 'Camon 15 Premier' + - regex: 'Tecno[ _-]CD8(?:[);/ ]|$)' + model: 'Camon 15 Pro' + - regex: 'Tecno[ _-](?:CE9h|CE7)(?:[);/ ]|$)' + model: 'Camon 16' + - regex: 'Tecno[ _-]CE9(?:[);/ ]|$)' + model: 'Camon 16 Premier' + - regex: 'Tecno[ _-]CE8(?:[);/ ]|$)' + model: 'Camon 16 Pro' + - regex: 'Tecno[ _-]CD6j(?:[);/ ]|$)' + model: 'Camon 16 S' + - regex: 'Tecno[ _-]CE7j(?:[);/ ]|$)' + model: 'Camon 16 SE' + - regex: 'Tecno[ _-]CG6j?(?:[);/ ]|$)' + model: 'Camon 17' + - regex: 'Tecno[ _-]CG8(?:[);/ ]|$)' + model: 'Camon 17 Pro' + - regex: 'Tecno[ _-]CG7n?(?:[);/ ]|$)' + model: 'Camon 17P' + - regex: 'Tecno[ _-]CH9n?(?:[);/ ]|$)' + model: 'Camon 18 Premier' + - regex: 'Tecno[ _-]CH6n?(?:[);/ ]|$)' + model: 'Camon 18' + - regex: 'Tecno[ _-]CH7n?(?:[);/ ]|$)' + model: 'Camon 18P' + - regex: 'Tecno[ _-]CA6(?:[);/ ]|$)' + model: 'Camon CM' + - regex: 'Tecno[ _-]CA7(?:[);/ ]|$)' + model: 'Camon X' + - regex: 'Tecno[ _-]CA8(?:[);/ ]|$)' + model: 'Camon X Pro' + - regex: 'Tecno[ _-]Camon CX(?:[);/ ]|$)' + model: 'Camon CX' + - regex: 'Tecno[ _-]CX Air(?:[);/ ]|$)' + model: 'Camon CX Air' + - regex: 'TECNO[ _]F3(?:[);/ ]|$)' + model: 'Pop 1' + - regex: 'TECNO[ _]B1(?:[);/ ]|$)' + model: 'Pop 2' + - regex: 'TECNO[ _]SA2S(?:[);/ ]|$)' + model: 'Pop 2 Mini' + - regex: 'TECNO[ _]B1[fg](?:[);/ ]|$)' + model: 'Pop 2F' + - regex: 'TECNO[ _](?:RA8|KB2h)(?:[);/ ]|$)' + model: 'Pop 2S' + - regex: 'TECNO[ _]KB2j(?:[);/ ]|$)' + model: 'Pop 2S Pro' + - regex: 'TECNO[ _]BA2(?:[);/ ]|$)' + model: 'Pop 2 Plus' + - regex: 'TECNO[ _]B1p(?:[);/ ]|$)' + model: 'Pop 2 Power' + - regex: 'TECNO[ _]RB8S(?:[);/ ]|$)' + model: 'Pop 2X Plus' + - regex: 'TECNO[ _]RB6S(?:[);/ ]|$)' + model: 'Pop 2X Air' + - regex: 'TECNO[ _]RB7S(?:[);/ ]|$)' + model: 'Pop 2X' + - regex: 'TECNO[ _]SC7S(?:[);/ ]|$)' + model: 'Pop 2 Air' + - regex: 'TECNO[ _]BB2(?:[);/ ]|$)' + model: 'Pop 3' + - regex: 'TECNO[ _]BB4(?:[);/ ]|$)' + model: 'Pop 3 Plus' + - regex: 'TECNO[ _]BC2c?(?:[);/ ]|$)' + model: 'Pop 4' + - regex: 'TECNO[ _]BC3?(?:[);/ ]|$)' + model: 'Pop 4 Pro' + - regex: 'TECNO[ _]BC1(?:[);/ ]|$)' + model: 'Pop 4 Air' + - regex: 'TECNO[ _]BC1s(?:[);/ ]|$)' + model: 'Pop 4 LTE' + - regex: 'TECNO[ _]BD2[dp]?(?:[);/ ]|$)' + model: 'Pop 5' + - regex: 'TECNO[ _]BD1(?:[);/ ]|$)' + model: 'Pop 5 Go' + - regex: 'TECNO[ _]BD4(?:[);/ ]|$)' + model: 'Pop 5 LTE' + - regex: 'TECNO[ _]BD4j(?:[);/ ]|$)' + model: 'Pop 5 Pro' + - regex: 'TECNO[ _]BD3(?:[);/ ]|$)' + model: 'Pop 5P' + - regex: 'Tecno[ _]SA1S Pro(?:[);/ ]|$)' + model: 'SA1s Pro' + - regex: 'Tecno[ _]KG5(?:[);/ ]|$)' + model: 'Spark Go (2022)' + - regex: 'Tecno[ _]KA7O?(?:[);/ ]|$)' + model: 'Spark 2' + - regex: 'Tecno[ _]LB6?(?:[);/ ]|$)' + model: 'Spark 2 Youth' + - regex: 'Tecno[ _]KB7j?(?:[);/ ]|$)' + model: 'Spark 3' + - regex: 'Tecno[ _]KB8?(?:[);/ ]|$)' + model: 'Spark 3 Pro' + - regex: 'Tecno[ _](?:KC8S?|KC2j?)(?:[);/ ]|$)' + model: 'Spark 4' + - regex: 'Tecno[ _](?:KC6S?|KC1j)(?:[);/ ]|$)' + model: 'Spark 4 Air' + - regex: 'Tecno[ _]BB4k(?:[);/ ]|$)' + model: 'Spark 4 Lite' + - regex: 'Tecno[ _]KD6a?(?:[);/ ]|$)' + model: 'Spark 5 Air' + - regex: 'Tecno[ _]KD7[hS](?:[);/ ]|$)' + model: 'Spark 5' + - regex: 'Tecno[ _]KD7(?:[);/ ]|$)' + model: 'Spark 5 Pro' + - regex: 'TECNO[ _]KE7(?:[);/ ]|$)' + model: 'Spark 6' + - regex: 'TECNO[ _]KE6j?(?:[);/ ]|$)' + model: 'Spark 6 Air' + - regex: 'TECNO[ _]KE5[jk]?(?:[);/ ]|$)' + model: 'Spark 6 Go' + - regex: 'TECNO[ _](?:KF6[nmjki]?|PR651[EH]?)(?:[);/ ]|$)' + model: 'Spark 7' + - regex: 'TECNO[ _]KF8(?:[);/ ]|$)' + model: 'Spark 7 Pro' + - regex: 'TECNO[ _]KF7j(?:[);/ ]|$)' + model: 'Spark 7P' + - regex: 'TECNO[ _]KF6p(?:[);/ ]|$)' + model: 'Spark 7T' + - regex: 'TECNO[ _]KG6k?(?:[);/ ]|$)' + model: 'Spark 8' + - regex: 'TECNO[ _]KG7n?(?:[);/ ]|$)' + model: 'Spark 8P' + - regex: 'TECNO[ _]KG6p(?:[);/ ]|$)' + model: 'Spark 8T' + - regex: 'TECNO[ _]KG8(?:[);/ ]|$)' + model: 'Spark 8 Pro' + - regex: 'TECNO[ _]KC1h(?:[);/ ]|$)' + model: 'Spark Go' + - regex: 'TECNO[ _]KC1(?:[);/ ]|$)' + model: 'Spark Air' + - regex: 'TECNO[ _]K9(?:[);/ ]|$)' + model: 'Spark Plus' + - regex: 'TECNO[ _]KA6(?:[);/ ]|$)' + model: 'Spark Youth' + - regex: 'TECNO[ _]KA9(?:[);/ ]|$)' + model: 'Spark CM' - regex: 'Tecno[ _]DP8D(?:[);/ ]|$)' model: 'DroidPad 8D' device: 'tablet' - - regex: 'Tecno[ _]LB8' + - regex: 'TECNO[ _]LA7 Pro(?:[);/ ]|$)' + model: 'Pouvoir 2 Pro' + - regex: 'TECNO[ _]LA7(?:[);/ ]|$)' + model: 'Pouvoir 2' + - regex: 'TECNO[ _]LA6(?:[);/ ]|$)' + model: 'Pouvoir 1' + - regex: 'TECNO[ _]LB7(?:[);/ ]|$)' + model: 'Pouvoir 3' + - regex: 'TECNO[ _]LC6a?(?:[);/ ]|$)' + model: 'Pouvoir 3 Air' + - regex: 'Tecno[ _]LB8a?' model: 'Pouvoir 3 Plus' - - regex: 'Tecno ([^;/]+) Build' + - regex: 'TECNO[ _]LC7S?(?:[);/ ]|$)' + model: 'Pouvoir 4' + - regex: 'TECNO[ _]LC8(?:[);/ ]|$)' + model: 'Pouvoir 4 Pro' + - regex: 'Tecno[ _-]J8(?:[);/ ]|$)' + model: 'Boom J8' + - regex: 'Tecno[ _-]RA7(?:[);/ ]|$)' + model: 'R7 4G' + - regex: 'Tecno[ _-]W3 Pro(?:[);/ ]|$)' + model: 'W3 Pro' + - regex: 'Tecno[ _-]WX3P(?:[);/ ]|$)' + model: 'WX3 Pro' + - regex: 'TECNO S9' + device: 'phablet' + model: 'S9' + - regex: 'TECNO[ _]LD7j?(?:[);/ ]|$)' + device: 'phablet' + model: 'Pova' + - regex: 'TECNO[ _]LE6(?:[);/ ]|$)' + device: 'phablet' + model: 'Pova Neo' + - regex: 'TECNO[ _]LE7n?(?:[);/ ]|$)' + device: 'phablet' + model: 'Pova 2' + - regex: 'Tecno (F2) ?LTE' + model: '$1 LTE' + + - regex: 'TECNO[ _-]?(T611)(?:[);/ ]|$)' + device: 'feature phone' + model: '$1' + + - regex: 'Tecno[ _]([^;/]+)(?: Build|[);])' model: '$1' - - regex: 'Tecno[ _]?([a-z0-9_\-]+)' + - regex: 'Tecno[ _-]?([a-z0-9_\-]+)' model: '$1' -# TechPad +# TechPad (techpad.mx) TechPad: - regex: 'Tech ?pad|XTAB[ _-]|Dual C1081HD|S813G' + regex: 'Tech[ _]?pad|XTAB[ _-]|(?:3G_16|Dual C1081HD|S813G|NOTE[_ ]4CAM|M5(?:Go|Plus))(?:[);/ ]|$)' device: 'tablet' models: - regex: 'S813G' model: 'S813G' + - regex: 'TechPad10QC' + model: '10QC' + - regex: 'TechPad_10xx' + model: '10XX' + - regex: 'TechPad703' + model: '703' + - regex: 'TechPad[_ ](10Y|9x|i700)' + model: '$1' + - regex: 'TechPad[_ ]3Gx' + model: '3Gx' + - regex: '3G_16' + model: '3G-16' - regex: 'Dual C1081HD' model: 'XTAB C1081HD' - regex: 'XTAB[ _-]([^/;]+) Build' model: 'XTAB $1' - - regex: 'Tech ?pad[ _-]([^/;]+) Build' + # explicit smartphone models + - regex: 'M5(Go|Plus)' + device: 'smartphone' + model: 'M5 $1' + - regex: 'NOTE[ _]4CAM' + device: 'smartphone' + model: 'Note 4 Cam' + # explicit feature phone models + - regex: 'Tech_Pad_Kaios_One_3G' + device: 'feature phone' + model: 'Kaios One 3G' + + - regex: 'Tech ?pad[ _-]([^/;)]+)(?: Build|[;)])' model: '$1' device: 'smartphone' +# Techwood +Techwood: + regex: 'Techwood' + device: 'tv' + model: '' + # Tesco Tesco: - regex: 'Hudl ([^/;]+) Build|W032i-C3(?:[);/ ]|$)' + regex: 'Hudl (?:[^/;]+)(?: Build|[;)])|W032i-C3(?:[);/ ]|$)' device: 'tablet' models: - - regex: 'Hudl ([^/;]+) Build' + - regex: 'Hudl ([^/;]+)(?: Build|[;)])' model: 'Hudl $1' - regex: 'W032i-C3(?:[);/ ]|$)' model: 'Op3n Dott' -# teXet +# teXet (www.texet.ru) teXet: - regex: 'Texet|(NaviPad [^/;]*) Build|TM-(?:1046|1058|1057|1067|3000|3200R|3500|4003|4071|450[34]|451[30]|4377|4082R|550[83]|5010|5017|507[4-7]|5[23]77|6003|6906|702[13]|7055HD|709[69]|9747BT|9758|9751HD|9767|5513|520[410]|5505|507[13]|5581|7859|8044|9748[ _]3G|9720|7047HD[ _]3G|9757|9740|4982|4515|4083|500[3567]|5571|3204R|5016|8043|7047HD[ _]3G|8041HD|8066|705[23]|7041|8041HD|8051|8048|974[96]|973[78]W|974[170]|9743W|9750HD|7043XD|7049|7887|7037W|702[46])|TB-(771A|711A)|X-Force[\(-]?TM-5009\)?|X-Plus[\(-]?TM-5577\)?|TM_5011|X-pad (?:AIR 8|iX 7|NAVI 7.[35]|NAVI 10|SKY 8.1|STYLE 8|STYLE 10.1|HIT|LITE 7.[12]|QUAD (?:7.2|10|7)|SHINE 8.1)(?: 3G)?' + regex: 'Texet|(NaviPad [^/;]*) Build|TM-(?:1046|1058|1057|1067|3000|3200R|3500|400[34]|4071|450[34]|451[30]|4377|4082R|508[34]|550[358]|5010|5017|507[4-7]|5[23]77|6003|6906|702[13]|7055HD|709[69]|9747BT|9758|9751HD|9767|5513|520[410]|507[13]|558[134]|570[23]|7859|8044|9748[ _]3G|9720|7047HD[ _]3G|9757|9740|4982|4515|4083|500[3567]|5571|3204R|5016|8043|7047HD[ _]3G|8041HD|8066|705[23]|7041|8041HD|8051|8048|974[96]|973[78]W|974[170]|9743W|9750HD|7043XD|7049|7887|7037W|702[46])|TB-(771A|711A)|X-Force[\(-]?TM-5009\)?|X-Plus[\(-]?TM-5577\)?|TM_5011|X-pad (?:AIR 8|iX 7|NAVI 7.[35]|NAVI 10|SKY 8.1|STYLE 8|STYLE 10.1|HIT|LITE 7.[12]|QUAD (?:7.2|10|7)|SHINE 8.1)(?: 3G)?' device: 'tablet' models: - regex: 'TM-9749' @@ -13087,7 +19152,7 @@ teXet: - regex: 'TM-4503' device: 'smartphone' model: 'X-Quad' - - regex: '(TM-(?:3000|3200R|4003|4083|4377|4504|451[30]|500[35]|5[23]77|5571|3204R|520[04]|5581|5505|507[13]|5017|507[4-7]|6003|5513))' + - regex: '(TM-(?:3000|3200R|400[34]|4083|4377|4504|451[30]|500[35]|5[23]77|5571|3204R|520[04]|5581|5505|5017|507[13-7]|5081|6003|5513))' device: 'smartphone' model: '$1' - regex: 'TM-5006' @@ -13099,6 +19164,18 @@ teXet: - regex: 'TM_5011' device: 'smartphone' model: 'X-Omega' + - regex: 'TM-508(3|4)' + device: 'smartphone' + model: 'Pay $1G' + - regex: 'TM-558(3|4)' + device: 'smartphone' + model: 'Pay 5.5" $1G' + - regex: 'TM-5702' + device: 'smartphone' + model: 'Pay 5.7" 3G' + - regex: 'TM-5703' + device: 'smartphone' + model: 'Pay 5.7" Pro' - regex: 'TM-5201' device: 'smartphone' model: 'Rock' @@ -13114,6 +19191,9 @@ teXet: - regex: 'TM-4982' device: 'smartphone' model: 'iX-Maxi' + - regex: 'TEXET[_ ]IX-MINI' + device: 'smartphone' + model: 'iX-Mini' - regex: 'TM-5010' device: 'smartphone' model: 'X-Selfie' @@ -13132,22 +19212,39 @@ teXet: - regex: 'X-Plus[\(-]?TM-5577\)?' device: 'smartphone' model: 'X-Plus' + - regex: 'teXet[_ ]X-medium[_ ]plus' + device: 'smartphone' + model: 'X-Medium Plus' # Telefunken Telefunken: - regex: 'TELEFUNKEN|Foxtrot|TEL-1013GIQA|TF-SP5001|(TF-MID(?:[78]02G|9705RG|7805G|1010G))|(TF-LED(?:65S75T2SU|32S39T2S|32S5[289]T2S|32S70T2S))' + regex: 'TELEFUNKEN|Foxtrot|TEL-1013GIQA|TEL-1014GIQ|TEL-73GIQA|TEL-74GIQ|TF-SP(?:500[12]|4002)|(TF-MID(?:[78]02G|70[78]G|80[46]G|9705RG|9707G|7805G|100[57]G|1010G))|(TF-LED(?:65S75T2SU|32S39T2S|32S5[289]T2S|32S7[05]T2S|40S63T2S|40S19T2S))|LTE_LIMA|LTE Mike|Outdoor (?:LTE|WT4|WT4-S)' device: 'tablet' models: - regex: 'TEL-1013GIQA' model: 'Giqa 10.1 3G' - - regex: '(?:TELEFUNKEN)?(TF-SP5001|Outdoor LTE|Foxtrot)' + - regex: 'TEL-(1014GIQ|74GIQ|73GIQA)' + model: 'TEL-$1' + - regex: 'Foxtrot2' + model: 'Foxtrot 2' + device: 'smartphone' + - regex: 'LTE_LIMA' + model: 'Lima LTE' + device: 'smartphone' + - regex: 'LTE Mike' + model: 'Mike LTE' + device: 'smartphone' + - regex: '(?:TELEFUNKEN)?(TF-SP(?:500[12]|4002)|Outdoor (?:LTE|WT4-S|WT4)|Foxtrot)' model: '$1' device: 'smartphone' - - regex: '(TF-MID(?:[78]02G|9705RG|7805G|1010G))' + - regex: '(TF-MID(?:[78]02G|70[78]G|80[46]G|9705RG|9707G|7805G|100[57]G|1010G))' model: '$1' - - regex: '(TF-LED(?:65S75T2SU|32S39T2S|32S5[289]T2S|32S70T2S))' + - regex: '(TF-LED(?:65S75T2SU|32S39T2S|32S5[289]T2S|32S7[05]T2S|40S63T2S|40S19T2S))' model: '$1' device: 'tv' + - regex: 'TELEFUNKEN, ([a-z0-9_ \-]+), (?:wired|wireless)' + model: '' + device: 'tv' # Telego Telego: @@ -13163,13 +19260,13 @@ Telego: # Telenor Telenor: - regex: '(?<!FBCR/)Telenor' + regex: '(?<!FBCR/)Telenor|(?:Infinity[_ ](?:E[2-5]|K2?|A2))(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Telenor[ _]([^;/]+) Build' - model: '$1' - - regex: 'Telenor[ _]([^a-z0-9_]+)\)' + - regex: 'Telenor[ _]([^;/]+)(?: Build|[;)])' model: '$1' + - regex: 'Infinity[ _](E[2-5]|K2?|A2)' + model: 'Infinity $1' # Telit Telit: @@ -13181,13 +19278,25 @@ Telit: - regex: 'Telit[\-_]?([a-z0-9]+)' model: '$1' +# Telpo ((https://www.telpo.com.cn/)) +Telpo: + regex: 'TPS320' + device: 'peripheral' + models: + - regex: 'TPS320' + model: 'TPS320' + # ThL ThL: - regex: 'ThL[ _-]|Knight 2' + regex: 'ThL[ _-]|(?:Knight 2|THL5000|T200)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Knight 2' model: 'Knight 2' + - regex: 'THL ?(5000)' + model: '$1' + - regex: '(T200)(?:[);/ ]|$)' + model: '$1' - regex: 'ThL[ _-]*([^;/]+) Build' model: '$1' - regex: 'ThL[ _-]*([^ ;/)]+)(?:[);/ ]|$)' @@ -13205,7 +19314,7 @@ TIANYU: # Timovi Timovi: - regex: 'Tmovi|Infinit_Lite_2' + regex: 'Tmovi[ _]|(?:Infinit[ _](?:Lite[_ ]2|X[_ ]CAM)|Infinit MX(?: Pro)?|Vision_PRO|VISION ULTRA|Epix|Yeah_Go)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Tmovi[ _]Prime' @@ -13214,10 +19323,22 @@ Timovi: model: 'Yeah Beat' - regex: 'YeahLIVE' model: 'Yeah LIVE' - - regex: 'Infinit Lite' - model: 'Infinit Lite' - - regex: 'Infinit_Lite_2' - model: 'Infinit Lite 2' + - regex: 'Infinit[_ ]X[_ ]CAM' + model: 'Infinit X Cam' + - regex: 'Infinit MX Pro' + model: 'Infinit MX Pro' + - regex: 'Infinit MX' + model: 'Infinit MX' + - regex: 'Infinit[_ ]Lite([_ ]2)?' + model: 'Infinit Lite$1' + - regex: 'Vision_PRO' + model: 'Vision Pro' + - regex: 'VISION ULTRA' + model: 'Vision Ultra' + - regex: 'Epix' + model: 'Epix' + - regex: 'Yeah_Go' + model: 'Yeah Go' # Tooky Tooky: @@ -13251,32 +19372,43 @@ Top House: - regex: 'COTO_T40017' model: 'T40017' +# Topelotek +Topelotek: + regex: 'KIDS09' + device: 'tablet' + model: 'KIDS09 Kids Tablet' + # Toplux Toplux: regex: 'Toplux ([a-z0-9]+)' device: 'feature phone' model: '$1' -# Touchmate +# Touchmate (touchmate.net) Touchmate: - regex: 'TOUCHMATE|(TM-(?:MID1020A|MID710|MID798|MID792|MID788D|SM500N|SM410))' + regex: 'TOUCHMATE|(TM-(?:MID1050WKD|MID1020A|MID794C|MID795|MID710|MID798|MID792|MID788D|SM500N|SM410|MID1010))' device: 'smartphone' models: - - regex: '(TM-(?:MID1020A|MID710|MID798|MID792|MID788D))' + - regex: '(TM-(?:MID1020A|MID794C|MID795|MID710|MID798|MID792|MID788D|MID1010))' device: 'tablet' model: '$1' + - regex: 'TM-MID1050WKD' + device: 'tablet' + model: 'Mega Matrix 10.1" 3G' - regex: '(TM-(?:SM500N|SM410))' - model: '$1' + model: '$1' - regex: 'Touchmate ([^/;]+) Build' - model: '$1' + model: '$1' -# TrekStor +# TrekStor (www.trekstor.de) TrekStor: - regex: '(?:TrekStor|Surftab) ([^/;]+)(?: Build|\))|Surftab[^;\)]*(?:[;\)]|$)|ST10216-2A|VT10416-[12]|TFMTKAW01232' + regex: '(?:TrekStor|Surftab) ([^/;]+)(?: Build|\))|Surftab[^;\)]*(?:[;\)]|$)|ST10216-2A|ST13416-1|VT10416-[12]|TFMTKAW01232|PEAQ PET 100|Xintroni10.1' device: 'tablet' models: - regex: 'ST10216-2A|VT10416-[12]' model: 'SurfTab 10.1' + - regex: 'ST13416-1' + model: 'SurfTab Theatre 13.4"' - regex: 'PrimeTab P10' model: 'PrimeTab P10' - regex: 'TrekStor ([^/;]+) Build' @@ -13287,6 +19419,10 @@ TrekStor: model: 'SurfTab $1' - regex: 'TFMTKAW01232' model: 'SurfTab L15' + - regex: 'Xintroni10.1' + model: 'SurfTab Xintron I 10.1"' + - regex: '(PEAQ PET 100)' + model: '$1' # Trevi Trevi: @@ -13374,20 +19510,19 @@ Unowhy: device: 'tablet' model: 'QOOQ' - # UTStarcom UTStarcom: regex: 'utstar[ _-]?([a-z0-9]+)' device: 'feature phone' model: '$1' -# Ulefone +# Ulefone (ulefone.com or ulefone.ru) Ulefone: - regex: 'Ulefone|Gemini Pro|Power_[356]|S10_Pro|(?:Armor(?:(?:[ _])(?:[2367]|X[236]|6[SE]|X))?|U00[78][ _]Pro|Be[ _]X|Be[ _]Touch(?:[ _][23])?|Be[ _](?:One|Pure)(?:[ _]Lite)?)(?:[);/ ]|$)' + regex: 'Ulefone|Gemini Pro|Power_[356]|Power_5S|S(?:10|9)_Pro|(?:Note [89]P|Armor(?:[ _](?:[2367]|2S|X[236]|6[SE]|3WT|3W|X))?|U00[78][ _]Pro|Be[ _]X|Be[ _]Touch(?:[ _][23])?|Be[ _](?:One|Pure)(?:[ _]Lite)?|Note (?:11P|7T)|Paris_X|P6000_Plus)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'S10_Pro' - model: 'S10 Pro' + - regex: 'S(10|9)_Pro' + model: 'S$1 Pro' - regex: 'Be[ _]Touch([ _][23])?' model: 'Be Touch$1' - regex: 'Be[ _]Pure[ _]Lite' @@ -13400,36 +19535,52 @@ Ulefone: model: 'Be One' - regex: 'Be[ _]X' model: 'Be X' - - regex: 'U007 Pro' - model: 'U007 Pro' - - regex: 'U008 Pro' - model: 'U008 Pro' - - regex: 'Armor[ _]2(?:[);/ ]|$)' - model: 'Armor 2' - - regex: 'Armor[ _]3(?:[);/ ]|$)' - model: 'Armor 3' - - regex: 'Armor[ _]7(?:[);/ ]|$)' - model: 'Armor 7' - - regex: 'Armor[ _]X([236])(?:[);/ ]|$)' - model: 'Armor X$1' + - regex: 'U(00[78]) Pro' + model: 'U$1 Pro' + - regex: 'P6000_Plus' + model: 'P6000 Plus' + - regex: 'Paris_X' + model: 'Paris X' + - regex: 'Power Armor (\d+)(?:[);/ ]|$)' + model: 'Power Armor $1' - regex: 'Armor[ _]6S(?:[);/ ]|$)' model: 'Armor 6S' - - regex: 'Armor[ _]6E(?:[);/ ]|$)' - model: 'Armor 6E' - - regex: 'Armor[ _]6(?:[);/ ]|$)' - model: 'Armor 6' - - regex: 'Armor[ _]X5(?:[);/ ]|$)' - model: 'Armor X5' - - regex: 'Armor[ _]5S(?:[);/ ]|$)' - model: 'Armor 5S' + - regex: 'Armor[ _]([679])E(?:[);/ ]|$)' + model: 'Armor $1E' + - regex: 'Armor[ _]X(\d+) Pro(?:[);/ ]|$)' + model: 'Armor X$1 Pro' + - regex: 'Armor[ _]X(\d+)(?:[);/ ]|$)' + model: 'Armor X$1' + - regex: 'Armor[ _]([25])S(?:[);/ ]|$)' + model: 'Armor $1S' - regex: 'Armor[ _]X(?:[);/ ]|$)' model: 'Armor X' + - regex: 'Armor[ _]3W(?:[);/ ]|$)' + model: 'Armor 3W' + - regex: 'Armor[ _]3WT(?:[);/ ]|$)' + model: 'Armor 3WT' + - regex: 'Armor[ _](1\d|11T) 5G(?:[);/ ]|$)' + model: 'Armor $1 5G' + - regex: 'Armor[ _](8) Pro(?:[);/ ]|$)' + model: 'Armor $1 Pro' + - regex: 'Armor[ _]([236789])(?:[);/ ]|$)' + model: 'Armor $1' - regex: 'Armor(?:[);/ ]|$)' model: 'Armor' - regex: 'Gemini Pro(?:[);/ ]|$)' model: 'Gemini Pro' - - regex: 'Power_([356])' + - regex: 'Power[_ ]([356][SL]?)' model: 'Power $1' + - regex: 'Note 8P(?:[);/ ]|$)' + model: 'Note 8P' + - regex: 'Note 7T(?:[);/ ]|$)' + model: 'Note 7T' + - regex: 'Note (9|11)P(?:[);/ ]|$)' + device: 'phablet' + model: 'Note $1P' + - regex: 'Ulefone[_ ]Tab[_ ]([^;/)]+)(?: Build|[);])' + device: 'tablet' + model: 'Tab $1' - regex: 'Ulefone[_ ](X|S1[ _]Pro|S[17])(?:[);/ ]|$)' model: '$1' - regex: 'Ulefone[ _-]?([^;/]+) Build' @@ -13437,20 +19588,54 @@ Ulefone: - regex: 'Ulefone[ _-]?([^;/)]+)(?:[;/)]|$)' model: '$1' -# UMIDIGI +# UMIDIGI or UMI UMIDIGI: - regex: 'UMI(?:DIGI)?[ _]|A5_Pro' + regex: 'UMI(?:DIGI)?[ _]|(?:A[5]_Pro|.+; A[79] Pro|S3_Pro|ROME[_ ]X|BISON|hammer_S|S2 LITE|London|Z2_PRO|C NOTE 2|A11 Pro Max|Power 3|Android 10.+ (?:A3[SX]|A7S(?! 2020))|RP01|MT01|MP0[12])(?:[;/) ]|$)' device: 'smartphone' models: - - regex: 'A5_Pro' - model: 'A5 Pro' + - regex: 'MT01(?:[;/) ]|$)' + device: 'tablet' + model: 'A11 Tab' + + - regex: '(A[3579]|Z2|S3)[_ ]Pro' + model: '$1 Pro' + - regex: 'A11 Pro Max' + model: 'A11 Pro Max' + - regex: 'MP01(?:[;/) ]|$)' + model: 'A11S' - regex: 'UMI TOUCH X' model: 'Touch X' - regex: 'UMI TOUCH' model: 'Touch' - - regex: 'UMI_(London|Diamond(?:_X)?)' - model: '$1' - - regex: 'UMI(?:DIGI)?[ _]([^/;)]+)(?: Build|\))' + - regex: 'ROME[_ ]X' + model: 'Rome X' + - regex: 'BISON GT' + model: 'Bison GT' + - regex: 'Bison N1' + model: 'Bison N1' + - regex: 'RP01(?:[;/) ]|$)' + model: 'Bison X10' + - regex: 'BISON Pro' + model: 'Bison Pro' + - regex: 'BISON' + model: 'Bison' + - regex: 'hammer_S' + model: 'Hammer S' + - regex: 'C NOTE 2' + model: 'C Note 2' + - regex: 'UMI[_ ]SUPER' + model: 'Super' + - regex: 'S2 LITE' + model: 'S2 Lite' + - regex: 'Power 3' + model: 'Power 3' + - regex: 'MP02(?:[;/) ]|$)' + model: 'Power 5S' + - regex: ' (A3[SX]|A7S)(?:[;/) ]|$)' + model: '$1' + - regex: '(?:UMI_)?(London|Diamond(?:_X)?)' + model: '$1' + - regex: 'UMI(?:DIGI)?[ _]([^/;)]+)(?: Build|[;)])' model: '$1' # Uniscope @@ -13491,11 +19676,13 @@ Unnecto: - regex: 'U905' model: 'Air 5.5' -# Unonu +# Unonu (unonumobile.com) Unonu: - regex: 'Unonu[ _-]' + regex: 'Unonu[ _-]|(?:U4001)(?:[);/ ]|$)' device: 'smartphone' models: + - regex: '(U4001)(?:[);/ ]|$)' + model: '$1' - regex: 'Unonu[ _-]([^;/]+) Build' model: '$1' - regex: 'Unonu[ _-]?([^;/)]+)(?:[);/ ]|$)' @@ -13509,13 +19696,17 @@ UTOK: # Vastking Vastking: - regex: '(M910A|M783K|M783K-16G|M1072R-3G)(?:[);/ ]|$)' + regex: '(?:M910A|M783K|M783K-16G|M1072R-3G|KingPad_(?:K10|SA10)(?:Pro)?)(?:_EEA)?(?:[);/ ]|$)' device: 'tablet' - model: '$1' + models: + - regex: 'KingPad_(K10|SA10)(Pro)?' + model: 'KingPad $1 $2' + - regex: '(M910A|M783K|M783K-16G|M1072R-3G)(?:[);/ ]|$)' + model: '$1' -# ViewSonic +# ViewSonic (viewsonic.com) ViewSonic: - regex: 'ViewSonic|VSD[0-9]+(?:[);/ ]|$)|ViewPad|ViewPhone' + regex: 'ViewSonic|ViewPad|ViewPhone|(?:IFP(?:98|86|[67]5)50-3|VSD[0-9]+)(?:[);/ ]|$)' device: 'smart display' models: - regex: '(?:ViewSonic-)?V500(?:[);/ ]|$)' @@ -13532,6 +19723,8 @@ ViewSonic: device: 'tablet' - regex: '(VSD[0-9]+)(?:[);/ ]|$)' model: '$1' + - regex: 'IFP(98|86|[67]5)50-3' + model: 'ViewBoard IFP$150-3 $1" 4K' # Vitelcom Vitelcom: @@ -13553,18 +19746,18 @@ Fengxiang: # VK Mobile VK Mobile: - regex: 'VK(?!share)[\-]?([a-z0-9 ]+)([;\)/ ]| Build)' + regex: 'VK-VK([79]00)(?:[);/ ]|$)' device: 'feature phone' - model: '$1' + model: 'VK$1' # Vernee Vernee: - regex: 'Vernee|Mars Pro|Apollo (?:Lite|X)|Thor (?:E|Plus)' + regex: 'Vernee|(?:Mars Pro|Apollo[ _](?:Lite|X)|Thor (?:E|Plus)|X2_euro|M7_EEA|T3 Pro|V2 Pro)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Apollo Lite' + - regex: 'Apollo[ _]Lite' model: 'Apollo Lite' - - regex: 'Apollo X' + - regex: 'Apollo[ _]X' model: 'Apollo X' - regex: 'Mars Pro' model: 'Mars Pro' @@ -13574,6 +19767,12 @@ Vernee: model: 'Thor Plus' - regex: 'Vernee_M5' model: 'M5' + - regex: 'M7_EEA' + model: 'M7' + - regex: 'X2_euro' + model: 'X2' + - regex: '(V2|T3) Pro' + model: '$1 Pro' - regex: 'Vernee[ _-]([^;/]+) Build' model: '$1' - regex: 'Vernee[ _-]([a-z0-9_-]+)' @@ -13595,13 +19794,27 @@ Vertu: # Venso mobile Venso: - regex: '(CX-508|CX-551|Reiv 500|Creon F5)(?:[);/ ]|$)' + regex: '(?:CX-508|CX-551|Reiv 500|Creon F5|Isprit U50|Isprit-U50-LTE)(?:[);/ ]|$)' device: 'smartphone' - model: '$1' + models: + - regex: 'Isprit U50|Isprit-U50-LTE' + model: 'Isprit U50' + - regex: '(CX-508|CX-551|Reiv 500|Creon F5)' + model: '$1' + +# Venturer (https://venturer.com/) +Venturer: + regex: 'VCT([a-z0-9_-]+)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'VCT9B06Q22(?:[);/ ]|$)' + model: 'Challenger Pro 10.1"' + - regex: 'VCT([a-z0-9_-]+)' + model: 'VCT$1' # Verizon Verizon: - regex: 'QTA(SUN[12]|XIA1|QZ3|QZ3KID|IR7)|QMV7B' + regex: 'QTA(SUN[12]|XIA1|QZ3|QZ3KID|IR7)|QMV7[AB]' device: 'tablet' models: - regex: 'QTAXIA1|QTAIR7' @@ -13614,7 +19827,7 @@ Verizon: model: 'Ellipsis Kids LTE' - regex: 'QTAQZ3' model: 'Ellipsis 8' - - regex: 'QMV7B' + - regex: 'QMV7[AB]' model: 'Ellipsis 7' # Verykool @@ -13622,16 +19835,101 @@ Verykool: regex: 'verykool' device: 'smartphone' models: - - regex: 'verykoolS5004' - model: 'Lotus JR.' - - regex: 'verykool[ _]?([^/;]+) Build' + - regex: 'verykool[ _]?SL5009' + model: 'Jet' + - regex: 'verykool[ _]?S5001' + model: 'Lotus' + - regex: 'verykool[ _]?S5004' + model: 'Lotus Jr' + - regex: 'verykool[ _]?S5007' + model: 'Lotus Plus' + - regex: 'verykool[ _]?s5015' + model: 'Spark II' + - regex: 'verykool[ _]?SL5011' + model: 'Spark LTE' + - regex: 'verykool[ _]?s5019' + model: 'Wave' + - regex: 'verykool[ _]?S5005' + model: 'Lotus II' + - regex: 'verykool[ _]?SL5560' + model: 'Maverick Pro' + - regex: 'verykool[ _]?SL5200' + model: 'Eclipse' + - regex: 'verykool[ _]?SL5050' + model: 'Phantom' + - regex: 'verykool[ _]?S5030' + model: 'Helix II' + - regex: 'verykool[ _]?s5527' + model: 'Alpha Pro' + - regex: 'verykool[ _]?s5526' + model: 'Alpha' + - regex: 'verykool[ _]?S5530' + model: 'Maverick II' + - regex: 'verykool[ _]?S5525' + model: 'Maverick III' + - regex: 'verykool[ _]?S5524' + model: 'Maverick III Jr' + - regex: 'verykool[ _]?s5516' + model: 'Maverick Jr' + - regex: 'verykool[ _]?SL5550' + model: 'Maverick LTE' + - regex: 'verykool[ _]?s5035' + model: 'Spear' + - regex: 'verykool[ _]?s5034' + model: 'Spear Jr' + - regex: 'verykool[ _]?s5037' + model: 'Apollo Quattro' + - regex: 'verykool[ _]?s5036' + model: 'Apollo' + - regex: 'Sol Quatro Jr' + model: 'Sol Quatro Jr' + - regex: 'verykool[ _]?s6005x' + model: 'Cyprus Pro' + - regex: 'verykool[ _]?SL6010' + model: 'Cyprus LTE' + - regex: 'verykool[ _]?S4006[QT]?' + model: 'Leo 3G' + - regex: 'verykool[ _]?S4007' + model: 'Leo IV' + - regex: 'verykool[ _]?S4008' + model: 'Leo V' + - regex: 'verykool[ _]?s5017|Dorado s5017' + model: 'Dorado' + - regex: 'verykool[ _]?s4510' + model: 'Luna' + - regex: 'verykool[ _]?s5204' + model: 'Orion' + - regex: 'verykool[ _]?s5205' + model: 'Orion Pro' + - regex: 'verykool[ _]?s5528Jr' + model: 'Cosmo Jr' + - regex: 'verykool[ _]?s5528' + model: 'Cosmo' + - regex: 'verykool[ _]?s5702' + model: 'Royale Quattro' + - regex: 'verykool[ _]?SL5029' + model: 'Bolt Pro' + - regex: 'verykool[ _]?SL5565' + model: 'Rocket' + + - regex: 'verykool[ _]?TL8010' + device: 'tablet' + model: 'KolorPad LTE' + - regex: 'verykool[ _]?T7440' + device: 'tablet' + model: 'KolorPad II' + - regex: 'verykool[ _]?T7445' + device: 'tablet' + model: 'KolorPad IV' + + - regex: 'verykool[ _]?([^/;)]+)(?:[ _]SL?[0-9]{4}[QT]?)(?: Build|[);])' model: '$1' - - regex: 'verykool[ _]?([^/;]+);' + - regex: 'verykool[ _]?([^/;)]+)(?: Build|[);])' model: '$1' -# Vestel +# Vestel (vestel.com) Vestel: - regex: 'Venus[ _](GO|V[1-9]|Z[1-9]0)|V_?TAB|VP74|VT97PRO|VSP145M|VSP250[GS]|VSP355[GS]|V3_5580_Dual' + regex: 'Vestel[ _]|Venus[ _](GO|E[2-5]|V[1-9]|Z[1-9]0)|(?<!Winnovo )V_?TAB|VP74|VT97PRO|VSP145M|VSP250[GS]|VSP355[GS]|V3_5580_Dual|V TAB Z1' device: 'smartphone' models: - regex: 'VT97PRO' @@ -13643,12 +19941,18 @@ Vestel: - regex: 'VTAB10' model: 'VTab 10' device: 'tablet' - - regex: 'V_TAB_7_ECO_III ' + - regex: 'V_TAB_7_ECO_III' model: 'VTab 7 Eco 3' device: 'tablet' + - regex: 'V_TAB_7_LITE_III' + model: 'VTab 7 Lite 3' + device: 'tablet' - regex: 'V_TAB_([0-9]{4}[A-Z]?)' model: 'VTab $1' device: 'tablet' + - regex: 'V[_ ]TAB[_ ](Z1)' + model: 'VTab $1' + device: 'tablet' - regex: 'V3_5580_Dual' model: 'Venus V3 5580 Dual' - regex: 'VSP145M' @@ -13661,18 +19965,33 @@ Vestel: model: 'Venus 5.5V' - regex: 'VSP355S' model: 'Venus 5.5X' - - regex: 'Venus[ _]V([1-9])' - model: 'Venus V$1' + - regex: 'Venus[ _]V([1-9])([ _][0-9]{4})?' + model: 'Venus V$1$2' - regex: 'Venus[ _]Z([1-9]0)' model: 'Venus Z$1' - regex: 'Venus[ _]GO' model: 'Venus Go' + - regex: 'Venus E2 Plus Dual' + model: 'Venus E2 Plus Dual' + - regex: 'Venus[ _]E2 Plus' + model: 'Venus E2 Plus' + - regex: 'Venus[ _]E([345])' + model: 'Venus E$1' + - regex: 'Vestel_5000_Dual' + model: '5000 Dual' + - regex: 'Vestel_5000_2gb' + model: '5000 2GB' + - regex: 'Vestel[ _](5000|5530)' + model: '$1' # Videocon Videocon: - regex: 'Videocon[_ \-]|VT75C|V502430' + regex: 'Videocon[_ \-]|(?:VT75C|V406018|V512930|V50(?:2430|3630|4730|5024|5430|4630|5[98]20)|Z45_(?:Dazzle|Amaze)|Z45Q Star|Z50 Nova)(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'Videocon_V1585' + device: 'feature phone' + model: 'V1585' - regex: 'Videocon[_ \-]([a-z0-9]+)' model: '$1' - regex: 'VT75C(?:[);/ ]|$)' @@ -13680,10 +19999,32 @@ Videocon: device: 'tablet' - regex: 'V502430(?:[);/ ]|$)' model: 'Kryton 3' + - regex: 'V505024(?:[);/ ]|$)' + model: 'Kryton 22 Plus' + - regex: 'V503630(?:[);/ ]|$)' + model: 'Delite 11' + - regex: 'V504730(?:[);/ ]|$)' + model: 'Delite 21' + - regex: 'V505920(?:[);/ ]|$)' + model: 'Metal Pro 2' + - regex: 'V505820(?:[);/ ]|$)' + model: 'Metal Pro 1' + - regex: 'V406018(?:[);/ ]|$)' + model: 'Starr 100' + - regex: 'V512930(?:[);/ ]|$)' + model: 'Ultra 50' + - regex: '(V505430|V504630)(?:[);/ ]|$)' + model: '$1' + - regex: 'Z45_(Dazzle|Amaze)(?:[);/ ]|$)' + model: 'Infinium Z45 $1' + - regex: 'Z45Q Star(?:[);/ ]|$)' + model: 'Infinium Z45Q Star' + - regex: 'Z50 Nova(?:[);/ ]|$)' + model: 'Infinium Z50 Nova' # Vodafone Vodafone: - regex: '(?<!FBCR/)Vodafone[ _-]|Smart ?Tab ?(?:III? ?)?(?:|4G|7|10)[);/ -]|VodafoneSmartChat|VFD[ _][0-9]+(?:[);/ ]|$)|VFD320|VF6[89]5|VF-(696|1397|795|895N|1497)' + regex: '(?<!FBCR/)Vodafone[ _-]|Smart ?Tab ?(?:III? ?)?(?:|4G|7|10)[);/ -]|VodafoneSmartChat|Smart Ultra 6|(?:VFD[ _][0-9]+|VFD320|VF6[89]5|VF-(696|1397|795|895N|1497))(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'VFD 100' @@ -13700,6 +20041,8 @@ Vodafone: model: 'Smart Turbo 7' - regex: 'VFD 51[013]' model: 'Smart E8' + - regex: 'VFD 52[78]' + model: 'Smart E9' - regex: 'VFD 600' model: 'Smart Prime 7' - regex: 'VFD320' @@ -13708,12 +20051,18 @@ Vodafone: model: 'Smart X9' - regex: 'VFD 610' model: 'Smart N8' + - regex: 'VFD 630' + model: 'Smart N10' + - regex: 'VFD 620' + model: 'Smart N9 Lite' - regex: 'Smart ultra 6' model: 'Smart Ultra 6' - regex: 'VFD 700' model: 'Smart Ultra 7' - regex: 'VFD 720' model: 'Smart N9' + - regex: 'VFD 730' + model: 'Smart V10' - regex: 'VFD 900' model: 'Smart Platinum 7' - regex: 'Vodafone[ _]875(?:[);/ ]|$)' @@ -13722,6 +20071,8 @@ Vodafone: model: 'Smart 3' # Alcatel - regex: 'Vodafone[ _]785(?:[);/ ]|$)' model: 'Smart 4 Mini' + - regex: 'VFD 525(?:[);/ ]|$)' + model: 'Smart 4G' - regex: 'Vodafone[ _]890N(?:[);/ ]|$)' model: 'Smart 4 Turbo' # Coolpad 3601U - regex: 'Vodafone[ _]985N(?:[);/ ]|$)' @@ -13786,9 +20137,9 @@ Vodafone: - regex: 'Vodafone[ _-]([a-z0-9_-]+)' model: '$1' -# Vonino +# Vonino (vonino.ro, vonino.it) Vonino: - regex: 'Vonino|Epic (?:E8|P7)|Gyga[ _](?:X|S|QS|XS)|Jax[ _](?:QS|[SXQN]|Mini)|Magnet[ _]M[19]|Navo_QS|Onyx_(QS|Z)|Orin_QS|Pluri[ _](?:[BCMQ]7|[CQ]8)|Sirius_QS|Volt[ _][XS]|Xavy_(T7|L8)|Xylo[ _][XSPQ]|Zun[ _]X[OS]?|JAX_N' + regex: 'Vonino|Epic (?:E8|P7)|Gyga[ _](?:X|S|QS|XS)|Jax[ _](?:QS|[SXQN]|Mini)|Magnet[ _](?:M[19]|G[35]0)|Navo_QS|Onyx_(QS|Z)|Orin_QS|Pluri[ _](?:[BCMQ]7|[CQM]8)|Sirius_QS|(?<!Schok )Volt[ _][XS]|Xavy_(T7|L8)|Xylo[ _][XSPQT]|Zun[ _]X[OS]?|JAX_N|Druid_L10|iMart_Pro' device: 'smartphone' models: - regex: 'Zun[ _]XO' @@ -13797,7 +20148,7 @@ Vonino: model: 'Zun XS' - regex: 'Zun[ _]X' model: 'Zun X' - - regex: 'Xylo[ _](P|S|X|Q)' + - regex: 'Xylo[ _]([PSXQT])' model: 'Xylo $1' - regex: 'Volt[ _]S_A7' model: 'Volt S A7' @@ -13819,17 +20170,24 @@ Vonino: model: 'Jax $1' - regex: 'Jax[ _]Mini' model: 'Jax Mini' + + - regex: 'iMart_Pro' + device: 'tablet' + model: 'IMart Pro' - regex: 'Epic (E8|P7)' model: 'Epic $1' device: 'tablet' - regex: 'Pluri[ _](B|C|M|Q)7' model: 'Pluri $17' device: 'tablet' - - regex: 'Pluri[ _](C|Q)8' + - regex: 'Pluri[ _]([CQM])8' model: 'Pluri $18' device: 'tablet' - - regex: 'Magnet[ _]M([19])' - model: 'Magnet M$1' + - regex: 'Druid[_ ](L10)' + model: 'Druid $1' + device: 'tablet' + - regex: 'Magnet[ _](M[19]|G[35]0)' + model: 'Magnet $1' device: 'tablet' - regex: 'Navo_QS' model: 'Navo QS' @@ -13878,30 +20236,43 @@ Voxtel: # Vulcan Vulcan: - regex: 'VP5004A' + regex: '(?:VP5004A|HT0704W08|VS5513|VS4011|VR6031)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'VP5004A' - model: 'VP5004A' + - regex: '(VP5004A|VR6031)(?:[);/ ]|$)' + model: '$1' + - regex: 'VS5513(?:[);/ ]|$)' + model: 'Tempo S13' + - regex: 'VS4011(?:[);/ ]|$)' + model: 'Tempo S11' + - regex: 'HT0704W08' # Hyundai + model: 'Koral 7W4' + device: 'tablet' -# Walton +# Walton (waltonbd.com) Walton: - regex: 'Walton|Walpad|Primo[ _](C[1234]?|D[1-68]|E[1-58]|EF[23]?|EM|F[1-7]i?|G[1-7]|GF[234]?|GH[23]?|GM|H[2346]|HM|N|N1|NF|NX2?|R[12346]|RH2?|RM2?|RX[23]?|S[123456]|V1|X[1234]|Z|ZX)' + regex: 'Walton|Walpad|RX7 Mini|Primo[ _](C[1234]?|D[1-689]|E[1-589]|F8s|S7|EF[23]?|EM|F[1-79]i?|G[1-9]|GF[234]?|GH[23]?|GM|H[2-689M]|H7s|N[F1]?|NX2?|R[1-468]|R[HM]2?|RX[23]?|S[1-6]|V1|X[1-4]|Z|ZX)' device: 'smartphone' models: - - regex: 'Walpad ([^;/]+) Build' + - regex: 'Walpad[ _]([^;/)]+)(?: Build|[);])' device: 'tablet' model: 'Primo Walpad $1' - regex: 'Primo S6 infinity' model: 'Primo S6 Infinity' - - regex: 'Walton[ _]([^;/]+) Build' - model: '$1' - - regex: 'Walton[ _]([^;/]+)\)' - model: '$1' - - regex: 'Primo[ _]([^;/]+) Build' - model: 'Primo $1' - - regex: 'Primo[ _]([0-9a-z]+)' + - regex: 'Primo H8 Pro(?:[);/ ]|$)' + model: 'Primo H8 Pro' + - regex: 'Primo (RM2|ZX2|NX4) mini(?:[);/ ]|$)' + model: 'Primo $1 Mini' + - regex: 'Primo H8(?:[);/ ]|$)' + model: 'Primo H8 Turbo' + - regex: 'RX7 Mini(?:[);/ ]|$)' + model: 'RX7 Mini' + + # general detections + - regex: 'Primo[ _]([^;/)]+)(?: Build|[;)])' model: 'Primo $1' + - regex: 'Walton[ _]([^;/)]+)(?: Build|[;)])' + model: '$1' # Wellcom WellcoM: @@ -13911,7 +20282,7 @@ WellcoM: # Wexler Wexler: - regex: 'Wexler|ULTIMA 7 TWIST PLUS|TAB[ _]10Q(?:[);/ ]|$)|ZEN[ _](?:4\.5|4\.7|5)' + regex: 'Wexler|(?:ULTIMA 7 TWIST PLUS|TAB10iQ3G|TAB[ _]10Q)(?:[);/ ]|$)|ZEN[ _](?:4\.[57]|5)' device: 'tablet' models: - regex: '(?:Wexler[ _\-\.])?ZEN[ _]4\.5(?:[);/ ]|$)' @@ -13923,8 +20294,13 @@ Wexler: - regex: '(?:Wexler[ _\-\.])?ZEN[ _]5(?:[);/ ]|$)' model: 'ZEN 5' device: 'smartphone' + - regex: 'ZEN[ _]5\+(?:[);/ ]|$)' + model: 'ZEN 5 Plus' + device: 'smartphone' - regex: '(?:Wexler[ _\-\.])?TAB[ _]10Q(?:[);/ ]|$)' model: 'TAB 10Q' + - regex: 'TAB10iQ3G(?:[);/ ]|$)' + model: 'TAB 10iQ 3G' - regex: 'Wexler[ _\-\.]([^;/]+) Build' model: '$1' - regex: 'Wexler[ _\-\.]([^);/]+)(?:[);/]|$)' @@ -13932,17 +20308,53 @@ Wexler: - regex: '(ULTIMA 7 TWIST PLUS)(?:[);/ ]|$)' model: '$1' -# Wiko +# Inco (incomobile.com) +Inco: + regex: '(?:Inco[ _](Aurora II|Colors|Sphere|Plain[_ ]2S?|Plain2 S|Flex(?: 2S)?|S4|Bloom(?: 2)?)|(Horizon_S|Horizon \+|MATTER))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(?:Inco[ _])?(Plain[_ ]2S?|Colors|Horizon_S|Horizon \+|Aurora II|Flex(?: 2S)?|S4|Bloom(?: 2)?)(?:[);/ ]|$)' + model: '$1' + - regex: 'Plain2 S' + model: 'Plain 2S' + - regex: 'MATTER' + model: 'Matter' + - regex: 'Inco Sphere( 3)?(?:[);/ ]|$)' + device: 'tablet' + model: 'Sphere$1' + +# Wink +Wink: + regex: '(?<!mismart )Wink[_ ]' + device: 'smartphone' + models: + - regex: 'Wink[_ ]((?:Glory|World|Share|City)(?:[_ ](?:SE|S))?)(?:[);/ ]|$)' + model: '$1' + - regex: 'Wink[ _](Primo|Highway)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Wiko (wikomobile.com) Wiko: - regex: '(?:WIKO[_ -])|(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink([^/;]*)|Highway([^/;]*)|Iggy|Stairway|Rainbow ?(Jam|Lite|Up)?|Darkside|Darkmoon|Darkfull|Darknight|Freddy|FEVER|Jerry[2]?|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom|Getaway|Goa(?!nna)|Kite|Robby|Lenny[2-9]?|Slide|Sunset[2-9]?|Sunny[2-9]?|Tommy[2-9]?|PULP(?: Fab)?|Wax|HARRY|Ridge(?: Fab)?|U FEEL(?: Prime| Lite)?|U PULSE(?: LITE)?|View2 Go|View XL|View Prime)(?: Plus)?(?: 4G)?(?: Build|$)?|W_(?:C800|K[346]00|P200|C200SN)|WC300|W-(V720|V800|P[36]11|K420|K510)-(TVM|EEA|SUN|OPE)|WIM Lite|W-K360-TV|W-U300|U307AS|CINK PEAX 2' + regex: '(?:WIKO[_ -])|(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink([^/;]*)|Highway([^/;]*)|Iggy|Stairway|Rainbow ?(Jam|Lite|Up)?|Darkside|Darkmoon|Darkfull|Darknight|Freddy|FEVER|Jerry[2]?|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom|Getaway|Goa(?!nna|lPlus)|Kite|Robby|Lenny[2-9]?|Slide|Sunset[2-9]?|Sunny[2-9]?|Tommy[2-9]?|PULP(?: Fab)?|Wax|HARRY|Ridge(?! Plus)(?: Fab)?|U FEEL(?: Prime| Lite)?|U PULSE(?: LITE)?|View2 (?:Go|Plus)|View XL|View Prime)(?: Plus)?(?: 4G)?(?: Build|$)?|W_(?:C8[06]0|K[346]00|P130|P200|C200SN)|WC300|W-(?:V7[23]0|V745|V755|V8[035]0|P[36]11|K130|K211|K3[68]0|K420|K510S?|K560|K610|K630)-(?:BYT|EEA|FRA|OPE|SUN|SWI|TIM|TMV|TVM|DU|T[HV])|WIM Lite|W-V851|W-V6[08]0|W-V750BN|W-K200|W-U300|U307AS|CINK PEAX 2|HIGHWAY PURE|C210AE|v3913|U614AS|V3991AN' device: 'smartphone' models: + - regex: '(?:WIKO-)?W-V745' + model: 'Power U10' + - regex: '(?:WIKO-)?W-V750' + model: 'Power U20' + - regex: '(?:WIKO-)?W-V755-EEA' + model: 'Power U30' - regex: '(?:WIKO-)?Cink Peax 2' model: 'Cink Peax 2' - regex: '(?:Wiko-)?Cink([^/;]*) Build' model: 'Cink$1' - regex: '(?:WIKO-)?CINK_([a-z0-9_]+)' model: 'Cink $1' + - regex: '(?:WIKO-)?HIGHWAY PURE' + model: 'Highway Pure' + - regex: '(?:WIKO-)?HIGHWAY STAR' + model: 'Highway Star' - regex: '(?:Wiko-)?Highway([^/;]*) Build' model: 'Highway$1' - regex: '(?:WIKO-)?HIGHWAY_([a-z0-9_]+)' @@ -13987,6 +20399,8 @@ Wiko: model: 'Jerry Max' - regex: 'W_K300' model: 'Jerry 3' + - regex: 'W-K420-TVM' + model: 'Jerry 4' - regex: '(?:WIKO-)?Jerry2' model: 'Jerry 2' - regex: '(?:WIKO-)?Jerry' @@ -14001,8 +20415,14 @@ Wiko: model: 'Kite' - regex: 'W_K400' model: 'Lenny 5' + - regex: 'C210AE(?:[);/ ]|$)' + model: 'Life' - regex: 'U307AS(?:[);/ ]|$)' model: 'Life 2' + - regex: 'U316AT(?:[);/ ]|$)' + model: 'Life 3' + - regex: 'v3913(?:[);/ ]|$)' + model: 'Kenny' - regex: '(?:WIKO-)?Lenny[ -_]?3 Max' model: 'Lenny 3 Max' - regex: '(?:WIKO-)?Lenny[ -_]?4 Plus' @@ -14019,12 +20439,18 @@ Wiko: model: 'Sunset' - regex: '(?:WIKO-)?Sunny3' model: 'Sunny 3' + - regex: 'W-K200' + model: 'Sunny 3 Plus' - regex: '(?:WIKO-)?Sunny2 Plus' model: 'Sunny 2 Plus' - regex: '(?:WIKO-)?Sunny2' model: 'Sunny 2' - regex: 'W-K360-TV' model: 'Sunny 4 Plus' + - regex: 'W-K130-TMV' + model: 'Sunny 4' + - regex: 'W-K380-TVM' + model: 'Sunny 5' - regex: '(?:WIKO-)?Sunny' model: 'Sunny' - regex: '(?:W_K600|Tommy3|W_C200SN)' @@ -14039,6 +20465,8 @@ Wiko: model: 'Wax' - regex: '(?:WIKO-)?HARRY' model: 'Harry' + - regex: 'W-V600' + model: 'Harry 2' - regex: '(?:WIKO-)?WIM Lite' model: 'WIM Lite' - regex: '(?:WIKO-)?Pulp Fab 4G' @@ -14049,8 +20477,8 @@ Wiko: model: 'Pulp 4G' - regex: '(?:WIKO-)?Pulp' model: 'Pulp' - - regex: '(?:WIKO-)?Robby' - model: 'Robby' + - regex: '(?:WIKO-)?Robby(2)?' + model: 'Robby$1' - regex: '(?:WIKO-)?U PULSE LITE' model: 'U Pulse Lite' - regex: '(?:WIKO-)?U PULSE' @@ -14061,8 +20489,12 @@ Wiko: model: 'U Feel Prime' - regex: '(?:WIKO-)?U FEEL' model: 'U Feel' + - regex: 'V3991AN' + model: 'U Feel Fab' - regex: '(?:WIKO-)?View2 Go' model: 'View 2 Go' + - regex: '(?:WIKO-)?View2 Plus' + model: 'View 2 Plus' - regex: '(?:WIKO-)?View XL' model: 'View XL' - regex: '(?:WIKO-)?View Prime' @@ -14071,41 +20503,61 @@ Wiko: model: 'View Lite' - regex: 'W_C800' model: 'View 2' + - regex: 'W_C860' + model: 'View 2 Pro' - regex: 'W_P200' model: 'View Max' - - regex: 'W-V800-(TVM|EEA|OPE)' + - regex: 'W_P130' + model: 'View Go' + - regex: 'W-V800-(TVM|TIM|EEA|OPE|DU)' model: 'View 3 Lite' + - regex: 'W-V851' + model: 'View 5' + - regex: 'W-V850-EEA' + model: 'View 5 Plus' + - regex: 'W-K130-(?:OPE|EEA)' + model: 'Y50' - regex: 'W-K420-EEA' model: 'Y50' - - regex: 'W-K510-(TVM|EEA|OPE|SUN)' + - regex: 'W-K211' + model: 'Y51' + - regex: 'W-K510-(?:TVM|EEA|OPE|SUN|BYT|TH)|W-K510S-SWI' model: 'Y60' - - regex: 'W-V720-(EEA|OPE)' + - regex: 'W-K560-(?:EEA|TVM)' + model: 'Y61' + - regex: 'W-K610' + model: 'Y62' + - regex: 'W-V720-(?:EEA|OPE|SUN)' model: 'Y80' - - regex: 'W-P311-(EEA|OPE)' + - regex: 'W-V680' + model: 'Y81' + - regex: 'W-K630' + model: 'Y82' + - regex: 'W-P311-(?:EEA|OPE|TVM)' model: 'View 3' - - regex: 'W-P611-EEA' + - regex: 'W-P611-(?:EEA|OPE)' model: 'View 3 Pro' + - regex: 'W-V830-(?:EEA|OPE)' + model: 'View 4' + - regex: 'W-V730-(?:EEA|TVM)' + model: 'View 4 Lite' + - regex: 'W-V745-TVM' + model: 'Power U10' - regex: 'W-U300(?:[);/ ]|$)' model: 'Ride' - - regex: 'Wiko ([^/;]+) Build' - model: '$1' - - regex: 'Wiko ([^/; ]+)' + - regex: 'U520AS(?:[);/ ]|$)' + model: 'Ride 2' + - regex: 'U614AS(?:[);/ ]|$)' + model: 'Ride 3' + - regex: 'Wiko ([^/;)]+)(?: Build|[;)])' model: '$1' # Wieppo Wieppo: - regex: 'Wieppo (S6 Lite|S[658])(?:[);/ ]|$)' + regex: 'Wieppo (S6 Lite|S[658]|E1)(?:[);/ ]|$)' device: 'smartphone' model: '$1' -# Wink -Wink: - regex: 'Wink_' - device: 'smartphone' - models: - - regex: 'Wink_City_(SE|S)' - model: 'City $1' - # Weimei Weimei: regex: 'weplus_3' @@ -14116,11 +20568,13 @@ Weimei: # Wileyfox Wileyfox: - regex: '(?:Wileyfox [^/]+)|Swift 2(?:[);/ ]|$)' + regex: 'Wileyfox|Swift 2(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Wileyfox Spark \+' model: 'Spark +' + - regex: 'Wileyfox; Pro' + model: 'Pro' - regex: 'Wileyfox Spark X' model: 'Spark X' - regex: 'Wileyfox (Spark|Swift)' @@ -14153,6 +20607,16 @@ Wolfgang: device: 'smartphone' model: 'AT-AS$1' +# Wolki (https://wolkimobile.com/) +Wolki: + regex: '(?:W55SE|WS067)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'W55SE' + model: 'W5.5 SE' + - regex: 'WS067' + model: 'W6 Pro' + # Wonu Wonu: regex: 'Wonu ([a-z0-9]+)' @@ -14167,35 +20631,135 @@ Woo: - regex: 'SP5026i-Scorpio' model: 'Scorpio' -# Woxter +# Woxter (woxter.es) Woxter: - regex: 'Woxter[ _]([^/;]+) Build' + regex: 'Woxter[ _]|Nimbus 101Q' device: 'tablet' - model: '$1' + models: + - regex: 'Nimbus ?(101Q|115|1100RX)(?:[);/ ]|$)' + model: 'Nimbus $1' + - regex: 'WOXTER[ _]I-101(?:[);/ ]|$)' + model: 'i-101' + - regex: 'Woxter[ _]([SQ]X) ?([0-9A-Z]+)(?:[);/ ]|$)' + model: '$1 $2' + - regex: 'Woxter[_ ](?:Zielo[ _])?(Q27|Z800|Z420)(?:[);/ ]|$)' + device: 'smartphone' + model: 'Zielo $1' + - regex: 'Woxter[ _]([^/;)]+)(?: Build|\))' + model: '$1' # X-View X-View: - regex: 'ZEN_U5+' + regex: 'ZEN_U5\+|AMBER_KIDS|Proton_Amber_HD|PROTON_JADE_2_PRO' device: 'smartphone' models: - - regex: 'ZEN_U5+' + - regex: 'ZEN_U5\+' model: 'ZEN U5+' + - regex: 'AMBER_KIDS' + device: 'tablet' + model: 'Amber Kids' + - regex: 'Proton_Amber_HD' + device: 'tablet' + model: 'Proton Amber HD' + - regex: 'PROTON_JADE_2_PRO' + device: 'tablet' + model: 'Proton Jade 2 Pro' # POCO (sub brand Xiaomi) POCO: - regex: '(?:POCO[ _](?:X2|F2 PRO)|M2007J20CG)(?:[);/ ]|$)' + regex: '(?:POCO[ _](?:X[23](?:_SN)?|F2 PRO|M[32]|F3)|M2010J19C[GI]|M2007J20C[ITG]|M2012K11AG|M2006C3MI|M2004J19PI|M2102J20S[GI]|M2103K19P[IGY]|21091116AG|21061110AG|M2104K10I|211033MI|2201117PG)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'POCO X2(?:[);/ ]|$)' model: 'X2' - - regex: 'M2007J20CG(?:[);/ ]|$)' + - regex: '(?:M2012K11AG|POCO F3)(?:[);/ ]|$)' + model: 'F3' + - regex: 'M2004J19PI(?:[);/ ]|$)' + model: 'M2' + - regex: '(?:M2103K19P[IGY]|M3 Pro 5G)(?:[);/ ]|$)' + model: 'M3 Pro 5G' + - regex: 'POCO M([23]) Pro(?:[);/ ]|$)' + model: 'M$1 Pro' + - regex: '21091116AG' + model: 'M4 Pro 5G' + - regex: '2201117PG' + model: 'M4 Pro' + - regex: '(?:M2010J19C[GI]|POCO M3)(?:[);/ ]|$)' + model: 'M3' + - regex: '(?:M2007J20C[GT]|POCO X3 NFC)(?:[);/ ]|$)' model: 'X3 NFC' + - regex: '(?:M2102J20S[GI]|X3 Pro)(?:[);/ ]|$)' + model: 'X3 Pro' + - regex: '(?:M2007J20CI|POCO X3(?:_SN)?)(?:[);/ ]|$)' + model: 'X3' + - regex: '(?:21061110AG)(?:[);/ ]|$)' + model: 'X3 GT' + - regex: '(?:M2104K10I)(?:[);/ ]|$)' + model: 'F3 GT' + - regex: 'M2006C3MI(?:[);/ ]|$)' + model: 'C3' + - regex: '211033MI(?:[);/ ]|$)' + model: 'C31' - regex: 'POCO F2 PRO(?:[);/ ]|$)' model: 'F2 Pro' +# Zopo +Zopo: + regex: 'ZOPO|(?:ZOPO[_ ])?(Flash X3|F2_Color5_5|F5_Color_M5|ZP[0-9]{2,}[^/;]+)(?:\)| Build)' + device: 'smartphone' + models: + - regex: '(?:ZOPO_C2_MOD|ZP998)(?:[);/ ]|$)' + model: 'C2 II' + - regex: 'ZOPO 9xxQuad(?:[);/ ]|$)' + model: '9XX Quad' + - regex: '(?:ZOPO_)?ZP980[+](?:[);/ ]|$)' + model: 'ZP980+' + - regex: '(?:ZOPO_)?ZP980(?:[);/ ]|$)' + model: 'Scorpio' + - regex: 'ZP952(?:[);/ ]|$)' + model: 'Speed 7 Plus' + - regex: 'ZP951(?:[);/ ]|$)' + model: 'Speed 7' + - regex: 'ZP955(?:[);/ ]|$)' + model: 'Speed 8' + - regex: 'ZP950[+h]?(?:[);/ ]|$)' + model: 'Leader Max' + - regex: 'ZP(?:900H?|910)(?:[);/ ]|$)' + model: 'Leader' + - regex: 'ZP(?:800H|810)(?:[);/ ]|$)' + model: 'Libero HD' + - regex: 'ZP500[+]?(?:[);/ ]|$)' + model: 'Libero' + - regex: 'ZP330(?:[);/ ]|$)' + model: 'Color C' + - regex: 'ZP370(?:[);/ ]|$)' + model: 'Color S' + - regex: 'F2_Color5_5(?:[);/ ]|$)' + model: 'Color F2' + - regex: 'F5_Color_M5(?:[);/ ]|$)' + model: 'F5 Color M5' + - regex: 'ZP5(63|86)(?:[);/ ]|$)' + model: 'Color X' + - regex: 'ZP567(?:[);/ ]|$)' + model: 'Color C5i' + - regex: 'ZP300[S+]?(?:[);/ ]|$)' + model: 'Field' + - regex: 'ZP200[+]?(?:[);/ ]|$)' + model: 'Shining' + - regex: 'ZP100(?:[);/ ]|$)' + model: 'Pilot' + - regex: 'ZP1790(?:[);/ ]|$)' + model: 'Flash X2' + - regex: 'ZP781(?:[);/ ]|$)' + model: 'Flash G5 Plus' + - regex: 'ZOPO[_ ]ONE[_ ]([YXTP])(?:[);/ ]|$)' + model: 'One $1' + - regex: '(?:ZOPO_)?(Flash X3|X1i|ZP[0-9]{2,}[^/;)]+)(?: Build|\))' + model: '$1' + # Xiaomi Xiaomi: - regex: 'Xiaomi(?!/(?:Miui|Mint[ ])Browser)|Mi9 Pro 5G|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?)(?:[);/ ]|$)|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[12378]|201302[23]|2013061) Build|Redmi|MI_NOTE_Pro|POCOPHONE|(?:SHARK )?(KLE|MBU)-A0|SKR-[AH]0|SKW-[AH]0|POCO F1|DLT-[AH]0|MIBOX[234]([_ ]PRO)?|MiTV4[CSX]?|MiTV-(MSSP1|AXSO0)|AWM-A0|MI CC 9 Meitu Edition|MiBOX1S|MiTV4A|M2006C3(?:L[GC]|MN?G)|M2007J1SC|M2002J9[EG]|HM2014819|WT88047|M2004J(?:7[AB]|19)C|M2003J15SC|HM NOTE 1(?:LTE|W)|MI[_ ]PLAY|XIG01' + regex: 'Xiaomi(?!/(?:Miui|Mint[ ])Browser)|Mi9 Pro 5G|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?|pomelo)(?:[);/ ]|$)|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[12378]|201302[23]|2013061) Build|Redmi|POCOPHONE|(?:SHARK )?(KLE|KSR|MBU)-[AH]0|SK[RW]-[AH]0|PRS-[AH]0|POCO F1|DLT-[AH]0|MIBOX[234]([_ ]PRO)?|MiTV4[CSX]?|MiTV-(MSSP[01]|AXSO0|AESP0|MOOQ0)|AWM-A0|MI CC 9 Meitu Edition|MiBOX1S|MiTV4A|M2006J10C|M2006C3(?:L[IGC]|LVG|MN?G|MT)|M2007J1(?:7[CGI]|SC)|M2002J9[SEG]|HM2014819|WT88047|210611(?:8C|19BI)|M2004J(?:7[AB]|19)C|M2012K11(?:[CGI]|A[CI])|M2011K2[CG]|M2011J18C|M2006C3[ML]II|M2003J15SC|M2007J3S[ICYGP]|M2007J22[CG]|M2103K19[CGYI]|M2101K(?:[79]AG|7AI|7B[GI]|6[GIRP]|7BNY|9[GCR])|M2010J19S[CGYIL]|M1908C3JGG|M2102(?:K1AC|K1[CG]|J2SC)|HM NOTE 1(?:LTE|W)|MI[_ ]PLAY|XIG01|Qin 1s\+|Qin 2(?: Pro)?|MI_(NOTE_Pro|5X|4i|(?:A2|8)_Lite)|A001XM|lancelot|XIG02|21061119(?:[AD]G|AL)|2107119DC|M2101K(?:7BL|9AI)|M2012K10C|M2104K10AC|M1901F71|21051182[CG]|21081111RG|2109119D[GI]|21091116(?:AI|[AU]?C|i)|2201117T[GIY]|21121(?:119S[CG]|23AC)|2107113S[GR]|M2105K81A?C|2109119BC|220112[23]C|joyeuse|galahad|begonia| MDG1' device: 'smartphone' models: # specific smartphone models @@ -14209,62 +20773,138 @@ Xiaomi: model: 'Black Shark 2 Pro' - regex: '(?:SHARK )?KLE-A0' model: 'Black Shark 3' + - regex: '(?:SHARK )?KSR-A0' + model: 'Black Shark 4 Pro' + - regex: '(?:SHARK )?KLE-H0' + model: 'Black Shark 3 5G' + - regex: '(?:SHARK )?MBU-H0' + model: 'Black Shark 3 Pro 5G' - regex: '(?:SHARK )?MBU-A0' model: 'Black Shark 3 Pro' + - regex: '(?:SHARK )?PRS-[AH]0' + model: 'Black Shark 4' - regex: 'Xiaomi_2014501|2014501 Build' model: 'Hongmi 4G' - regex: 'Xiaomi_2014011|2014011 Build' model: 'Hongmi 1S' - regex: 'Xiaomi_201302[23]|201302[23] Build' model: 'Hongmi' - - regex: 'Xiaomi_2014818|2014818 Build' + - regex: 'Xiaomi[_-]2014818|2014818 Build' model: 'Hongmi 2 3G' - regex: 'Xiaomi_2014817|2014817 Build' model: 'Hongmi 2' - - regex: 'Xiaomi_201481[123]|201481[123] Build' + - regex: 'Xiaomi[_-]201481[123]|201481[123] Build' model: 'Hongmi 2 4G' - regex: 'MI[_ ]PLAY(?:[);/ ]|$)' - model: 'MI Play' + model: 'Mi Play' - regex: 'Mi 9 SE(?:[);/ ]|$)' - model: 'MI 9 SE' - - regex: 'MI CC 9 Meitu Edition(?:[);/ ]|$)' - model: 'MI CC 9' + model: 'Mi 9 SE' + - regex: 'MI CC 9e' + model: 'Mi CC 9e' + - regex: 'MI CC9 Pro Premium Edition' + model: 'Mi CC 9 Pro Premium Edition' + - regex: 'MI CC9 Pro' + model: 'Mi CC 9 Pro' + - regex: 'MI CC 9(?: Meitu Edition)?(?:[);/ ]|$)' + model: 'Mi CC 9' - regex: 'Xiaomi_M2001J2E_TD-LTE(?:[);/ ]|$)' - model: 'MI 10' + model: 'Mi 10' + - regex: '(?:Xiaomi_)?(?:Mi 10 Pro|M2001J1E(?:_TD-LTE)?)(?:[);/ ]|$)' + model: 'Mi 10 Pro' + - regex: 'M2011K2[CG](?:[);/ ]|$)' + model: 'Mi 11' + - regex: 'M2012K11AI(?:[);/ ]|$)' + model: 'Mi 11X' + - regex: 'M2012K11I(?:[);/ ]|$)' + model: 'Mi 11X Pro' + - regex: 'M2007J3S[GI](?:[);/ ]|$)' + model: 'Mi 10T Pro 5G' + - regex: 'M2007J17G(?:[);/ ]|$)' + model: 'Mi 10T Lite 5G' + - regex: 'M2007J3S[CYP](?:[);/ ]|$)' + model: 'Mi 10T 5G' - regex: 'M2007J1SC(?:[);/ ]|$)' - model: 'MI 10 Ultra 5G' - - regex: '(?:M2002J9[EG]|XIG01)(?:[);/ ]|$)' - model: 'MI 10 Lite 5G' + model: 'Mi 10 Ultra 5G' + - regex: 'M2102J2SC(?:[);/ ]|$)' + model: 'Mi 10S' + - regex: '(?:M2002J9[EGS]|XIG01|Mi 10 Lite 5G)(?:[);/ ]|$)' + model: 'Mi 10 Lite 5G' + - regex: 'M2007J17I(?:[);/ ]|$)' + model: 'Mi 10i' + - regex: 'M2012K11G(?:[);/ ]|$)' + model: 'Mi 11i' + - regex: '(?:2107113S[GR]|Xiaomi 11T Pro)(?:[);/ ]|$)' + model: 'Mi 11T Pro' + - regex: '(?:21081111RG|Xiaomi 11T)(?:[);/ ]|$)' + model: 'Mi 11T' + - regex: '(?:M2101K9[GCR]|2109119DG|Mi 11 Lite 5G)(?:[);/ ]|$)' + model: 'Mi 11 Lite 5G' + - regex: '(?:2109119DI|(?:Xiao)?mi 11 Lite 5G NE)(?:[);/ ]|$)' + model: 'Mi 11 Lite 5G NE' + - regex: '(?:M2101K9A[GI]|Mi 11 Lite)(?:[);/ ]|$)' + model: 'Mi 11 Lite' + - regex: 'M2102K1[CG](?:[);/ ]|$)' + model: 'Mi 11 Ultra' + - regex: 'M2102K1AC(?:[);/ ]|$)' + model: 'Mi 11 Pro' + - regex: '2201122C(?:[);/ ]|$)' + model: '12 Pro' + - regex: '2201123C(?:[);/ ]|$)' + model: '12' + - regex: '2112123AC(?:[);/ ]|$)' + model: '12X' + - regex: 'MI[ _]8[ _]Lite(?:[);/ ]|$)' + model: 'Mi 8 Lite' + - regex: 'MI 8 Explorer Edition(?:[);/ ]|$)' + model: 'Mi 8 Explorer Edition' + - regex: 'MI 8 ([a-z]+)(?:[);/ ]|$)' + model: 'Mi 8 $1' - regex: 'Mi 9T Pro(?:[);/ ]|$)' - model: 'MI 9T Pro' - - regex: 'Mi9 Pro 5G(?:[);/ ]|$)' - model: 'MI 9 Pro 5G' - - regex: 'MI 8 Lite(?:[);/ ]|$)' - model: 'MI 8 Lite' + model: 'Mi 9T Pro' + - regex: 'Mi ?9 Pro 5G(?:[);/ ]|$)' + model: 'Mi 9 Pro 5G' + - regex: 'MI 9 Transparent Edition(?:[);/ ]|$)' + model: 'Mi 9 Transparent Edition' + - regex: 'MI ([89]) Lite(?:[);/ ]|$)' + model: 'Mi $1 Lite' - regex: 'MI 5s Plus(?:[);/ ]|$)' - model: 'MI 5s Plus' + model: 'Mi 5s Plus' + - regex: 'Xiaomi_MDT2' + model: 'Mi 5X' - regex: 'Xiaomi_2013061|2013061 Build' - model: 'MI 3' - - regex: 'Mi-4c(?:[);/ ]|$)' - model: 'MI 4C' - - regex: 'MI MAX 3(?:[);/ ]|$)' - model: 'MI MAX 3' - - regex: 'MI MAX 2(?:[);/ ]|$)' - model: 'MI MAX 2' - - regex: 'Mi A2 Lite(?:[);/ ]|$)' - model: 'MI A2 Lite' - - regex: 'MIX 3(?:[);/ ]|$)' - model: 'MI MIX 3' + model: 'Mi 3' + - regex: 'Mi[- ]([43])c(?:[);/ ]|$)' + model: 'Mi $1C' + - regex: 'MI 4W(?:[);/ ]|$)' + model: 'Mi 4W' + - regex: 'Mi_4i(?:[);/ ]|$)' + model: 'Mi 4i' + - regex: 'MI 4 ?LTE(?:[);/ ]|$)' + model: 'Mi 4 LTE' + - regex: 'MI MAX ([23])(?:[);/ ]|$)' + model: 'Mi Max $1' + - regex: 'MI MAX(?:[);/ ]|$)' + model: 'Mi Max' + - regex: 'Mi[ _]A2[ _]Lite(?:[);/ ]|$)' + model: 'Mi A2 Lite' + - regex: '2106118C(?:[);/ ]|$)' + model: 'Mi Mix 4' + - regex: 'Mi MIX 3 5G(?:[);/ ]|$)' + model: 'Mi Mix 3 5G' + - regex: 'MIX ([23])(?:[);/ ]|$)' + model: 'Mi Mix $1' - regex: 'MIX 2S(?:[);/ ]|$)' - model: 'MI MIX 2S' - - regex: 'MIX 2(?:[);/ ]|$)' - model: 'MI MIX 2' + model: 'Mi Mix 2S' - regex: 'MIX(?:[);/ ]|$)' - model: 'MI MIX' + model: 'Mi Mix' + - regex: 'Mi Note 3(?:[);/ ]|$)' + model: 'Mi Note 3' - regex: 'POCOPHONE[ _]F1|POCO F1' model: 'Pocophone F1' - regex: 'Redmi 5 Plus' model: 'Redmi 5 Plus' + - regex: 'MDG1(?:[);/ ]|$)' + model: 'Redmi 5' - regex: 'WT88047(?:[);/ ]|$)' model: 'Redmi 2' - regex: 'HM2014819(?:[);/ ]|$)' @@ -14275,21 +20915,75 @@ Xiaomi: model: 'Redmi 1S' - regex: 'HM 1(?:[);/ ]|$)' model: 'Redmi 1' + - regex: 'Redmi 8A (Dual|Pro)(?:[);/ ]|$)' + model: 'Redmi 8A $1' - regex: 'M2004J7AC(?:[);/ ]|$)' model: 'Redmi 10X' - - regex: 'M2004J19C(?:[);/ ]|$)' + - regex: '(?:M2004J19C|M2006C3MII|lancelot|galahad)(?:[);/ ]|$)' model: 'Redmi 9' - - regex: 'M2006C3L[GC](?:[);/ ]|$)' + - regex: 'M2010J19SI(?:[);/ ]|$)' + model: 'Redmi 9 Power' + - regex: 'M2006C3L[GCI](?:[);/ ]|$)' model: 'Redmi 9A' - - regex: 'M2006C3MG(?:[);/ ]|$)' + - regex: 'M2006C3LII(?:[);/ ]|$)' + model: 'Redmi 9i' + - regex: 'M2006C3M[GT](?:[);/ ]|$)' model: 'Redmi 9C' - - regex: 'M2006C3MNG(?:[);/ ]|$)' + - regex: 'M2006C3LVG(?:[);/ ]|$)' + model: 'Redmi 9AT' + - regex: '(?:M2010J19S[GYL]|pomelo)(?:[);/ ]|$)' + model: 'Redmi 9T' + - regex: '(?:M2006C3MNG|Redmi 9C NFC)(?:[);/ ]|$)' model: 'Redmi 9C NFC' + - regex: '21061119D[CG](?:[);/ ]|$)' + model: 'Redmi 10' + - regex: '(?:21061119A[GL]|21121119SG)(?:[);/ ]|$)' + model: 'Redmi 10 (2022)' + - regex: '21061119BI(?:[);/ ]|$)' + model: 'Redmi 10 Prime' - regex: 'M2004J7BC(?:[);/ ]|$)' model: 'Redmi 10X Pro' - - regex: 'Redmi K20 Pro(?:[);/ ]|$)' - model: 'Redmi K20 Pro' - + - regex: 'Redmi K20 Pro Premium Edition(?:[);/ ]|$)' + model: 'Redmi K20 Pro Premium Edition' + - regex: 'Redmi K30 Pro Zoom Edition(?:[);/ ]|$)' + model: 'Redmi K30 Pro Zoom Edition' + - regex: 'Redmi K([23]0) Pro(?:[);/ ]|$)' + model: 'Redmi K$1 Pro' + - regex: 'Redmi K30 5G(?:[);/ ]|$)' + model: 'Redmi K30 5G' + - regex: 'M2012K11AC(?:[);/ ]|$)' + model: 'Redmi K40' + - regex: 'M2012K10C(?:[);/ ]|$)' + model: 'Redmi K40 Gaming' + - regex: 'M2012K11C(?:[);/ ]|$)' + model: 'Redmi K40 Pro' + - regex: 'M2006J10C(?:[);/ ]|$)' + model: 'Redmi K30 Ultra' + - regex: 'Redmi Y1 Lite(?:[);/ ]|$)' + model: 'Redmi Y1 Lite' + - regex: 'Redmi 6 Pro(?:[);/ ]|$)' + model: 'Redmi 6 Pro' + - regex: 'Redmi 4 Prime(?:[);/ ]|$)' + model: 'Redmi 4 Prime' + - regex: 'Qin 2 Pro(?:[);/ ]|$)' + model: 'Qin 2 Pro' + - regex: 'Qin 2(?:[);/ ]|$)' + model: 'Qin 2' + - regex: '2107119DC(?:[);/ ]|$)' + model: 'CC11' + - regex: '2109119BC(?:[);/ ]|$)' + model: 'Civi' + + # specific tablet models + - regex: '(?:21051182[CG]|(?:Xiao)?mi Pad 5)(?:[);/ ]|$)' + model: 'Mi Pad 5' + device: 'tablet' + - regex: 'M2105K81C(?:[);/ ]|$)' + model: 'Mi Pad 5 Pro 5G' + device: 'tablet' + - regex: 'M2105K81AC(?:[);/ ]|$)' + model: 'Mi Pad 5 Pro' + device: 'tablet' - regex: 'MI PAD 4 PLUS(?:[);/ ]|$)' model: 'Mi Pad 4 Plus' device: 'tablet' @@ -14305,6 +20999,8 @@ Xiaomi: - regex: 'MI PAD(?:[);/ ]|$)' model: 'Mi Pad' device: 'tablet' + + # specific tv models - regex: 'MIBOX3[ _]Pro(?:[);/ ]|$)' model: 'Mi Box 3 Pro' device: 'tv' @@ -14317,12 +21013,23 @@ Xiaomi: - regex: 'MiTV-MSSP1(?:[);/ ]|$)' model: 'MiTV 4S' device: 'tv' - - regex: '(?:MiTV-AXSO0|MiTV4(?:A|-ANSM0))(?:[);/ ]|$)' + - regex: 'MiTV-AESP0(?:[);/ ]|$)' + model: 'MiTV Stick' + device: 'tv' + - regex: 'MiTV-MOOQ0(?:[);/ ]|$)' + model: 'MiTV P1' + device: 'tv' + - regex: '(?:MiTV-AXSO0|MiTV4(?:A|-ANSM0)|MiTV-MSSP0)(?:[);/ ]|$)' model: 'MiTV 4A' device: 'tv' - - regex: '(MiTV)(4[CSX]|4)(?:[);/ ]|$)' - model: '$1 $2' + - regex: 'MiTV(4[CSX]|4)(?:[);/ ]|$)' + model: 'MiTV $1' device: 'tv' + + # specific phablet models + - regex: 'M2011J18C(?:[);/ ]|$)' + device: 'phablet' + model: 'Mi Mix Fold' - regex: 'HM NOTE 1W(?:[);/ ]|$)' device: 'phablet' model: 'Redmi Note' @@ -14332,46 +21039,130 @@ Xiaomi: - regex: 'HM NOTE 1(?:LTE|S)(?:W|GLOBAL|TD)? (?:Build|MIUI)|HM NOTE 1LTE' device: 'phablet' model: 'Redmi Note 4G' - - regex: 'Redmi Note 6 Pro' - model: 'Redmi Note 6 Pro' - device: 'phablet' - - regex: 'Redmi Note 5 Pro' - model: 'Redmi Note 5 Pro' + - regex: 'Xiaomi[_ ]2015052' + model: 'Redmi Note 2' device: 'phablet' - regex: 'Redmi Note 5A Prime' model: 'Redmi Note 5A Prime' device: 'phablet' - - regex: 'M2003J15SC(?:[);/ ]|$)' + - regex: 'Redmi Note 5A Lite' + model: 'Redmi Note 5A Lite' + device: 'phablet' + - regex: '(?:M2010J19SC)(?:[);/ ]|$)' model: 'Redmi Note 9' device: 'phablet' - - regex: 'Redmi Note 7 Pro(?:[);/ ]|$)' - model: 'Redmi Note 7 Pro' + - regex: 'M2003J15SC(?:[);/ ]|$)' + model: 'Redmi Note 10X' + device: 'phablet' + - regex: 'M2101K7BL(?:[);/ ]|$)' + model: 'Redmi Note 10S' + device: 'phablet' + - regex: '(?:M2007J22G|A001XM)(?:[);/ ]|$)' + model: 'Redmi Note 9T 5G' + device: 'phablet' + - regex: 'M2007J22C(?:[);/ ]|$)' + model: 'Redmi Note 9 5G' + device: 'phablet' + - regex: 'M2007J17C(?:[);/ ]|$)' + model: 'Redmi Note 9 Pro 5G' device: 'phablet' - - regex: 'Redmi Note 8 Pro(?:[);/ ]|$)' + - regex: 'joyeuse(?:[);/ ]|$)' + model: 'Redmi Note 9 Pro' + device: 'phablet' + - regex: 'Redmi Note 10 Lite' + model: 'Redmi Note 10 Lite' + device: 'phablet' + - regex: 'M2101K7A[GI]' + model: 'Redmi Note 10' + device: 'phablet' + - regex: 'M2103K19Y' + model: 'Redmi Note 10T' + device: 'phablet' + - regex: 'M2101K7B(?:[GI]|NY)(?:[);/ ]|$)' + model: 'Redmi Note 10S' + device: 'phablet' + - regex: '(?:M2103K19[GC]|Redmi Note 10 5G)(?:[);/ ]|$)' + model: 'Redmi Note 10 5G' + device: 'phablet' + - regex: 'M2103K19I' + model: 'Redmi Note 10T 5G' + device: 'phablet' + - regex: 'XIG02(?:[);/ ]|$)' + model: 'Redmi Note 10 JE' + device: 'phablet' + - regex: '(?:M2101K6[GIRP]|M2104K10AC|Redmi Note 10 Pro(?! Max))(?:[);/ ]|$)' + model: 'Redmi Note 10 Pro' + device: 'phablet' + - regex: '21091116C(?:[);/ ]|$)' + model: 'Redmi Note 11 Pro' + device: 'phablet' + - regex: '21091116UC(?:[);/ ]|$)' + model: 'Redmi Note 11 Pro+' + device: 'phablet' + - regex: '21091116AC(?:[);/ ]|$)' + model: 'Redmi Note 11 5G' + device: 'phablet' + - regex: '(?:21121119SC|2201117T[GIY])(?:[);/ ]|$)' + model: 'Redmi Note 11 4G' + device: 'phablet' + - regex: '21091116(?:AI|I)(?:[);/ ]|$)' + model: 'Redmi Note 11T 5G' + device: 'phablet' + - regex: '(?:M1908C3JGG|Redmi Note 8 \(2021\))(?:[);/ ]|$)' + model: 'Redmi Note 8 (2021)' + device: 'phablet' + - regex: 'begonia(?:[);/ ]|$)' model: 'Redmi Note 8 Pro' device: 'phablet' - + - regex: 'M1901F71(?:[);/ ]|$)' + model: 'Redmi Note 7S' + device: 'phablet' + - regex: 'Redmi Note (\d+) Pro Max(?:[);/ ]|$)' + model: 'Redmi Note $1 Pro Max' + device: 'phablet' + - regex: 'Redmi Note (\d+) Pro(?:[);/ ]|$)' + model: 'Redmi Note $1 Pro' + device: 'phablet' - regex: 'Redmi[ _]Note[ _]([^;/) ]+)?' model: 'Redmi Note $1' device: 'phablet' - regex: 'Redmi[ _]([^;/) ]+)?' model: 'Redmi $1' - regex: 'MI_NOTE_Pro' - model: 'MI Note Pro' + model: 'Mi Note Pro' + device: 'phablet' + - regex: 'Mi Note 10 Pro' + model: 'Mi Note 10 Pro' + device: 'phablet' + - regex: 'Mi Note 10 Lite' + model: 'Mi Note 10 Lite' + device: 'phablet' + - regex: 'Mi Note 10' + model: 'Mi Note 10' device: 'phablet' - regex: 'MI[ _]Note[ _]([^;/) ]+)?' - model: 'MI Note $1' + model: 'Mi Note $1' device: 'phablet' - - regex: '(MI(?:-One)?[ _](?:[^;/]*))Build' - model: '$1' - - regex: '(MI [a-z0-9]+|MI-One[ _]?[a-z0-9]+)(?:[);/ ]|$)' - model: '$1' + + # specific feature phone models + - regex: 'Qin 1s\+' + model: 'Qin 1s+' + + # general detections + - regex: 'MI[- ]One[ _]?Plus(?:[);/ ]|$)' + model: 'Mi One Plus' + - regex: 'Mi[- ]One[ _]?([a-z0-9]+)?(?: Build|[);])' + model: 'Mi One $1' + - regex: 'MI[ _]([^;/]*) Build' + model: 'Mi $1' + - regex: 'MI[ _]([a-z0-9]+)(?:[);/ ]|$)' + model: 'Mi $1' - regex: 'HM Note ([^/;]+) (?:Build|MIUI)' device: 'phablet' model: 'Note' - regex: 'HM ([^/;]+) (?:Build|MIUI)' model: 'HM $1' - - regex: 'Xiaomi[ _]([^/;]+)(?: Build|$)' + - regex: 'Xiaomi[ _-]([^/;]+)(?: Build|$)' model: '$1' # Xion @@ -14384,12 +21175,18 @@ Xion: # Xolo Xolo: - regex: 'Xolo|(?:Q600|Q700s?|Q800|Q1000s|Q1000[ _]Opus|Q1010i|Q2000|Omega[ _]5.[05])(?:[);/ ]|$)|BLACK-1XM' + regex: 'Xolo|(?:Q600|Q700s?|Q800|Q1000s|Q1000[ _]Opus|Q1010i|Q2000|Omega[ _]5.[05]|Era5X|Era[ _]2V|Era_4X(?:_2GB)?|BLACK-1XM|A1000s_Lite)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'BLACK-1XM' model: 'Black 1X' - - regex: '(Q600 Club|Q600|Q700s?|Q800|Q1000s Plus|Q1000s|Q1000[ _]Opus|Q1010i|Q2000|Omega[ _]5.[05])(?:[);/ ]|$)' + - regex: 'Era_?([45])X(?:[);/ ]|$)' + model: 'Era $1X' + - regex: 'Era_4X_2GB(?:[);/ ]|$)' + model: 'Era 4X 2GB' + - regex: 'Era[ _]2V(?:[);/ ]|$)' + model: 'Era 2V' + - regex: '(Q600 Club|Q600|Q700s?|Q800|Q1000s Plus|Q1000s|Q1000[ _]Opus|Q1010i|Q2000|Omega[ _]5.[05]|A1000s_Lite)(?:[);/ ]|$)' model: '$1' - regex: 'Xolo[ _]?([^;/]+) Build' model: '$1' @@ -14437,81 +21234,64 @@ Yarvik: # Yes 'Yes': - regex: 'M631Y|M651G_MY|YES (MPY(?:48|54))' + regex: 'M631Y|M685Y4|M651G_MY|YES (?:Altitude 4|MPY(?:48|54))' device: 'smartphone' models: - regex: 'M631Y' model: 'Altitude' - regex: 'M651G_MY' model: 'Altitude 2' - - regex: 'YES (MPY(?:48|54))' + - regex: 'M685Y4' + model: 'Altitude 3' + - regex: 'YES (Altitude 4|MPY(?:48|54))' model: '$1' # Yezz Yezz: - regex: 'Yezz|ANDY[ _]|4E4|A5EI' - device: 'smartphone' - models: - - regex: 'ANDY_35E2I' - model: 'Andy 3.5E2I' - - regex: 'ANDY_35EI2' - model: 'Andy 3.5EI2' - - regex: 'Andy 3.5EI' - model: 'Andy 3.5EI' - - regex: 'ANDY_45EL' - model: 'Andy 4.5EL' - - regex: 'Andy 4.7T' - model: 'Andy 4.7T' - - regex: 'ANDY_4E2I' - model: 'Andy 4E2I' + regex: 'Yezz|ANDY[ _]|(?:4E4|A5EI|LIV1|LIV2[_ ]?LTE|ART2PRO)(?:[);/ ]|$)' + device: 'smartphone' + models: - regex: '4E4' model: 'Andy 4E4' - - regex: 'ANDY_4EI2' - model: 'Andy 4EI2' - regex: 'Yezz-AC4EI' model: 'Andy 4EI' - regex: 'YEZZ-A4M' model: 'Andy A4M' - - regex: 'ANDY_4EL2_LTE' - model: 'Andy 4EL2 LTE' - - regex: 'Andy_55EI' - model: 'Andy 55EI' - - regex: 'ANDY_5EI' - model: 'Andy 5EI' - - regex: 'Andy 5EL2 LTE' - model: 'Andy 5EL2 LTE' - - regex: 'Andy_5ML_LTE' - model: 'Andy 5ML LTE' - - regex: 'Andy_5T' - model: 'Andy 5T' - - regex: 'A3.5EP' - model: 'Andy A3.5EP' - regex: 'A5EI' model: 'Andy A5EI' - - regex: 'ANDY_C5QL' - model: 'Andy C5QL' - - regex: 'ANDY_5EL' - model: 'Andy 5EL' - - regex: 'ANDY[_ ]5EI' - model: 'Andy 5EI' + - regex: 'ART2PRO' + model: 'Art 2 Pro' + - regex: 'LIV1' + model: 'LIV1' + - regex: 'LIV2[_ ]?LTE' + model: 'LIV2 LTE' + + - regex: 'Andy[ _]([A-Z]*[0-9]\.[0-9][A-Z0-9]*)(?:[ _](LTE))?' + model: 'Andy $1 $2' + - regex: 'Andy[ _]([A-Z]*[0-9])([0-9][A-Z0-9]*)(?:[ _](LTE))?' + model: 'Andy $1.$2 $3' + - regex: 'Andy[ _]([A-Z]*[0-9][A-Z0-9]+)(?:[ _](LTE))?' + model: 'Andy $1 $2' # Yu Yu: - regex: '(?:YU5[05]10[A]?|YU4711|AO5510|YU5050|YU5014)(?:[);/ ]|$)' + regex: '(?:YU5[05]10[A]?|YU4711|AO5510|YU5050|YU501[14]|YU5551)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'YU5010[A]?(?:[);/ ]|$)' model: 'Yuphoria' + - regex: 'YU5011(?:[);/ ]|$)' + model: 'Yunique 2' - regex: 'YU5050(?:[);/ ]|$)' model: 'Yutopia' - regex: 'AO5510(?:[);/ ]|$)' model: 'Yureka' + - regex: 'YU5551(?:[);/ ]|$)' + model: 'Yureka 2' - regex: 'YU5510[A]?(?:[);/ ]|$)' model: 'Yureka Plus' - regex: 'YU4711(?:[);/ ]|$)' model: 'Yunique' - - regex: 'YU4711(?:[);/ ]|$)' - model: 'Yunique' - regex: 'YU5014(?:[);/ ]|$)' model: 'Ace' @@ -14630,78 +21410,39 @@ ZYQ: model: 'Q88' device: 'tablet' - -# Toshiba -Toshiba: - regex: 'Toshiba|TSBNetTV/|portalmmm/[12].0 TS|T-01C|T-0[12]D|IS04|IS11T|AT1S0|AT300SE|AT(7-C|10-A|10[PL]E-A|100|200|270|300|330|374|400|470|500|503|570|703|830)' - device: 'smartphone' - models: - # explicit smartphone models - - regex: 'T-01C' - model: 'Regza T-01C' - - regex: 'T-01D' - model: 'Regza T-01D' - - regex: 'T-02D' - model: 'Regza T-02D' - - regex: 'IS04' - model: 'Regza IS04' - - regex: 'IS11T' - model: 'Regza IS11T' - - # explicit tablet models - - regex: 'AT7-C' - model: 'Excite' - device: 'tablet' - - regex: 'AT1S0' - model: 'Regza AT1S0' - device: 'tablet' - - regex: 'AT300SE' - model: 'Regza AT300SE' - device: 'tablet' - - regex: 'AT500a' - model: 'Regza AT500a' - device: 'tablet' - - regex: 'AT(100|200|270|300|330|374|400|470|500|503|570|703|830)' - model: 'Regza AT$1' - device: 'tablet' - - regex: 'AT10([PL])E-A' - model: 'Excite AT10$1-A' - device: 'tablet' - - regex: 'AT10-A' - model: 'Excite AT10-A' - device: 'tablet' - - - regex: 'TSBNetTV/' - device: 'tv' - model: '' - - regex: 'Toshiba[ /_\-]?([a-z0-9_ \-]+) Build' - model: '$1' - - regex: 'Toshiba[ /_\-]?([a-z0-9_\-]+)' - model: '$1' - - regex: 'portalmmm/[12].0 (TS[a-z0-9 ]+)' - model: '$1' - # Vivax (www.vivax.com) Vivax: - regex: 'VIVAX|(?:Fly5[_ ]Lite|Fun[_ ]S500|Point_X2)(?:[);/ ]|$)' + regex: 'VIVAX|(?:Fly5[_ ]Lite|Fun[_ ]S500|Point[_ ](?:X[12]|X501|X450)|PRO3|32LE77SM|40LE77SM|FUN S1|FUN_S20)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Fly5[_ ]Lite(?:[);/ ]|$)' model: 'Fly 5 Lite' - - regex: 'Point_X2' - model: 'Point X2' + - regex: 'Point_X([12])(?:[);/ ]|$)' + model: 'Point X$1' - regex: 'Fun[_ ]S500(?:[);/ ]|$)' model: 'Fun S500' - - regex: 'VIVAX[ _]Fly3(?:[);/ ]|$)' - model: 'Fly 3' - - regex: 'VIVAX (Point X551)(?:[);/ ]|$)' + - regex: 'FUN[ _]S(1|20)(?:[);/ ]|$)' + model: 'Fun S$1' + - regex: 'VIVAX[ _]Fly ?(\d)(?:[);/ ]|$)' + model: 'Fly $1' + - regex: 'VIVAX[ _]Fly[ _]V(1|550)(?:[);/ ]|$)' + model: 'Fly V$1' + - regex: '(?:VIVAX )?(Point[ _](?:X551|X501|X450))(?:[);/ ]|$)' model: '$1' - regex: 'SMART Point X5010(?:[);/ ]|$)' model: 'Smart Point X5010' + - regex: 'VIVAX[_ ]PRO3' + model: 'Pro 3' + - regex: 'VIVAX (?:TABLET )?TPC[-_ ](\d+) ([34])G(?:[);/ ]|$)' + model: 'TPC-$1 $2G' + + - regex: '(32LE77SM|40LE77SM)' + device: 'tv' + model: '$1' -# MLS -MLS: - regex: 'IQ(?:0705|L550|1010w?|1012N?|1019N|1025|1380|1401|1436|1452a|1453|1470|1502a|1511|1552|1553|1568|1570|1805N|1806|1808|1810B_M|1832|1850|1890|5017|9610|181011N|E[12]00|EL41|G550|GW516|L30|L5[01]|M801|M1001|N700|P50|R300|S300|S1001|W503|W511T|W553N?|W60[38]|W626|M960|D700|9013_4N)(?:[);/ ]|$)' +# MLS or Making Life Simple (mlsinnovation.com) +MLS: #iQ + regex: 'IQ(?:0705|L550|1010w?|1012N?|1019N|1025|1060M|1380|1401|1436|1452a|1453|1470|1502a|1511|1552|1553|1568|1570|1805N|1806|1808|1810B_M|1832|1850|1890|5017|L626|9610|181011N|A27X_E|E[12]00|EL41|G550|GW516|L30|L5[01]|M801|M1001|N700|P50|R300|S300|S1001|W503|W511T|W553N?|W60[38]|W626|M960|D700|9013_4N)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'IQ0705(?:[);/ ]|$)' @@ -14785,6 +21526,8 @@ MLS: model: 'Energy 4G' - regex: 'iQE200(?:[);/ ]|$)' model: 'MX 4G' + - regex: 'iQA27X_E(?:[);/ ]|$)' + model: 'MX (2019)' - regex: 'IQEL41(?:[);/ ]|$)' model: 'Fab 4G' - regex: 'IQL30(?:[);/ ]|$)' @@ -14808,6 +21551,9 @@ MLS: - regex: 'IQS1001(?:[);/ ]|$)' model: 'Vista 4G' ## Gold device: 'tablet' + - regex: 'iQ1060M(?:[);/ ]|$)' + model: 'Space S 4G' + device: 'tablet' - regex: 'IQR300(?:[);/ ]|$)' model: 'R3 4G' - regex: 'IQW608(?:[);/ ]|$)' @@ -14821,14 +21567,33 @@ MLS: model: 'Liberal' - regex: 'IQW553N?(?:[);/ ]|$)' model: 'Alu 5.5"' + - regex: 'iQL626?(?:[);/ ]|$)' + model: 'Pop 4G' - regex: 'IQW503(?:[);/ ]|$)' model: 'Flame 4G (2018)' - regex: 'iQD700(?:[);/ ]|$)' model: 'Color Fingerprint 4G' +# MMI +MMI: + regex: 'MMI, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '$1' + +# FLYCAT +FLYCAT: + regex: 'FLYCAT' + device: 'smartphone' + models: + - regex: 'OPTIMUM (500[1-4]|5501)' + model: 'Optimum $1' + - regex: 'UNICUM (1002|8S|8003)' + device: 'tablet' + model: 'Unicum $1' + # Fly Fly: - regex: 'Fly(?!Flow|touch)|Power Plus 5000|Photo Pro|Slimline|Life (?:Ace|Jet|Sky|Compact 4G)|FS50[1-9]|FS51[0-8]|FS52[0-9]|FS530|FS55[134]|FS40[1-9]|FS45[1-9]|4FS06|MERIDIAN-|(?:IQ(?!10[134]0)[0-9]{3,}[i]?)[ _]?(?:Quad|Firebird|Quattro|Turbo|Magic)?(?:[);/ ]|$)' + regex: 'Fly(?!Flow|touch)|Power Plus 5000|Photo Pro|Slimline|Life (?:Ace|Jet|Sky|Compact 4G|Geo|Zen|Play)|FS50[1-9]|FS51[0-8]|FS52[0-9]|FS530|FS55[134]|FS40[1-9]|FS45[1-9]|4FS06|MERIDIAN-|(?:IQ(?!10[134]0)[0-9]{3,}[i]?)[ _]?(?:Quad|Firebird|Quattro|Turbo|Magic)?(?:[);/ ]|$)' device: 'smartphone' models: - regex: '(?:Fly_)?IQ310(?:[);/ ]|$)' @@ -14849,6 +21614,14 @@ Fly: model: 'Life Jet' - regex: 'Life Sky(?:[);/ ]|$)' model: 'Life Sky' + - regex: 'Life Geo(?:[);/ ]|$)' + model: 'Life Geo' + - regex: 'Life Zen(?:[);/ ]|$)' + model: 'Life Zen' + - regex: 'Life Play(?:[);/ ]|$)' + model: 'Life Play' + - regex: 'Life Buzz(?:[);/ ]|$)' + model: 'Life Buzz' - regex: 'Life Compact 4G(?:[);/ ]|$)' model: 'Life Compact 4G' - regex: 'FS506' @@ -15032,7 +21805,7 @@ Fly: - regex: 'Fly[ _\-]?([a-z0-9_]+)/' model: '$1' device: 'feature phone' - - regex: 'Flylife[ _\-]?([^/;]+) Build' + - regex: 'Flylife[ _\-]?([^/;]+)(?: Build|[;)])' model: 'Flylife $1' device: 'tablet' - regex: 'Fly[ _\-]?([a-z0-9]+)' @@ -15051,41 +21824,55 @@ FinePower: - regex: 'FinePower[_ ]?([CD][1-9])(?:[);/ ]|$)' model: '$1' -# Freetel +# Freetel (freetel.jp) Freetel: - regex: '(?:FTJ17A00|FTJ152[ABCD]|FT141B|FT142D_LTEXM|FT142A?|FTJ161[AB]|FTJ1[56]2E|FTJ162D|FTE161[GE])(?:[);/ ]|$)' - device: 'smartphone' - models: - - regex: 'FTJ152C' - model: 'Samurai Miyabi' - - regex: 'FTJ17A00(?:[);/ ]|$)' - model: 'Rei 2 Dual' - - regex: 'FTJ161A' - model: 'Musashi' - - regex: 'FTE161E' - model: 'Ice 2' - - regex: 'FTE161G' - model: 'Ice 2 Plus' - - regex: 'FTJ162E' - model: 'Raijin' - - regex: 'FT141B' - model: 'Nico' - - regex: 'FT142D_LTEXM' - model: 'XM' - - regex: 'FT142A?' - model: 'Priori 2' - - regex: 'FTJ152A' - model: 'Priori 3' - - regex: 'FTJ162D' - model: 'Priori 4' - - regex: 'FTJ152B' - model: 'Priori 3S LTE' - - regex: 'FTJ152D' - model: 'Samurai Kiwami' - - regex: 'FTJ161B' - model: 'Samurai Rei' - - regex: 'FTJ152E' - model: 'Katana 1' + regex: '(?:FTJ17[AC]00|FTJ152[ABCD]|FTU18A00|FT141B|FT142D(?:_LTEXM)?|FT142A?|FTJ161[AB]|FTJ1[56]2E|FTJ162[BD]|FTE161[GE])(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'FTJ152C' + model: 'Samurai Miyabi' + - regex: 'FTJ17A00(?:[);/ ]|$)' + model: 'Rei 2 Dual' + - regex: 'FTJ17C00(?:[);/ ]|$)' + model: 'Priori 5' + - regex: 'FTU18A00(?:[);/ ]|$)' + model: 'Cricket Wave' + - regex: 'FTJ161A' + model: 'Musashi' + - regex: 'FTE161E' + model: 'Ice 2' + - regex: 'FTE161G' + model: 'Ice 2 Plus' + - regex: 'FTJ162E' + model: 'Raijin' + - regex: 'FT141B' + model: 'Nico' + - regex: 'FT142D(?:_LTEXM)?(?:[);/ ]|$)' + model: 'XM' + - regex: 'FT142A?' + model: 'Priori 2' + - regex: 'FTJ152A' + model: 'Priori 3' + - regex: 'FTJ162D' + model: 'Priori 4' + - regex: 'FTJ152B' + model: 'Priori 3S LTE' + - regex: 'FTJ152D' + model: 'Samurai Kiwami' + - regex: 'FTJ162B' + model: 'Samurai Kiwami 2' + - regex: 'FTJ161B' + model: 'Samurai Rei' + - regex: 'FTJ152E' + model: 'Katana 1' + +# Western Digital +Western Digital: + regex: 'Westerndigital|WDSimpleBrowser' + device: 'tv' + models: + - regex: 'Streamer2010' + model: 'Streamer (2010)' # Zeemi Zeemi: @@ -15113,79 +21900,187 @@ Zenek: - regex: 'Z5516' model: 'Zebra' -# Zopo -Zopo: - regex: 'ZOPO|(?:ZOPO[_ ])?(Flash X3|ZP[0-9]{2,}[^/;]+)(?:\)| Build)' +# Nubia (www.nubia.com) +Nubia: + regex: 'Nubia[ _]|(?:NX(?:403A|404H|406E|40[X2]|503A|50[5678]J|51[0123]J|521J|523J_V1|529Jq?|5[345]1J|5[48]9J|569[HJ]|5[67]3J|575J|59[157]J|60[1689]J|61[12679]J|62[79]J|65[19]J|6[126]9J|66[67]J|907J))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'NX667J' + model: 'Z30 Pro' + - regex: 'NX669J' + model: 'Red Magic 6' + - regex: 'NX666J' + model: 'Red Magic 6R' + - regex: 'NX619J' + model: 'Red Magic Mars' + - regex: 'NX629J' + model: 'Red Magic 3' + - regex: 'NX40[X2]' + model: 'Z5 Mini' + - regex: 'NX(403[AE]|406E|404H)' + model: 'Z5S Mini' + - regex: 'NX503A' + model: 'Z5S' + - regex: 'NX506J' + model: 'Z7' + - regex: 'NX507J' + model: 'Z7 Mini' + - regex: 'NX505J' + model: 'Z7 Max' + - regex: 'NX508J' + model: 'Z9' + - regex: '(NX5[12]1J|Nubia Z9 mini)' + model: 'Z9 Mini' + - regex: '(NX510J|Nubia Z9 Max)' + model: 'Z9 Max' + - regex: 'NX512J' + model: 'Z9 Max Dual' + - regex: 'NX531J' + model: 'Z11' + - regex: 'NX523J_V1' + model: 'Z11 Max' + - regex: '(?:NX549J|Nubia Z11 mini S)' + model: 'Z11 Mini S' + - regex: '(?:NX529Jq?|Nubia Z11 mini)' + model: 'Z11 Mini' + - regex: 'NX606J' + model: 'Z18' + - regex: 'NX616J' + model: 'Z18S' + - regex: 'NX611J' + model: 'Z18 Mini' + - regex: 'NX551J' + model: 'M2' + - regex: 'NX563J' + model: 'Z17' + - regex: 'NX569[HJ]' + model: 'Z17 Mini' + - regex: 'NX589J' + model: 'Z17 Mini S' + - regex: 'NX591J' + model: 'Z17 Lite' + - regex: 'NX595J' + model: 'Z17S' + - regex: 'NX612J' + model: 'V18' + - regex: 'NX627J' + model: 'Z20' + - regex: 'NX513J' + model: 'My Prague' + - regex: 'NX601J' + model: 'X6' + - regex: 'NX609J' + model: 'Red Magic' + - regex: 'NX659J' + model: 'Red Magic 5G' + - regex: 'NX651J' + model: 'Play' + - regex: 'NX573J' + model: 'M2 Lite' + - regex: 'NX907J' + model: 'M2 Play' + - regex: 'NX541J' + model: 'N1' + - regex: 'NX597J' + model: 'N1 Lite' + - regex: 'NX575J' + model: 'N2' + - regex: 'NX6(?:08|17)J' + model: 'N3' + - regex: 'Nubia 8011' + model: 'N80' + - regex: 'Nubia[_ ]([^;)/]+)( build|[;)])' + model: '$1' + +# Rakuten (network.mobile.rakuten.co.jp) +Rakuten: + regex: '(?:ZR01|3917JR|P710|C330)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: '(ZOPO_C2_MOD|ZP998)(?:[);/ ]|$)' - model: 'C2 II' - - regex: '(?:ZOPO_)?ZP980[+](?:[);/ ]|$)' - model: 'ZP980+' - - regex: '(?:ZOPO_)?ZP980(?:[);/ ]|$)' - model: 'Scorpio' - - regex: 'ZP952(?:[);/ ]|$)' - model: 'Speed 7 Plus' - - regex: 'ZP951(?:[);/ ]|$)' - model: 'Speed 7' - - regex: 'ZP955(?:[);/ ]|$)' - model: 'Speed 8' - - regex: 'ZP950[+h]?(?:[);/ ]|$)' - model: 'Leader Max' - - regex: 'ZP(?:900H?|910)(?:[);/ ]|$)' - model: 'Leader' - - regex: 'ZP(?:800H|810)(?:[);/ ]|$)' - model: 'Libero HD' - - regex: 'ZP500[+]?(?:[);/ ]|$)' - model: 'Libero' - - regex: 'ZP330(?:[);/ ]|$)' - model: 'Color C' - - regex: 'ZP370(?:[);/ ]|$)' - model: 'Color S' - - regex: 'ZP5(63|86)(?:[);/ ]|$)' - model: 'Color X' - - regex: 'ZP567(?:[);/ ]|$)' - model: 'Color C5i' - - regex: 'ZP300[S+]?(?:[);/ ]|$)' - model: 'Field' - - regex: 'ZP200[+]?(?:[);/ ]|$)' - model: 'Shining' - - regex: 'ZP100(?:[);/ ]|$)' - model: 'Pilot' - - regex: 'ZP1790(?:[);/ ]|$)' - model: 'Flash X2' - - regex: 'ZP781(?:[);/ ]|$)' - model: 'Flash G5 Plus' - - regex: '(Flash X3|ZP[0-9]{2,}[^/;)]+)(?: Build|\))' - model: '$1' + - regex: 'ZR01' + model: 'Big' + - regex: '3917JR' + model: 'Big S' + - regex: 'P710' + model: 'Hand' + - regex: 'C330' + model: 'C330 Mini' # ZTE ZTE: - regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:L110|L[2357]|L7A|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310|460|465|475|520|530|602)|V580|V Ultra|Q Lux)|N9[15]8St|NX(?:403A|404H|406E|40[X2]|507J|503A|505J|506J|508J|510J|512J|511J|513J|521J|523J_V1|529J|531J|541J|5[48]9J|551J|563J|569[HJ]|573J|575J|59[157]J|60[1689]J|61[12679]J|62[79]J|65[19]J|907J)|N818S|N951[0579]|N91[38]0|N9101|N913[267]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:233V|331|5031O|559DL|6621O|667T|768G|792|81[25]|818L|82[08]|83[12359]|85[125]|851M|(557|71[67]|798|836|861|916)BL|986DL|(232|718|828)TL|(?:233|353|558|717|799|837|862|899|917|963)VL|955A|95[678]|965|97[018]|98[1237]|986U|999|936L)|Apex2|G (LTE|Lux)|Vec|Z959|V865M|Z3001S|902ZT|KIS II Max|Kis 3|K3DX-V5G|Z930L|Optus X|Blade[ _](A510|A[35] 2019-T|A6 MAX|A0622|X9)|Nubia Z(?:9|11)|Ctyon-A9|602ZT|MO-01[JK]|Z963U|402ZT|P545|P609|dandelion|901ZT|A001ZT|Z-01K)(?:[);/ ]|$)' + regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade[ _](?:E01|V0820|L110|L[2357]|L7A|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310|320|460|465|475|510|520|530|602|51|30|3)|V580|V Ultra|Q Lux)|N9[15]8St|N818S|N951[0579]|N91[38]0|N9101|N913[267]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:5151V|610DL|6400C|6410S|233V|331|5031O|559DL|6621O|667T|768G|792|81[25]|818L|82[08]|83[12359]|85[125]|851M|992|(557|71[67]|798|836|861|916)BL|986DL|(232|718|828)TL|(?:233|353|558|717|799|837|862|899|917|963)VL|955A|95[678]|965|97[018]|98[1237]|986U|999|936L)|V769M|Apex2|G (LTE|Lux)|Vec|Z959|V865M|Z3001S|902ZT|KIS II Max|Kis 3|K3DX-V5G|Z930L|Optus X|Blade[ _](A[357] 2019-T|A[35] 2020-T|A7S 2020-T|A6 MAX|A0622|X9)|Z3153V|Z836F|Ctyon-A9|602ZT|MO-01[JK]|Z963U|402ZT|P545|P609|P650 Pro|dandelion|901ZT|A00[13]ZT|Z-01K|UZTE (?:GRAND V7|V808)|ZTG01|K8[37]CA|VERGATARIO ?5(?:PLUS)?|Axon mini|KIS C341|A103ZT|Z3351S|Z5156CC|B867RE|MEO Smart A80|P651 2021)(?:[);/ ]|$)' device: 'smartphone' models: # explicit smartphone models + - regex: 'P651 2021(?:[);/ ]|$)' + model: 'P651 (2021)' + - regex: '7530N(?:[);/ ]|$)' + model: 'Voyage 10' + - regex: 'A2122H(?:[);/ ]|$)' + model: 'S30 Pro 5G' - regex: '602ZT(?:[);/ ]|$)' model: 'Libero 2' - regex: 'A001ZT(?:[);/ ]|$)' model: 'Libero 3' + - regex: 'A003ZT(?:[);/ ]|$)' + model: 'Libero 5G' + - regex: 'A103ZT(?:[);/ ]|$)' + model: 'Libero 5G II' - regex: '901ZT(?:[);/ ]|$)' model: 'Libero S10' - - regex: 'ZTE 2050(?:[);/ ]|$)' + - regex: 'ZTG01(?:[);/ ]|$)' + model: 'A1' + - regex: 'ZTE T221(?:[);/ ]|$)' + model: 'Blade AF3' + - regex: 'A0616(?:[);/ ]|$)' + model: 'Blade A3' + - regex: '(?:A7020(?:RU)?|Blade A7S 2020-T)(?:[);/ ]|$)' + model: 'Blade A7s (2020)' + - regex: 'A7000(?:[);/ ]|$)' + model: 'Blade A7 (2020)' + - regex: 'A7030' + model: 'Blade A71' + - regex: 'A0722(?:[);/ ]|$)' + model: 'Blade A7 Vita' + - regex: 'Blade 10 Vita(?:[);/ ]|$)' + model: 'Blade 10 Vita' + - regex: 'ZTE (?:2050|V1050)(?:RU)?' model: 'Blade 20 Smart' - - regex: '902ZT(?:[);/ ]|$)' + - regex: 'ZTE Axon 7(?:[);/ ]|$)' + model: 'Axon 7' + - regex: 'A2019G? Pro(?:[);/ ]|$)' + model: 'Axon 9 Pro' + - regex: '(?:902ZT|A2020N3 Pro)(?:[);/ ]|$)' model: 'Axon 10 Pro 5G' + - regex: 'A2021[LG]?(?:[);/ ]|$)' + model: 'Axon 11 5G' + - regex: 'A2021E?(?:[);/ ]|$)' + model: 'Axon 11' + - regex: 'A2022H' + model: 'Axon 31 Pro 5G' + - regex: 'A2022PG' + model: 'Axon 30 Ultra' + - regex: 'A2022P' + model: 'Axon 30 Pro 5G' + - regex: 'A2022' + model: 'Axon 30 Pro' + - regex: 'A2322G' + model: 'Axon 30 5G' + - regex: 'A2322' + model: 'Axon 30' - regex: 'N799D(?:[);/ ]|$)' model: 'Blade Eg' - regex: 'Z818L(?:[);/ ]|$)' model: 'Allstar' - regex: 'Z3001S(?:[);/ ]|$)' model: 'Quest Plus' + - regex: 'Z3351S(?:[);/ ]|$)' + model: 'Quest 5' - regex: 'Ctyon-A9(?:[);/ ]|$)' model: 'Ctyon A9' - regex: 'K3DX-V5G(?:[);/ ]|$)' model: 'V5G' - - regex: 'N918St(?:[);/ ]|$)' + - regex: '(?:ZTE)?N918St(?:[);/ ]|$)' model: 'V5S' - regex: 'N958St(?:[);/ ]|$)' model: 'V5 Max' @@ -15195,6 +22090,8 @@ ZTE: model: 'Imperial Max' - regex: 'N9120(?:[);/ ]|$)' model: 'Avid' + - regex: 'Z5156CC(?:[);/ ]|$)' + model: 'Avid 579' - regex: 'N9130(?:[);/ ]|$)' model: 'Speed' - regex: 'N9132(?:[);/ ]|$)' @@ -15207,6 +22104,8 @@ ZTE: model: 'V5' - regex: 'N9510(?:[);/ ]|$)' model: 'Warp 4G' + - regex: 'Z5151V(?:[);/ ]|$)' + model: 'Visible R2' - regex: 'N9517(?:[);/ ]|$)' model: 'Blade Force' - regex: 'Z559DL(?:[);/ ]|$)' @@ -15215,6 +22114,8 @@ ZTE: model: 'Blade Q+' - regex: 'Blade Q Lux(?:[);/ ]|$)' model: 'Blade Q Lux' + - regex: 'ZTE T320(?:[);/ ]|$)' + model: 'Blade GF3' - regex: 'N9515(?:[);/ ]|$)' model: 'Warp Sync' - regex: 'N9519(?:[);/ ]|$)' @@ -15227,82 +22128,6 @@ ZTE: model: 'Max XL' - regex: 'N9810(?:[);/ ]|$)' model: 'Vital' - - regex: 'NX40[X2](?:[);/ ]|$)' - model: 'Nubia Z5 mini' - - regex: 'NX(403[AE]|406E|404H)(?:[);/ ]|$)' - model: 'Nubia Z5S Mini' - - regex: 'NX503A(?:[);/ ]|$)' - model: 'Nubia Z5S' - - regex: 'NX506J(?:[);/ ]|$)' - model: 'Nubia Z7' - - regex: 'NX507J(?:[);/ ]|$)' - model: 'Nubia Z7 mini' - - regex: 'NX505J(?:[);/ ]|$)' - model: 'Nubia Z7 max' - - regex: 'NX508J(?:[);/ ]|$)' - model: 'Nubia Z9' - - regex: '(NX5[12]1J|Nubia Z9 mini)(?:[);/ ]|$)' - model: 'Nubia Z9 mini' - - regex: '(NX510J|Nubia Z9 Max)(?:[);/ ]|$)' - model: 'Nubia Z9 max' - - regex: 'NX512J(?:[);/ ]|$)' - model: 'Nubia Z9 max dual' - - regex: 'NX531J(?:[);/ ]|$)' - model: 'Nubia Z11' - - regex: 'NX523J_V1' - model: 'Nubia Z11 Max' - - regex: 'NX529J(?:[);/ ]|$)' - model: 'Nubia Z11 mini' - - regex: '(?:NX549J|Nubia Z11 mini S)(?:[);/ ]|$)' - model: 'Nubia Z11 mini S' - - regex: 'NX606J(?:[);/ ]|$)' - model: 'Nubia Z18' - - regex: 'NX616J(?:[);/ ]|$)' - model: 'Nubia Z18S' - - regex: 'NX611J(?:[);/ ]|$)' - model: 'Nubia Z18 mini' - - regex: 'NX551J(?:[);/ ]|$)' - model: 'Nubia M2' - - regex: 'NX563J(?:[);/ ]|$)' - model: 'Nubia Z17' - - regex: 'NX569[HJ](?:[);/ ]|$)' - model: 'Nubia Z17 Mini' - - regex: 'NX589J(?:[);/ ]|$)' - model: 'Nubia Z17 Mini S' - - regex: 'NX591J(?:[);/ ]|$)' - model: 'Nubia Z17 Lite' - - regex: 'NX595J' - model: 'Nubia Z17S' - - regex: 'NX612J(?:[);/ ]|$)' - model: 'Nubia V18' - - regex: 'NX627J' - model: 'Nubia Z20' - - regex: 'NX513J(?:[);/ ]|$)' - model: 'Nubia My Prague' - - regex: 'NX601J(?:[);/ ]|$)' - model: 'Nubia X6' - - regex: 'NX609J(?:[);/ ]|$)' - model: 'Nubia Red Magic' - - regex: 'NX659J(?:[);/ ]|$)' - model: 'Nubia Red Magic 5G' - - regex: 'NX651J(?:[);/ ]|$)' - model: 'Nubia Play' - - regex: 'NX619J(?:[);/ ]|$)' - model: 'Nubia Red Magic Mars' - - regex: 'NX629J(?:[);/ ]|$)' - model: 'Nubia Red Magic 3' - - regex: 'NX573J' - model: 'Nubia M2 Lite' - - regex: 'NX907J(?:[);/ ]|$)' - model: 'Nubia M2 Play' - - regex: 'NX541J' - model: 'Nubia N1' - - regex: 'NX597J' - model: 'Nubia N1 Lite' - - regex: 'NX575J' - model: 'Nubia N2' - - regex: 'NX6(08|17)J(?:[);/ ]|$)' - model: 'Nubia N3' - regex: '[UV]9180(?:[);/ ]|$)' model: 'V5 Red Bull' - regex: '[UV]9815(?:[);/ ]|$)' @@ -15313,6 +22138,12 @@ ZTE: model: 'Blade C' - regex: 'V809' model: 'Blade C2' + - regex: 'ZTE[_ ]Blade[_ ](C2|V7)[_ ]Plus' + model: 'Blade $1 Plus' + - regex: 'Blade G Plus' + model: 'Blade G Plus' + - regex: 'ZTE_Blade_III' + model: 'Blade III' - regex: '(?:ZTE_)?V829' model: 'Blade G Pro' - regex: 'V882' @@ -15331,6 +22162,8 @@ ZTE: model: 'Grand X Max+' - regex: '(?:ZTE_)?Grand[ _]Era' model: 'Grand Era' + - regex: 'UZTE GRAND V7' # UZTE + model: 'Grand V7' - regex: 'V788D' model: 'Kis Plus' - regex: 'Z331(?:[);/ ]|$)' @@ -15345,11 +22178,11 @@ ZTE: model: 'Optus X Wave' - regex: 'Optus X Start(?:[);/ ]|$)' model: 'Optus X Start' - - regex: 'Blade (A(0620|310|452|460|462|465|475|510|512|520|530|602|612|910)|L110|V0730|V0800|V580|V1000)(?:[);/ ]|$)' - model: 'Blade $1' + - regex: 'BA520(?:[);/ ]|$)' + model: 'Blade A520' - regex: 'Blade L2 Plus(?:[);/ ]|$)' model: 'Blade L2 Plus' - - regex: 'Blade L2(?:[);/ ]|$)' + - regex: '(?:ZTE_)?Blade[ _]L2(?:[);/ ]|$)' model: 'Blade L2' - regex: 'Blade L3 Plus(?:[);/ ]|$)' model: 'Blade L3 Plus' @@ -15357,63 +22190,87 @@ ZTE: model: 'Blade L3 Apex' - regex: 'Blade L3(?:[);/ ]|$)' model: 'Blade L3' - - regex: 'Blade L5 Plus(?:[);/ ]|$)' + - regex: 'ZTE[ _]T610(?:[);/ ]|$)' + model: 'Blade L4' + - regex: 'ZTE[ _]Blade L4 Pro(?:[);/ ]|$)' + model: 'Blade L4 Pro' + - regex: '(?:Blade L5 Plus|BLADE L0510)(?:[);/ ]|$)' model: 'Blade L5 Plus' - - regex: 'Blade L5(?:[);/ ]|$)' - model: 'Blade L5' - regex: 'Blade L6(?:[);/ ]|$)' model: 'Blade L6' - regex: 'Blade L7A(?:[);/ ]|$)' model: 'Blade L7A' - - regex: 'Blade L7(?:[);/ ]|$)' - model: 'Blade L7' - - regex: 'Blade L8(?:RU)?(?:[);/ ]|$)' - model: 'Blade L8' - - regex: 'Blade A3 2019-T(?:[);/ ]|$)' - model: 'Blade A3 (2019)' - - regex: 'Blade A5 2019-T(?:[);/ ]|$)' - model: 'Blade A5 (2019)' + - regex: 'Blade L(\d+)(?:RU)?' + model: 'Blade L$1' + - regex: 'Blade A([357]) (20(?:19|20))' + model: 'Blade A$1 ($2)' + - regex: 'ZTE BV0720(?:[);/ ]|$)' + model: 'Blade A2' + - regex: 'Blade A[35] 2020-T(?:[);/ ]|$)' + model: 'Blade A$1 (2020)' + - regex: 'ZTE C880A(?:[);/ ]|$)' + model: 'Blade A1' + - regex: 'Blade A([35]1?) Lite' + model: 'Blade A$1 Lite' + - regex: 'Blade (S6|A[35]1?) Plus' + model: 'Blade $1 Plus' - regex: 'BLADE A0622(?:[);/ ]|$)' model: 'Blade A6' - - regex: 'BLADE A6 MAX(?:[);/ ]|$)' + - regex: 'BLADE (?:A6 MAX|A0605)(?:[);/ ]|$)' model: 'Blade A6 Max' - - regex: 'Blade S6 Plus(?:[);/ ]|$)' - model: 'Blade S6 Plus' + - regex: 'A0622(?:[);/ ]|$)' + model: 'Blade A6 Lite' - regex: 'Blade S6(?:[);/ ]|$)' model: 'Blade S6' + - regex: 'BLADE A5 PRO(?:[);/ ]|$)' + model: 'Blade A5 Pro' - regex: 'T920(?:[);/ ]|$)' model: 'Blade S7' + - regex: 'ZTE[ _]T617(?:[);/ ]|$)' + model: 'Blade D Lux' + - regex: 'Blade L210' + model: 'Blade L210' - regex: 'BLADE V Ultra(?:[);/ ]|$)' model: 'Blade V Ultra' - regex: 'Blade V6 MAX(?:[);/ ]|$)' model: 'Blade V6 Max' - regex: 'Blade V6 Plus(?:[);/ ]|$)' model: 'Blade V6 Plus' - - regex: 'Blade V6(?:[);/ ]|$)' - model: 'Blade V6' - regex: 'Blade (?:V7 Lite|V0720)(?:[);/ ]|$)' model: 'Blade V7 Lite' - - regex: 'Blade V7(?:[);/ ]|$)' + - regex: 'BLADE V0710(?:[);/ ]|$)' model: 'Blade V7' - - regex: 'Blade X7(?:[);/ ]|$)' - model: 'Blade X7' - - regex: 'Blade X9(?:[);/ ]|$)' - model: 'Blade X9' - - regex: 'Blade V8Q(?:[);/ ]|$)' + - regex: 'Blade V([67])(?:[);/ ]|$)' + model: 'Blade V$1' + - regex: 'BV0800(?:[);/ ]|$)' + model: 'Blade V8' + - regex: 'ZTE Blade V1000|(?:ZTE_)?V1000' + model: 'Blade V10' + - regex: 'Blade X([79])(?:[);/ ]|$)' + model: 'Blade X$1' + - regex: 'ZTE T630(?:[);/ ]|$)' + model: 'Blade X5' + - regex: 'ZTE T520(?:[);/ ]|$)' + model: 'Blade L5' + - regex: 'Blade (?:V8Q|V0840)(?:[);/ ]|$)' model: 'Blade V8Q' - regex: 'Blade V8 SE(?:[);/ ]|$)' model: 'Blade V8 SE' - - regex: 'Blade V9 Vita(?:[);/ ]|$)' + - regex: 'BLADE (?:V0850|V8 Mini)(?:[);/ ]|$)' + model: 'Blade V8 Mini' + - regex: 'BLADE V0920' model: 'Blade V9 Vita' - - regex: 'Blade V9(?:[);/ ]|$)' - model: 'Blade V9' - - regex: 'Blade V10 Vita(?:[);/ ]|$)' - model: 'Blade V10 Vita' + - regex: 'ZTE 8030' + model: 'Blade V30 Vita' + - regex: 'ZTE 9030' + model: 'Blade V30' + - regex: 'Blade V(9|10) Vita(?:[);/ ]|$)' + model: 'Blade V$1 Vita' + - regex: 'Blade V([89]|10)(?:[);/ ]|$)' + model: 'Blade V$1' - regex: 'BLADE V0820(?:[);/ ]|$)' model: 'Blade V8 Lite' - - regex: 'BLADE V0850(?:[);/ ]|$)' - model: 'Blade V8 Mini' - - regex: '(?:Blade[ _])?(Apex2|G (LTE|Lux)|Vec|A510)' + - regex: '(?:Blade[ _])?(Apex2|G (LTE|Lux)|Vec)(?:[);/ ]|$)' model: 'Blade $1' - regex: 'Z768G(?:[);/ ]|$)' model: 'Midnight' @@ -15421,16 +22278,24 @@ ZTE: model: 'Obsidian' - regex: 'Z986U' model: 'Blade Max 3' + - regex: 'Z6410S' + model: 'Blade Max 2s' + - regex: 'Z610DL' + model: 'Blade Max View' - regex: 'Z971' model: 'Blade Spark' - regex: 'Z978' model: 'Blade V8 Pro' - regex: 'Z839' model: 'Blade Vantage' + - regex: 'Z3153V' + model: 'Blade Vantage 2' - regex: 'Z930L' model: 'Unico LTE' - regex: 'Z965' model: 'Blade X' + - regex: 'Z6400C' + model: 'Blade X2 Max' - regex: 'Z981' model: 'Blade Z Max Pro' - regex: 'Z982' @@ -15459,9 +22324,9 @@ ZTE: model: 'Majesty Pro Plus LTE' - regex: 'Z828TL' model: 'Midnight Pro LTE' - - regex: 'Z792' + - regex: '(?:ZTE-)?Z792' model: 'Fanfare' - - regex: 'Z812' + - regex: '(?:ZTE-)?Z812' model: 'Maven' - regex: 'Z815' model: 'Fanfare 2' @@ -15483,7 +22348,7 @@ ZTE: model: 'Avid 4' - regex: 'Z833' model: 'Avid TRIO' - - regex: '(?:Z836BL|Z837VL)(?:[);/ ]|$)' + - regex: '(?:Z836BL|Z837VL|Z836F)(?:[);/ ]|$)' model: 'ZFive 2 LTE' - regex: 'Z558VL' model: 'ZFive C LTE' @@ -15505,11 +22370,11 @@ ZTE: model: 'ZMax Z970' - regex: 'Z986DL' model: 'MAX Blue LTE' - - regex: 'Z992' + - regex: '(?:ZTE[-_])?Z992' model: 'Avail 2' - regex: '(?:Z999|Z-01K)(?:[);/ ]|$)' model: 'Axon M' - - regex: 'B2016' + - regex: 'B201[56]|Axon mini' model: 'Axon Mini' - regex: 'A2015' model: 'Axon Tianji' @@ -15517,11 +22382,9 @@ ZTE: model: 'Axon 7' - regex: 'A2018' model: 'Axon 7s' - - regex: 'A2019G Pro' - model: 'Axon Pro' - regex: 'B2017G' model: 'Axon 7 Mini' - - regex: 'A2020G? Pro(?:[);/ ]|$)' + - regex: 'A2020(?:RU|[GU])? Pro(?:[);/ ]|$)' model: 'Axon 10 Pro' - regex: 'Z667T' model: 'Zinger' @@ -15533,7 +22396,7 @@ ZTE: model: 'Score' - regex: 'X501' model: 'Groove' - - regex: 'G-X991' + - regex: '(?:ZTE-)?G-X991' model: 'Rio' - regex: 'F-450' model: 'Adamant' @@ -15545,35 +22408,140 @@ ZTE: model: 'V865M' - regex: 'Z6621O(?:[);/ ]|$)' model: 'Optus X Vista' + - regex: 'P650 Pro(?:[);/ ]|$)' + model: 'Optus X Pro LTE' + - regex: 'V769M(?:[);/ ]|$)' + model: 'Leo Q2' + - regex: 'VERGATARIO 5(?:[);/ ]|$)' + model: 'Vergatario 5' + - regex: 'VERGATARIO5PLUS(?:[);/ ]|$)' + model: 'Vergatario 5 Plus' + - regex: 'ZTE V5 PRO(?:[);/ ]|$)' + model: 'V5 Pro' + - regex: 'ZTE 9000' + model: 'Blade V2020' + - regex: 'ZTE 8000' + model: 'Blade V2020 Vita' + - regex: 'KIS C341' + model: 'Kis C341' + - regex: 'MEO Smart A80' + model: 'MEO Smart A80' + + - regex: 'A2121[LE]?(?:[);/ ]|$)' + device: 'phablet' + model: 'Axon 20 5G' + - regex: 'ZTE 8010' + device: 'phablet' + model: 'Blade V2020 Smart' + + # explicit tv models + - regex: 'B867RE(?:[);/ ]|$)' + device: 'tv' + model: 'ZXV10 B867RE' + + # explicit tablet models + - regex: 'K83CA(?:[);/ ]|$)' + device: 'tablet' + model: 'Grand X View 3' + - regex: 'K87CA(?:[);/ ]|$)' + device: 'tablet' + model: 'Grand X View 4' - regex: 'AxonPhone ([^;/]+) Build' model: 'AxonPhone $1' - regex: '([a-z0-9]+)_USA_Cricket' model: '$1' - - regex: 'ZTE[\- ](V98|V96A|V81|V70)(?:[);/ ]|$)' + - regex: 'ZTE[- ](V98|V96A|V81|V70)(?:[);/ ]|$)' model: '$1' device: 'tablet' - - regex: 'ZTE[\- ]([a-z0-9\-_ ]+) Build' + - regex: 'Blade[_ ](A(\d+)C?|L111|V580|E01)(?:[);/ ]|$)' + model: 'Blade $1' + - regex: 'Blade[_ ]V0730(?:[);/ ]|$)' + model: 'Blade V7' + - regex: 'Blade[_ ]V0800(?:[);/ ]|$)' + model: 'Blade V8' + - regex: 'Blade[_ ]V1000(?:[);/ ]|$)' + model: 'Blade V10' + - regex: 'ZTE B(A601|A910|A510)(?:[);/ ]|$)' + model: 'Blade $1' + - regex: 'ZTE Blade (A[35]1)' + model: 'Blade $1' + - regex: 'ZTE BA610T(?:[);/ ]|$)' + model: 'Blade A610' + - regex: 'ZTE[- ]([a-z0-9\-_ ]+) Build' model: '$1' - regex: 'ZTE-(?:G |G-)?([a-z0-9 _]+)' model: '$1' - - regex: 'ZTE[ _]([a-z0-9]+)' + - regex: 'U?ZTE[ _]?([a-z0-9]+)' model: '$1' -Zuum: - regex: 'Zuum[ _-]|COVET|MAGNO|ONIX S|STEDI|STELLAR Z' - device: 'smartphone' +# Onix +Onix: + regex: '(?:ONIX S405|AT101-1116|ONIX_8_3G_01)(?:[);/ ]|$)' + device: 'tablet' models: - - regex: 'COVET' - model: 'Covet' - - regex: 'MAGNO' - model: 'Magno' + - regex: '(AT101-1116)(?:[);/ ]|$)' + model: '$1' + - regex: 'ONIX_8_3G_01(?:[);/ ]|$)' + model: '8" Tablet 3G' + - regex: '(S405)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +Zuum: + regex: 'Zuum[ _-]|Android 6.+ UNIQ(?: Build|[);])|(?:ROCKET III?|Akus (?:PRO|Z1?)|COVET|MAGNO(?:-S)?|ONIX(?: S)?|STEDI|STELLAR(?:[ _](?:Z|PRO|[MP]1|M2))?|GRAVITY [ZM]|AURA X|COVET_PRO_LITE|RONI|Android.+; LIMIT)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'AKUS PRO' + model: 'Akus Pro' + - regex: 'AKUS Z1' + model: 'Akus Z1' + - regex: 'Akus Z' + model: 'Akus Z' + - regex: 'COVET_PRO_LITE' + model: 'Covet Pro Lite' + - regex: 'COVET PRO' + model: 'Covet Pro' + - regex: 'COVET Mini' + model: 'Covet Mini' + - regex: 'COVET( Z)?' + model: 'Covet$1' + - regex: 'MAGNO PLUS' + model: 'Magno Plus' + - regex: 'MAGNO-S' + model: 'Magno S' + - regex: 'MAGNO( C1?)?' + model: 'Magno$1' - regex: 'ONIX S' model: 'Onix S' + - regex: 'ONIX' + model: 'Onix' - regex: 'STEDI' model: 'Stedi' - - regex: 'STELLAR Z' - model: 'Stellar Z' + - regex: 'STELLAR PRO' + model: 'Stellar Pro' + - regex: 'STELLAR PLUS' + model: 'Stellar Plus' + - regex: 'STELLAR ([MP][123]|Z)' + model: 'Stellar $1' + - regex: 'STELLAR MINI' + model: 'Stellar Mini' + - regex: 'STELLAR Max' + model: 'Stellar Max' + - regex: 'STELLAR' + model: 'Stellar' + - regex: 'GRAVITY ([MZ])' + model: 'Gravity $1' + - regex: 'AURA X' + model: 'Aura X' + - regex: 'RONI' + model: 'Roni' + - regex: 'ROCKET (III?)' + model: 'Rocket $1' + - regex: 'Android 6.+; UNIQ(?: Build|[);])' + model: 'Uniq' + - regex: 'Android.+; LIMIT(?: Build|[);])' + model: 'Limit' - regex: 'Zuum[ _-]([^;/]+) Build' model: '$1' - regex: 'Zuum[ _-]?([^;/)]+)(?:[);/ ]|$)' @@ -15591,10 +22559,10 @@ Zen: # Zync Zync: - regex: 'ZYNC|(Cloud Z5|Z1000|Z18|Z99 Dual Core|Z99[_ ][23]G|Z99|Z900[_ ]Plus|Z909|Z930[+]|Z930)' + regex: 'ZYNC|(Cloud Z5|Z1000|Z18|Z99|Z99[_ ][23]G|Z99|Z900[_ ]Plus|Z909|Z930[+]|Z930)(?:[);/ ]|$)' device: 'tablet' models: - - regex: '(Z18|Z99 Dual Core|Z99[_ ][23]G|Z99|Z900[_ ]Plus|Z909|Z930[+]|Z930)' + - regex: '(Z18| DuZ99al Core|Z99[_ ][23]G|Z99 Dual Core|Z99|Z900[_ ]Plus|Z909|Z930[+]|Z930)' model: '$1' - regex: '(Z1000[^/;]+)Build' model: '$1' @@ -15612,9 +22580,10 @@ Lemhoov: models: - regex: 'Lemhoov[ _-]([^/;]+) Build' model: '$1' -# MTC + +# MTC (MTS) MTC: - regex: 'MTC[ _](968|97[82]|970|982[OT]?|1078)|(?:MTC[_ ])?SMART[ _]?(?:Race[2]?|Sprint|Run|Surf[2]?)[ _]4G|MTC975|MTC[ _]SMART[ _](?:Run|Start_2)' + regex: 'MTC[ _](968|97[82]|970|982[OT]?|1078)|(?:MTC[_ ])?SMART[ _]?(?:Race[2]?|Sprint|Run|Turbo|Surf[2]?)[ _]4G|MTC975|Smart Bit|Smart_(?:LINE|Light)|(?:MTC[ _])?SMART[ _](?:Run|Start_[23])|Redbox Mini 5\(MTS\)|MTS TV|DV8304-C' device: 'smartphone' models: - regex: 'MTC[ _]?(97[258]|970[H]?|982[OT]?|968)' @@ -15626,16 +22595,33 @@ MTC: model: 'Smart Race 4G' - regex: 'SMART[ _]Race2[ _]4G' model: 'Smart Race 2 4G' - - regex: '(MTC_)?SMART[ _]Sprint[ _]4G' + - regex: '(?:MTC_)?SMART[ _]Sprint[ _]4G' model: 'Smart Sprint 4G' - - regex: '(MTC_)?SMART[ _]Start_2' - model: 'Smart Start 2' + - regex: '(?:MTC_)?SMART[ _]Start_([23])' + model: 'Smart Start $1' + - regex: 'Smart_LINE' + model: 'Smart Line' + - regex: 'Smart_Light' + model: 'Smart Light' + - regex: 'Smart Bit' + model: 'Smart Bit' - regex: 'SMART[ _]?Run(?:[ _]4G)?' model: 'Smart Run 4G' - regex: 'SMART[ _]Surf2[ _]4G' model: 'Smart Surf 2 4G' - regex: 'SMART[ _]Surf[ _]4G' model: 'Smart Surf 4G' + - regex: 'SMART[ _]Turbo[ _]4G' + model: 'Smart Turbo 4G' + - regex: 'Redbox Mini 5\(MTS\)' + device: 'tv' + model: 'Redbox Mini 5' + - regex: 'MTS TV Box 317' + device: 'tv' + model: 'SB-317' + - regex: 'DV8304-C' + device: 'tv' + model: 'SuperWave DV8304-C' # MegaFon MegaFon: @@ -15655,39 +22641,63 @@ MegaFon: model: 'Mint' - regex: '(SP-A5)' model: '$1' + - regex: 'MegaFon V9+' + device: 'tablet' + model: 'V9 Plus' # Inoi Inoi: regex: 'INOI' device: 'smartphone' models: - - regex: 'INOI 2 Lite 2019' - model: '2 Lite (2019)' - - regex: 'INOI 2 2019' - model: '2 (2019)' - - regex: 'INOI[_ ]([^;/]+)(?: Build|\))' + - regex: 'inoiPad mini 2\+32 Wi-Fi\+3G' + device: 'tablet' + model: 'Pad Mini 2+32' + - regex: 'inoiPad 2\+32 Wi-Fi\+3G' + device: 'tablet' + model: 'Pad 2+32' + - regex: 'inoiPad mini 1\+16 Wi-Fi' + device: 'tablet' + model: 'Pad Mini 1+16 WiFi' + - regex: 'INOI easyphone' + model: 'Easy Phone' + - regex: 'INOI (2|5) Lite (2019|2021)' + model: '$1 Lite ($2)' + - regex: 'INOI[_ ]([13])[_ ]LITE' + model: '$1 Lite' + - regex: 'INOI ([257]) (?:\d\+\d+ )?(2019|202[01])(?:[);/ ]|$)' + model: '$1 ($2)' + - regex: 'INOI[_ ]([^);/]+)(?: Build|[;)])' model: '$1' -# Vertex +# Vertex (vertex-digital.ru) Vertex: - regex: 'Lion_Dual|V709X|Baccara|Eagle[ _]4G|ImpressMAX|Impress[ _]([^;/]+)(?:Build|\))' + regex: '(?:Luck|Luck_L1[02]0_[34]G|Lion_Dual|V709X|TAB X8|TAB X10|Tab [43]G (?:7-2|8-1|10-1)|Pro_P3[01]0_4G|Lion_DC|Baccara|Eagle[ _]4G|ImpressMAX)(?:[);/ ]|$)|Impress[ _]([^;/]+)(?:Build|\))' device: 'smartphone' models: - - regex: '(Lion_Dual|Baccara|Eagle[ _]4G)' + - regex: '(Lion_Dual|Lion_DC|Baccara|Eagle[ _]4G|Luck_L1[02]0_[34]G|Luck)(?:[);/ ]|$)' model: '$1' - - regex: 'ImpressMAX(?:[);/ ]|$)' + - regex: 'Impress ?MAX(?:[);/ ]|$)' model: 'Impress Max' - - regex: '(Impress[ _]([^;/]+))(?:Build|\))' + - regex: 'IMPRESS ECLIPSE(?:[);/ ]|$)' + model: 'Impress Eclipse' + - regex: 'Pro_P(3[01]0)_4G(?:[);/ ]|$)' + model: 'Pro P$1 4G' + - regex: 'Impress_Luck[_ ]?4G_NFC(?:[);/ ]|$)' + model: 'Impress Luck 4G NFC' + - regex: '(Impress[ _][a-z]+)([34])G(?:Build|\))' + model: '$1 $2G' + - regex: '(Impress[ _](?:[^;/]+))(?:Build|\))' model: '$1' - regex: '(V709X)' device: 'tablet' model: '$1' - -# Devices with undectable brand, but detectable model -Unknown: - regex: 'WebTV/(\d+\.\d+)' - device: 'tv' - model: 'Web TV' + - regex: 'TAB X(8|10)(?:[);/ ]|$)' + device: 'tablet' + model: 'Tab X$1' + - regex: 'Tab ([43])G ([78]|10)-([21])' + device: 'tablet' + model: 'Tab $1G $2.$3"' # Starway Starway: @@ -15697,23 +22707,33 @@ Starway: # Savio Savio: - regex: 'TB-PO1 Build' + regex: ' (TB-PO1|TB-B01|TB-G01)(?:[);/ ]|$)' device: 'tv' + model: '$1' + +# Schok (https://www.schokgear.com/) +Schok: + regex: 'Schok ' + device: 'smartphone' models: - - regex: '(TB-PO1)' - model: '$1' + - regex: 'Schok Volt SV55' + model: 'Volt SV55' # Simbans Simbans: - regex: 'TangoTab|Presto[ )]|Ultimax|Valumax|S72-B|SX2W' + regex: 'TangoTab|Presto[ )]|PicassoTab_X|Ultimax|Valumax|S72-B|SX2W' device: 'tablet' models: + - regex: 'TangoTab_(\d+)' + model: 'TangoTab $1' - regex: 'TangoTab' model: 'TangoTab' - regex: 'Ultimax' model: 'Ultimax' - regex: 'Valumax' model: 'Valumax' + - regex: 'PicassoTab_X' + model: 'Presto Tab X' - regex: 'Presto' model: 'Presto' - regex: 'S72-B' @@ -15729,14 +22749,17 @@ MYFON: # X-TIGI X-TIGI: - regex: 'X[-_]TIGI|Hope7[_ ]Mate' + regex: 'X[-_]TIGI|Hope7[_ ](?:Mate|Max)|JOY10 Mate|Photo_P15_Lite|SHARP_2' device: 'smartphone' models: - regex: 'X-TIGI_JOY10_PRO' model: 'Joy 10 Pro' device: 'tablet' - - regex: 'Hope7[_ ]Mate' - model: 'Hope 7 Mate' + - regex: 'JOY10 Mate' + model: 'Joy 10 Mate' + device: 'tablet' + - regex: 'Hope7[_ ](Mate|Max)' + model: 'Hope 7 $1' device: 'tablet' - regex: 'X-TIGI_JOY7_MAX' model: 'Joy 7 Max' @@ -15747,31 +22770,49 @@ X-TIGI: model: 'V19' - regex: 'X-TIGI[_ ]Photo[_ ]P11' model: 'Photo P11' - - regex: 'X[-_]TIGI[ _-]([^/;)]+) Build' + - regex: 'Photo_P15_Lite' + model: 'Photo P15 Lite' + - regex: 'SHARP_2' + model: 'Sharp 2' + - regex: 'X[-_]TIGI[ _-]([^/;)]+)(?: Build|[;)])' model: '$1' -# Xiaolajiao (Shenzhen Peppers) +# Hot Pepper (hotpeppermobile.com) +Hot Pepper: + regex: '(?:HPP-GS1|VLE5)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'HPP-GS1' + model: 'Ghost' + - regex: 'VLE5' + model: 'Poblano' + +# Xiaolajiao or Shenzhen Peppers xiaolajiao.com) Xiaolajiao: - regex: '(LA2-(?:L|S[N]?)|HLA Note3|20190416Q|20170608S|20180322D)(?:[);/ ]|$)' + regex: '(LA2-(?:L|S[N]?)|HLA Note3|L7620DE|20190416Q|20170608S|20180322D|20190325D|20190718Q)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'HLA Note3(?:[);/ ]|$)' model: 'Red Pepper Note 3' - regex: '(LA2-(?:L|S[N]?))(?:[);/ ]|$)' model: '$1' - - regex: '(20190416Q)(?:[);/ ]|$)' + - regex: '(20190416Q|L7620DE)(?:[);/ ]|$)' model: '$1' - regex: '20170608S(?:[);/ ]|$)' model: 'Red Pepper Plus' - regex: '20180322D(?:[);/ ]|$)' model: 'E Sports' + - regex: '20190325D(?:[);/ ]|$)' + model: 'Red Pepper 8X Pro' + - regex: '20190718Q(?:[);/ ]|$)' + model: 'Red Pepper 9X' # Ritmix Ritmix: - regex: '(RMD[-_](?:10(?:2[689]|30|5[089])|1121|75[01]|726|85[57]|870)|RMP-(?:450|50[56]|530|600))(?:[);/ ]|$)' + regex: '(RMD[-_](?:10(?:2[689]|30|5[089])|1121|75[017]|726|85[57]|870)|RMP-(?:450|50[56]|530|600))(?:[);/ ]|$)' device: 'tablet' models: - - regex: 'RMD[-_](10(?:2[689]|30|5[089])|1121|75[01]|726|85[57]|870)(?:[);/ ]|$)' + - regex: 'RMD[-_](10(?:2[689]|30|5[089])|1121|75[017]|726|85[57]|870)(?:[);/ ]|$)' model: 'RMD-$1' - regex: 'RMP[-_](450|50[56]|530|600)(?:[);/ ]|$)' model: 'RMP-$1' @@ -15779,9 +22820,9 @@ Ritmix: # Ross&Moor 'Ross&Moor': - regex: 'RMD[-_](974R|600)(?:[);/ ]|$)' + regex: 'RM(D)?[-_](974R|600|550|790)(?:[);/ ]|$)' device: 'tablet' - model: 'RMD-$1' + model: 'RM$1-$2' # R-TV R-TV: @@ -15801,9 +22842,9 @@ NEXBOX: - regex: 'NEXBOX-([^) ]+)' model: '$1' -# True +# True or TrueSmart 'True': - regex: 'SMART[ _](MAX 4.0 PLUS|4G GEN C [45].[05]|4G Speedy 5.0 Plus|4G[_ ]Speedy[_ ]5inch)' + regex: ' TRUE BEYOND TAB 3G|SMART[ _](MAX 4.0 PLUS|4G[ _](?:GEN C [45].[05]|M1 Plus|Champion|Speedy 5.0 Plus|Speedy[_ ]5inch|P1))' device: 'smartphone' models: - regex: 'SMART MAX 4.0 PLUS' @@ -15814,6 +22855,16 @@ NEXBOX: model: 'Smart 4G Speedy 5.0 Plus' - regex: 'SMART[ _]4G[_ ]Speedy[_ ]5inch' model: 'Smart 4G Speedy 5' + - regex: 'SMART[ _]4G[_ ]Champion' + model: 'Smart 4G Champion' + - regex: 'SMART[ _]4G[_ ]P1 Prime' + model: 'Smart 4G P1 Prime' + - regex: 'SMART[ _]4G[_ ]P1' + model: 'Smart 4G P1' + - regex: 'SMART[ _]4G M1 Plus' + model: 'Smart 4G M1 Plus' + - regex: 'TRUE BEYOND TAB 3G' + model: 'Beyond Tab 3G' Yandex: regex: '(YNDX-?000SB)(?:[);/ ]|$)' @@ -15827,7 +22878,7 @@ FORME: models: - regex: 'FORME[ _-]F520(?:[);/ ]|$)' model: 'Forever' - - regex: 'FORME[ _-](A37|R7S)(?:[);/ ]|$)' + - regex: 'FORME[ _-](A[35]7|R7S?|P6)(?:[);/ ]|$)' model: '$1' # Shuttle @@ -15838,20 +22889,30 @@ Shuttle: # BDF BDF: - regex: '(BDF[- ](?:819|P10|K107H|KT107|MT6753|X20)|K960N_MT(?:6580|6753)(?:_32_N)?)(?:[);/ ]|$)' + regex: '(?:BDF[- ](?:819|P10|M107|K107H|KT107|MT6753|X20)|K960N_MT(?:6580|6753)(?:_32_N)?)(?:[);/ ]|$)' device: 'tablet' models: - - regex: 'BDF[- ](819|P10|K107H|KT107|MT6753|X20)(?:[);/ ]|$)' + - regex: 'BDF[- ](819|P10|M107|K107H|KT107|MT6753|X20)(?:[);/ ]|$)' model: '$1' - regex: 'K960N_MT(6580|6753)(_32_N)?(?:[);/ ]|$)' model: 'BK960N MT$1' +# Hi (https://www.hi-online.co.za/) +Hi: + regex: '(?:Boost Ultra|HMR5012)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Boost Ultra(?:[);/ ]|$)' + model: 'Boost Ultra' + - regex: 'HMR5012(?:[);/ ]|$)' + model: 'Boost Go' + # Highscreen Highscreen: - regex: 'HIGHSCREEN|(Easy[- ]Power(?:[- ]Pro)?|Pure[_ ]Power|Power Ice(?: Max)?|Easy[_ ]([SFL]|XL)(?:_Pro)?|Razar_Pro|Power Rage(?: Evo)?|Zera-S-Power|Zera[ _][UFS]|Power[ _]?Five[ _]?(?:Pro|Evo|Max|Max(?:Lite|2))|PowerFour|BOOST II(?:se)?|FestXL|Tasty|Boost3)(?:[);/ ]|$)' + regex: 'HIGHSCREEN|(Easy[- ]Power(?:[- ]Pro)?|Pure[_ ](?:Power|F)|Power Ice(?: Max)?|Easy[_ ]([SFL]|XL)(?:_Pro)?|Razar_Pro|Power Rage(?: Evo)?|Zera-S-Power|Zera[ _][UFS]|Power[ _]?Five[ _]?(?:Pro|Evo|Max|Max(?:Lite|2))|Power(?:Four|Five)|BOOST II(?:se)?|Fest(?:XL)?(?:-Pro)?|Tasty|Boost3|Boost 3(?: Pro)? SE|Expanse|Hercules|Alpha Rage|VergeM|Ice2|Prime [LS]|Spade|Spark 2|Alpha GTR|Wallet)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: '(Power Ice(?:[ ](?:Max|Evo))?|Power Rage(?: Evo)?|Zera[ _][UFS])(?:[);/ ]|$)' + - regex: '(Power Ice(?:[ ](?:Max|Evo))?|Power Rage(?: Evo)?|Zera[ _][UFS]|Alpha GTR|Wallet)(?:[);/ ]|$)' model: '$1' - regex: 'PowerFivePro(?:[);/ ]|$)' model: 'Power Five Pro' @@ -15863,12 +22924,26 @@ Highscreen: model: 'Power Five Evo' - regex: 'Power Five Max(?:[);/ ]|$)' model: 'Power Five Max' + - regex: 'Power[_ ]?Five(?:[);/ ]|$)' + model: 'Power Five' + - regex: 'Spade(?:[);/ ]|$)' + model: 'Spade' + - regex: 'Spark 2(?:[);/ ]|$)' + model: 'Spark 2' + - regex: 'FestXL-Pro(?:[);/ ]|$)' + model: 'Fest XL Pro' - regex: 'FestXL(?:[);/ ]|$)' model: 'Fest XL' + - regex: 'Fest-Pro(?:[);/ ]|$)' + model: 'Fest Pro' + - regex: 'Fest(?:[);/ ]|$)' + model: 'Fest' - regex: 'PowerFour(?:[);/ ]|$)' model: 'Power Four' - regex: 'Pure[_ ]Power(?:[);/ ]|$)' model: 'Pure Power' + - regex: 'Pure[ _]F(?:[);/ ]|$)' + model: 'Pure F' - regex: 'Razar_Pro(?:[);/ ]|$)' model: 'Razar Pro' - regex: 'Easy[_ ]([SLF]|XL)[_ ]Pro(?:[);/ ]|$)' @@ -15883,14 +22958,30 @@ Highscreen: model: 'Boost 2' - regex: 'BOOST IIse(?:[);/ ]|$)' model: 'Boost 2 SE' + - regex: 'Boost 3 SE(?:[);/ ]|$)' + model: 'Boost 3 SE' + - regex: 'Boost 3 Pro SE(?:[);/ ]|$)' + model: 'Boost 3 Pro SE' - regex: 'BOOST3(?:[);/ ]|$)' model: 'Boost 3' - regex: 'Zera-S-Power(?:[);/ ]|$)' model: 'Zera S Power' - regex: 'Tasty(?:[);/ ]|$)' model: 'Tasty' + - regex: 'VergeM(?:[);/ ]|$)' + model: 'Verge M' - regex: 'WinWin(?:[);/ ]|$)' model: 'WinWin' + - regex: 'Expanse(?:[);/ ]|$)' + model: 'Expanse' + - regex: 'Hercules(?:[);/ ]|$)' + model: 'Hercules' + - regex: 'Alpha Rage(?:[);/ ]|$)' + model: 'Alpha Rage' + - regex: 'Ice2(?:[);/ ]|$)' + model: 'Ice 2' + - regex: 'Prime ([LS])(?:[);/ ]|$)' + model: 'Prime $1' # CVTE CVTE: @@ -15912,35 +23003,54 @@ Globex: # Atom Atom: - regex: 'ATOM-(108AM)(?:[);/ ]|$)' + regex: 'ATOM-(108AM|216RK|216AM)(?:[);/ ]|$)' device: 'tv' model: '$1' # Qumo Qumo: - regex: 'QUMO[ _]?|(Vega[ _]?78[23])(?:[);/ ]|$)' + regex: 'QUMO[ _]?|(?:Quest[ _]?(?:408|410|45[56]|50[679])|Vega[ _]?78[23]|Sirius[ _]?(?:1001|890))(?:[);/ ]|$)' device: 'tablet' models: - regex: '(?:QUMO[ _]?)?Vega[ _]?(78[23]|8002)(?:[);/ ]|$)' model: 'Vega $1' - regex: 'Yooda(?:[);/ ]|$)' model: 'Yooda' - - regex: '(?:QUMO)?(Sirius 101-4G 8GB Black|Altair 701 8GB Black|Altair 71 4GB Black|Altair 700[24]|Altair 706)(?:[);/ ]|$)' + - regex: 'Sirius[ _]?(1001|890)(?:[);/ ]|$)' + model: 'Sirius $1' + - regex: '(?:QUMO[ _]?)?(Sirius 101-4G 8GB Black|Altair 701 8GB Black|Altair 71 4GB Black|Altair 700[24]|Altair 706|Vega_803i)(?:[);/ ]|$)' model: '$1' - - regex: 'QUMO[ _]Quest[ _]?(35[34]|40[26]|45[28]|476|507|570|600)(?:[);/ ]|$)' + - regex: '(?:QUMO[ _])?Quest[ _]?(35[34]|40[268]|410|45[2568]|47[46]|50[679]|5[137]0|574|600)(?:[);/ ]|$)' device: 'smartphone' model: 'Quest $1' -# Umax +# Qubo (qubomobile.com) +Qubo: + regex: '(Cronos|MINERVA(?:_32GB)?)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Umax (umax.cz) Umax: - regex: 'VisionBook[ _]|[78]Qa_3G(?:[);/ ]|$)' + regex: 'VisionBook[ _]|([78]Qa_3G|VB_10Q_Plus|10A_LTE_eea)(?:[);/ ]|$)' device: 'tablet' models: - regex: '(VisionBook[ _](?:10Qi|7Q[i]?|8Q[ei]?|P70|8Qi_3G)(?:[ _](?:[34]G|Plus|LTE))?)(?:[);/ ]|$)' model: '$1' - regex: '([78])Qa_3G(?:[);/ ]|$)' model: 'VisionBook $1Qa 3G' - - regex: '(VisionBook[ _](?:P50 LTE|P55 LTE(?: Pro)?))(?:[);/ ]|$)' + - regex: 'VisionBook_10Q_LTE(?:[);/ ]|$)' + model: 'VisionBook 10Q LTE' + - regex: 'VisionBook_10Q_Pro(?:[);/ ]|$)' + model: 'VisionBook 10Q Pro' + - regex: '10A_LTE_eea(?:[);/ ]|$)' + model: 'VisionBook 10A LTE' + - regex: 'VB_10Q_Plus(?:[);/ ]|$)' + model: 'VisionBook 10Q Plus' + - regex: 'VisionBook_P50Plus_LTE(?:[);/ ]|$)' + device: 'smartphone' + model: 'VisionBook P50 Plus LTE' + - regex: '(VisionBook[ _](?:P50 LTE|P55 X2 LTE|P55 LTE(?: Pro)?))(?:[);/ ]|$)' device: 'smartphone' model: '$1' @@ -15950,24 +23060,26 @@ Mann: device: 'smartphone' model: '$1' -# Unihertz +# Unihertz (unihertz.com) Unihertz: - regex: '(Titan|Jelly-Pro)(?:[);/ ]|$)' + regex: '((?<!Astra )Titan|Jelly-Pro|Jelly2(?:_JP)?|Atom_X?L)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: '(Jelly)-(Pro)(?:[);/ ]|$)' - model: '$1 $2' - - regex: '(Titan)(?:[);/ ]|$)' + - regex: '(Jelly)-Pro(?:[);/ ]|$)' + model: '$1 Pro' + - regex: 'Jelly2(?:_JP)?(?:[);/ ]|$)' + model: 'Jelly 2' + - regex: '(Titan|Atom_X?L)(?:[);/ ]|$)' model: '$1' # Chuwi Chuwi: - regex: '(?:CW-(Hi8-super|Hi12|V99|V17HD3G|VX8-3G|V88-QUAD|V9-DUAL|V88S|Vi[78]|[HV]i10 (?:pro|plus))|Hi10 (?:Pro|plus)|HiBox-hero|HiBook pro|Hi8 (?:Air|Pro))(?:[);/ ]|$)' + regex: '(?:CW-(Hi8-super|Hi12|V99i?|V17HD3G|VX8-3G|V88-QUAD|V9-DUAL|V88S|Vi[78]|[HV]i10 (?:pro|plus))|Hi10 (?:Pro|plus)|HiPad[ -](?:X|Pro|Air)|HiBox-hero|HiBook(?: pro)?|Hi[89] ?(?:Air|Pro)|HiPadPlus|Hi8SE|Vi8 plus|Vi10(?: ?Pro)?)(?:[);/ ]|$)' device: 'tablet' models: - regex: '(CW-Hi8-super)(?:[);/ ]|$)' model: 'Hi8' - - regex: '(?:CW-)?(Vi10|Hi10) plus(?:[);/ ]|$)' + - regex: '(?:CW-)?(Vi10|Hi10|Vi8) plus(?:[);/ ]|$)' model: '$1 Plus' - regex: 'CW-(V88)-QUAD(?:[);/ ]|$)' model: '$1 Quad' @@ -15979,16 +23091,35 @@ Chuwi: model: '$1 Pro' - regex: 'HiBook pro(?:[);/ ]|$)' model: 'HiBook Pro' - - regex: 'Hi8 Air(?:[);/ ]|$)' - model: 'Hi8 Air' - - regex: 'Hi8 pro(?:[);/ ]|$)' - model: 'Hi8 Pro' + - regex: 'HiBook(?:[);/ ]|$)' + model: 'HiBook' + - regex: 'HiPad X(?:[);/ ]|$)' + model: 'HiPad X' + - regex: 'HiPad Pro(?:[);/ ]|$)' + model: 'HiPad Pro' + - regex: 'HiPad-Air(?:[);/ ]|$)' + model: 'HiPad Air' + - regex: 'HiPadPlus(?:[);/ ]|$)' + model: 'HiPad Plus' + - regex: 'Hi([89]) ?Air(?:[);/ ]|$)' + model: 'Hi$1 Air' + - regex: 'Hi8SE(?:[);/ ]|$)' + model: 'Hi8 SE' + - regex: 'Hi([89]) ?pro(?:[);/ ]|$)' + model: 'Hi$1 Pro' + - regex: 'Vi10 Plus(?:[);/ ]|$)' + model: 'Vi10 Plus' + - regex: 'Vi10 ?Pro(?:[);/ ]|$)' + model: 'Vi10 Pro' + - regex: 'Vi10(?:[);/ ]|$)' + model: 'Vi10' + - regex: 'HiBox-hero(?:[);/ ]|$)' model: 'HiBox Hero' device: 'desktop' - - regex: 'CW-(Vi[78]|Hi12|V99|V88S)(?:[);/ ]|$)' + - regex: 'CW-(Vi[78]|Hi12|V99i?|V88S)(?:[);/ ]|$)' model: '$1' # Bezkam @@ -16015,6 +23146,14 @@ Ghong: device: 'smartphone' model: '$1' +# Ghost +Ghost: + regex: 'GHOST G03(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'G03(?:[);/ ]|$)' + model: 'G03' + # Xoro Xoro: regex: '(?:TelePAD(?:795|731|1032|10A3|7A3)|Era 2X|HMT(?:390Q?|400)|HST 260)(?:[);/ ]|$)' @@ -16039,15 +23178,33 @@ Xoro: # Vinga Vinga: - regex: 'VMP-(021-82|041-162|011-81)(?:[);/ ]|$)' + regex: 'VMP-(015-162|021-82|041-162|011-81|025-324|045-664)(?:[);/ ]|$)|VMP023\.' device: 'tv' models: - regex: 'VMP-021-82' model: '021' + - regex: 'VMP-025-324' + model: '025' + - regex: 'VMP-015-162' + model: '015' - regex: 'VMP-041-162' model: '041' + - regex: 'VMP-045-664' + model: '045' - regex: 'VMP-011-81' model: '011' + - regex: 'VMP023\.' + model: '023' + +# Viumee (viumee.com) +Viumee: + regex: '(?:SMART[_ ]EV[56]|EV7_Pro)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(EV7)_Pro' + model: '$1 Pro' + - regex: 'SMART[_ ](EV[56])' + model: 'Smart $1' # Nuvo Nuvo: @@ -16063,15 +23220,19 @@ Nuvo: # Sunvell Sunvell: - regex: 'T95ZPLUS(?:[);/ ]|$)' + regex: '(?:T95ZPLUS|T95[KU]PRO)(?:[);/ ]|$)' device: 'tv' - model: 'T95Z Plus' + models: + - regex: 'T95ZPLUS' + model: 'T95Z Plus' + - regex: '(T95[KU])PRO' + model: '$1 Pro' # Ugoos Ugoos: - regex: 'UGOOS-AM6(?:[);/ ]|$)' + regex: 'UGOOS-(AM[36])(?:[);/ ]|$)' device: 'tv' - model: 'AM6' + model: '$1' # Yxtel Yxtel: @@ -16081,10 +23242,14 @@ Yxtel: # Proline Proline: - regex: '(H10882M-TN)(?:[);/ ]|$)' + regex: 'Proline_|(?:H10882M-TN|H10888M|H1010)(?:[);/ ]|$)' device: 'tablet' - model: '$1' - + models: + - regex: 'Proline[_ ]FalconXL' + device: 'smartphone' + model: 'Falcon XL' + - regex: '(H10882M-TN|H10888M|H1010)' + model: '$1' # Yota Yota: regex: '(YD20[16]|YOTA 3[+])(?:[);/ ]|$)' @@ -16097,12 +23262,16 @@ Yota: # Mystery Mystery: - regex: '(MYSTERY|MID-(?:123G|72[12]|7[01348]3G|753G|833G))(?:[);/ ]|$)' + regex: 'MYSTERY|(MID-(?:123G|72[12]|7[01348]3G|753G|8[23]3G))(?:[);/ ]|$)' device: 'tablet' models: - - regex: 'MID-(123G|72[12]|7[01348]3G|753G|833G)(?:[);/ ]|$)' + - regex: 'MID-(123G|72[12]|7[01348]3G|753G|8[23]3G)(?:[);/ ]|$)' model: 'MID-$1' + - regex: 'MYSTERY_TV_(D3155CH31)' + device: 'tv' + model: '$1' + # Ritzviva Ritzviva: regex: '(RITZVIVA[_ ]S500C)(?:[);/ ]|$)' @@ -16117,11 +23286,17 @@ DeWalt: # Runbo Runbo: - regex: 'Runbo' + regex: 'Runbo|F1-TT(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Runbo[ _-]?(X5-W|F1 Plus|F1-TT|F1-EN|F1|TT|Q5-S|X5-King|X6|Q5)(?:[);/ ]|$)' + - regex: 'Runbo[ _-]?(X5-W|F1 Plus|[PF]1-TT|F1-EN|[FH]1|TT|Q5-S|X5-King|X6|Q5)(?:[);/ ]|$)' model: '$1' + - regex: 'F1-TT' + model: 'F1-TT' + + - regex: 'RunboP2' + device: 'tablet' + model: 'P2' # NewsMy NewsMy: @@ -16129,6 +23304,12 @@ NewsMy: device: 'car browser' model: '$1' +# Newsday +Newsday: + regex: 'Newsday[_ ](E1|A[12])(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + # Daewoo Daewoo: regex: 'Daewoo|(DTA-07IDRF)(?:[);/ ]|$)' @@ -16163,37 +23344,71 @@ Spectrum: # Kivi Kivi: - regex: '(?:24H600G[RU]|24FR50WU|24HK30B|32HR55GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|55UP50GU|50U600GU|55UR50GR|40FK30G|40FR50BR|43UK35G|50FK30G|50UK35G|32HR50GR|55UC30G|32HK30G|40FK30G|32HR50GU|43UK30G|32FR50(?:WR|BU)|32FK3[02]G)(?:_-Ver0[0-9])?(?:[);/ ]|$)' + regex: 'KIVI [24]K|(?:24H600G[RU]|24FR50WU|24HK30B|32HR55GU|32H700GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|55U600G[RU]|65UP50GU|55U[PC]50G[RU]|50U600G[RU]|50UX10S|55UR50G[RU]|40FK30G|40FR5[02]BR|43U(?:800BR|600KD|K35G)|50FK30G|50UK35G|32HR50GR|55UC30G|32HK30G|40FK30G|32HR50GU|43UK30G|32FR50(?:WR|BU)|32FK3[02]G|32H600KD)(?:_-Ver0[0-9])?(?:[);/ ]|$)' device: 'tv' models: - - regex: '(24H600G[RU]|24FR50WU|24HK30B|32HR55GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|55UP50GU|50U600GU|55UR50GR|40FK30G|40FR50BR|43UK35G|50FK30G|50UK35G|32HR50GR|32FR50(?:WR|BU)|32FK3[02]G)(?:[);/ ]|$)' + - regex: '(24H600G[RU]|24FR50WU|24HK30B|32HR55GU|32H700GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|55U600G[RU]|65UP50GU|55U[PC]50G[RU]|50UX10S|50U600G[RU]|55UR50G[RU]|40FK30G|40FR5[02]BR|43U(?:K35G|600KD|800BR)|50FK30G|50UK35G|32HR50GR|32FR50(?:WR|BU)|32FK3[02]G|32H600KD)(?:[);/ ]|$)' model: '$1' - regex: '(55UC30G|40FK30G|43UK30G|32HR50G[RU]|32HK30G|32FK32G)_-Ver0([0-9])(?:[);/ ]|$)' model: '$1 v$2' + - regex: 'KIVI ([24]K Android TV)' + model: '$1' -# Divisat +# Divisat (divisat.ru) Divisat: - regex: '(Divisat)(?:[);/ ]|$)' + regex: '(?:Divisat|X-MEDIA|DVS X3)(?:[);/ ]|$)' + device: 'tv' + models: + - regex: '(?:DVS )?(J-Link|X3)(?:[);/ ]|$)' + model: '$1' + - regex: 'X-MEDIA(?:[);/ ]|$)' + model: 'X-Media' + +# ArtLine (artline.ua) +ArtLine: + regex: 'ARTLINE[ _-](KMX3)(?:[);/ ]|$)' device: 'tv' + model: '$1' + +# DIXON (https://www.dixoninfo.com/) +DIXON: + regex: 'DIXON_|(?:ACK1010|KT5512|HK7-3502|DN6015|DFM48)(?:[);/ ]|$)' + device: 'smartphone' models: - - regex: '(J-Link)(?:[);/ ]|$)' + - regex: '(ACK1010|KT5512|DFM48)' model: '$1' + - regex: 'HK7-3502' + model: 'Solis' + - regex: 'DN6015' + model: 'Astrum' + - regex: 'DIXON_XK1_3G(?:[);/ ]|$)' + device: 'feature phone' + model: 'XK1 3G' # Kanji Kanji: - regex: 'KJ-(OB03|YUBI)(?:[);/ ]|$)' + regex: 'KJ-(OB0[23]|YUBI|SMART4K|GOCHI|ALFARK)(?:[);/ ]|$)' device: 'tablet' models: - - regex: 'KJ-OB03(?:[);/ ]|$)' + - regex: 'KJ-OB03' model: 'Cata 7' - - regex: 'KJ-YUBI(?:[);/ ]|$)' + - regex: 'KJ-GOCHI' + model: 'Gochi' + - regex: 'KJ-OB02' + model: 'Ailu Max' + - regex: 'KJ-YUBI' model: 'Yubi 3G' + - regex: 'KJ-ALFARK' + model: 'Alfa' + - regex: 'KJ-SMART4K' + device: 'tv' + model: 'Smart 4K' -#Kaiomy +# Kaiomy Kaiomy: - regex: 'KaiCloud[ ]?(7[48]4|942)(?:[);/ ]|$)' - device: 'tablet' - model: 'KaiCloud $1' + regex: 'KaiCloud[ ]?(7[48]4|942)(?:[);/ ]|$)' + device: 'tablet' + model: 'KaiCloud $1' # National National: @@ -16203,11 +23418,19 @@ National: # Vsun Vsun: - regex: 'VSUN (ILLUSION|RACE|V9)(?:[);/ ]|$)' + regex: '(?:VSUN (?:ILLUSION|RACE|V9)|MARS TOUCH|MARS NOTE|MARS NOCAM|SATURN SELFIE)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'ILLUSION(?:[);/ ]|$)' model: 'Illusion' + - regex: 'MARS TOUCH(?:[);/ ]|$)' + model: 'Mars Touch' + - regex: 'MARS NOTE(?:[);/ ]|$)' + model: 'Mars Note' + - regex: 'MARS NOCAM(?:[);/ ]|$)' + model: 'Mars Nocam' + - regex: 'SATURN SELFIE(?:[);/ ]|$)' + model: 'Saturn Selfie' - regex: 'RACE(?:[);/ ]|$)' model: 'Race' - regex: '(V9)(?:[);/ ]|$)' @@ -16221,20 +23444,12 @@ Shift Phones: # RugGear RugGear: - regex: '(RugGear|RG(?:310|500|65[05]|702|710|850))(?:[);/ ]|$)' + regex: '(RugGear|RG(?:310|500|65[05]|702|7[13]0|850))(?:[);/ ]|$)' device: 'smartphone' models: - regex: '(RG[0-9]+)(?:[);/ ]|$)' model: '$1' -# Aligator -Aligator: - regex: 'ALIGATOR[_);/ ]' - device: 'smartphone' - models: - - regex: 'ALIGATOR[ _](S4080|S50(?:6[56]|[678]0)|RX510)(?:[);/ ]|$)' - model: '$1' - # Maxcom Maxcom: regex: '(MS(?:45[036]|505|514)|MS457(?:PLUS)?)(?:[);/ ]|$)' @@ -16247,14 +23462,20 @@ Maxcom: # Luna Luna: - regex: '(?:LUNA[ _](?:V55|G[56]0)|TG-L800S)(?:[);/ ]|$)' + regex: '(?:LUNA[ _](?:[VG]55|G[56]0)|TG-L800S)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'LUNA[ _](V55|G[56]0)(?:[);/ ]|$)' + - regex: 'LUNA[ _]([VG]55|G[56]0)(?:[);/ ]|$)' model: '$1' - regex: '(TG-L800S)(?:[);/ ]|$)' model: '$1' +# Luxor +Luxor: + regex: 'LUXOR, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' + # Protruly Protruly: regex: 'PROTRULY[ _](D[78]|V10S)(?:[);/ ]|$)' @@ -16275,13 +23496,17 @@ Uhans: # Soyes Soyes: - regex: 'SOYES[ _]([67]S)(?:[);/ ]|$)' + regex: '(?:SOYES[ _](?:[67]S|XS|XS11)|S10-H)(?:[);/ ]|$)' device: 'smartphone' - model: '$1' + models: + - regex: 'SOYES[ _]([67]S|XS11|XS)' + model: '$1' + - regex: 'S10-H' + model: 'S10-H' # Zidoo Zidoo: - regex: 'ZIDOO[ _](H6 Pro|X6 Pro|X9S|Z10|X[158])(?:[);/ ]|$)' + regex: 'ZIDOO[ _](H6 Pro|X6 Pro|X9S|Z10|X[158]|X20 Pro|Z9S)(?:[);/ ]|$)' device: 'tv' model: '$1' @@ -16293,20 +23518,10 @@ Zfiner: # iGet iGet: - regex: 'SMART_(G10[12]|G71|G81[H]?)(?:[);/ ]|$)' + regex: 'SMART[_ ](L20X|G10[12]|S7[02]|G71|G81[H]?|L103|W10X)(?:_eea)?(?:[);/ ]|$)' device: 'tablet' model: 'Smart $1' -# iVA -iVA: - regex: '(LAMCY L350|IVA S6)(?:[);/ ]|$)' - device: 'smartphone' - models: - - regex: 'LAMCY L350(?:[);/ ]|$)' - model: 'Lamcy L350' - - regex: 'IVA S6(?:[);/ ]|$)' - model: 'S6' - # Phicomm Phicomm: regex: '(PHICOMM)(?:[);/ ]|$)' @@ -16318,7 +23533,7 @@ Phicomm: model: 'Energy L' - regex: 'PHICOMM ENERGY 3\+(?:[);/ ]|$)' model: 'Energy 3+' - - regex: 'CLUE (2S|M)(?:[);/ ]|$)' + - regex: 'CLUE (2S|M|C230)(?:[);/ ]|$)' model: 'Clue $1' # Huadoo @@ -16329,40 +23544,62 @@ Huadoo: # Gome Gome: - regex: 'GOME[_ ](2018X38A|2017X05A|2016G68A|2017M27A|2016M25A|C7_Note_Plus|U9|S[17])(?:[);/ ]|$)' + regex: '(?:GOME[_ ](?:201[678].+|C7_Note(?:_Plus)?|U9|S[17])|Fenmmy_Note)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'GOME[_ ](?:2018X38A)(?:[);/ ]|$)' model: 'C72' + - regex: 'GOME[_ ](?:2018X07A)(?:[);/ ]|$)' + model: 'C7' - regex: 'GOME[_ ](?:2017X05A)(?:[);/ ]|$)' model: 'C71' + - regex: 'GOME[_ ](?:2017X82A)(?:[);/ ]|$)' + model: 'C51' - regex: 'GOME[_ ](?:2016G68A)(?:[);/ ]|$)' model: 'K1' - regex: 'GOME[_ ](?:2016M25A)(?:[);/ ]|$)' model: 'U1' - regex: 'GOME[_ ](?:2017M27A)(?:[);/ ]|$)' model: 'U7' - - regex: 'GOME[_ ](C7_Note_Plus|U9|S[17])(?:[);/ ]|$)' + - regex: 'GOME[_ ](?:2017M95A)(?:[);/ ]|$)' + model: 'U7 Mini' + - regex: 'GOME[_ ](?:2018M29A)(?:[);/ ]|$)' + model: 'U9' + - regex: 'GOME[_ ](C7_Note(?:_Plus)?|U9|S[17])(?:[);/ ]|$)' + model: '$1' + - regex: '(?:GOME[_ ])?(Fenmmy_Note)(?:[);/ ]|$)' + device: 'phablet' model: '$1' -# Voyo +# Voyo (en.myvoyo.com) Voyo: - regex: 'VOYO[_ ](A15)(?:[);/ ]|$)' + regex: '(?:VOYO[_ ](?:A15)|i8-Max|Q101-4G)(?:[);/ ]|$)' device: 'tablet' - model: '$1' + models: + - regex: 'i8-Max(?:[);/ ]|$)' + model: 'i8 Max' + - regex: '(Q101)-4G(?:[);/ ]|$)' + model: '$1 4G' + - regex: 'VOYO[_ ](A15)(?:[);/ ]|$)' + model: '$1' -# Ryte (Ryte Mobile) +# Ryte (rytemobile.com) Ryte: - regex: 'RYTE (U55 LTE)(?:[);/ ]|$)' + regex: '(?:RYTE U55 LTE|RT701)(?:[);/ ]|$)' device: 'smartphone' - model: '$1' + models: + - regex: 'RYTE (U55 LTE)' + model: '$1' + - regex: '(RT701)' + device: 'tablet' + model: '$1' # Vontar Vontar: - regex: '(HK1 (?:Max|MINI|PLUS|PRO)|VONTAR[ -](?:Z[58]|V1|KIII|MX-4K))(?:[);/ ]|$)' + regex: '(HK1 (?:Max|MINI|PLUS|PRO)|VONTAR[ -](?:Z[58]|V1|KIII|MX-4K|X3))(?:[);/ ]|$)' device: 'tv' models: - - regex: 'VONTAR[ -](Z[58]|V1|KIII|MX-4K)(?:[);/ ]|$)' + - regex: 'VONTAR[ -](Z[58]|V1|KIII|MX-4K|X3)(?:[);/ ]|$)' model: '$1' - regex: 'HK1 Max(?:[);/ ]|$)' model: 'HK1 Max' @@ -16375,7 +23612,7 @@ Vontar: # Vorke Vorke: - regex: 'VORKE (Z[15]|Z6(?: Plus)?)(?:[);/ ]|$)' + regex: 'VORKE (Z[157]|Z6(?: Plus)?)(?:[);/ ]|$)' device: 'tv' model: '$1' @@ -16385,39 +23622,64 @@ Wigor: device: 'smartphone' model: '$1' -# NEXON +# NEXON (nexon.ua) NEXON: - regex: 'NEXON (X[19])(?:[);/ ]|$)' - device: 'tv' - model: '$1' + regex: 'NEXON (X3\+|X[12589])(?:[);/ ]|$)' + device: 'tv' + model: '$1' -# ONN +# ONN (walmart) ONN: - regex: '(ONA19TB00[27])(?:[);/ ]|$)' + regex: '(ONA19TB00[327]|10000520[6-9]|O8HD|100026191|100011886|10000356[12]|100011885|100015685-A|TBBVNC10000520[78])(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# EXO S.A (exo.com.ar) +EXO: + regex: '(?:EXO_)?(Wave_i101G|Wave_i007B?|Wave i101[Hb]|Wave-i101L)(?:[);/ ]|$)' device: 'tablet' model: '$1' -# Q.Bell +# Q.Bell (qbell.it) 'Q.Bell': - regex: '(QPHONE[_ ](?:10.1|9.1|5.4))(?:[);/ ]|$)' + regex: '(QPHONE[_ ](?:10.1|9.[12]|7.1|5.[246])|QTAB10EW)(?:[);/ ]|$)' device: 'smartphone' - model: '$1' + models: + - regex: '(QPHONE[_ ](?:10.1|9.[12]|7.1|5.[246]))(?:[);/ ]|$)' + model: '$1' + - regex: 'QTAB10EW' + device: 'tablet' + model: 'QTAB10EW' # Datawind Datawind: - regex: '(DW-PS3G5)(?:[);/ ]|$)' + regex: 'DW-[A-Z0-9]{5}(?:[);/ ]|$)' device: 'smartphone' - model: 'Pocket Surfer 3G5' + models: + - regex: '(DW-PS3G5)(?:[);/ ]|$)' + model: 'Pocket Surfer 3G5' + - regex: 'DW-UBT7W' + device: 'tablet' + model: 'Ubislate 7W' -# Droxio +# Droxio (droxio.es) sub brand 3GO Droxio: - regex: 'DROXIO (C40|B45)(?:[);/ ]|$)' + regex: 'DROXIO (C40|A47|B45|KENTIA)(?:[);/ ]|$)' device: 'smartphone' model: '$1' +# 3GO (www.3go.es) +3GO: + regex: '(?:Aplay ?[34])(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Aplay ?([34])' + device: 'tablet' + model: 'Aplay $1' + # Goophone Goophone: - regex: '(?:M(G492|L7[JK]2)CH|MN(4A2|8J2)ZP|MGA92ZP|MKU82ZP|MNGW2CH|MNH02CH|MNRM2CH)[/]A(?:[);/ ]|$)' + regex: 'Goophone[ _]|(?:M(G492|L7[JK]2)CH|MN(4A2|8J2)ZP|MGA92ZP|MKU82ZP|MNGW2CH|MNH02CH|MNRM2CH)[/]A(?:[);/ ]|$)' device: 'smartphone' models: - regex: '(?:MG492CH|MGA92ZP)[/]A(?:[);/ ]|$)' @@ -16432,22 +23694,42 @@ Goophone: model: 'I7' - regex: '(?:MN8J2ZP|MNRM2CH)[/]A(?:[);/ ]|$)' model: 'I7 Plus' + - regex: 'S4 MEGA(?:[);/ ]|$)' + model: 'S4 Mega' + - regex: 'Goophone i([69])(?:[);/ ]|$)' + model: 'I$1' # PocketBook PocketBook: - regex: 'PocketBook SURFpad 3 \(([\d]+).([\d]+)["]?\)(?:[);/ ]|$)' + regex: 'PocketBook[ _/]' device: 'tablet' - model: 'Surfpad 3 $1.$2"' + models: + - regex: 'A7(?:[);/ ]|$)' + model: 'A7' + - regex: 'A10 3G(?:[);/ ]|$)' + model: 'A10 3G' + - regex: 'A10(?:[);/ ]|$)' + model: 'A10' + - regex: 'SURFpad2(?:[);/ ]|$)' + model: 'SURFpad 2' + - regex: 'PocketBook SURFpad 3 \(([\d]+).([\d]+)["]?\)(?:[);/ ]|$)' + model: 'SURFpad 3 $1.$2"' + - regex: 'SURFpad 4 ([LMS])(?:[);/ ]|$)' + model: 'SURFpad 4 $1' + - regex: 'PocketBook/(515|614|62[23467]|63[012]|64[01]|650|740|801|840)(?:[);/ ]|$)' + model: '$1' # Bitmore Bitmore: - regex: '(?:Mobitab10c-3G|Tab1011Q_II)(?:[);/ ]|$)' + regex: '(?:Mobitab10c-3G|Tab1011Q_II|Colortab[ _]?(10(?:M| II)?|816i))(?:[);/ ]|$)' device: 'tablet' models: - regex: '(Mobitab)(10)c-3G(?:[);/ ]|$)' model: '$1 $2C 3G' - regex: 'Tab1011Q_II(?:[);/ ]|$)' model: 'Tab1011Q II' + - regex: 'Colortab[ _]?(10(?:M| II)?|816i)(?:[);/ ]|$)' + model: 'ColorTab $1' # Kuliao Kuliao: @@ -16457,16 +23739,25 @@ Kuliao: # Sugar Sugar: - regex: 'SUGAR (?:C[12]1|[YF]11|[YFS]9|C6|[FY]7|Y8|Y1[25])(?:[);/ ]|$)' + regex: 'SUGAR[ _]' device: 'smartphone' models: - regex: 'SUGAR Y([78]) MAX(?:[);/ ]|$)' model: 'Y$1 Max' - regex: 'SUGAR F7 Mini(?:[);/ ]|$)' model: 'F7 Mini' - - regex: 'SUGAR (C[12]1|[YF]11|[YFS]9|C6|Y7|Y1[25])(?:[);/ ]|$)' + - regex: 'SUGAR[ _]([^);/]+)(?: Build|[);])' model: '$1' +# Subor +Subor: + regex: 'SUBOR[ _]' + device: 'smartphone' + models: + - regex: 'SUBOR[ _](S5|2019)(?:[);/ ]|$)' + model: '$1' + - regex: 'SUBOR[_ ]K10PLUS(?:[);/ ]|$)' + model: 'K10 Plus' # Xshitou Xshitou: @@ -16482,60 +23773,98 @@ JKL: # Gree Gree: - regex: '(G0215D|G0245D|G0335D)(?:[);/ ]|$)' + regex: '(?:G0[256]15D|G0245D|G0335D)(?:[);/ ]|$)' device: 'smartphone' - model: '$1' + models: + - regex: 'G0515D' + model: 'Tosot 5G' + - regex: 'G0615D' + model: 'Tosot 7G' + - regex: '(G0215D|G0245D|G0335D)(?:[);/ ]|$)' + model: '$1' # Vodacom Vodacom: - regex: '(?:Vodacom)[ _](Power Tab 10)(?:[);/ ]|$)' + regex: '(?:Vodacom)[ _]|(?:Kicka 5 Plus 4G)(?:[);/ ]|$)' device: 'tablet' - model: '$1' + models: + - regex: 'Kicka 5 Plus 4G' + device: 'smartphone' + model: 'Kicka 5 Plus 4G' + - regex: '(?:Vodacom)[ _](Power Tab 10)(?:[);/ ]|$)' + model: '$1' # VKworld VKworld: - regex: '(?:(?:VK700)-MAX|T5SE)(?:[);/ ]|$)' + regex: '(?:(?:VK700)-MAX|VK700 Pro|T5SE|VK700X|vk6050|vk6735|vk700)(?:[);/ ]|$)' device: 'smartphone' models: - regex: '(VK700)-MAX(?:[);/ ]|$)' model: '$1 Max' + - regex: '(VK700) Pro(?:[);/ ]|$)' + model: '$1 Pro' - regex: 'T5SE(?:[);/ ]|$)' model: 'T5 SE' + - regex: 'VK(700X|6050|6735|700)(?:[);/ ]|$)' + model: 'VK$1' -# Mito +# Mito (mitomobile.com) Mito: - regex: 'MITO[- _](A(?:1[068]|39|55|180|2[36]0|313|322|33|3[136]0|[35]50|6[89]|7[235]|82|[356]0|810|950)|T(?:10|35|3[03]0|510|888)|311)(?:[);/ ]|$)' + regex: 'MITO[- _]' device: 'smartphone' models: - - regex: 'MITO[ _](A(?:1[068]|39|55|180|2[36]0|33|322|313|3[136]0|[35]50|6[89]|7[235]|82|[356]0|810|950))(?:[);/ ]|$)' - model: '$1' - - regex: 'MITO-(311)(?:[);/ ]|$)' + - regex: 'MITO[- _]3255(?:[);/ ]|$)' + device: 'tv' + model: '3255' + - regex: 'MITO[- _]A37[_ ]Z1plus' + model: 'A37 Z1 Plus' + - regex: 'MITO[- _](A(?:19[_ ][12]GB|37[_ ]Z1|36[_ ]W1|[0-9]+)|311)(?:[);/ ]|$)' model: '$1' - - regex: 'MITO[ _](T(?:10|35|3[03]0|510|888))(?:[);/ ]|$)' + - regex: 'MITO[- _](T(?:[0-9]+))(?:[);/ ]|$)' device: 'tablet' model: '$1' -# TWM +# TWM or TaiwanMobile TWM: - regex: 'Amazing[ _](X[35]s|X[2356]|A5S|A[48]|A4S)(?:[);/ ]|$)' + regex: 'Amazing[ _](X[35]s|X[123567]|A5S|A3[025]|A[468]|A4S|A5[057]|P6)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Amazing[ _](X[35])s(?:[);/ ]|$)' model: 'Amazing $1S' - - regex: 'Amazing[ _](A5S|X[2356]|A[48]|A4S)(?:[);/ ]|$)' + - regex: 'Amazing[ _](A5S|X[123567]|A[468]|A4S|A5[057]|A3[025])(?:[);/ ]|$)' + model: 'Amazing $1' + - regex: 'Amazing[ _](P6)(?:[);/ ]|$)' + device: 'tablet' model: 'Amazing $1' -# Onix -Onix: - regex: '(AT101-1116)(?:[);/ ]|$)' - device: 'tablet' - model: '$1' +# TWZ (twz.co.th) +TWZ: + regex: 'TWZ[-_ ](?:TabPlay|Y6[08]|Y52|A49|A[59]5|A567|AA8|QQ[12])|TWZQQ1' + device: 'smartphone' + models: + - regex: 'TWZ[_ ]TabPlay[_ ](12[56])' + device: 'tablet' + model: 'TabPlay $1' + - regex: 'TWZ[-_ ]?(Y6[08]|Y52|A49|A[59]5|A567|AA8|QQ[12])' + model: '$1' + +# Oale +Oale: + regex: '(?:Apex([13])|CC1 PRO)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(CC1) PRO' + model: '$1 Pro' + - regex: 'Apex([13])' + model: 'Apex $1' # Mobo Mobo: - regex: '(MT7-442D)(?:[);/ ]|$)' + regex: '(?:(?:MOBO[_ ]MB7005|MT7-421HD)|(?:MT7-442D|MT7-411D))(?:[);/ ]|$)' device: 'tablet' - model: '$1' + models: + - regex: '(?:MOBO[_ ])?(MB7005|MT7-421HD|MT7-442D|MT7-411D)(?:[);/ ]|$)' + model: '$1' # Macoox Macoox: @@ -16545,9 +23874,32 @@ Macoox: # Prixton Prixton: - regex: '(T7012Q)(?:[);/ ]|$)' + regex: 'PRIXTON |(T7012Q)(?:[);/ ]|$)' device: 'tablet' - model: '$1' + models: + - regex: 'PRIXTON (C18)' + device: 'smartphone' + model: '$1' + - regex: '(T7012Q)(?:[);/ ]|$)' + model: '$1' + +# Mafe +Mafe: + regex: 'Mafe_M820(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Mafe_M820' + model: 'Shine M820' + +# Magnus or Magnus Telecom +Magnus: + regex: 'Magnus[ _](?:bravoZ[23]0|Infinity_?(?:G8|G11))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'bravo(Z[23]0)' + model: 'Bravo $1' + - regex: '(?:Magnus[ _])?Infinity_?(G8|G11)' + model: 'Infinity $1' # Newland Newland: @@ -16555,15 +23907,17 @@ Newland: device: 'smartphone' model: 'MT90 Orca' -# Orbic +# Orbic (orbic.us) Orbic: - regex: '(?:RC555L|RC501L)(?:[);/ ]|$)' + regex: 'RC(?:501|545|555)L(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'RC555L(?:[);/ ]|$)' - model: 'Wonder' - regex: 'RC501L(?:[);/ ]|$)' model: 'Slim' + - regex: 'RC545L(?:[);/ ]|$)' + model: 'Maui' + - regex: 'RC555L(?:[);/ ]|$)' + model: 'Wonder' # RED RED: @@ -16573,33 +23927,39 @@ RED: # Contixo Contixo: - regex: 'Contixo|(?:CX-1045 3G)(?:[);/ ]|$)' + regex: 'Contixo|(?:CX-1045 3G|KT995 3G|CX1045|B108_4G)(?:[);/ ]|$)' device: 'tablet' models: - - regex: 'CX-1045 3G(?:[);/ ]|$)' + - regex: 'CX-?1045(?: 3G)?(?:[);/ ]|$)' model: 'CX-1045 3G' - regex: 'CONTIXO GX 1035(?:[);/ ]|$)' model: 'GX-1035 4G 10.1"' + - regex: 'Contixo GT1160 4G(?:[);/ ]|$)' + model: 'GT1160 4G 10.1"' - regex: 'B105(?:[);/ ]|$)' model: 'B105 3G 10.1"' - - regex: 'B108(?:[);/ ]|$)' + - regex: 'B108(?:[_ ]4G)?(?:[);/ ]|$)' model: 'B108 4G 10.1"' - regex: 'KT107(?: 3G)?(?:[);/ ]|$)' model: 'KT107 3G 10.1"' + - regex: 'K109(?:[);/ ]|$)' + model: 'KT109 4G 10.1"' - regex: 'KT715 3G(?:[);/ ]|$)' model: 'KT715 3G 7.0"' - regex: 'KT995(?:[);/ ]|$)' model: 'KT995 3G 10.1"' + - regex: 'KT ?1100GT(?: 4G)?(?:[);/ ]|$)' + model: 'KT1100GT' # E-Ceros 'E-Ceros': - regex: '(?:CT9716(?:-B)?)(?:[);/ ]|$)' - device: 'tablet' - models: - - regex: 'CT9716(?:[);/ ]|$)' - model: 'Revolution' - - regex: 'CT9716-B(?:[);/ ]|$)' - model: 'Revolution HD' + regex: '(?:CT9716(?:-B)?)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'CT9716(?:[);/ ]|$)' + model: 'Revolution' + - regex: 'CT9716-B(?:[);/ ]|$)' + model: 'Revolution HD' # How (how.com.br) How: @@ -16615,11 +23975,13 @@ How: # Multilaser Multilaser: - regex: '(?:Multilaser[ _](?:[FEGH])(?:[_ ](?:Pro|Max|Lite))?|MS50[LGX]|M7[_-]3G[_-]PLUS|MS5\.V2|MS45S_A6|MS45S|MS50S|MS60[XZ]|M7SQC_Plus|MS80X|MS40[GS]|MS55M|MS70|M7-3G QUAD CORE|M7sLite)(?:[);/ ]|$)' + regex: '(?:Multilaser[ _](?:[FEGH])(?:[_ ](?:Pro|Max|Lite))?|MS50[LGXM]|M7[_-]3G[_-](?:PLUS|QC_3|QUAD_CORE)|MS5\.V2|M9-3G|MS45S_A6|ML([02]1|12)-M7s[- ]?Quad-?Core| ML01-M7-SD|MS45S|MS50S|MS60[XZ]|M7SQC_Plus|MS80X|MS40[GS]|MS55M|MS70|M7_3G_A10|M7-3G QUAD CORE|M7s_?Lite|M10_4G_PRO|MS50L?_4G|MS60F(?:_PLUS)?)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Multilaser[ _]G[_ ]Pro(?:[);/ ]|$)' model: 'G Pro' + - regex: 'Multilaser[ _]F[_ ]Pro(?:[);/ ]|$)' + model: 'F Pro' - regex: 'Multilaser[ _]G[_ ]Max(?:[);/ ]|$)' model: 'G Max' - regex: 'Multilaser[ _]G(?:[);/ ]|$)' @@ -16628,20 +23990,40 @@ Multilaser: model: 'E Lite' - regex: 'Multilaser[ _]([FEH])(?:[);/ ]|$)' model: '$1' - - regex: '(MS50[LGX]|MS45S_A6|MS40[GS]|MS55M|MS70|MS60[XZ]|MS45S|MS80X|MS50S|MS5\.V2)(?:[);/ ]|$)' + - regex: 'MS60F_PLUS(?:[);/ ]|$)' + model: 'MS60F Plus' + - regex: '(MS50[LGXSM]|MS45S_A6|MS40[GS]|MS55M|MS60F|MS70|MS60[XZ]|MS45S|MS80X|MS50L?_4G|MS5\.V2)(?:[);/ ]|$)' model: '$1' - regex: 'M7[_-]3G[_-]PLUS(?:[);/ ]|$)' device: 'tablet' model: 'M7 3G Plus' + - regex: 'M10_4G_PRO(?:[);/ ]|$)' + device: 'tablet' + model: 'M10 4G Pro' - regex: 'M7SQC_PLUS(?:[);/ ]|$)' device: 'tablet' model: 'M7SQC Plus' - - regex: 'M7-3G QUAD CORE(?:[);/ ]|$)' + - regex: 'M7-3G_QC_3(?:[);/ ]|$)' + device: 'tablet' + model: 'M7 3G Quad Core 3' + - regex: 'M7-3G[ _]QUAD[ _]CORE(?:[);/ ]|$)' device: 'tablet' model: 'M7 3G Quad Core' - - regex: 'M7sLite(?:[);/ ]|$)' + - regex: 'ML([02]1|12)-M7s[- ]?Quad-?Core(?:[);/ ]|$)' + device: 'tablet' + model: 'ML$1-M7s Quad Core' + - regex: 'M7s_?Lite(?:[);/ ]|$)' device: 'tablet' model: 'M7s Lite' + - regex: 'ML01-M7-SD(?:[);/ ]|$)' + device: 'tablet' + model: 'ML01-M7 SD' + - regex: 'M9-3G(?:[);/ ]|$)' + device: 'tablet' + model: 'M9 3G' + - regex: 'M7_3G_A10(?:[);/ ]|$)' + device: 'tablet' + model: 'M7 3G A10' # Positivo BGH Positivo BGH: @@ -16676,29 +24058,40 @@ Positivo BGH: - regex: 'T1060B(?:[);/ ]|$)' device: 'tablet' model: 'T1060B' - - regex: 'Positivo Ypy L1050E(?:[);/ ]|$)' + - regex: 'Positivo Ypy (AB7F|AB10H|L1050E)(?:[);/ ]|$)' device: 'tablet' - model: 'Ypy L1050E' + model: 'Ypy $1' - regex: 'Twist Tab(?:[);/ ]|$)' device: 'tablet' model: 'Twist Tab' # Maxtron Maxtron: - regex: 'Maxtron[ _-](V[327]|S8)(?:[);/ ]|$)' + regex: 'Maxtron[ _-](V[327]|S[89]|T1)(?:[);/ ]|$)' device: 'smartphone' - model: '$1' + models: + - regex: 'Maxtron[ _-](V[327]|S[89])(?:[);/ ]|$)' + model: '$1' + - regex: 'Maxtron[ _-](T1)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' # Philco (philco.com.br) Philco: - regex: '(PCS01|PH350B|PTB7R)(?:[);/ ]|$)' + regex: 'PHILCO |(PCS0[12]|PH350B|PTB[78]R|PTB7PAP_PTB7PAB_PTB7PAR|Hit Max)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: '(PCS01|PH350B)(?:[);/ ]|$)' + - regex: '(PCS0[12]|PH350B|Hit Max)(?:[);/ ]|$)' model: '$1' - - regex: '(PTB7R)(?:[);/ ]|$)' + - regex: '(PTB[78]R)(?:[);/ ]|$)' device: 'tablet' model: '$1' + - regex: 'PHILCO Android TV(?:[);/ ]|$)' + device: 'tv' + model: '' + - regex: 'PTB7PAP_PTB7PAB_PTB7PAR(?:[);/ ]|$)' + device: 'tablet' + model: 'PTB7PA' # SEMP TCL SEMP TCL: @@ -16716,25 +24109,34 @@ SEMP TCL: # Newman Newman: - regex: 'Newman[ _](P308|K1)(?:[);/ ]|$)' + regex: 'Newman[ _](P308|K1|G5i)(?:[);/ ]|$)' device: 'smartphone' model: '$1' # Swipe Swipe: - regex: '(Elite Sense)(?:[);/ ]|$)' + regex: '(?:Elite Sense|Elite_VR|Slate2)(?:[);/ ]|$)' device: 'smartphone' - model: '$1' + models: + - regex: '(Elite Sense|Elite_VR)(?:[);/ ]|$)' + model: '$1' + - regex: 'Slate2(?:[);/ ]|$)' + device: 'tablet' + model: 'Slate 2' # Owwo Owwo: - regex: 'OWWO[ _]?([1457]S|Q[78])(?:[);/ ]|$)' + regex: '(?:OWWO[ _]?(?:[1457]S|Q[78])|CARNIVAL B5)(?:[);/ ]|$)' device: 'smartphone' - model: '$1' + models: + - regex: 'OWWO[ _]?([1457]S|Q[78])(?:[);/ ]|$)' + model: '$1' + - regex: 'CARNIVAL B5(?:[);/ ]|$)' + model: 'Carnival B5' # 360 or names Qihoo 360, +360 '360': - regex: '(?:180[1379]-A01|1713-A01|1707-A01|1509-A00|1603-A03|1607-A01|1503-A01)(?:[);/ ]|$)' + regex: '(?:180[1379]-A01|1713-A01|1707-A01|1509-A00|1603-A03|1607-A01|1503-A01|1505-A02|1605-A01)(?:[);/ ]|$)' device: 'smartphone' models: - regex: '1807-A01(?:[);/ ]|$)' @@ -16753,10 +24155,14 @@ Owwo: model: 'Q5 Plus' - regex: '1503-A01(?:[);/ ]|$)' model: 'N4' + - regex: '1605-A01(?:[);/ ]|$)' + model: 'N5' - regex: '1603-A03(?:[);/ ]|$)' model: 'N4A' - regex: '1607-A01(?:[);/ ]|$)' model: 'N5S' + - regex: '1505-A02(?:[);/ ]|$)' + model: 'N4S' # TD Systems TD Systems: @@ -16766,32 +24172,50 @@ TD Systems: # Ravoz Ravoz: - regex: 'RAVOZ[ _](Z[347]|R[478])(?:[);/ ]|$)' + regex: 'RAVOZ[ _](Z[57] (?:Lite|Pro)|Z[3-7]|R[478])(?:[);/ ]|$)' device: 'smartphone' model: '$1' -# Tone Mobile +# Tone Mobile (tone.ne.jp) Tone: - regex: 'TONE (e19|m15)(?:[);/ ]|$)' + regex: 'TONE[ _](e19|m15|e2[01])(?:[);/ ]|$)' device: 'smartphone' model: '$1' # AT&T AT&T: - regex: '(?:U304AA|QS5509A)(?:[);/ ]|$)' - device: 'smartphone' - models: - - regex: 'U304AA(?:[);/ ]|$)' - model: 'Radiant Core' - - regex: 'QS5509A(?:[);/ ]|$)' - model: 'Axia' + regex: '(?:EA1002|EA21100[12]|U(?:304|202|705|31[89])AA|QS5509A|V340U|V350U)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'U304AA(?:[);/ ]|$)' + model: 'Radiant Core' + - regex: 'U705AA(?:[);/ ]|$)' + model: 'Radiant Max' + - regex: 'EA211001(?:[);/ ]|$)' + model: 'Radiant Max 5G' + - regex: 'QS5509A(?:[);/ ]|$)' + model: 'Axia' + - regex: 'U318AA(?:[);/ ]|$)' + model: 'Calypso' + - regex: 'U319AA(?:[);/ ]|$)' + model: 'Calypso 2' + - regex: 'V350U(?:[);/ ]|$)' + model: 'Maestro Plus' + - regex: 'U202AA(?:[);/ ]|$)' + model: 'Maestro' + - regex: 'EA1002(?:[);/ ]|$)' + model: 'Maestro Max' + - regex: 'EA211002(?:[);/ ]|$)' + model: 'Motivate 2' + - regex: 'V340U(?:[);/ ]|$)' + model: 'Fusion Z' # Vsmart # BIHEE BIHEE: regex: '(ZBH-)?BIHEE' device: 'smartphone' models: - - regex: '(A1[12]|A[78]\+|A[56])(?:[);/ ]|$)' + - regex: '(A1[1268]|A[78]\+|A[56])(?:[);/ ]|$)' model: '$1' # Enot @@ -16832,13 +24256,15 @@ Winds: # Asano Asano: - regex: '32LF7130S(?:[);/ ]|$)' + regex: '(?:32LH7010T|32LH7030S|32LF7130S|28LH7011T)(?:[);/ ]|$)' device: 'tv' - model: '32LF7130S 32.0"' + models: + - regex: '(\d{2})(L[FH]\d+[ST])(?:[);/ ]|$)' + model: '$1$2 $1.0"' # Phonemax Phonemax: - regex: 'PHONEMAX[_ ](Saturn(?:[_ ]X)?|Mars)(?:[);/ ]|$)' + regex: '(?:PHONEMAX[_ ](?:Saturn(?:[_ ]X)?|Mars|Venus X)|Rocky 2)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'PHONEMAX[_ ]Saturn[_ ]X(?:[);/ ]|$)' @@ -16847,6 +24273,10 @@ Phonemax: model: 'Saturn' - regex: 'PHONEMAX[_ ]Mars(?:[);/ ]|$)' model: 'Mars' + - regex: 'PHONEMAX[_ ]Venus X(?:[);/ ]|$)' + model: 'Venus X' + - regex: 'Rocky 2(?:[);/ ]|$)' + model: 'Rocky 2' # Vipro (Vipro Mobile) Vipro: @@ -16858,25 +24288,44 @@ Vipro: - regex: 'VIPRO PRO[ _-]?([0-9])(?:[);/ ]|$)' model: 'Pro $1' +# Virzo (https://virzo.com/) +Virzo: + regex: 'V608C(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'V608C(?:[);/ ]|$)' + model: 'V608c' + # OzoneHD OzoneHD: - regex: 'OzoneHD[ _](T2 WiFi|4K(?: TV)?)(?:[);/ ]|$)' + regex: 'Ozone HD|OzoneHD[ _](T2 WiFi|4K(?: TV)?|Fun)(?:[);/ ]|$)' device: 'tv' model: '$1' -# KZEN +# KZEN (kzen.me) Kzen: - regex: 'Ureki_U1(?:[);/ ]|$)' + regex: '(?:Ureki_U1|Victor V1|DART KZ07|REX RX)(?:[);/ ]|$)' device: 'smartphone' - model: 'Ureki U1' + models: + - regex: 'Ureki_U1' + model: 'Ureki U1' + - regex: 'Victor V1' + model: 'Victor V1' + - regex: 'REX RX' + model: 'Rex RX' + - regex: 'DART KZ07' + device: 'tablet' + model: 'Dart KZ07' # MELROSE Melrose: - regex: 'MELROSE_(?:S9|2019)(?:[);/ ]|$)' + regex: 'MELROSE[_ ](?:S9\+?|S9P|2019)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'MELROSE_S9(?:[);/ ]|$)' - model: 'S9' + - regex: 'MELROSE[_ ]S9\+(?:[);/ ]|$)' + model: 'S9 Plus' + - regex: 'MELROSE[_ ](S9|S9P)(?:[);/ ]|$)' + model: '$1' - regex: 'MELROSE_2019(?:[);/ ]|$)' model: '2019 Ultra Slim 3.4"' @@ -16910,6 +24359,12 @@ Lumigon: device: 'smartphone' model: '$1' +# Neo +Neo: + regex: 'NEO, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' + # Neomi Neomi: regex: 'NEO[ ]?(90[689])(?:[);/ ]|$)' @@ -16918,19 +24373,25 @@ Neomi: # Eltex (eltex-co.ru) Eltex: - regex: '(?:NV501WAC|NV501)(?:[);/ ]|$)' + regex: '(?:NV5(?:01|10)WAC|NV501|NV510WB|NV711WAC)(?:[);/ ]|$)' device: 'tv' models: - - regex: 'NV501WAC(?:[);/ ]|$)' - model: 'NV-501-Wac' + - regex: 'NV(501|510|711)WAC(?:[);/ ]|$)' + model: 'NV-$1-Wac' - regex: 'NV501(?:[);/ ]|$)' model: 'NV-501' + - regex: 'NV510WB(?:[);/ ]|$)' + model: 'NV-510-WB' # Senkatel Senkatel: - regex: 'Senkatel[ _](T1009|T8002|T701[12]|T9702)(?:[);/ ]|$)' + regex: 'Senkatel[ _]|(?:MaximusT1001)(?:[);/ ]|$)' device: 'tablet' - model: '$1' + models: + - regex: 'MaximusT1001' + model: 'Maximus T1001' + - regex: 'Senkatel[ _](T1009|T8002|T701[12]|T9702)' + model: '$1' # Bobarry Bobarry: @@ -16938,15 +24399,15 @@ Bobarry: device: 'tablet' model: 'K10 SE' -# Wortmann +# Wortmann (wortmann.de) Wortmann: - regex: 'TERRA PAD 1004(?:[);/ ]|$)' + regex: 'TERRA[ _]PAD[ _](\d+)(?:[);/ ]|$)' device: 'tablet' - model: 'Terra Pad 1004' + model: 'Terra Pad $1' # BB Mobile BB Mobile: - regex: 'Techno[_ ](TQ863Q|X595BT|S700BF|I700AJ|10.1 LTE TQ060X|7.0 LTE TQ763I)(?:[);/ ]|$)' + regex: 'bb-mobile|Techno[-_ ](8\.0|9\.7|TQ863Q|X595BT|X800BJ|S700BF|I700AJ|10.1 LTE TQ060X|7.0 LTE TQ763I|I785AP|I101BI)(?:[);/ ]|$)' device: 'tablet' models: - regex: 'Techno[_ ]S700BF(?:[);/ ]|$)' @@ -16957,10 +24418,21 @@ BB Mobile: model: 'Techno 8.0" Poplar LTE TQ863Q' - regex: 'Techno[_ ]I700AJ(?:[);/ ]|$)' model: 'Techno 7.0" Mozg LTE I700AJ' + - regex: 'Techno[-_ ]I785AP(?:[);/ ]|$)' + model: 'Techno 7.85" Mozg I785AP' + - regex: 'Techno[_ ]X800BJ(?:[);/ ]|$)' + model: 'Techno 8.0" Mozg X800BJ' + - regex: 'Techno[-_ ]I101BI(?:[);/ ]|$)' + model: 'Techno 10.1" Mozg I101BI' - regex: 'Techno[_ ]7.0 LTE TQ763I(?:[);/ ]|$)' model: 'Techno 7.0" Kalash LTE TQ763I' + - regex: '(FirstTab TP-17)(?:[);/ ]|$)' + model: '$1' - - regex: 'Techno[_ ](X595BT)(?:[);/ ]|$)' + - regex: 'Techno[_ ](9\.7|8\.0) 3G(?:[);/ ]|$)' + model: 'Techno $1" 3G' + + - regex: 'Techno[_ ](?:X595BT)(?:[);/ ]|$)' device: 'smartphone' model: 'Techno Spark 3G X595BT' @@ -16980,31 +24452,54 @@ Billion: device: 'smartphone' model: 'Capture Plus' -# Tele2 (mobile operator) +# Tele2 (www.tele2.com) mobile operator Tele2: - regex: 'Tele2[ _](?:Mi[dn]i[ _][12][\._][10]|Mi[dn]i|Maxi(?:[ _](?:Plus|LTE))?)(?:[);/ ]|$)' + regex: 'Tele2[ _]' device: 'smartphone' models: - - regex: 'Tele2[ _]Mini[ _]1[_\.]1(?:[);/ ]|$)' - model: 'Mini 1.1' - - regex: 'Tele2[ _]Midi[ _]2[_\.]0(?:[);/ ]|$)' - model: 'Midi 2.0' - - regex: 'Tele2[ _](Maxi(?:[_ ](?:Plus|LTE))?)(?:[);/ ]|$)' - model: '$1' - - regex: 'Tele2[ _](Midi[ _]1\.1|Mi[dn]i)(?:[);/ ]|$)' - model: '$1' + - regex: 'Tele2[ _](Mi[dn]i)[ _]1.1(?:[);/ ]|$)' + model: '$1 1.1' + - regex: 'Tele2[ _]Midi[ _]2.0(?:[);/ ]|$)' + model: 'Midi 2.0' + - regex: 'Tele2[ _]((?:Maxi|Midi)(?:[_ ](?:Plus|LTE))?)(?:[);/ ]|$)' + model: '$1' + - regex: 'Tele2[ _](Mi[dn]i)(?:[);/ ]|$)' + model: '$1' + +# ALDI NORD +'ALDI NORD': + regex: 'ALDINORD, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' + +# ALDI SÜD +'ALDI SÜD': + regex: 'ALDISUED, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' # Alfawise Alfawise: - regex: '(A95X_R1)(?:[);/ ]|$)' + regex: '(?:Alfawise (?:A9)|(?:A95X_R1|Z28Pro))(?:[);/ ]|$)' device: 'tv' - model: '$1' + models: + - regex: '(A95X_R1)(?:[);/ ]|$)' + model: '$1' + - regex: 'Z28Pro(?:[);/ ]|$)' + model: 'Z28 Pro' + - regex: 'Alfawise (A9)' + model: '$1' # Klipad Klipad: - regex: '(KL-V905)(?:[);/ ]|$)' + regex: 'KLIPAD_|(?:KL-V905|KL4889|KL9878A?(?:_EEA)?|7589AN)(?:[);/ ]|$)' device: 'smartphone' - model: '$1' + models: + - regex: '(?:KLIPAD_)?(V355B?|KL600|KL-V905)(?:[);/ ]|$)' + model: '$1' + - regex: '(KL4889|7589AN|KL9878A?)(?:_EEA)?(?:[);/ ]|$)' + device: 'tablet' + model: '$1' # SQOOL (sqool.fr) SQOOL: @@ -17012,43 +24507,93 @@ SQOOL: device: 'tablet' model: 'V$1' -# TurboKids +# TurboPad (turbopad.ru) +TurboPad: + regex: 'Turbopad[-_ ]?(72[34]|80[23]|912|101[456])(?:NEW)?(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# TurboKids sub brand TurboPad (turbokids.ru) TurboKids: - regex: 'Turbokids[-_ ]?(TMNT|3G|S4)(?:[);/ ]|$)' + regex: 'Turbokids[-_ ]?(TMNT|3G|S4|Princess)(?:[);/ ]|$)' device: 'tablet' model: '$1' -# Jinga +# Türk Telekom (https://www.turktelekom.com.tr/) +Türk Telekom: + regex: 'Turk Telekom' + device: 'smartphone' + models: + - regex: 'TT175(?:[);/ ]|$)' + model: 'TT175' + +# Jinga (jinga.ru) Jinga: - regex: 'Jinga[-_ ]|(?:Optim4G|PassPlus|Hotz[_ ]M1)(?:[);/ ]|$)' + regex: 'Jinga[-_ ]|(?:(?:Fresh|Optim)4G|Pass(?:Plus|3G)|PicassoNote|Hotz[_ ]M1|WinPRO|Touch4G|Start(?:3G|LTE)?|IGO[ _]L[41]|Basco (?:L3|L[45]00|XS1|S2)|M500-1|Hit4G|A450|Neon(?!/)|JoyPRO|Fresh|GoalPlus)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Optim4G(?:[);/ ]|$)' model: 'Optim 4G' + - regex: 'Fresh4G(?:[);/ ]|$)' + model: 'Fresh 4G' - regex: 'Hotz[_ ]M1(?:[);/ ]|$)' model: 'Hotz M1' + - regex: 'Hit4G(?:[);/ ]|$)' + model: 'Hit 4G' - regex: 'PassPlus(?:[);/ ]|$)' model: 'Pass Plus' + - regex: 'Pass3G(?:[);/ ]|$)' + model: 'Pass 3G' + - regex: 'GoalPlus(?:[);/ ]|$)' + model: 'Goal Plus' + - regex: '(Win|Joy)PRO(?:[);/ ]|$)' + model: '$1 Pro' + - regex: 'Touch4G(?:[);/ ]|$)' + model: 'Touch 4G' + - regex: 'Start3G(?:[);/ ]|$)' + model: 'Start 3G' + - regex: 'StartLTE(?:[);/ ]|$)' + model: 'Start LTE' + - regex: 'Start(?:[);/ ]|$)' + model: 'Start' + - regex: 'PicassoNote(?:[);/ ]|$)' + model: 'Picasso Note' - regex: 'Jinga Iron(?:[);/ ]|$)' model: 'Iron' + - regex: 'Fresh(?:[);/ ]|$)' + model: 'Fresh' - regex: 'Jinga Basco neo(?:[);/ ]|$)' model: 'Basco Neo' - - regex: 'Jinga Basco L3(?:[);/ ]|$)' - model: 'Basco L3' + - regex: 'M500-1(?:[);/ ]|$)' + model: 'Basco M500 3G' + - regex: '(?:Jinga[ _])?Basco[ _](L[13]|L[45]00|XS1|S2)(?:[);/ ]|$)' + model: 'Basco $1' - regex: 'Jinga Trezor S1 Plus(?:[);/ ]|$)' model: 'Trezor S1 Plus' - regex: 'JINGA_IGO_L2(?:[);/ ]|$)' model: 'IGO L2' - - regex: 'JINGA_IGO_M1(?:[);/ ]|$)' - model: 'IGO M1' - - regex: 'Jinga Trezor S1 Plus(?:[);/ ]|$)' - model: 'Trezor S1 Plus' + - regex: '(?:JINGA[_ ])?IGO[_ ]([ML]1|L4)(?:[);/ ]|$)' + model: 'IGO $1' + - regex: '(?:JINGA[_ ])?(Neon|A450)(?:[);/ ]|$)' + model: '$1' + +# Jio (https://www.jio.com/) +Jio: + regex: 'LS1542QWN(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'LS1542QWN(?:[);/ ]|$)' + model: 'JioPhone Next' # Twoe Twoe: - regex: 'TWOE[-_ ](E450R)(?:[);/ ]|$)' + regex: '(?:TWOE[-_ ]E450R|F534L|F572L|E500A)(?:[);/ ]|$)' device: 'smartphone' - model: '$1' + models: + - regex: 'TWOE[-_ ](E450R)(?:[);/ ]|$)' + model: '$1' + - regex: '(F534L|F572L|E500A)(?:[);/ ]|$)' + model: '$1' # iTruck iTruck: @@ -17056,11 +24601,16 @@ iTruck: device: 'smartphone' model: '7.0" 3G' -# Torex +# Torex (torex.tools) Torex: - regex: 'TOREX-(PS12)(?:[);/ ]|$)' + regex: 'TOREX[- ](?:PS12|S18|S27)(?:[);/ ]|$)' device: 'tablet' - model: '$1' + models: + - regex: 'TOREX-(PS12)' + model: '$1' + - regex: 'TOREX[- ](S18|S27)' + device: 'smartphone' + model: '$1' # Doffler Doffler: @@ -17074,87 +24624,177 @@ Oyyu: device: 'tablet' model: 'T11 3G' -# Primux +# Primux (primux.es) Primux: - regex: 'Primux' - device: 'smartphone' - models: - - regex: 'PrimuxDelta6(?:[);/ ]|$)' - model: 'Delta 6' + regex: 'Primux|SirocoY' + device: 'smartphone' + models: + - regex: 'Primux_ioxphone(?:[);/ ]|$)' + model: 'IOX Phone' + - regex: 'PrimuxDelta6(?:[);/ ]|$)' + model: 'Delta 6' + - regex: 'PrimuxKappa(P50[01])(?:[);/ ]|$)' + model: 'Kappa $1' + - regex: 'PrimuxKappa(?:[);/ ]|$)' + model: 'Kappa' + - regex: 'Primux_Beta2(?:[);/ ]|$)' + model: 'Beta 2' + - regex: 'Primux_?Omega([57])(?:[);/ ]|$)' + model: 'Omega $1' + + - regex: 'PrimuxUP(?:[);/ ]|$)' + device: 'tablet' + model: 'UP' + - regex: ' PrimuxZonda4(?:[);/ ]|$)' + device: 'tablet' + model: 'Zonda 4' + - regex: 'Primux_Siroco6(?:[);/ ]|$)' + device: 'tablet' + model: 'Siroco 6' + - regex: 'SirocoY(?:[);/ ]|$)' + device: 'tablet' + model: 'Siroco Y' # iMars iMars: - regex: 'IMARS VEGA X7(?:[);/ ]|$)' + regex: '(?:IMARS VEGA X7|VIVI_8|MILKY_WAY_M2)(?:[);/ ]|$)' device: 'smartphone' - model: 'Vega X7' + models: + - regex: 'IMARS VEGA X7' + model: 'Vega X7' + - regex: 'VIVI_8' + model: 'VIVI 8' + - regex: 'MILKY_WAY_M2' + model: 'Milky Way M2' -# Logic +# Logic (logicmobility.com) Logic: - regex: 'LOGIC[_ ](X[135]|X4M|L5D|X5[AFT]|X60G)(:?[_ ]LITE2?)?(?:[);/ ]|$)' + regex: '(?:LOGIC[_ ](X50|X[135]|X4M|L5D|X5[AFT]|X60G|L50T?|L57|L6[01]|X60_PLUS)(:?[_ ]LITE2?)?|L55[ABS])(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'LOGIC[_ ]X60_PLUS(?:[);/ ]|$)' + model: 'X60 Plus' - regex: 'LOGIC[_ ](X5|X4M)[_ ]LITE(?:[);/ ]|$)' model: '$1 Lite' - regex: 'LOGIC[_ ](X5)[_ ]LITE2(?:[);/ ]|$)' model: '$1 Lite 2' - - regex: 'LOGIC[_ ](X[13]|X4M|L5D|X5[AFT]|X60G)(?:[);/ ]|$)' + - regex: 'LOGIC[_ ](X50|X[13]|X4M|L5D|X5[AFT]|X60G|L6[01])(?:[);/ ]|$)' + model: '$1' + - regex: '(L50T?|L57|L55[ABS])(?:[);/ ]|$)' + model: '$1' + +# Cloud or Cloud TruConnect (www.cloudmobileusa.com) +Cloud: + regex: '(?:Cyclone_C4|Storm_C3|Stratus_C5(?:_Elite)?|Sunshine_T1)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(Sunshine_T1)' + device: 'tablet' + model: '$1' + - regex: 'Storm_C3' + model: 'Storm C3' + - regex: 'Stratus_C5_Elite' + model: 'Stratus C5 Elite' + - regex: '(Stratus_C5|Cyclone_C4)' model: '$1' +# Cloudpad +Cloudpad: + regex: '\+VT(?:107C|Q007C)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: '\+VT(107C)' + model: '+VT$1' + - regex: '\+VTQ(007C)' + model: '+VTQ$1' + # Cloudfone Cloudfone: - regex: 'Thrill (?:Boost[ ]?(2|3)?|Snap|Access)(?:[);/ ]|$)' + regex: 'CloudFone[ _]|(?:Thrill (?:Boost[ ]?(2|3)?|Snap|Access|Plus 16GB)|Excite Prime 2 Pro|NBA Edition|Go SP|Next Infinity Plus|Go Connect)(?:[);/ ]|$)' device: 'smartphone' models: + - regex: 'Thrill Boost 2 Plus(?:[);/ ]|$)' + model: 'Thrill Boost 2 Plus' - regex: 'Thrill Boost (2|3)(?:[);/ ]|$)' model: 'Thrill Boost $1' - regex: 'Thrill Boost(?:[);/ ]|$)' model: 'Thrill Boost' - regex: 'Thrill Snap(?:[);/ ]|$)' model: 'Thrill Snap' + - regex: 'Thrill Plus 16GB(?:[);/ ]|$)' + model: 'Thrill Plus 16GB' - regex: 'Thrill Access(?:[);/ ]|$)' model: 'Thrill Access' + - regex: 'Excite Prime 2 Pro(?:[);/ ]|$)' + model: 'Excite Prime 2 Pro' + - regex: 'NBA Edition(?:[);/ ]|$)' + model: 'NBA Edition' + - regex: '(Go SP(?: 2)?|Next Infinity Plus|Go Connect(?: Lite)?(?: 2)?)(?:[);/ ]|$)' + model: '$1' + - regex: 'Next(?:[);/ ]|$)' + model: 'Next' # Vsmart Vsmart: - regex: '(?:Joy 1\+|Active 1\+|Bee 3)(?:[);/ ]|$)' + regex: '(?:Joy [123]\+|Joy [34]|Active 1\+|Bee 3|Active 3|V341U|Bee Lite)(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'Joy 1\+(?:[);/ ]|$)' - model: 'Joy 1 Plus' + - regex: 'Joy ([123])\+(?:[);/ ]|$)' + model: 'Joy $1 Plus' + - regex: 'Joy ([34])(?:[);/ ]|$)' + model: 'Joy $1' - regex: 'Active 1\+(?:[);/ ]|$)' model: 'Active 1 Plus' - regex: 'Bee 3(?:[);/ ]|$)' model: 'Bee 3' + - regex: 'Active 3(?:[);/ ]|$)' + model: 'Active 3' + - regex: 'V341U(?:[);/ ]|$)' + model: 'Hobson' + - regex: 'Bee Lite(?:[);/ ]|$)' + model: 'Bee Lite' # MiXzo MiXzo: - regex: '(?:MiXzo )?(?:ME1030|MX1037|MX1041)[ _][34]G(?:[);/ ]|$)' + regex: '(?:MiXzo[ _])?(?:ME ?10(?:2[35]|30)|MX1037|MX1024|MX10[24]1|MX1397)([ _][34]G)?(?:[);/ ]|$)' device: 'tablet' models: - - regex: 'MiXzo ME1030[_ ]3G(?:[);/ ]|$)' - model: 'ME1030 3G' - - regex: '(?:MiXzo )?MX1041[ _]4G(?:[);/ ]|$)' - model: 'MX1041 4G' - - regex: '(?:MiXzo )?MX1037[ _]4G(?:[);/ ]|$)' - model: 'MX1037 4G' + - regex: 'MiXzo[_ ]ME ?(1023|1030)(?:[_ ]([34])G)(?:[);/ ]|$)' + model: 'ME$1 $2G' + - regex: 'MiXzo[_ ]MX1021(?:[_ ]3G)?(?:[);/ ]|$)' + model: 'MX1021 3G' + - regex: '(?:MiXzo[ _])?MX(1037|1041|1024|1397)[ _]4G(?:[);/ ]|$)' + model: 'MX$1 4G' + - regex: 'ME ?1025' + model: 'ME1025 3G' # Openbox Openbox: - regex: 'Openbox (A[34](?: (?:Pro|Lite))?)(?:[);/ ]|$)' + regex: '(?:Openbox (?:A[34](?: (?:Pro|Lite))?)|AS_4K_CI(?:_PRO)?)(?:[);/ ]|$)' device: 'tv' - model: '$1' + models: + - regex: 'Openbox (A[34](?: (?:Pro|Lite))?)(?:[);/ ]|$)' + model: '$1' + - regex: 'AS_4K_CI_PRO' + model: 'AS 4K CI Pro' + - regex: 'AS_4K_CI' + model: 'AS 4K CI' # Ziox Ziox: - regex: 'ZIOX[_ ]|(?:Astra Viva 4G|Astra NXT Pro)(?:[);/ ]|$)' + regex: 'ZIOX[_ ]|(?:Astra Viva 4G|Astra (?:(?:NXT|Curve|Young) Pro|(?:Metal|Titan|Young|Curve) 4G|Star|Blaze)|Duopix \w\d{1,2})(?:[);/ ]|$)' device: 'smartphone' models: - - regex: 'ZIOX_F9_PRO(?:[);/ ]|$)' + - regex: 'ZIOX[_ ]F9[_ ]PRO(?:[);/ ]|$)' model: 'F9 Pro' - - regex: 'Astra Viva 4G(?:[);/ ]|$)' - model: 'Astra Viva 4G' - - regex: 'Astra NXT Pro(?:[);/ ]|$)' - model: 'Astra NXT Pro' + - regex: 'Astra (Viva|Titan|Young|Metal|Curve) 4G(?:[);/ ]|$)' + model: 'Astra $1 4G' + - regex: 'Astra (Star|Blaze)(?:[);/ ]|$)' + model: 'Astra $1' + - regex: 'Astra (NXT|Curve|Young) Pro(?:[);/ ]|$)' + model: 'Astra $1 Pro' + - regex: 'Duopix (\w\d{1,2})(?:[);/ ]|$)' + model: 'Duopix $1' # iDroid iDroid: @@ -17178,27 +24818,67 @@ Aoson: - regex: 'aoson(M707TG)(?:[);/ ]|$)' model: '$1' +# Finlux +Finlux: + regex: 'FINLUX, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' + # FireFly Mobile FireFly Mobile: - regex: '(AURII[ _](?:Passion|Virtuoso|Secret Lite|FORCE|FUSION|F8[_ ]Premium|XCITE))(?:[);/ ]|$)' + regex: '(?:AURII[ _](?:Passion|Virtuoso|ULTRA|Secret Lite|AMUSE[_ ]3G|FORCE|FUSION|F8[_ ]Premium|XCITE|DELIGHT|DREAM[_ ](?:MINI|One))|SECRET_XR|INTENSE[ _](?:POWER|METAL_2|XT)|SUPER SWEET|SWEET MINI)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'AURII[ _]FORCE(?:[);/ ]|$)' - model: 'AURII Force' + model: 'Aurii Force' + - regex: 'AURII[ _]DELIGHT(?:[);/ ]|$)' + model: 'Aurii Delight' + - regex: 'AURII[ _]DREAM[_ ]MINI(?:[);/ ]|$)' + model: 'Aurii Dream Mini' + - regex: 'AURII[ _]DREAM[_ ]One(?:[);/ ]|$)' + model: 'Aurii Dream One' + - regex: 'AURII[ _]ULTRA(?:[);/ ]|$)' + model: 'Aurii Ultra' + - regex: 'AURII[ _]AMUSE[_ ]3G(?:[);/ ]|$)' + model: 'Aurii Amuse 3G' - regex: 'AURII[ _]FUSION(?:[);/ ]|$)' - model: 'AURII Fusion' + model: 'Aurii Fusion' - regex: 'AURII[ _]XCITE(?:[);/ ]|$)' - model: 'AURII xCite' - - regex: '(AURII[ _](?:Passion|Virtuoso|Secret Lite|F8[_ ]Premium))(?:[);/ ]|$)' - model: '$1' + model: 'Aurii xCite' + - regex: 'SECRET_XR(?:[);/ ]|$)' + model: 'Aurii Secret XR' + - regex: 'AURII[ _]((?:Passion|Virtuoso|Secret Lite|F8[_ ]Premium))(?:[);/ ]|$)' + model: 'Aurii $1' + - regex: 'INTENSE POWER(?:[);/ ]|$)' + model: 'Intense Power' + - regex: 'INTENSE_XT(?:[);/ ]|$)' + model: 'Intense XT' + - regex: 'INTENSE_METAL_2(?:[);/ ]|$)' + model: 'Intense Metal 2' + - regex: 'SUPER SWEET(?:[);/ ]|$)' + model: 'Super Sweet' + - regex: 'SWEET MINI(?:[);/ ]|$)' + model: 'Sweet Mini' + +# FISE (http://www.fise.com.cn/) +FISE: + regex: 'Fise_' + device: 'smartphone' + models: + - regex: 'Fise_32433_3G(?:[);/ ]|$)' + device: 'feature phone' + model: 'M32433 3G' # i-Cherry or iCherry i-Cherry: regex: 'iCherry_?' device: 'smartphone' models: - - regex: 'iCherry[ _]C(25[125]|21[16]|110|121|22[079]|23[03])(?:[);/ ]|$)' - model: 'C$1' + - regex: 'iCherry[ _](C(?:25[1258]|21[16]|110|121|22[0379]|23[03])|X1)(?:[);/ ]|$)' + model: '$1' + - regex: 'iCherry-C256' + device: 'tablet' + model: 'C256 Nano 3G' # NextTab NextTab: @@ -17208,9 +24888,9 @@ NextTab: # Time 2 Time2: - regex: '(TC1050G)(?:[);/ ]|$)' - device: 'tablet' - model: '$1 10.1"' + regex: '(TC1050G)(?:[);/ ]|$)' + device: 'tablet' + model: '$1 10.1"' # Sunstech Sunstech: @@ -17218,11 +24898,28 @@ Sunstech: device: 'tablet' model: '$1' -# Hotwav +# Hotwav (www.hotwav.com) Hotwav: - regex: '(Venus[_ ]X1[024569]|Pearl K2)(?:[);/ ]|$)' + regex: '(?:Venus[_ ](?:X[12]|X1[0245679]|R8 PLUS|R[236-9]|R1[028]|X16-1)|Cosmos[ _](?:V8_lite|V19_Plus|V2[0-3]|U2|V1[359]|V[45689]|V8-2)|Pearl K2|Magic Q8|Magic 5 Plus|Magic (?:[89]|1[13])|Hot[_ ]6|Symbol (?:M1|X|Max|R60))(?:[);/ ]|$)' device: 'smartphone' - model: '$1' + models: + - regex: 'Cosmos[ _]V8_lite(?:[);/ ]|$)' + model: 'Cosmos V8 Lite' + - regex: 'Hot[_ ]6?(?:[);/ ]|$)' + model: 'Hot 6' + - regex: 'Venus R8 PLUS(?:[);/ ]|$)' + model: 'Venus R8 Plus' + - regex: 'Venus[_ ]X16(?:-1)?(?:[);/ ]|$)' + model: 'Venus X16' + - regex: 'Venus[_ ](X[12]|X1[0245679]|R[236-9]|R1[028])(?:[);/ ]|$)' + model: 'Venus $1' + - regex: 'Symbol M1' + model: 'Symbol M1' + - regex: 'Symbol R60' + device: 'phablet' + model: 'Symbol R60' + - regex: '(Cosmos[ _](?:V19_Plus|V2[0-3]|U2|V1[359]|V[45689])|Pearl K2(?: Prime)?|Magic Q8|Magic 5 Plus|Magic (?:[89]|1[13])|Symbol (?:X|Max))(?:-2)?(?:[);/ ]|$)' + model: '$1' # Tetratab Tetratab: @@ -17238,9 +24935,13 @@ Dolamee: # INVIN Invin: - regex: 'INVIN[ _-](X[24]|KM6)(?:[);/ ]|$)' + regex: 'INVIN[ _-]|KM5PRO(?:[);/ ]|$)' device: 'tv' - model: '$1' + models: + - regex: 'INVIN[ _-](X[24]|KM[678])' + model: '$1' + - regex: 'KM5PRO' + model: 'KM5 Pro' # Doopro Doopro: @@ -17278,11 +24979,30 @@ Nos: - regex: 'NOS Roya(?:[);/ ]|$)' model: 'Roya' -# Accent +# Accent (DBM Maroc) (accent.ma) Accent: - regex: 'ACCENT_NEON(?:[);/ ]|$)' - device: 'smartphone' - model: 'Neon' + regex: '(?:ACCENT[_ ]NEON|FAST73G|PEARL[_ ]A[24567]|TANK_P55|CAMELEON[_ ](?:C[456]|A1)(?:[_ ]PLUS)?|Speed[- ](?:[AXYM]2|X2\+))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'ACCENT[_ ]NEON(?:[);/ ]|$)' + model: 'Neon' + - regex: 'CAMELEON[_ ]C6[_ ]PLUS(?:[);/ ]|$)' + model: 'Cameleon C6 Plus' + - regex: 'Speed[- ]([AXYM]2)(?:[);/ ]|$)' + model: 'Speed $1' + - regex: 'Speed-X2\+(?:[);/ ]|$)' + model: 'Speed X2 Plus' + - regex: 'CAMELEON[_ ](C[456]|A1)(?:[);/ ]|$)' + model: 'Cameleon $1' + - regex: 'PEARL A4 Lite(?:[);/ ]|$)' + model: 'Pearl A4 Lite' + - regex: 'PEARL[_ ]A([2567])(?:[);/ ]|$)' + model: 'Pearl A$1' + - regex: 'TANK_P55(?:[);/ ]|$)' + model: 'Tank P55' + - regex: 'FAST73G(?:[);/ ]|$)' + device: 'phablet' + model: 'FAST7 3G' # Avenzo (www.avenzo.es) Avenzo: @@ -17294,17 +25014,54 @@ Avenzo: - regex: 'MOB4PRO 4G(?:[);/ ]|$)' model: 'Mob 4 Pro 4G' -# Beelink +# Beelink (www.bee-link.com) Beelink: - regex: 'Beelink (GT1|LAKE I|SEA I|A1)(?:[);/ ]|$)' + regex: '(?:Beelink (?:G[ST]1|LAKE I|SEA I|A1)|GTKing(?:_AT)?|GT1mini-2|GT1-mini(?:[-_]AT)?)(?:[);/ ]|$)' device: 'tv' - model: '$1' + models: + - regex: 'Beelink (G[ST]1|LAKE I|SEA I|A1)(?:[);/ ]|$)' + model: '$1' + - regex: 'GT1-mini(?:-AT)?(?:[);/ ]|$)' + model: 'GT1 Mini' + - regex: 'GT1mini-2(?:[);/ ]|$)' + model: 'GT1 Mini 2' + - regex: 'GTKing PRO(?:[);/ ]|$)' + model: 'GT King Pro' + - regex: 'GTKing(?:_AT)?(?:[);/ ]|$)' + model: 'GT King' # MAXVI MAXVI: - regex: 'MAXVI[ _](MS401)(?:[);/ ]|$)' + regex: 'MAXVI[ _](?:MS401)(?:[);/ ]|$)|\w*_?MAXVI?_\w+|MS502[_ ]Orion|MS531' device: 'smartphone' - model: '$1' + models: + - regex: 'MAXVI[ _](MS401)' + model: '$1' + - regex: 'MS531' + model: 'MS531 Vega' + - regex: 'MS502[_ ]Orion' + model: 'MS502 Orion' + - regex: '\w*MAXVI_(P11|K10|X[358]00)_' + device: 'feature phone' + model: '$1' + +# MDC Store (http://mdc.store/ or https://www.facebook.com/mdcmobileuzbekistan/) +MDC Store: + regex: '(?:Prime_S|M300 4G|MDC M5)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Prime_S(?:[);/ ]|$)' + model: 'Prime S' + - regex: '(M300) 4G(?:[);/ ]|$)' + model: '$1 4G' + - regex: 'MDC M5(?:[);/ ]|$)' + model: 'M5' + +# MDTV +MDTV: + regex: 'MDTV(?:[);/ ]|$)' + device: 'tv' + model: '' # meanIT (meanit.hr) meanIT: @@ -17333,17 +25090,17 @@ X-BO: # Xgody Xgody: - regex: 'XGODY' + regex: 'XGODY|Y19\(EU\)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'XGODY Y17(?:[);/ ]|$)' model: 'Y17' - + - regex: 'Y19\(EU\)' + model: 'Y19' - regex: 'XGODY_X96(?:[);/ ]|$)' model: 'X96' device: 'tv' - # Alcor (alcordigital) Alcor: regex: '(Access_Q784C)(?:[);/ ]|$)' @@ -17352,7 +25109,7 @@ Alcor: # iBrit iBrit: - regex: 'IBRIT_' + regex: 'IBRIT_|(?:SI5[12])(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'IBRIT_I([57])(?:[);/ ]|$)' @@ -17361,6 +25118,10 @@ iBrit: model: 'Power 6' - regex: 'iBRIT_Speed Pro(?:[);/ ]|$)' model: 'Speed Pro' + - regex: 'SI51(?:[);/ ]|$)' + model: 'Speed' + - regex: 'SI52(?:[);/ ]|$)' + model: 'Speed Plus' # Ovvi Ovvi: @@ -17370,26 +25131,44 @@ Ovvi: # Fero Fero: - regex: 'Fero_|Royale_X2' + regex: 'Fero[_ ]|Royale[_ ](?:[YX]2|A1)' device: 'smartphone' models: - regex: 'Fero_Y1' model: 'Y1' - - regex: 'Royale_X2' - model: 'Royale X2' + - regex: 'Royale Y2 Lite' + model: 'Royale Y2 Lite' + - regex: 'Royale[_ ]([YX]2|A1)' + model: 'Royale $1' + - regex: 'FERO PACE' + model: 'Pace' + - regex: 'Fero[ _](A4001|A450[23]|A5001|L100|Iris|Power|Mega LTE|Vibe)' + model: '$1' + +# Ruio +Ruio: + regex: 'Ruio[ _]|M671M4(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Ruio[ _](S4)(?:[);/ ]|$)' + model: '$1' + - regex: 'Ruio[ _](S5)Plus(?:[);/ ]|$)' + model: '$1 Plus' + - regex: 'M671M4' + model: 'Cola 4G' # Transpeed Transpeed: - regex: 'Transpeed_|(?:TR99 MINI\+|TR99)(?:[);/ ]|$)' + regex: 'Transpeed[_ ]|(?:TR99 MINI\+|TR99)(?:[);/ ]|$)' device: 'tv' models: - regex: 'TR99 MINI\+' model: 'TR99 Mini Plus' - - regex: '(?:Transpeed_)?(TR99|6K)(?:[);/ ]|$)' + - regex: '(?:Transpeed[_ ])?(TR99|H616|6K|X4S)(?:[);/ ]|$)' model: '$1' # 8848 (everest 8848, 8848 titanium) -8848: +'8848': regex: '8848 (M[3-6])(?:[);/ ]|$)' device: 'smartphone' model: '$1' @@ -17399,3 +25178,3449 @@ VVETIME: regex: 'ZYVV1(?:[);/ ]|$)' device: 'smartphone' model: 'V1' + +# A1 (www.a1.by) +A1: + regex: '(?:A1 (?:Alpha|Alpha 20\+)|Alpha 20)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'A1 Alpha 20\+' + model: 'Alpha 20 Plus' # ZTE Blade V2020 + - regex: 'Alpha 20' + model: 'Alpha 20' + - regex: 'Alpha 21' + model: 'Alpha 21' + - regex: 'A1 Alpha' + model: 'Alpha' + +# Swisstone +Swisstone: + regex: 'swisstone (SD 5[13]0)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# P-UP (Peaup Co., Ltd.) (p-up.jp, mode1.jp) +P-UP: + regex: 'MD-0[143]P(?:[);/ ]|$)' + device: 'phablet' + models: + - regex: 'MD-04P(?:[);/ ]|$)' + model: 'Mode 1 RR' + - regex: 'MD-03P(?:[);/ ]|$)' + model: 'Mode 1 RS' + - regex: 'MD-01P(?:[);/ ]|$)' + device: 'smartphone' + model: 'Mode 1 MD-01P' + +# Paladin (https://paladin.com.my/) +Paladin: + regex: 'Paladin TV' + device: 'tv' + model: 'TV Box' + +# iVooMi +iVooMi: + regex: '(?:Innelo_1|iV 505|Me 1\+)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Innelo_1' + model: 'Innelo 1' + - regex: 'iV 505' + model: 'Me 1' + - regex: 'Me 1\+' + model: 'Me 1+' + +# Pixelphone +Pixelphone: + regex: 'Pixelphone S1(?:[);/ ]|$)' + device: 'smartphone' + model: 'S1' + +# Pixela +Pixela: + regex: 'Infineum[_ ](Z4?5)(?:[);/ ]|$)' + device: 'smartphone' + model: 'Infineum $1' + +# Iris +Iris: + regex: '(?:Vox[_ ](?:[45]S|Alpha|POP|STEEL Plus|Energy|FORTIS|VERO)|IS2_?Plus|IS2S|Next_P_PRO|IRS002-16|X1 mini)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Vox[_ ]([45])S' + model: 'Vox $1S' + - regex: 'VOX[_ ]FORTIS' + model: 'Vox Fortis' + - regex: 'VOX[_ ]VERO' + model: 'Vox Vero' + - regex: 'VOX Alpha Plus' + model: 'Vox Alpha Plus' + - regex: 'VOX STEEL Plus' + model: 'Vox Steel Plus' + - regex: 'VOX Alpha' + model: 'Vox Alpha' + - regex: 'VOX Energy' + model: 'Vox Energy' + - regex: 'VOX POP plus' + model: 'Vox Pop Plus' + - regex: 'VOX POP Pro' + model: 'Vox Pop Pro' + - regex: 'Next_P_PRO' + model: 'Next P Pro' + - regex: 'IS2_?Plus' + model: 'IS2 Plus' + - regex: 'IRS002-16' + model: 'I-S6' + - regex: 'IS2S' + model: 'IS2S' + - regex: 'X1 mini' + model: 'X1 Mini' + +# Fonos +Fonos: + regex: 'Fonos-(O1)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Xtouch (www.xtouchtechnologies.com) +Xtouch: + regex: '(?:Xtouch[ _](?:X10|A5|X)|XBot[_ ](?:Senior|Junior)|X9_16GB)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Xtouch[ _](X10|A5|X)(?:[);/ ]|$)' + model: '$1' + - regex: 'X9_16GB(?:[);/ ]|$)' + model: 'X9' + - regex: 'XBot[_ ](Senior|Junior)' + model: 'XBot $1' + +# Conquest +Conquest: + regex: 'Conquest[-_](?:S(?:20|[68]|1[0126])|F2)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Conquest[-_]S([68]|1[0126]|20)' + model: 'S$1' + - regex: 'Conquest-F2' + model: 'F2' + +# Zatec +Zatec: + regex: 'ZATEC[_ ]|(?:[ ]WIND|ZPLAY1_2018|Zpower_(?:Plus|2018))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'ZATEC[_ ]GRAVITY(?:[);/ ]|$)' + model: 'Gravity' + - regex: '[ ]WIND(?:[);/ ]|$)' + model: 'Wind' + - regex: 'ZPLAY1_2018' + model: 'Zplay (2018)' + - regex: 'Zpower_2018' + model: 'Zpower (2018)' + - regex: 'Zpower_Plus' + model: 'Zpower Plus' + +# Selecline (https://www.auchan.lu/) +Selecline: + regex: 'Selecline[ _]|S4T7IN(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'S4T7IN(?:[);/ ]|$)' + model: 'S4T7IN' + - regex: 'Selecline 10(?:[);/ ]|$)' + model: '10' + +# Selenga +Selenga: + regex: 'Selenga[ _](A[134])(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# Starlight +Starlight: + regex: 'Starlight|(?:My_Star_X|RIO STAR|C_Note_Pro|Star_Mix_2|I_STAR_PLUS)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'My_Star_X' + model: 'My Star X' + - regex: 'RIO STAR' + model: 'Rio Star' + - regex: 'C_Note_Pro' + model: 'C Note Pro' + - regex: 'Star_Mix_2' + model: 'Star Mix 2' + - regex: 'I_STAR_PLUS' + model: 'I Star Plus' + - regex: 'Starlight_ROME_X' + model: 'Rome X' + +# GEOFOX +GEOFOX: + regex: 'GEOFOX[_ ](MID ?743)(?:[);/ ]|$)' + device: 'tablet' + model: 'MID743' + +# Tinmo +Tinmo: + regex: 'TiNMO[- _](A11|K3)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Verico +Verico: + regex: '(RP-UDM0[12]A|RP-UDP05A|JO-UQM10A)(?:[);/ ]|$)' + device: 'tablet' + model: 'Uni Pad $1' + +# TTEC (ttec.com.tr) +TTEC: + regex: '(Magictab (?:9GX|7GE|718))(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# eSTAR +eSTAR: + regex: 'eSTAR[_ ](?:Grand|GO\!?|Zoom Quad|Gemini|MINI[_ ]3G|BEAUTY|MOON)' + device: 'tablet' + models: + - regex: 'eSTAR (Grand|GO\!?) (HD Intel|IPS Intel|IPS|HD|Intel) Quad Core 3G' + model: '$1 $2 Quad Core 3G' + - regex: 'eSTAR (Zoom Quad|Gemini|GO)' + model: '$1' + - regex: 'eSTAR GRAND HD quad core( [34]G)?' + model: 'Grand HD Quad Core$1' + - regex: 'eSTAR GRAND' + model: 'Grand' + - regex: 'eSTAR BEAUTY HD Quad core' + model: 'Beauty HD Quad Core' + - regex: 'eSTAR MOON HD Quad core' + model: 'Moon HD Quad Core 3G' + - regex: 'eSTAR BEAUTY 2 HD Quad core' + model: 'Beauty 2 HD Quad Core' + - regex: 'eSTAR[_ ]MINI[_ ]3G' + model: 'Mini 3G' + +# Hometech (hometech.com.tr) +Hometech: + regex: '(?:Ideal (?:10S|Tab [79])|ALFA(?:10TB|7LM)|ALFA[_ ](?:10RC|10TM?|10MB|7RS|[78]RC|7M)|HT[ _](?:7RT|8MZ))(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: '(Ideal (?:10S|Tab 9))(?:[);/ ]|$)' + model: '$1' + - regex: 'ALFA[_ ]?(10RC|10T[BM]?|7RS|[78]RC|7L?M|10MB)(?:[);/ ]|$)' + model: 'ALFA $1' + - regex: 'Ideal Tab 7 Ips( 3G)?' + model: 'Ideal Tab 7 IPS$1' + - regex: 'HT[ _](7RT|8MZ)(?:[);/ ]|$)' + model: 'HT $1' + +# ExMobile (www.exmobile.my) +ExMobile: + regex: 'EX(29|45)i(?:[);/ ]|$)' + device: 'smartphone' + model: 'EX $1i' + +# Exmart Mobile (exmartmobile.com) +Exmart: + regex: 'Exmart[ _](K1)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Hipstreet (hipstreet.com) +Hipstreet: + regex: 'HS_|10DTB12(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'HS_9DTB39(?:[);/ ]|$)' + model: 'Pulse' + - regex: '10DTB12(?:[);/ ]|$)' + model: 'Phoenix' + - regex: 'HS_([a-z0-9]+)(?:[);/ ]|$)' + model: '$1' + +# Navitech +Navitech: + regex: '(NeoTab)[ _-]((?:S1[23]0|S125|H85|H11[05]|KID741|S9700))(?:[);/ ]|$)' + device: 'tablet' + model: '$1 $2' + +# NorthTech (north-tech.us) +NorthTech: + regex: '(NT-TP10)(?:[);/ ]|$)' + device: 'tablet' + model: 'TouchPad 10.0"' + +# UNIWA +UNIWA: + regex: 'UNIWA[ _](X5|F40)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# ANDOWL (www.andowlph.com) +Andowl: + regex: '(?:ANDOWL-)?(Q[45]|QG9)(?:[);/ ]|$)|Andowl' + device: 'tv' + model: '$1' + +# Silelis (silelis.com) +Silelis: + regex: 'Silelis[ _](T-1)(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# Bluedot (bluedot.co.jp) +Bluedot: + regex: 'BLUEDOT[_ ]|(?:BNT-71)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: '(?:BLUEDOT[_ ])?(BNP-500)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + - regex: '(BNT-71)(?:[);/ ]|$)' + model: '$1' + +# Planet Computers +Planet Computers: + regex: '(Cosmo_Communicator)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Reach +Reach: + regex: '(Allure[_ ](?:Ultra(?:[_]Curve)?|Secure|Admire|Rise)|Opulent X)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# MobiWire +MobiWire: + regex: '(?:Kiona|KANUNA|Halona|Kicka[_ ][45][ _]Plus|Kohana|Kosumi|KWANITA|Lonan|Hotah|Kicka 5|Kiona|SmartE11|Sakari)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'KANUNA' + model: 'Kanuna' + - regex: 'KWANITA' + model: 'Kwanita' + - regex: 'SmartE11' + model: 'Smart E11' + - regex: '(Kiona|Kicka[_ ][45][ _]Plus|Kohana|Kosumi|Lonan|Halona|Hotah|Kicka 5|Kiona|Sakari)(?:[);/ ]|$)' + model: '$1' + +# Hezire +Hezire: + regex: '(HTB801)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Hurricane (hurricanemobile.com) +Hurricane: + regex: 'Hurricane[ _]|(?:Flame_Plus|Glaze|Cobra|Ridge Plus|Rush Plus|DZIRE|Android 7.+ Beam|Vulcan|SAGE|Iris Plus 2021|VortexPlus)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Hurricane[ _]IGNITE' + model: 'Ignite' + - regex: 'Hurricane[ _]Bolt' + model: 'Bolt' + - regex: 'Hurricane[ _]VORTEX' + model: 'Vortex' + - regex: 'Hurricane[ _]GIGA' + model: 'Giga' + - regex: 'Glaze' + model: 'Glaze' + - regex: 'Cobra' + model: 'Cobra' + - regex: 'DZIRE' + model: 'Dzire' + - regex: 'SAGE' + model: 'Sage' + - regex: 'Beam' + model: 'Beam' + - regex: 'Vulcan' + model: 'Vulcan' + - regex: 'Flame_Plus' + model: 'Flame Plus' + - regex: 'Ridge Plus' + model: 'Ridge Plus' + - regex: 'Rush Plus' + model: 'Rush Plus' + - regex: 'Iris Plus 2021' + model: 'Iris Plus (2021)' + - regex: 'VortexPlus' + model: 'Vortex Plus' + +# iSwag (iswagmobile.com) +iSWAG: + regex: 'ISWAG[ _]' + device: 'smartphone' + models: + - regex: 'iSWAG[_ ]KRONOS' + model: 'Kronos' + - regex: 'iSWAG[_ ]Lynx' + model: 'Lynx' + - regex: 'iSWAG[_ ]MANTRA' + model: 'Mantra' + - regex: 'iSWAG[_ ]MEGA' + model: 'Mega' + - regex: 'iSWAG[_ ]NEMESIS' + model: 'Nemesis' + - regex: 'ISWAG[_ ]VIPER' + model: 'Viper' + +# Reeder (reeder.com.tr) +Reeder: + regex: '(?:reeder[_ ](?:3G_Tablet|A7iC|A[78]i[_ ]Quad|A8i Q2|M8 Plus|[TM]8|M10 Plus|P11SE)|M10SPlus|P12Curve|P13_Blue_Plus|P13_Max_Blue|P13[_ ]Blue[_ ]Ma(?:ks|x)|P13_Blue|P13 Blue 2021)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'reeder[_ ](3G_Tablet|A7iC|A[78]i[_ ]Quad|A8i Q2|M8 Plus|[TM]8|M10 Plus|P11SE)(?:[);/ ]|$)' + model: '$1' + - regex: 'M10SPlus' + model: 'M10S Plus' + + - regex: 'P12Curve' + device: 'smartphone' + model: 'P12 Curve' + - regex: 'P13_Blue_Maks' + device: 'smartphone' + model: 'P13 Blue Maks' + - regex: 'P13_Blue_Plus' + device: 'smartphone' + model: 'P13 Blue Plus' + - regex: 'P13 Blue 2021' + device: 'smartphone' + model: 'P13 Blue (2021)' + - regex: 'P13 Blue Max 2020' + device: 'smartphone' + model: 'P13 Blue Max (2020)' + - regex: 'P13[_ ]Blue[_ ]Max|P13_Max_Blue' + device: 'smartphone' + model: 'P13 Blue Max' + - regex: 'P13_Blue' + device: 'smartphone' + model: 'P13 Blue' + +# ELARI (elari.net) +ELARI: + regex: 'KidPhone4G(?:[);/ ]|$)' + device: 'wearable' + model: 'KidPhone 4G' + +# Epik One or EPIKONE (epikmobile.com) +'Epik One': + regex: '(K501 Plus|[ ]K5(?:0[0-4]|1[01]|03[TS]|3[456]|4[05]|73|03HD)|[ ]K60[01]|[ ]X507T|[ ]K40[56]|[ ]T700)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'K501 Plus' + model: 'Leo Plus' + - regex: 'K501' + model: 'Leo' + - regex: 'K500' + model: 'Omega Lite' + - regex: 'K502' + model: 'Omega' + - regex: 'K503T' + model: 'Leo Turbo' + - regex: 'K503S' + model: 'Leo Pro' + - regex: 'K503HD' + model: 'Leo HD' + - regex: 'K503' + model: 'Leo Max' + - regex: 'K504' + model: 'Titan 3G' + - regex: 'X507T' + model: 'Titan II' + - regex: 'K510' + model: 'Bolt' + - regex: 'K511' + model: 'Bolt Pro' + - regex: 'K534' + model: 'Hada' + - regex: 'K535' + model: 'Hada Turbo' + - regex: 'K545' + model: 'Rocket' + - regex: 'K536' + model: 'Royal' + - regex: 'K540' + model: 'Excalibur' + - regex: 'K573' + model: 'Panther' + - regex: 'K600' + model: 'Jupiter' + - regex: 'K601' + model: 'Jupiter One' + - regex: 'K406' + model: 'Pebble Plus' + - regex: 'K405' + model: 'Pebble II' + - regex: 'T700' + model: 'Palette' + device: 'tablet' + +# Altice +Altice: + regex: 'Altice[ _](S62|S31|S43)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Kult +Kult: + regex: '(Ambition|Beyond)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Beyond +Beyond: + regex: '(?:SURVE(10|[26-8]|[12] PRO)|Home9)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'SURVE([12]) PRO' + model: 'Surve $1 Pro' + - regex: 'SURVE(10|[26-8])' + model: 'Surve $1' + - regex: 'Home9' + model: 'Home 9' + +# BioRugged (biorugged.com) +BioRugged: + regex: '(?:BioWolf 8-F30|BIOWOLF8F30|Ruggbo 20 Lite)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'BioWolf 8-F30|BIOWOLF8F30' + model: 'BioWolf 8-F30' + - regex: 'Ruggbo 20 Lite' + model: 'Ruggbo 20 Lite' + +# VAIO (vaio.com) +VAIO: + regex: '(?:VPA051|VA-10J)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'VPA051' + model: 'Phone A' + - regex: '(VA-10J)' + model: '$1' + +# Spark (https://www.spark.co.nz/) +Spark: + regex: 'Spark Plus 3(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Plus 3' + model: 'Plus 3' + +# SPC or SPC Universe or SPC Mobile (spc.es) +SPC: + regex: '(?:Gravity Max|GRAVITY 2|GRAVITY_OCTACORE|SPC (?:GEN|SMART)|SPC_ALIEN(?:_STICK)?|SPC Glow9.7|Lightyear)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'GRAVITY_OCTACORE' + model: 'Gravity OctaCore' + - regex: 'Gravity Max' + model: 'Gravity Max' + - regex: 'GRAVITY 2' + model: 'Gravity 2' + - regex: 'SPC Glow9.7' + model: 'Glow 9.7"' + - regex: 'Lightyear' + model: 'Lightyear' + + - regex: 'SPC SMART PLUS' + device: 'smartphone' + model: 'Smart Plus' + - regex: 'SPC SMART LITE' + device: 'smartphone' + model: 'Smart Lite' + - regex: 'SPC SMART MAX' + device: 'smartphone' + model: 'Smart Max' + - regex: 'SPC SMART' + device: 'smartphone' + model: 'Smart' + - regex: 'SPC GEN MAX' + device: 'smartphone' + model: 'Gen Max' + - regex: 'SPC GEN LITE' + device: 'smartphone' + model: 'Gen Lite' + - regex: 'SPC GEN Plus' + device: 'smartphone' + model: 'Gen Plus' + - regex: 'SPC GEN' + device: 'smartphone' + model: 'Gen' + + - regex: 'SPC_ALIEN_STICK' + device: 'tv' + model: 'Alien Stick' + - regex: 'SPC_ALIEN' + device: 'tv' + model: 'Alien' + +# Winmax (winmaxmobile.com) +Winmax: + regex: 'Winmax[ _](?:XC14|XC[46]|TX30)(?:[);/ ]|$)|MAUI.+Winmax_BD45' + device: 'smartphone' + models: + - regex: 'Winmax[ _](XC14|XC[46])(?:[);/ ]|$)' + model: '$1' + - regex: 'Winmax[ _](TX30)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + - regex: 'MAUI.+Winmax_(BD45)' + device: 'feature phone' + model: '$1' + +# Zebra (zebra.com) +Zebra: + regex: ' (TC5[16]|TC2[056]|TC75|TC7[05]x|TC5[27]|TC700H|ET51)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(TC5[16]|TC2[056]|TC75|TC7[05]x|TC5[27]|TC700H)(?:[);/ ]|$)' + model: '$1' + - regex: '(ET51)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Thuraya (thuraya.com) +Thuraya: + regex: 'Thuraya[ _](X5-Touch)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Bkav (bkav.com) +Bkav: + regex: 'Bphone[ _](B111[45]|B2017)(?:[);/ ]|$)' + device: 'smartphone' + model: 'Bphone $1' + +# Brandt +Brandt: + regex: '(BPRIME|BSTAR\+?|BPRIMES|B-ONE)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Bigben +Bigben: + regex: 'GAMETAB-ONE(?:[);/ ]|$)' + device: 'tablet' + model: 'GameTab-One' + +# smartec (smartec.tn) +SMARTEC: + regex: '(Atractivo)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Asanzo (asanzo.vn) +Asanzo: + regex: 'ASANZO[ _](?:A2|S[23]|[SZ]5|S3_PLUS)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'ASANZO[ _]S3[ _]PLUS' + model: 'S3 Plus' + - regex: 'ASANZO[ _](A2|S[23]|[SZ]5)(?:[);/ ]|$)' + model: '$1' + +# Artizlee +Artizlee: + regex: 'Artizlee[ _]S9|ATL-(?:16|21(?:PLUS|[XT])?|31|26)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'ATL-21PLUS(?:[);/ ]|$)' + model: 'ATL-21 Plus' + - regex: '(ATL-(?:16|21[XT]?|31|26))(?:[);/ ]|$)' + model: '$1' + - regex: 'Artizlee[ _]S9' + device: 'smartphone' + model: 'S9' + +# Mintt (www.mintt.co) +Mintt: + regex: '(?:Coolmintt(?:A3|M2)?|Ultramintt(?:S2)?|FRESHMINTT(?:A7|A10)?)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Coolmintt ?([PM]1|P3|A3|M2)(?:[);/ ]|$)' + model: 'CoolMintt $1' + - regex: 'Ultramintt ?([SR]1|S2|A5)(?:[);/ ]|$)' + model: 'UltraMintt $1' + - regex: 'FRESHMINTT ?(A7|A10)(?:[);/ ]|$)' + device: 'tablet' + model: 'FreshMintt $1' + +# Premio +Premio: + regex: '(?:AXE_II|186HS2080531|186HS1050531|186HS1050232|186FT1080231|185FT5050231|PREMIO[ _](?:S50|P420|P451))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '186HS2080531' + model: 'X1' + - regex: 'AXE_II' + model: 'Axe II' + - regex: '186HS1050531' + model: 'P541' + - regex: '185FT5050231' + model: 'P511' + - regex: '186FT1080231' + model: 'P571' + - regex: '186HS1050232' + model: 'P630' + - regex: 'PREMIO[ _](S50|P420|P451)(?:[);/ ]|$)' + model: '$1' + +# Trifone +Trifone: + regex: 'Passion[-_](?:1S|PRO|PLUS)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Passion-1S' + model: 'Passion 1S' + - regex: 'Passion-Plus' + model: 'Passion Plus' + - regex: 'Passion_Pro' + model: 'Passion Pro' + +# Bluewave +Bluewave: + regex: '(?:33GT HD|WV8R-M|WV8R[_-]N)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: '33GT HD' + model: 'Wave 8 HD+' + - regex: 'WV8R-M' + model: 'Wave 8 Red Marshmallow' + - regex: 'WV8R[_-]N' + model: 'Wave 8 Red Nougat' + +# Siragon (siragon.com) +Siragon: + regex: 'Siragon|(?:SP-(?:5[0124]50|5400))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(?:Siragon[_ ])?(SP-(?:5[0124]50|5400))' + model: '$1' + +# Poppox +Poppox: + regex: 'Poppox P3' + device: 'smartphone' + model: 'P3' + +# POPTEL (https://www.poptelmobile.com/) +POPTEL: + regex: 'P9000_MAX(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'P9000_MAX(?:[);/ ]|$)' + model: 'P9000 Max' + +# Zentality (zentalityinfo.com) +Zentality: + regex: 'C-723ULTRA(?:[);/ ]|$)' + device: 'tablet' + model: 'C-723 Ultra' + +# Black Bear +'Black Bear': + regex: '(B6 Master|B6 Note X)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Fortis +Fortis: + regex: '(Apollo 5 Neo)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# OpelMobile (opelmobile.com.au) +OpelMobile: + regex: 'Opel ?Mobile|(?:OpelMobile_Smart(?:JX|X1)|Easy_Smart_2)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Easy_Smart_2' + model: 'Easy Smart 2' + - regex: 'OpelMobile_SmartJX' + model: 'SmartJX' + - regex: 'OpelMobile_SmartX1' + model: 'SmartX1 4G' + - regex: 'Opel Mobile SmartX6' + model: 'SmartX6' + +# NuAns +NuAns: + regex: 'NEO \[Reloaded\](?:[);/ ]|$)' + device: 'smartphone' + model: 'NEO Reloaded' + +# Koolnee (sub brand from Koobee) +Koolnee: + regex: '(K1 Trio)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Sansui (sansui-global.com) +Sansui: + regex: 'Sansui[_ ]' + device: 'smartphone' + models: + - regex: 'Sansui[_ ](Switch|Play|Fun|SA4[01]|U4[56]|U3[02]|Nova)(?:[);/ ]|$)' + model: '$1' + +# Sico (sico.com.eg) +Sico: + regex: 'SICO[_ ](?:PLUS|e1002)|(?:Express3-Max|SSR3-1-51-5M|SSD-1-53-13M|Mega2|Express3)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'SICO[_ ]PLUS2' + model: 'Plus 2' + - regex: 'SICO[_ ]PLUS' + model: 'Plus' + - regex: 'Mega2' + model: 'Mega 2' + - regex: 'SSR3-1-51-5M' + model: 'Pro 3' + - regex: 'SSD-1-53-13M' + model: 'Diamond' + - regex: 'SICO[_ ]e1002' + device: 'tablet' + model: 'E1002' + - regex: 'Express3-Max' + device: 'tablet' + model: 'Express 3 Max' + - regex: 'Express3' + device: 'tablet' + model: 'Express 3' + +# Smadl (smadlethiopia.com) +Smadl: + regex: 'Android.+(?:Safari)(?!/[\d.]+)(?: Build|\) AppleWebKit)|SMADL[ _]' + device: 'smartphone' + models: + - regex: 'Android.+(?:Safari)(?!/[\d.]+)(?: Build|\) AppleWebKit)' + model: 'Safari' + - regex: 'SMADL[ _]Matri([2X])' + model: 'Matri $1' + +# EXCEED (exceedmobiles.com) +EXCEED: + regex: '(EX7SL?4|EX10S4)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Tymes +Tymes: + regex: 'Tymes[ _](V5)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Solone +Solone: + regex: 'SOLONE|(?:E1457|W145[02])(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'E1457' + model: 'Earth Iron E1457' + - regex: 'W1450' + model: 'Wind Breeze W1450' + - regex: 'W1452' + model: 'Wind Air W1452' + - regex: 'SOLONE A47' + model: 'SL-A47' + - regex: 'SOLONE[ _]Elite[ _]L5501' + model: 'Elite L5501' + - regex: 'SOLONE[ _]SUMO[_ ]S5001' + model: 'Sumo S5001' + - regex: 'SOLONE[ _](SL-K40|S5002)(?:[);/ ]|$)' + model: '$1' + +# Far Eas Tone (Fareastone) +FarEasTone: + regex: 'Smart ?(601|550|50[59])(?:[);/ ]|$)' + device: 'smartphone' + model: 'Smart $1' + +# Smailo +Smailo: + regex: 'Smailo_(2GO)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Colors or ColorsMobile (www.colors-mobile.com) +Colors: + regex: '(?:Colors[ _](S(?:[19]|11)|P70|P[456]5|P32|E15|P50 Plus)|Pride_1A|P52_Pride5C|P90_Pride5X)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Pride_1A(?:[);/ ]|$)' + model: 'Pride 1A' + - regex: 'P52_Pride5C(?:[);/ ]|$)' + model: 'Pride 5C' + - regex: 'P90_Pride5X(?:[);/ ]|$)' + model: 'Pride 5X' + - regex: 'Colors[ _](S(?:[19]|11)|P70|E15|P[456]5|P32|P50 Plus)(?:[);/ ]|$)' + model: '$1' + +# Honeywell (honeywell.com) +Honeywell: + regex: '(?:EDA50K?|EDA70|EDA51|CK65|CT60)(?:[);/ ]|$)' + device: 'smartphone' + models: + # smartphone + scan + - regex: '(EDA50K?|EDA70|EDA51)(?:[);/ ]|$)' + model: 'ScanPal $1' + # mobile terminal + - regex: '(CK65|CT60)(?:[);/ ]|$)' + device: 'peripheral' + model: 'Dolphin $1' + +# Electroneum (electroneum.com) +Electroneum: + regex: 'electroneum(M1)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# High Q or HighQ +'High Q': + regex: '(ELT070[46]H|ELT0802H)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Pluzz +Pluzz: + regex: 'Pluzz[_-](Z552|PL5[05]10|PL4010|PL501[46]|Elite_Dual)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# IKU Mobile (iku-mobile.com) +'IKU Mobile': + regex: '(?:IKU[_ ](?:A40|T[123]|K3|i[34]|T[_ ]MAX)|Powerful_K55i|Curvy C50L)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(Powerful_K55i|Curvy C50L)(?:[);/ ]|$)' + model: '$1' + - regex: 'IKU[_ ](A40|K3|i[34])(?:[);/ ]|$)' + model: '$1' + - regex: 'IKU[_ ](T[123])(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + - regex: 'IKU[_ ]T[_ ]Max(?:[);/ ]|$)' + device: 'tablet' + model: 'T Max' + +# IKI Mobile (ikimobile.com) +IKI Mobile: + regex: '(?:GO5_55|BLESS_GO55|BLESSPLUS|KF4Go|KF5bless)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'GO5_55' + model: 'Go 5.5"' + - regex: 'BLESS_GO55' + model: 'Bless Go 5.5"' + - regex: 'BLESSPLUS' + model: 'Bless Plus' + - regex: '(KF4Go|KF5bless)' + model: '$1' + +# CG Mobile +'CG Mobile': + regex: '(?:CG_OMEGA6|Omega (?:[38])|CG_EON_Blaze_Pro|CG\|EON Blaze GOLD)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Omega ([38])(?:[);/ ]|$)' + model: 'Omega $1' + - regex: 'CG_OMEGA6(?:[);/ ]|$)' + model: 'Omega 6' + - regex: 'CG_EON_Blaze_Pro(?:[);/ ]|$)' + model: 'EON Blaze Pro' + - regex: 'CG\|EON Blaze GOLD(?:[);/ ]|$)' + model: 'EON Blaze Gold' + +# IUNI +IUNI: + regex: 'IUNI[ _]' + device: 'smartphone' + models: + - regex: 'IUNI[ _](U3|i1|N1)' + model: '$1' + +# (zhnkmobile.com) +'ZH&K': + regex: '(?:ODYSSEY O2|ODYSSEY RANGE)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'ODYSSEY O2' + model: 'Odyssey O2' + - regex: 'ODYSSEY RANGE' + model: 'Odyssey Range' + +# Ordissimo (ordissimo.fr) +Ordissimo: + regex: '(LeNumero1)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Necnot (necnontrade.com) +Necnot: + regex: '(M002[DGQK]-2|M002N|M002N-3T|M002W-2T|6M-3T)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Einstein +Einstein: + regex: 'Einstein(T3)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# AfriOne (afrione.com) +AfriOne: + regex: '(CYGNUSX?|Gravity Z2|ChampionPro)(?:[);/ ]|$)' + device: 'phablet' + models: + - regex: 'CYGNUSX(?:[);/ ]|$)' + model: 'Cygnus X' + - regex: 'CYGNUS(?:[);/ ]|$)' + model: 'Cygnus' + + - regex: 'Gravity Z2(?:[);/ ]|$)' + device: 'smartphone' + model: 'Gravity Z2' + - regex: 'ChampionPro(?:[);/ ]|$)' + device: 'smartphone' + model: 'Champion Pro' + +# Connex (connexdevices.co.za) +Connex: + regex: '(?:CTAB1044hn|CTAB-1044|SEN_1055_ARM)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: '(CTAB1044hn|CTAB-1044)(?:[);/ ]|$)' + model: '$1' + - regex: 'SEN_1055_ARM' + model: 'Serenity 1055 10.1"' + +# Connectce +Connectce: + regex: '(?:CP6001A)(?:[);/ ]|$)' + device: 'smartphone' + model: 'Connect Core 6' + +# ClearPHONE (https://www.clear.store/) +ClearPHONE: + regex: 'ClearPHONE' + device: 'smartphone' + models: + - regex: 'ClearPHONE 620(?:[);/ ]|$)' + model: '620' + +# Clementoni +Clementoni: + regex: '(?:CLEMPAD[_ ](?:6_XL|HR_Plus|HR|[68]|7_S|201[89])|ClemPhone_7|MFC_(?:2018|8))(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'CLEMPAD_(201[89])' + model: 'Clempad ($1)' + - regex: 'MFC_2018' + model: 'Clempad (2018)' + - regex: 'MFC_8' + model: 'Clempad 8' + - regex: 'CLEMPAD_7_S' + model: 'Clempad 7S' + - regex: 'Clempad[_ ](6_XL|HR_Plus|HR|[68])' + model: 'Clempad $1' + - regex: 'ClemPhone[ _](7)' + device: 'smartphone' + model: 'Clemphone $1' + +# Cell-C +Cell-C: + regex: 'Cell_?C_' + device: 'smartphone' + models: + - regex: 'Cell_C_(Summit_Plus|Fame|Evolve)(?:[);/ ]|$)' + model: '$1' + - regex: 'CELLC_Evolve' + device: 'tablet' + model: 'Evolve' + +# VC +VC: + regex: '(?:Camellia_II|Cactus II|Maple III|Maple-II|Cactus-Pro|LavenderII|Jasmine-II)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(Camellia_II|Cactus II|Maple III)(?:[);/ ]|$)' + model: '$1' + - regex: 'Cactus-Pro' + model: 'Cactus Pro' + - regex: '(Maple|Jasmine|Lavender)-?II(?:[);/ ]|$)' + model: '$1 II' + +# CellAllure (cellallure.com) +CellAllure: + regex: '(?:Cool_Extreme_2|Earn|Fashion2Plus|Fashion[ _]C|Cool Duo|CHIC_X1|Miracle XS|Miracle 6.0 S)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(Cool_Extreme_2|Earn|Fashion[ _]C|Cool Duo|Miracle XS|Miracle 6.0 S)(?:[);/ ]|$)' + model: '$1' + - regex: 'Fashion2Plus' + model: 'Fashion 2 Plus' + - regex: 'CHIC_X1' + model: 'Chic X1' + +# Eagle (eagleuhd.com) +Eagle: + regex: 'Eagle[ _](Classic Pro|Elite|Gold)(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# Invens +Invens: + regex: '(Fighter|Eager|Royal R[1-8])(?: Build|[;)])' + device: 'smartphone' + model: '$1' + +# Chico Mobile (chicomobile.ph) +Chico Mobile: + regex: '(?:ALTO (?:Bombo|classic|Estrella|JUEGO|SUBIR|[235])|FUEGO MAX|OJOS[ _](?:CAMBIO|NUBE|[68i]|ORO))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'ALTO Bombo' + model: 'Alto Bombo' + - regex: 'ALTO classic' + model: 'Alto Classic' + - regex: 'ALTO Estrella' + model: 'Alto Estrella' + - regex: 'ALTO JUEGO' + model: 'Alto Juego' + - regex: 'ALTO SUBIR' + model: 'Alto Subir' + - regex: 'ALTO ([235])' + model: 'Alto $1' + - regex: 'OJOS[ _]([68i])' + model: 'Ojos $1' + - regex: 'OJOS NUBE' + model: 'Ojos Nube' + - regex: 'OJOS CAMBIO' + model: 'Ojos Cambio' + - regex: 'OJOS ORO' + model: 'Ojos Oro' + + - regex: 'FUEGO MAX' + device: 'tablet' + model: 'Fuego Max' + +# Claresta +Claresta: + regex: 'Claresta[ _]|(?:AirPhoneS[56]|AirPhone K6)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'AirPhone ?(S[56]|K6)' + model: 'AirPhone $1' + - regex: 'Claresta (F3) PRO' + model: '$1 Pro' + - regex: 'Claresta[ _](F4)' + model: '$1' + +# Camfone (camfonemobile.com) +Camfone: + regex: '(?:Camfone (?:SE)|Hero[_ ](?:H5\+|SE2|H9|(?:H7|XR)_Plus|SX|1[123]|SE3[ _]Max)|Honey (?:Y1|Y2s))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(Hero[_ ](?:H5\+|SE2|H9|(?:H7|XR)_Plus|SX|1[123]|SE3[ _]Max)|Honey (?:Y1|Y2s))(?:[);/ ]|$)' + model: '$1' + - regex: 'Camfone (SE)(?:[);/ ]|$)' + model: '$1' + +# Bellphone +Bellphone: + regex: 'Bp100 X-Plus(?:[);/ ]|$)' + device: 'smartphone' + model: 'BP 100 X-Plus' + +# Gini +Gini: + regex: 'Gini[ _]' + device: 'smartphone' + models: + - regex: 'Gini[ _]W(7)' + model: 'W$1' + - regex: 'Gini[ _]n(8)' + model: 'N$1' + - regex: 'Gini[ _]s5Pro' + model: 'S5 Pro' + - regex: 'Gini[ _]Tab[ _](V[78])' + device: 'tablet' + model: 'Tab $1' + +# MIVO (mivo.com.my) +MIVO: + regex: '(Caryota [1245789]|Jazz J[13] 2018)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(Caryota [1245789])(?:[);/ ]|$)' + model: '$1' + - regex: 'Jazz (J[13]) 2018' + model: 'Jazz $1 (2018)' + +# Jesy (en.jesy.com) +Jesy: + regex: 'Jesy_(J7)' + device: 'smartphone' + model: '$1' + +# Teknosa or Tekno S.A +Teknosa: + regex: 'Preo[ _]' + device: 'smartphone' + models: + - regex: 'Preo Teknosa P1' + model: 'Preo P1' + - regex: 'Preo[ _]P([23])' + model: 'Preo P$1' + +# Hyve +Hyve: + regex: '(?:Pryme 01|ST01)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Pryme 01' + model: 'Pryme 01' + - regex: 'ST01' + model: 'Storm ST01' + +# EWIS +EWIS: + regex: 'OCTA T720Q(?:[);/ ]|$)' + device: 'tablet' + model: 'Octa T720Q' + +# Leader Phone or LP (lp.tn) +Leader Phone: + regex: '(Vyper|N-5[07]|N-45|LP DAISY|LP_VEYRON|LP_PRADO)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'N-45 light' + model: 'N-45 Light' + - regex: 'Vyper PRO' + model: 'Vyper Pro' + - regex: 'LP DAISY' + model: 'Daisy' + - regex: 'LP_VEYRON' + model: 'Veyron' + - regex: 'LP_PRADO' + model: 'Prado' + - regex: '(Vyper|N-5[07]|N-45)(?:[);/ ]|$)' + model: '$1' + +# Cavion (cavion.pl) +Cavion: + regex: '(?:Cavion[_ ](?:Solid[_ ]4[\._]5|Base[ _](?:7|7_3G_Silver|5[._]0|10|7.2 Quad)|10_3GRQ)|Cavion7.1quad)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Cavion[_ ]Solid[_ ]4[._]5' + model: 'Solid 4.5"' + - regex: 'Cavion[ _]BASE[ _]5[._]0' + model: 'Base 5.0"' + - regex: 'CAVION_10_3GRQ' + device: 'tablet' + model: 'Base 10 3GR Quad' + - regex: 'Cavion(?:7.1quad)' + device: 'tablet' + model: 'Base 7.1" Quad' + - regex: 'Cavion Base 7.2 Quad' + device: 'tablet' + model: 'Base 7.2" Quad' + - regex: 'Cavion Base 10' + device: 'tablet' + model: 'Base 10' + - regex: 'Cavion Base 7 Dual' + device: 'tablet' + model: 'Base 7.0" Dual' + - regex: 'Cavion Base 7 Quad' + device: 'tablet' + model: 'Base 7.0" Quad' + - regex: 'Cavion_Base_7_3G_Silver' + device: 'tablet' + model: 'Base 7.0" 3G Silver' + +# GLX or JLX +GLX: + regex: 'GLX (?:Aria|Dorna|Taban|Shine|Spark|ASA)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'GLX ASA' + model: 'Asa' + - regex: 'GLX (Aria|Taban|Shine|Spark)(?:[);/ ]|$)' + model: '$1' + - regex: 'GLX (Dorna)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Seeken (seekenmobile.com) +Seeken: + regex: 'Seeken[ _-]' + device: 'smartphone' + models: + - regex: 'Seeken[_ -](SG1|SJ1)' + model: '$1' + - regex: 'Seeken[_ -](ST-101)' + device: 'tablet' + model: '$1' + +# Jivi Mobiles (jivi.in) +Jivi: + regex: '(?:Revolution TnT3|Xtreme_(?:[37]|3x)|Xtreme (?:XT84|XT309 Plus|1))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Revolution (TnT3)' + model: 'Revolution $1' + - regex: 'Xtreme (XT84)' + model: 'Xtreme Klick $1' + - regex: 'Xtreme (XT309) Plus' + model: 'Xtreme View Pro $1Plus' + - regex: 'Xtreme[ _]([137]|3x)(?:[);/ ]|$)' + model: 'Xtreme $1' + +# Winnovo (www.mywinnovo.com) +Winnovo: + regex: 'Winnovo[ _]|(?:T10LTE)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'T10LTE(?:[);/ ]|$)' + model: 'T10 LTE' + - regex: 'Winnovo[ _](M866|M798|VTab|750[PK])(?:[);/ ]|$)' + model: '$1' + - regex: 'Winnovo[ _](K5[46]|K43)[a-z]{2}' + device: 'smartphone' + model: '$1' + +# WE or WM Mobile or AAMRA WE +WE: + regex: 'WE (A[15]0|B3|F[12]0|E[12]|L[3469]|R[34]|V[34]|S1|X[13]|T1)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Trio or triomobiles (http://triomobiles.com/products.html) +Trio: + regex: 'Trio V51 DT(?:[);/ ]|$)' + device: 'smartphone' + model: 'V51DT' + +# Seuic (en.seuic.com) +Seuic: + regex: '(AUTOID9N|CRUISE1)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Centric +Centric: + regex: '(?:Centric[- ]CM(?:5001|33[23]1|3321Plus)|CM4331)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(?:Centric[- ])?CM5001' + model: 'A1' + - regex: '(?:Centric[- ])?CM3321Plus' + model: 'P1 Plus' + - regex: '(?:Centric[- ])?CM3321' + model: 'P1' + - regex: '(?:Centric[- ])?CM3331' + model: 'L3' + - regex: '(?:Centric[- ])?CM4331' + model: 'G1' + +# Kata mobile (secure.katadigital.com) +Kata: + regex: 'Kata[ _-]' + device: 'smartphone' + models: + - regex: 'Kata[ _-](C3|L1|M3s|M4|V[56])(?:[);/ ]|$)' + model: '$1' + - regex: 'Kata[ _-]i5-\w' + model: 'I5' + - regex: 'Kata-(T5)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + - regex: 'Kata-Tmini4(?:[);/ ]|$)' + device: 'tablet' + model: 'T Mini 4' + - regex: 'Kata Box 2(?:[);/ ]|$)' + device: 'tv' + model: 'Box 2' + +# Hardkernel (www.hardkernel.com) +Hardkernel: + regex: 'ODROID[-]?(C2|U2|XU[34])(?:[);/ ]|$)' + device: 'peripheral' + model: 'ODROID $1' + +# Wiseasy (wiseasy.com) +Wiseasy: + regex: 'WISENET5(?:[);/ ]|$)' + device: 'peripheral' + model: 'WISENET5' + +# Shtrikh-M +Shtrikh-M: + regex: 'SHTRIH-SMARTPOS-F2(?:[);/ ]|$)' + device: 'peripheral' + model: 'Smartpos F2' + +# BBK (bbk.ru) +BBK: + regex: '([65]5|50|4[03]|3[29]|28)LEX[-_](81(?:27|39|45|58|6[12]|7[34])|71(?:[23]7|4[345]|5[45]|6[368]|[57]8))[_/]([FU]?TS2C)(?:[);/ ]|$)' + device: 'tv' + model: '$1LEX-$2/$3' + +# 4ife +4ife: + regex: '4ife (4K Smart TV Box)(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# Westpoint +Westpoint: + regex: 'WESTPOINT[;,]' + device: 'tv' + models: + - regex: '(TETS-4919SM)' + model: '$1' + +# Wintouch (http://www.wintouch.ae/) +Wintouch: + regex: 'Q93S' + device: 'tablet' + model: 'Q93S' + +# Aiuto +Aiuto: + regex: '(AT702)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Seatel +Seatel: + regex: 'Seatel' + device: 'smartphone' + models: + - regex: 'Seatel[ _](L2|V8[AE]|T[5-8]|R6|V[89])(?:[);/ ]|$)' + model: '$1' + +# Ditecma (ditecma.com) +Ditecma: + regex: '(M1092R(?:-[12]|V[45])?)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Datamini (datamini.co.in) +Datamini: + regex: '(K908H4G)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# 3GNET (3gnet.com.tw) +3GNET: + regex: '(?<!NetType/)3GNET[ _]' + device: 'smartphone' + models: + - regex: '3GNET[ _](U8|T800|U6s)(?:[);/ ]|$)' + model: '$1' + - regex: '3GNET[ _]T ?900' + model: 'T900' + +# Yoka TV +'Yoka TV': + regex: 'KB2 PRO(?:[);/ ]|$)' + device: 'tv' + model: 'KB2 Pro' + +# Formuler (formuler.tv) +Formuler: + regex: 'Formuler[ _]|(?:S_TURBO_PRO)(?:[);/ ]|$)' + device: 'tv' + models: + - regex: 'Formuler[ _](Z8(?: Pro)?)(?:[);/ ]|$)' + model: '$1' + - regex: 'S_TURBO_PRO(?:[);/ ]|$)' + model: 'S Turbo Pro' + +# Malata +Malata: + regex: '(?:Build/)?Malata[ _]?([a-z0-9]+)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# MBOX +MBOX: + regex: 'MBOX3?(?:[);/ ]|$)' + device: 'tv' + model: '' + +# IT +IT: + regex: 'IT-(?:1101S?|1101-QUAD)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'IT-1101-QUAD' + model: '1101 Quad' + - regex: 'IT-(1101S?)' + model: '$1' + +# Navcity (www.navcity.com.br) +Navcity: + regex: 'NP-752Go(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'NP-752Go' + model: 'NP-752 Go' + +# Jeka +Jeka: + regex: '(?:JK(?:960|[71]03) 3G|JK702|JK101|JK[17]00 v2.0)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'JK(960|[71]03) 3G(?:[);/ ]|$)' + model: 'JK $1 3G' + - regex: 'JK(702|[17]00 v2.0|101)(?:[);/ ]|$)' + model: 'JK $1' + +# Jiake +Jiake: + regex: 'JK-?(760)(?:[);/ ]|$)' + device: 'smartphone' + model: 'JK-$1' + +# iQ&T (iqandt.com) +'iQ&T': + regex: '(IFoo (?:U200|H55))(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Mantra (mantratec.com) +Mantra: + regex: '(MFSTAB(?:_74G)?)(?:[);/ ]|$)' + device: 'peripheral' + model: '$1' + +# Datalogic (datalogic.com) +Datalogic: + regex: '(?:MEMOR 10)(?:[);/ ]|$)' + device: 'smartphone' + model: 'Memor 10' + +# Naomi Phone +Naomi Phone: + regex: '(?:NAOMIPHONE Ambar|DAMMAR)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'NAOMIPHONE Ambar(?:[);/ ]|$)' + model: 'Ambar' + - regex: 'DAMMAR(?:[);/ ]|$)' + model: 'Dammar' + +# Navitel (navitel.ru) +Navitel: + regex: 'NAVITEL[ _]|(?:T737PRO|T505PRO)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'NAVITEL[ _](T70[07]) 3G(?:[);/ ]|$)' + model: '$1 3G' + - regex: 'NAVITEL[ _](T757)LTE(?:[);/ ]|$)' + model: '$1 LTE' + - regex: 'NAVITEL[ _](A73[0157]|A650)(?:[);/ ]|$)' + model: '$1' + - regex: 'T(505|737)PRO(?:[);/ ]|$)' + model: 'T$1 Pro' + - regex: 'RE900 Full HD(?:[);/ ]|$)' # combo device table/navigator and camera + model: 'RE900 Full HD' + +# Linnex (www.linnex.com) +Linnex: + regex: 'LI(22)(?:[);/ ]|$)' + device: 'smartphone' + model: 'Li $1' + +# Smartab +Smartab: + regex: '(ST1009|ST7160)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# SuperTab (supertab-dz.com) +SuperTab: + regex: 'SuperTab(A10|K7|S7G)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Suzuki (suzukitech.com) +Suzuki: + regex: 'SUZUKI[ _]|(?:ECOPAD7|SUMOPad10)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'SUMOPAD(8100|10)(?:[);/ ]|$)' + model: 'SumoPad $1' + - regex: 'ECOPAD7' + model: 'ECOPad 7' + +# philips +Philips: + regex: 'Philips|NETTV/|Xenium S[25]66|(?:PI3210G|TPM1[79]1E|70PUH6774_96|QM152E|QM16[134]E|TLE(?:821L|722G)|AND1E|S397|W5510|S410J)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(?:Philips[_ ])?Xenium[ _](S[25]66|V787)(?:[);/ ]|$)' + model: 'Xenium $1' + - regex: '(?:Philips[_ ])?(X818|X588)(?:[);/ ]|$)' + model: 'Xenium $1' + - regex: '(?:Philips[_ ])?(S397|W5510)(?:[);/ ]|$)' + model: '$1' + - regex: 'AND1E(?: TV)?(?:[);/ ]|$)' + model: 'Android TV' + device: 'tv' + - regex: '(PI3210G)' + model: '$1' + device: 'tablet' + - regex: '(TPM1[79]1E)' # Smart Tv 2018/2019 + model: '$1' + device: 'tv' + - regex: 'QM152E(?:[);/ ]|$)' + model: '' + device: 'tv' + - regex: '(QM16[134]E)' + model: '$1' + device: 'tv' + - regex: '(70PUH6774)_96' + model: '$1/96 4K UHD' + device: 'tv' + - regex: '(TLE821L)(?:[);/ ]|$)' + model: '$1 4G LTE' + device: 'tablet' + - regex: '(TLE722G)(?:[);/ ]|$)' + model: '$1' + device: 'tablet' + - regex: '(?:S410J)(?:[);/ ]|$)' + model: 'M9 Pro' + device: 'tablet' + - regex: 'Philips, BDP([0-9]{4})' + model: 'Blu-ray Player (BDP$1)' + device: 'tv' + - regex: 'Philips, ([a-z0-9-]+)' + model: '$1' + device: 'tv' + - regex: '(NETTV/[0-9\.]{5})' + model: 'NetTV Series' + device: 'tv' + - regex: 'Philips-FISIO ([a-z0-9]+)' + model: 'Fisio $1' + - regex: 'Philips[ _-]?([a-z0-9\-@]+)' + model: '$1' + +# INCAR +INCAR: + regex: '(KZCAR)(?:[);/ ]|$)' + device: 'car browser' + model: '$1' + +# FaRao Pro (www.faraopro.jp) +FaRao Pro: + regex: '(FTRW100)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Nabi +Nabi: + regex: '(?:DMTAB-(?:IN08A|NV08B|NV2[04]A)|NBTY07SMKG|NBFP07PMKG|SNB02-NV7A|NABI2-NV7A)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'DMTAB-(?:IN08A|NV08B)' + model: 'Dream Tab HD 8.0"' + - regex: 'DMTAB-NV(2[04])A' + model: 'Big Tab HD $1.0"' + - regex: 'NBTY07SMKG' + model: 'Barbie Tab 7.0"' + - regex: 'NBFP07PMKG' + model: 'Fisher Price Learning Tab 7.0"' + - regex: 'SNB02-NV7A' + model: '2S Tab' + - regex: 'NABI2-NV7A' + model: '2 Tab' + +# StrawBerry +StrawBerry: + regex: 'StrawBerry[ _]' + device: 'smartphone' + models: + - regex: 'StrawBerry[ _](SX|QX15)(?:[);/ ]|$)' + model: '$1' + +# STRONG (https://www.strong.tv/) +STRONG: + regex: 'LEAP-S1' + device: 'tv' + models: + - regex: 'LEAP-S1' + model: 'LEAP-S1' + +# Gresso +Gresso: + regex: 'Gresso[ _]|(?:REGAL R2)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'REGAL R2' + model: 'Regal R2' + - regex: 'Gresso[ _]Regal(?:[);/ ]|$)' + model: 'Regal' + +# Pendoo (pendoo.tv) +Pendoo: + regex: 'Pendoo|A5X MAX(?:[\.-]\w+)?\.01\.d4' + device: 'tv' + models: + - regex: 'Pendoo ?(T95Z|X10) PLUS' + model: '$1 Plus' + - regex: 'Pendoo ?X8PRO+' + model: 'X8 Pro+' + - regex: 'Pendoo[ \.]?(X9[29]|T95)' + model: '$1' + - regex: 'pendoo mini' + model: 'Mini' + - regex: 'A5X MAX(?:[\.-]\w+)?\.01\.d4' + model: 'A5X Max' + +# PiPO (pipo.com) +PiPO: + regex: 'Pipo[_ ]|PipoM9Pro' + device: 'tablet' + models: + - regex: 'Pipo[_ ]([TP]9)' + model: '$1' + - regex: 'PipoM9Pro' + model: 'M9 Pro' + - regex: 'PIPO[_ ](X10|X9S)' # combo device tv/tablet/pc + device: 'tv' + model: '$1' + +# Engel or Engel Axil (www.engelaxil.com) +Engel: + regex: '(EN1007Q)plus(?:[);/ ]|$)' + device: 'tv' + model: '$1 Plus' + +# Genesis +Genesis: + regex: '(SK-Mtek GT730[15])(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# InfoKit +InfoKit: + regex: '(TVB-906X)(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# Blloc (blloc.com) +Blloc: + regex: '(Zero18)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Huskee +Huskee: + regex: 'VULKANO(?:[);/ ]|$)' + device: 'smartphone' + model: 'Vulkano' + +# SOLE +SOLE: + regex: 'SOLE[_ ]POP[_ ]S([45]0)(?:[);/ ]|$)' + device: 'smartphone' + model: 'Pop S$1' + +# SOLO +SOLO: + regex: 'SOLO[_ ](Aspire(?: M)?)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# OINOM +OINOM: + regex: 'OINOM[_ ](V9D|V7H|V[679])(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Singtech (singtech.asia) +Singtech: + regex: 'Singtech|(?:Sapphire[_ ](?:H50S|H7S?|H90)|Infinity_I(?:1|_Mix))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Sapphire[_ ](H50S|H7S?|H90)(?:[);/ ]|$)' + model: 'Sapphire $1' + - regex: 'Singtech[ _](Q2|S1)(?:[);/ ]|$)' + model: '$1' + - regex: 'Infinity_I1(?:[);/ ]|$)' + model: 'Infinity I1' + - regex: 'Infinity_I_Mix(?:[);/ ]|$)' + model: 'Infinity I Mix' + +# Sunny +Sunny: + regex: '(?:SS4G9 Mira|SS4G7 Sole|SS4G1 Luna|SS4G8 Nora|SS4G6 Lola|SN7014S?|SN7016)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(SS4G9 Mira|SS4G7 Sole|SS4G1 Luna|SS4G8 Nora|SS4G6 Lola)(?:[);/ ]|$)' + model: '$1' + - regex: '(SN7014S?|SN7016)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# TEENO sub brand GOWN(HK) +TEENO: + regex: 'TEENO' + device: 'smartphone' + models: + - regex: 'TEENO[_ ](S9|A1|S11)(?:[);/ ]|$)' + model: '$1' + +# v-mobile or Vmobile - sub brand GOWN(HK) +v-mobile: + regex: 'Vmobile[ _]' + device: 'smartphone' + models: + - regex: 'Vmobile[ _](J7)(?:[);/ ]|$)' + model: '$1' + - regex: 'Vmobile XS Pro(?:[);/ ]|$)' + model: 'XS Pro' + +# OASYS (oasys.co) +OASYS: + regex: '(TEG9300)(?:[);/ ]|$)' + device: 'peripheral' + model: '$1' + +# Aspera (asperamobile.com) +Aspera: + regex: 'ASPERA|(?:Wren)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'ASPERA[ _](R5h|R9|RT3|A4[02]|A50)(?:[);/ ]|$)' + model: '$1' + - regex: 'Wren(?:[);/ ]|$)' + model: 'Wren' + +# Vision Touch +Vision Touch: + regex: 'Vision ?Touch' + device: 'smartphone' + models: + - regex: 'VisionTouchLife' + model: 'Life' + - regex: 'Inspire' + model: 'Inspire' + +NOBUX: + regex: 'SMART_VOLT_NX5(?:[);/ ]|$)' + device: 'smartphone' + model: 'Smart Volt NX5' + +# Hitachi +Hitachi: + regex: 'HITACHI, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' + +# Hitech or Hitech Mobile (hitech-mobiles.com) +Hitech: + regex: '(Amaze[ _](?:S2_4G|S[56] 4G|S1|S[56](?: Plus)?))(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# F150 (sub brand Oukitel) +F150: + regex: '(?:Bison2021|B2021|[HR]2022)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '([HR]2022)(?:[);/ ]|$)' + model: '$1' + - regex: '(?:Bison2021|B2021)(?:[);/ ]|$)' + model: 'B2021' + +# BilimLang (bilimlang.com) +BilimLand: + regex: 'BilimBook mini(?:[);/ ]|$)' + device: 'desktop' + model: 'BilimBook Mini' + +# Greentel (greentelmobile.com) +Greentel: + regex: 'X1_Light_Lte(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'X1_Light_Lte' + model: 'X1 Light LTE' + +# Gretel: +Gretel: + regex: 'Gretel|(?:GT6000)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(GT6000)' + model: '$1' + - regex: 'Gretel; (A[67])' + model: '$1' + +# Kyowon +Kyowon: + regex: '(KA-E410W)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# LT Mobile or LT Electronics (lt-smartphone.com) +LT Mobile: + regex: 'LT[ _-](?:NOTE 10[SM]|C3100|S10[ _]Lite)' + device: 'smartphone' + models: + - regex: 'LT[- ]NOTE (10[SM])' + model: 'Note $1' + - regex: 'LT C3100' + model: 'P9' + - regex: 'LT[ _]S10[ _]Lite' + model: 'S10 Lite' + +# ONYX BOOX (onyx-boox.ru) +ONYX BOOX: + regex: 'KON_TIKI(2)?(?:[);/ ]|$)' + device: 'tablet' + model: 'Kon Tiki $1' + +# AIRON (airon.ua) +AIRON: + regex: 'AIRBOOK PRO 8S(?:[);/ ]|$)' + device: 'tablet' + model: 'AirBook Pro 8S' + +# GFive or G'Five (www.gfivepakistan.com) +GFive: + regex: '(?:PRESIDENT_GOLD_(9|10)|President Gpower 1)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'PRESIDENT_GOLD_(9|10)' + model: 'President Gold $1' + - regex: 'President Gpower 1' + model: 'President GPower 1' + +# KINGZONE or KING ZONE +KINGZONE: + regex: 'KINGZONE_|K1[_ ]turbo' + device: 'smartphone' + models: + - regex: 'KINGZONE_(N5)(?:[);/ ]|$)' + model: '$1' + - regex: 'K1[_ ]turbo' + model: 'K1 Turbo' + +# MTech +M-Tech: + regex: '(?:EROS 4G|MTECH (?:ACE9|TURBO L\d+|TEZ 4G|JAZBAA))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'EROS 4G' + model: 'Eros 4G' + - regex: 'ACE9' + model: 'Ace 9' + - regex: 'JAZBAA' + model: 'JAZBAA' + - regex: 'TEZ 4G' + model: 'TEZ 4G' + - regex: 'TURBO L(\d+)' + model: 'Turbo L$1' + +# Fantec Boogy +Fantec: + regex: 'FAN-M300H(?:[);/ ]|$)' + device: 'smartphone' + model: 'M300H' + +# AURIS Mobile (en.aurismobile.com.tr) +AURIS: + regex: '(TB-703G)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# YUHO Mobile +YUHO: + regex: 'YUHO_|(?:Netra(?:[_ ](?:Plus|Lite))?)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'YUHO_(O2|H2|Y[123])_PRO' + model: '$1 Pro' + - regex: 'YUHO_Vast_Plus' + model: 'Vast Plus' + - regex: 'YUHO_Y1_ACE' + model: 'Y1 Ace' + - regex: 'YUHO_Y1_STAR' + model: 'Y1 Star' + - regex: 'YUHO_O1_LITE' + model: 'O1 Lite' + - regex: '(?:YUHO_)?(Vast2?|O[12]|Y2|Netra(?:[_ ](?:Plus|Lite))?)(?:[);/ ]|$)' + model: '$1' + +# F2 Mobile OR 2F Mobile (f2mexico.com) +F2 Mobile: + regex: '(?:Z8PLUS|Z8POCKET|LT5216|F80s_plus|C8Finger|F80 PIABELLA)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Z8PLUS' + model: 'Z8 Plus' + - regex: 'Z8POCKET' + model: 'Z8 Pocket' + - regex: 'F80s_plus' + model: 'F80s Plus' + - regex: 'F80 PIABELLA' + model: 'F80 Piabella' + - regex: '(LT5216)' + model: '$1' + - regex: 'C8Finger' + model: 'C8 Finger' + +# Zaith +Zaith: + regex: '(Z3211G)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Spectralink (spectralink.com) +Spectralink: + regex: '(Versity 9640)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Vega +Vega: + regex: 'Vega (Q7128)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Bleck (www.bleck.com.mx) +Bleck: + regex: '(?:BE_(xl|se|o2|fr|et|dg)|BL-919845)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'BE_(xl|se|o2|fr|et|dg)(?:[);/ ]|$)' + model: 'BE $1' + - regex: 'BL-919845' + device: 'tablet' + model: 'BE clever 7.0"' + +# BS Mobile +BS Mobile: + regex: '(?:RUNE III?)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'RUNE (III?)(?:[);/ ]|$)' + model: 'Rune $1' + +# RoyQueen +RoyQueen: + regex: 'RQ[ -](Regal R8|713S)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'RQ (Regal R8)' + model: '$1' + - regex: 'RQ-(713S)' + device: 'tablet' + model: '$1' + +# Remdun (https://www.remdun.com/) +Remdun: + regex: 'RD86E(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'RD86E(?:[);/ ]|$)' + model: 'RD86E' + +# Revo or RevoPhone or RevoPad (revophone.com) +Revo: + regex: 'Revo[_ ](?:Youplus|555)|RevoYou' + device: 'smartphone' + models: + - regex: 'Revo_Youplus' + model: 'You Plus' + - regex: 'Revo[ _]?(You|555)' + model: '$1' + +# Axioo +Axioo: + regex: 'PICOp(?:hone|ad)_' + device: 'smartphone' + models: + - regex: 'PICOphone_(L1|M4N|M4P_M3|M4U_M2_M)' + model: 'PicoPhone $1' + - regex: 'PICOphone_M2' + model: 'PicoPhone M2 M' + - regex: 'PICOpad_(7H_7)_3G' + device: 'tablet' + model: 'PicoPad $1 3G' + +# Pico (pico-interactive.com) +Pico: + regex: 'Pico (G2 4K)(?:[);/ ]|$)' + device: 'wearable' + model: '$1' + +# STG Telecom (stgtelecom.com) +STG Telecom: + regex: 'STG[ _](A[12] Pro|[AS]1|X[1-3]|X20|S[1-3]0|[BC]10)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Rivo +Rivo: + regex: 'PHANTOM (?:PZ|RX)|RHYTHM RX' + device: 'smartphone' + models: + - regex: 'PHANTOM PZ ?(2[05]|[13]5|4|18)(?:[);/ ]|$)' + model: 'Phantom PZ$1' + - regex: 'PHANTOM RX ?(298|387)(?:[);/ ]|$)' + model: 'Phantom RX$1' + - regex: 'RHYTHM RX ?([15-9]0|[467]5|[12]80|150|[14]00)(?:[);/ ]|$)' + model: 'Rhythm RX$1' + +# Four Mobile or 4mobile +Four Mobile: + regex: 'Four[ _]?(S600|S300I|S185|K500|S61)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Four[ _]?(S600|S300I|K500)' + model: '$1' + - regex: 'Four[ _]?S185' + model: 'S185 Sky 2' + - regex: 'Four[ _]?S61' + model: 'S61 Eco 2' + +# Seven Mobile or 7mobile (www.7mobileafrica.com) +7 Mobile: + regex: '(SWEGUE|DRENA)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Swegue' + model: 'Swegue' + - regex: 'DRENA' + model: 'Drena' + +# UZ Mobile or Telecom Device Pro (idevice.uz) +UZ Mobile: + regex: 'Uzbekistan(?:[);/ ]|$)' + device: 'smartphone' + model: 'Uzbekistan' + +# KREZ +KREZ: + regex: 'KREZ[_ ]' + device: 'smartphone' + models: + - regex: 'KREZ[_ ](SL502)(?:[);/ ]|$)' + model: '$1' + - regex: 'KREZ[_ ](TM100[12]S8)(?:[);/ ]|$)' + device: 'tablet' + model: '$1 3G' + +# KRIP (https://www.krip.com/) +KRIP: + regex: 'KRIP_|K(?:4[bm]|5[bdm]|6b|55h|57|65)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'K(4[bm]|5[bdm]|6b|55h|57|65)(?:[);/ ]|$)' + model: 'K$1' + - regex: 'KRIP_K4(?:[);/ ]|$)' + model: 'K4' + +# Kurio or KD Interactive (www.group-kd.com, kdplanet.com) +Kurio: + regex: 'Kurio' + device: 'tablet' + models: + - regex: 'Kurio[_ ]?(10S|7S)(?:[);/ ]|$)' + model: '$1' + - regex: 'Kurio[_ ]?Phone(?:[);/ ]|$)' + device: 'smartphone' + model: 'Phone C14500' + +# Inch +Inch: + regex: 'Inch (?:Regulus (?:7.85|II)|Avior 3)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: '(Regulus 7.85)' + model: '$1"' + - regex: '(Regulus II|Avior 3)' + model: '$1' + +# UTime +UTime: + regex: 'UTIME[ _](U6|G7|U100|[TX]1|FX)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# L-Max or LMAX (lmax-mobile.com) +L-Max: + regex: '(?:Sapphire 8|Sapphire[76]|Mega plus[23])(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Mega plus([23])' + model: 'Mega Plus $1' + - regex: 'Sapphire ?([678])' + model: 'Sapphire $1' + +# Astro (astro.ua) +Astro: + regex: 'Astro[- ](S451|S501)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# WIWA (www.wiwa.info.pl) +WIWA: + regex: 'WIWA DREAM PLAYER(?:[);/ ]|$)' + device: 'tv' + model: 'Dream Player TV' + +# FMT OR Future Mobile Technology +FMT: + regex: '(?:16M4HI105024|FMT-NM7058-02|176HS1050(?:232|531)|175WT1050231|175HS1050231|175FT1050241)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '16M4HI105024' + model: 'Netsurfer Storm' + - regex: 'FMT-NM7058-02' + model: 'Flash' + - regex: '176HS1050531' + model: 'Falcon' + - regex: '176HS1050232' + model: 'B52' + - regex: '175WT1050231' + model: 'Eagle' + - regex: '175HS1050231' + model: 'Tomcat' + - regex: '175FT1050241' + model: 'Viper' + +# mPhone +mPhone: + regex: 'mPhone ?([68]|7 Plus|7s)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Cobalt +Cobalt: + regex: 'Cobalt[ _-](?:SM|T)' + device: 'smartphone' + models: + - regex: 'Cobalt[ _-]SM_(55?|6)' + model: 'SM$1' + - regex: 'Cobalt[ _-]T((?:7|10))[ _]3G' + device: 'tablet' + model: 'T$1 3G' + - regex: 'Cobalt[ _-]T((?:7|10))[ _]wifi' + device: 'tablet' + model: 'T$1 WiFi' + +# New Balance or NB +New Balance: + regex: 'NB (RunIQ)(?:[);/ ]|$)' + device: 'wearable' + model: '$1' + +# AOYODKG +AOYODKG: + regex: 'AOYODKG' + device: 'tablet' + models: + - regex: 'AOYODKG[_ ](A38)(?:[);/ ]|$)' + model: '$1' + +# Xtratech (xtratech.com) +Xtratech: + regex: '(BRIO[_ ]X31)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# XGIMI (www.xgimi.com) +XGIMI: + regex: 'XGIMI TV(?:[);/ ]|$)' + device: 'peripheral' + model: '$1' + +# Raspberry (raspberrypi.org) +Raspberry: + regex: 'Raspberry (Pi [0-9]+)(?:[);/ ]|$)' + device: 'peripheral' + model: '$1' + +# Tambo +Tambo: + regex: '(TA-(?:2[_ ](?:3G|Pro)|5[05][_ ]Power|[1-4]|[1246]0))(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Smooth Mobile (https://www.smoothmobile.us/) +Smooth Mobile: + regex: 'Smooth ?(?:5.[05]|626|6.26 Lite|6.[15])(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Smooth (5.[05]|6.[15])(?:[);/ ]|$)' + model: 'Smooth $1' + - regex: 'Smooth626(?:[);/ ]|$)' + model: 'Smooth 6.26' + - regex: 'Smooth 6.26 Lite(?:[);/ ]|$)' + model: 'Smooth 6.26 Lite' + +# Smotreshka +Smotreshka: + regex: 'Smotreshka Box (115NA|413NA|213a?)(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# Gooweel (gooweel.com) +Gooweel: + regex: 'Gooweel| M5 Pro(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Gooweel; (S7);' + model: '$1' + - regex: 'M5 Pro' + model: 'M5 Pro' + +# Vargo or Ivargo +Vargo: + regex: 'Vargo[; _]|(?:V210101)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(V210101)(?:[);/ ]|$)' + model: '$1' + +# Elekta (elektagulf.com) +Elekta: + regex: 'ELED-(?:4[238]S[AM]{2}RT|5[05](?:CV_)?SMART_UHD|32SMART)(?:[);/ ]|$)' + device: 'tv' + models: + - regex: 'ELED-(4[238])S[AM]{2}RT(?:[);/ ]|$)' + model: '$1" FHD LED Smart TV' + - regex: 'ELED-55CV_SMART_UHD(?:[);/ ]|$)' + model: '55" UHD Curved LED Smart TV' + - regex: 'ELED-(50)SMART_UHD(?:[);/ ]|$)' + model: '$1" UHD LED Smart TV' + - regex: 'ELED-(32)SMART(?:[);/ ]|$)' + model: '$1" HD LED Smart TV' + +# YASIN (yasintv.kz) +YASIN: + regex: 'YASIN Android TV(?:[);/ ]|$)' + device: 'tv' + model: '' + +# Blow (blow.pl) +Blow: + regex: '(?:LaserTAB10|PlatinumTAB10_4G_V\d)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'LaserTAB10' + model: 'Laser Tab 10' + - regex: 'PlatinumTAB10_4G_(V\d)' + model: 'Platinum Tab 10 4G $1' +# FNF +FNF: + regex: 'ifive(?:[_ ]mini[_ ][43]G?S|X2|Mini3|3| Air)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'ifive[_ ]mini[_ ]([43]G?S)' + model: 'iFive Mini $1' + - regex: 'ifive(X2|3)' + model: 'iFive $1' + - regex: 'ifiveMini3' + model: 'iFive Mini 3' + - regex: 'ifive Air' + model: 'iFive Air' + +# iMan +iMan: + regex: '(i5800C|i6800)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Vava +VAVA: + regex: 'VAVA[ _](X3)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# ivvi +ivvi: + regex: 'ivvi[ _](F1S|F2C|V1M-S|V2|i1-S)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Dragon Touch (dragontouch.com) +Dragon Touch: + regex: '(Notepad[_ ](?:K10|102))(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Dreamgate +Dreamgate: + regex: 'Sens 5(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Sens 5(?:[);/ ]|$)' + model: 'Sens 5' + +# AOpen (www.aopen.com) +AOpen: + regex: '(WT(?:22|19)M-FI)(?:[);/ ]|$)' + device: 'smart display' + model: 'eTILE $1' + +# AG or AG Mobile +AG Mobile: + regex: '(Hashtag|Shine|Chacer)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# DIGIFORS (digifors.ru) +DIGIFORS: + regex: 'DIGIFORS (400)(?:[);/ ]|$)' + device: 'tv' + model: 'Smart $1' + +# DISH (https://www.dish.com/) +DISH: + regex: 'WTCELERO5G(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'WTCELERO5G' + model: 'Celero 5G' + +# VIWA +VIWA: + regex: '(?:LIGHT MINI|VIWA A5\+|LIGHT PLUS)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'LIGHT MINI' + model: 'Light Mini' + - regex: 'LIGHT PLUS' + model: 'Light Plus' + - regex: 'VIWA A5\+' + model: 'Light A5 Plus' + +# M-Horse (www.mhorse.com) +M-Horse: + regex: 'M-HORSE|(?:Pure (?:3|2A?)|Pure ?1|Power1)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Pure ?([13]|2A?)(?:[);/ ]|$)' + model: 'Pure $1' + - regex: 'Power1' + model: 'Power 1' + +# ProVision (www.provision.co.ir/en) +ProVision: + regex: 'ProVision (S1)(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# 'Sirin labs (sirinlabs.com) +Sirin labs: + regex: '(?:FINNEY U1)(?:[);/ ]|$)' + device: 'smartphone' + model: 'Finney U1' + +# SK Broadband (https://www.skbroadband.com/) +SK Broadband: + regex: 'BHX-UH200' + device: 'tv' + models: + - regex: 'BHX-UH200(?:[);/ ]|$)' # Humax + model: 'BHX-UH200' + +# Perfeo (perfeo.ru) +Perfeo: + regex: 'Perfeo' + device: 'tv' + models: + - regex: 'Perfeo_PF_A4551' + model: 'CHRONO' + - regex: 'Perfeo_PF_A4552' + model: 'RATE' + +# CGV (www.cgv.fr) +CGV: + regex: 'CGV_(Ultimate T8)' + device: 'smartphone' + model: '$1' + +# Telia (telia.se or telia.com) +Telia: + regex: 'Telia box' + device: 'tv' + model: 'Box' + +# Canal Digital +Canal Digital: + regex: 'S70CDS(?:[);/ ]|$)' + device: 'tv' + model: 'OnePlace' + +# ZIFRO +ZIFRO: + regex: 'ZIFRO|(?:ZT-97003G)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: '(ZT-9700)3G' + model: '$1 3G' + +# SmartBook +SmartBook: + regex: 'SMARTBOOK S' + device: 'tablet' + models: + - regex: 'SMARTBOOK SB ?13' + model: 'SB13' + - regex: 'SMARTBOOK (S9Q9)' + model: '$1' + +# Kiowa +Kiowa: + regex: '(?:[AS]5|X4)_CRISTAL(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(X4|[AS]5)_CRISTAL' + model: '$1 Cristal' + +# Sprint +Sprint: + regex: 'AQT(100|8[02])(?:[);/ ]|$)' + device: 'tablet' + model: 'AQT$1' + +# Bundy Mobile (bundy-mobile.fr) +Bundy: + regex: '(?:BTOUCH7_PLUS|SWEET 5\+ 2019|SWEET ?[56]\+)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'SWEET 5\+ 2019' + model: 'Sweet 5 Plus (2019)' + - regex: 'SWEET ?([65])\+' + model: 'Sweet $1 Plus' + - regex: 'BTOUCH7_PLUS' + device: 'tablet' + model: 'B-Touch 7 Plus' + +# Covia (covia.net) +Covia: + regex: '(CP-J55a|CP-J55aW|CP-J55aX)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Smart (smartgsmphone.com) +Smart: + regex: '(Coral 4)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Stylo +Stylo: + regex: 'STYLO|(?:TARISTAB[234]|Luna|CPE91|VS571|VS5502|S57_A[ZL]URE|INKOSI|Ithemba|S56 MIST|S55 Nova|S40_VISTA|S50_JADE|S64_ALPHA|S53_STARK|S40_LIFE|LIFE_2|S49[_ ](?:MONO|POISE|ECO))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'STYLO[ _](F1|Viva)' + model: '$1' + - regex: 'STYLO[ _]S9[_ ]TOPAZ' + model: 'S9 Topaz' + - regex: 'SV61 VECTOR\+' + model: 'SV61 Vector Plus' + - regex: 'SM61 MAGIC\+' + model: 'SM61 Magic Plus' + - regex: 'S57_AZURE' + model: 'S57 Azure' + - regex: 'S57_ALURE' + model: 'S57 Alure' + - regex: 'S56 MIST' + model: 'S56 Mist' + - regex: 'CPE91' + model: 'S54 Zen' + - regex: 'S55 Nova' + model: 'S55 Nova' + - regex: 'S40_VISTA' + model: 'S40 Vista' + - regex: 'S50_JADE' + model: 'S50 Jade' + - regex: 'Ithemba' + model: 'Ithemba' + - regex: 'S53_STARK' + model: 'S53 Stark' + - regex: 'S40_LIFE' + model: 'S40 Life' + - regex: 'LIFE_2' + model: 'Life 2' + - regex: 'S49[_ ]POISE' + model: 'S49 Poise' + - regex: 'S49[_ ]MONO' + model: 'S49 Mono' + - regex: 'S49[_ ]ECO' + model: 'S49 Eco' + - regex: 'S64_ALPHA' + model: 'S64 Alpha' + - regex: 'Luna' + model: 'Luna' + - regex: 'INKOSI' + model: 'Inkosi' + - regex: 'Stylo[_ ](521)' + model: '$1' + - regex: '(VS571|VS5502)' + model: '$1' + - regex: 'TARISTAB([2-4])' + device: 'tablet' + model: 'Taris Tab $1' + +# galaxy innovations or GI (www.galaxy-innovations.ru) +Galaxy Innovations: + regex: 'GI UNI2(?:[);/ ]|$)' + device: 'tv' + model: 'Uni 2' + +# Benzo +Benzo: + regex: '(Class S300 LTE)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Vexia (www.vexia.eu) +Vexia: + regex: '(Zippers Tab 10i 3G)' + device: 'tablet' + model: '$1' + +# HiMax (himaxmobilebd.com) +HiMax: + regex: ' HIMAX[_ ]' + device: 'smartphone' + models: + - regex: 'POLYMER( X)?' + model: 'Polymer$1' + - regex: 'HIMAX[_ ]PURE[_ ]3S' + model: 'Pure 3S' + +# Packard Bell (sub brand Acer www.packardbell.com) +Packard Bell: + regex: '(PB1009|M10[45]00|M7500|M7600-D|DAYTONA-G12|MONZA-T7)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'DAYTONA-G12' + device: 'smartphone' + model: 'Daytona G12' + - regex: 'MONZA-T7' + model: 'Monza T7' + - regex: '(PB1009|M10[45]00|M7500|M7600-D)(?:[);/ ]|$)' + model: '$1' + +# Qnet Mobile (qnetmobile.com) +Qnet Mobile: + regex: ' Passion[ _]P|Hynex plus|Stark K1|Hynex H[356]|Levin V[12]' + device: 'smartphone' + models: + - regex: 'Passion[ _](P[0-9]+)' + model: 'Passion $1' + - regex: 'Hynex plus( 2)?' + model: 'Hynex Plus$1' + - regex: 'Stark K1' + model: 'Stark K1' + - regex: 'Hynex (H[356])\+' + model: 'Hynex $1 Plus' + - regex: 'Hynex (H[35])' + model: 'Hynex $1' + - regex: 'Levin (V[12])' + model: 'Levin $1' + +# Bluebird (www.bluebirdcorp.com) +Bluebird: + regex: '(VF550|EF501R)(:_RU)?(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' # terminal + smartphone + +# Mara or MaraPhones (maraphones.com) +Mara: + regex: 'Mara(?: Phones)?[ _](Z1?|X1|S)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# BMAX (www.bmaxit.com) +BMAX: + regex: 'I10(Plus)?_EEA(?:[);/ ]|$)' + device: 'tablet' + model: 'MaxPad I10 $1' + +# Geotex (geotex.tv) +Geotex: + regex: '(GTX-R10i Pro)(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# DING DING +DING DING: + regex: 'DINGDING[ _-](SK\d)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Trident (www.trident.com.tr) +Trident: + regex: '(A23 Max)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# OKSI +OKSI: + regex: '(GEN-10)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Taiga System or TaigaPhone (taigaphone.ru) +Taiga System: + regex: '(?:TP_1_3000)(?:[);/ ]|$)' + device: 'smartphone' + model: 'TaigaPhone 1' + +# Glofiish (glofiish.ua) +Glofiish: + regex: '(?:Gpad_U)(?:[);/ ]|$)' + device: 'smartphone' + model: 'G Pad U' + +# Polar (polar.ru) +Polar: + regex: 'Polar[_ ](P24L51T2CSM|P40L33T2CSM)(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# Polarline (sub brand Polar) +PolarLine: + regex: 'PolarLine[_ ](32PL13TC-SM)(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# MyGica (www.mygica.com) +MyGica: + regex: 'MyGica[_ ]' + device: 'tv' + models: + - regex: 'HDR (Quad Core|Smart TV) Box' + model: 'HDR $1 Box' + - regex: 'Quad core Enjoy tv box' + model: 'Quad Core Enjoy TV Box' + - regex: 'ATV(19[60]0|495 Pro 16G)' + model: 'ATV$1' + +# Novex +Novex: + regex: '(NWX-40F171MSY)(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# Epson (epson.com) +Epson: + regex: 'Projector(?:[);/ ]|$)' + device: 'peripheral' + model: 'HA14A LCD Projector' # sti6200-d101 + +# Awow or AWOW +Awow: + regex: '(UTBook)' + device: 'tablet' + model: '$1' + +# Mitsui (www.diamond-electronics.com) +Mitsui: + regex: '(MC32020)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Gocomma +Gocomma: + regex: 'H1-C-ALADENG' + device: 'wearable' + model: 'W5' + +# LEMFO +LEMFO: + regex: '(LEM14)(?:[);/ ]|$)' + device: 'wearable' + model: '$1' + +# Urovo (en.urovo.com) +Urovo: + regex: '(?:DT[45]0)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: '(DT[45]0)' + device: 'peripheral' + model: '$1' + +# Neon IQ or NeonIQ +Neon IQ: + regex: '(?:NQT-(?:101|7)[34]GIQ|NQT-7W)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'NQT-101([34])GIQ' + model: 'Tab 10.1" $1G' + - regex: 'NQT-7([34])GIQ' + model: 'Tab 7" $1G' + - regex: 'NQT-7W' + model: 'Tab 7" WiFi' + +# Aocos +Aocos: + regex: 'AOCOS ([^);/]+)(?: Build|[);])' + device: 'tablet' + model: '$1' + +# Parrot Mobile +Parrot Mobile: + regex: '(Xplorer_2)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Bubblegum (bubblegumtablets.co.za) +Bubblegum: + regex: '(BUB6R-3T)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Erisson +Erisson: + regex: '(42FLEA73T2SM)(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# Liberton (liberton.ua) +Liberton: + regex: '((?:24|32)TP1HDTA1)(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# Soho Style +Soho Style: + regex: '(SS5214G)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Shivaki +Shivaki: + regex: 'STV[-_](40LED25S|40LED42S|32LED42S|32LED30C)(?:[);/ ]|$)' + device: 'tv' + model: 'STV-$1' + +# Meizu +Meizu: + regex: 'Meizu|MZ-(?!Fast)[A-Z]|(?<!POCO )(M04[05]|MZ-16th(?: Plus)?|MZ-16[st]|M7[12]1C|M35[1356]|M612C|M578CA|M181[36]|M1822|M681C|M6T|MX[ -]?[2345](?: Pro)?|(?:MZ-)?m[1-6] note|M621C|M1852|M57[18]C|M3[ESX]|M3 Max|M031|m1 metal|M1 E|(?<!Nubia |STELLAR )M2|M2 E|M5s Build|PRO [567]|PRO 7-[HS]| 15 Lite| 16th|MZ-15 (?:Lite|Plus)|15 Plus|MZ-16 X| 16 X| 16T|MX6|16s Pro)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(?:MZ-)?M571C' + device: 'phablet' + model: 'M2 Note' + - regex: '(?:MZ-|Meizu-)?m([1-6])[_ ]note(?:[);/ ]|$)' + device: 'phablet' + model: 'M$1 Note' + - regex: '(?:MZ-)?M1 E(?:[);/ ]|$)' + model: 'M1E' + - regex: 'M2 E(?:[);/ ]|$)' + model: 'M2E' + - regex: '(?:MZ-)?M578C[A]?|M2(?:[);/ ]|$)' + model: 'M2' + - regex: 'M681C(?:[);/ ]|$)' + model: 'M3 Note' + device: 'phablet' + - regex: 'M621C(?:[);/ ]|$)' + model: 'M5 Note' + device: 'phablet' + - regex: 'M711C(?:[);/ ]|$)' + model: 'M6' + - regex: 'M721C(?:[);/ ]|$)' + model: 'M6 Note' + device: 'phablet' + - regex: '(M6T|MX6|M3E|M3X)(?:[);/ ]|$)' + model: '$1' + - regex: '(?:MZ-)?M3S(?:[);/ ]|$)' + model: 'M3s' + - regex: '(?:MZ-)?M3 Max(?:[);/ ]|$)' + model: 'M3 Max' + - regex: 'M5S|M612C' + model: 'M5S' + - regex: '(M04[05]|MX[ -]?2)(?:[);/ ]|$)' + model: 'MX2' + - regex: '(M35[1356]|MX[ -]?3)(?:[);/ ]|$)' + model: 'MX3' + - regex: 'MX[ -]?4 Pro(?:[);/ ]|$)' + model: 'MX4 Pro' + - regex: 'MX[ -]?4(?:[);/ ]|$)' + model: 'MX4' + - regex: '(Meizu[- _])?MX[ -]?5(?:[);/ ]|$)' + model: 'MX5' + - regex: 'm1 metal' + model: 'M1 Metal' + - regex: 'M1813(?:[);/ ]|$)' + model: 'M8' + - regex: '(?:M1816|M8 lite)(?:[);/ ]|$)' + model: 'M8 Lite' + - regex: 'M8c Pro(?:[);/ ]|$)' + model: 'M8c Pro' + - regex: 'PRO 7-[HS](?:[);/ ]|$)' + model: 'PRO 7' + - regex: 'PRO ([76]) Plus(?:[);/ ]|$)' + model: 'PRO $1 Plus' + - regex: 'PRO ([567])' + model: 'PRO $1' + - regex: 'M031(?:[);/ ]|$)' + model: 'MX Dual Core' + - regex: 'M1852(?:[);/ ]|$)' + model: 'X8' + - regex: 'M1822(?:[);/ ]|$)' + model: 'Note 8' + - regex: '(?:MZ-)?16T(?:[);/ ]|$)' + model: '16T' + - regex: '(?:MZ-)?16th Plus(?:[);/ ]|$)' + model: '16th Plus' + - regex: '(?:MZ-)?15 Plus(?:[);/ ]|$)' + model: '15 Plus' + - regex: '(?:MZ-15 Lite| 15 Lite)(?:[);/ ]|$)' + model: '15 Lite' + - regex: 'MZ-16th| 16th(?:[);/ ]|$)' + model: '16th' + - regex: '(?:MZ-)?16 X(?:[);/ ]|$)' + model: '16X' + - regex: '(?:MZ-)?16s Pro(?:[);/ ]|$)' + model: '16s Pro' + - regex: 'meizu (17|C9) Pro(?:[);/ ]|$)' + model: '$1 Pro' + - regex: 'MZ-?M3(?:[);/ ]|$)' + model: 'M3' + - regex: '(?:Meizu[_ ])?note([89])(?:[);/ ]|$)' + device: 'phablet' + model: 'Note $1' + + - regex: '(?:MZ-)?Meizu[_ ]([^/;]+) Build' + model: '$1' + - regex: '(?:MZ-)?Meizu[_ ]([a-z0-9_]+)' + model: '$1' + - regex: 'MZ-([^/;]+) Build' + model: '$1' + +# Atmaca Elektronik (http://www.atmacaelektronik.com.tr/) +Atmaca Elektronik: + regex: 'ATMACA_' + device: 'tv' + model: '' + +# Atvio +Atvio: + regex: '(100011886BK)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Alps +Alps: + regex: '(?:FF-5000|ZQ8003)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: '(FF-5000)' # for Ford Mustang (FFKJ) + device: 'car browser' + model: '$1' + - regex: '(ZQ8003)' + device: 'car browser' + model: '$1' + +# Starwind (starwind.com.ru) +Starwind: + regex: 'Smart_Starwind' + device: 'tv' + model: '' + +# QTECH (https://www.qtech.ru/en/) +QTECH: + regex: '(QMP_K8)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Prology (www.prology.ru) +Prology: + regex: '(MPC-(?:[57]0|65)|MPC-110DSP)(?:[);/ ]|$)' + device: 'car browser' + model: '$1' + +# Polestar (polestar.com) +Polestar: + regex: 'Polestar(?:[);/ ]|$)' + device: 'car browser' + model: '' + +# Porsche (porsche.com) +Porsche: + regex: 'Porsche Rear Seat Entertainment' + device: 'car browser' + model: '' + +# NavRoad (navroad.com) +NavRoad: + regex: '(?:NEXO (?:Smarty|handy|SMART DUO|Evo)|MOVIO 2)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Nexo Smarty' + model: 'Nexo Smarty' + - regex: 'Nexo handy' + model: 'Nexo Handy' + - regex: 'NEXO SMART DUO' + device: 'tablet' + model: 'Nexo Smart Duo' + - regex: 'NEXO EVO' + device: 'tablet' + model: 'Nexo Evo' + - regex: 'MOVIO 2' + device: 'tablet' + model: 'Movio 2' + +# Smarty (smarty.by) +Smarty: + regex: 'Smarty[_ ]' + device: 'tablet' + models: + - regex: 'Mini ?(7L?)' + model: 'Mini $1' + - regex: 'Maxi 10L' + model: 'Maxi 10L' + +# Leff +Leff: + regex: '(32H520T)(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# DF or DFGroup (dfgroup.ru) +DF: + regex: '(?:JAGUAR|SATURN|TIGER|PUMA)-0\dC?(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'JAGUAR-01' + model: 'Jaguar 01' + - regex: 'SATURN-(02C?)' + model: 'Saturn $1' + - regex: 'TIGER-01' + model: 'Tiger 01' + - regex: 'PUMA-01' + model: 'Puma 01' + +# BDQ or BDQ Mobile (bdqholdings.co.mz) +BDQ: + regex: '(?:SMART_B19|Destiny)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'SMART_B19' + model: 'Smart B19' + - regex: 'Destiny' + device: 'tablet' + model: 'Destiny' + +# TuCEL +TuCEL: + regex: '(TL554B|TC504B)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# FEONAL +FEONAL: + regex: '(K118)_EEA(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Sunmi (www.sunmi.com) +Sunmi: + regex: '(?:V1s-G|T2s_LITE)(?:[);/ ]|$)' + device: 'peripheral' + models: + - regex: 'T2s_LITE(?:[);/ ]|$)' # monoblock and terminal + device: 'smart display' + model: 'T2s Lite' + - regex: '(V1s)-G' + model: '$1' + +# iData (idataglobal.com) +iData: + regex: 'iData (K1)' + device: 'peripheral' + model: '$1' + +# AIDATA +AIDATA: + regex: '(?:AIDATA ELDE 10 TABLET|ADT_?1061(?:_1)?)(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'ADT_?1061(?:_1)?' + model: 'ADT 1061' + - regex: 'ELDE 10' + model: 'ELDE 10' + +# Ematic (ematic.us) +Ematic: + regex: '(EGQ101)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# GLONYX +GLONYX: + regex: 'Quartz(T10-3)(?:[);/ ]|$)' + device: 'tablet' + model: 'Quartz $1' + +# Zyrex +Zyrex: + regex: 'ZT216' + device: 'tablet' + model: 'ZT216' + +# Orbita or Orbit +Orbita: + regex: '(OT-DVB\d{2})(?:[);/ ]|$)' + device: 'tv' + model: '$1' + +# TAG Tech or TAG-Tech or Talal Abu-Ghazaleh Global (www.tagtech.global) +TAG Tech: + regex: 'TAG[ -]TAB[ -]III?(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'TAG[ -]TAB[ -](III?)' + model: 'Tab $1' + +# DUNNS Mobile or DUNNS +DUNNS Mobile: + regex: 'DUNNS[ _]' + device: 'smartphone' + models: + - regex: 'DUNNS[ _](?:MOBILE[ _])?(703GDC|AT1001)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Amino or Aminocom (www.amino.tv) +Amino: + regex: '(?:Amigo7x?(?:YUF|SCB)?)(?:[);/ ]|$)' + device: 'tv' + models: + - regex: 'Amigo7x' + model: 'Amigo 7x' + - regex: 'Amigo7' + model: 'Amigo 7' + +# Saiet (acquistaonline.saiet.it) +Saiet: + regex: '(?:STS570)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: '(STS570)' + model: 'Sicuro Smart $1' + +# Magicsee (magicsees.com) +Magicsee: + regex: 'N5NOVA(?:[);/ ]|$)' + device: 'tv' + model: 'N5 Nova' + +# Obabox (www.obabox.com.br) +Obabox: + regex: '(?:OBA_?(?:SMART_3|Conecta_Max|Conecta_4G))(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'OBASMART_3' + model: 'Smart 3' + - regex: 'OBA_(Conecta_(?:Max|4G))' + model: '$1' + +# iKon (ikonhome.com) +iKon: + regex: '(IK-102[58]|IK-1106|IK-7108|IK-787)(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# IRA or IRA (explore more) (wishtel.com) +IRA: + regex: 'IRA_DUO(?:[);/ ]|$)' + device: 'tablet' + model: 'Duo Tablet' + +# Microtech (microtech.store) +Microtech: + regex: '(?:ETL101AL)(?:[);/ ]|$)' + device: 'tablet' + model: 'E-Tab LTE' + +# Gplus (gpluselectronics.com) +Gplus: + regex: 'Gplus ([ZXP]10|N809)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Eurocase (eurocase.com) +Eurocase: + regex: '(EUTB_758G?)' + device: 'tablet' + models: + - regex: 'EUTB_758G_TABI_Argos_KIDS' + model: 'TABI Argos Kids 758G' + +# VEON +VEON: + regex: 'VEON[_ ](C8680)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# FiGi (figi-mobile.com) +FiGi: + regex: 'Note_(?:[37]|11)_Pro(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'Note_([37]|11)_Pro' + device: 'phablet' + model: 'Note $1 Pro' + +# iSafe Mobile or i.safe (www.isafe-mobile.com) +iSafe Mobile: + regex: '(IS655)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1.RG' + +# Tigers +Tigers: + regex: 'TIS001[_-]' + decice: 'smartphone' + models: + - regex: 'TIS001[_-]S([34])(?:[);/ ]|$)' + model: 'TIS001 S$1' + - regex: 'TIS001[_-]T2(?:[);/ ]|$)' + model: 'TIS001 T2' + +# Redfox (redfox.global) +Redfox: + regex: '(?:Wizpad_)?Valuer_V8' + decice: 'tablet' + models: + - regex: '(?:Wizpad_)?Valuer_V8' + model: 'Wizpad Valuer V8' + +# Vinabox (vinabox.tv) +Vinabox: + regex: 'Vinabox' + device: 'tv' + models: + - regex: 'Vinabox[_ ]([^/;)]+)(?: Build|[);])' + model: '$1' + +# Vios +Vios: + regex: 'VMP0617' + decice: 'smartphone' + models: + - regex: 'VMP0617(?:[);/ ]|$)' + model: 'VMP0617' + +# Beista +Beista: + regex: '(X104)-EEA(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# YOTOPT (www.yotopt.com) +YOTOPT: + regex: '(Y103)_EEA(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# Ookee +Ookee: + regex: 'OokeeOne' + device: 'smartphone' + model: 'One' + +# TOSCIDO (www.toscido.com) +TOSCIDO: + regex: '(T12|T151)-EEA(?:[);/ ]|$)' + device: 'tablet' + model: '$1' + +# b2m: +b2m: + regex: 'Decade 53(?:[);/ ]|$)' + device: 'smartphone' + model: 'Decade 53' + +# Koslam +Koslam: + regex: '(KL1071Z|KL1084)' + device: 'tablet' + model: '$1' + +# S2Tel +S2Tel: + regex: 'S2TEL[ _-]' + device: 'smartphone' + models: + - regex: 'S2TEL-(Q8)' + device: 'tablet' + model: '$1' + +# Massgo +Massgo: + regex: 'Massgo[ _]' + device: 'smartphone' + models: + - regex: 'Massgo[ _]VI2S' + model: 'Vi2 S' + - regex: 'Massgo[ _]([^/;)]+)(?: Build|[);])' + model: '$1' + +# Angelcare +Angelcare: + regex: 'angelcare[ _]' + device: 'smartphone' + models: + - regex: 'F20 ?pro' + model: 'F20 Pro' + - regex: 'angelcare[ _]([^/;)]+)(?: Build|[);])' + model: '$1' + +# iPEGTOP +iPEGTOP: + regex: 'IPEGTOP' + device: 'smartphone' + models: + - regex: 'iPEGTOP[ _](Z26)' + model: '$1' + +# Jedi +Jedi: + regex: 'Remix (?:Pro|Mini)' + device: 'desktop' + models: + - regex: 'Remix Pro' + device: 'tablet' + model: 'Remix Pro' + - regex: 'Remix Mini' + model: 'Remix Mini' + +# Technopc (en.technopc.com.tr) +Technopc: + regex: 'UP10SI[34]6LA(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: '(UP10SI[34]6LA)' + model: 'UltraPad $1' + +# OMIX or OMIX Mobile (omixmobile.com) +OMIX: + regex: 'OMIX[ _]' + device: 'smartphone' + models: + - regex: 'X(\d*)' + model: 'X$1' + +# Nexa +Nexa: + regex: 'Nexa[ _](?:Atlas|Vega N1)' + device: 'smartphone' + models: + - regex: 'Nexa[ _](Vega N1)' + model: '$1' + - regex: 'Nexa[ _](Atlas)' + device: 'tablet' + model: '$1' + +# Onkyo (eu.onkyo.com) +Onkyo: + regex: '(DP-CMX1)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Royole (global.royole.com) +Royole: + regex: 'Royole' + device: 'tablet' + models: + - regex: 'FlexPai 2' + model: 'FlexPai 2' + - regex: 'FlexPai' + model: 'FlexPai' + +# DORLAND (dorland-tech.com/) +DORLAND: + regex: '(Aloha_5G)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Hamlet +Hamlet: + regex: 'Hamlet[ _]' + device: 'tablet' + models: + - regex: '(?:Hamlet[ _])?XZPAD(412W)' + model: 'Zelig Pad $1' + +# Vorcom +Vorcom: + regex: 'SXPro(?:[);/ ]|$)' + device: 'tablet' + models: + - regex: 'SXPro' + model: 'SX Pro' + +# UNNO +UNNO: + regex: 'UNNO[_ ]' + device: 'smartphone' + models: + - regex: 'UNNO[_ ]([^/;)]+)(?: Build|[);])' + model: '$1' + +# VDVD +VDVD: + regex: 'VDVD[_ ](P20|IX21)(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Autan +Autan: + regex: 'R2021W2(?:[);/ ]|$)' + device: 'wearable' + models: + - regex: '(R2021W2)' # Shenzhen Le Dai Technology + model: '$1' + +# ecom Pepperl+Fuchs +ecom: + regex: '(Smart-Ex02|Ex-Handy 10)(?: (?:ROW|RUS))?(?:[);/ ]|$)' + device: 'smartphone' + model: '$1' + +# Devices with undectable brand, but detectable model +Unknown: + regex: 'Plasma Mobile|WebTV/(\d+\.\d+)|(?:M10 Ultra|FO-R15|TVBOX|Smart[ _]?TV|SmartATV|M8S\+ 4K|PCBox|rk3368-box|H10 PLAY|Smart AIO TV|TVBOX_L|L-BOX|TVBOX-5G|mips.+(?:Opera TV|wireless|wired)|smartbox)(?:[);/ ]|$)' + device: 'smartphone' + models: + - regex: 'WebTV/(\d+\.\d+)' + device: 'tv' + model: 'Web TV' + - regex: 'M10 Ultra(?:[);/ ]|$)' + device: 'phablet' + model: 'M10 Ultra' # clone xiaomi m10 ultra + - regex: 'FO-R15(?:[);/ ]|$)' + device: 'tv' + model: 'FO-R15' + - regex: '(Smart[ _]?TV|SmartATV|PCBox|rk3368-box|TVBOX|Smart AIO TV|TVBOX_L|L-BOX|TVBOX-5G)(?:[);/ ]|$)' + device: 'tv' + model: '' + - regex: 'M8S\+ 4K(?:[);/ ]|$)' + device: 'tv' + model: 'M8S+ 4K' + - regex: 'H10 PLAY(?:[);/ ]|$)' + device: 'tv' + model: 'H10 Play' + - regex: '(?:Opera TV|wireless|wired|smartbox)(?:[);/ ]|$)' + device: 'tv' + model: '' diff --git a/priv/ua_inspector/device.portable_media_player.yml b/priv/ua_inspector/device.portable_media_player.yml index 3972fe97f197a9d8c11e3672d0a77c367d50a6e4..d55a515d05aff4ea00cb5b8b102d67987dbea98c 100644 --- a/priv/ua_inspector/device.portable_media_player.yml +++ b/priv/ua_inspector/device.portable_media_player.yml @@ -9,18 +9,20 @@ Apple: regex: '(?:Apple-)?iPod' device: 'portable media player' models: - - regex: '(?:Apple-)?iPod1[C,]1' + - regex: '(?:Apple-)?iPod1[C,_]?1' model: 'iPod Touch 1G' - - regex: '(?:Apple-)?iPod2[C,]1' + - regex: '(?:Apple-)?iPod2[C,_]?1' model: 'iPod Touch 2G' - - regex: '(?:Apple-)?iPod3[C,]1' + - regex: '(?:Apple-)?iPod3[C,_]?1' model: 'iPod Touch 3' - - regex: '(?:Apple-)?iPod4[C,]1' + - regex: '(?:Apple-)?iPod4[C,_]?1' model: 'iPod Touch 4' - - regex: '(?:Apple-)?iPod5[C,]1' + - regex: '(?:Apple-)?iPod5[C,_]?1' model: 'iPod Touch 5' - - regex: '(?:Apple-)?iPod7[C,]1' + - regex: '(?:Apple-)?iPod7[C,_]?1' model: 'iPod Touch 6' + - regex: '(?:Apple-)?iPod9[C,_]?1' + model: 'iPod Touch 7' - regex: '(?:Apple-)?iPod' model: 'iPod Touch' @@ -29,14 +31,24 @@ Cowon: device: 'portable media player' model: '$1' +# FiiO (https://www.fiio.com/) +FiiO: + regex: 'FiiO' + device: 'portable media player' + models: + - regex: 'M11 Plus LTD' + model: 'M11 Plus LTD' + - regex: 'M(1[57])' + model: 'M$1' + Microsoft: regex: 'Microsoft ZuneHD' device: 'portable media player' model: 'Zune HD' Panasonic: - device: 'portable media player' regex: '(SV-MV100)' + device: 'portable media player' model: '$1' Samsung: @@ -52,8 +64,33 @@ Samsung: - regex: 'YP-GI1' model: 'Galaxy Player 4.2' - regex: 'YP-GP1' - model: 'Galaxy Player 5.8 ' + model: 'Galaxy Player 5.8' - regex: 'YP-G50' model: 'Galaxy Player 50' - regex: 'YP-GB70D' - model: 'Galaxy Player 70 Plus' \ No newline at end of file + model: 'Galaxy Player 70 Plus' + +Wizz: + regex: '(DV-PTB1080)(?:[);/ ]|$)' + device: 'portable media player' + model: '$1' + +# Sonos (sonos.com) +SONOS: + regex: 'Sonos/.+\((?:ZP.+)\)|Sonos;' + device: 'portable media player' + models: + - regex: '\((ZPS(?:[13569]|1[1-578]|2[03])|ZP90)\)' + model: '$1' + - regex: 'Sonos;Play5;' + model: 'Play:5' + - regex: 'Sonos;One;' + model: 'One' + +# Shanling +Shanling: + regex: 'Shanling M6' + device: 'portable media player' + models: + - regex: 'Shanling (M6\(21\))' + model: '$1' diff --git a/priv/ua_inspector/device.shell_tv.yml b/priv/ua_inspector/device.shell_tv.yml new file mode 100644 index 0000000000000000000000000000000000000000..94db4119af009613377bfab0744af7d04af4b078 --- /dev/null +++ b/priv/ua_inspector/device.shell_tv.yml @@ -0,0 +1,117 @@ +############### +# Device Detector - The Universal Device Detection library for parsing User Agents +# +# @link https://matomo.org +# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later +# +# ATTENTION: This file may only include tv user agents that contain '[a-z]+[ _]Shell[ _]\w{6}' +# +############### + +# Telefunken +Telefunken: + regex: 'Telefunken Shell' + device: 'tv' + model: '' + +# JVC +JVC: + regex: 'JVC Shell' + device: 'tv' + model: '' + +# Leff +Leff: + regex: 'Leff Shell' + device: 'tv' + model: '' + +# Leben +Leben: + regex: 'Leben Shell' + device: 'tv' + model: '' + +# Lumus +Lumus: + regex: 'LUMUS Shell' + device: 'tv' + model: '' + +# Erisson +Erisson: + regex: 'Erisson[_ ]Shell' + device: 'tv' + model: '' + +# BBK +BBK: + regex: 'BBK shell' + device: 'tv' + model: '' + +# Novex +Novex: + regex: 'Novex shell' + device: 'tv' + model: '' + +# Digma +Digma: + regex: 'Digma Shell' + device: 'tv' + model: '' + +# AMCV +AMCV: + regex: 'AMCV Shell' + device: 'tv' + model: '' + +# Mystery +Mystery: + regex: 'Mystery Shell' + device: 'tv' + model: '' + +# ECON (econ.su) +ECON: + regex: 'ECON Shell' + device: 'tv' + model: '' + +# Starwind (starwind.com.ru) +Starwind: + regex: 'Starwind Shell' + device: 'tv' + model: '' + +# Kvant (tvkvant.ru) +Kvant: + regex: 'Kvant Shell' + device: 'tv' + model: '' + +# Hi +Hi: + regex: 'Hi Shell' + device: 'tv' + model: '' + +# AKIRA (myakira.com) +AKIRA: + regex: 'AKIRA Shell' + device: 'tv' + model: '' + +# Loview +Loview: + regex: 'Loview Shell' + device: 'tv' + model: '' + +# Yuno (yuno.bbk.ru) +Yuno: + regex: 'Yuno Shell' + device: 'tv' + model: '' diff --git a/priv/ua_inspector/device.televisions.yml b/priv/ua_inspector/device.televisions.yml index ca9963ca487da00eff60e8555c683a5de5c1fca9..ec3f06a3024b51e4ae82186003391bcbe6ba0a73 100644 --- a/priv/ua_inspector/device.televisions.yml +++ b/priv/ua_inspector/device.televisions.yml @@ -16,6 +16,20 @@ Airties: - regex: 'Airties; ?([^);/]+)' model: '$1' +# ALDI NORD +'ALDI NORD': + regex: 'ALDINORD[;,]' + device: 'tv' + model: '' + +# ALDI SÜD +'ALDI SÜD': + regex: 'ALDISUED[;,]' + device: 'tv' + models: + - regex: 'ALDISUED, ([a-z0-9_ \-]+), (?:wired|wireless)' + model: '' + # Altech UEC 'Altech UEC': regex: 'Altech UEC' @@ -24,12 +38,56 @@ Airties: - regex: 'Altech UEC; ?([^);/]+)' model: '$1' +# AOC +AOC: + regex: 'AOC' + device: 'tv' + models: + - regex: '(LE43S5970-20|S50856)' + model: '$1' + +# ARRIS +ARRIS: + regex: 'ARRIS[;,]' + device: 'tv' + models: + - regex: 'FS-ARS-01B' + model: 'FS-ARS-01B' + +# Atvio +Atvio: + regex: 'ATVIO' + device: 'tv' + models: + - regex: '55D1620' + model: '55D1620' + # BangOlufsen BangOlufsen: regex: 'Bangolufsen' device: 'tv' model: 'BeoVision' +# Blaupunkt +Blaupunkt: + regex: 'Blaupunkt_UMC[;,]' + device: 'tv' + models: + - regex: 'LC-65CUG8052E' + model: 'LC-65CUG8052E' + +# Bush +Bush: + regex: 'BUSH[;,]' + device: 'tv' + model: '' + +# Celcus +Celcus: + regex: 'CELCUS[;,]' + device: 'tv' + model: '' + # Changhong Changhong: regex: 'Changhong' @@ -44,47 +102,149 @@ CreNova: device: 'tv' model: 'CNV001' +# Digihome +Digihome: + regex: 'DIGIHOME[;,]' + device: 'tv' + model: '' + # DMM DMM: regex: 'DMM' device: 'tv' model: 'Dreambox' +# ELECTRONIA +ELECTRONIA: + regex: 'ELECTRONIA[;,]' + device: 'tv' + model: '' + +# Essentielb +Essentielb: + regex: 'ESSENTIELB[;,]' + device: 'tv' + model: '' + +# Finlux +Finlux: + regex: 'FINLUX[;,]' + device: 'tv' + model: '' + +# F&U (https://www.fandu.gr/) +'F&U': + regex: 'FU[;,]' + device: 'tv' + model: '' + +# Fuego +Fuego: + regex: 'FUEGO[;,]' + device: 'tv' + model: '' + +# GoGEN (https://www.gogen.cz/) +GoGEN: + regex: 'GOGEN[;,]' + device: 'tv' + model: '' + # Grundig Grundig: regex: '(OWB|Grundig|Arcelik)' device: 'tv' + models: + - regex: 'G7' + model: 'G7' + +# Haier +Haier: + regex: '(?:HHW_)?HAIER' + device: 'tv' + models: + - regex: 'LE55X7000U' + model: 'LE55X7000U' + +# Hi-Level +Hi-Level: + regex: 'HI-LEVEL[;,]' + device: 'tv' model: '' # Hisense Hisense: - regex: 'Hisense' + regex: 'Hisense|Eurofins_Digital_Testing' device: 'tv' models: + - regex: '50ADEVTOOL' + model: '50ADEVTOOL' + - regex: '50A683FEVS' + model: '50A683FEVS' + - regex: '55A6100EE' + model: '55A6100EE' + - regex: '55U62QGAVT' + model: '55U62QGAVT' + - regex: '50A6502EA' + model: '50A6502EA' + - regex: 'MICALIDVB6886' + model: 'MICALIDVB6886' - regex: '(L[A-Z]{2,3}[0-9]{2}[A-Z][0-9]{3,4}[A-Z]{0,6}[0-9]?[A-Z]?)' model: '$1' - regex: '(H[A-Z]?[0-9]{2}[A-Z][0-9]{3,4}[A-Z]{0,4})' model: '$1' +# Hitachi +Hitachi: + regex: 'Hitachi[;,]' + device: 'tv' + models: + - regex: '49D2900' + model: '49D2900' + +# Horizon +Horizon: + regex: 'HORIZON[;,]' + device: 'tv' + model: '' + +# Hotel +Hotel: + regex: 'HOTEL[;,]' + device: 'tv' + model: '' + # Humax Humax: - regex: 'Humax' + regex: 'Humax|hdr1000s' device: 'tv' models: - regex: '(HD-FOX C|HD (FOX\+|NANO)|iCord (HD\+|MINI|Cable)|(CX|IR)HD-5100(C|S)|HM9503HD)' model: '$1' - regex: 'HMS1000S' model: 'HMS-1000S' + - regex: 'FVP4000T' + model: 'FVP-4000T' + - regex: 'HGS1000S' + model: 'HGS-1000S' + - regex: 'HDR1000S' + model: 'HDR-1000S' + - regex: 'HDR4000T' + model: 'HDR-4000T' - regex: 'Humax; ([^);/]+)' model: '$1' +# Hyundai +Hyundai: + regex: 'HYUNDAI[;,]' + device: 'tv' + model: '' + # IKEA Ikea: regex: 'Ikea' device: 'tv' - models: - - regex: '(LF1V[0-9]{3})' - model: '$1' + model: '' # Intek Intek: @@ -104,17 +264,83 @@ Inverto: - regex: '(Volksbox Web Edition|Volksbox Essential|Volksbox II|Volksbox)' model: '$1' +# JVC +JVC: + regex: 'AFTSO001|JVC[;,]' + device: 'tv' + models: + - regex: 'AFTSO001' + model: '4K (2019)' + +# Kalley +Kalley: + regex: 'KALLEY[;,]' + device: 'tv' + models: + - regex: '32D1620' + model: '32D1620' + +# KUBO +KUBO: + regex: 'KUBO[;,]' + device: 'tv' + model: '' + +# Laurus +Laurus: + regex: 'LAURUS[;,]' + device: 'tv' + model: '' + # LG LG: regex: 'LGE' device: 'tv' models: + - regex: 'XU43WT180N' + model: 'XU43WT180N' + - regex: '43LJ614V-ZA' + model: '43LJ614V-ZA' + - regex: '55SK850V-ZA' + model: '55SK850V-ZA' + - regex: 'KEY0000213F1z' + model: 'KEY0000213F1z' + - regex: 'KEY0000213F' + model: 'KEY0000213F' + - regex: 'KEY000000(2E|2F|3B|3F)' + model: 'KEY000000$1' - regex: '(NetCast [0-9]{1}.[0-9]{1}|GLOBAL_PLAT3)' model: '$1' + - regex: '(OLED[0-9]{2}[A-Z0-9]{3}[A-Z]{2})' + model: '$1' - regex: '(OLED[0-9]{2}[A-Z][0-9][A-Z])' model: '$1' + - regex: '(OLED[0-9]{2}[A-Z0-9]{2})' + model: '$1' + - regex: '([0-9]{2}[A-Z]{2}[0-9]{4}[A-Z0-9]{1}[A-Z]{2})' + model: '$1' + - regex: '([0-9]{2}NANO[0-9]{3}[A-Z]{2})' + model: '$1' + - regex: '([0-9]{2}NANO[0-9]{2})' + model: '$1' - regex: 'LGE;? ?([0-9]{2}[A-Z]{2}[0-9]{2,4}[A-Z]?)' model: '$1' + - regex: 'LM21U' + model: 'LM21U' + - regex: '32LM' + model: '32LM' + +# Lifemaxx +Lifemaxx: + regex: 'Lifemaxx[;,]' + device: 'tv' + model: '' + +# Linsar +Linsar: + regex: 'LINSAR[;,]' + device: 'tv' + model: '' # Loewe Loewe: @@ -124,9 +350,23 @@ Loewe: - regex: '([A-Z]{2}[0-9]{3})' model: '$1' +# Luxor +Luxor: + regex: 'LUXOR[;,]' + device: 'tv' + model: '' + +# Manhattan (https://manhattan-tv.com/) +Manhattan: + regex: 'Manhattan' + device: 'tv' + models: + - regex: 'T3' + model: 'T3' + # MediaTek MediaTek: - regex: 'MTK' + regex: 'MTK|MediaTek;' device: 'tv' models: - regex: '(MT[0-9]{4})' @@ -137,8 +377,38 @@ Medion: regex: 'Medion' device: 'tv' models: - - regex: '(MB[0-9]{2})' - model: '$1' + - regex: 'MEDION, ([a-z0-9_ \-]+), (?:wired|wireless)' + model: '' + +# Miray +Miray: + regex: 'MIRAY' + device: 'tv' + models: + - regex: 'LEDM-322NIP' + model: 'LEDM-322NIP' + +# MStar +MStar: + regex: 'MStar[;,]' + device: 'tv' + models: + - regex: '([24])KTV18' + model: '$1KTV18' + +# MTC +MTC: + regex: 'MTC[;,]' + device: 'tv' + models: + - regex: '([24])K_Android_TV_V01' + model: '$1K Android TV' + +# Nordmende +Nordmende: + regex: 'NORDMENDE[;,]' + device: 'tv' + model: '' # Metz Metz: @@ -146,23 +416,31 @@ Metz: device: 'tv' model: '' +# Ok +Ok: + regex: 'OK[;,]' + device: 'tv' + model: '' + # Panasonic Panasonic: regex: 'Panasonic' device: 'tv' models: - - regex: '(VIERA [0-9]{1,4})|(DIGA [A-Z]{1}[0-9]{4})' + - regex: 'VIERA (201[1-9])' + model: 'VIERA ($1)' + - regex: '(DIGA [A-Z]{1}[0-9]{4})' model: '$1' - regex: 'DIGA Webkit ([A-Z]{1}[0-9]{4})' model: 'DIGA $1' + - regex: 'SmartTV(201[89]|202[0-1])' + model: 'Smart TV ($1)' # PEAQ PEAQ: regex: 'PEAQ' device: 'tv' - models: - - regex: '(LF1V[0-9]{3})' - model: '$1' + model: '' # Philips Philips: @@ -174,15 +452,69 @@ Philips: - regex: 'NETTV/[0-9\.]{5}' model: 'NetTV Series' +# Polaroid +Polaroid: + regex: 'POLAROID[;,]' + device: 'tv' + model: '' + +# PROFiLO +PROFiLO: + regex: 'PROFILO[;,]' + device: 'tv' + model: '' + +# Qilive +Qilive: + regex: 'QILIVE[;,]' + device: 'tv' + model: '' + +# REGAL +REGAL: + regex: 'REGAL[;,]' + device: 'tv' + model: '' + +# Saba +Saba: + regex: 'Saba[;,]' + device: 'tv' + model: '' + +# Salora +Salora: + regex: 'Salora[;,]' + device: 'tv' + model: '' + # Samsung Samsung: regex: 'Samsung|Maple_2011' device: 'tv' models: - - regex: 'SmartTV(201[2-9])' - model: 'Smart TV $1' + - regex: 'SmartTV(201[2-9]|202[0-1]):([^);/]+)' + model: '$2' + - regex: 'SmartTV(201[2-9]|202[0-1])' + model: 'Smart TV ($1)' - regex: 'Maple_2011' - model: 'Smart TV 2011' + model: 'Smart TV (2011)' + +# SCBC +SCBC: + regex: 'SCBC[;,]' + device: 'tv' + models: + - regex: 'SCBC586' + model: 'SCBC586' + - regex: '43D1850' + model: '43D1850' + +# SEG +SEG: + regex: 'SEG[;,]' + device: 'tv' + model: '' # Selevision Selevision: @@ -196,13 +528,19 @@ Selevision: # Sharp Sharp: - regex: 'Sharp' + regex: '(?:UMC-)?Sharp' device: 'tv' models: + - regex: 'SHARP, ([a-z0-9_ \-]+), (?:wired|wireless)' + model: '' - regex: 'Sharp[,;] ?((?! |HbbTV)[^),;/]+)' model: '$1' - regex: '(LE[0-9]{3}[A-Z]{0,3})' model: '$1' + - regex: 'LC-([^);/]+)' + model: 'LC-$1' + - regex: 'BLA-43' + model: 'BLA-43' # Skyworth Skyworth: @@ -212,9 +550,9 @@ Skyworth: - regex: 'Sky_worth;([^);/]+)' model: '$1' -# Smart -Smart: - regex: 'Smart[^a-z]' +# Smart Electronic +Smart Electronic: + regex: 'Smart[;,]' device: 'tv' models: - regex: 'Smart; ([^);/]+)' @@ -227,9 +565,49 @@ Sony: regex: 'Sony' device: 'tv' models: + - regex: 'KDL-GR1' + model: 'KDL-GR1' + - regex: 'KDL-GN([56])' + model: 'KDL-GN$1' + - regex: 'BRAVIA (VH1|4K VH2)' + model: 'BRAVIA $1' + - regex: '(KDL?-?[0-9]{2}[A-Z]{1}[0-9]{4}[A-Z]{1})' + model: '$1' + - regex: '(KDL?-?[0-9]{2}[A-Z]{1}[0-9]{3}[A-Z]{1})' + model: '$1' - regex: '(KDL?-?[0-9]{2}[A-Z]{1,2}[0-9]{1,5})' model: '$1' +# SWTV +SWTV: + regex: 'SWTV[;,]' + device: 'tv' + models: + - regex: 'SKWE20E21' + model: 'SKWE20E21' + +# TD Systems +'TD Systems': + regex: 'TDSystems[;,]' + device: 'tv' + models: + - regex: 'SmartTV(2019|2020)' + model: 'Smart TV ($1)' + +# Technicolor +Technicolor: + regex: 'Technicolor' + device: 'tv' + models: + - regex: 'uzw4054ttg' + model: 'UZW4054TTG' + +# Technika +Technika: + regex: 'TECHNIKA[;,]' + device: 'tv' + model: '' + # TechniSat TechniSat: regex: 'TechniSat' @@ -246,21 +624,24 @@ TechnoTrend: - regex: '([A-Z]{1}-[0-9]{3})' model: '$1' +# Techwood +Techwood: + regex: 'Techwood[;,]' + device: 'tv' + model: '' + # Telefunken Telefunken: regex: 'Telefunken' device: 'tv' - models: - - regex: '(MB[0-9]{2})' - model: '$1' + model: '' + # TCL TCL: regex: 'TCL' device: 'tv' models: - - regex: '(32D1820)' - model: '$1' - - regex: '(LF1V[0-9]{3})' + - regex: '(32D1820|(?:39|55)D2900|32D2930|(?:32|43)S4900)' model: '$1' # Thomson @@ -280,25 +661,27 @@ Thomson: model: '$1 49.0"' - regex: '(T55D18[SD]FS-01B)' model: '$1 55.0"' - - regex: '(LF1V[0-9]{3})' - model: '$1' + - regex: '40FB5426' + model: '40FB5426' + +# TOKYO +TOKYO: + regex: 'TOKYO[;,]' + device: 'tv' + models: + - regex: 'TOKTCLED32S' + model: 'TOKTCLED32S' # Toshiba Toshiba: regex: 'Toshiba' device: 'tv' models: + - regex: '40L2600' + model: '40L2600' - regex: '(([0-9]{2}|DTV_)[A-Z]{2}[0-9]{1,3})' model: '$1' -# Vestel -Vestel: - regex: 'Vestel' - device: 'tv' - models: - - regex: '(MB[0-9]{2})' - model: '$1' - # Videoweb Videoweb: regex: 'videoweb|tv2n' @@ -307,4 +690,34 @@ Videoweb: - regex: '(tv2n)' model: '$1' - regex: '(videowebtv)' - model: 'VideoWeb TV' \ No newline at end of file + model: 'VideoWeb TV' + +# VOX (https://www.voxelectronics.com/) +VOX: + regex: 'VOX[;,]' + device: 'tv' + model: '' + +# WELLINGTON +WELLINGTON: + regex: 'WELLINGTON[;,]' + device: 'tv' + model: '' + +# X.Vision +X.Vision: + regex: 'X-VISION[;,]' + device: 'tv' + model: '' + +# Vestel +Vestel: + regex: '(?:Vestel.+VESTEL|VESTEL;)' + device: 'tv' + model: '' + +# Unknown +Unknown: + regex: 'OEM, ([a-z0-9_ \-]+), (?:wired|wireless)' + device: 'tv' + model: '' diff --git a/priv/ua_inspector/os.oss.yml b/priv/ua_inspector/os.oss.yml index c2f01dd9998aad432febe9550298a32624eadff8..f0f52fab126ab7da98b40125991d9ae50a19a210 100644 --- a/priv/ua_inspector/os.oss.yml +++ b/priv/ua_inspector/os.oss.yml @@ -6,21 +6,80 @@ ############### ########## -# Tizen +# COS (China Operating System - https://web.archive.org/web/20170825001023/http://www.china-cos.com/) ########## -- regex: 'Tizen[ /]?(\d+[\.\d]+)?' - name: 'Tizen' +- regex: ' COS like Android' + name: 'China OS' + version: '' + +########## +# ClearOS Mobile (https://www.clearos.com/products/clearos-editions/clearos-mobile) +########## +- regex: 'Android (\d+[\.\d]*); ClearPHONE' + name: 'ClearOS Mobile' version: '$1' +########## +# Plasma Mobile (https://plasma-mobile.org/) +########## +- regex: 'Plasma Mobile' + name: 'Plasma Mobile' + version: '' + +########## +# KreaTV +########## +- regex: 'KreaTV/0.0.0.0' + name: 'KreaTV' + version: '' +- regex: 'KreaTV/(\d+[\.\d]+)' + name: 'KreaTV' + version: '$1' ########## -## Sailfish OS -########### -- regex: 'Sailfish|Jolla' - name: 'Sailfish OS' +# Opera TV (https://blogs.opera.com/news/2016/01/ces-2016-meet-opera-tv/) +########## +- regex: 'Linux (?:[^;]+); Opera TV(?: Store)?/|^Opera/\d+\.\d+ \(Linux mips' + name: 'Opera TV' version: '' +########## +# GridOS (https://web.archive.org/web/20111123141630/http://fusiongarage.com/grid-os/about) +########## +- regex: 'Grid OS (\d+[\.\d]+)' + name: 'GridOS' + version: '$1' + +########## +# Caixa Mágica (https://caixamagica.pt/) +########## +- regex: 'CaixaMagica' + name: 'Caixa Mágica' + version: '' + +########## +# Mageia (https://www.mageia.org/en/) +########## +- regex: 'Mageia; Linux' + name: 'Mageia' + version: '' + +########## +# Whale OS (https://www.zeasn.com/) +########## +- regex: '(?:WH|WhaleTV/)(\d+[\.\d]+)' + name: 'Whale OS' + version: '$1' + +########## +# Tizen +########## +- regex: 'Tizen[ /]?(\d+[\.\d]+)?' + name: 'Tizen' + version: '$1' + + ########## # YunOS (Android based) ########## @@ -31,11 +90,14 @@ ########## # Windows Mobile ########## -- regex: '(?:Windows Phone (?:OS)?|wds)[ ]?(\d+[\.\d]+)' +- regex: 'Windows Phone;FBSV/(\d+[\.\d]+)' + name: 'Windows Phone' + version: '$1' + +- regex: '(?:Windows Phone (?:OS)?|wds)[ /]?(\d+[\.\d]+)' name: 'Windows Phone' version: '$1' - - + - regex: 'XBLWP7|Windows Phone' name: 'Windows Phone' version: '' @@ -43,17 +105,15 @@ - regex: 'Windows CE(?: (\d+[\.\d]+))?' name: 'Windows CE' version: '$1' - - + - regex: '(?:IEMobile|Windows ?Mobile)(?: (\d+[\.\d]+))?' name: 'Windows Mobile' version: '$1' - - + - regex: 'Windows NT 6.2; ARM;' name: 'Windows RT' version: '' - + - regex: 'Windows NT 6.3; ARM;' name: 'Windows RT' version: '8.1' @@ -75,6 +135,10 @@ ########## # Custom Android Roms ########## +- regex: 'HarmonyOS(?:[/ ](\d+[\.\d]+))?' + name: 'HarmonyOS' + version: '$1' + - regex: 'RazoDroiD(?: v(\d+[\.\d]*))?' name: 'RazoDroiD' version: '$1' @@ -95,9 +159,68 @@ name: 'Fire OS' version: '$1' +- regex: '.+FIRETVSTICK2018' + name: 'Fire OS' + version: '6' + +- regex: 'AFTSO001' + name: 'Fire OS' + version: '7' + +- regex: 'FydeOS' + name: 'FydeOS' + version: '' + +########## +# Remix OS +########## +- regex: 'RemixOS|Remix (?:Pro|Mini)' + name: 'Remix OS' + versions: + - regex: 'RemixOS 5' + version: '1' + - regex: 'RemixOS 6|Remix Mini' + version: '2' + - regex: 'Remix Pro' + version: '3' + +########## +# FreeBSD +########## +- regex: 'FreeBSD.+Android' + name: 'FreeBSD' + version: '' + +########## +# Android TV (https://android.com/tv/) +########## +- regex: 'Linux; Andr0id[; ](\d+[\.\d]*)' + name: 'Android TV' + version: '$1' + +- regex: 'Android[; ](\d+[\.\d]*).+Android TV' + name: 'Android TV' + version: '$1' + ########## # Android ########## +- regex: 'Android Marshmallow' + name: 'Android' + version: '6' + +- regex: '(?:Podbean|Podimo)(?:.*)/Android' + name: 'Android' + version: '' + +- regex: 'Android OS/(\d+[\.\d]*)' + name: 'Android' + version: '$1' + +- regex: 'Pinterest for Android/.*; (\d(?:[\d\.]*))\)$' + name: 'Android' + version: '$1' + - regex: 'Android; (\d+[\.\d]*); Mobile;' name: 'Android' version: '$1' @@ -106,11 +229,23 @@ name: 'Android' version: '$1' -- regex: '(?:(?:Orca-)?Android|Adr)[ /](?:[a-z]+ )?(\d+[\.\d]*)' +- regex: '(?:(?:Orca-)?(?<!like )Android|Adr|AOSP)[ /]?(?:[a-z]+ )?(\d+[\.\d]*)' + name: 'Android' + version: '$1' + +- regex: '(?:Allview_TX1_Quasar|Cosmote_My_mini_Tab) (\d+[\.\d]*)' + name: 'Android' + version: '$1' + +- regex: 'Android ?(?:jelly bean|Kit Kat|S.O. Ginger Bread|The FireCyano|:) (\d+[\.\d]*)' + name: 'Android' + version: '$1' + +- regex: '(?:Orca-Android|FB4A).*FBSV/(\d+[\.\d]*);' name: 'Android' version: '$1' - -- regex: 'Android|Silk-Accelerated=[a-z]{4,5}' + +- regex: ' Adr |(?<!like )Android|Silk-Accelerated=[a-z]{4,5}' name: 'Android' version: '' @@ -118,15 +253,26 @@ name: 'Android' version: '$1' -- regex: 'FB4A.*FBSV/(\d+[\.\d]*);' +- regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe|.+K_?Android_?TV_|Sonos/.+\(ACR_' + name: 'Android' + version: '' + +# Inverted Android +- regex: 'Linux; diordnA[; ](\d+[\.\d]*)' name: 'Android' version: '$1' -- regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe' +- regex: '^A/(\d+[\.\d]*)/' name: 'Android' + version: '$1' + +########## +## Sailfish OS +########### +- regex: 'Sailfish|Jolla' + name: 'Sailfish OS' version: '' - - + ########## # AmigaOS ########## @@ -155,13 +301,103 @@ name: 'MTK / Nucleus' version: '$1' +########## +# MRE / MAUI Runtime Environment +########## +- regex: 'MRE/(\d+)\.(\d+).*;MAUI' + name: 'MRE' + version: '$1.$2' + ########## # Linux ########## +# Linspire (https://www.linspirelinux.com/) +- regex: 'Linspire' + name: 'Linspire' + version: '' + +# LindowsOS (https://web.archive.org/web/20040304161245/http://www.lindows.com/) +- regex: 'LindowsOS' + name: 'LindowsOS' + version: '' + +# Zenwalk (http://www.zenwalk.org/) +- regex: 'Zenwalk GNU Linux' + name: 'Zenwalk' + version: '' + +# Kanotix (http://www.kanotix.com/) +- regex: 'Linux.+kanotix' + name: 'Kanotix' + version: '' + +# moonOS (https://www.moonos.org/) +- regex: 'moonOS/(\d+.[\d.]+)' + name: 'moonOS' + version: '$1' + +# Foresight Linux (https://www.foresightlinux.org/) +- regex: 'Foresight Linux' + name: 'Foresight Linux' + version: '' + +# Pardus (https://www.pardus.org.tr/) +- regex: 'Pardus/(\d+.[\d.]+)' + name: 'Pardus' + version: '$1' + +# Pure OS (https://pureos.net/) +- regex: 'Librem 5' + name: 'PureOS' + version: '' + +# OpenWrt (https://openwrt.org/) +- regex: 'uclient-fetch' + name: 'OpenWrt' + version: '' + +# Roku OS (https://www.roku.com/how-it-works/roku-os) +- regex: 'RokuOS/.+RokuOS (\d+.[\d.]+)' + name: 'Roku OS' + version: '$1' + +- regex: 'Roku(?:OS)?/(?:DVP|Pluto)?-?(\d+[\.\d]+)' + name: 'Roku OS' + version: '$1' + +- regex: 'Roku; (?:AP|UI); (\d+[\.\d]+)' + name: 'Roku OS' + version: '$1' + +# DVKBuntu (https://www.dvkbuntu.org/) +- regex: 'dvkbuntu' + name: 'DVKBuntu' + version: '' + +# Lumin OS (https://developer.magicleap.com/en-us/learn/guides/lumin-os-release-notes-summary) +- regex: 'Helio/(\d+[\.\d]+)' + name: 'Lumin OS' + version: '$1' + +# HasCodingOS (https://forum.hascoding.com/HasCodingOS) +- regex: 'HasCodingOs (\d+[\.\d]+)' + name: 'HasCodingOS' + version: '$1' + +# PCLinuxOS (https://www.pclinuxos.com/) +- regex: 'PCLinuxOS/(\d+[\.\d]+)' + name: 'PCLinuxOS' + version: '$1' + - regex: '(Ordissimo|webissimo3)' name: 'Ordissimo' version: '' +# Fenix (https://fenixlinux.com/) +- regex: '(?:Win|Sistema )Fenix' + name: 'Fenix' + version: '' + - regex: 'TOS; Linux' name: 'TmaxOS' version: '' @@ -182,18 +418,41 @@ name: '$1' version: '$2' -- regex: '(Debian|Knoppix|Mint|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack)(?:(?: Enterprise)? Linux)?(?:[ /\-](\d+[\.\d]+))?' +- regex: 'Deepin[ /](\d+[\.\d]+)' + name: 'Deepin' + version: '$1' + +- regex: '(Debian|Knoppix|Mint(?! Browser)|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack|Freebox)(?:(?: Enterprise)? Linux)?(?:[ /\-](\d+[\.\d]+))?' name: '$1' version: '$2' -# generic linux match -> end of file +- regex: 'OS ROSA; Linux' + name: 'Rosa' + version: '' ########## # webOS ########## -- regex: '(?:webOS|web0S|Palm webOS)(?:/(\d+[\.\d]+))?' +- regex: '(?:Web0S; .*WEBOS|webOS|web0S|Palm webOS|hpwOS)(?:[/]?(\d+[\.\d]+))?' name: 'webOS' version: '$1' + versions: + - regex: 'WEBOS(\d+[\.\d]+)' + version: '$1' + - regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/79' + version: '6' + - regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/68' + version: '5' + - regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/53' + version: '4' + - regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/38' + version: '3' + - regex: 'WEBOS1' + version: '1' + - regex: 'Web0S; Linux/SmartTV.+Safari/538' + version: '2' + - regex: 'Web0S; Linux/SmartTV.+Safari/537' + version: '1' - regex: '(?:PalmOS|Palm OS)(?:[/ ](\d+[\.\d]+))?|Palm' name: 'palmOS' @@ -203,15 +462,33 @@ name: 'palmOS' version: '$1' - - regex: 'MorphOS(?:[ /](\d+[\.\d]+))?' name: 'MorphOS' version: '$1' - ########## # Windows ########## +- regex: 'FBW.+FBSV/(\d+[\.\d]*);' + name: 'Windows' + version: '$1' + +- regex: 'Windows.+OS: (\d+[\.\d]*)' + name: 'Windows' + version: '$1' + +- regex: 'Windows;(\d+[\.\d]*);' + name: 'Windows' + version: '$1' + +- regex: 'mingw32|winhttp' + name: 'Windows' + version: '' + +- regex: '(?:Windows(?:-Update-Agent)?|Microsoft-(?:CryptoAPI|Delivery-Optimization|WebDAV-MiniRedir|WNS))/(\d+\.\d+)' + name: 'Windows' + version: '$1' + - regex: 'CYGWIN_NT-10.0|Windows NT 10.0|Windows 10' name: 'Windows' version: '10' @@ -228,7 +505,7 @@ name: 'Windows' version: '8' -- regex: 'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7|win7' +- regex: 'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7|win7|Windows \(6.1' name: 'Windows' version: '7' @@ -268,15 +545,10 @@ name: 'Windows' version: '3.1' -- regex: 'FBW.*FBSV/(\d+[\.\d]*);' - name: 'Windows' - version: '$1' - -- regex: 'Windows' +- regex: 'Windows|.+win32|Win64|MSDW|HandBrake Win Upd|Microsoft BITS' name: 'Windows' version: '' - ########## # Haiku OS ########## @@ -284,261 +556,491 @@ name: 'Haiku OS' version: '' - ########## -# iOS +# tvOS (https://developer.apple.com/tvos/) ########## -- regex: 'CFNetwork/889' - name: 'iOS' - version: '11.1' - -- regex: 'CFNetwork/887.*(x86_64)' - name: 'Mac' - version: '10.13' - -- regex: 'CFNetwork/887' - name: 'iOS' - version: '11.0' - -- regex: 'CFNetwork/811.*(x86_64)' - name: 'Mac' - version: '10.12' - -- regex: 'CFNetwork/811' - name: 'iOS' - version: '10.3' - -- regex: 'CFNetwork/808\.3' - name: 'iOS' - version: '10.3' +- regex: 'Apple ?TV.*CPU (?:iPhone )?OS ((?:9|1[0-5])[_\.]\d+(?:[_.]\d+)*)' + name: 'tvOS' + version: '$1' -- regex: 'CFNetwork/808\.2' - name: 'iOS' - version: '10.2' +- regex: 'iOS(?:; |/)((?:9|1[0-5]).\d+(?:[_\.]\d+)*) (?:model/)?AppleTV' + name: 'tvOS' + version: '$1' -- regex: 'CFNetwork/808\.1' - name: 'iOS' - version: '10.1' +########## +# watchOS (https://developer.apple.com/watchos/) +########## +- regex: '(?:Watch1,[12]/|Watch OS,|watchOS[ /])(\d+[\.\d]*)' + name: 'watchOS' + version: '$1' -- regex: 'CFNetwork/808\.0' - name: 'iOS' - version: '10.0' +########## +# iPadOS (https://www.apple.com/ipados/) +########## +- regex: 'FBMD/iPad;.*FBSV/ ?(1[345]).(\d+[\.\d]*);' + name: 'iPadOS' + version: '$1.$2' -- regex: 'CFNetwork/808' - name: 'iOS' - version: '10' +- regex: 'iPad/(1[345]).(\d+[\.\d]*)' + name: 'iPadOS' + version: '$1.$2' -- regex: 'CFNetwork/758\.4\.3' - name: 'iOS' - version: '9.3.2' +- regex: '^iPad(?:\d+[\,\d]*)/(1[345]).(\d+[\.\d]*)' + name: 'iPadOS' + version: '$1.$2' -- regex: 'CFNetwork/758\.3\.15' - name: 'iOS' - version: '9.3' +- regex: 'iPad(?:; iOS|.+CPU OS) ((1[345])+(?:[_\.]\d+)*)' + name: 'iPadOS' + version: '$1' -- regex: 'CFNetwork/758\.2\.[78]' - name: 'iOS' - version: '9.2' +- regex: 'iOS/(1[345]).(\d+[\.\d]*).+Apple/iPad' + name: 'iPadOS' + version: '$1.$2' -- regex: 'CFNetwork/758\.1\.6' - name: 'iOS' - version: '9.1' +- regex: 'iPhone OS,(1[345]).(\d+[\.\d]*).+iPad' + name: 'iPadOS' + version: '$1.$2' -- regex: 'CFNetwork/758\.0\.2' +########## +# iOS +########## +- regex: 'iPad/([89]|1[012]).(\d+[\.\d]*)' name: 'iOS' - version: '9.0' + version: '$1.$2' -- regex: 'CFNetwork/711\.5\.6' +- regex: '^(?:iPad|iPhone)(?:\d+[\,\d]*)[/_](\d+[\.\d]+)' name: 'iOS' - version: '8.4.1' + version: '$1' -- regex: 'CFNetwork/711\.4\.6' +- regex: 'Pinterest for iOS/.*; (\d(?:[\d\.]*))[)]$' name: 'iOS' - version: '8.4' + version: '$1' -- regex: 'CFNetwork/711\.3\.18' +- regex: '(?:iPhone ?OS|iOS(?: Version)?)(?:/|; |,)(\d+[\.\d]+)' name: 'iOS' - version: '8.3' + version: '$1' -- regex: 'CFNetwork/711\.2\.23' +- regex: '^(?!com.apple.Safari.SearchHelper).*CFNetwork/.+ Darwin/(\d+[\.\d]+)(?!.*(?:x86_64|i386|PowerMac|Power%20Macintosh))' name: 'iOS' - version: '8.2' - -- regex: 'CFNetwork/711\.1\.1[26]' + versions: + - regex: 'Darwin/21.4.0' + version: '15.4' + - regex: 'Darwin/21.3.0' + version: '15.3' + - regex: 'Darwin/21.2.0' + version: '15.2' + - regex: 'Darwin/21.1.0' + version: '15.1' + - regex: 'Darwin/21.0.0' + version: '15.0' + - regex: 'Darwin/20.6.0' + version: '14.7' + - regex: 'Darwin/20.5.0' + version: '14.6' + - regex: 'Darwin/20.4.0' + version: '14.5' + - regex: 'Darwin/20.3.0' + version: '14.4' + - regex: 'Darwin/20.2.0' + version: '14.3' + - regex: 'Darwin/20.1.0' + version: '14.2' + - regex: 'Darwin/20.0.0' + version: '14.0' + - regex: 'Darwin/19.6.0' + version: '13.6' + - regex: 'Darwin/19.5.0' + version: '13.5' + - regex: 'Darwin/19.4.0' + version: '13.4' + - regex: 'Darwin/19.3.0' + version: '13.3.1' + - regex: 'Darwin/19.2.0' + version: '13.3' + - regex: 'Darwin/19.0.0' + version: '13.0' + - regex: 'Darwin/18.7.0' + version: '12.4' + - regex: 'Darwin/18.6.0' + version: '12.3' + - regex: 'Darwin/18.5.0' + version: '12.2' + - regex: 'Darwin/18.2.0' + version: '12.1' + - regex: 'Darwin/18.0.0' + version: '12.0' + - regex: 'Darwin/17.7.0' + version: '11.4.1' + - regex: 'Darwin/17.6.0' + version: '11.4' + - regex: 'Darwin/17.5.0' + version: '11.3' + - regex: 'Darwin/17.4.0' + version: '11.2.6' + - regex: 'Darwin/17.3.0' + version: '11.2' + - regex: 'CFNetwork/889' + version: '11.1' + - regex: 'CFNetwork/887' + version: '11.0' + - regex: 'CFNetwork/811' + version: '10.3' + - regex: 'CFNetwork/808\.3' + version: '10.3' + - regex: 'CFNetwork/808\.2' + version: '10.2' + - regex: 'CFNetwork/808\.1' + version: '10.1' + - regex: 'CFNetwork/808\.0' + version: '10.0' + - regex: 'CFNetwork/808' + version: '10' + - regex: 'CFNetwork/758\.5\.3' + version: '9.3.5' + - regex: 'CFNetwork/758\.4\.3' + version: '9.3.2' + - regex: 'CFNetwork/758\.3\.15' + version: '9.3' + - regex: 'CFNetwork/758\.2\.[78]' + version: '9.2' + - regex: 'CFNetwork/758\.1\.6' + version: '9.1' + - regex: 'CFNetwork/758\.0\.2' + version: '9.0' + - regex: 'CFNetwork/711\.5\.6' + version: '8.4.1' + - regex: 'CFNetwork/711\.4\.6' + version: '8.4' + - regex: 'CFNetwork/711\.3\.18' + version: '8.3' + - regex: 'CFNetwork/711\.2\.23' + version: '8.2' + - regex: 'CFNetwork/711\.1\.1[26]' + version: '8.1' + - regex: 'CFNetwork/711\.0\.6' + version: '8.0' + - regex: 'CFNetwork/672\.1' + version: '7.1' + - regex: 'CFNetwork/672\.0' + version: '7.0' + - regex: 'CFNetwork/609\.1' + version: '6.1' + - regex: 'CFNetwork/60[29]' + version: '6.0' + - regex: 'CFNetwork/548\.1' + version: '5.1' + - regex: 'CFNetwork/548\.0' + version: '5.0' + - regex: 'CFNetwork/485\.13' + version: '4.3' + - regex: 'CFNetwork/485\.12' + version: '4.2' + - regex: 'CFNetwork/485\.10' + version: '4.1' + - regex: 'CFNetwork/485\.2' + version: '4.0' + - regex: 'CFNetwork/467\.12' + version: '3.2' + - regex: 'CFNetwork/459' + version: '3.1' + +- regex: '(?:iPhone|iPod_touch)/(\d+[\.\d]*) hw/' name: 'iOS' - version: '8.1' + version: '$1' -- regex: 'CFNetwork/711\.0\.6' +- regex: 'iOS(\d+\.\d+\.\d+)' name: 'iOS' - version: '8.0' + version: '$1' -- regex: 'CFNetwork/672\.1' +- regex: 'iOS(\d+)\.(\d+)0' name: 'iOS' - version: '7.1' + version: '$1.$2' -- regex: 'CFNetwork/672\.0' +- regex: 'iPhone OS ([0-9]{1})([0-9]{1})([0-9]{1})' name: 'iOS' - version: '7.0' + version: '$1.$2.$3' -- regex: 'CFNetwork/609\.1' +- regex: '(?:CPU OS|iPh(?:one)?[ _]OS|iOS)[ _/](\d+(?:[_\.]\d+)*)' name: 'iOS' - version: '6.1' + version: '$1' -- regex: 'CFNetwork/60[29]' +- regex: 'FBMD/iPhone;.*FBSV/ ?(\d+[\.\d]+);' name: 'iOS' - version: '6.0' + version: '$1' -- regex: 'CFNetwork/548\.1' +- regex: '(?:FBIOS|Messenger(?:Lite)?ForiOS).*FBSV/ ?(\d+[\.\d]*);' name: 'iOS' - version: '5.1' + version: '$1' -- regex: 'CFNetwork/548\.0' +- regex: 'iPhone OS,([\d\.]+).+(?:iPhone|iPod)' name: 'iOS' - version: '5.0' + version: '$1' -- regex: 'CFNetwork/485\.13' +- regex: 'iPad.+; (\d+[\.\d]+);' name: 'iOS' - version: '4.3' + version: '$1' -- regex: 'CFNetwork/485\.12' +- regex: 'iPhone.+; Version (\d+[\.\d]+)' name: 'iOS' - version: '4.2' + version: '$1' -- regex: 'CFNetwork/485\.10' +- regex: 'OS=iOS;OSVer=(\d+[\.\d]+);' name: 'iOS' - version: '4.1' + version: '$1' -- regex: 'CFNetwork/485\.2' +- regex: 'os=Apple-iOS.+osversion=(\d+[\.\d]+)/' name: 'iOS' - version: '4.0' + version: '$1' -- regex: 'CFNetwork/467\.12' +- regex: '(?:Apple-)?(?<!like )(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?' name: 'iOS' - version: '3.2' + version: '$1' -- regex: 'CFNetwork/459' +- regex: 'dv\(iPh.+ov\((\d+(?:[_\.]\d+)*)\);' name: 'iOS' - version: '3.1' + version: '$1' -- regex: '(?:CPU OS|iPh(?:one)?[ _]OS|iOS)[ _/](\d+(?:[_\.]\d+)*)' +- regex: '(?:Podcasts/(?:[\d\.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|\(iOS\)|iOS; Opera|Overcast|Castro|Podcat|iCatcher|RSSRadio/|MobileSafari/)(?!.*x86_64)' name: 'iOS' - version: '$1' + version: '' -- regex: 'FBIOS.*FBSV/(\d+[\.\d]*);' +- regex: 'iTunes-(AppleTV|iPod|iPad|iPhone)/(?:[\d\.]+)' name: 'iOS' - version: '$1' + version: '' -- regex: '(?:Apple-)?(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?' +- regex: 'iOS/Version ([\d\.]+)' name: 'iOS' version: '$1' -- regex: 'Podcasts/(?:[\d\.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|Overcast|Castro|Podcat|i[cC]atcher|RSSRadio/' +- regex: 'Sonos/.+\(ICRU_' name: 'iOS' version: '' -- regex: 'iTunes-(iPod|iPad|iPhone)/(?:[\d\.]+)' +- regex: 'CaptiveNetworkSupport|AirPlay' name: 'iOS' version: '' - ########## # Mac ########## - -- regex: 'CFNetwork/807' +- regex: 'CFNetwork/.+ Darwin/(?:[\d\.]+).+(?:x86_64|i386|Power%20Macintosh)|(?:x86_64-apple-)?darwin(?:[\d\.]+)|PowerMac|com.apple.Safari.SearchHelper' name: 'Mac' - version: '10.12' - -- regex: 'CFNetwork/760' + versions: + - regex: '(?:x86_64-apple-)?Darwin/?21.4.0' + version: '12.3' + - regex: '(?:x86_64-apple-)?Darwin/?21.3.0' + version: '12.2' + - regex: '(?:x86_64-apple-)?Darwin/?21.2.0' + version: '12.1' + - regex: '(?:x86_64-apple-)?Darwin/?21.1.0' + version: '12.0.1' + - regex: '(?:x86_64-apple-)?Darwin/?21.0.0' + version: '12.0' + - regex: '(?:x86_64-apple-)?Darwin/?20.6.0' + version: '11.5' + - regex: '(?:x86_64-apple-)?Darwin/?20.5.0' + version: '11.4' + - regex: '(?:x86_64-apple-)?Darwin/?20.4.0' + version: '11.3' + - regex: '(?:x86_64-apple-)?Darwin/?20.3.0' + version: '11.2' + - regex: '(?:x86_64-apple-)?Darwin/?20.2.0.*' + version: '11.1' + - regex: '(?:x86_64-apple-)?Darwin/?20.[01].0' + version: '11.0' + - regex: '(?:x86_64-apple-)?Darwin/?19.6.0' + version: '10.15.6' + - regex: '(?:x86_64-apple-)?Darwin/?19.5.0' + version: '10.15.5' + - regex: '(?:x86_64-apple-)?Darwin/?19.4.0' + version: '10.15.4' + - regex: '(?:x86_64-apple-)?Darwin/?19.3.0' + version: '10.15.3' + - regex: '(?:x86_64-apple-)?Darwin/?19.2.0' + version: '10.15.2' + - regex: '(?:x86_64-apple-)?Darwin/?19.0.0' + version: '10.15' + - regex: '(?:x86_64-apple-)?Darwin/?18.7.0' + version: '10.14' + - regex: '(?:x86_64-apple-)?Darwin/?18.6.0' + version: '10.14.5' + - regex: '(?:x86_64-apple-)?Darwin/?18.5.0' + version: '10.14.4' + - regex: '(?:x86_64-apple-)?Darwin/?18.2.0' + version: '10.14.1' + - regex: '(?:x86_64-apple-)?Darwin/?18.0.0' + version: '10.14' + - regex: '(?:x86_64-apple-)?Darwin/?17.7.0' + version: '10.13.6' + - regex: '(?:x86_64-apple-)?Darwin/?17.6.0' + version: '10.13.5' + - regex: '(?:x86_64-apple-)?Darwin/?17.5.0' + version: '10.13.4' + - regex: '(?:x86_64-apple-)?Darwin/?17.4.0' + version: '10.13.3' + - regex: '(?:x86_64-apple-)?Darwin/?17.3.0' + version: '10.13.2' + - regex: '(?:x86_64-apple-)?Darwin/?17.2.0' + version: '10.13.1' + - regex: '(?:x86_64-apple-)?Darwin/?17.0.0' + version: '10.13' + - regex: '(?:x86_64-apple-)?Darwin/?16.7.0' + version: '10.12.6' + - regex: '(?:x86_64-apple-)?Darwin/?16.6.0' + version: '10.12.5' + - regex: '(?:x86_64-apple-)?Darwin/?16.5.0' + version: '10.12.4' + - regex: '(?:x86_64-apple-)?Darwin/?16.4.0' + version: '10.12.3' + - regex: '(?:x86_64-apple-)?Darwin/?16.3.0' + version: '10.12.2' + - regex: '(?:x86_64-apple-)?Darwin/?16.2.0' + version: '10.12.2' + - regex: '(?:x86_64-apple-)?Darwin/?16.1.0' + version: '10.12.1' + - regex: '(?:x86_64-apple-)?Darwin/?16.0.0' + version: '10.12' + - regex: '(?:x86_64-apple-)?Darwin/?15.6.0' + version: '10.11.6' + - regex: '(?:x86_64-apple-)?Darwin/?15.5.0' + version: '10.11.5' + - regex: '(?:x86_64-apple-)?Darwin/?15.4.0' + version: '10.11.4' + - regex: '(?:x86_64-apple-)?Darwin/?15.3.0' + version: '10.11.3' + - regex: '(?:x86_64-apple-)?Darwin/?15.2.0' + version: '10.11.2' + - regex: 'CFNetwork/760' + version: '10.11' + - regex: '(?:x86_64-apple-)?Darwin/?14.5.0' + version: '10.10.5' + - regex: '(?:x86_64-apple-)?Darwin/?14.4.0' + version: '10.10.4' + - regex: '(?:x86_64-apple-)?Darwin/?14.3.0' + version: '10.10.3' + - regex: '(?:x86_64-apple-)?Darwin/?14.1.0' + version: '10.10.2' + - regex: '(?:x86_64-apple-)?Darwin/?14.0.0' + version: '10.10' + - regex: '(?:x86_64-apple-)?Darwin/?13.4.0' + version: '10.9.5' + - regex: '(?:x86_64-apple-)?Darwin/?13.3.0' + version: '10.9.4' + - regex: '(?:x86_64-apple-)?Darwin/?13.2.0' + version: '10.9.3' + - regex: '(?:x86_64-apple-)?Darwin/?13.1.0' + version: '10.9.2' + - regex: '(?:x86_64-apple-)?Darwin/?13.0.0' + version: '10.9.0' + - regex: '(?:x86_64-apple-)?Darwin/?12.6.0' + version: '10.8.5' + - regex: '(?:x86_64-apple-)?Darwin/?12.5.0' + version: '10.8.5' + - regex: '(?:x86_64-apple-)?Darwin/?12.4.0' + version: '10.8.4' + - regex: '(?:x86_64-apple-)?Darwin/?12.3.0' + version: '10.8.3' + - regex: '(?:x86_64-apple-)?Darwin/?12.2.0' + version: '10.8.2' + - regex: '(?:x86_64-apple-)?Darwin/?12.1.0' + version: '10.8.1' + - regex: '(?:x86_64-apple-)?Darwin/?11.5.0' + version: '10.7.5' + - regex: '(?:x86_64-apple-)?Darwin/?11.4.2' + version: '10.7.5' + - regex: '(?:x86_64-apple-)?Darwin/?11.4.0' + version: '10.7.4' + - regex: '(?:x86_64-apple-)?Darwin/?11.3.0' + version: '10.7.3' + - regex: '(?:x86_64-apple-)?Darwin/?11.2.0' + version: '10.7.2' + - regex: '(?:x86_64-apple-)?Darwin/?11.1.0' + version: '10.7.1' + - regex: '(?:x86_64-apple-)?Darwin/?10.8.0' + version: '10.6.8' + - regex: '(?:x86_64-apple-)?Darwin/?10.7.[34]' + version: '10.6.7' + - regex: '(?:x86_64-apple-)?Darwin/?10.3.0' + version: '10.6.3' + - regex: '(?:x86_64-apple-)?Darwin/?10.0.0' + version: '10.6' + - regex: '(?:x86_64-apple-)?Darwin/?9.8.0' + version: '10.5.8' + - regex: '(?:x86_64-apple-)?Darwin/?9.7.1' + version: '10.5.7' + - regex: '(?:x86_64-apple-)?Darwin/?9.6.2' + version: '10.5.6' + - regex: '(?:x86_64-apple-)?Darwin/?9.5.[05]' + version: '10.5.5' + +- regex: 'Macintosh;Mac OS X \((\d+[\.\d]+)\);' name: 'Mac' - version: '10.11' - -- regex: 'CFNetwork/720' - name: 'Mac' - version: '10.10' - -- regex: 'CFNetwork/673' - name: 'Mac' - version: '10.9' - -- regex: 'CFNetwork/596' - name: 'Mac' - version: '10.8' - -- regex: 'CFNetwork/520' - name: 'Mac' - version: '10.7' + version: '$1' -- regex: 'CFNetwork/454' +- regex: 'Mac[ +]OS[ +]?X(?:[ /,](?:Version )?(\d+(?:[_\.]\d+)+))?' name: 'Mac' - version: '10.6' + version: '$1' -- regex: 'CFNetwork/(?:438|422|339|330|221|220|217)' +- regex: 'Mac (?:OS/)?(\d+(?:[_\.]\d+)+)' name: 'Mac' - version: '10.5' + version: '$1' -- regex: 'CFNetwork/12[89]' +- regex: '(?:macOS[/,]|Mac-)(\d+[\.\d]+)' name: 'Mac' - version: '10.4' + version: '$1' -- regex: 'CFNetwork/1\.2' +- regex: 'Macintosh; OS X (\d+[\.\d]+)' name: 'Mac' - version: '10.3' + version: '$1' -- regex: 'CFNetwork/1\.1' +- regex: 'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC|iMac|MacBook|macOS|AppleExchangeWebServices|com.apple.trustd|Sonos/.+\(MDCR_' name: 'Mac' - version: '10.2' + version: '' -- regex: 'Mac[ +]OS[ +]X(?:[ /](?:Version )?(\d+(?:[_\.]\d+)+))?' - name: 'Mac' - version: '$1' - -- regex: 'Mac (\d+(?:[_\.]\d+)+)' - name: 'Mac' +########## +# SeewoOS +########## +- regex: 'SeewoOS x86_64 (\d+[\.\d]+)' + name: 'SeewoOS' version: '$1' -- regex: 'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC|iMac|MacBook' - name: 'Mac' - version: '' - - - ########## # ChromeOS ########## -- regex: 'CrOS [a-z0-9_]+ .* Chrome/(\d+[\.\d]+)' +- regex: 'CrOS [a-z0-9_]+ (\d+[\.\d]+)' name: 'Chrome OS' version: '$1' - - - + +########## +# Fuchsia +########## +- regex: 'Fuchsia' + name: 'Fuchsia' + version: '' + ########## # BlackBerry ########## - regex: '(?:BB10;.+Version|Black[Bb]erry[0-9a-z]+|Black[Bb]erry.+Version)/(\d+[\.\d]+)' name: 'BlackBerry OS' version: '$1' - - + - regex: 'RIM Tablet OS (\d+[\.\d]+)' name: 'BlackBerry Tablet OS' version: '$1' - - + - regex: 'RIM Tablet OS|QNX|Play[Bb]ook' name: 'BlackBerry Tablet OS' version: '' - - + - regex: 'BlackBerry' name: 'BlackBerry OS' version: '' - + - regex: 'bPod' name: 'BlackBerry OS' version: '' - ########## # BeOS ########## @@ -546,9 +1048,6 @@ name: 'BeOS' version: '' - - - ########## # Symbian ########## @@ -556,48 +1055,38 @@ name: 'Symbian^3' version: 'Anna' - - regex: 'Symbian/3.+NokiaBrowser/7\.4' name: 'Symbian^3' version: 'Belle' - - regex: 'Symbian/3' name: 'Symbian^3' version: '' - - regex: '(?:Series ?60|SymbOS|S60)(?:[ /]?(\d+[\.\d]+|V\d+))?' name: 'Symbian OS Series 60' version: '$1' - - regex: 'Series40' name: 'Symbian OS Series 40' version: '' - - regex: 'SymbianOS/(\d+[\.\d]+)' name: 'Symbian OS' version: '$1' - - + - regex: 'MeeGo|WeTab' name: 'MeeGo' version: '' - - + - regex: 'Symbian(?: OS)?|SymbOS' name: 'Symbian OS' version: '' - - + - regex: 'Nokia' name: 'Symbian' version: '' - - ########## # Firefox OS ########## @@ -605,7 +1094,6 @@ name: 'Firefox OS' version: '' - ########## # RISC OS ########## @@ -613,7 +1101,6 @@ name: 'RISC OS' version: '$1' - ########## # Inferno ########## @@ -621,65 +1108,41 @@ name: 'Inferno' version: '$1' - ########## # Bada ########## -- regex: 'bada(?:[ /](\d+[\.\d]+))' +- regex: 'bada(?:[ /](\d+[\.\d]+))?' name: 'Bada' version: '$1' - - -- regex: 'bada' - name: 'Bada' - version: '' +########## +# REX +########## +- regex: 'REX; U;' + name: 'REX' + version: '' ########## # Brew ########## -- regex: '(?:Brew MP|BREW|BMP)(?:[ /](\d+[\.\d]+))' +- regex: '(?:Brew(?!-Applet)(?: MP)?|BMP)(?:[ /](\d+[\.\d]+))?' name: 'Brew' version: '$1' - -- regex: 'Brew MP|BREW|BMP' - name: 'Brew' - version: '' - - ########## # Web TV ########## - regex: 'GoogleTV(?:[ /](\d+[\.\d]+))?' name: 'Google TV' version: '$1' - - + - regex: 'AppleTV(?:/?(\d+[\.\d]+))?' - name: 'Apple TV' + name: 'tvOS' version: '$1' - - + - regex: 'WebTV/(\d+[\.\d]+)' name: 'WebTV' version: '$1' - - -########## -# Remix OS -########## -- regex: 'RemixOS 5.1.1' - name: 'Remix OS' - version: '1' - -- regex: 'RemixOS 6.0' - name: 'Remix OS' - version: '2' - -- regex: 'RemixOS' - name: 'Remix OS' - version: '' ########## @@ -688,54 +1151,43 @@ - regex: '(?:SunOS|Solaris)(?:[/ ](\d+[\.\d]+))?' name: 'Solaris' version: '$1' - - + - regex: 'AIX(?:[/ ]?(\d+[\.\d]+))?' name: 'AIX' version: '$1' - - + - regex: 'HP-UX(?:[/ ]?(\d+[\.\d]+))?' name: 'HP-UX' version: '$1' - - + - regex: 'FreeBSD(?:[/ ]?(\d+[\.\d]+))?' name: 'FreeBSD' version: '$1' - - + - regex: 'NetBSD(?:[/ ]?(\d+[\.\d]+))?' name: 'NetBSD' version: '$1' - - + - regex: 'OpenBSD(?:[/ ]?(\d+[\.\d]+))?' name: 'OpenBSD' version: '$1' - - + - regex: 'DragonFly(?:[/ ]?(\d+[\.\d]+))?' name: 'DragonFly' version: '$1' - - + - regex: 'Syllable(?:[/ ]?(\d+[\.\d]+))?' name: 'Syllable' version: '$1' - - + - regex: 'IRIX(?:;64)?(?:[/ ]?(\d+[\.\d]+))' name: 'IRIX' version: '$1' - - + - regex: 'OSF1(?:[/ ]?v?(\d+[\.\d]+))?' name: 'OSF1' version: '$1' - - - + ########## # Gaming Console ########## @@ -743,45 +1195,46 @@ name: 'Nintendo' version: '$1' -- regex: 'PlayStation ?([3|4])' +- regex: 'PlayStation.+; Linux (\d+[\.\d]+)' name: 'PlayStation' version: '$1' - - + +- regex: 'PlayStation ?(\d)(?:[/ ](?:Pro )?(\d+[\.\d]+))?' + name: 'PlayStation' + version: '$1.$2' + - regex: 'Xbox|KIN\.(?:One|Two)' name: 'Xbox' version: '360' - - - + ########## # Mobile Gaming Console ########## - regex: 'Nitro|Nintendo ([3]?DS[i]?)' name: 'Nintendo Mobile' version: '$1' - - + - regex: 'PlayStation ((?:Portable|Vita))' name: 'PlayStation Portable' version: '$1' - - - + ########## # IBM ########## - regex: 'OS/2' name: 'OS/2' version: '' - - ########### # Linux (Generic) ########### -- regex: 'Linux(?:OS)?[^a-z]' +- regex: 'Linux(?:OS)?[^a-z]|Cinnamon/(?:\d+[\.\d]+)' name: 'GNU/Linux' version: '' - +########## +# Java ME (Java Platform, Micro Edition) +########## +- regex: 'Java ME|(J2ME|Profile)/MIDP|MIDP-(?:\d+[\.\d]+)/CLDC|Configuration/CLDC|Java; U; MIDP|MMP/\d.\d' + name: 'Java ME' + version: '' diff --git a/priv/ua_inspector/short_codes.browser_families.yml b/priv/ua_inspector/short_codes.browser_families.yml index f8ac065bf0b00be30988d328e729185fab005ed1..82861e991f75b1877b61a0b563a2cb7ad3d994fb 100644 --- a/priv/ua_inspector/short_codes.browser_families.yml +++ b/priv/ua_inspector/short_codes.browser_families.yml @@ -10,108 +10,176 @@ - "AV" - "AW" - "Chrome": - - "CH" + - "1B" + - "2B" + - "7S" + - "A0" + - "AC" + - "AD" + - "AE" + - "AH" + - "AI" + - "AO" + - "AS" - "BA" + - "BM" - "BR" + - "C2" + - "C3" + - "C5" + - "C4" + - "C6" - "CC" - "CD" - - "CM" - - "CI" + - "CE" - "CF" + - "CG" + - "CH" + - "CI" + - "CL" + - "CM" - "CN" - - "CR" - "CP" + - "CR" + - "CV" + - "CW" + - "DA" - "DD" - - "IR" - - "RM" - - "AO" - - "TS" - - "VI" - - "PT" - - "AS" - - "TB" - - "AD" - - "SB" - - "WP" + - "DG" + - "DR" + - "EC" + - "EE" + - "EU" + - "EW" + - "FA" + - "FS" + - "GB" + - "GI" + - "H2" + - "HA" + - "HE" + - "HH" + - "HS" - "I3" - - "CV" - - "WH" - - "SZ" - - "QW" - - "LF" + - "IR" + - "JB" + - "KN" - "KW" - - "2B" - - "CE" - - "EC" - - "MT" + - "LF" + - "LL" + - "LO" + - "M1" + - "MA" + - "MD" + - "MR" - "MS" - - "HA" - - "OC" + - "MT" - "MZ" - - "BM" - - "KN" + - "NM" + - "NR" + - "O0" + - "O2" + - "O3" + - "OC" + - "PB" + - "PT" + - "QU" + - "QW" + - "RM" + - "S4" + - "S6" + - "S8" + - "S9" + - "SB" + - "SG" + - "SS" + - "SU" + - "SV" - "SW" - - "M1" - - "FA" + - "SY" + - "SZ" + - "T1" - "TA" - - "AH" - - "CL" - - "SU" - - "EU" + - "TB" + - "TG" + - "TR" + - "TS" + - "TU" + - "TV" - "UB" - - "LO" + - "UR" + - "VE" - "VG" - - "TV" - - "A0" - - "1B" - - "S4" - - "EE" - - "AE" + - "VI" - "VM" - - "O0" - - "TG" - - "GB" - - "SY" - - "HH" - - "YJ" - - "LL" - - "TU" + - "WP" + - "WH" - "XV" - - "C2" - - "QU" + - "YJ" - "YN" + - "FH" + - "B1" + - "BO" + - "HB" + - "PC" + - "LA" + - "LT" + - "PD" + - "HR" + - "HU" + - "HP" + - "IO" + - "TP" + - "CJ" + - "HQ" + - "HI" + - "NA" + - "BW" + - "YO" + - "DC" + - "" - "Firefox": - - "FF" + - "AX" + - "BI" + - "BF" + - "BH" + - "BN" + - "C0" + - "CU" + - "EI" + - "F1" + - "FB" - "FE" + - "FF" - "FM" - - "SX" - - "FB" - - "PX" - - "MB" - - "EI" - - "WF" - - "CU" - - "TF" - - "QM" - "FR" - - "I4" + - "FY" - "GZ" - - "MO" - - "F1" - - "BI" + - "I4" + - "IF" + - "IW" + - "LH" + - "LY" + - "MB" - "MN" - - "BH" - - "TO" - - "OS" + - "MO" - "MY" - - "FY" - - "AX" - - "C0" - - "LH" + - "OA" + - "OS" + - "PI" + - "PX" + - "QA" + - "QM" - "S5" + - "SX" + - "TF" + - "TO" + - "WF" - "ZV" - - "IW" + - "" - "Internet Explorer": + - "BZ" + - "CZ" - "IE" - "IM" - "PS" @@ -122,23 +190,25 @@ - "NetSurf": - "NE" - "Nokia Browser": + - "DO" - "NB" - "NO" - "NV" - - "DO" - "Opera": - - "OP" - - "OM" + - "O1" + - "OG" + - "OH" - "OI" + - "OM" - "ON" - "OO" - - "OG" - - "OH" - - "O1" + - "OP" - "OX" - "Safari": - - "SF" - "MF" + - "S7" + - "SF" - "SO" + - "PV" - "Sailfish Browser": - "SA" diff --git a/priv/ua_inspector/short_codes.client_browsers.yml b/priv/ua_inspector/short_codes.client_browsers.yml index 8237458935a3c9e87c17b9b410d8b6b3f0eddb46..9fe8cb41b7ac97741fb5a88b30f8151707642a9f 100644 --- a/priv/ua_inspector/short_codes.client_browsers.yml +++ b/priv/ua_inspector/short_codes.client_browsers.yml @@ -2,8 +2,10 @@ - "2B": "2345 Browser" - "36": "360 Phone Browser" - "3B": "360 Browser" +- "7B": "7654 Browser" - "AA": "Avant Browser" - "AB": "ABrowse" +- "BW": "AdBlock Browser" - "AF": "ANT Fresco" - "AG": "ANTGalio" - "AL": "Aloha Browser" @@ -17,10 +19,13 @@ - "AX": "Arctic Fox" - "AV": "Amiga Voyager" - "AW": "Amiga Aweb" +- "AI": "Arvin" - "A0": "Atom" - "AT": "Atomic Web Browser" - "AS": "Avast Secure Browser" - "VG": "AVG Secure Browser" +- "AC": "Avira Scout" +- "A1": "AwoX" - "BA": "Beaker Browser" - "BM": "Beamrise" - "BB": "BlackBerry Browser" @@ -32,13 +37,21 @@ - "BJ": "Bunjalloo" - "BL": "B-Line" - "BU": "Blue Browser" +- "BO": "Bonsai" +- "BN": "Borealis Navigator" - "BR": "Brave" - "BK": "BriskBard" - "BX": "BrowseX" +- "BZ": "Browzar" +- "BY": "Biyubi" +- "BF": "Byffox" - "CA": "Camino" - "CL": "CCleaner" +- "CJ": "ChanjetCloud" +- "C6": "Chedot" - "C0": "Centaury" - "CC": "Coc Coc" +- "C4": "CoolBrowser" - "C2": "Colibri" - "CD": "Comodo Dragon" - "C1": "Coast" @@ -53,22 +66,35 @@ - "CN": "CoolNovo" - "CO": "CometBird" - "CB": "COS Browser" +- "CW": "Cornowser" +- "C3": "Chim Lac" - "CP": "ChromePlus" - "CR": "Chromium" +- "C5": "Chromium GOST" - "CY": "Cyberfox" - "CS": "Cheshire" - "CT": "Crusta" +- "CG": "Craving Explorer" +- "CZ": "Crazy Browser" - "CU": "Cunaguaro" - "CV": "Chrome Webview" +- "YC": "CyBrowser" - "DB": "dbrowser" +- "PD": "Peeps dBrowser" +- "DC": "Decentr" - "DE": "Deepnet Explorer" +- "DG": "deg-degan" +- "DA": "Deledao" - "DT": "Delta Browser" +- "DS": "DeskBrowse" - "DF": "Dolphin" - "DO": "Dorado" +- "DR": "Dot Browser" - "DL": "Dooble" - "DI": "Dillo" - "DD": "DuckDuckGo Privacy Browser" - "EC": "Ecosia" +- "EW": "Edge WebView" - "EI": "Epic" - "EL": "Elinks" - "EB": "Element Browser" @@ -88,18 +114,33 @@ - "FY": "Firefox Reality" - "FR": "Firefox Rocket" - "FL": "Flock" +- "FO": "Flow" - "FM": "Firefox Mobile" - "FW": "Fireweb" - "FN": "Fireweb Navigator" +- "FH": "Flash Browser" +- "FS": "Flast" - "FU": "FreeU" - "GA": "Galeon" +- "GH": "Ghostery Privacy Browser" +- "GI": "GinxDroid Browser" - "GB": "Glass Browser" - "GE": "Google Earth" +- "GP": "Google Earth Pro" - "GO": "GOG Galaxy" +- "GR": "GoBrowser" +- "HB": "Harman Browser" +- "HS": "HasBrowser" - "HA": "Hawk Turbo Browser" +- "HQ": "Hawk Quick Browser" +- "HE": "Helio" +- "HI": "Hi Browser" - "HO": "hola! Browser" - "HJ": "HotJava" -- "HU": "Huawei Browser" +- "HU": "Huawei Browser Mobile" +- "HP": "Huawei Browser" +- "IO": "iBrowser" +- "IS": "iBrowser Mini" - "IB": "IBrowse" - "IC": "iCab" - "I2": "iCab Mobile" @@ -112,7 +153,9 @@ - "IE": "Internet Explorer" - "IM": "IE Mobile" - "IR": "Iron" +- "JB": "Japan Browser" - "JS": "Jasmine" +- "JA": "JavaFX" - "JI": "Jig Browser" - "JP": "Jig Browser Plus" - "JO": "Jio Browser" @@ -123,19 +166,24 @@ - "KP": "Kapiko" - "KN": "Kinza" - "KW": "Kiwi" +- "KD": "Kode Browser" - "KY": "Kylo" - "KZ": "Kazehakase" - "LB": "Cheetah Browser" +- "LA": "Lagatos Browser" - "LF": "LieBaoFast" - "LG": "LG Browser" - "LH": "Light" - "LI": "Links" +- "IF": "Lolifox" - "LO": "Lovense Browser" +- "LT": "LT Browser" - "LU": "LuaKit" - "LL": "Lulumi" - "LS": "Lunascape" - "LN": "Lunascape Lite" - "LX": "Lynx" +- "MD": "Mandarin" - "M1": "mCent" - "MB": "MicroB" - "MC": "NCSA Mosaic" @@ -149,7 +197,14 @@ - "MN": "Minimo" - "MT": "Mint Browser" - "MX": "Maxthon" +- "MA": "Maelstrom" +- "NM": "MxNitro" - "MY": "Mypal" +- "MR": "Monument Browser" +- "MW": "MAUI WAP Browser" +- "NA": "Navegador" +- "NW": "Navigateur Web" +- "NR": "NFS Browser" - "NB": "Nokia Browser" - "NO": "Nokia OSS Browser" - "NV": "Nokia Ovi Browser" @@ -163,6 +218,8 @@ - "OC": "Oculus Browser" - "O1": "Opera Mini iOS" - "OB": "Obigo" +- "O2": "Odin" +- "H2": "OceanHero" - "OD": "Odyssey Web Browser" - "OF": "Off By One" - "HH": "OhHai Browser" @@ -175,11 +232,13 @@ - "OP": "Opera" - "ON": "Opera Next" - "OO": "Opera Touch" +- "OA": "Orca" - "OS": "Ordissimo" - "OR": "Oregano" - "O0": "Origin In-Game Overlay" - "OY": "Origyn Web Browser" - "OV": "Openwave Mobile Browser" +- "O3": "OpenFin" - "OW": "OmniWeb" - "OT": "Otter Browser" - "PL": "Palm Blazer" @@ -190,10 +249,21 @@ - "PU": "Puffin" - "PW": "Palm WebPro" - "PA": "Palmscape" +- "PE": "Perfect Browser" +- "PH": "Phantom Browser" - "PX": "Phoenix" +- "PB": "Phoenix Browser" +- "PF": "PlayFree Browser" +- "PK": "PocketBook Browser" - "PO": "Polaris" - "PT": "Polarity" +- "LY": "PolyBrowser" +- "PI": "PrivacyWall" +- "PC": "PSI Secure Browser" +- "RW": "Reqwireless WebViewer" - "PS": "Microsoft Edge" +- "QA": "Qazweb" +- "Q2": "QQ Browser Lite" - "Q1": "QQ Browser Mini" - "QQ": "QQ Browser" - "QT": "Qutebrowser" @@ -206,30 +276,46 @@ - "RM": "RockMelt" - "SB": "Samsung Browser" - "SA": "Sailfish Browser" +- "S8": "Seewo Browser" - "SC": "SEMC-Browser" - "SE": "Sogou Explorer" - "SF": "Safari" +- "PV": "Safari Technology Preview" - "S5": "Safe Exam Browser" - "SW": "SalamWeb" +- "S9": "Secure Browser" +- "SV": "SFive" - "SH": "Shiira" - "S1": "SimpleBrowser" - "SY": "Sizzy" - "SK": "Skyfire" - "SS": "Seraphic Sraf" +- "KK": "SiteKiosk" - "SL": "Sleipnir" +- "S6": "Slimjet" +- "S7": "SP Browser" +- "T1": "Stampy Browser" +- "7S": "7Star" +- "LE": "Smart Lenovo Browser" +- "OZ": "Smooz" - "SN": "Snowshoe" - "SO": "Sogou Mobile Browser" +- "B1": "Spectre Browser" - "S2": "Splash" - "SI": "Sputnik Browser" - "SR": "Sunrise" - "SP": "SuperBird" - "SU": "Super Fast Browser" +- "HR": "Sushi Browser" - "S3": "surf" +- "SG": "Stargon" - "S0": "START Internet Browser" - "S4": "Steam In-Game Overlay" - "ST": "Streamy" - "SX": "Swiftfox" - "SZ": "Seznam Browser" +- "TP": "T+Browser" +- "TR": "T-Browser" - "TO": "t-online.de Browser" - "TA": "Tao Browser" - "TF": "TenFourFox" @@ -241,9 +327,12 @@ - "TV": "TV Bro" - "UB": "UBrowser" - "UC": "UC Browser" +- "UH": "UC Browser HD" - "UM": "UC Browser Mini" - "UT": "UC Browser Turbo" +- "UR": "UR Browser" - "UZ": "Uzbl" +- "VE": "Venus Browser" - "VI": "Vivaldi" - "VV": "vivo Browser" - "VB": "Vision Mobile Browser" @@ -259,8 +348,12 @@ - "YA": "Yandex Browser" - "YL": "Yandex Browser Lite" - "YN": "Yaani Browser" +- "YB": "Yolo Browser" +- "YO": "YouCare" +- "XS": "xStand" - "XI": "Xiino" - "XV": "Xvast" +- "ZE": "Zetakey" - "ZV": "Zvu" - "IA": "Iceape" - "SM": "SeaMonkey" diff --git a/priv/ua_inspector/short_codes.device_brands.yml b/priv/ua_inspector/short_codes.device_brands.yml deleted file mode 100644 index 7c62163bda64870b3d269003ab6f52011811db77..0000000000000000000000000000000000000000 --- a/priv/ua_inspector/short_codes.device_brands.yml +++ /dev/null @@ -1,742 +0,0 @@ -- "36": "360" -- "88": "8848" -- "3Q": "3Q" -- "4G": "4Good" -- "AE": "Ace" -- "AA": "AllCall" -- "3A": "AllDocube" -- "AC": "Acer" -- "00": "Accent" -- "A9": "Advan" -- "AD": "Advance" -- "A3": "AGM" -- "AZ": "Ainol" -- "AI": "Airness" -- "0A": "AIS" -- "AW": "Aiwa" -- "AK": "Akai" -- "1A": "Alba" -- "AL": "Alcatel" -- "20": "Alcor" -- "4A": "Aligator" -- "A2": "Allview" -- "A7": "Allwinner" -- "A1": "Altech UEC" -- "A5": "altron" -- "3L": "Alfawise" -- "AN": "Arnova" -- "7A": "Anry" -- "5A": "ArmPhone" -- "2A": "Atom" -- "KN": "Amazon" -- "AG": "AMGOO" -- "9A": "Amigoo" -- "AO": "Amoi" -- "3N": "Aoson" -- "AP": "Apple" -- "AR": "Archos" -- "AS": "ARRIS" -- "AB": "Arian Space" -- "AT": "Airties" -- "6A": "AT&T" -- "A6": "Ark" -- "A4": "Ask" -- "8A": "Asano" -- "A8": "Assistant" -- "A0": "ANS" -- "AU": "Asus" -- "AH": "AVH" -- "ZA": "Avenzo" -- "AV": "Avvio" -- "AX": "Audiovox" -- "AY": "Axxion" -- "AM": "Azumi Mobile" -- "BB": "BBK" -- "0B": "BB Mobile" -- "BE": "Becker" -- "B5": "Beeline" -- "B0": "Beelink" -- "BI": "Bird" -- "1B": "Billion" -- "BT": "Bitel" -- "B8": "BIHEE" -- "B7": "Bitmore" -- "BG": "BGH" -- "BL": "Beetel" -- "BP": "Blaupunkt" -- "B3": "Bluboo" -- "BF": "Black Fox" -- "B6": "BDF" -- "BM": "Bmobile" -- "BN": "Barnes & Noble" -- "BO": "BangOlufsen" -- "B9": "Bobarry" -- "BQ": "BenQ" -- "BS": "BenQ-Siemens" -- "BU": "Blu" -- "BD": "Bluegood" -- "B2": "Blackview" -- "B4": "bogo" -- "BW": "Boway" -- "BZ": "Bezkam" -- "BX": "bq" -- "BV": "Bravis" -- "BR": "Brondi" -- "B1": "Bush" -- "CB": "CUBOT" -- "CF": "Carrefour" -- "CP": "Captiva" -- "CS": "Casio" -- "R4": "Casper" -- "CA": "Cat" -- "C9": "CAGI" -- "CE": "Celkon" -- "CC": "ConCorde" -- "C2": "Changhong" -- "2C": "Ghong" -- "CH": "Cherry Mobile" -- "1C": "Chuwi" -- "L8": "Clarmin" -- "CD": "Cloudfone" -- "C0": "Clout" -- "CK": "Cricket" -- "C1": "Crosscall" -- "CL": "Compal" -- "CN": "CnM" -- "CM": "Crius Mea" -- "C3": "China Mobile" -- "CR": "CreNova" -- "0C": "Crony" -- "CT": "Capitel" -- "CQ": "Compaq" -- "3C": "Contixo" -- "CO": "Coolpad" -- "C5": "Condor" -- "CW": "Cowon" -- "CU": "Cube" -- "CY": "Coby Kyros" -- "C6": "Comio" -- "C7": "ComTrade Tesla" -- "C8": "Concord" -- "CX": "Crescent" -- "C4": "Cyrus" -- "CV": "CVTE" -- "D5": "Daewoo" -- "DA": "Danew" -- "DT": "Datang" -- "D7": "Datawind" -- "D1": "Datsun" -- "DE": "Denver" -- "DW": "DeWalt" -- "DX": "DEXP" -- "DS": "Desay" -- "DB": "Dbtel" -- "DC": "DoCoMo" -- "D9": "Dolamee" -- "D0": "Doopro" -- "DG": "Dialog" -- "DI": "Dicam" -- "D4": "Digi" -- "D3": "Digicel" -- "DD": "Digiland" -- "D2": "Digma" -- "D6": "Divisat" -- "DL": "Dell" -- "DN": "DNS" -- "DM": "DMM" -- "DO": "Doogee" -- "DF": "Doffler" -- "DV": "Doov" -- "DP": "Dopod" -- "DR": "Doro" -- "D8": "Droxio" -- "DU": "Dune HD" -- "EB": "E-Boda" -- "2E": "E-Ceros" -- "5E": "2E" -- "EA": "EBEST" -- "EC": "Ericsson" -- "E7": "Ergo" -- "ED": "Energizer" -- "E4": "Echo Mobiles" -- "ES": "ECS" -- "E6": "EE" -- "EI": "Ezio" -- "EM": "Eks Mobility" -- "EL": "Elephone" -- "4E": "Eltex" -- "L0": "Element" -- "EG": "Elenberg" -- "EP": "Easypix" -- "EK": "EKO" -- "E1": "Energy Sistem" -- "3E": "Enot" -- "ER": "Ericy" -- "EE": "Essential" -- "EN": "Eton" -- "E2": "Essentielb" -- "1E": "Etuline" -- "ET": "eTouch" -- "EV": "Evertek" -- "E3": "Evolio" -- "EO": "Evolveo" -- "EX": "Explay" -- "E0": "EvroMedia" -- "E5": "Extrem" -- "EZ": "Ezze" -- "E8": "E-tel" -- "E9": "Evercoss" -- "EU": "Eurostar" -- "FA": "Fairphone" -- "FM": "Famoco" -- "FE": "Fengxiang" -- "FI": "FiGO" -- "F3": "FireFly Mobile" -- "FL": "Fly" -- "F1": "FinePower" -- "FT": "Freetel" -- "F7": "Fero" -- "FR": "Forstar" -- "FO": "Foxconn" -- "F2": "FORME" -- "FN": "FNB" -- "FU": "Fujitsu" -- "FD": "Fondi" -- "GT": "G-TiDE" -- "GM": "Garmin-Asus" -- "GA": "Gateway" -- "GD": "Gemini" -- "GN": "General Mobile" -- "GE": "Geotel" -- "GH": "Ghia" -- "GI": "Gionee" -- "GG": "Gigabyte" -- "GS": "Gigaset" -- "GZ": "Ginzzu" -- "G4": "Globex" -- "GC": "GOCLEVER" -- "GL": "Goly" -- "GO": "Google" -- "G5": "Gome" -- "G1": "GoMobile" -- "GR": "Gradiente" -- "GP": "Grape" -- "G6": "Gree" -- "G0": "Goophone" -- "GU": "Grundig" -- "HF": "Hafury" -- "HA": "Haier" -- "HS": "Hasee" -- "HE": "HannSpree" -- "HI": "Hisense" -- "HL": "Hi-Level" -- "H2": "Highscreen" -- "H1": "Hoffmann" -- "HM": "Homtom" -- "HO": "Hosin" -- "HW": "How" -- "HV": "Hotwav" -- "HZ": "Hoozo" -- "HP": "HP" -- "HT": "HTC" -- "HD": "Huadoo" -- "HU": "Huawei" -- "HX": "Humax" -- "HY": "Hyrican" -- "HN": "Hyundai" -- "IG": "iGet" -- "IA": "Ikea" -- "IB": "iBall" -- "3I": "i-Cherry" -- "IJ": "i-Joy" -- "IC": "iDroid" -- "IY": "iBerry" -- "7I": "iBrit" -- "IH": "iHunt" -- "IK": "iKoMo" -- "IE": "iView" -- "I8": "iVA" -- "1I": "iMars" -- "IM": "i-mate" -- "2I": "iLife" -- "I1": "iOcean" -- "I2": "IconBIT" -- "IL": "IMO Mobile" -- "I7": "iLA" -- "IW": "iNew" -- "IP": "iPro" -- "IF": "Infinix" -- "I0": "InFocus" -- "I5": "InnJoo" -- "IN": "Innostream" -- "IS": "Insignia" -- "I4": "Inoi" -- "IR": "iRola" -- "IU": "iRulu" -- "I6": "Irbis" -- "II": "Inkti" -- "IX": "Intex" -- "4I": "Invin" -- "IO": "i-mobile" -- "IQ": "INQ" -- "8Q": "IQM" -- "IT": "Intek" -- "IV": "Inverto" -- "I3": "Impression" -- "IZ": "iTel" -- "0I": "iTruck" -- "I9": "iZotron" -- "JA": "JAY-Tech" -- "JI": "Jiayu" -- "JG": "Jinga" -- "JO": "Jolla" -- "J5": "Just5" -- "JF": "JFone" -- "JK": "JKL" -- "KL": "Kalley" -- "0K": "Klipad" -- "K4": "Kaan" -- "K7": "Kaiomy" -- "K6": "Kanji" -- "KA": "Karbonn" -- "K5": "KATV1" -- "KD": "KDDI" -- "K1": "Kiano" -- "KV": "Kivi" -- "KI": "Kingsun" -- "KC": "Kocaso" -- "KG": "Kogan" -- "KO": "Konka" -- "KM": "Komu" -- "KB": "Koobee" -- "K9": "Kooper" -- "KT": "K-Touch" -- "KH": "KT-Tech" -- "KK": "Kodak" -- "KP": "KOPO" -- "KW": "Konrow" -- "KR": "Koridy" -- "K2": "KRONO" -- "KS": "Kempler & Strauss" -- "K3": "Keneksi" -- "K8": "Kuliao" -- "KU": "Kumai" -- "KY": "Kyocera" -- "KZ": "Kazam" -- "1K": "Kzen" -- "KE": "Krüger&Matz" -- "KX": "Kenxinda" -- "LQ": "LAIQ" -- "L2": "Landvo" -- "L6": "Land Rover" -- "LV": "Lava" -- "LA": "Lanix" -- "LK": "Lark" -- "LC": "LCT" -- "L5": "Leagoo" -- "LD": "Ledstar" -- "L1": "LeEco" -- "L4": "Lemhoov" -- "LE": "Lenovo" -- "LN": "Lenco" -- "LT": "Leotec" -- "L7": "Lephone" -- "LZ": "Lesia" -- "LP": "Le Pan" -- "LG": "LG" -- "LI": "Lingwin" -- "LO": "Loewe" -- "LM": "Logicom" -- "1L": "Logic" -- "L3": "Lexand" -- "LX": "Lexibook" -- "LY": "LYF" -- "LU": "Lumus" -- "0L": "Lumigon" -- "L9": "Luna" -- "MN": "M4tel" -- "XM": "Macoox" -- "MJ": "Majestic" -- "MA": "Manta Multimedia" -- "6X": "Maxtron" -- "5M": "Mann" -- "2M": "Masstel" -- "MW": "Maxwest" -- "7M": "Maxcom" -- "0D": "MAXVI" -- "M0": "Maze" -- "MB": "Mobistel" -- "9M": "Mobo" -- "0M": "Mecool" -- "M3": "Mecer" -- "MD": "Medion" -- "M2": "MEEG" -- "M1": "Meizu" -- "3M": "Meitu" -- "ME": "Metz" -- "09": "meanIT" -- "0E": "Melrose" -- "MX": "MEU" -- "MI": "MicroMax" -- "8M": "Mito" -- "1X": "Minix" -- "M5": "MIXC" -- "1Z": "MiXzo" -- "MH": "Mobiola" -- "4M": "Mobicel" -- "M6": "Mobiistar" -- "MC": "Mediacom" -- "MK": "MediaTek" -- "MO": "Mio" -- "M7": "Miray" -- "MM": "Mpman" -- "LS": "MLS" -- "M4": "Modecom" -- "MF": "Mofut" -- "MR": "Motorola" -- "MV": "Movic" -- "MS": "Microsoft" -- "M9": "MTC" -- "MP": "MegaFon" -- "MZ": "MSI" -- "MU": "Memup" -- "MT": "Mitsubishi" -- "ML": "MLLED" -- "MQ": "M.T.T." -- "N4": "MTN" -- "MY": "MyPhone" -- "3T": "MyTab" -- "1M": "MYFON" -- "MG": "MyWigo" -- "M8": "Myria" -- "6M": "Mystery" -- "1R": "Multilaser" -- "N3": "Navon" -- "N7": "National" -- "N5": "NOA" -- "NE": "NEC" -- "4N": "NextTab" -- "5N": "Nos" -- "1N": "Neomi" -- "NF": "Neffos" -- "NA": "Netgear" -- "NU": "NeuImage" -- "NG": "NGM" -- "NZ": "NG Optics" -- "N6": "Nobby" -- "NO": "Nous" -- "NI": "Nintendo" -- "0N": "Newman" -- "N1": "Noain" -- "N2": "Nextbit" -- "NK": "Nokia" -- "NV": "Nvidia" -- "NB": "Noblex" -- "NM": "Nomi" -- "2N": "Nomu" -- "N0": "Nuvo" -- "NL": "NUU Mobile" -- "NY": "NYX Mobile" -- "NN": "Nikon" -- "N9": "Newland" -- "NW": "Newgen" -- "NS": "NewsMy" -- "NX": "Nexian" -- "N8": "NEXON" -- "NT": "NextBook" -- "O3": "O+" -- "OB": "Obi" -- "O1": "Odys" -- "OD": "Onda" -- "ON": "OnePlus" -- "OX": "Onix" -- "OH": "Openbox" -- "OP": "OPPO" -- "O4": "ONN" -- "OR": "Orange" -- "O5": "Orbic" -- "OS": "Ordissimo" -- "OT": "O2" -- "OK": "Ouki" -- "OE": "Oukitel" -- "OU": "OUYA" -- "OO": "Opsson" -- "OV": "Overmax" -- "30": "Ovvi" -- "OY": "Oysters" -- "O6": "Oyyu" -- "OW": "öwn" -- "O2": "Owwo" -- "OZ": "OzoneHD" -- "PN": "Panacom" -- "PA": "Panasonic" -- "PB": "PCBOX" -- "PC": "PCD" -- "PD": "PCD Argentina" -- "PE": "PEAQ" -- "PG": "Pentagram" -- "PH": "Philips" -- "4P": "Philco" -- "1P": "Phicomm" -- "PI": "Pioneer" -- "PX": "Pixus" -- "PL": "Polaroid" -- "P5": "Polytron" -- "P9": "Primepad" -- "2P": "Prixton" -- "P6": "Proline" -- "PM": "Palm" -- "0P": "POCO" -- "3P": "Positivo BGH" -- "PO": "phoneOne" -- "5P": "Phonemax" -- "PT": "Pantech" -- "PY": "Ployer" -- "P4": "Plum" -- "P8": "PocketBook" -- "PV": "Point of View" -- "PP": "PolyPad" -- "P2": "Pomp" -- "P3": "PPTV" -- "PS": "Positivo" -- "PR": "Prestigio" -- "6P": "Primux" -- "P7": "Protruly" -- "P1": "ProScan" -- "PU": "PULID" -- "QB": "Q.Bell" -- "QI": "Qilive" -- "QT": "Qtek" -- "QH": "Q-Touch" -- "QM": "QMobile" -- "QA": "Quantum" -- "QU": "Quechua" -- "QO": "Qumo" -- "RA": "Ramos" -- "RE": "Realme" -- "R8": "RED" -- "R9": "Ravoz" -- "RZ": "Razer" -- "RC": "RCA Tablets" -- "RB": "Readboy" -- "RI": "Rikomagic" -- "RN": "Rinno" -- "RV": "Riviera" -- "RM": "RIM" -- "RK": "Roku" -- "RO": "Rover" -- "R6": "RoverPad" -- "RR": "Roadrover" -- "R1": "Rokit" -- "R3": "Rombica" -- "RT": "RT Project" -- "RX": "Ritmix" -- "R7": "Ritzviva" -- "R5": "Ross&Moor" -- "R2": "R-TV" -- "RG": "RugGear" -- "RU": "Runbo" -- "RY": "Ryte" -- "SQ": "Santin" -- "SA": "Samsung" -- "S0": "Sanei" -- "CZ": "Schneider" -- "SD": "Sega" -- "SL": "Selfix" -- "SE": "Sony Ericsson" -- "01": "Senkatel" -- "S1": "Sencor" -- "SF": "Softbank" -- "SX": "SFR" -- "SG": "Sagem" -- "SH": "Sharp" -- "7S": "Shift Phones" -- "3S": "Shuttle" -- "SI": "Siemens" -- "SJ": "Silent Circle" -- "1S": "Sigma" -- "SN": "Sendo" -- "0S": "SEMP TCL" -- "S6": "Senseit" -- "EW": "Senwa" -- "SW": "Sky" -- "SK": "Skyworth" -- "SC": "Smartfren" -- "SO": "Sony" -- "OI": "Sonim" -- "X2": "Soundmax" -- "8S": "Soyes" -- "SP": "Spice" -- "6S": "Spectrum" -- "9S": "Sugar" -- "5S": "Sunvell" -- "0H": "Sunstech" -- "SU": "SuperSonic" -- "S5": "Supra" -- "SV": "Selevision" -- "SY": "Sanyo" -- "SM": "Symphony" -- "4S": "Syrox" -- "SR": "Smart" -- "S7": "Smartisan" -- "S4": "Star" -- "SB": "STF Mobile" -- "S8": "STK" -- "S9": "Savio" -- "2S": "Starway" -- "ST": "Storex" -- "S2": "Stonex" -- "S3": "SunVan" -- "SZ": "Sumvision" -- "SS": "SWISSMOBILITY" -- "QS": "SQOOL" -- "0W": "Swipe" -- "10": "Simbans" -- "X1": "Safaricom" -- "TA": "Tesla" -- "TK": "Takara" -- "4T": "Tronsmart" -- "5R": "Transpeed" -- "T5": "TB Touch" -- "TC": "TCL" -- "T7": "Teclast" -- "TE": "Telit" -- "9T": "Tetratab" -- "T4": "ThL" -- "TH": "TiPhone" -- "TB": "Tecno Mobile" -- "TP": "TechPad" -- "TD": "Tesco" -- "T0": "TD Systems" -- "TI": "TIANYU" -- "2T": "Tinai" -- "TG": "Telego" -- "TL": "Telefunken" -- "2L": "Tele2" -- "T2": "Telenor" -- "TM": "T-Mobile" -- "TN": "Thomson" -- "8T": "Time2" -- "TQ": "Timovi" -- "TY": "Tooky" -- "0T": "Tone" -- "T1": "Tolino" -- "T9": "Top House" -- "TO": "Toplux" -- "7T": "Torex" -- "T8": "Touchmate" -- "TS": "Toshiba" -- "TT": "TechnoTrend" -- "T6": "TrekStor" -- "T3": "Trevi" -- "TU": "Tunisie Telecom" -- "TR": "Turbo-X" -- "1T": "Turbo" -- "5T": "TurboKids" -- "11": "True" -- "TV": "TVC" -- "TW": "TWM" -- "6T": "Twoe" -- "TX": "TechniSat" -- "TZ": "teXet" -- "UC": "U.S. Cellular" -- "UH": "Uhappy" -- "U1": "Uhans" -- "UG": "Ugoos" -- "UL": "Ulefone" -- "UO": "Unnecto" -- "UN": "Unowhy" -- "US": "Uniscope" -- "UX": "Unimax" -- "UM": "UMIDIGI" -- "UU": "Unonu" -- "UK": "UTOK" -- "UA": "Umax" -- "UT": "UTStarcom" -- "UZ": "Unihertz" -- "VA": "Vastking" -- "VD": "Videocon" -- "VE": "Vertu" -- "VN": "Venso" -- "V5": "Vivax" -- "0V": "Vipro" -- "VI": "Vitelcom" -- "V7": "Vinga" -- "VK": "VK Mobile" -- "VS": "ViewSonic" -- "VH": "Vsmart" -- "V9": "Vsun" -- "V8": "Vesta" -- "VT": "Vestel" -- "VR": "Vernee" -- "V4": "Verizon" -- "VL": "Verykool" -- "V6": "VGO TEL" -- "VV": "Vivo" -- "3V": "VVETIME" -- "VX": "Vertex" -- "V3": "Vinsoc" -- "V2": "Vonino" -- "1V": "Vontar" -- "VG": "Vorago" -- "2V": "Vorke" -- "V1": "Voto" -- "VO": "Voxtel" -- "VF": "Vodafone" -- "VM": "Vodacom" -- "V0": "VKworld" -- "VY": "Voyo" -- "VZ": "Vizio" -- "VW": "Videoweb" -- "VU": "Vulcan" -- "WA": "Walton" -- "WF": "Wileyfox" -- "WN": "Wink" -- "WM": "Weimei" -- "WE": "WellcoM" -- "WY": "Wexler" -- "W2": "Wigor" -- "WI": "Wiko" -- "WS": "Winds" -- "WP": "Wieppo" -- "WL": "Wolder" -- "WG": "Wolfgang" -- "WO": "Wonu" -- "W1": "Woo" -- "WX": "Woxter" -- "WR": "Wortmann" -- "XV": "X-View" -- "XI": "Xiaomi" -- "XL": "Xiaolajiao" -- "XN": "Xion" -- "XO": "Xolo" -- "XR": "Xoro" -- "XG": "Xgody" -- "YA": "Yarvik" -- "YD": "Yandex" -- "Y2": "Yes" -- "YE": "Yezz" -- "Y1": "Yu" -- "YU": "Yuandao" -- "YS": "Yusun" -- "YO": "Yota" -- "YT": "Ytone" -- "YX": "Yxtel" -- "ZE": "Zeemi" -- "ZK": "Zenek" -- "ZF": "Zfiner" -- "ZO": "Zonda" -- "ZI": "Zidoo" -- "ZX": "Ziox" -- "ZP": "Zopo" -- "ZT": "ZTE" -- "ZU": "Zuum" -- "ZN": "Zen" -- "ZY": "Zync" -- "ZQ": "ZYQ" -- "XS": "Xshitou" -- "XT": "X-TIGI" -- "XB": "NEXBOX" -- "X3": "X-BO" -- "WB": "Web TV" -- "XX": "Unknown" diff --git a/priv/ua_inspector/short_codes.mobile_browsers.yml b/priv/ua_inspector/short_codes.mobile_browsers.yml index b6426d96d6543e85c17d6105283a5a20b585db67..69a3746e1c569c38d1d60cfe61538acc5b91d53a 100644 --- a/priv/ua_inspector/short_codes.mobile_browsers.yml +++ b/priv/ua_inspector/short_codes.mobile_browsers.yml @@ -1,41 +1,65 @@ - "36" -- "OC" -- "PU" -- "SK" -- "MF" -- "OI" -- "OM" -- "DD" -- "DB" -- "ST" +- "AH" +- "AI" - "BL" -- "IV" -- "FM" - "C1" -- "AL" -- "SA" -- "SB" -- "FR" -- "WP" -- "HA" -- "NX" -- "HU" -- "VV" -- "RE" +- "C4" - "CB" -- "MZ" -- "UM" +- "CW" +- "DB" +- "DD" +- "DT" +- "EU" +- "EZ" - "FK" +- "FM" +- "FR" - "FX" -- "WI" -- "MN" +- "GH" +- "GI" +- "GR" +- "HA" +- "HU" +- "IV" +- "JB" +- "KD" - "M1" -- "AH" +- "MF" +- "MN" +- "MZ" +- "NX" +- "OC" +- "OI" +- "OM" +- "OZ" +- "PU" +- "PI" +- "PE" +- "QU" +- "RE" +- "S0" +- "S7" +- "SA" +- "SB" +- "SG" +- "SK" +- "ST" - "SU" -- "EU" -- "EZ" +- "T1" +- "UH" +- "UM" - "UT" -- "DT" -- "S0" -- "QU" +- "VE" +- "VV" +- "WI" +- "WP" - "YN" +- "IO" +- "IS" +- "HQ" +- "RW" +- "HI" +- "NA" +- "BW" +- "YO" +- "PK" diff --git a/priv/ua_inspector/short_codes.os_families.yml b/priv/ua_inspector/short_codes.os_families.yml index ae35189aff5f4b3e3f71ec07b641eb165ab31aa7..0ba4138ccb24d430ee56684584514b7053f09d4d 100644 --- a/priv/ua_inspector/short_codes.os_families.yml +++ b/priv/ua_inspector/short_codes.os_families.yml @@ -7,11 +7,14 @@ - "MLD" - "MCD" - "YNS" + - "GRI" + - "HAR" + - "ADR" + - "CLR" + - "" - "AmigaOS": - "AMG" - "MOR" -- "Apple TV": - - "ATV" - "BlackBerry": - "BLB" - "QNX" @@ -22,6 +25,8 @@ - "HAI" - "Chrome OS": - "COS" + - "FYD" + - "SEE" - "Firefox OS": - "FOS" - "KOS" @@ -34,6 +39,9 @@ - "OS2" - "iOS": - "IOS" + - "ATV" + - "WAS" + - "IPA" - "RISC OS": - "ROS" - "GNU/Linux": @@ -59,6 +67,32 @@ - "SAF" - "ORD" - "TOS" + - "RSO" + - "DEE" + - "FRE" + - "MAG" + - "FEN" + - "CAI" + - "PCL" + - "HAS" + - "LOS" + - "DVK" + - "ROK" + - "OWR" + - "OTV" + - "KTV" + - "PUR" + - "PLA" + - "FUC" + - "PAR" + - "FOR" + - "MON" + - "KAN" + - "ZEN" + - "LND" + - "LNS" + - "CHN" + - "" - "Mac": - "MAC" - "Mobile Gaming Console": @@ -68,6 +102,9 @@ - "Real-time OS": - "MTK" - "TDX" + - "MRE" + - "JME" + - "REX" - "Other Mobile": - "WOS" - "POS" @@ -103,3 +140,5 @@ - "WCE" - "WRT" - "WIO" +- "Other Smart TV": + - "WHS" diff --git a/priv/ua_inspector/short_codes.oss.yml b/priv/ua_inspector/short_codes.oss.yml index 31a0e1725a35f7eddfd697adace3c4111a0eeb03..89fd64e93a994ee4e4bbf8d7725f9c2623e09c3c 100644 --- a/priv/ua_inspector/short_codes.oss.yml +++ b/priv/ua_inspector/short_codes.oss.yml @@ -1,7 +1,8 @@ - "AIX": "AIX" - "AND": "Android" +- "ADR": "Android TV" - "AMG": "AmigaOS" -- "ATV": "Apple TV" +- "ATV": "tvOS" - "ARL": "Arch Linux" - "BTR": "BackTrack" - "SBA": "Bada" @@ -9,52 +10,85 @@ - "BLB": "BlackBerry OS" - "QNX": "BlackBerry Tablet OS" - "BMP": "Brew" +- "CAI": "Caixa Mágica" - "CES": "CentOS" +- "CLR": "ClearOS Mobile" - "COS": "Chrome OS" +- "CHN": "China OS" - "CYN": "CyanogenMod" - "DEB": "Debian" +- "DEE": "Deepin" - "DFB": "DragonFly" +- "DVK": "DVKBuntu" - "FED": "Fedora" +- "FEN": "Fenix" - "FOS": "Firefox OS" - "FIR": "Fire OS" +- "FOR": "Foresight Linux" +- "FRE": "Freebox" - "BSD": "FreeBSD" +- "FYD": "FydeOS" +- "FUC": "Fuchsia" - "GNT": "Gentoo" +- "GRI": "GridOS" - "GTV": "Google TV" - "HPX": "HP-UX" - "HAI": "Haiku OS" +- "IPA": "iPadOS" +- "HAR": "HarmonyOS" +- "HAS": "HasCodingOS" - "IRI": "IRIX" - "INF": "Inferno" +- "JME": "Java ME" - "KOS": "KaiOS" +- "KAN": "Kanotix" - "KNO": "Knoppix" +- "KTV": "KreaTV" - "KBT": "Kubuntu" - "LIN": "GNU/Linux" +- "LND": "LindowsOS" +- "LNS": "Linspire" - "LBT": "Lubuntu" +- "LOS": "Lumin OS" - "VLN": "VectorLinux" - "MAC": "Mac" - "MAE": "Maemo" +- "MAG": "Mageia" - "MDR": "Mandriva" - "SMG": "MeeGo" - "MCD": "MocorDroid" +- "MON": "moonOS" - "MIN": "Mint" - "MLD": "MildWild" - "MOR": "MorphOS" - "NBS": "NetBSD" - "MTK": "MTK / Nucleus" +- "MRE": "MRE" - "WII": "Nintendo" - "NDS": "Nintendo Mobile" - "OS2": "OS/2" - "T64": "OSF1" - "OBS": "OpenBSD" +- "OWR": "OpenWrt" +- "OTV": "Opera TV" - "ORD": "Ordissimo" +- "PAR": "Pardus" +- "PCL": "PCLinuxOS" +- "PLA": "Plasma Mobile" - "PSP": "PlayStation Portable" - "PS3": "PlayStation" +- "PUR": "PureOS" - "RHT": "Red Hat" - "ROS": "RISC OS" +- "ROK": "Roku OS" +- "RSO": "Rosa" - "REM": "Remix OS" +- "REX": "REX" - "RZD": "RazoDroiD" - "SAB": "Sabayon" - "SSE": "SUSE" - "SAF": "Sailfish OS" +- "SEE": "SeewoOS" - "SLW": "Slackware" - "SOS": "Solaris" - "SYL": "Syllable" @@ -67,7 +101,9 @@ - "TIZ": "Tizen" - "TOS": "TmaxOS" - "UBT": "Ubuntu" +- "WAS": "watchOS" - "WTV": "WebTV" +- "WHS": "Whale OS" - "WIN": "Windows" - "WCE": "Windows CE" - "WIO": "Windows IoT" @@ -76,7 +112,8 @@ - "WRT": "Windows RT" - "XBX": "Xbox" - "XBT": "Xubuntu" -- "YNS": "YunOs" +- "YNS": "YunOS" +- "ZEN": "Zenwalk" - "IOS": "iOS" - "POS": "palmOS" - "WOS": "webOS"