1###############
2# Device Detector - The Universal Device Detection library for parsing User Agents
3#
4# @link https://matomo.org
5# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6###############
7
8# Ace or ACE France (www.acemobile.fr)
9Ace:
10  regex: '(?:BUZZ [12]|BUZZ 2|CLEVER 1|URBAN 1(?: Pro)?)(?:[);/ ]|$)'
11  device: 'smartphone'
12  models:
13    - regex: 'BUZZ ([12]) Lite'
14      model: 'Buzz $1 Lite'
15    - regex: 'BUZZ ([12]) Plus'
16      model: 'Buzz $1 Plus'
17    - regex: 'BUZZ ([12])'
18      model: 'Buzz $1'
19    - regex: 'CLEVER 1'
20      model: 'Clever 1'
21    - regex: 'URBAN 1 Pro'
22      model: 'Urban 1 Pro'
23    - regex: 'URBAN 1'
24      model: 'Urban 1'
25
26'Tunisie Telecom':
27  regex: 'StarTrail TT(?:[);/ ]|$)'
28  device: 'smartphone'
29  model: 'StarTrail by TT'
30
31# SFR
32SFR:
33  regex: 'StarShine|StarTrail|STARADDICT|StarText|StarNaute|StarXtrem|StarTab'
34  device: 'smartphone'
35  models:
36    - regex: 'StarXtrem II(?:[);/ ]|$)'
37      model: 'StarXtrem 2'
38    - regex: 'StarXtrem ?([3-6])(?:[);/ ]|$)'
39      model: 'StarXtrem $1'
40    - regex: 'StarXtrem(?:[);/ ]|$)'
41      model: 'StarXtrem' # ZTE
42    - regex: 'StarTrail III(?:[);/ ]|$)'
43      model: 'StarTrail 3'
44    - regex: 'StarTrail II(?:[);/ ]|$)'
45      model: 'StarTrail 2' # Huawei Ascend Y200
46    - regex: 'StarTrail[ _]?([1-9])[ _]([34])G(?:[);/ ]|$)' # ZTE
47      model: 'StarTrail $1 $2G'
48    - regex: 'StarTrail[ _]?([1-9])(?:[);/ ]|$)'
49      model: 'StarTrail $1'
50    - regex: 'StarTrail(?:[);/ ]|$)'
51      model: 'StarTrail' # ZTE
52
53    - regex: 'StarShine II(?:[);/ ]|$)'
54      model: 'StarShine 2' # ZTE
55    - regex: 'StarShine(?:[);/ ]|$)'
56      model: 'StarShine' # Huawei U8180
57    - regex: 'STARADDICT 4(?:[);/ ]|$)'
58      model: 'Staraddict 4'
59    - regex: 'STARADDICT III(?:[);/ ]|$)'
60      model: 'Staraddict 3' # Coolpad 8861U
61    - regex: 'STARADDICT II Plus(?:[);/ ]|$)'
62      model: 'Staraddict 2 Plus' # ZTE Grand X
63    - regex: 'STARADDICT II(?:[);/ ]|$)'
64      model: 'Staraddict 2' # Alcatel One Touch 995
65    - regex: 'STARADDICT(?:[);/ ]|$)'
66      model: 'Staraddict' # ZTE
67    - regex: 'StarText II(?:[);/ ]|$)'
68      model: 'StarText 2' # ZTE
69    - regex: 'StarText(?:[);/ ]|$)'
70      model: 'StarText' # ZTE
71    - regex: 'StarNaute II(?:[);/ ]|$)'
72      model: 'StarNaute 2' # ZTE
73    - regex: 'STARNAUTE ?4(?:[);/ ]|$)'
74      model: 'StarNaute 4'
75    - regex: 'StarNaute(?:[);/ ]|$)'
76      model: 'StarNaute' # ZTE Amigo
77    - regex: 'StarTab'
78      model: 'StarTab'
79      device: 'tablet'
80
81    - regex: '((?:StarShine|StarTrail|STARADDICT|StarText|StarNaute|StarXtrem)[^;/]*) Build'
82      model: '$1'
83
84# Adronix
85Adronix:
86  regex: 'Adronix[ _](MT[0-9]+)(?:[);/ ]|$)'
87  device: 'tablet'
88  model: '$1'
89
90# HTC (htc.com)
91HTC:
92  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)(?:[);/ ]|$)'
93  device: 'smartphone'
94  models:
95    # explicit smartphone models
96    - regex: '2PZF1(?:[);/ ]|$)'
97      model: 'U Ultra'
98    - regex: 'HTC[_ ](?:U-2u|U Play|2PZM3)(?:[);/ ]|$)'
99      model: 'U Play'
100    - regex: '(?:U11 plus|(?:HTC_)?2Q4D[12]00)(?:[);/ ]|$)'
101      model: 'U11 Plus'
102    - regex: 'HTC (?:U12\+|2Q55[13]00)(?:[);/ ]|$)'
103      model: 'U12 Plus'
104    - regex: 'U(1[12]) life(?:[);/ ]|$)'
105      model: 'U$1 Life'
106    - regex: '(?:U11 Eyes|2Q4R100)(?:[);/ ]|$)'
107      model: 'U11 Eyes'
108    - regex: 'XV6975(?:[);/ ]|$)'
109      model: 'Imagio'
110    - regex: 'PG86100(?:[);/ ]|$)'
111      model: 'Evo 3G'
112    - regex: 'PC36100(?:[);/ ]|$)'
113      model: 'Evo 4G'
114    - regex: '(?:HTC[_ ])?(?:HTV33|601HT|2PZC100|2PZC5|U-3[uw])(?:[);/ ]|$)'
115      model: 'U11'
116    - regex: '(?:801e|802[wdt])'
117      model: 'One'
118    - regex: 'PJ83100(?:[);/ ]|$)'
119      model: 'One X'
120    - regex: '(?:HTC)?One ?Mini ?2(?:[);/ ]|$)'
121      model: 'One Mini 2'
122    - regex: 'X2-HT(?:[);/ ]|$)'
123      model: 'One X2'
124    - regex: 'HTC 2PXH3(?:[);/ ]|$)'
125      model: 'One X10'
126    - regex: 'ISW13HT(?:[);/ ]|$)'
127      model: 'J'
128    - regex: 'HTL22(?:[);/ ]|$)'
129      model: 'J One'
130    - regex: 'HTL23(?:[);/ ]|$)'
131      model: 'J Butterfly'
132    - regex: 'HTCButterflys901s(?:[);/ ]|$)'
133      model: 'Butterfly S'
134    - regex: 'One M9_Prime Camera Edition'
135      model: 'One M9 Prime Camera Edition'
136    - regex: '(?:HTC[_ ])?(?:M9pw|One M9 ?PLUS)(?:[);/ ]|$)'
137      model: 'One M9 Plus'
138    - regex: '(?:HTC[_ ]M9u|0PJA2|0PJA10|HTC One M9|HTC6535LVW)(?:[);/ ]|$)'
139      model: 'One M9'
140    - regex: 'One[ _](X9|[EM]8) dual sim(?:[);/ ]|$)'
141      model: 'One $1 Dual SIM'
142    - regex: 'Desire[ _](.+) dual sim(?:[);/ ]|$)'
143      model: 'Desire $1 Dual SIM'
144    - regex: 'HTC(?:6500LVW|PN071)(?:[);/ ]|$)'
145      model: 'One M7'
146    - regex: '(?:One M8|HTC6525LVW|HTC[_ ]M8[xd]|HTC[_ ]0P6B)(?:[);/ ]|$)'
147      model: 'One M8'
148    - regex: '0PAJ5(?:[);/ ]|$)'
149      model: 'One E8'
150    - regex: 'HTC[_ ]E9x(?:[);/ ]|$)'
151      model: 'One E9'
152    - regex: 'HTC[_ ]E9pw(?:[);/ ]|$)'
153      model: 'One E9 Plus'
154    - regex: 'HTC_S9u(?:[);/ ]|$)'
155      model: 'One S9'
156    - regex: 'HTC6515LVW(?:[);/ ]|$)'
157      model: 'One Remix'
158    - regex: 'X525a(?:[);/ ]|$)'
159      model: 'One X+'
160    - regex: '(?:2PQ9(?:3|10)|HTC[_ ]A9u)(?:[);/ ]|$)'
161      model: 'One A9'
162    - regex: 'ADR6300'
163      model: 'Droid Incredible'
164    - regex: 'HTC6435LVW'
165      model: 'Droid DNA'
166    - regex: 'ADR6400L'
167      model: 'ThunderBolt'
168    - regex: 'ADR6410LRA'
169      model: 'Droid Incredible 3'
170    - regex: 'SPV E600'
171      model: 'Excalibur'
172    - regex: 'SPV E650'
173      model: 'Vox'
174    - regex: '2PYB2'
175      model: 'Bolt'
176    - regex: '2PS64|HTC6545LVW'
177      model: '10'
178    - regex: '(710C)(?:[);/ ]|$)'
179      model: 'Desire $1'
180    - regex: '0PM92(?:[);/ ]|$)'
181      model: 'Desire 626S'
182    - regex: '0PCV1(?:[);/ ]|$)'
183      model: 'Desire 510'
184    - regex: 'HTC ?D160LVW(?:[);/ ]|$)'
185      model: 'Desire 530'
186    - regex: 'HTC[_ ]D310n(?:[);/ ]|$)'
187      model: 'Desire 310'
188    - regex: '608t(?:[);/ ]|$)'
189      model: 'Desire 608t'
190    - regex: 'HTC_(?:0P9O2|D610x)(?:[);/ ]|$)'
191      model: 'Desire 610'
192    - regex: 'HTC[_ ]?(0P4E[12])(?:[);/ ]|$)'
193      model: 'Desire 601'
194    - regex: 'HTC_?D620h(?:[);/ ]|$)'
195      model: 'Desire 620'
196    - regex: 'HTC[_ ]?(?:D626ph|D200LVWPP)(?:[);/ ]|$)'
197      model: 'Desire 626'
198    - regex: 'HTC_?(?:0P9C2|D816[xd]?)(?:[);/ ]|$)'
199      model: 'Desire 816'
200    - regex: 'HTC_?D526h(?:[);/ ]|$)'
201      model: 'Desire 526'
202    - regex: 'EXODUS 1(?:[);/ ]|$)'
203      model: 'Exodus 1'
204    - regex: 'HTC 2Q7A100(?:[);/ ]|$)'
205      model: 'U19e'
206    - regex: 'HTC_D10i(?:[);/ ]|$)'
207      model: 'Desire 10 Pro'
208    - regex: 'HTC[ _]10[ _]evo(?:[);/ ]|$)'
209      model: '10 Evo'
210    - regex: 'HTC Desire (.+) pro(?:[);/ ]|$)'
211      model: 'Desire $1 Pro'
212    - regex: 'Desire 10 lifestyle(?:[);/ ]|$)'
213      model: 'Desire 10 Life Style'
214
215    - regex: 'NexusHD2' # custom rom for hd2
216      model: 'HD2'
217    - regex: 'HTC[ _-]P715a'
218      device: 'tablet'
219      model: 'P715a'
220    - regex: 'HTC[ _-]Flyer Build'
221      device: 'tablet'
222      model: 'Flyer'
223    - regex: 'HTC[ _-]Flyer[ _\-]([\w]{1,5})'
224      device: 'tablet'
225      model: 'Flyer $1'
226    - regex: 'HTC(?:[ _-])?(?:One[ _\-]max|6600LVW)(?:[);/ ]|$)'
227      device: 'phablet'
228      model: 'One Max'
229    - regex: 'HTC[ _]([^/;]+) [0-9]+(?:\.[0-9]+)+ Build'
230      model: '$1'
231    - regex: 'HTC[ _]([^/;]+) Build'
232      model: '$1'
233    - regex: 'HTC[ _]([a-z0-9]+[ _\-]?(?:[a-z0-9_+\-])*)'
234      model: '$1'
235    - regex: 'USCCHTC(\d+)'
236      model: '$1'
237    - regex: 'Sprint (ATP.*) Build'
238      device: 'tablet'
239      model: '$1 (Sprint)'
240    - regex: 'Sprint (APA.*) Build'
241      model: '$1 (Sprint)'
242    - regex: '(?:HTC-)?HTC(?:[\-/ ])?([a-z0-9\-_]+)'
243      model: '$1'
244    - regex: 'HTC;(?: )?([a-z0-9 ]+)'
245      model: '$1'
246    - regex: '(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/)]+)(?: Build|\))'
247      model: '$1 $2'
248    - regex: '(Amaze[ _]4G|One ?[XELSV\+]*) Build'
249      model: '$1'
250    - regex: '(ADR[^;/]+) Build'
251      model: '$1'
252    - regex: '(ADR[a-z0-9]+)'
253      model: '$1'
254    - regex: 'HTV32(?:[);/ ]|$)'
255      model: '10'
256    - regex: 'HTV31(?:[);/ ]|$)'
257      model: 'J Butterfly'
258
259# microsoft
260Microsoft:
261  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'
262  device: 'smartphone'
263  models:
264    - regex: 'KIN\.(One|Two)'
265      device: 'feature phone'
266      model: 'Kin $1'
267
268    - regex: 'RM-1099|Lumia 430'
269      model: 'Lumia 430'
270    - regex: 'RM-1114|Lumia 435'
271      model: 'Lumia 435'
272    - regex: 'RM-1031|Lumia 532'
273      model: 'Lumia 532'
274    - regex: 'Lumia 535 Dual SIM'
275      model: 'Lumia 535 Dual SIM'
276    - regex: 'RM-109[02]|RM-1089|Lumia 535'
277      model: 'Lumia 535'
278    - regex: 'RM-1141|Lumia 540'
279      model: 'Lumia 540'
280    - regex: 'RM-1127|Lumia 550'
281      model: 'Lumia 550'
282    - regex: 'RM-1010'
283      model: 'Lumia 638'
284    - regex: 'Lumia 640 XL LTE'
285      model: 'Lumia 640 XL LTE'
286      device: 'phablet'
287    - regex: 'RM-106[57]|RM-1096|Lumia 640 XL'
288      model: 'Lumia 640 XL'
289      device: 'phablet'
290    - regex: 'Lumia 640 LTE Dual SIM'
291      model: 'Lumia 640 LTE Dual SIM'
292    - regex: 'Lumia 640 LTE'
293      model: 'Lumia 640 LTE'
294    - regex: 'Lumia 640 Dual SIM'
295      model: 'Lumia 640 Dual SIM'
296    - regex: 'RM-1109|RM-1113|RM-107[23467]|Lumia 640'
297      model: 'Lumia 640'
298    - regex: 'RM-1154|Lumia 650'
299      model: 'Lumia 650'
300    - regex: 'RM-1152'
301      model: 'Lumia 650 SS'
302    - regex: 'Lumia 850'
303      model: 'Lumia 850'
304    - regex: 'Lumia 950 XL Dual SIM'
305      model: 'Lumia 950 XL Dual SIM'
306      device: 'phablet'
307    - regex: 'Lumia 950 XL'
308      model: 'Lumia 950 XL'
309      device: 'phablet'
310    - regex: 'Lumia 950 Dual SIM'
311      model: 'Lumia 950 Dual SIM'
312    - regex: 'Lumia 950|RM-1118'
313      model: 'Lumia 950'
314    - regex: 'RM-994|Lumia 1320'
315      model: 'Lumia 1320'
316    - regex: 'Lumia 1530'
317      model: 'Lumia 1530'
318    - regex: 'Surface Book 3'
319      device: 'desktop'
320      model: 'Surface Book 3'
321    - regex: 'Surface Pro( [34])?'
322      device: 'desktop'
323      model: 'Surface Pro$1'
324
325    - regex: 'Microsoft; Lumia ([^;/)]+)(?:[;/)]|$)'
326      model: 'Lumia $1'
327
328# NOKIA (www.nokia.com)
329Nokia:
330  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'
331  device: 'smartphone'
332  models:
333    # Nokia branded phones by HMD Global
334    - regex: 'TA-10(07|23|29|35)'
335      model: '2'
336    - regex: 'TA-10(20|28|32|38)'
337      model: '3'
338    - regex: 'TA-10(24|27|44|53)'
339      model: '5'
340    - regex: 'TA-10(00|03|21|25|33|39|54)'
341      model: '6'
342    - regex: 'TA-1041'
343      model: '7'
344    - regex: 'TA-10(04|12|52)'
345      model: '8'
346    - regex: 'Nokia 8 Sirocco'
347      model: '8 Sirocco'
348    - regex: 'Nokia 7 plus'
349      model: '7 plus'
350    - regex: 'Nokia 6\.1 Plus'
351      model: '6.1 Plus'
352    - regex: 'Nokia 5\.1 Plus'
353      model: '5.1 Plus'
354    - regex: 'Nokia 3\.1 Plus'
355      model: '3.1 Plus'
356    - regex: 'Nokia 1 Plus'
357      model: '1 Plus'
358    - regex: 'Nokia 2 V(?:[);/ ]|$)'
359      model: '2 V Tella'
360
361    # Nokia phones
362    - regex: 'Nokia ?X2DS'
363      model: 'X2 Dual'
364    - regex: 'RX-51 N900'
365      model: 'N900'
366    - regex: '(?: )?(Nokia500|nokiaasha500(?:dualsim)?)(?: Build|[_);/])'
367      model: 'Asha 500'
368    - regex: 'Nokia5130c(?:-2)?'
369      model: '5130 XpressMusic'
370    - regex: 'Nokia5230'
371      model: 'Nuron'
372    - regex: 'Nokia5233'
373      model: '5233'
374    - regex: 'Nokia5800d-1'
375      model: '5800 XpressMusic'
376    - regex: 'Nokia6210Navigator'
377      model: 'Navigator'
378    - regex: 'Nokia8800e?'
379      model: 'Sapphire Arte'
380    - regex: 'NOKIA-RH-17'
381      model: '2280'
382    - regex: 'NOKIA-RH-27'
383      model: '6225'
384    - regex: 'NOKIA-RH-34'
385      model: '6585'
386    - regex: 'NOKIA-RH-48'
387      model: '3105'
388    - regex: 'NOKIA-RM-11'
389      model: '3205'
390    - regex: 'Nokia808 PureView'
391      model: '808 PureView'
392    - regex: 'Nokia ?([0-9]{4})c(?:-)?'
393      model: '$1 Classic'
394    - regex: 'Nokia ?([0-9]{4})s(?:-)?'
395      model: '$1 Slide'
396    - regex: 'Nokia ?([0-9]{4})'
397      model: '$1'
398    - regex: '(?: )?Nokia([235][0-9]{2})(?: Build|[_);/])'
399      model: 'Asha $1'
400    - regex: 'Nokia([CEX]-?[0-9]{1,2}i?)-[0-9]{1,2}u?(?: Build|[_);/])'
401      model: '$1'
402
403    - regex: 'Nokia;? 520T'
404      model: 'Lumia 520T'
405    - regex: 'RM-91[45]'
406      model: 'Lumia 520'
407    - regex: 'RM-997|Nokia 526'
408      model: 'Lumia 526'
409    - regex: 'RM-846'
410      model: 'Lumia 620'
411    - regex: 'RM-97[68]'
412      model: 'Lumia 630'
413    - regex: 'RM-97[45]'
414      model: 'Lumia 635'
415    - regex: 'RM-1027'
416      model: 'Lumia 636'
417    - regex: 'NOKIA;? 710'
418      model: 'Lumia 710'
419    - regex: 'Nokia;? 720T'
420      model: 'Lumia 720T'
421    - regex: 'RM-885'
422      model: 'Lumia 720'
423    - regex: 'Lumia 730'
424      model: 'Lumia 730'
425    - regex: 'RM-103[89]'
426      model: 'Lumia 735'
427    - regex: 'Nokia;? 800C'
428      model: 'Lumia 800C'
429    - regex: 'Nokia;? 800'
430      model: 'Lumia 800'
431    - regex: 'Nokia 820'
432      model: 'Lumia 820'
433    - regex: 'RM-984'
434      model: 'Lumia 830'
435    - regex: 'Nokia;? 900'
436      model: 'Lumia 900'
437    - regex: '(RM-82[12]|Nokia;? 920)(?: Build|[_);/])'
438      model: 'Lumia 920'
439    - regex: '(RM-89[23]|RM-910|Nokia;? 925)(?: Build|[a_);/])'
440      model: 'Lumia 925'
441    - regex: 'Lumia 929'
442      model: 'Lumia Icon'
443    - regex: 'RM-1045'
444      model: 'Lumia 930'
445    - regex: '(ARM; 909|NOKIA;? 909|NOKIA; id300)(?: Build|[_);/])'
446      model: 'Lumia 1020'
447    - regex: 'NOKIA;? 1520\.1'
448      model: 'Lumia 1520.1'
449
450    - regex: 'Nokia ([A-Za-z0-9\. ]+)(?: Build|\))'
451      model: '$1'
452
453    - regex: 'Nokia(N[0-9]+)'
454      model: '$1'
455    - regex: 'Nokia-([a-z0-9]+)'
456      model: 'N$1'
457    - regex: 'NOKIA; (?!Qt;)([a-z0-9\- ]+)'
458      model: '$1'
459    - regex: 'NOKIA[ _]?([a-z0-9\-]+)'
460      model: '$1'
461    - regex: 'NOKIA/([a-z0-9 ]+)'
462      model: '$1'
463    - regex: '(Lumia [a-z0-9\-]+ XL)'
464      device: 'phablet'
465      model: '$1'
466    - regex: '(Lumia [a-z0-9\-]+)'
467      model: '$1'
468    - regex: 'Maemo RX-51 ([a-z0-9]+)'
469      model: '$1'
470    - regex: 'Maemo RX-34'
471      model: 'N800'
472    - regex: 'NokiaInternal|Nokia-WAP-Toolkit|Nokia-MIT-Browser|Nokia Mobile|Nokia Browser|Nokia/Series'
473      model: ''
474    - regex: 'portalmmm/2\.0 (N7[37]|NK[a-z0-9]+)'
475      model: '$1'
476    - regex: 'nok([0-9]+)'
477      model: '$1'
478    - regex: 'Symbian.*\s([a-z0-9]+)$'
479      device: 'feature phone'
480      model: '$1'
481
482# CnM
483CnM:
484  regex: 'CnM'
485  device: 'tablet'
486  models:
487    - regex: 'CnM[ \-](?:Touchpad|TP)[ \-]([0-9\.]+)'
488      model: 'Touchpad $1'
489
490# RIM/BlackBerry
491RIM:
492  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'
493  device: 'smartphone'
494  models:
495    - regex: 'BBA100-[12]'
496      model: 'BlackBerry DTEK60'
497    - regex: 'BBB100-[1234567]'
498      model: 'KEYone'
499    - regex: 'BBC100-1'
500      model: 'Aurora'
501    - regex: 'BBD100-[126]'
502      model: 'Motion'
503    - regex: 'BBE100-[123456789]'
504      model: 'KEY2 LE'
505    - regex: 'BBF100-[1234567]'
506      model: 'KEY2'
507    - regex: 'BBF100-8'
508      model: 'KEY2 Silver'
509    - regex: 'BBF100-9'
510      model: 'KEY2 Black'
511    - regex: 'BBG100-1'
512      model: 'Evolve'
513    - regex: 'BBH100-1'
514      model: 'Evolve X'
515    - regex: '(?:BlackBerry )?(9000|9790)'
516      model: 'Bold $1'
517    - regex: 'STV100-[1234]'
518      model: 'BlackBerry Priv'
519    - regex: 'STH100-[12]'
520      model: 'BlackBerry DTEK50'
521    - regex: 'BB10; ([a-z0-9\- ]+)\)'
522      model: 'BlackBerry $1'
523    - regex: 'PlayBook.+RIM Tablet OS'
524      model: 'BlackBerry Playbook'
525      device: 'tablet'
526    - regex: 'BlackBerry(?: )?([a-z0-9]+)'
527      model: 'BlackBerry $1'
528    - regex: 'rim([0-9]+)'
529      model: 'BlackBerry $1'
530    - regex: '9300'
531      model: 'Curve 3G 9300'
532    - regex: '(8520|8530|9220|9320|9360)'
533      model: 'Curve $1'
534    - regex: '9630'
535      model: 'Tour 9630'
536    - regex: '9720'
537      model: '9720'
538    - regex: '(9800|9860)'
539      model: 'Torch $1'
540    - regex: 'BlackBerry'
541      model: 'BlackBerry'
542
543# CHIA (www.ghia.com.mx)
544CHIA:
545  regex: '(SVEGLIO[ _][QH]1|TREO_TAB8G|GTA7WF|GTKIDS7[BVR]|VENUS7)(?:[);/ ]|$)'
546  device: 'smartphone'
547  models:
548    - regex: 'SVEGLIO[ _]([QH]1)'
549      model: 'Sveglio $1'
550    - regex: 'TREO_TAB8G'
551      device: 'tablet'
552      model: 'TREO TAB8G'
553    - regex: 'GTA7WF'
554      device: 'tablet'
555      model: 'A7 ROJA'
556    - regex: 'GTKIDS7[BVR]'
557      device: 'tablet'
558      model: 'GT KIDS 7'
559    - regex: 'VENUS7'
560      device: 'tablet'
561      model: 'VENUS 7'
562
563# PALM
564Palm:
565  regex: '(?:Pre|Pixi)/(\d+)\.(\d+)|Palm|Treo|Xiino|PVG100(?:E_RU)?(?:[);/ ]|$)'
566  device: 'smartphone'
567  models:
568    - regex: '((?:Pre|Pixi))/(\d+\.\d+)'
569      model: '$1 $2'
570    - regex: 'Palm(?:[ \-])?((?!OS|Source|scape)[a-z0-9]+)'
571      model: '$1'
572    - regex: 'Treo([a-z0-9]+)'
573      model: 'Treo $1'
574    - regex: 'Tungsten'
575      model: 'Tungsten'
576    - regex: 'PVG100'
577      model: 'Pepito'
578    - regex: 'Xiino|Palmscape' # Browser for Palm OS only
579      model: ''
580
581# HP or Hewlett-Packard
582HP:
583  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; [^;/)]+'
584  device: 'smartphone'
585  models:
586    - regex: 'HP Slate 6 Voice Tab'
587      model: 'Slate 6 VoiceTab'
588      device: 'phablet'
589
590    - regex: 'HP 10 Plus'
591      model: '10 Plus'
592      device: 'tablet'
593
594    - regex: 'HP ([78][^)/;]*)(?: Build|\))'
595      model: 'Slate $1'
596      device: 'tablet'
597
598    - regex: 'Compaq ([78][^/;]*) Build'
599      model: 'Compaq $1'
600      device: 'tablet'
601    - regex: 'HP Pro Slate 8'
602      model: 'Pro Slate 8'
603      device: 'tablet'
604    - regex: 'HP Slate ?(.+) Build'
605      model: 'Slate $1'
606      device: 'tablet'
607    - regex: 'HP Slate ?([0-9]+)'
608      model: 'Slate $1'
609      device: 'tablet'
610    - regex: 'TouchPad/(\d+\.\d+)|hp-tablet'
611      model: 'TouchPad'
612      device: 'tablet'
613    - regex: 'HP; ([^;/)]+)'
614      model: '$1'
615    - regex: 'HP ?iPAQ ?([a-z0-9]+)'
616      model: 'iPAQ $1'
617    - regex: 'webOS.*(P160U)'
618      model: 'Veer'
619
620    - regex: 'HP ProBook (6560b)'
621      device: 'desktop'
622      model: 'ProBook $1'
623    - regex: 'Chromebook (11 G5|x360 11 G1 EE|13 G1)'
624      device: 'desktop'
625      model: 'Chromebook $1'
626    - regex: 'HP EliteBook 820 G2'
627      device: 'desktop'
628      model: 'EliteBook 820 G2'
629    - regex: 'Z240 Tower Workstation'
630      device: 'desktop'
631      model: 'Z240 Tower Workstation'
632
633# TiPhone
634TiPhone:
635  regex: 'TiPhone ?([a-z0-9]+)'
636  device: 'smartphone'
637  model: '$1'
638
639# Apple
640Apple:
641  regex: '(?:iTunes-)?Apple[ _]?TV|Apple/|(?:Apple-|iTunes-)?(?<!like )(?:iPad|iPhone)|iPh[0-9],[0-9]|CFNetwork|HomePod|Watch ?OS|Watch1,[12]|MDCR_Mac|ICRU_iP(?:ad|hone)|Mac OS X,|macOS,'
642  models:
643    - regex: 'HomePod'
644      device: 'smart speaker'
645      model: 'HomePod'
646
647      # specific wearable devices
648    - regex: 'Watch1,1'
649      device: 'wearable'
650      model: 'Watch 38mm'
651    - regex: 'Watch1,2'
652      device: 'wearable'
653      model: 'Watch 42mm'
654    - regex: 'Watch2,6'
655      device: 'wearable'
656      model: 'Watch Series 1 38mm'
657    - regex: 'Watch2,7'
658      device: 'wearable'
659      model: 'Watch Series 1 42mm'
660    - regex: 'Watch2,3'
661      device: 'wearable'
662      model: 'Watch Series 2 38mm'
663    - regex: 'Watch2,4'
664      device: 'wearable'
665      model: 'Watch Series 2 42mm'
666    - regex: 'Watch3,[13]'
667      device: 'wearable'
668      model: 'Watch Series 3 38mm'
669    - regex: 'Watch3,[24]'
670      device: 'wearable'
671      model: 'Watch Series 3 42mm'
672    - regex: 'Watch5,(?:9|11)'
673      device: 'wearable'
674      model: 'Watch SE 40mm'
675    - regex: 'Watch5,1[02]'
676      device: 'wearable'
677      model: 'Watch SE 44mm'
678    - regex: 'Watch([456]),[13]'
679      device: 'wearable'
680      model: 'Watch Series $1 40mm'
681    - regex: 'Watch([456]),[24]'
682      device: 'wearable'
683      model: 'Watch Series $1 44mm'
684    - regex: 'Watch6,[68]'
685      device: 'wearable'
686      model: 'Watch Series 7 41mm'
687    - regex: 'Watch6,[79]'
688      device: 'wearable'
689      model: 'Watch Series 7 45mm'
690
691      # specific desktop devices
692    - regex: '(?:.+_)?MacBook7(?:%2C|,)1'
693      device: 'desktop'
694      model: 'MacBook 13" (2010)'
695    - regex: '(?:.+_)?MacPro5(?:%2C|,)1'
696      device: 'desktop'
697      model: 'Mac Pro (2010-2012)'
698    - regex: '(?:.+_)?iMac12(?:%2C|,)1'
699      device: 'desktop'
700      model: 'iMac 21.5" (2011)'
701    - regex: '(?:.+_)?iMac17(?:%2C|,)1'
702      device: 'desktop'
703      model: 'iMac 27" (2015)'
704    - regex: '(?:.+_)?iMac18(?:%2C|,)[12]'
705      device: 'desktop'
706      model: 'iMac 21.5" (2017)'
707    - regex: '(?:.+_)?iMac18(?:%2C|,)3'
708      device: 'desktop'
709      model: 'iMac 27" (2017)'
710    - regex: '(?:.+_)?iMacPro1(?:%2C|,)1'
711      device: 'desktop'
712      model: 'iMac Pro 27" (2017)'
713    - regex: '(?:.+_)?iMac19(?:%2C|,)2'
714      device: 'desktop'
715      model: 'iMac 21.5" (2019)'
716    - regex: '(?:.+_)?iMac19(?:%2C|,)1'
717      device: 'desktop'
718      model: 'iMac 27" (2019)'
719    - regex: '(?:.+_)?iMac20(?:%2C|,)[12]'
720      device: 'desktop'
721      model: 'iMac 27" (2020)'
722    - regex: '(?:.+_)?iMac21(?:%2C|,)[12]'
723      device: 'desktop'
724      model: 'iMac 24" (2021)'
725    - regex: '(?:.+_)?iMac14(?:%2C|,)2'
726      device: 'desktop'
727      model: 'iMac 27" (2013)'
728    - regex: '(?:.+_)?iMac14(?:%2C|,)4'
729      device: 'desktop'
730      model: 'iMac 21.5" (2014)'
731    - regex: '(?:.+_)?iMac14(?:%2C|,)1'
732      device: 'desktop'
733      model: 'iMac 21.5" (2013)'
734    - regex: '(?:.+_)?MacBook6(?:%2C|,)1'
735      device: 'desktop'
736      model: 'MacBook 13" (2009)'
737    - regex: '(?:.+_)?MacBook8(?:%2C|,)1'
738      device: 'desktop'
739      model: 'MacBook 12" (2015)'
740    - regex: '(?:.+_)?MacBook9(?:%2C|,)1'
741      device: 'desktop'
742      model: 'MacBook 12" (2016)'
743    - regex: '(?:.+_)?iMac10(?:%2C|,)1'
744      device: 'desktop'
745      model: 'iMac (2009)'
746
747    - regex: '(?:.+_)?MacBookAir2(?:%2C|,)1'
748      device: 'desktop'
749      model: 'MacBook Air (2009)'
750    - regex: '(?:.+_)?MacBookAir3(?:%2C|,)1'
751      device: 'desktop'
752      model: 'MacBook Air 11" (2010)'
753    - regex: '(?:.+_)?MacBookAir3(?:%2C|,)2'
754      device: 'desktop'
755      model: 'MacBook Air 13" (2010)'
756    - regex: '(?:.+_)?MacBookAir4(?:%2C|,)1'
757      device: 'desktop'
758      model: 'MacBook Air 11" (2011)'
759    - regex: '(?:.+_)?MacBookAir4(?:%2C|,)2'
760      device: 'desktop'
761      model: 'MacBook Air 13" (2011)'
762    - regex: '(?:.+_)?MacBookAir5(?:%2C|,)1'
763      device: 'desktop'
764      model: 'MacBook Air 11" (2012)'
765    - regex: '(?:.+_)?MacBookAir5(?:%2C|,)2'
766      device: 'desktop'
767      model: 'MacBook Air 13" (2012)'
768    - regex: '(?:.+_)?MacBookAir6(?:%2C|,)1'
769      device: 'desktop'
770      model: 'MacBook Air 11" (2013-2014)'
771    - regex: '(?:.+_)?MacBookAir6(?:%2C|,)2'
772      device: 'desktop'
773      model: 'MacBook Air 13" (2013-2014)'
774    - regex: '(?:.+_)?MacBookAir7(?:%2C|,)1'
775      device: 'desktop'
776      model: 'MacBook Air 11" (2015)'
777    - regex: '(?:.+_)?MacBookAir7(?:%2C|,)2'
778      device: 'desktop'
779      model: 'MacBook Air 13" (2015-2017)'
780    - regex: '(?:.+_)?MacBookAir8(?:%2C|,)1'
781      device: 'desktop'
782      model: 'MacBook Air 13" (2018)'
783    - regex: '(?:.+_)?MacBookAir8(?:%2C|,)2'
784      device: 'desktop'
785      model: 'MacBook Air 13" (2019)'
786    - regex: '(?:.+_)?MacBookAir9(?:%2C|,)1'
787      device: 'desktop'
788      model: 'MacBook Air 13" (2020)'
789    - regex: '(?:.+_)?MacBookAir10(?:%2C|,)1'
790      device: 'desktop'
791      model: 'MacBook Air 13" (2020)'
792    - regex: '(?:.+_)?MacBookPro1(?:%2C|,)1'
793      device: 'desktop'
794      model: 'MacBook Pro 15" (2006)'
795    - regex: '(?:.+_)?MacBookPro1(?:%2C|,)2'
796      device: 'desktop'
797      model: 'MacBook Pro 17" (2006)'
798    - regex: '(?:.+_)?MacBookPro2(?:%2C|,)1'
799      device: 'desktop'
800      model: 'MacBook Pro 17" (2007)'
801    - regex: '(?:.+_)?MacBookPro2(?:%2C|,)2'
802      device: 'desktop'
803      model: 'MacBook Pro 15" (2007)'
804    - regex: '(?:.+_)?MacBookPro[34](?:%2C|,)1'
805      device: 'desktop'
806      model: 'MacBook Pro (2008)'
807    - regex: '(?:.+_)?MacBookPro5(?:%2C|,)1'
808      device: 'desktop'
809      model: 'MacBook Pro 15" (2008)'
810    - regex: '(?:.+_)?MacBookPro5(?:%2C|,)2'
811      device: 'desktop'
812      model: 'MacBook Pro 17" (2009)'
813    - regex: '(?:.+_)?MacBookPro5(?:%2C|,)[34]'
814      device: 'desktop'
815      model: 'MacBook Pro 15" (2009)'
816    - regex: '(?:.+_)?MacBookPro5(?:%2C|,)5'
817      device: 'desktop'
818      model: 'MacBook Pro 13" (2009)'
819    - regex: '(?:.+_)?MacBookPro6(?:%2C|,)1'
820      device: 'desktop'
821      model: 'MacBook Pro 17" (2010)'
822    - regex: '(?:.+_)?MacBookPro6(?:%2C|,)2'
823      device: 'desktop'
824      model: 'MacBook Pro 15" (2010)'
825    - regex: '(?:.+_)?MacBookPro7(?:%2C|,)1'
826      device: 'desktop'
827      model: 'MacBook Pro 13" (2010)'
828    - regex: '(?:.+_)?MacBookPro8(?:%2C|,)1'
829      device: 'desktop'
830      model: 'MacBook Pro 13" (2011)'
831    - regex: '(?:.+_)?MacBookPro8(?:%2C|,)2'
832      device: 'desktop'
833      model: 'MacBook Pro 15" (2011)'
834    - regex: '(?:.+_)?MacBookPro8(?:%2C|,)3'
835      device: 'desktop'
836      model: 'MacBook Pro 17" (2011)'
837    - regex: '(?:.+_)?MacBookPro9(?:%2C|,)1'
838      device: 'desktop'
839      model: 'MacBook Pro 15" (2012)'
840    - regex: '(?:.+_)?MacBookPro9(?:%2C|,)2'
841      device: 'desktop'
842      model: 'MacBook Pro 13" (2012)'
843    - regex: '(?:.+_)?MacBookPro10(?:%2C|,)1'
844      device: 'desktop'
845      model: 'MacBook Pro 15" (2012-2013)'
846    - regex: '(?:.+_)?MacBookPro10(?:%2C|,)2'
847      device: 'desktop'
848      model: 'MacBook Pro 13" (2012-2013)'
849    - regex: '(?:.+_)?MacBookPro11(?:%2C|,)1'
850      device: 'desktop'
851      model: 'MacBook Pro 13" (2013-2014)'
852    - regex: '(?:.+_)?MacBookPro11(?:%2C|,)[23]'
853      device: 'desktop'
854      model: 'MacBook Pro 15" (2013-2014)'
855    - regex: '(?:.+_)?MacBookPro11(?:%2C|,)[45]'
856      device: 'desktop'
857      model: 'MacBook Pro 15" (2015)'
858    - regex: '(?:.+_)?MacBookPro12(?:%2C|,)1'
859      device: 'desktop'
860      model: 'MacBook Pro 13" (2015)'
861    - regex: '(?:.+_)?MacBookPro13(?:%2C|,)[12]'
862      device: 'desktop'
863      model: 'MacBook Pro 13" (2016)'
864    - regex: '(?:.+_)?MacBookPro13(?:%2C|,)3'
865      device: 'desktop'
866      model: 'MacBook Pro 15" (2016)'
867    - regex: '(?:.+_)?MacBookPro14(?:%2C|,)[12]'
868      device: 'desktop'
869      model: 'MacBook Pro 13" (2017)'
870    - regex: '(?:.+_)?MacBookPro14(?:%2C|,)3'
871      device: 'desktop'
872      model: 'MacBook Pro 15" (2017)'
873    - regex: '(?:.+_)?MacBookPro15(?:%2C|,)1'
874      device: 'desktop'
875      model: 'MacBook Pro 15" (2018-2019)'
876    - regex: '(?:.+_)?MacBookPro15(?:%2C|,)2'
877      device: 'desktop'
878      model: 'MacBook Pro 13" (2018-2019)'
879    - regex: '(?:.+_)?MacBookPro15(?:%2C|,)3'
880      device: 'desktop'
881      model: 'MacBook Pro 15" (2019)'
882    - regex: '(?:.+_)?MacBookPro15(?:%2C|,)4'
883      device: 'desktop'
884      model: 'MacBook Pro 13" (2019)'
885    - regex: '(?:.+_)?MacBookPro16(?:%2C|,)[14]'
886      device: 'desktop'
887      model: 'MacBook Pro 16" (2019)'
888    - regex: '(?:.+_)?MacBookPro16(?:%2C|,)[23]'
889      device: 'desktop'
890      model: 'MacBook Pro 13" (2020)'
891    - regex: '(?:.+_)?MacBookPro17(?:%2C|,)1'
892      device: 'desktop'
893      model: 'MacBook Pro 13" (2020)'
894    - regex: '(?:.+_)?MacBookPro18(?:%2C|,)[12]'
895      device: 'desktop'
896      model: 'MacBook Pro 16" (2021)'
897    - regex: '(?:.+_)?MacBookPro18(?:%2C|,)[34]'
898      device: 'desktop'
899      model: 'MacBook Pro 14" (2021)'
900    - regex: '(?:.+_)?Macmini8(?:%2C|,)1'
901      device: 'desktop'
902      model: 'Mac Mini (2018)'
903    - regex: '(?:.+_)?Macmini9(?:%2C|,)1'
904      device: 'desktop'
905      model: 'Mac Mini (2020)'
906    - regex: '(?:.+_)?Macmini7(?:%2C|,)1'
907      device: 'desktop'
908      model: 'Mac Mini (2014)'
909
910    # specific smartphone devices
911    - regex: '(?:Apple-|.+_)?iPh(?:one)?1[C,_]1'
912      model: 'iPhone'
913      device: 'smartphone'
914    - regex: '(?:Apple-|.+_)?iPh(?:one)?1[C,_]2'
915      model: 'iPhone 3G'
916      device: 'smartphone'
917    - regex: '(?:Apple-|.+_)?iPh(?:one)?2[C,_]1| 3GS\)$'
918      model: 'iPhone 3GS'
919      device: 'smartphone'
920    - regex: '(?:Apple-|.+_)?iPh(?:one)?3[C,_][123]'
921      model: 'iPhone 4'
922      device: 'smartphone'
923    - regex: '(?:Apple-|.+_)?iPh(?:one)?4[C,_]1|1C2%254enohPi| 4S\)$'
924      model: 'iPhone 4S'
925      device: 'smartphone'
926    - regex: '(?:Apple-|.+_)?iPh(?:one)?5[C,_][12]| 5\)$'
927      model: 'iPhone 5'
928      device: 'smartphone'
929    - regex: '(?:Apple-|.+_)?iPh(?:one)?5[C,_][34]'
930      model: 'iPhone 5C'
931      device: 'smartphone'
932    - regex: '(?:Apple-|.+_)?iPh(?:one)?6[C,_][12]| 5S\)$'
933      model: 'iPhone 5S'
934      device: 'smartphone'
935    - regex: '(?:Apple-|.+_)?iPh(?:one)?7[C,_]1|1C2%257enohPi| 6PLUS\)$'
936      model: 'iPhone 6 Plus'
937      device: 'phablet'
938    - regex: '(?:Apple-|.+_)?iPh(?:one)?7[C,_]2| 6\)$'
939      model: 'iPhone 6'
940      device: 'smartphone'
941    - regex: '(?:Apple-|.+_)?iPh(?:one)?8[C,_]2| 6SPLUS\)$'
942      model: 'iPhone 6s Plus'
943      device: 'phablet'
944    - regex: '(?:Apple-|.+_)?iPh(?:one)?8[C,_]1|iPhone[ /]6s| 6S\)$'
945      model: 'iPhone 6s'
946      device: 'smartphone'
947    - regex: '(?:Apple-|.+_)?iPh(?:one)?8[C,_]4| SE\)$'
948      model: 'iPhone SE'
949      device: 'smartphone'
950    - regex: '(?:Apple-|.+_)?iPh(?:one)?9[C,_][13]|iphone7 | 7\)$'
951      model: 'iPhone 7'
952      device: 'smartphone'
953    - regex: '(?:Apple-|.+_)?iPh(?:one)?9[C,_][24]| 7PLUS\)$'
954      model: 'iPhone 7 Plus'
955      device: 'phablet'
956    - regex: '(?:Apple-|.+_)?iPh(?:one)?10[C,_][14]| 8\)$'
957      model: 'iPhone 8'
958      device: 'smartphone'
959    - regex: '(?:Apple-|.+_)?iPh(?:one)?10[C,_][25]| 8PLUS\)$'
960      model: 'iPhone 8 Plus'
961      device: 'phablet'
962    - regex: '(?:Apple-|.+_)?iPh(?:one)?10[C,_][36]|iPhone X| X\)$'
963      model: 'iPhone X'
964      device: 'phablet'
965    - regex: '(?:Apple-|.+_)?iPh(?:one)?11[C,_][2]| XS\)$'
966      model: 'iPhone XS'
967      device: 'smartphone'
968    - regex: '(?:Apple-|.+_)?iPh(?:one)?11[C,_][46]|iPhoneXSMax| XSMAX\)$'
969      model: 'iPhone XS Max'
970      device: 'phablet'
971    - regex: '(?:Apple-|.+_)?iPh(?:one)?11[C,_][8]| XR\)$'
972      model: 'iPhone XR'
973      device: 'smartphone'
974    - regex: '(?:Apple-|.+_)?iPh(?:one)?12[C,_][1]| 11\)$'
975      model: 'iPhone 11'
976      device: 'smartphone'
977    - regex: '(?:Apple-|.+_)?iPh(?:one)?12[C,_][3]| 11PRO\)$'
978      model: 'iPhone 11 Pro'
979      device: 'phablet'
980    - regex: '(?:Apple-|.+_)?iPh(?:one)?12[C,_][5]| 11PROMAX\)$'
981      model: 'iPhone 11 Pro Max'
982      device: 'phablet'
983    - regex: '(?:Apple-|.+_)?iPh(?:one)?12[C,_][8]'
984      model: 'iPhone SE (2020)'
985      device: 'phablet'
986    - regex: '(?:Apple-|.+_)?iPh(?:one)?13[C,_][1]'
987      model: 'iPhone 12 Mini'
988      device: 'smartphone'
989    - regex: '(?:Apple-|.+_)?iPh(?:one)?13[C,_][2]'
990      model: 'iPhone 12'
991      device: 'phablet'
992    - regex: '(?:Apple-|.+_)?iPh(?:one)?13[C,_][3]'
993      model: 'iPhone 12 Pro'
994      device: 'phablet'
995    - regex: '(?:Apple-|.+_)?iPh(?:one)?13[C,_][4]'
996      model: 'iPhone 12 Pro Max'
997      device: 'phablet'
998    - regex: '(?:Apple-|.+_)?iPh(?:one)?14[C,_][2]'
999      model: 'iPhone 13 Pro'
1000      device: 'phablet'
1001    - regex: '(?:Apple-|.+_)?iPh(?:one)?14[C,_][3]'
1002      model: 'iPhone 13 Pro Max'
1003      device: 'phablet'
1004    - regex: '(?:Apple-|.+_)?iPh(?:one)?14[C,_][4]'
1005      model: 'iPhone 13 Mini'
1006      device: 'smartphone'
1007    - regex: '(?:Apple-|.+_)?iPh(?:one)?14[C,_][5]'
1008      model: 'iPhone 13'
1009      device: 'phablet'
1010
1011    # specific tablet devices
1012    - regex: '(?:Apple-|.+_)?iPad1[C,_]1'
1013      model: 'iPad'
1014      device: 'tablet'
1015    - regex: '(?:Apple-|.+_)?iPad2[C,_][1234]'
1016      model: 'iPad 2'
1017      device: 'tablet'
1018    - regex: '(?:Apple-|.+_)?iPad2[C,_][567]'
1019      model: 'iPad Mini'
1020      device: 'tablet'
1021    - regex: '(?:Apple-|.+_)?iPad3[C,_][123]'
1022      model: 'iPad 3'
1023      device: 'tablet'
1024    - regex: '(?:Apple-|.+_)?iPad3[C,_][456]'
1025      model: 'iPad 4'
1026      device: 'tablet'
1027    - regex: '(?:Apple-|.+_)?iPad4[C,_][123]'
1028      model: 'iPad Air'
1029      device: 'tablet'
1030    - regex: '(?:Apple-|.+_)?iPad4[C,_][456]'
1031      model: 'iPad Mini 2'
1032      device: 'tablet'
1033    - regex: '(?:Apple-|.+_)?iPad4[C,_][789]'
1034      model: 'iPad Mini 3'
1035      device: 'tablet'
1036    - regex: '(?:Apple-|.+_)?iPad5[C,_][12]'
1037      model: 'iPad Mini 4'
1038      device: 'tablet'
1039    - regex: '(?:Apple-|.+_)?iPad5[C,_][34]'
1040      model: 'iPad Air 2'
1041      device: 'tablet'
1042    - regex: '(?:Apple-|.+_)?iPad6[C,_][34]'
1043      model: 'iPad Pro 9.7'
1044      device: 'tablet'
1045    - regex: '(?:Apple-|.+_)?iPad6[C,_][78]'
1046      model: 'iPad Pro 12.9'
1047      device: 'tablet'
1048    - regex: '(?:Apple-|.+_)?iPad6[C,_](?:11|12)'
1049      model: 'iPad 5 9.7'
1050      device: 'tablet'
1051    - regex: '(?:Apple-|.+_)?iPad7[C,_][12](?:[);/ ]|$)'
1052      model: 'iPad Pro 2 12.9'
1053      device: 'tablet'
1054    - regex: '(?:Apple-|.+_)?iPad7[C,_][34](?:[);/ ]|$)'
1055      model: 'iPad Pro 10.5'
1056      device: 'tablet'
1057    - regex: '(?:Apple-|.+_)?iPad7[C,_][56](?:[);/ ]|$)'
1058      model: 'iPad 6 9.7'
1059      device: 'tablet'
1060    - regex: '(?:Apple-|.+_)?iPad7[C,_](?:11|12)(?:[);/ ]|$)'
1061      model: 'iPad 7 10.2'
1062      device: 'tablet'
1063    - regex: '(?:Apple-|.+_)?iPad8[C,_](?:9|10)'
1064      model: 'iPad Pro 2 11"'
1065      device: 'tablet'
1066    - regex: '(?:Apple-|.+_)?iPad13[C,_]4'
1067      model: 'iPad Pro 3 11" WiFi'
1068      device: 'tablet'
1069    - regex: '(?:Apple-|.+_)?iPad13[C,_][5-7]'
1070      model: 'iPad Pro 3 11"'
1071      device: 'tablet'
1072    - regex: '(?:Apple-|.+_)?iPad8[C,_]1[12]'
1073      model: 'iPad Pro 4 12.9"'
1074      device: 'tablet'
1075    - regex: '(?:Apple-|.+_)?iPad8[C,_][1-4]'
1076      model: 'iPad Pro 3 11.0'
1077      device: 'tablet'
1078    - regex: '(?:Apple-|.+_)?iPad8[C,_][5-8]'
1079      model: 'iPad Pro 3 12.9'
1080      device: 'tablet'
1081    - regex: '(?:Apple-|.+_)?iPad11[C,_][12]'
1082      model: 'iPad Mini 5'
1083      device: 'tablet'
1084    - regex: '(?:Apple-|.+_)?iPad11[C,_][34]'
1085      model: 'iPad Air 3'
1086      device: 'tablet'
1087    - regex: '(?:Apple-|.+_)?iPad11[C,_][67]'
1088      model: 'iPad 8 10.2"'
1089      device: 'tablet'
1090    - regex: '(?:Apple-|.+_)?iPad12[C,_]1'
1091      model: 'iPad 9 10.2" WiFi'
1092      device: 'tablet'
1093    - regex: '(?:Apple-|.+_)?iPad12[C,_]2'
1094      model: 'iPad 9 10.2"'
1095      device: 'tablet'
1096    - regex: '(?:Apple-|.+_)?iPad13[C,_]8'
1097      model: 'iPad Pro 5 12.9" WiFi'
1098      device: 'tablet'
1099    - regex: '(?:Apple-|.+_)?iPad13[C,_](?:9|10|11)'
1100      model: 'iPad Pro 5 12.9"'
1101      device: 'tablet'
1102    - regex: '(?:Apple-|.+_)?iPad13[C,_]1'
1103      model: 'iPad Air 4 WiFi'
1104      device: 'tablet'
1105    - regex: '(?:Apple-|.+_)?iPad13[C,_]2'
1106      model: 'iPad Air 4'
1107      device: 'tablet'
1108    - regex: '(?:Apple-|.+_)?iPad14[C,_]1'
1109      model: 'iPad Mini 6 WiFi'
1110      device: 'tablet'
1111    - regex: '(?:Apple-|.+_)?iPad14[C,_]2'
1112      model: 'iPad Mini 6'
1113      device: 'tablet'
1114
1115    - regex: 'Apple-?TV2[C,_]1'
1116      model: 'Apple TV 2'
1117      device: 'tv'
1118    - regex: 'Apple-?TV3[C,_][12]'
1119      model: 'Apple TV 3'
1120      device: 'tv'
1121    - regex: 'Apple-?TV5[C,_]3'
1122      model: 'Apple TV 4'
1123      device: 'tv'
1124    - regex: 'Apple-?TV6[C,_]2'
1125      model: 'Apple TV 4K'
1126      device: 'tv'
1127
1128    - regex: '(?:iTunes-)?Apple[ _]?TV'
1129      model: 'Apple TV'
1130      device: 'tv'
1131    - regex: 'HomePod'
1132      model: 'HomePod'
1133      device: 'smart speaker'
1134    - regex: 'iTunes-iPad/[0-9]+(?:\.[0-9]+)* \(([^;]+);'
1135      model: 'iPad $1'
1136      device: 'tablet'
1137    - regex: '(?:Apple-|.+_)?iPad'
1138      model: 'iPad'
1139      device: 'tablet'
1140    - regex: 'iTunes-iPhone/[0-9]+(?:\.[0-9]+)* \(([^;]+);'
1141      model: 'iPhone $1'
1142      device: 'smartphone'
1143    - regex: '(?:Apple-)?iPhone ?(3GS?|4S?|5[CS]?|6(:? Plus)?)?'
1144      model: 'iPhone $1'
1145      device: 'smartphone'
1146
1147# micromax
1148MicroMax:
1149  regex: '(?:MicroMax[ \-\_]?[a-z0-9]+|Q327)|4560MMX|P70221|(?:YU(?:5040|5530)|AQ5001(?: Canvas Power)?|N8216|N8301)(?:[);/ ]|$)'
1150  device: 'smartphone'
1151  models:
1152    - regex: 'AQ5001 Canvas Power'
1153      model: 'Canvas Power'
1154    - regex: 'AQ5001'
1155      model: 'Canvas Juice 2'
1156    - regex: 'Q465(?:[);/ ]|$)'
1157      model: 'Canvas Juice 4'
1158    - regex: 'E451(?:[);/ ]|$)'
1159      model: 'Canvas Pulse'
1160    - regex: '4560MMX(?:[);/ ]|$)'
1161      model: '4560MMX'
1162    - regex: 'E481(?:[);/ ]|$)'
1163      model: 'Canvas 5'
1164    - regex: 'Q462(?:[);/ ]|$)'
1165      model: 'Canvas 5 Lite'
1166    - regex: 'P70221(?:[);/ ]|$)'
1167      model: 'Canvas Tab'
1168      device: 'tablet'
1169    - regex: 'Q(3[25]7)(?:[);/ ]|$)'
1170      model: 'Bolt Q$1'
1171    - regex: 'Q417'
1172      model: 'Canvas Mega'
1173    - regex: 'Q402\+'
1174      model: 'Bolt Pace'
1175    - regex: 'YU5040(?:[);/ ]|$)'
1176      model: 'YU Yureka YU5040'
1177    - regex: 'YU5530(?:[);/ ]|$)'
1178      model: 'YU Yureka S YU5530'
1179    - regex: 'Q424'
1180      model: 'Bolt Selfie'
1181    - regex: 'Q402 ?Plus'
1182      model: 'Bharat 2 Plus'
1183    - regex: 'Q426'
1184      model: 'Canvas Mega 2'
1185    - regex: 'N8216'
1186      model: 'Infinity N11'
1187    - regex: 'N8301'
1188      model: 'Infinity N12'
1189    - regex: 'Q440Plus(?:[);/ ]|$)'
1190      model: 'Q440 Plus'
1191    - regex: 'Micromax[_ ]Q353P(?:[);/ ]|$)'
1192      model: 'Q353 Plus'
1193    - regex: 'Q452(?:[);/ ]|$)'
1194      model: 'Spark 4G Prime'
1195    - regex: 'Q4601(?:[);/ ]|$)'
1196      model: 'Selfie 2 Note'
1197    - regex: 'Q421(?:[);/ ]|$)'
1198      model: 'Canvas Magnus HD'
1199    - regex: 'E313(?:[);/ ]|$)'
1200      model: 'Canvas Xpress 2'
1201    - regex: 'Micromax C1A(?:[);/ ]|$)'
1202      model: 'Canvas 1 (2018)'
1203    - regex: 'C2APLS(?:[);/ ]|$)'
1204      model: 'Canvas 2 Plus'
1205    - regex: 'Bharat (\d)(?:[);/ ]|$)'
1206      model: 'Bharat $1'
1207
1208    - regex: 'MicroMax(?:[ \-\_])?(X291|X246|X252|X458|X312)'
1209      model: '$1'
1210      device: 'feature phone'
1211
1212    - regex: 'MicroMax(?:[ \-\_])?(P[a-z0-9]+)'
1213      model: '$1'
1214      device: 'tablet'
1215    - regex: 'MicroMax(?:[ \-\_])?([a-z0-9]+)'
1216      model: '$1'
1217
1218# 3Q
12193Q:
1220  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'
1221  device: 'tablet'
1222  models:
1223    - regex: 'MT0724B|LC0901D|LC0816C|LC0810C|LC0809B|LC0808B|LC0804B|LC0725B|LC0723B'
1224      model: 'Qoo! P-Pad'
1225    - regex: 'VM1017A|TS1013B|TS0807B|RC9731C|RC9730C|RC9727F|RC9726C|RC9724C|RC9717B|RC9716B|RC9712C|RC9711B|RC1301C|RC1025F|RC1019G|RC1018C|RC0817C|RC0813C|RC0743H|RC0734H|RC0726B|RC0722C|RC0721B|RC0719H|RC0718C|RC0710B|RC0709B|QS9715F|QS1023H|QS0815C|QS0730C|QS0728C|QS0717D|QS0716D|QS0715C|MT0811B|MT0739D|MT0729[BD]|LC1016C|LC0720C|BC9710AM|AC1024C|AC0731B'
1226      model: 'Qoo! Q-Pad'
1227    - regex: 'MT7801C|QS9718C|QS9719D|VM0711A|OC1020A'
1228      model: 'Qoo! Surf'
1229    - regex: 'TS9708B'
1230      model: 'Surf TS1009B'
1231    - regex: 'AC7803C|AC0732C'
1232      model: 'Qoo! Lite'
1233    - regex: 'MT0812E|RC7802F'
1234      model: 'Qoo! Meta'
1235    - regex: 'EL72B|(?:3Q_)?ER71B'
1236      model: 'Qoo! Q-Book'
1237    - regex: '(RC7804F)'
1238      model: 'Qoo! Glaze'
1239
1240# 4Good
12414Good:
1242  regex: '4Good[ _]|S450m [43]G|S555m 4G|S501m 3G|T700i_3G|People (?:G503|G410|GT300)|Light (?:A10[34]|B100)'
1243  device: 'smartphone'
1244  models:
1245    - regex: '(T700i|T100m)[_ ]?3G'
1246      model: '$1 3G'
1247      device: 'tablet'
1248    - regex: 'People (GT300|AT100)'
1249      model: 'People $1'
1250      device: 'tablet'
1251    - regex: 'S555m[_ ]4G'
1252      model: 'People'
1253    - regex: '(S(?:450m|501m)[_ ][43]G|Light (?:A10[34]|B100)|People (?:G503|G410))'
1254      model: '$1'
1255    - regex: '4Good[ _]([^);/]+)(?: Build|[);])'
1256      model: '$1'
1257
1258# Acteck
1259Acteck:
1260  regex: 'BLECK'
1261  device: 'tablet'
1262  model: 'Bleck'
1263
1264# Alba
1265Alba:
1266  regex: 'Alba ?(?:57|4|10 TABLET|(?:[78]|10)(?:Nou|Pie))(?:[);/ ]|$)'
1267  device: 'smartphone'
1268  models:
1269    - regex: 'Alba 57'
1270      model: '5.7'
1271    - regex: 'Alba (4)'
1272      model: '$1'
1273    - regex: '10 TABLET'
1274      device: 'tablet'
1275      model: '10 Tablet'
1276    - regex: 'Alba((?:[78]|10)(?:Nou|Pie))'
1277      device: 'tablet'
1278      model: '$1'
1279
1280# AllCall
1281AllCall:
1282  regex: 'AllCall_|Heat[34]|Rio_X(?:[);/ ]|$)|Hot ?[125][^;/]+ Build'
1283  device: 'smartphone'
1284  models:
1285    - regex: 'AllCall_(Alpha|Atom|Bro|Madrid)'
1286      model: '$1'
1287    - regex: 'AllCall_S1_X'
1288      model: 'S1 X'
1289    - regex: 'AllCall_S1'
1290      model: 'S1'
1291    - regex: 'AllCall_RIO_S'
1292      model: 'Rio S'
1293    - regex: 'AllCall_RIO_PRO'
1294      model: 'Rio Pro'
1295    - regex: 'AllCall_RIO'
1296      model: 'Rio'
1297    - regex: 'Heat([34])'
1298      model: 'Heat $1'
1299    - regex: 'Rio_X(?:[);/ ]|$)'
1300      model: 'Rio X'
1301    - regex: 'Hot ?([125][^;/]+) Build'
1302      model: 'Hot $1'
1303
1304# Bravis
1305Bravis:
1306  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'
1307  device: 'smartphone'
1308  models:
1309    - regex: 'A501 BRIGHT'
1310      model: 'A501 Bright'
1311    - regex: 'Bravis[_ ]X500'
1312      model: 'Trace Pro'
1313    - regex: 'Bravis[_ ]A506'
1314      model: 'Crystal'
1315    - regex: 'Bravis[_ ]A553'
1316      model: 'Discovery'
1317    - regex: 'BRAVIS[ _]TAU'
1318      model: 'Tau'
1319    - regex: 'BRAVIS[ _]DELTA'
1320      model: 'Delta'
1321    - regex: 'BRAVIS[ _]TREND'
1322      model: 'Trend'
1323    - regex: 'B501'
1324      model: 'Easy'
1325    - regex: 'N1-570'
1326      model: 'Space'
1327    - regex: 'BRAVIS[ ]A554'
1328      model: 'A554 Grand'
1329    - regex: 'BRAVIS[ ]S500'
1330      model: 'S500 Diamond'
1331    - regex: 'A505 JOY Plus'
1332      model: 'A505 Joy Plus'
1333    - regex: 'A552 JOY Max'
1334      model: 'A552 Joy Max'
1335    - regex: 'Atlas A551'
1336      model: 'A551 Atlas'
1337    - regex: 'A503 Joy'
1338      model: 'A503 Joy'
1339    - regex: 'A504 Trace'
1340      model: 'A504 Trace'
1341    - regex: 'A512 Harmony Pro'
1342      model: 'A512 Harmony Pro'
1343    - regex: 'A511 Harmony'
1344      model: 'A511 Harmony'
1345    - regex: 'A510_Jeans_4G'
1346      model: 'A510 Jeans 4G'
1347    - regex: 'A509_Jeans'
1348      model: 'A509 Jeans'
1349    - regex: 'BRAVIS NEO'
1350      model: 'A401 Neo'
1351    - regex: 'N1_550_Cruiser'
1352      model: 'N1-550 Cruiser'
1353    - regex: 'BRAVIS OMEGA'
1354      model: 'Omega'
1355    - regex: 'BRAVIS BIZ'
1356      model: 'Biz'
1357    - regex: 'BRAVIS POWER'
1358      model: 'Power'
1359    - regex: 'BRAVIS[ _]SPARK'
1360      model: 'Spark'
1361
1362    - regex: 'BRAVIS[ _]SLIM[ _]3G'
1363      model: 'Slim 3G'
1364      device: 'tablet'
1365    - regex: 'NP 104 3G'
1366      model: 'NP104 3G'
1367      device: 'tablet'
1368    - regex: 'BRAVIS NP 103'
1369      model: 'NP103'
1370      device: 'tablet'
1371    - regex: 'BRAVIS NP 844'
1372      model: 'NP844'
1373      device: 'tablet'
1374
1375    - regex: 'Bravis[_ ]([^;\)]+) Build'
1376      model: '$1'
1377    - regex: '(NB(?:106M|10[1-8]|75[134]|7[145]|8[57]1|76)|NP101|NB961)'
1378      model: '$1'
1379      device: 'tablet'
1380
1381
1382# Acer (acer.com)
1383Acer:
1384  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(?! Nova)(?:[);/ ]|$)|(?:A1-(713(HD)?|7[23]4|830|841|840(?:FHD)?|81[01])|A3-A[1234][01]|B1-(7[1235-8][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)(?:[);/ ]|$)'
1385  device: 'smartphone'
1386  models:
1387    # smart displays
1388    - regex: 'DA220HQL(?:[);/ ]|$)'
1389      model: 'DA220HQL'
1390      device: 'smart display'
1391    - regex: 'DA241HL(?:[);/ ]|$)'
1392      model: 'DA241HL'
1393      device: 'smart display'
1394    - regex: '(DA[0-9]+HQ?L)(?:[);/ ]|$)'
1395      model: '$1'
1396      device: 'smart display'
1397
1398    # explicit tablet models
1399    - regex: 'A1-81[01]'
1400      model: 'Iconia A'
1401      device: 'tablet'
1402    - regex: 'ET-108-11A'
1403      model: 'Enduro T1'
1404      device: 'tablet'
1405    - regex: 'ET-108-11A'
1406      model: 'Enduro T1'
1407      device: 'tablet'
1408    - regex: 'TPA60W'
1409      model: 'TPA60W'
1410      device: 'tablet'
1411    - regex: 'A1-84(1|0(?:FHD)?)'
1412      model: 'Iconia Tab 8'
1413      device: 'tablet'
1414    - regex: 'A1-713(HD)?'
1415      model: 'Iconia Tab 7'
1416      device: 'tablet'
1417    - regex: 'A1-830'
1418      model: 'Iconia A1'
1419      device: 'tablet'
1420    - regex: 'A1-7[23]4'
1421      model: 'Iconia Talk S'
1422      device: 'tablet'
1423    - regex: 'A3-A[12][01]'
1424      model: 'Iconia A3'
1425      device: 'tablet'
1426    - regex: 'A3-A[34]0'
1427      model: 'Iconia Tab 10'
1428      device: 'tablet'
1429    - regex: 'B1-7(?:[5678]0|30HD|A0)'
1430      model: 'Iconia One 7'
1431      device: 'tablet'
1432    - regex: 'B1-7[123][01]|B1-A71'
1433      model: 'Iconia B1'
1434      device: 'tablet'
1435    - regex: 'B1-7[23]3'
1436      model: 'Iconia Talk 7'
1437      device: 'tablet'
1438    - regex: 'B1-8[123567]0'
1439      model: 'Iconia One 8'
1440      device: 'tablet'
1441    - regex: 'B3-A([125]0|3[02]|[45]0FHD|4[02])'
1442      model: 'Iconia One 10'
1443      device: 'tablet'
1444    - regex: 'A101'
1445      model: 'Vangogh'
1446      device: 'tablet'
1447    - regex: 'A200'
1448      model: 'Picasso E'
1449      device: 'tablet'
1450    - regex: 'A50[01]'
1451      model: 'Picasso'
1452      device: 'tablet'
1453    - regex: 'Acer One 7'
1454      model: 'One 7'
1455      device: 'tablet'
1456    - regex: 'GT-810'
1457      model: 'Predator 8'
1458      device: 'tablet'
1459
1460    # explicit smartphone models
1461    - regex: 'E39(?:[);/ ]|$)'
1462      model: 'Liquid E700'
1463    - regex: 'E310(?:[);/ ]|$)'
1464      model: 'Liquid Mini'
1465    - regex: 'E320(?:-orange)?(?:[);/ ]|$)'
1466      model: 'Liquid Express'
1467    - regex: 'E310(?:[);/ ]|$)'
1468      model: 'beTouch E210'
1469    - regex: 'Android.*V360(?:[);/ ]|$)'
1470      model: 'Liquid E1 Duo'
1471    - regex: 'Android.*V370(?:[);/ ]|$)'
1472      model: 'Liquid E2 Duo'
1473    - regex: 'S510(?:[);/ ]|$)'
1474      model: 'Liquid S1'
1475    - regex: 'S520(?:[);/ ]|$)'
1476      model: 'Liquid S2'
1477    - regex: '(?:Acer_)?P400(?:[);/ ]|$)'
1478      model: 'neoTouch P400'
1479    - regex: '(?:Acer_)?P300(?:[);/ ]|$)'
1480      model: 'neoTouch P300'
1481    - regex: '(?:Acer_)?S200(?:[);/ ]|$)'
1482      model: 'neoTouch S200'
1483    - regex: '(?:Acer_)?E100(?:[);/ ]|$)'
1484      model: 'beTouch E100'
1485    - regex: 'Android.*Z1([234])0(?:[);/ ]|$)'
1486      model: 'Liquid Z$1'
1487    - regex: 'Android.*Z110(?:[);/ ]|$)'
1488      model: 'Liquid Z110'
1489    - regex: 'Android.*Z150(?:[);/ ]|$)'
1490      model: 'Liquid Z5 Duo'
1491    - regex: 'Android.*Z160(?:[);/ ]|$)'
1492      model: 'Liquid Z4 Duo'
1493    - regex: 'Android.*Z(5\d{2})(?:[);/ ]|$)'
1494      model: 'Liquid Z$1'
1495    - regex: 'Android.*S57(?:[);/ ]|$)'
1496      model: 'Liquid Jade Z'
1497    - regex: 'Android.*T02(?:[);/ ]|$)'
1498      model: 'Liquid Z530'
1499    - regex: 'Android.*T03(?:[);/ ]|$)'
1500      model: 'Liquid Z630'
1501    - regex: 'Android.*T04(?:[);/ ]|$)'
1502      model: 'Liquid Z630S'
1503    - regex: 'Android.*T06(?:[);/ ]|$)'
1504      model: 'Liquid Zest'
1505    - regex: 'Android.*T07(?:[);/ ]|$)'
1506      model: 'Liquid Zest 4G'
1507    - regex: 'Android.*T08(?:[);/ ]|$)'
1508      model: 'Liquid Zest Plus'
1509    - regex: 'TM01(?:[);/ ]|$)'
1510      model: 'Liquid M330'
1511    - regex: 'M220(?:[);/ ]|$)'
1512      model: 'Liquid M220'
1513    - regex: 'AcerTD600'
1514      model: 'TD600'
1515    - regex: 'Android.*S55(?:[);/ ]|$)'
1516      model: 'Liquid Jade'
1517
1518    # desktop models
1519    - regex: '(?:Acer )?(Chromebook R1[13])'
1520      model: '$1'
1521      device: 'desktop'
1522    - regex: '(?:Acer )?(Chromebook 14)'
1523      model: '$1'
1524      device: 'desktop'
1525    - regex: '(Aspire (?:V5-121|XC-704G|V5-573G|A515-51G|4349))'
1526      model: '$1'
1527      device: 'desktop'
1528    - regex: '(Predator G9-793|Aspire E5-511)'
1529      model: '$1'
1530      device: 'desktop'
1531
1532    - regex: 'Acer; ?([^;\(\)/]+)'
1533      model: '$1'
1534    - regex: 'Acer(?! ?inc)[ _\-]?([^;\(\)/]+)[();/ ]'
1535      model: '$1'
1536    - regex: 'acer[\-_]([a-z0-9]+)'
1537      model: '$1'
1538    - regex: 'a(101|110|2[10]0|211|50[10]|51[10]|70[10])(?:[);/ ]|$)'
1539      model: 'Iconia Tab A$1'
1540      device: 'tablet'
1541
1542# Advan
1543Advan:
1544  regex: '(?:ADVAN (?:M4|S40)|i7U|S45E|S50H|I7D|i55[KD]|i4U|S7D|S4Z|i5[KE]|S5E[ _]NXT|S5J\+|S4\+)(?:[);/ ]|$)|[ ](?:50(?:[46]1|59)|600[24])(?: Build|\) AppleWebKit)|(?:E1C_3G)(?:[);/ ]|$)'
1545  device: 'smartphone'
1546  models:
1547    - regex: 'ADVAN M4'
1548      model: 'M4'
1549    - regex: 'ADVAN S40'
1550      model: 'S40'
1551    - regex: 'i7U'
1552      model: 'I Lite i7U'
1553    - regex: 'S5E[ _]NXT'
1554      model: 'S5E NXT'
1555    - regex: 'i(55[KD]|5[KE])'
1556      model: 'I$1'
1557    - regex: 'i4U'
1558      model: 'I4U'
1559    - regex: ' 6004(?: Build|\) AppleWebKit)'
1560      model: 'G2 Pro'
1561    - regex: ' 6002(?: Build|\) AppleWebKit)'
1562      model: 'G3 Pro'
1563    - regex: '(S45E|50[46]1|5059|S50H|I7D|S7D|S4Z|S5J\+|S4\+)(?:[);/ ]|$)'
1564      model: '$1'
1565    - regex: 'E1C_3G'
1566      device: 'tablet'
1567      model: 'E1C 3G'
1568
1569# Advance (advanceperu.com)
1570Advance:
1571  regex: 'Hollogram|(?:HL(?:4936|6246|[56]575|5[67]67)|IntroTr3544|Pr(?:61(?:4[56]|50)|60[27]0|5[69]50)|Tr3845)(?:[);/ ]|$)'
1572  device: 'smartphone'
1573  models:
1574    # explicit table models
1575    - regex: 'IntroTr3544|Tr3845'
1576      model: 'Intro'
1577      device: 'tablet'
1578    - regex: 'Pr(61(?:4[56]|50)|60[27]0|5[69]50)'
1579      model: 'Prime PR$1'
1580      device: 'tablet'
1581    # explicit smartphone models
1582    - regex: 'HL(4936|6246|[56]575|5[67]67)'
1583      model: 'Hollogram HL$1'
1584    - regex: 'Hollogram ([^;/)]+)(?: Build|[;)])'
1585      model: 'Hollogram $1'
1586
1587# AGM (agm.tel)
1588AGM:
1589  regex: 'AGM ([^/;)]+)(?: Build|[;)])'
1590  device: 'smartphone'
1591  models:
1592    - regex: 'AGM A9(?:[);/ ]|$)'
1593      model: 'A9'
1594    - regex: 'AGM ([^/;)]+)(?: Build|[;)])'
1595      model: '$1'
1596
1597# Airness
1598Airness:
1599  regex: 'AIRNESS-([\w]+)'
1600  device: 'feature phone'
1601  model: '$1'
1602
1603# Aiwa
1604Aiwa:
1605  regex: '(?:AW790|M300(?! 4G)|AWM(?:533|50[19]|561)|AW500)(?:[);/ ]|$)'
1606  device: 'smartphone'
1607  models:
1608    - regex: 'AW790(?:[);/ ]|$)'
1609      model: 'AW790'
1610    - regex: 'AW500(?:[);/ ]|$)'
1611      model: 'AW500'
1612    - regex: 'AWM(533|50[19]|561)(?:[);/ ]|$)'
1613      model: 'AWM$1'
1614    - regex: 'M300(?:[);/ ]|$)'
1615      model: 'M300'
1616      device: 'phablet'
1617
1618# Akai
1619Akai:
1620  regex: 'AKAI,|Akai[ _-]|Eco[ _]E2|Glory[ _](?:G[1235]|L[123]|O[125])|TAB-[79]8[03]0Q?|X6 METAL|AKTB-703MZ'
1621  device: 'smartphone'
1622  models:
1623    - regex: 'TAB-([79]8[03]0Q?)'
1624      device: 'tablet'
1625      model: 'TAB $1'
1626    - regex: 'AKTB-703MZ'
1627      device: 'tablet'
1628      model: 'AKTB-703MZ'
1629
1630    - regex: 'X6 METAL'
1631      model: 'iLike'
1632    - regex: 'Glory[ _](G[1235]|L[123]|O[125])'
1633      model: 'Glory $1'
1634    - regex: 'Eco[ _]E2'
1635      model: 'Eco E2'
1636    - regex: 'Akai[ _-]([^;/)]+)(?: Build|[;)])'
1637      model: '$1'
1638
1639    - regex: 'AKAI,(AK3219NF)'
1640      device: 'tv'
1641      model: '$1'
1642    - regex: 'Si2157LG32'
1643      device: 'tv'
1644      model: 'Si2157LG32'
1645
1646# Arian
1647Arian Space:
1648  regex: 'Arian Space'
1649  device: 'tablet'
1650  models:
1651    - regex: '100 ST1004PG'
1652      model: '100'
1653    - regex: '80 SS8003PG'
1654      model: '80'
1655    - regex: '71 ST7002PG'
1656      model: '71'
1657    - regex: '70 ST7001RW'
1658      model: '70'
1659
1660# Alcatel (alcatelmobile.com)
1661Alcatel:
1662  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[EDX]|4027[ADNX]|4028[AEJS]|4032[ADEX]|4034[ADEFGXTL]|4035[ADXY]|4045[ADEXL]|4047[ADFGNX]|4049[DEGMX]|4060[SW]|A466BG|A621BL|4114E|4087U|5001[ADJTU]|5002[ABDEFHS]|5003[ADGU]|5006D|5007[AU]|5008[ADUYT]|5009[AD]|5010[DEGSUX]|5011A|5012[DFG]|5015[ADEX]|5016[AXJ]|5017[ABDEOX]|5019D|5022[EDX]|5023[EF]|5024[ADJF]|5025[DEG]|5026[ADJ]|5027B|5028[AYD]|5029[EYDA]|5030[UFDE]|5032W|5033[AEFXDJGMOTXYQS]|5034D|5036D|5038[ADEX]|5039[DY]|5041[CD]|5042[ADEFGWXT]|5044[ADGIKOPSTY]|5045[ADFGIJTXY]|5046[ADGIJSTUY]|5047[DIUY]|5048[AYUI]|5049[EGSWZ]|5050[ASXY]|5051[ADEJMTWX]|5052[ADY]|5053[ADKY]|5054[ADNSTWX]|5056[ADEGIJMNTUWX]|5057M|5058[AIY]|5059[ADJXYZIST]|5060[ADJ]|5061[KU]|5065[ADNWX]|5070D|5080[ADFQUX]|5085[ABCDGHIJNOQY]|5086[ADY]|5090[AIY]|5095[IKY]|5098[OS]|5099[ADYUI]|5116J|5145A|6016[ADEX]|6025H|6036[AXY]|6037[BKY]|6039[AHJKYS]|6042D|6043[AD]|6044D|6045[BFIKOYX]|6050[AFY]|6055[ABDHIKPUYZ]|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[XQM]|9001[DIX]|900[25]X|9003[AX]|9024O|9013X|9026X|9007[ATX]|9008[ADIJNTUX]|9009G|9010X|9013A|9020A|9022X|9027[QFTWX]|9029Z|9032[XZ]|9203A|A(?:464BG|570BL|50[13]DL|57[17]VL|574BL)|6056H|I213|I216[AX]|(?<!\.)80(?:82|6[78])|A576CC)(?:_(?:EEA|RU))?|P3[36]0X)(?:[);/ ]|$)'
1663  device: 'smartphone'
1664  models:
1665    - regex: '4087U'
1666      model: '1SE Light'
1667    - regex: '5022[EDX]|5070D'
1668      model: 'One Touch Pop Star'
1669    - regex: '6044D'
1670      model: 'One Touch Pop Up'
1671    - regex: '4015[ATX]|4016A'
1672      model: 'One Touch Pop C1'
1673    - regex: '4015[DN]|4016[DX]'
1674      model: 'One Touch Pop C1 Dual SIM'
1675    - regex: '4032[AX]'
1676      model: 'One Touch Pop C2'
1677    - regex: '4032[DE]'
1678      model: 'One Touch Pop C2 Dual SIM'
1679    - regex: '5036D'
1680      model: 'One Touch Pop C5 Dual SIM'
1681    - regex: '7040[AFK]|7041X|7042A'
1682      model: 'One Touch Pop C7'
1683    - regex: '7040[DE]|7041D'
1684      model: 'One Touch Pop C7 Dual SIM'
1685    - regex: '4018[ADEFMX]'
1686      model: 'One Touch Pop D1'
1687    - regex: '4035[ADXY]'
1688      model: 'One Touch Pop D3'
1689    - regex: '5038[ADEX]'
1690      model: 'One Touch Pop D5'
1691    - regex: '4045[AXL]'
1692      model: 'One Touch Pop 2 4"'
1693    - regex: '4045[DE]'
1694      model: 'One Touch Pop 2 4" Dual SIM'
1695    - regex: '5042[AFGWX]'
1696      model: 'One Touch Pop 2 4.5"'
1697    - regex: '5042[DE]'
1698      model: 'One Touch Pop 2 4.5" Dual SIM'
1699    - regex: '7043[AY]|7044[AX]'
1700      model: 'One Touch Pop 2 5"'
1701    - regex: '7043[EK]'
1702      model: 'One Touch Pop 2 5" Dual SIM'
1703    - regex: '50[16]5X'
1704      model: 'One Touch Pop 3'
1705    - regex: '5015[AE]|5016[AJ]|5065[ADWX]|5116J'
1706      model: 'One Touch Pop 3 5"'
1707    - regex: '5025[DEG]|5054[ADSTX]'
1708      model: 'One Touch Pop 3 5.5"'
1709    - regex: '5015D'
1710      model: 'One Touch Pop 3 Dual SIM'
1711    - regex: '5051[AEJMTWX]'
1712      model: 'One Touch Pop 4'
1713    - regex: '5051D'
1714      model: 'One Touch Pop 4 Dual SIM'
1715    - regex: '5095[IKY]'
1716      model: 'One Touch Pop 4S'
1717    - regex: '5056[ADEGJMTUX]'
1718      model: 'One Touch Pop 4+'
1719    - regex: '7070X'
1720      model: 'One Touch Pop 4 6"'
1721    - regex: '5057M'
1722      model: 'One Touch Pop Mirage'
1723    - regex: '5050[ASXY]'
1724      model: 'One Touch Pop S3'
1725    - regex: '7045Y'
1726      model: 'One Touch Pop S7'
1727    - regex: '6037[BKY]'
1728      model: 'One Touch Idol 2'
1729    - regex: '5042T'
1730      model: 'One Touch Astro'
1731    - regex: '5027B'
1732      model: 'One Touch Dawn'
1733    - regex: '5024[ADF]|5028Y|6025H'
1734      model: '1S'
1735    - regex: '7071[ADX]'
1736      model: 'A7 XL'
1737    - regex: '5002[ABDEHS]'
1738      model: '1B (2020)'
1739    - regex: '4034T'
1740      model: '1E'
1741    - regex: '5002F'
1742      model: '1A (2020)'
1743    - regex: '5034D|6056H'
1744      model: '3L'
1745    - regex: 'A576CC'
1746      model: 'Kora A576CC'
1747    - regex: '7040[RT]'
1748      model: 'One Touch Fierce 2'
1749    - regex: '5056[NW]'
1750      model: 'One Touch Fierce 4'
1751    - regex: '5054N'
1752      model: 'One Touch Fierce XL'
1753    - regex: '6042D'
1754      model: 'One Touch Flash'
1755    - regex: '6016[AX]'
1756      model: 'One Touch Idol 2 mini'
1757    - regex: '6016[DE]'
1758      model: 'One Touch Idol 2 mini Dual SIM'
1759    - regex: '6036[AXY]'
1760      model: 'One Touch Idol 2 mini S'
1761    - regex: '6050[AFY]'
1762      model: 'One Touch Idol 2S'
1763    - regex: '6039[AHJKYS]|idol3'
1764      model: 'One Touch Idol 3'
1765    - regex: '6045[BFIKOYX]'
1766      model: 'One Touch Idol 3 5.5"'
1767    - regex: '6055[ABDHIKPUYZ]'
1768      model: 'One Touch Idol 4'
1769    - regex: '6070K'
1770      model: 'One Touch Idol 4S'
1771    - regex: '6058[ADX]'
1772      model: 'One Touch Idol 5'
1773    - regex: '6060[SX]'
1774      model: 'One Touch Idol 5S'
1775    - regex: '(?:Alcatel_)?6060C'
1776      model: 'One Touch Idol 5'
1777    - regex: '6043[AD]'
1778      model: 'One Touch Idol X+'
1779    - regex: '8030Y'
1780      model: 'One Touch Hero 2'
1781    - regex: '7055A'
1782      model: 'One Touch Hero 2C'
1783    - regex: '7053D'
1784      model: 'One Touch X1'
1785    - regex: '5065N'
1786      model: 'TRU'
1787    - regex: 'A574BL'
1788      model: 'Raven'
1789    - regex: 'A577VL'
1790      model: 'Zip'
1791    - regex: 'A466BG'
1792      model: 'Pixi Unite'
1793    - regex: '5056I'
1794      model: 'One Touch Optus X Smart'
1795    - regex: 'A570BL'
1796      model: 'One Touch Pixi Avion LTE'
1797    - regex: 'A571VL'
1798      model: 'One Touch Pixi Avion 4G LTE'
1799    - regex: '4024[DEX]'
1800      model: 'One Touch Pixi First'
1801    - regex: 'A464BG'
1802      model: 'One Touch Pixi Glitz'
1803    - regex: 'A621BL'
1804      model: 'One Touch Pixi Glory'
1805    - regex: '4014D'
1806      model: 'One Touch Pixi 2'
1807    - regex: '4009[AFIKMSX]'
1808      model: 'One Touch Pixi 3 3.5"'
1809    - regex: '4009[DE]'
1810      model: 'One Touch Pixi 3 3.5" Dual SIM'
1811    - regex: '4003[AJ]|4013[DEJKMX]|4014[AEKMX]|4114E'
1812      model: 'One Touch Pixi 3 4"'
1813    - regex: '4027[ADNX]|4028[AEJS]|5019D'
1814      model: 'One Touch Pixi 3 4.5"'
1815    - regex: '5017[ABDEOX]'
1816      model: 'One Touch Pixi 3 4.5" 4G'
1817    - regex: '9002X'
1818      model: 'One Touch Pixi 3 7"'
1819      device: 'phablet'
1820    - regex: '9007A'
1821      model: 'One Touch Pixi 3 7"'
1822      device: 'tablet'
1823    - regex: '9007[TX]'
1824      model: 'One Touch Pixi 3 7" 4G'
1825      device: 'tablet'
1826    - regex: '(?:9009G|9013A)'
1827      model: '1T'
1828      device: 'tablet'
1829    - regex: '(?!<\.)8082(?:_(?:EEA|RU))?(?:[);/ ]|$)'
1830      model: '1T 10'
1831      device: 'tablet'
1832    - regex: '(?:(?!<\.)806[78]|9013X)(?:_(?:EEA|RU))?(?:[);/ ]|$)'
1833      model: '1T 7.0"'
1834      device: 'tablet'
1835    - regex: '9022X'
1836      model: 'One Touch Pixi 3 8"'
1837      device: 'phablet'
1838    - regex: '9010X'
1839      model: 'One Touch Pixi 3 10"'
1840      device: 'tablet'
1841    - regex: '4017[ADEFSX]'
1842      model: 'One Touch Pixi 4 3.5"'
1843    - regex: '4034[ADEFGXL]'
1844      model: 'One Touch Pixi 4 4"'
1845    - regex: '4060[SW]'
1846      model: 'One Touch Pixi 4 4.5"'
1847    - regex: '5023[EF]'
1848      model: 'One Touch Pixi 4 Plus Power'
1849    - regex: '5010[DEGSUX]'
1850      model: 'One Touch Pixi 4 5" 3G'
1851    - regex: '5041D'
1852      model: 'One Touch Pixi 4 5.0"'
1853    - regex: '5012[DFG]'
1854      model: 'One Touch Pixi 4 5.5" 3G'
1855    - regex: '5045[ADFGIJTXY]|5145A'
1856      model: 'One Touch Pixi 4 5" 4G'
1857    - regex: '5098O'
1858      model: 'One Touch Pixi Theatre'
1859    - regex: 'A501DL'
1860      model: 'A1'
1861    - regex: 'A503DL'
1862      model: 'A1X'
1863    - regex: '(?:Alcatel_)?5004R'
1864      model: 'Axel'
1865    - regex: '5046[ADIJTUY]'
1866      model: 'A3'
1867    - regex: '5011A|5049[EG]'
1868      model: 'A3 Plus'
1869    - regex: '9008[ADIJNTUX]'
1870      model: 'A3 XL'
1871    - regex: '9203A'
1872      model: 'A3 7" 3G'
1873      device: 'tablet'
1874    - regex: '(?:9027[QFTWX]|9032X)'
1875      model: '3T 8.0"'
1876      device: 'tablet'
1877    - regex: '9026X'
1878      model: 'A3 10"'
1879      device: 'tablet'
1880    - regex: '5085[BQ]'
1881      model: 'A5'
1882    - regex: '5085[ADHIJY]'
1883      model: 'A5 LED'
1884    - regex: '5085N'
1885      model: 'A5 Max LED'
1886    - regex: '5090[AIY]'
1887      model: 'A7'
1888    - regex: '5046[GS]'
1889      model: 'A30'
1890    - regex: '5049S'
1891      model: 'A30 Plus'
1892    - regex: '5049Z'
1893      model: 'A30 Fierce'
1894    - regex: '5085[GO]'
1895      model: 'A50'
1896    - regex: '5048[AYUI]'
1897      model: '3X (2019)'
1898    - regex: '5049W'
1899      model: 'Revvl'
1900    - regex: '8050[GX]'
1901      model: 'One Touch Pixi 4 6" 3G'
1902    - regex: '8050[ED]'
1903      model: 'One Touch Pixi 4 6" 3G Dual SIM'
1904    - regex: '5098S|9001[DIX]'
1905      model: 'One Touch Pixi 4 6" 4G'
1906    - regex: '9003[AX]'
1907      model: 'One Touch Pixi 4 7" 3G'
1908      device: 'tablet'
1909    - regex: '8063'
1910      model: 'One Touch Pixi 4 7" WiFi'
1911      device: 'tablet'
1912    - regex: '9024O'
1913      model: 'One Touch Pixi 5'
1914      device: 'tablet'
1915    - regex: 'I216[AX]'
1916      model: 'One Touch Pixi 7'
1917      device: 'tablet'
1918    - regex: 'I213'
1919      model: 'One Touch Pixi 7'
1920      device: 'tablet'
1921    - regex: '9005X'
1922      model: 'One Touch Pixi 8'
1923      device: 'tablet'
1924    - regex: 'P320X'
1925      model: 'One Touch POP 8'
1926      device: 'tablet'
1927    - regex: 'P310X'
1928      model: 'One Touch POP 7'
1929      device: 'tablet'
1930    - regex: 'P330X'
1931      model: 'One Touch POP 7S'
1932      device: 'tablet'
1933    - regex: '9020A'
1934      model: 'One Touch Trek HD'
1935      device: 'tablet'
1936    - regex: '7048[ASWX]'
1937      model: 'One Touch Go Play'
1938    - regex: '(?:Alcatel-)?OT-802'
1939      model: 'Wave'
1940    - regex: 'ALCATEL_ONE_TOUCH_768T'
1941      model: 'Island'
1942    - regex: '(?:TRIBE_)?3075A'
1943      model: 'One Touch Tribe'
1944    - regex: 'ALCATEL_one_touch_585'
1945      model: 'One Touch 585'
1946    - regex: 'ALCATEL_ONE_TOUCH_838'
1947      model: 'One Touch 838'
1948    - regex: 'ALCATEL_one_touch_813d'
1949      model: 'One Touch 813D'
1950    - regex: 'ALCATEL_one_touch_813'
1951      model: 'One Touch 813'
1952    - regex: 'OT871A'
1953      model: 'One Touch 871A'
1954    - regex: 'P360X'
1955      model: 'One Touch Pop 10'
1956    - regex: '(?:Alcatel[ _])?One[ _]?Touch[ _]((?:T[0-9]+|TAB[^/;]+|EVO[78](?:HD)?)) Build'
1957      device: 'tablet'
1958      model: 'One Touch $1'
1959    - regex: '(?:Alcatel[ _])?One[ _]?Touch([^/;]*) Build'
1960      model: 'One Touch$1'
1961    - regex: '(?:Alcatel[ _])?One[ _]?Touch([^/;\)]*)\)'
1962      model: 'One Touch$1'
1963    - regex: '5080[ADFQUX]'
1964      model: 'Shine Lite'
1965    - regex: 'TIMXL'
1966      model: 'TIM XL'
1967    - regex: '5085C'
1968      model: 'PulseMix'
1969    - regex: '4049[DEGMX]'
1970      model: 'U3'
1971    - regex: '5044[ADIKOPTY]'
1972      model: 'U5'
1973    - regex: '4047[DFXN]'
1974      model: 'U5 3G'
1975    - regex: '5047[DIUY]'
1976      model: 'U5 HD'
1977    - regex: '4047G'
1978      model: 'U5 Lite'
1979    - regex: '4047A'
1980      model: 'U5 Plus'
1981    - regex: '4044[CV]'
1982      model: 'Quick Flip'
1983    - regex: '4044O'
1984      model: 'Cingular Flip 2'
1985    - regex: '(?:Alcatel)?4044[MNT]'
1986      model: 'Go Flip'
1987    - regex: '5044[GS]'
1988      model: 'U50'
1989    - regex: '5033[ADXJEFGMOTXYQS]'
1990      model: '1'
1991    - regex: '5009[AD]'
1992      model: '1C'
1993    - regex: '5008[ADUYT]'
1994      model: '1X (2019)'
1995    - regex: '5007[AU]'
1996      model: '1V (2020)'
1997    - regex: '5003[ADGU]'
1998      model: '1C (2019)'
1999    - regex: '5006D'
2000      model: '3C (2019)'
2001    - regex: '5024J'
2002      model: '1S'
2003    - regex: '5028[AD]'
2004      model: '1S (2020)'
2005    - regex: '5030E'
2006      model: '1SP (2020)'
2007    - regex: '5030[DUF]'
2008      model: '1SE (2020)'
2009    - regex: '5001[ADJTU]'
2010      model: '1V'
2011    - regex: '5059[ADJXYZIT]'
2012      model: '1X'
2013    - regex: '5059S'
2014      model: 'Avalon V'
2015    - regex: '5060[ADJ]'
2016      model: '5V'
2017      device: 'phablet'
2018    - regex: '5052[ADY]|5053[ADKY]'
2019      model: '3'
2020    - regex: '5029E'
2021      model: '3 (2020)'
2022    - regex: '5029[DYA]'
2023      model: '3L (2020)'
2024    - regex: '5032W|5099[ADYUI]'
2025      model: '3V'
2026    - regex: '5026[ADJ]'
2027      model: '3C'
2028    - regex: '5039[DY]'
2029      model: '3L'
2030      device: 'phablet'
2031    - regex: '5058[AIY]'
2032      model: '3X'
2033    - regex: '5061[KU]'
2034      model: '3X (2020)'
2035    - regex: '5086[ADY]'
2036      model: '5'
2037    - regex: '6062W'
2038      model: '7'
2039    - regex: '8088[XQM]'
2040      model: '3T 10'
2041      device: 'tablet'
2042    - regex: '9029Z'
2043      model: 'Joy Tab'
2044      device: 'tablet'
2045    - regex: '9032Z'
2046      model: 'Joy Tab 2'
2047      device: 'tablet'
2048    - regex: 'Alcatel UP'
2049      model: ''
2050    - regex: '(?:ALCATEL_)?A383G'
2051      model: 'Big Easy Plus'
2052    - regex: '5041C'
2053      model: 'TETRA'
2054    - regex: 'ALCATEL([^/;]+) Build'
2055      model: '$1'
2056    - regex: 'ALCATEL[ \-]?([^/;\)]+)'
2057      model: '$1'
2058    - regex: 'ALCATEL_([^/;\)]+)'
2059      model: '$1'
2060    - regex: 'Alc([a-z0-9]+)'
2061      model: '$1'
2062
2063# Allview (allviewmobile.com)
2064Allview:
2065  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|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_(?:E|I|S|X|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-5]_Soul_Style(?:_TM)?|2_Soul_Style_Plus|2_Twin)|Viva_(?:H801|100[13]G|(?:H100[12]|H701|H802)_LTE|C701|i701G)'
2066  device: 'smartphone'
2067  models:
2068    - regex: 'A4You'
2069      model: 'A4 You'
2070    - regex: 'AX2_Frenzy'
2071      model: 'AX2 Frenzy'
2072      device: 'tablet'
2073    - regex: 'AX4Nano'
2074      model: 'AX4 Nano'
2075    - regex: 'AX5NanoQ'
2076      model: 'AX5 Nano Q'
2077      device: 'tablet'
2078    - regex: 'C6_Duo'
2079      model: 'C6 Duo'
2080    - regex: 'E([23])_Living'
2081      model: 'E$1 Living'
2082    - regex: 'E3_Jump'
2083      model: 'E3 Jump'
2084    - regex: 'E3_Sign'
2085      model: 'E3 Sign'
2086    - regex: 'E4_Lite'
2087      model: 'E4 Lite'
2088    - regex: 'M9_Connect'
2089      model: 'M9 Connect'
2090    - regex: 'P43_Easy'
2091      model: 'P43 Easy'
2092    - regex: 'P(41|[458])_eMagic(?:_TM)?'
2093      model: 'P$1 eMagic'
2094    - regex: 'P([567])_Lite(?:_TM)?'
2095      model: 'P$1 Lite'
2096    - regex: 'P6_plus'
2097      model: 'P6 Plus'
2098    - regex: 'P6_Qmax'
2099      model: 'P6 Qmax'
2100    - regex: 'P([45678])_Pro'
2101      model: 'P$1 Pro'
2102    - regex: 'P4_Quad'
2103      model: 'P4 Quad'
2104    - regex: 'P9_Energy_Lite_2017'
2105      model: 'P9 Energy Lite (2017)'
2106    - regex: 'P9_Energy_S'
2107      model: 'P9 Energy S'
2108    - regex: 'P([69])_Energy_Lite'
2109      model: 'P$1 Energy Lite'
2110    - regex: 'P8_Energy_PRO'
2111      model: 'P8 Energy Pro'
2112    - regex: 'P([689])_Energy_mini(?:_TM)?'
2113      model: 'P$1 Energy Mini'
2114    - regex: 'P([5689])_Energy'
2115      model: 'P$1 Energy'
2116    - regex: 'P7_Seon'
2117      model: 'P7 Seon'
2118    - regex: 'P7_Xtreme'
2119      model: 'P7 Xtreme'
2120    - regex: 'P([589])(?:_)?Life(?:_TM)?'
2121      model: 'P$1 Life'
2122    - regex: 'P10_Life'
2123      model: 'P10 Life'
2124    - regex: 'P10_Max'
2125      model: 'P10 Max'
2126    - regex: 'P10_Style'
2127      model: 'P10 Style'
2128    - regex: 'V([12])_Viper_I4G(?:_TM)?'
2129      model: 'V$1 Viper I 4G'
2130    - regex: 'V1_Viper_I'
2131      model: 'V1 Viper I'
2132    - regex: 'V([134])_Viper'
2133      model: 'V$1 Viper'
2134    - regex: 'V2_Viper_X_plus'
2135      model: 'V2 Viper X Plus'
2136    - regex: 'V2_Viper_(E|I|S|X(?:e)?)'
2137      model: 'V2 Viper $1'
2138    - regex: 'X4_Soul_Vision'
2139      model: 'X4 Soul Vision'
2140    - regex: 'X([1246])_Soul_Xtreme'
2141      model: 'X$1 Soul Xtreme'
2142    - regex: 'X4_Soul_Infinity_(L|N|S|Z)'
2143      model: 'X4 Soul Infinity $1'
2144    - regex: 'X([34])_Soul_Lite'
2145      model: 'X$1 Soul Lite'
2146    - regex: 'X4_Soul_Mini_S(?:_TM)?'
2147      model: 'X4 Soul Mini S'
2148    - regex: 'X([23456])_Soul_Mini(?:_TM)?'
2149      model: 'X$1 Soul Mini'
2150    - regex: 'X3_Soul_PLUS'
2151      model: 'X3 Soul Plus'
2152    - regex: 'X([35])_Soul_Pro'
2153      model: 'X$1 Soul Pro'
2154    - regex: 'X2_Soul_Style_Plus'
2155      model: 'X2 Soul Style Plus'
2156    - regex: 'X([2345])_Soul_Style(?:_TM)?'
2157      model: 'X$1 Soul Style'
2158    - regex: 'X([12345])_Soul'
2159      model: 'X$1 Soul'
2160    - regex: 'X2_Twin'
2161      model: 'X2 Twin'
2162    - regex: 'A5_Easy(?:_TM)?'
2163      model: 'A5 Easy'
2164    - regex: 'A([56789])_Lite'
2165      model: 'A$1 Lite'
2166    - regex: 'A5_Ready(?:_TM)?'
2167      model: 'A5 Ready'
2168    - regex: 'A5Smiley'
2169      model: 'A5 Smiley'
2170    - regex: 'A5_Quad_Plus_TM'
2171      model: 'A5 Quad Plus'
2172    - regex: 'A5_Quad'
2173      model: 'A5 Quad'
2174    - regex: 'A6_Duo'
2175      model: 'A6 Duo'
2176    - regex: 'A10_Lite_2019'
2177      model: 'A10 Lite (2019)'
2178    - regex: 'A10_Plus'
2179      model: 'A10 Plus'
2180    - regex: 'A10_Max'
2181      model: 'A10 Max'
2182    - regex: 'Impera S'
2183      model: 'Impera S'
2184    - regex: 'ALLVIEW P4i'
2185      model: 'AllDro P4'
2186    - regex: 'Allview_P2'
2187      model: 'AllDro'
2188
2189    # explicit tablet models
2190    - regex: 'AllviewCityPlus'
2191      device: 'tablet'
2192      model: 'City Plus'
2193    - regex: 'AllviewCity'
2194      device: 'tablet'
2195      model: 'City'
2196    - regex: 'AllviewAX2Frenzy'
2197      device: 'tablet'
2198      model: 'AX2 Frenzy'
2199    - regex: 'Allview2SpeedDuo'
2200      device: 'tablet'
2201      model: 'Alldro 2 Speed Duo'
2202    - regex: 'Allview3SpeedQuad'
2203      device: 'tablet'
2204      model: 'Alldro 3 Speed Quad'
2205    - regex: 'H1003_LTE_PRO'
2206      device: 'tablet'
2207      model: 'Viva H1003 LTE Pro'
2208    - regex: 'Viva_(H801|100[13]G|(?:H802|H100[12]|H701)_LTE|C701|i701G)'
2209      device: 'tablet'
2210      model: 'Viva $1'
2211    - regex: 'ALLVIEW ?SPEEDI'
2212      device: 'tablet'
2213      model: 'Speed I'
2214    - regex: 'ALLVIEW ?SPEED'
2215      device: 'tablet'
2216      model: 'Speed'
2217    - regex: 'ALLVIEWSPEED'
2218      device: 'tablet'
2219      model: 'Speed'
2220    - regex: 'AX4Nano'
2221      device: 'tablet'
2222      model: 'AX4 Nano'
2223    - regex: 'ALLVIEW_TX1_Quasar'
2224      device: 'tablet'
2225      model: 'TX1 Quasar'
2226
2227    - regex: 'Allview[ _-]([^;/]+) Build'
2228      model: '$1'
2229    - regex: 'Allview[ _-]([^;/]+)(?:[;/)]|$)'
2230      model: '$1'
2231
2232# Allwinner
2233Allwinner:
2234  regex: '(?:QUAD-CORE (?:A64 p3|A33 y3|T3 K2001M|T3 k2001o)|ZY-07B|UltraOcta-T8|OCTA-CORE T8|OCTOPUS-CORE T8|QuadCore-R16)(?:[);/ ]|$)'
2235  device: 'tablet'
2236  models:
2237    - regex: 'QUAD-CORE A64 p3'
2238      model: 'A64 QUAD-CORE p3'
2239    - regex: 'QUAD-CORE A33 y3'
2240      model: 'A33 QUAD-CORE y3'
2241    - regex: 'ZY-07B'
2242      model: 'ZY-07B'
2243    - regex: 'UltraOcta-T8'
2244      device: 'car browser'
2245      model: 'Ultra Octa T8'
2246    - regex: 'QUAD-CORE T3 K2001M'
2247      device: 'car browser'
2248      model: 'QUAD-CORE T3 K2001M'
2249    - regex: 'QUAD-CORE T3 K2001o'
2250      device: 'car browser'
2251      model: 'QUAD-CORE T3 K2001O'
2252    - regex: 'OCTA-CORE T8'
2253      device: 'car browser'
2254      model: 'OCTA-CORE T8'
2255    - regex: 'OCTOPUS-CORE T8'
2256      device: 'car browser'
2257      model: 'OCTOPUS-CORE T8'
2258    - regex: 'QuadCore-R16'
2259      device: 'car browser'
2260      model: 'QUAD-CORE R16'
2261
2262# altron
2263altron:
2264  regex: '(AL-555|GI-626|OB[_-](?:421|728|627))(?:[);/ ]|$)'
2265  device: 'smartphone'
2266  models:
2267    - regex: 'AL-555'
2268      model: 'AL-555'
2269    - regex: 'OB[_-](421|728|627)'
2270      model: 'OB-$1'
2271    - regex: 'GI-626'
2272      device: 'phablet'
2273      model: 'GI-626'
2274
2275# AMGOO
2276AMGOO:
2277  regex: 'AM(350|355|40[257]|41[025]|450|50[89]|52[037]|51[58]|53[05])(?:[);/ ]|$)'
2278  device: 'smartphone'
2279  models:
2280    - regex: 'AM350'
2281      model: 'Jack Pro'
2282    - regex: 'AM(355|407)'
2283      model: 'Tigo'
2284    - regex: 'AM402'
2285      model: 'Pronto'
2286    - regex: 'AM410'
2287      model: 'Unico'
2288    - regex: 'AM450'
2289      model: 'Swift'
2290    - regex: 'AM508'
2291      model: 'Fuego'
2292    - regex: 'AM509'
2293      model: 'Uno'
2294    - regex: 'AM515'
2295      model: 'D1'
2296    - regex: 'AM518'
2297      model: 'C1'
2298    - regex: 'AM520'
2299      model: 'Pro'
2300    - regex: 'AM523'
2301      model: 'Plus'
2302    - regex: 'AM527'
2303      model: 'Geo'
2304    - regex: 'AM530'
2305      model: 'A1'
2306    - regex: 'AM535'
2307      model: 'P1'
2308    - regex: 'AM([0-9]{3})'
2309      model: 'AM$1'
2310
2311# Amoi or ami (amimobile.tech)
2312Amoi:
2313  regex: 'Amoi|(?:A862W|Clever[ -]?(?:Gem S52|Gleam S45|Pad P7|Wave S50|Touch S46|JOY S40|Lite S41))(?:[);/ ]|$)'
2314  device: 'smartphone'
2315  models:
2316    # explicit smartphone tablets
2317    - regex: 'Clever Pad P7'
2318      model: 'Clever Pad P7'
2319    # explicit smartphone models
2320    - regex: 'A862W'
2321      model: 'A862W'
2322    - regex: 'CLEVER JOY S40'
2323      model: 'Clever Joy S40'
2324    - regex: 'Clever[ -]?(Gleam S45|Gem S52|Wave S50|Touch S46|Lite S41)'
2325      model: 'Clever $1'
2326    # explicit feature models
2327    - regex: 'Amoi[-_ /](CA6)'
2328      device: 'feature phone'
2329      model: '$1'
2330
2331    - regex: 'Amoi[-_ /]([a-z0-9]+)'
2332      model: '$1'
2333    - regex: 'Amoisonic-([a-z0-9]+)'
2334      model: '$1'
2335
2336# Ainol
2337Ainol:
2338  regex: 'Numy|novo[0-9]|Novo 10 Hero|AX10PRO|NUMY3GAX9|NOVO10 Spark|Aurora-II'
2339  device: 'tablet'
2340  models:
2341    - regex: 'Numy 3G AX1'
2342      model: 'Novo 7 Numy AX1 3G'
2343    - regex: 'Numy[_ ]?3G[_ ]?Sword'
2344      model: 'Numy 3G Sword'
2345    - regex: 'NOVO10 Spark'
2346      model: 'Novo 10 Spark'
2347    - regex: 'AX10PRO'
2348      model: 'Numy AX10 Pro'
2349    - regex: 'Numy_3G_AX3'
2350      model: 'Numy AX3 Sword'
2351    - regex: 'Numy3GTalos'
2352      model: 'Numy 3G Talos'
2353    - regex: 'Numy_3G_BW1'
2354      model: 'Numy 3G Talos 2'
2355    - regex: 'NUMY3GAX9(?:[);/ ]|$)'
2356      model: 'Numy 3G AX9'
2357    - regex: 'Numy3G_AX10(?:[);/ ]|$)'
2358      model: 'Numy 3G AX10'
2359    - regex: '(Novo 10 Hero QuadCore)'
2360      model: '$1'
2361    - regex: 'Aurora-II'
2362      model: 'Novo 7 Aurora II'
2363    - regex: 'Novo7Fire'
2364      model: 'Novo 7 Fire'
2365    - regex: 'Novo7 ?Flame(?:[);/ ]|$)'
2366      model: 'Novo 7 Flame'
2367    - regex: 'NOVO7(?:[);/ ]|$)'
2368      model: 'Novo 7'
2369    - regex: 'Numy[ _]([^;/]+) Build'
2370      model: 'Numy $1'
2371    - regex: 'Novo([0-9]+)[ \-]([^;/]+) Build'
2372      model: 'Novo $1 $2'
2373
2374
2375# Archos (www.archos.com)
2376Archos:
2377  regex: '(?:YL-)?Archos|(?:A50TI|AC101BHE|AC50BHE)(?:[);/ ]|$)'
2378  device: 'smartphone'
2379  models:
2380    - regex: 'Archos (Oxygen (?:63|57|68XL))(?:[);/ ]|$)'
2381      model: '$1'
2382    - regex: 'A50TI(?:[);/ ]|$)'
2383      model: '50 Titanium 4G'
2384    - regex: 'Archos ?5(?:[);/ ]|$)'
2385      device: 'tablet'
2386      model: '5'
2387    - regex: 'AC101BHE(?:[);/ ]|$)'
2388      device: 'tablet'
2389      model: '101B Helium 4G'
2390    - regex: 'AC50BHE(?:[);/ ]|$)'
2391      model: '50B Helium 4G'
2392    - regex: 'Archos 80 Oxygen(?:[);/ ]|$)'
2393      device: 'tablet'
2394      model: '80 Oxygen'
2395    - regex: '(?:YL-)?Archos ([^/;]*(?:PAD)[^/;]*) Build'
2396      device: 'tablet'
2397      model: '$1'
2398    - regex: 'Archos ((?:[789]|10)[0-9]?[a-z]* ?(?:G9|G10|Helium|Titanium|Cobalt|Platinum|Xenon|Carbon|Neon|XS|IT)[^/);]*)(?: Build|[;)])'
2399      device: 'tablet'
2400      model: '$1'
2401    - regex: '(?:YL-)?Archos ([^/);]+)(?: Build|[;)])'
2402      model: '$1'
2403
2404# Axxion
2405Axxion:
2406  regex: 'Axxion ATAB-[0-9]+(?:[);/ ]|$)'
2407  device: 'tablet'
2408  models:
2409    - regex: 'Axxion ATAB-([0-9]+)(?:[);/ ]|$)'
2410      model: 'ATAB-$1'
2411
2412# Meu
2413MEU:
2414  regex: 'MEU ([a-z0-9]+) Build'
2415  device: 'smartphone'
2416  model: '$1'
2417
2418# Arnova
2419Arnova:
2420  regex: 'arnova|ARCHM901|AN7CG2|AN7G2(DTE|I)?|AN7[BCDFH]?G3|A80KSC|AN8G2|AN8[BC]?G3|AN9G2I?|AN9G3|A101[BC]|AN10G2|AN10BG2(DT|I)?|AN10BG3(DT)?|AN10[CD]G3'
2421  device: 'tablet'
2422  models:
2423    # explicit tablet models
2424    - regex: 'ARCHM901'
2425      model: 'M901'
2426    - regex: 'AN7CG2'
2427      model: '7c G2'
2428    - regex: 'AN7G2I|AN7G2|AN7G2DTE'
2429      model: '7 G2'
2430    - regex: 'AN7G3'
2431      model: '7 G3'
2432    - regex: 'AN7BG3'
2433      model: '7b G3'
2434    - regex: 'AN7CG3'
2435      model: '7c G3'
2436    - regex: 'AN7DG3-CP'
2437      model: 'Childpad'
2438    - regex: 'AN7DG3'
2439      model: '7d G3'
2440    - regex: 'AN7FG3'
2441      model: '7f G3'
2442    - regex: 'AN7HG3'
2443      model: '7h G3'
2444    - regex: 'A80KSC'
2445      model: '8'
2446    - regex: 'AN8G2'
2447      model: '8 G2'
2448    - regex: 'AN8G3'
2449      model: '8 G3'
2450    - regex: 'AN8BG3'
2451      model: '8b G3'
2452    - regex: 'AN8CG3'
2453      model: '8c G3'
2454    - regex: 'AN9G2I'
2455      model: '9i G2'
2456    - regex: 'AN9G2'
2457      model: '9 G2'
2458    - regex: 'AN9G3'
2459      model: '9 G3'
2460    - regex: 'A101B2|A101C|AN10G2'
2461      model: '10 G2'
2462    - regex: 'A101B'
2463      model: '10'
2464    - regex: 'AN10BG2|AN10BG2DT|AN10BG2I'
2465      model: '10b G2'
2466    - regex: 'AN10BG3|AN10BG3DT|AN10BG3-LZ'
2467      model: '10b G3'
2468    - regex: 'AN10CG3'
2469      model: '10c G3'
2470    - regex: 'AN10DG3'
2471      model: '10d G3'
2472    - regex: 'ARNOVA 90G3'
2473      model: '90 G3'
2474    - regex: 'ARNOVA 90 G4'
2475      model: '90 G4'
2476    - regex: 'ARNOVA 97G4'
2477      model: '97 G4'
2478    - regex: 'ARNOVA 101 G4'
2479      model: '101 G4'
2480
2481    - regex: 'Arnova ([^/;]*) Build'
2482      model: '$1'
2483
2484# ARRIS
2485ARRIS:
2486  regex: 'ARRIS'
2487  device: 'tv'
2488  models:
2489    - regex: 'ARRIS[,;] ([^),;/]+)'
2490      model: '$1'
2491
2492# Ask
2493Ask:
2494  regex: 'ASK[ _]'
2495  device: 'smartphone'
2496  models:
2497    - regex: 'ASK[ _]791SP[ _]3G'
2498      model: '791SP 3G'
2499      device: 'tablet'
2500    - regex: 'ASK[_ ]([^/;]*) Build'
2501      model: '$1'
2502
2503# ANS
2504ANS:
2505  regex: 'ANS/|UL40 Build'
2506  device: 'smartphone'
2507  models:
2508    - regex: 'UL40 Build'
2509      model: 'UL40'
2510    - regex: 'ANS/L51'
2511      model: 'L51'
2512
2513# AOC (https://www.aoc.com/)
2514AOC:
2515  regex: 'AOC,'
2516  device: 'tv'
2517  models:
2518    - regex: '(LE(?:32|43)S5970(?:s)?-20|LE55U7970-30|LE43S5977-20|U60856)'
2519      model: '$1'
2520
2521# Assistant
2522Assistant:
2523  regex: '(AS[-_](?:50[123]|543[1-6]|44[12]1|541[12]|54[23]1|6431|[46]01L)|AP-(?:109|115G|721N|753G|7[25]7G|10[68]|107G|110N|941|719))[;/)_ ]'
2524  device: 'smartphone'
2525  models:
2526    - regex: 'AS[-_]401L(?:[);/ ]|$)'
2527      model: 'Asper'
2528    - regex: 'AS-5432(?:[);/ ]|$)'
2529      model: 'Agio'
2530    - regex: 'AS[-_](?:5434|501)(?:[);/ ]|$)'
2531      model: 'Club'
2532    - regex: 'AS_601L(?:[);/ ]|$)'
2533      model: 'AS-601L'
2534    - regex: 'AS-5433 Secret(?:[);/ ]|$)'
2535      model: 'Secret'
2536    - regex: 'AS-5433(?:[);/ ]|$)'
2537      model: 'Max Secret'
2538    - regex: 'AS-5421(?:[);/ ]|$)'
2539      model: 'Surf'
2540    - regex: 'AS-44[12]1(?:[);/ ]|$)'
2541      model: 'Unami'
2542    - regex: 'AS-5431(?:[);/ ]|$)'
2543      model: 'Prima'
2544    - regex: 'AS-502(?:[);/ ]|$)'
2545      model: 'Shot'
2546    - regex: 'AS-503(?:[);/ ]|$)'
2547      model: 'Target'
2548    - regex: 'AS-5435(?:[);/ ]|$)'
2549      model: 'Shine'
2550    - regex: 'AS-5436[ _]'
2551      model: 'Grid'
2552    - regex: 'AS-6431(?:[);/ ]|$)'
2553      model: 'Rider'
2554    - regex: 'AS-5411[_ ]'
2555      model: 'Max Ritm'
2556    - regex: 'AS-5412 Max(?:[);/ ]|$)'
2557      model: 'AS-5412 Max'
2558    - regex: 'AP-721N(?:[);/ ]|$)'
2559      model: 'AP-721N Force'
2560      device: 'tablet'
2561    - regex: 'AP-941(?:[);/ ]|$)'
2562      model: 'AP-941'
2563      device: 'tablet'
2564    - regex: 'AP-108(?:[);/ ]|$)'
2565      model: 'Cetus'
2566      device: 'tablet'
2567    - regex: 'AP-106(?:[);/ ]|$)'
2568      model: 'AP-106 Force'
2569      device: 'tablet'
2570    - regex: '(AP-(?:109|115G|7[25]7G|753G|107G|110N|719))(?:[);/ ]|$)'
2571      device: 'tablet'
2572      model: '$1'
2573
2574# Ark (Ark Electronic Technology)
2575Ark:
2576  regex: '(ARK[_ -])?Benefit[_ -]([^/;]*)(?: Build|\))|Impulse[ _]P[12]|(?:EDGE A5HD|Elf_S8|ICON (R40\+|R45)|Wizard_[12]|UKOZI U5)(?:[);/ ]|$)'
2577  device: 'smartphone'
2578  models:
2579    - regex: '(?:ARK[_ -])?Benefit[_ -]([^/;]*)(?: Build|\))'
2580      model: 'Benefit $1'
2581    - regex: 'Impulse[ _]P1\+'
2582      model: 'Impulse P1 Plus'
2583    - regex: 'Impulse[ _](P[12])'
2584      model: 'Impulse $1'
2585    - regex: 'EDGE (A5HD)'
2586      model: 'Edge $1'
2587    - regex: 'ICON (R40\+|R45)'
2588      model: 'Icon $1'
2589    - regex: 'Wizard_([12])'
2590      model: 'Wizard $1'
2591    - regex: 'Elf_S8(?:[);/ ]|$)'
2592      model: 'Elf S8'
2593    - regex: 'UKOZI U5(?:[);/ ]|$)'
2594      model: 'Ukozi U5'
2595
2596# Garmin-Asus
2597Garmin-Asus:
2598  regex: 'Garmin-Asus|Garminfone'
2599  device: 'smartphone'
2600  models:
2601    - regex: 'Garminfone[ \-_]([^;/]*)Build'
2602      model: 'Garminfone $1'
2603    - regex: 'Garmin-Asus[ \-_]([^;/]+)Build'
2604      model: '$1'
2605    - regex: 'Garmin-Asus[ \-_]([^;/]+)[\)/]'
2606      model: '$1'
2607
2608# Asus
2609Asus:
2610  regex: 'Asus|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[18ACIL]|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[0213])KS|ZS(6[0236]0|55[10])KL|ZS590KS|ZB(500KG|601KL)|MeMo Pad FHD 10 LTE|Z00[SV]D|P01Y_S|Zenfone 5Z'
2611  device: 'smartphone'
2612  models:
2613    # explicit tablet models
2614    - regex: 'ME171(?:[);/ ]|$)'
2615      model: 'Eee Pad MeMO 171'
2616      device: 'tablet'
2617    - regex: 'ASUS Z906(?:[);/ ]|$)'
2618      model: 'Z906 10.1"'
2619      device: 'tablet'
2620    - regex: 'ME172V'
2621      model: 'MeMO Pad'
2622      device: 'tablet'
2623    - regex: 'ME302C(?:[);/ ]|$)'
2624      model: 'MeMO Pad FHD 10'
2625      device: 'tablet'
2626    - regex: '(ME302KL|MeMOPad 10FHD LTE|MeMo Pad FHD 10 LTE)(?:[);/ ]|$)'
2627      model: 'MeMO Pad FHD 10 LTE'
2628      device: 'tablet'
2629    - regex: 'ME301T(?:[);/ ]|$)'
2630      model: 'MeMO Pad Smart 10'
2631      device: 'tablet'
2632    - regex: 'Z101 Prime(?:[);/ ]|$)'
2633      model: 'Z101 Prime'
2634      device: 'tablet'
2635    - regex: 'Z101(?:[);/ ]|$)'
2636      model: 'Z101'
2637      device: 'tablet'
2638    - regex: 'X Pad 10 LTE(?:[);/ ]|$)'
2639      model: 'X Pad 10 LTE'
2640      device: 'tablet'
2641    - regex: '(?:K01[3A7]|K007|K00R)(?:[);/ ]|$)|MeMO Pad 7'
2642      model: 'MeMO Pad 7'
2643      device: 'tablet'
2644    - regex: 'K01E(?:[);/ ]|$)'
2645      model: 'MeMO Pad 10 ME103K'
2646      device: 'tablet'
2647    - regex: 'K00U|ME173X(?:[);/ ]|$)'
2648      model: 'MeMO Pad HD 7'
2649      device: 'tablet'
2650    - regex: '(?:K01[15]|K00L|AST21)(?:[);/ ]|$)'
2651      model: 'MeMO Pad 8'
2652      device: 'tablet'
2653    - regex: 'K014(?:[);/ ]|$)'
2654      model: 'MeMO Pad 8.9'
2655      device: 'tablet'
2656    - regex: 'K00S(?:[);/ ]|$)'
2657      model: 'MeMO Pad HD 7 Dual SIM'
2658      device: 'tablet'
2659    - regex: 'K00F(?:[);/ ]|$)'
2660      model: 'MeMO Pad 10'
2661      device: 'tablet'
2662    - regex: 'K00C(?:[);/ ]|$)'
2663      model: 'Transformer Pad TF701T'
2664      device: 'tablet'
2665    - regex: 'K010(?:[);/ ]|$)'
2666      model: 'Transformer Pad TF103C'
2667      device: 'tablet'
2668    - regex: 'K018(?:[);/ ]|$)'
2669      model: 'Transformer Pad TF103CG'
2670      device: 'tablet'
2671    - regex: 'TF300T(?:[);/ ]|$)'
2672      model: 'Transformer Pad TF300T'
2673      device: 'tablet'
2674    - regex: 'K01B(?:[);/ ]|$)'
2675      model: 'Transformer Pad TF303K'
2676      device: 'tablet'
2677    - regex: 'Slider SL101'
2678      model: 'Eee Pad Slider SL101'
2679      device: 'tablet'
2680    - regex: 'P01[YZ](?:_S)?'
2681      model: 'ZenPad C 7.0'
2682      device: 'tablet'
2683    - regex: 'P008 Build'
2684      model: 'ZenPad Z8'
2685      device: 'tablet'
2686    - regex: 'P001'
2687      model: 'ZenPad Z10'
2688      device: 'tablet'
2689    - regex: '(?:ASUS_)?P00J'
2690      model: 'ZenPad Z8s'
2691      device: 'tablet'
2692    - regex: 'P01[VW]'
2693      model: 'ZenPad 7.0'
2694      device: 'tablet'
2695    - regex: '(?:P024|P00A)(?:[);/ ]|$)'
2696      model: 'ZenPad 8.0'
2697      device: 'tablet'
2698    - regex: 'P01MA?(?:[);/ ]|$)'
2699      model: 'ZenPad S 8.0'
2700      device: 'tablet'
2701    - regex: 'ASUS_(w706)(?:[);/ ]|$)'
2702      model: '$1'
2703      device: 'tablet'
2704    - regex: 'P027'
2705      model: 'ZenPad 3S 10'
2706      device: 'tablet'
2707    - regex: '(?:ASUS_)?P00I'
2708      model: 'ZenPad 3S 10 LTE'
2709      device: 'tablet'
2710    - regex: '(?:ASUS_)?P00C|P02[138]|P00L|P01T_1'
2711      model: 'ZenPad 10'
2712      device: 'tablet'
2713    - regex: 'ASUS Tablet P1801-T'
2714      model: 'Transformer AiO P1801 18.4"'
2715      device: 'tablet'
2716    - regex: 'ASUS TAB A8'
2717      model: 'TAB A8'
2718      device: 'tablet'
2719
2720    # explicit phablet models
2721    - regex: 'ME371MG(?:[);/ ]|$)'
2722      model: 'Fonepad'
2723      device: 'phablet'
2724    - regex: 'K00G(?:[);/ ]|$)'
2725      model: 'Fonepad Note 6'
2726      device: 'phablet'
2727    - regex: '(?:K01[2N9]|K00E)(?:[);/ ]|$)'
2728      model: 'Fonepad 7'
2729      device: 'phablet'
2730    - regex: 'K00Z(?:[);/ ]|$)'
2731      model: 'Fonepad 7 Dual SIM'
2732      device: 'phablet'
2733    - regex: 'K016(?:[);/ ]|$)'
2734      model: 'Fonepad 8'
2735      device: 'phablet'
2736
2737    # explicit smartphone models
2738    - regex: '(?:ASUS_)?T00N'
2739      model: 'PadFone S'
2740    - regex: '(?:ASUS_)?T00[CE]'
2741      model: 'PadFone Mini'
2742    - regex: '(?:ASUS[-_])?T00T'
2743      model: 'PadFone X Mini'
2744    - regex: 'PadFone T008'
2745      model: 'PadFone E'
2746    - regex: 'PadFone T004'
2747      model: 'PadFone Infinity'
2748    - regex: '(?:ASUS_)?A002(A)?'
2749      model: 'ZenFone AR'
2750    - regex: '(?:ASUS_)?(?:I006D|ZS590KS)'
2751      model: 'ZenFone 8'
2752    - regex: '(?:ASUS_)?(?:I004D|ZS672KS)'
2753      model: 'ZenFone 8 Flip'
2754    - regex: '(?:ASUS_)?A006'
2755      model: 'ZenFone V'
2756    - regex: '(?:ASUS_)?A009'
2757      model: 'ZenFone V Live'
2758    - regex: '(?:ASUS_)?Z007'
2759      model: 'ZenFone C'
2760    - regex: '(?:ASUS_)?(X00P[SD]|ZB555KL)'
2761      model: 'ZenFone Max M1'
2762    - regex: '(?:ASUS_)?(?:ZB60[12]KL)|ZenFone Max Pro M1'
2763      model: 'ZenFone Max Pro M1'
2764    - regex: '(?:ASUS_)?(X01([AB]D)|ZB633KL)(?:[);/ ]|$)'
2765      model: 'ZenFone Max M2'
2766    - regex: '(?:ASUS_)?(?:Z00[AD]|Z008D|Z008|Z00AD[AB]?|ZE551ML)'
2767      model: 'ZenFone 2'
2768    - regex: '(?:ASUS_)?(?:ZenFone 2E)'
2769      model: 'ZenFone 2E'
2770    - regex: '(?:ASUS_)?(?:A007|Z00YD|ZA550KL|ZB553KL|ZB501KL)(?:[);/ ]|$)'
2771      model: 'ZenFone Live'
2772    - regex: '(?:ASUS_)?(?:X00RD|G552KL)'
2773      model: 'ZenFone Live L1'
2774    - regex: 'G553KL'
2775      model: 'ZenFone Lite L1'
2776    - regex: '(?:ASUS_)?(?:Z00[ERLMTW]D|Z011D|ZE500KL)'
2777      model: 'ZenFone 2 Laser'
2778    - regex: '(?:ASUS_)?(?:T00[IQ1]|Z01KD)'
2779      model: 'ZenFone 4'
2780    - regex: '(?:ASUS_)?(?:T00[JF]|X00QD|X00QSA|ZE620KL)'
2781      model: 'ZenFone 5'
2782    - regex: '(?:ASUS_)?T00P'
2783      model: 'ZenFone 5 LTE'
2784    - regex: '(?:ASUS_)?(?:T00K|X017DA|X017D|ZC600KL)'
2785      model: 'ZenFone 5 Lite'
2786    - regex: '(?:ASUS_)?(?:Z01RD|ZS620KL)|Zenfone 5Z'
2787      model: 'ZenFone 5Z'
2788    - regex: '(?:ASUS_)?(?:T00G|Z002|ZS630KL|I01WD[X]?)'
2789      model: 'ZenFone 6'
2790    - regex: '(?:ASUS_)?ZS671KS'
2791      model: 'ZenFone 7 Pro'
2792    - regex: '(?:ASUS_)?(?:ZS670KS|I002D)(?:[);/ ]|$)'
2793      model: 'ZenFone 7'
2794    - regex: '(?:ASUS_)?Z010D'
2795      model: 'ZenFone Max'
2796    - regex: '(?:ASUS_)?X018D'
2797      model: 'ZenFone Max Plus M1'
2798    - regex: '(?:ASUS_)?X00TD?'
2799      model: 'ZenFone Max Pro M1'
2800    - regex: '(?:ASUS_)?(?:X01BDA|ZB631KL|Zenfone Max Pro M2)'
2801      model: 'ZenFone Max Pro M2'
2802    - regex: '(?:ASUS_)?X014D'
2803      model: 'ZenFone Go Plus'
2804    - regex: '(?:ASUS_)?(L001|X00[7AB]D|X009[DB][DA]|X009D|Z00[SV]D|ZB500K[LG]|ZB551KL)'
2805      model: 'ZenFone Go'
2806    - regex: '(?:ASUS_)?X013D'
2807      model: 'ZenFone Go Life'
2808    - regex: '(?:ASUS_)?G550KL'
2809      model: 'ZenFone Go TV'
2810    - regex: '(?:ASUS_)?Z00[SV]D' #ZC500TG
2811      model: 'ZenFone Go'
2812    - regex: '(?:ASUS_)?(X00[23])'
2813      model: 'ZenFone Pegasus'
2814    - regex: '(?:ASUS_)?X005'
2815      model: 'ZenFone Pegasus 5000'
2816    - regex: '(?:ASUS_)?X550'
2817      model: 'ZenFone Pegasus 2 Plus'
2818    - regex: '(?:ASUS_)?(X00GD)'
2819      model: 'ZenFone Pegasus 3S Max'
2820    - regex: '(?:ASUS_)?(?:X00D[DS]|X008D)|ZC553KL'
2821      model: 'ZenFone 3 Max'
2822    - regex: '(?:ASUS_)?(X008)'
2823      model: 'ZenFone 3 Pegasus'
2824    - regex: '(?:ASUS_)?(ZE553KL|Z01HDA?)'
2825      model: 'ZenFone 3 Zoom'
2826    - regex: '(?:ASUS_)?ZS550KL'
2827      model: 'ZenFone 3 Deluxe'
2828    - regex: '(?:ASUS_)?Z00UD'
2829      model: 'ZenFone Selfie'
2830    - regex: '(?:ASUS_)?(Z016[DS]|Z01FD)'
2831      model: 'ZenFone 3 Deluxe'
2832    - regex: '(?:ASUS_)?Z(?:017DA|E520KL|E552KL|017D|012(?:DC?|S))'
2833      model: 'ZenFone 3'
2834    - regex: '(?:ASUS_)?Z01B[DS]|ZC551KL'
2835      model: 'ZenFone 3 Laser'
2836    - regex: '(?:ASUS_)?A001'
2837      model: 'ZenFone 3 Ultra'
2838    - regex: '(?:ASUS_)?(?:ZD552KL|Z01MDA?)(?:[);/ ]|$)'
2839      model: 'ZenFone 4 Selfie Pro'
2840    - regex: '(?:ASUS_)?(?:X00LDA|ZD553KL)'
2841      model: 'ZenFone 4 Selfie'
2842    - regex: '(?:ASUS_)?(?:X00LD|Z01KS|Z01KDA|ZE554KL)'
2843      model: 'ZenFone 4'
2844    - regex: '(?:ASUS_)?X00(?:[HIK]D|IS)|ZC554KL|ZC520KL'
2845      model: 'ZenFone 4 Max'
2846    - regex: '(?:ASUS_)?X015D'
2847      model: 'ZenFone 4 Max Plus'
2848    - regex: '(?:ASUS_)?(:?Z01G[DS]|ZS551KL)'
2849      model: 'ZenFone 4 Pro'
2850    - regex: '(?:ASUS_)?Z00XS'
2851      model: 'ZenFone Zoom'
2852    - regex: '(?:ASUS_)?(?:Z01QD|ZS600KL)'
2853      model: 'ROG Phone'
2854    - regex: '(?:ASUS_)?(?:I001D[ABCE]?|ZS660KL)'
2855      model: 'ROG Phone 2'
2856    - regex: '(?:ASUS_)?(?:I003DD?|ZS661KS)'
2857      model: 'ROG Phone 3'
2858    - regex: '(?:ASUS_)?(?:I005D[AC]?|ZS673KS)'
2859      model: 'ROG Phone 5'
2860
2861    # desktop detections
2862    - regex: 'ZN220IC'
2863      device: 'desktop'
2864      model: 'Zen AiO ZN220IC'
2865
2866    # watch detections
2867    - regex: '(?:ASUS_)?ZenWatch( 2)?'
2868      device: 'wearable'
2869      model: 'ZenWatch$1'
2870
2871    # general detections
2872    - regex: 'Asus(?:-|;)?([a-z0-9]+)'
2873      model: '$1'
2874    - regex: '(PadFone(?: [^;/]+)?) Build'
2875      model: '$1'
2876    - regex: '(PadFone(?: [a-z0-9]+)?)'
2877      model: '$1'
2878    - regex: '(?:Asus|Transformer) ((?:Pad |Prime )?TF[0-9a-z]+)'
2879      device: 'tablet'
2880      model: 'Transformer $1'
2881    - regex: 'Chromebook Flip (C10[01]PA|C302)'
2882      device: 'desktop'
2883      model: 'Chromebook Flip $1'
2884
2885# Audiovox
2886Audiovox:
2887  regex: 'Audiovox|CDM|UTS(?:TARCOM)?\-|audio(?!book)[a-z0-9\-]+'
2888  device: 'smartphone'
2889  models:
2890    - regex: 'Audiovox[_\-]([a-z0-9\-]+)'
2891      model: '$1'
2892    - regex: 'CDM(?:-)?([a-z0-9]+)'
2893      model: 'CDM-$1'
2894    - regex: 'UTS(?:TARCOM)?-([a-z0-9\-]+)'
2895      model: 'CDM-$1'
2896    - regex: 'audio([a-z0-9\-]+)'
2897      model: 'CDM-$1'
2898
2899# AVH
2900AVH:
2901  regex: 'Excer[ _]'
2902  device: 'tablet'
2903  models:
2904    - regex: 'Excer[ _]G5.([36])'
2905      model: 'Excer G5.$1'
2906    - regex: 'Excer[ _]G5'
2907      model: 'Excer G5'
2908    - regex: 'Excer[ _]10[ _]PRO'
2909      model: 'Excer 10 Pro'
2910    - regex: 'Excer[ _]8'
2911      model: 'Excer 8'
2912
2913# Avvio
2914Avvio:
2915  regex: 'Avvio[ _]?([a-z0-9\-]+)|(?:CHIVAS_55|Colombia_2018|Mint_M353)(?:[);/ ]|$)'
2916  device: 'smartphone'
2917  models:
2918    - regex: 'CHIVAS_55'
2919      model: 'Chivas 55'
2920    - regex: 'Mint_M353'
2921      model: 'Mint M353'
2922    - regex: 'Colombia_2018'
2923      model: 'Colombia (2018)'
2924    - regex: 'Avvio[ _]PAD'
2925      model: 'PAD'
2926      device: 'tablet'
2927    - regex: 'Avvio[ _]?([a-z0-9\-]+)'
2928      model: '$1'
2929
2930# Azumi Mobile (azumi-mobile.com)
2931Azumi Mobile:
2932  regex: 'Azumi[_ -]|(?:SPEED55|A50_Style_Plus)(?:[);/ ]|$)'
2933  device: 'smartphone'
2934  models:
2935    - regex: 'Azumi[_ -]([^/;]+) Build'
2936      model: '$1'
2937    - regex: 'Azumi[_ -]([a-z0-9_]+)'
2938      model: '$1'
2939    - regex: 'SPEED55'
2940      model: 'Speed 5.5"'
2941    - regex: 'A50_Style_Plus'
2942      model: 'A50 Style Plus'
2943
2944#Barnes & Noble
2945'Barnes & Noble':
2946  regex: 'Nook|BN[TR]V[0-9]+'
2947  device: 'tablet'
2948  models:
2949    - regex: 'Nook([a-z0-9]+)'
2950      model: 'Nook $1'
2951    - regex: 'Nook[ _]([^/;]+)[ _]Build'
2952      model: 'Nook $1'
2953    - regex: '(BN[TR]V[0-9]+)'
2954      model: 'Nook $1'
2955
2956# BGH
2957BGH:
2958  regex: '(?!Positivo )BGH ([^/;\)]+)(?: Build|\))'
2959  device: 'smartphone'
2960  models:
2961    - regex: 'Y([17]00|2[01]0|1010)'
2962      device: 'tablet'
2963      model: 'Y$1'
2964    - regex: 'BGH (\+Simple|Mini)'
2965      device: 'tablet'
2966      model: '$1'
2967    - regex: 'Y710 KIDS'
2968      device: 'tablet'
2969      model: 'Y710 Kids'
2970    - regex: 'JOY X2'
2971      model: 'Joy X2'
2972    - regex: 'BGH ([^/;\)]+)(?: Build|\))'
2973      model: '$1'
2974
2975# Bitel
2976Bitel:
2977  regex: 'Bitel[ _-]([^/;]+) Build|(?:B(?:840[5-9]|841[0456]|850[2346]|860[146]|9401|950[1-5])|S8402L?|S8501L?)(?:[);/ ]|$)'
2978  device: 'smartphone'
2979  models:
2980    - regex: '(B(?:840[5789]|841[0456]|850[2346]|860[146]|9401|950[12345])|S8402L?|S8501L?)'
2981      model: '$1'
2982    - regex: 'Bitel[ _-]([^/;]+) Build'
2983      model: '$1'
2984
2985# Blu
2986Blu:
2987  regex: 'BLU[ _]|(?:blu|Dash)[ _]([^/;)]+)(?: Build|[;)])|(?:Studio[ _](5.0K|5.5|View XL|Mega|C 8\+8|[CGM][ _]HD|[CGX]|SELFIE|Selfie LTE|Touch|M5 Plus|J[1258]|X8 HD)|Advance (4.0 ?[LM]|5.[02](?: HD)?|A4|L[45])|ENERGY (DIAMOND|XL)|Energy X 2|LIFE XL|B110DL|Dash (?:X[2L]|L3)|PURE (?:X[LR]|MINI|View)|Life One X2|G90(?: 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 N1|B130DL|Vivo (?:5 Mini|One Plus|5R|XL[234]| Plus|8L|XI[+]?|GO)|C5L 2020|C6 2020)(?:[);/ ]|$)'
2988  device: 'smartphone'
2989  models:
2990    - regex: 'Advance (4.0 ?[LM]|4.0|5.[02](?: HD)?|A4|L[54])'
2991      model: 'Advance $1'
2992    - 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|M5 Plus|J[1258]|X8 HD|X5|XL|X)(?:[);/ ]|$)'
2993      model: 'Studio $1'
2994    - regex: '(?:BLU[_ ])?Studio[ _]5.0 ?K(?:[);/ ]|$)'
2995      model: 'Studio 5.0 K'
2996    - regex: 'STUDIO SELFIE LTE'
2997      model: 'Studio Selfie LTE'
2998    - regex: 'STUDIO ONE'
2999      model: 'Studio One'
3000    - regex: 'STUDIO SELFIE ([23]|LTE)'
3001      model: 'Studio Selfie $1'
3002    - regex: 'STUDIO SELFIE'
3003      model: 'Studio Selfie'
3004    - regex: '(?:BLU[_ ])?NEO_ENERGY_MINI'
3005      model: 'Neo Energy Mini'
3006    - regex: 'ENERGY DIAMOND'
3007      model: 'Energy Diamond'
3008    - regex: 'ENERGY XL'
3009      model: 'Energy XL'
3010    - regex: 'Energy X 2'
3011      model: 'Energy X 2'
3012    - regex: 'ENERGY X PLUS 2'
3013      model: 'Energy X Plus 2'
3014    - regex: 'ENERGY X PLUS'
3015      model: 'Energy X Plus'
3016    - regex: 'LIFE XL'
3017      model: 'Life XL'
3018    - regex: 'DASH[ _]X[ _]PLUS[ _]LTE'
3019      model: 'Dash X Plus LTE'
3020    - regex: 'DASH X PLUS'
3021      model: 'Dash X Plus'
3022    - regex: 'DASH 4.5'
3023      model: 'Dash 4.5'
3024    - regex: 'Dash XL'
3025      model: 'Dash XL'
3026    - regex: 'PURE (X[LR]|View)'
3027      model: 'Pure $1'
3028    - regex: 'PURE MINI'
3029      model: 'Pure Mini'
3030    - regex: 'BOLD N1'
3031      model: 'Bold N1'
3032    - regex: 'Life One X2 Mini'
3033      model: 'Life One X2 Mini'
3034    - regex: 'LIFE ONE (X2?)'
3035      model: 'Life One $1'
3036    - regex: 'LIFE ONE'
3037      model: 'Life One'
3038    - regex: 'LIFE MARK'
3039      model: 'Life Mark'
3040    - regex: 'NEO X PLUS'
3041      model: 'Neo X Plus'
3042    - regex: 'NEO (XL|X)'
3043      model: 'Neo $1'
3044    - regex: 'G90 PRO'
3045      model: 'G90 Pro'
3046    - regex: 'G90'
3047      model: 'G90'
3048    - regex: 'GRAND 5.5 HD'
3049      model: 'Grand 5.5 HD'
3050    - regex: 'Grand X LTE'
3051      model: 'Grand X LTE'
3052    - regex: 'Grand XL LTE'
3053      model: 'Grand XL LTE'
3054    - regex: 'Grand Max'
3055      model: 'Grand Max'
3056    - regex: 'Grand Mini'
3057      model: 'Grand Mini'
3058    - regex: 'Grand M3'
3059      model: 'Grand M3'
3060    - regex: 'B110DL'
3061      model: 'View Mega'
3062    - regex: 'B130DL'
3063      model: 'View 2'
3064    - regex: 'R1 HD'
3065      model: 'R1 HD'
3066    - regex: 'R2 LTE'
3067      model: 'R2 LTE'
3068    - regex: 'R([12]) PLUS'
3069      model: 'R$1 Plus'
3070    - regex: 'C([456]) 20(19|20)'
3071      model: 'C$1 (20$2)'
3072    - regex: 'Tank Xtreme ([45]).0'
3073      model: 'Tank Xtreme $1.0"'
3074    - regex: 'Tank Xtreme Pro'
3075      model: 'Tank Xtreme Pro'
3076    - regex: 'VIVO AIR LTE'
3077      model: 'Vivo Air LTE'
3078    - regex: 'Touchbook G7'
3079      model: 'Touchbook G7'
3080    - regex: 'C5L 2020'
3081      model: 'C5L (2020)'
3082    - regex: '(?:BLU[_ ])?VIVO[ _]SELFIE'
3083      model: 'Vivo Selfie'
3084    - regex: '(?:BLU[_ ])?Vivo 5 Mini'
3085      model: 'Vivo 5 Mini'
3086    - regex: 'Vivo One Plus 2019'
3087      model: 'Vivo One Plus (2019)'
3088    - regex: '(?:BLU[_ ])?Vivo (One|XL3|XI)(?: Plus|[+])'
3089      model: 'Vivo $1 Plus'
3090    - regex: '(?:BLU[_ ])?Vivo (5R|XI|XL[234]|8L)'
3091      model: 'Vivo $1'
3092    - regex: '(?:BLU[_ ])?VIVO GO'
3093      model: 'Vivo Go'
3094
3095    - regex: 'Touchbook M7 Pro'
3096      model: 'Touchbook M7 Pro'
3097      device: 'tablet'
3098    - regex: 'STUDIO 7.0 II'
3099      model: 'Studio 7.0" II'
3100      device: 'tablet'
3101
3102    - regex: 'DASH (L[45] LTE|5.0|L[45]X|L3|X2|[LMX])(?:[);/ ]|$)'
3103      model: 'Dash $1'
3104
3105    - regex: 'DASH[ _]([^)/;]+)(?: Build|\))'
3106      model: 'Dash $1'
3107
3108    - regex: 'blu[ _]([^/;]+)( Build|[);])'
3109      model: '$1'
3110
3111# Bluegood
3112Bluegood:
3113  regex: 'BLUEGOOD'
3114  device: 'smartphone'
3115  models:
3116    - regex: 'V6'
3117      model: 'V6'
3118
3119# Blackview
3120Blackview:
3121  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)(?:[);/ ]|$)'
3122  device: 'smartphone'
3123  models:
3124    - regex: 'A60Pro\)'
3125      model: 'A60 Pro'
3126    - regex: 'A60\)'
3127      model: 'A60'
3128    - regex: 'A80Pro(?:[);/ ]|$)'
3129      model: 'A80 Pro'
3130    - regex: 'A8 MAX(?:[);/ ]|$)'
3131      model: 'A8 Max'
3132    - regex: 'A80S(?:[);/ ]|$)'
3133      model: 'A80S'
3134    - regex: '(A[86]0|BV[59]500)Plus(?:[);/ ]|$)'
3135      model: '$1 Plus'
3136    - regex: '(BV6000S)'
3137      model: '$1'
3138    - regex: '(P2|R6) ?Lite'
3139      model: '$1 Lite'
3140    - regex: 'BV9000Pro-F'
3141      model: 'BV9000 Pro F'
3142    - regex: '(BL6000|BV(?:[0-9]+))Pro'
3143      model: '$1 Pro'
3144    - regex: 'Blackview (A[78]|E7S)'
3145      model: '$1'
3146    - regex: '(BV6[13]00)(?:[);/ ]|$)'
3147      model: '$1'
3148      device: 'phablet'
3149    - regex: '(BV([24-9]000|6[69]00|4900|9600E|(5[1589]|9[15689])00)(?:[ _](?:PRO))?)'
3150      model: '$1'
3151    - regex: '(P10000(?:[ _](?:PRO))?)'
3152      model: '$1'
3153    - regex: 'omega[ _]pro'
3154      model: 'Omega Pro'
3155    - regex: '(Alife[ _][PS]1|DM550|Heatwave)'
3156      model: '$1'
3157
3158# Bluboo (bluboo.tel)
3159Bluboo:
3160  regex: 'Bluboo|Maya Build|(?:(?<!IQM )Picasso(?: 4G)?|Xfire2?)(?:[);/ ]|$)'
3161  device: 'smartphone'
3162  models:
3163    - regex: 'Maya Build'
3164      model: 'Maya'
3165    - regex: 'Xfire2'
3166      model: 'Xfire 2'
3167    - regex: 'Picasso(?: 4G)?'
3168      model: 'Picasso 4G'
3169    - regex: 'Xfire'
3170      model: 'Xfire'
3171    - regex: '(?:Bluboo[_ ])?S8[_ ]plus'
3172      model: 'S8 Plus'
3173    - regex: 'Bluboo[ _-]?([^;/)]+) Build'
3174      model: '$1'
3175    - regex: 'Bluboo[ _-]?([^;/)]+)'
3176      model: '$1'
3177
3178# Black Fox or BlackFox
3179'Black Fox':
3180  regex: 'BMM[ _-]?(?:44[123]D|441[WB]|44[12]S|431D|533D|54[12]S|541[ABW]|54[123]D|543S|531[ABD]|532 S)(?:[);/ ]|$)'
3181  device: 'smartphone'
3182  models:
3183    - regex: 'BMM443D'
3184      model: 'B7 Fox+'
3185    - regex: 'BMM441S'
3186      model: 'B8 Fox'
3187    - regex: 'BMM442S|BMM441B'
3188      model: 'B8 Fox+'
3189    - regex: 'BMM441W'
3190      model: 'B8M'
3191    - regex: 'BMM442D'
3192      model: 'B7'
3193    - regex: 'BMM531D'
3194      model: 'B6'
3195    - regex: 'BMM531A'
3196      model: 'B5'
3197    - regex: 'BMM541A'
3198      model: 'B5+'
3199    - regex: 'BMM543[DS]'
3200      model: 'B4'
3201    - regex: 'BMM441D'
3202      model: 'B4 Mini'
3203    - regex: 'BMM541B'
3204      model: 'B4 Mini NFC'
3205    - regex: 'BMM531B'
3206      model: 'B4 Mini (2019)'
3207    - regex: 'BMM542D'
3208      model: 'B3+'
3209    - regex: 'BMM541D'
3210      model: 'B3'
3211    - regex: 'BMM541W'
3212      model: 'B7R Fox'
3213    - regex: 'BMM 532 S'
3214      model: 'BMM 532S'
3215    - regex: 'BMM[ _-]?(533D|431D|54[12]S)(?:[);/ ]|$)'
3216      model: 'BMM $1'
3217
3218# bogo
3219bogo:
3220  regex: 'BO-(FRSP4|LFSPBS5|LFSP4|LFSPSL4|LFSPBS5|LFSPSL6QCI)'
3221  device: 'smartphone'
3222  models:
3223    - regex: 'BO-LFSP4'
3224      model: 'LifeStyle 4DC'
3225    - regex: 'BO-LFSPSL4'
3226      model: 'LifeStyle 4SL'
3227    - regex: 'BO-LFSPBS5'
3228      model: 'LifeStyle 5BS'
3229    - regex: 'BO-LFSPSL6QCI'
3230      model: 'LifeStyle 6QC'
3231    - regex: 'BO-(FRSP4)'
3232      model: '$1'
3233
3234# Boway
3235Boway:
3236  regex: '(?:sprd-)?(BOWAY)'
3237  device: 'smartphone'
3238  models:
3239    - regex: 'BOWAY[ _-]([^/;]+)[ _]Build'
3240      model: '$1'
3241    - regex: '([^/;]+) Build/BOWAY'
3242      model: '$1'
3243    - regex: '.*BOWAY[ _-]([^/;]+)/'
3244      model: '$1'
3245
3246# Brondi
3247Brondi:
3248  regex: 'Brondi[ _]|(?:CENTURION|GLADIATOR| GLORY|LUXURY|SENSUELLE|VICTORY)(?:[ _-]?[2-6])?(?:[);/ ]|$)|Surfing Tab|501 SZ'
3249  device: 'smartphone'
3250  models:
3251    - regex: '(?:Brondi[ _])?(620 SZ|730_4G_HD|501 SZ)(?:[);/ ]|$)'
3252      model: '$1'
3253    - regex: 'CENTURION(?:[ _-]?([2-6]))?(?:[);/ ]|$)'
3254      model: 'CENTURION $1'
3255    - regex: 'GLADIATOR(?:[ _-]?([2-6]))?(?:[);/ ]|$)'
3256      model: 'GLADIATOR $1'
3257    - regex: 'GLORY(?:[ _-]?([2-6]))?(?:[);/ ]|$)'
3258      model: 'GLORY $1'
3259    - regex: 'LUXURY(?:[ _-]?([2-6]))?(?:[);/ ]|$)'
3260      model: 'LUXURY $1'
3261    - regex: 'SENSUELLE(?:[ _-]?([2-6]))?(?:[);/ ]|$)'
3262      model: 'SENSUELLE $1'
3263    - regex: 'VICTORY(?:[ _-]?([2-6]))?(?:[);/ ]|$)'
3264      model: 'VICTORY $1'
3265
3266    - regex: 'Surfing Tab ([^;/]+) Build'
3267      model: 'SURFING TAB $1'
3268      device: 'tablet'
3269    - regex: 'Surfing Tab ([^;/)]+)[;/)]'
3270      model: 'SURFING TAB $1'
3271      device: 'tablet'
3272
3273# VGO TEL (vgotel.com)
3274VGO TEL:
3275  regex: 'VGOTEL|(?:Venture V(?:[278]|12)|VentureV10|Ocean[_ ][689]|Ocean9L)(?:[);/ ]|$)'
3276  device: 'smartphone'
3277  models:
3278    - regex: 'Venture ?V([278]|1[02])(?:[);/ ]|$)'
3279      model: 'Venture V$1'
3280    - regex: 'Ocean[_ ]?([689]|9L)(?:[);/ ]|$)'
3281      model: 'Ocean $1'
3282
3283# Vivo (vivo.com.cn, vivo.com)
3284Vivo:
3285  regex: '((?:VIV-|BBG-)?(?<!FBCR/|NOA )vivo(?!(?:Browser)| 4G_r))|(?: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|V2006|1819|V201[12]A|V2085A|V202[0345]C?A|V202[235-9]|V205[479]A|V203[0235-8]|V2031[E]?A?|V203[46]A|V204[013]|V204[6789]A|V20(6[158]|99|5[56]|66[B]?|7[23]|80)A|V2046|X50 Pro\+|I1927|I2012|V206[15689]|V205[08]|V2043_21|V213[346]A|V214[13]A|I1928|V21[12]1A|V2106A|V2109|V2123A|V2026_21|V210[25]|V2110)(?:[);/ ]|$)'
3286  device: 'smartphone'
3287  models:
3288    - regex: 'V1824[B]?A(?:[);/ ]|$)'
3289      model: 'iQOO'
3290    - regex: 'V1955A(?:[);/ ]|$)'
3291      model: 'iQOO 3'
3292    - regex: 'I192[78](?:[);/ ]|$)'
3293      model: 'iQOO 3 5G'
3294    - regex: 'V2049A(?:[);/ ]|$)'
3295      model: 'iQOO 7'
3296    - regex: 'I2012(?:[);/ ]|$)'
3297      model: 'iQOO 7 5G'
3298    - regex: 'V1922A(?:[);/ ]|$)'
3299      model: 'iQOO Pro' # 2019
3300    - regex: 'V1916A(?:[);/ ]|$)'
3301      model: 'iQOO Pro 5G'
3302    - regex: 'V1914A(?:[);/ ]|$)'
3303      model: 'iQOO Neo'
3304    - regex: 'V1981A(?:[);/ ]|$)'
3305      model: 'iQOO Neo 3'
3306    - regex: 'V1936A[L]?(?:[);/ ]|$)'
3307      model: 'iQOO Neo 855'
3308    - regex: 'V2055A(?:[);/ ]|$)'
3309      model: 'iQOO Neo 5'
3310    - regex: 'V1986A(?:[);/ ]|$)'
3311      model: 'iQOO Z1'
3312    - regex: 'V2012A(?:[);/ ]|$)'
3313      model: 'iQOO Z1x'
3314    - regex: 'V2073A(?:[);/ ]|$)'
3315      model: 'iQOO Z3'
3316    - regex: 'V1919A(?:[);/ ]|$)'
3317      model: 'iQOO Z5x'
3318    - regex: 'V2023A(?:[);/ ]|$)'
3319      model: 'iQOO U1'
3320    - regex: 'V2065A(?:[);/ ]|$)'
3321      model: 'iQOO U1x'
3322    - regex: 'V2061A(?:[);/ ]|$)'
3323      model: 'iQOO U3'
3324    - regex: 'V2143A(?:[);/ ]|$)'
3325      model: 'iQOO U3x'
3326    - regex: 'V2106A(?:[);/ ]|$)'
3327      model: 'iQOO U3x 5G'
3328    - regex: 'V2024A(?:[);/ ]|$)'
3329      model: 'iQOO 5'
3330    - regex: 'V2025A(?:[);/ ]|$)'
3331      model: 'iQOO 5 Pro'
3332    - regex: 'V2136A(?:[);/ ]|$)'
3333      model: 'iQOO 8'
3334    - regex: 'V2141A(?:[);/ ]|$)'
3335      model: 'iQOO 8 Pro'
3336    - regex: '(?:V2025)(?:[);/ ]|$)'
3337      model: 'V20'
3338    - regex: '(?:V2066)(?:[);/ ]|$)'
3339      model: 'V21'
3340    - regex: '(?:V2050)(?:[);/ ]|$)'
3341      model: 'V21 5G'
3342    - regex: 'V2061(?:[);/ ]|$)'
3343      model: 'V21e'
3344    - regex: 'V2040(?:[);/ ]|$)'
3345      model: 'V20 (2021)'
3346    - regex: 'Vivo 1921(?:[);/ ]|$)'
3347      model: 'U20'
3348    - regex: 'Vivo 1916(?:[);/ ]|$)'
3349      model: 'U10'
3350    - regex: 'vivo 1805(?:[);/ ]|$)'
3351      model: 'Nex'
3352    - regex: '(?:vivo 1912|V1923A)(?:[);/ ]|$)'
3353      model: 'Nex 3'
3354    - regex: 'V1924A(?:[);/ ]|$)'
3355      model: 'Nex 3 5G'
3356    - regex: 'V1950A(?:[);/ ]|$)'
3357      model: 'Nex 3S'
3358    - regex: 'vivo NEX S(?:[);/ ]|$)'
3359      model: 'Nex S'
3360    - regex: 'vivo NEX A(?:[);/ ]|$)'
3361      model: 'Nex A'
3362    - regex: 'vivo NEX(?:[);/ ]|$)'
3363      model: 'Nex'
3364    - regex: '(?:V1821[AT]|vivo 1813)(?:[);/ ]|$)'
3365      model: 'Nex Dual Display'
3366    - regex: 'Vivo ONE(?:[);/ ]|$)'
3367      model: 'One'
3368    - regex: 'V1831[AT](?:[);/ ]|$)'
3369      model: 'S1'
3370    - regex: 'V1832[AT](?:[);/ ]|$)'
3371      model: 'S1 Pro'
3372    - regex: 'V2121A(?:[);/ ]|$)'
3373      model: 'S10'
3374    - regex: 'V1932[AT](?:[);/ ]|$)'
3375      model: 'S5'
3376    - regex: 'V1962A(?:[);/ ]|$)'
3377      model: 'S6 5G'
3378    - regex: 'V2020C?A(?:[);/ ]|$)'
3379      model: 'S7'
3380    - regex: 'V2031EA(?:[);/ ]|$)'
3381      model: 'S7e'
3382    - regex: 'V2080A(?:[);/ ]|$)'
3383      model: 'S7t'
3384    - regex: 'V2072A(?:[);/ ]|$)'
3385      model: 'S9 (2021)'
3386    - regex: 'V2048A(?:[);/ ]|$)'
3387      model: 'S9e'
3388    - regex: 'V1941A(?:[);/ ]|$)'
3389      model: 'U3'
3390    - regex: 'V1928A(?:[);/ ]|$)'
3391      model: 'U3X'
3392    - regex: 'vivo 1804(?:[);/ ]|$)'
3393      model: 'V11 Pro'
3394    - regex: 'vivo 1806(?:[);/ ]|$)'
3395      model: 'V11i'
3396    - regex: '1819(?:[);/ ]|$)'
3397      model: 'V15'
3398    - regex: 'vivo 1818(?:[);/ ]|$)'
3399      model: 'V15 Pro'
3400    - regex: 'vivo 19(?:10|09)(?:[);/ ]|$)'
3401      model: 'V17 Pro'
3402    - regex: 'vivo 1907(?:_19)?(?:[);/ ]|$)'
3403      model: 'V17 Neo'
3404    - regex: 'vivo 19(?:20|19)(?:[);/ ]|$)'
3405      model: 'V17'
3406    - regex: 'vivo 1933(?:[);/ ]|$)'
3407      model: 'V19'
3408    - regex: 'V2022(?:[);/ ]|$)'
3409      model: 'V20 SE'
3410    - regex: 'vivo 2018(?:[);/ ]|$)'
3411      model: 'V20 Pro'
3412    - regex: '(?:VIV-|BBG-)?vivo[ _]1601(?:[);/ ]|$)'
3413      model: 'V5'
3414    - regex: 'vivo 1609(?:[);/ ]|$)'
3415      model: 'V5 Lite'
3416    - regex: 'vivo 1611(?:[);/ ]|$)'
3417      model: 'V5 Plus'
3418    - regex: 'vivo (1713|1612)(?:[);/ ]|$)'
3419      model: 'V5s'
3420    - regex: 'vivo 1718(?:[);/ ]|$)'
3421      model: 'V7'
3422    - regex: 'vivo (?:1716|1850)(?:[);/ ]|$)'
3423      model: 'V7 Plus'
3424    - regex: 'vivo 1723(?:[);/ ]|$)'
3425      model: 'V9'
3426    - regex: 'vivo 1727(?:[);/ ]|$)'
3427      model: 'V9 Youth'
3428    - regex: 'vivo 1851(?:[);/ ]|$)'
3429      model: 'V9 Pro'
3430    - regex: 'vivo V3Max(?: [AL])?(?:[);/ ]|$)'
3431      model: 'V3 Max'
3432    - regex: 'vivo X9s Plus(?:[);/ ]|$)'
3433      model: 'X9s Plus'
3434    - regex: 'vivo X9s(?: [AL])?(?:[);/ ]|$)'
3435      model: 'X9s'
3436    - regex: 'vivo X5Pro(?:[);/ ]|$)'
3437      model: 'X5 Pro'
3438    - regex: 'vivo 1721(?:[);/ ]|$)'
3439      model: 'X20'
3440    - regex: '(?:X20Plus(?: a)?|vivo 1720)(?:[);/ ]|$)'
3441      model: 'X20 Plus'
3442    - regex: 'vivo X21i(?: A)?(?:[);/ ]|$)'
3443      model: 'X21i'
3444    - regex: 'vivo X21UD(?: A)?(?:[);/ ]|$)'
3445      model: 'X21 UD'
3446    - regex: 'vivo (?:1725|X21A?)(?:[);/ ]|$)'
3447      model: 'X21'
3448    - regex: 'V1814[AT](?:[);/ ]|$)'
3449      model: 'X21S'
3450    - regex: 'V1809[AT](?:[);/ ]|$)'
3451      model: 'X23'
3452    - regex: 'V1816[AT](?:[);/ ]|$)'
3453      model: 'X23'
3454    - regex: 'V18(38|29)[AT](?:[);/ ]|$)'
3455      model: 'X27'
3456    - regex: 'V1836[AT](?:[);/ ]|$)'
3457      model: 'X27 Pro'
3458    - regex: 'V1938CT(?:[);/ ]|$)'
3459      model: 'X30'
3460    - regex: 'V1938T(?:[);/ ]|$)'
3461      model: 'X30 Pro'
3462    - regex: '(?:V2001A|vivo 2004)(?:[);/ ]|$)'
3463      model: 'X50'
3464    - regex: 'vivo 2005(?:[);/ ]|$)'
3465      model: 'X50 5G'
3466    - regex: 'vivo 1937(?:[);/ ]|$)'
3467      model: 'X50 Lite'
3468    - regex: '(?:V2005A|vivo 2006)(?:[);/ ]|$)'
3469      model: 'X50 Pro'
3470    - regex: '(?:V2011A|X50 Pro\+)(?:[);/ ]|$)'
3471      model: 'X50 Pro Plus'
3472    - regex: 'V20(?:46|59)A(?:[);/ ]|$)'
3473      model: 'X60'
3474    - regex: 'V2085A(?:[);/ ]|$)'
3475      model: 'X60t'
3476    - regex: '(?:V2047A|V2046)(?:[);/ ]|$)'
3477      model: 'X60 Pro'
3478    - regex: 'V2056A(?:[);/ ]|$)'
3479      model: 'X60 Pro Plus'
3480    - regex: '(?:V2134A|V2105)(?:[);/ ]|$)'
3481      model: 'X70 Pro'
3482    - regex: 'V2133A(?:[);/ ]|$)'
3483      model: 'X70'
3484    - regex: 'X([0-9])Plus(?: A)?(?:[);/ ]|$)'
3485      model: 'X$1 Plus'
3486    - regex: 'vivo Xplay6(?:[);/ ]|$)'
3487      model: 'X Play 6'
3488    - regex: 'vivo 2015(?:_21)?(?:[);/ ]|$)'
3489      model: 'Y1s'
3490    - regex: 'vivo 1902(?:[);/ ]|$)'
3491      model: 'Y17'
3492    - regex: 'vivo 1906(?:_20)?(?:[);/ ]|$)'
3493      model: 'Y11'
3494    - regex: 'vivo 19(?:04|40)(?:[);/ ]|$)'
3495      model: 'Y12'
3496    - regex: 'V2102(?:[);/ ]|$)'
3497      model: 'Y12a'
3498    - regex: 'vivo 2007(?:[);/ ]|$)'
3499      model: 'Y12i'
3500    - regex: 'vivo 1901(?:[);/ ]|$)'
3501      model: 'Y15'
3502    - regex: 'vivo 1915(?:[);/ ]|$)'
3503      model: 'Y19'
3504    - regex: 'V202[79](?:[);/ ]|$)'
3505      model: 'Y20'
3506    - regex: 'vivo 1613(?:[);/ ]|$)'
3507      model: 'Y25'
3508    - regex: 'V2043_21(?:[);/ ]|$)'
3509      model: 'Y20 (2021)'
3510    - regex: 'V2037(?:[);/ ]|$)'
3511      model: 'Y20G'
3512    - regex: 'V2065(?:[);/ ]|$)'
3513      model: 'Y20G (2021)'
3514    - regex: 'V2028(?:[);/ ]|$)'
3515      model: 'Y11s'
3516    - regex: 'V2038(?:[);/ ]|$)'
3517      model: 'Y20s'
3518    - regex: 'V2043(?:[);/ ]|$)'
3519      model: 'Y20 (2021)'
3520    - regex: 'V2041(?:[);/ ]|$)'
3521      model: 'Y72 5G'
3522    - regex: 'V2032(?:[);/ ]|$)'
3523      model: 'Y20i'
3524    - regex: 'V2110(?:[);/ ]|$)'
3525      model: 'Y21s'
3526    - regex: 'V2023(?:[);/ ]|$)'
3527      model: 'V20 SE'
3528    - regex: 'V1901[AT](?:[);/ ]|$)'
3529      model: 'Y3'
3530    - regex: 'V1930A(?:[);/ ]|$)'
3531      model: 'Y3 Standard'
3532    - regex: '(?:vivo 1938|V203[46]A)(?:[);/ ]|$)'
3533      model: 'Y30'
3534    - regex: 'V2099A(?:[);/ ]|$)'
3535      model: 'Y30 (2021)'
3536    - regex: 'V2066[B]?A(?:[);/ ]|$)'
3537      model: 'Y30g'
3538    - regex: 'V2036(?:[);/ ]|$)'
3539      model: 'Y31'
3540    - regex: 'V2068A?(?:[);/ ]|$)'
3541      model: 'Y31s'
3542    - regex: 'V2109(?:[);/ ]|$)'
3543      model: 'Y33s'
3544    - regex: 'V1934A(?:[);/ ]|$)'
3545      model: 'Y5s'
3546    - regex: '(?:V1965A|vivo 1935)(?:[);/ ]|$)'
3547      model: 'Y50'
3548    - regex: 'V203[05](?:[);/ ]|$)'
3549      model: 'Y51'
3550    - regex: 'vivo 1707(?:[);/ ]|$)'
3551      model: 'Y51 (2015)'
3552    - regex: 'V2031(?:[);/ ]|$)'
3553      model: 'Y51s'
3554    - regex: 'V2054A(?:[);/ ]|$)'
3555      model: 'Y31s'
3556    - regex: 'V2057A(?:[);/ ]|$)'
3557      model: 'Y52s'
3558    - regex: 'vivo 1606(?:[);/ ]|$)'
3559      model: 'Y53i'
3560    - regex: 'vivo 1606a(?:[);/ ]|$)'
3561      model: 'Y53'
3562    - regex: '(?:V2058|V2111A|V2123A)(?:[);/ ]|$)'
3563      model: 'Y53s'
3564    - regex: 'vivo 1603(?:[);/ ]|$)'
3565      model: 'Y55l'
3566    - regex: 'vivo 1610(?:[);/ ]|$)'
3567      model: 'Y55s'
3568    - regex: 'vivo 1719(?:[);/ ]|$)'
3569      model: 'Y65'
3570    - regex: 'vivo (?:1714|Y69A?)(?:[);/ ]|$)'
3571      model: 'Y69'
3572    - regex: 'V2002A(?:[);/ ]|$)'
3573      model: 'Y70s'
3574    - regex: 'V2006(?:[);/ ]|$)'
3575      model: 'Y60s'
3576    - regex: 'vivo (?:1724|Y71A?)(?:[);/ ]|$)'
3577      model: 'Y71'
3578    - regex: 'vivo 1801i?(?:[);/ ]|$)'
3579      model: 'Y71i'
3580    - regex: 'V1731CA(?:[);/ ]|$)'
3581      model: 'Y73'
3582    - regex: 'V2031A(?:[);/ ]|$)'
3583      model: 'Y73s'
3584    - regex: 'V1913[AT](?:[);/ ]|$)'
3585      model: 'Y7s'
3586    - regex: 'vivo 180([38]|8i)(?:[);/ ]|$)'
3587      model: 'Y81'
3588    - regex: 'vivo 1812(?:_19)?(?:[);/ ]|$)'
3589      model: 'Y81i'
3590    - regex: 'V1732[AT](?:[);/ ]|$)'
3591      model: 'Y81s'
3592    - regex: 'vivo (?:Y83A?|1802)(?:[);/ ]|$)'
3593      model: 'Y83'
3594    - regex: 'vivo 1726(?:[);/ ]|$)'
3595      model: 'Y83 Pro'
3596    - regex: 'V1730EA(?:[);/ ]|$)'
3597      model: 'Y89'
3598    - regex: 'vivo (?:1823|1908)(?:_19)?(?:[);/ ]|$)'
3599      model: 'Y90'
3600    - regex: 'vivo 181[17](?:[);/ ]|$)'
3601      model: 'Y91'
3602    - regex: 'vivo 1820(?:_19)?(?:[);/ ]|$)'
3603      model: 'Y91i'
3604    - regex: 'V1945A(?:[);/ ]|$)'
3605      model: 'Y9s'
3606    - regex: '(?:V2026|V2033)(?:[);/ ]|$)'
3607      model: 'Y12s'
3608    - regex: '(?:V2069|V2026_21)(?:[);/ ]|$)'
3609      model: 'Y12s (2021)'
3610    - regex: 'vivo 18(16|20)(?:[);/ ]|$)'
3611      model: 'Y91i'
3612    - regex: '(V1818[AT]|vivo 181[45])(?:[);/ ]|$)'
3613      model: 'Y93'
3614    - regex: 'V1818C[AT](?:[);/ ]|$)'
3615      model: 'Y93s'
3616    - regex: 'vivo 1807(?:[);/ ]|$)'
3617      model: 'Y95'
3618    - regex: 'V1813[AT](?:[);/ ]|$)'
3619      model: 'Y97'
3620    - regex: 'V1801A0(?:[);/ ]|$)'
3621      model: 'Z1'
3622    - regex: 'vivo (?:1918|1951)(?:[);/ ]|$)'
3623      model: 'Z1 Pro'
3624    - regex: 'V1730D[AT](?:[);/ ]|$)'
3625      model: 'Z1i'
3626    - regex: 'vivo 1917(?:[);/ ]|$)'
3627      model: 'Z1x'
3628    - regex: 'V1813B[AT](?:[);/ ]|$)'
3629      model: 'Z3'
3630    - regex: '(?:vivo Z3x|V1730GA)(?:[);/ ]|$)'
3631      model: 'Z3x'
3632    - regex: 'V1921A(?:[);/ ]|$)'
3633      model: 'Z5'
3634    - regex: 'V1911A(?:[);/ ]|$)'
3635      model: 'Z5x'
3636    - regex: 'V1990A(?:[);/ ]|$)'
3637      model: 'Z5x (2020)'
3638    - regex: 'V1963A(?:[);/ ]|$)'
3639      model: 'Z6'
3640    - regex: 'vivo Y75s(?:[);/ ]|$)'
3641      model: 'Y75s'
3642    - regex: 'vivo X710L?(?:[);/ ]|$)'
3643      model: 'X Shot'
3644    - regex: 'X6SPlus(?: [AD])?(?:[);/ ]|$)'
3645      model: 'X6S Plus'
3646    - regex: 'vivo X6S(?: A)?(?:[);/ ]|$)'
3647      model: 'X6S'
3648    - regex: 'vivo X([5679]|20)[ALD]?(?:[);/ ]|$)'
3649      model: 'X$1'
3650    - regex: 'vivo X5Pro(?: L)?(?:[);/ ]|$)'
3651      model: 'X5 Pro'
3652    - regex: 'vivo Y66i(?: A)?(?:[);/ ]|$)'
3653      model: 'Y66i'
3654    - regex: 'vivo Y(\d{2})[AL]?(?:[);/ ]|$)'
3655      model: 'Y$1'
3656    - regex: 'vivo Xplay(\d)S(?:[);/ ]|$)'
3657      model: 'X Play $1S'
3658    - regex: 'vivo Xplay(\d)[AL]?(?:[);/ ]|$)'
3659      model: 'X Play $1'
3660    - regex: '(?:VIV-|BBG-)?vivo[ _]([^/;]+) Build'
3661      model: '$1'
3662    - regex: '(?:VIV-|BBG-)?vivo[ _]([^);/]+)(?:[);/]|$)'
3663      model: '$1'
3664
3665# Vinsoc
3666Vinsoc:
3667  regex: '(XA Pro) Build'
3668  device: 'smartphone'
3669  model: '$1'
3670
3671# Bird
3672Bird:
3673  regex: 'BIRD[\-. _]([^;/]+)'
3674  device: 'feature phone'
3675  models:
3676    - regex: 'BIRD[\-. _]([^;/]+) Build'
3677      model: '$1'
3678    - regex: 'BIRD[\-. _]([^;/]+)'
3679      model: '$1'
3680
3681# Becker
3682Becker:
3683  regex: 'Becker-([a-z0-9]+)'
3684  device: 'feature phone'
3685  model: '$1'
3686
3687# Beeline
3688Beeline:
3689  regex: 'Beeline|A239s(?:[);/]|$)'
3690  device: 'smartphone'
3691  models:
3692    - regex: 'Beeline[_ ]Pro[_ ]([2436])'
3693      model: 'Pro $1'
3694    - regex: 'Tab (Fast(?: 2)?|Pro)'
3695      model: 'Tab $1'
3696      device: 'tablet'
3697    - regex: 'Tab ([0-9])'
3698      model: 'Tab $1'
3699      device: 'tablet'
3700    - regex: 'Tab'
3701      model: 'Tab'
3702      device: 'tablet'
3703    - regex: 'E([67]00)'
3704      model: 'E$1'
3705    - regex: '(?:Beeline[_ ])?Smart[ _]?([0-9])'
3706      model: 'Smart $1'
3707    - regex: 'Smart Dual'
3708      model: 'Smart Dual'
3709    - regex: '(?:Beeline[_ ])?Fast[_ ]2(?:[);/ ]|$)'
3710      model: 'Fast 2'
3711    - regex: 'Fast(?:[);/ ]|$)'
3712      model: 'Fast'
3713    - regex: 'A239s(?:[);/ ]|$)'
3714      model: 'Smart 8 A239s'
3715
3716# Beetel
3717Beetel:
3718  regex: 'Beetel ([a-z0-9]+)'
3719  device: 'feature phone'
3720  model: '$1'
3721
3722# BenQ-Siemens
3723BenQ-Siemens:
3724  regex: 'BENQ-SIEMENS - ([a-z0-9]+)'
3725  device: 'feature phone'
3726  model: '$1'
3727
3728# BenQ
3729BenQ:
3730  regex: 'BENQ(?:[ \-])?([a-z0-9]+)|(?:F52_09|F5_15)(?:[);/ ]|$)'
3731  device: 'feature phone'
3732  models:
3733    - regex: 'F(52|5)_(?:15|09)(?:[);/ ]|$)'
3734      model: 'F$1'
3735    - regex: 'BENQ(?:[ \-])?([a-z0-9]+)'
3736      model: '$1'
3737
3738# Blaupunkt (blaupunkt.com)
3739Blaupunkt:
3740  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'
3741  device: 'tablet'
3742  models:
3743    - regex: 'Discovery[_ ]111C'
3744      model: 'Discovery 111C'
3745    - regex: 'Discovery[_ ]A10_302'
3746      model: 'Discovery A10.302'
3747    - regex: 'Discovery[_ ]1000C'
3748      model: 'Discovery 1000C'
3749    - regex: 'Discovery[_ ]1001A'
3750      model: 'Discovery 1001A'
3751    - regex: 'Discovery[_ ]1001'
3752      model: 'Discovery 1001'
3753    - regex: 'Soundphone S2'
3754      model: 'Soundphone S2'
3755    - regex: 'Endeavour[_ ](101[GLM]|785|100[01]|101[03]|1100)'
3756      model: 'Endeavour $1'
3757    - regex: 'Polaris[_ ](803)'
3758      model: 'Polaris $1'
3759    - regex: 'Atlantis[_ ](1001A|1010A|A10\.G40[23])'
3760      model: 'Atlantis $1'
3761    - regex: 'SLplus02'
3762      model: 'SL Plus 02'
3763    - regex: '(BP_6010)'
3764      model: '$1'
3765    - regex: 'Blaupunkt[_ ](SL[_ ]0[124]|SM[_ ]0[12])'
3766      device: 'smartphone'
3767      model: '$1'
3768    - regex: '(4K Android TV)'
3769      device: 'tv'
3770      model: '$1'
3771
3772# Bmobile
3773Bmobile:
3774  regex: 'Bmobile[_ ]|(?:FUN 4 2018|AX-?(?:[1-9][0-9]{2,3}[eEO+]?|7OO))(?:[);/ ]|$)'
3775  device: 'smartphone'
3776  models:
3777    - regex: 'AX-?([1-9][0-9]{2,3}[eEO+]?)'
3778      model: 'AX$1'
3779    - regex: 'AX7OO'
3780      model: 'AX700'
3781    - regex: 'FUN 4 2018'
3782      model: 'Fun 4 (2018)'
3783    - regex: 'Bmobile[_ ]([^/;]+) Build'
3784      model: '$1'
3785    - regex: 'Bmobile[_ ]([a-z0-9]+)'
3786      model: '$1'
3787
3788# bq
3789bq:
3790  regex: 'Aquaris|bq [^/;]+ Build|BQS[-_]([0-9]{4})|(BQ(ru)?[_ -][0-9]{3,4})|BQ5059|BQ1008G|BQru_BQru-'
3791  device: 'smartphone'
3792  models:
3793    - regex: 'BQ(?:ru)?-(?:5209L|5044)(?:[);/ ]|$)'
3794      model: 'Strike LTE'
3795    - regex: 'BQ(?:ru)?-(?:6035L)(?:[);/ ]|$)'
3796      model: 'Strike Power Max'
3797    - regex: 'BQ(?:ru)?-(?:5535L)(?:[);/ ]|$)'
3798      model: 'Strike Power Plus'
3799    - regex: 'BQ(S|ru)?-(?:5070|6040L)(?:[);/ ]|$)'
3800      model: 'Magic'
3801    - regex: 'BQ(S|ru)?-(?:6424L)(?:[);/ ]|$)'
3802      model: 'Magic O'
3803    - regex: 'BQ(?:S|ru)?-(?:5730L)(?:[);/ ]|$)'
3804      model: 'Magic C'
3805    - regex: 'BQ(?:S|ru)?-(?:5731L)(?:[);/ ]|$)'
3806      model: 'Magic S'
3807    - regex: 'BQ(?:S|ru)?-5745L(?:[);/ ]|$)'
3808      model: 'Clever'
3809    - regex: 'BQ(?:S|ru)?-5533G(?:[);/ ]|$)'
3810      model: 'Fresh'
3811    - regex: 'BQ(?:S|ru)?-5031G(?:[);/ ]|$)'
3812      model: 'Fun'
3813    - regex: 'BQ(?:S|ru)?-(?:5732L)(?:[);/ ]|$)'
3814      model: 'Aurora SE'
3815    - regex: 'BQ(?:S|ru)?-6430L(?:[);/ ]|$)'
3816      model: 'Aurora'
3817    - regex: 'BQ(?:S|ru)?-6630L(?:[);/ ]|$)'
3818      model: 'Magic L'
3819    - regex: 'BQ-9011[G]?(?:[);/ ]|$)'
3820      model: 'Vision'
3821      device: 'tablet'
3822    - regex: 'BQ-8068L(?:[);/ ]|$)'
3823      model: 'Hornet Plus Pro'
3824    - regex: 'BQ-8067L'
3825      model: 'Hornet Plus'
3826      device: 'tablet'
3827    - regex: 'BQ-8052G'
3828      model: 'BQ-8052G'
3829      device: 'tablet'
3830    - regex: 'BQ-8041L'
3831      model: 'Art'
3832      device: 'tablet'
3833    - regex: 'BQ-7084G'
3834      model: 'Simple'
3835      device: 'tablet'
3836    - regex: 'BQ-7061G'
3837      model: 'Andros'
3838      device: 'tablet'
3839    - regex: 'BQ(ru)?-(7082)'
3840      model: 'Armor'
3841      device: 'tablet'
3842    - regex: 'BQ-7051G'
3843      model: 'Elba'
3844      device: 'tablet'
3845    - regex: 'BQ-7036L'
3846      model: 'Hornet'
3847      device: 'tablet'
3848    - regex: 'BQ-7022(G)?'
3849      model: 'Canion'
3850      device: 'tablet'
3851    - regex: 'BQ-7021G'
3852      model: 'Hit'
3853      device: 'tablet'
3854    - regex: 'BQ-7010G'
3855      model: 'Max'
3856      device: 'tablet'
3857    - regex: 'BQ-7006G'
3858      model: 'Union'
3859      device: 'tablet'
3860    - regex: 'BQ-7003'
3861      model: 'Jamaica'
3862      device: 'tablet'
3863    - regex: 'BQ-6200L|BQ-6000L'
3864      model: 'Aurora'
3865    - regex: 'BQ-6631G'
3866      model: 'Surf'
3867    - regex: 'BQ-6022G'
3868      model: 'Aura'
3869    - regex: 'BQ(ru)?[ -]6015L'
3870      model: 'Universe'
3871    - regex: 'BQ(?:S|ru)?-(?:5525|6030G|6010G)'
3872      model: 'Practic'
3873    - regex: 'BQ-6001L|BQ-6050'
3874      model: 'Jumbo'
3875    - regex: 'BQ-5707G(?:[);/ ]|$)'
3876      model: 'Next Music'
3877    - regex: 'BQ-5702(?:[);/ ]|$)'
3878      model: 'Spring'
3879    - regex: 'BQ-5700L(?:[);/ ]|$)'
3880      model: 'Space X'
3881    - regex: 'BQ-(?:5591|551[89]G)(?:[);/ ]|$)'
3882      model: 'Jeans'
3883    - regex: 'BQ-5522'
3884      model: 'Next'
3885    - regex: 'BQ-5520L(?:[);/ ]|$)'
3886      model: 'Silk'
3887    - regex: 'BQ-5519L(?:[);/ ]|$)'
3888      model: 'Fast Plus'
3889    - regex: 'BQ-5540L(?:[);/ ]|$)'
3890      model: 'Fast Pro'
3891    - regex: 'BQ-5517L(?:[);/ ]|$)'
3892      model: 'Twin Pro'
3893    - regex: 'BQ-5516L(?:[);/ ]|$)'
3894      model: 'Twin'
3895    - regex: 'BQS-5515(?:[);/ ]|$)'
3896      model: 'Wide'
3897    - regex: 'BQ-5515[L]?(?:[);/ ]|$)'
3898      model: 'Fast'
3899    - regex: 'BQ-(?:5512L|5528L)(?:[);/ ]|$)'
3900      model: 'Strike Forward'
3901    - regex: 'BQ-5511L(?:[);/ ]|$)'
3902      model: 'Bliss'
3903    - regex: 'BQS[_ ]5505(?:[);/ ]|$)'
3904      model: 'Amsterdam'
3905    - regex: 'BQ(?:ru)?-5510(?:[);/ ]|$)'
3906      model: 'Strike Power Max 4G'
3907    - regex: 'BQ(?:ru)?-(?:5521|5594)(?:[);/ ]|$)'
3908      model: 'Strike Power Max'
3909    - regex: 'BQ-5508L(?:[);/ ]|$)'
3910      model: 'Next LTE'
3911    - regex: 'BQ-5507L(?:[);/ ]|$)'
3912      model: 'Iron Max'
3913    - regex: 'BQ(?:ru)?-5504(?:[);/ ]|$)'
3914      model: 'Strike Selfie Max'
3915    - regex: 'BQ(?:ru)?-5503(?:[);/ ]|$)'
3916      model: 'Nice 2'
3917    - regex: 'BQ(?:ru)?-6045L(?:[);/ ]|$)'
3918      model: 'Nice'
3919    - regex: 'BQ(?:ru)?-4030G(?:[);/ ]|$)'
3920      model: 'Nice Mini'
3921    - regex: 'BQS-5502(?:[);/ ]|$)'
3922      model: 'Hammer'
3923    - regex: 'BQS-5501(?:[);/ ]|$)'
3924      model: 'Kawasaki'
3925    - regex: 'BQS-5500(?:[);/ ]|$)'
3926      model: 'Vancouver'
3927    - regex: 'BQ-5500L(?:[);/ ]|$)'
3928      model: 'Advance'
3929    - regex: 'BQ-5302G(?:[);/ ]|$)'
3930      model: 'Velvet 2'
3931    - regex: 'BQ-5301(?:[);/ ]|$)'
3932      model: 'Strike View'
3933    - regex: 'BQ-5300G(?:[);/ ]|$)'
3934      model: 'Velvet View'
3935    - regex: 'BQ(ru|S)?-(?:5211|5020)(?:[);/ ]|$)'
3936      model: 'Strike'
3937    - regex: 'BQ-5206L(?:[);/ ]|$)'
3938      model: 'Balance'
3939    - regex: 'BQ(?:ru|S)?-(?:5204|5050)(?:[);/ ]|$)'
3940      model: 'Strike Selfie'
3941    - regex: 'BQ(?:ru)?-5203(?:[);/ ]|$)'
3942      model: 'Vision'
3943    - regex: 'BQ(?:ru)?-5202(?:[);/ ]|$)'
3944      model: 'Space Lite'
3945    - regex: 'BQ(?:ru)?-5201(?:[);/ ]|$)'
3946      model: 'Space'
3947    - regex: 'BQ-5082(?:[);/ ]|$)'
3948      model: 'Sense 2'
3949    - regex: 'BQ-5045L(?:[);/ ]|$)'
3950      model: 'Wallet'
3951    - regex: 'BQ-5047L(?:[);/ ]|$)'
3952      model: 'Like'
3953    - regex: 'BQ-5071(?:[);/ ]|$)'
3954      model: 'Belief'
3955    - regex: 'BQ[S]?-(?:5065|5340)(?:[);/ ]|$)'
3956      model: 'Choice'
3957    - regex: 'BQ(?:S|ru)?-5046L(?:[);/ ]|$)'
3958      model: 'Choice LTE'
3959    - regex: 'BQ(?:ru)?-?(?:5059|5514G)(?:[);/ ]|$)'
3960      model: 'Strike Power'
3961    - regex: '(?:BQru_)?BQ(?:ru)?-5058(?:[);/ ]|$)'
3962      model: 'Strike Power Easy'
3963    - regex: 'BQ(?:ru)?-5057(?:[);/ ]|$)'
3964      model: 'Strike 2'
3965    - regex: 'BQ[S]?-(?:5056|5030)(?:[);/ ]|$)'
3966      model: 'Fresh'
3967    - regex: 'BQ-6042l(?:[);/ ]|$)'
3968      model: 'Magic E'
3969    - regex: 'BQS-5055(?:[);/ ]|$)'
3970      model: 'Turbo Plus'
3971    - regex: 'BQ(?:ru)?-5054(?:[);/ ]|$)'
3972      model: 'Crystal'
3973    - regex: 'BQ-5052(?:[);/ ]|$)'
3974      model: 'Sense'
3975    - regex: 'BQ-6051G(?:[);/ ]|$)'
3976      model: 'Soul'
3977    - regex: 'BQ[S]?-5045(?:[);/ ]|$)'
3978      model: 'Fast'
3979    - regex: 'BQ(?:ru)?-(?:5037|5514L)(?:[);/ ]|$)'
3980      model: 'Strike Power 4G'
3981    - regex: 'BQ(?:ru)?-5035(?:[);/ ]|$)'
3982      model: 'Velvet'
3983    - regex: 'BQ(?:ru)?-5033(?:[);/ ]|$)'
3984      model: 'Shark'
3985    - regex: 'BQ-5541L(?:[);/ ]|$)'
3986      model: 'Shark Rush'
3987    - regex: 'BQ-5032(?:[);/ ]|$)'
3988      model: 'Element'
3989    - regex: 'BQS-5025(?:[);/ ]|$)'
3990      model: 'High Way'
3991    - regex: 'BQ(?:ru)?-5022(?:[);/ ]|$)'
3992      model: 'Bond'
3993    - regex: 'BQ-5015L(?:[);/ ]|$)'
3994      model: 'First'
3995    - regex: 'BQ-5016G(?:[);/ ]|$)'
3996      model: 'Choice'
3997    - regex: 'BQ-5012L(?:[);/ ]|$)'
3998      model: 'Rich'
3999    - regex: 'BQ-5521L(?:[);/ ]|$)'
4000      model: 'Rich Max'
4001    - regex: 'BQS-5011(?:[);/ ]|$)'
4002      model: 'Monte Carlo'
4003    - regex: 'BQ-5010G(?:[);/ ]|$)'
4004      model: 'Spot'
4005    - regex: 'BQ-5000G(?:[);/ ]|$)'
4006      model: 'Velvet Easy'
4007    - regex: 'BQS-5010(?:[);/ ]|$)'
4008      model: 'Prague'
4009    - regex: 'BQ-5009L(?:[);/ ]|$)'
4010      model: 'Trend'
4011    - regex: 'BQS-500[59](?:[);/ ]|$)'
4012      model: 'Sydney'
4013    - regex: 'BQ-5008L(?:[);/ ]|$)'
4014      model: 'Brave'
4015    - regex: 'BQ-5007L(?:[);/ ]|$)'
4016      model: 'Iron'
4017    - regex: 'BQS-5006(?:[);/ ]|$)'
4018      model: 'Los Angeles'
4019    - regex: 'BQ-(?:5005L|5530L)(?:[);/ ]|$)'
4020      model: 'Intense'
4021    - regex: 'BQS-5004(?:[);/ ]|$)'
4022      model: 'Paris'
4023    - regex: 'BQ-5003L(?:[);/ ]|$)'
4024      model: 'Shark Pro'
4025    - regex: 'BQ-5002G(?:[);/ ]|$)'
4026      model: 'Fun'
4027    - regex: 'BQS-5002(?:[);/ ]|$)'
4028      model: 'Colombo'
4029    - regex: 'BQS-5003(?:[);/ ]|$)'
4030      model: 'Colombo II'
4031    - regex: 'BQ-5001L(?:[);/ ]|$)'
4032      model: 'Contact'
4033    - regex: 'BQS-5001(?:[);/ ]|$)'
4034      model: 'Milan'
4035    - regex: 'BQ(?:ru|S)?-5000(?:[);/ ]|$)'
4036      model: 'Tokyo'
4037    - regex: 'BQS-4800(?:[);/ ]|$)'
4038      model: 'Blade'
4039    - regex: 'BQS-4707(?:[);/ ]|$)'
4040      model: 'Montreal'
4041    - regex: 'BQS-4702(?:[);/ ]|$)'
4042      model: 'Оsaka'
4043    - regex: 'BQS-4701(?:[);/ ]|$)'
4044      model: 'Venice'
4045    - regex: 'BQ-(?:4585|5011G)(?:[);/ ]|$)'
4046      model: 'Fox View'
4047    - regex: 'BQ(?:ru)?-4583(?:[);/ ]|$)'
4048      model: 'Fox Power'
4049    - regex: 'BQS-4570(?:[);/ ]|$)'
4050      model: 'Drive'
4051    - regex: 'BQS-4560(?:[);/ ]|$)'
4052      model: 'Golf'
4053    - regex: 'BQS-4555(?:[);/ ]|$)'
4054      model: 'Turbo'
4055    - regex: 'BQS-4550(?:[);/ ]|$)'
4056      model: 'Richmond'
4057    - regex: 'BQ(?:ru)?-(?:4526|5004G)(?:[);/ ]|$)'
4058      model: 'Fox'
4059    - regex: 'BQS-4525(?:[);/ ]|$)'
4060      model: 'Vienna'
4061    - regex: 'BQS-4516(?:[);/ ]|$)'
4062      model: 'Singapore'
4063    - regex: 'BQS-4515(?:[);/ ]|$)'
4064      model: 'Moscow'
4065    - regex: 'BQS-4510(?:[);/ ]|$)'
4066      model: 'Florence'
4067    - regex: 'BQS-4505(?:[);/ ]|$)'
4068      model: 'Santiago'
4069    - regex: 'BQS-4503(?:[);/ ]|$)'
4070      model: 'Dubai'
4071    - regex: 'BQS-4502(?:[);/ ]|$)'
4072      model: 'Kingston'
4073    - regex: 'BQS-4501 Bristol'
4074      model: 'Bristol'
4075    - regex: 'BQ-4501G(?:[);/ ]|$)'
4076      model: 'Fox Easy'
4077    - regex: 'BQ(?:ru)?-4500(?:[);/ ]|$)'
4078      model: 'Fox LTE'
4079    - regex: 'BQ-4077(?:[);/ ]|$)'
4080      model: 'Shark Mini'
4081    - regex: 'BQ(?:ru)?-4072(?:[);/ ]|$)'
4082      model: 'Strike Mini'
4083    - regex: 'BQ(?:ru)?[- ]402[68](?:[);/ ]|$)'
4084      model: 'Up!'
4085    - regex: 'BQS-4010(?:[);/ ]|$)'
4086      model: 'Aspen'
4087    - regex: 'BQS-4009(?:[);/ ]|$)'
4088      model: 'Orleans'
4089    - regex: 'BQS-4008(?:[);/ ]|$)'
4090      model: 'Shanghai'
4091    - regex: 'BQS-4007(?:[);/ ]|$)'
4092      model: 'Valencia'
4093    - regex: 'BQS-4005(?:[);/ ]|$)'
4094      model: 'Seoul'
4095    - regex: 'BQS-4004(?:[);/ ]|$)'
4096      model: 'Dusseldorf'
4097    - regex: 'BQS-4003(?:[);/ ]|$)'
4098      model: 'Verona'
4099    - regex: 'BQ-4001G(?:[);/ ]|$)'
4100      model: 'Cool'
4101    - regex: 'BQS-4001(?:[);/ ]|$)'
4102      model: 'Oxford'
4103    - regex: 'BQS-3510(?:[);/ ]|$)'
4104      model: 'Aspen Mini'
4105    - regex: 'BQS-3503(?:[);/ ]|$)'
4106      model: 'Bombay'
4107    - regex: 'BQ-1085L(?:[);/ ]|$)'
4108      model: 'Hornet Max Pro'
4109      device: 'tablet'
4110    - regex: 'BQ-1084L(?:[);/ ]|$)'
4111      model: 'Hornet Max'
4112      device: 'tablet'
4113    - regex: 'BQ-1083G(?:[);/ ]|$)'
4114      model: 'Armor Pro Plus'
4115      device: 'tablet'
4116    - regex: 'BQ-1082G(?:[);/ ]|$)'
4117      model: 'Armor Pro'
4118      device: 'tablet'
4119    - regex: 'BQ-1077L(?:[);/ ]|$)'
4120      model: 'Armor Pro LTE'
4121      device: 'tablet'
4122    - regex: 'BQ(?:ru)?-1057L(?:[);/ ]|$)'
4123      model: 'Passion'
4124      device: 'tablet'
4125    - regex: 'BQ-1051G(?:[);/ ]|$)'
4126      model: 'Corsika'
4127      device: 'tablet'
4128    - regex: 'BQ-1050G(?:[);/ ]|$)'
4129      model: 'Hawaii'
4130      device: 'tablet'
4131    - regex: 'BQ[-]?1008G(?:[);/ ]|$)'
4132      model: 'Grace'
4133      device: 'tablet'
4134    - regex: 'Aquaris M8'
4135      model: 'Aquaris M8'
4136      device: 'tablet'
4137    - regex: 'Aquaris_([AM])4.5'
4138      model: 'Aquaris $14.5'
4139    - regex: 'BQ(?:ru)?[_ -](?:5590|5740G)(?:[);/ ]|$)'
4140      model: 'Spring'
4141    - regex: 'BQ[S]?-(?:6016L|5520)(?:[);/ ]|$)'
4142      model: 'Mercury'
4143    - regex: 'BQ(?:S|ru)?-(?:5701L|5060)(?:[);/ ]|$)'
4144      model: 'Slim'
4145    - regex: '(BQ-7850|BQ-700[12]G|BQ-8002G|BQ-905[12]G|BQ-9702G|BQ-7056G)'
4146      model: '$1'
4147      device: 'tablet'
4148    - regex: 'BQ-8006G(?:[);/ ]|$)'
4149      model: 'Java'
4150      device: 'tablet'
4151    - regex: 'BQ-7062G(?:[);/ ]|$)'
4152      model: 'Fiji'
4153      device: 'tablet'
4154    - regex: 'BQ(?:ru)?-1081G(?:[);/ ]|$)'
4155      model: 'Grace 3G'
4156      device: 'tablet'
4157    - regex: 'BQ-7802G(?:[);/ ]|$)'
4158      model: 'Luzon'
4159      device: 'tablet'
4160    - regex: 'BQ-7008G(?:[);/ ]|$)'
4161      model: 'Clarion'
4162      device: 'tablet'
4163    - regex: 'BQ-7064G(?:[);/ ]|$)'
4164      model: 'Fusion'
4165      device: 'tablet'
4166    - regex: 'BQ-7050G(?:[);/ ]|$)'
4167      model: 'Malta'
4168      device: 'tablet'
4169    - regex: 'BQ-7000G(?:[);/ ]|$)'
4170      model: 'Сharm'
4171      device: 'tablet'
4172    - regex: 'BQ-7040G(?:[);/ ]|$)'
4173      model: 'Сharm Plus'
4174      device: 'tablet'
4175    - regex: 'BQ-7038G(?:[);/ ]|$)'
4176      model: 'Light Plus'
4177      device: 'tablet'
4178    - regex: 'BQ-7005G(?:[);/ ]|$)'
4179      model: 'Maui'
4180      device: 'tablet'
4181    - regex: 'BQ-7098G(?:[);/ ]|$)'
4182      model: 'Armor Power'
4183      device: 'tablet'
4184    - regex: 'BQ-1007(?:[);/ ]|$)'
4185      model: 'Necker'
4186      device: 'tablet'
4187    - regex: 'BQ-1045[G]?(?:[);/ ]|$)'
4188      model: 'Orion'
4189      device: 'tablet'
4190    - regex: 'BQ-(?:1054L|1020L)(?:[);/ ]|$)'
4191      model: 'Nexion'
4192      device: 'tablet'
4193    - regex: 'BQ-7083G(?:[);/ ]|$)'
4194      model: 'Light'
4195      device: 'tablet'
4196    - regex: 'BQ-8077L(?:[);/ ]|$)'
4197      model: 'Exion Plus'
4198      device: 'tablet'
4199    - regex: 'BQ(?:ru)?-7083(?:[);/ ]|$)'
4200      model: '7083'
4201      device: 'tablet'
4202    - regex: 'BQ(?:ru)?-1056L(?:[);/ ]|$)'
4203      model: '1056L'
4204      device: 'tablet'
4205    - regex: 'BQ(?:ru)?-1022l(?:[);/ ]|$)'
4206      model: 'Armor Pro LTE+'
4207      device: 'tablet'
4208    - regex: 'BQ(?:ru)?-1024L(?:[);/ ]|$)'
4209      model: 'Exion Pro'
4210      device: 'tablet'
4211    - regex: 'BQ(?:ru)?-7055L(?:[);/ ]|$)'
4212      model: 'Exion One'
4213      device: 'tablet'
4214    - regex: 'BQ(?:ru)?-7055L(?:[);/ ]|$)'
4215      model: 'Exion One'
4216      device: 'tablet'
4217    - regex: 'BQ(?:ru)?-7081(?:[);/ ]|$)'
4218      model: 'Charm'
4219      device: 'tablet'
4220    - regex: '(?:bq )?(Aquaris[^/;]*) Build'
4221      model: '$1'
4222    - 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])'
4223      model: 'Aquaris $1'
4224    - regex: 'bq ([^/;]+) Build'
4225      model: '$1'
4226      device: 'tablet'
4227
4228# Bush
4229Bush:
4230  regex: 'Bush[ _-]|Bush10Nou'
4231  device: 'smartphone'
4232  models:
4233    - regex: 'Bush10Nou'
4234      device: 'tablet'
4235      model: '10Nou'
4236    - regex: 'BUSH ([^;/)]+)Tablet(?: Build|[);])'
4237      model: '$1Tablet'
4238      device: 'tablet'
4239    - regex: 'BUSH ([^;/)]+)(?: Build|[);])'
4240      model: '$1'
4241
4242# CAGI
4243CAGI:
4244  regex: 'CAGI-'
4245  device: 'smartphone'
4246  models:
4247    - regex: 'CAGI-OMEGA'
4248      model: 'Omega'
4249    - regex: 'CAGI-([a-z0-9_\-]+)'
4250      model: '$1'
4251
4252# Capitel
4253Capitel:
4254  regex: 'Capitel-([a-z0-9]+)'
4255  device: 'feature phone'
4256  model: '$1'
4257
4258# Captiva
4259Captiva:
4260  regex: 'Captiva[ _-]([^;/)]+)(?: Build|\))'
4261  device: 'tablet'
4262  model: 'Pad $1'
4263
4264# Casio
4265Casio:
4266  regex: '(C811|C7[57]1)(?: 4G)?(?:[);/ ]|$)'
4267  device: 'smartphone'
4268  models:
4269    - regex: 'C751(?:[);/ ]|$)'
4270      model: "G'zOne Ravine"
4271    - regex: 'C771(?:[);/ ]|$)'
4272      model: "G'zOne Commando"
4273    - regex: 'C811 4G(?:[);/ ]|$)'
4274      model: "G'zOne Commando 4G LTE"
4275
4276# Casper (casper.com.tr)
4277Casper:
4278  regex: 'CASPER[_ ]|VIA[- _](X20|T7D|A[34]|E3|F[123]|G[34]|M4|[LS]8|S7|P[23]|V8C|A[13]_Plus(?:_64)?|A1(?:_1)?|S[13]0|S|T17_M|T1[07]|T7|T7-3G|T8B|T8D-3G|S1[78])(?:[);/ ]|$)'
4279  device: 'smartphone'
4280  models:
4281    - regex: '(?:CASPER[_ ])?VIA_A1_Plus(?:_64)?'
4282      model: 'VIA A1 Plus'
4283    - regex: '(?:CASPER[_ ])?VIA[_ ](X20|G1_Plus|A3_Plus|G[13]|E1|[AE]2|M[123]|V[35689]|V10|G3|V6X|A[34]|E3|F[123]|G4|M4|P[23]|S|V8C|A1(?:_1)?)(?:[);/ ]|$)'
4284      model: 'VIA $1'
4285    - regex: 'CASPER_VIA_E1c'
4286      model: 'VIA E1C'
4287    - regex: 'CASPER_L10_4.5G'
4288      model: 'L10 4.5G'
4289      device: 'tablet'
4290    - regex: 'CASPER_(S[23]8)(?:[);/ ]|$)'
4291      model: '$1'
4292      device: 'tablet'
4293    - regex: 'VIA[- _](T7|T8D)-3G'
4294      model: 'VIA $1 3G'
4295      device: 'tablet'
4296    - regex: 'VIA[- _](T7D|S[13]0|[LS]8|S7|T17_M|T1[07]|T7|T8B|S1[78])(?:[);/ ]|$)'
4297      model: 'VIA $1'
4298      device: 'tablet'
4299
4300# Cat (Caterpillar, Catphones)
4301Cat:
4302  regex: 'Cat ?(tablet|stargate|nova)|(?:B15Q|CAT B35|CAT-B100|S62 Pro)(?:[);/ ]|$)'
4303  device: 'tablet'
4304  models:
4305    - regex: 'B15Q'
4306      model: 'B15Q'
4307      device: 'smartphone'
4308    - regex: 'CAT B35'
4309      model: 'B35'
4310      device: 'smartphone'
4311    - regex: 'S62 Pro'
4312      model: 'S62 Pro'
4313      device: 'smartphone'
4314    - regex: 'Cat ?(?:tablet)? ?((?:Galactica|Nova|StarGate|PHOENIX)[^/;]*) Build'
4315      model: '$1'
4316    - regex: 'Cat ?tablet'
4317      model: 'Nova'
4318
4319    - regex: 'CAT-(B100)'
4320      device: 'feature phone'
4321      model: '$1'
4322
4323# Carrefour
4324Carrefour:
4325  regex: 'CT(?:10[0123]0|7[12]0|820|735_16GB)(?:W|FR)?(?:[);/ ]|$)'
4326  device: 'tablet'
4327  models:
4328    - regex: 'CT820'
4329      model: 'Touch Tablet Neo2'
4330    - regex: 'CT(10[0123]0(?:W|FR)?)'
4331      model: 'CT$1'
4332    - regex: 'CT(7[12]0(?:W|FR)?|735)'
4333      model: 'CT$1'
4334
4335# Celkon
4336Celkon:
4337  regex: 'Celkon|Android 7.+ UNIQ(?: Build|[);])|(?:Millennia Hero|2GBStar|2GBXpress|CliQ2|Campus Prime)(?:[);/ ]|$)'
4338  device: 'smartphone'
4339  models:
4340    - regex: 'Celkon[ _*](C[78]20)'
4341      model: '$1'
4342      device: 'tablet'
4343    - regex: 'Celkon[_ ]4G_TAB-8'
4344      model: '4G Tab 8'
4345      device: 'tablet'
4346    - regex: 'Millennia Hero'
4347      model: 'Millennia Hero'
4348    - regex: '2GBStar'
4349      model: '2GB Star'
4350    - regex: '2GBXpress'
4351      model: '2GB Xpress'
4352    - regex: 'CliQ2(?:[);/ ]|$)'
4353      model: 'CliQ 2'
4354    - regex: 'Android 7.+ UniQ(?: Build|[);])'
4355      model: 'UniQ'
4356    - regex: '(Campus Prime)(?:[);/ ]|$)'
4357      model: '$1'
4358    - regex: 'Celkon[ _*](CT[^;/]+) Build'
4359      model: '$1'
4360      device: 'tablet'
4361    - regex: 'Celkon[ _*]([^;/]+) Build'
4362      model: '$1'
4363    - regex: 'Celkon[\. _*]([^;/\)]+)[\)/]'
4364      model: '$1'
4365
4366# Cellution
4367Cellution:
4368  regex: 'Cosmas|CT_Cosmas_V'
4369  device: 'smartphone'
4370  models:
4371    - regex: 'Cosmas'
4372      model: 'Cosmas'
4373    - regex: 'CT_Cosmas_V'
4374      model: 'Cosmas V'
4375
4376# Changhong
4377Changhong:
4378  regex: 'Changhong'
4379  device: 'smartphone'
4380  models:
4381    - regex: 'Changhong[ ]?(X1-K|X6|R8|Z9S?|Z1S|S18)(?:[);/ ]|$)'
4382      model: '$1'
4383
4384    - regex: 'ChangHong Android TV'
4385      device: 'tv'
4386      model: ''
4387    - regex: '(?:Opera TV.+)Changhong-([^);/]+)'
4388      device: 'tv'
4389      model: '$1'
4390
4391# Cherry Mobile (cherrymobile.com)
4392'Cherry Mobile':
4393  regex: 'Cherry|Superion S1 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'
4394  device: 'smartphone'
4395  models:
4396    - regex: '(Flare2X)'
4397      model: '$1'
4398    - regex: 'Flare[_ ]HD[_ ]([345])'
4399      model: 'Flare HD $1'
4400    - regex: 'Flare_HD_MAX'
4401      model: 'Flare HD Max'
4402    - regex: 'FLARE LITE'
4403      model: 'Flare Lite'
4404    - regex: 'Flare S Play'
4405      model: 'Flare S Play'
4406    - regex: 'Flare[_ ]J([26])S'
4407      model: 'Flare J$1s'
4408    - regex: 'Flare_(J2|S7)_Prime'
4409      model: 'Flare $1 Prime'
4410    - regex: 'Flare_S7_Deluxe'
4411      model: 'Flare S7 Deluxe'
4412    - regex: 'Flare_S7_Power'
4413      model: 'Flare S7 Power'
4414    - regex: 'Cherry[_ ]X740'
4415      model: 'Flare A5'
4416    - regex: 'Flare[_ ]Y([367])[_ ]Pro'
4417      model: 'Flare Y$1 Pro'
4418    - regex: 'Flare XL Plus'
4419      model: 'Flare XL Plus'
4420    - regex: 'Flare[ _]X[_ ]V2'
4421      model: 'Flare X V2'
4422    - regex: 'Flare[ _](A2|J[23]|P1|S[467])[ _]Lite'
4423      model: 'Flare $1 Lite'
4424    - regex: 'Flare[ _](J[12]|S[57]|Y3|J6|P1)[ _]mini'
4425      model: 'Flare $1 Mini'
4426    - regex: 'Flare[_ ]?(S[567]|J[63])[_ ]?Plus'
4427      model: 'Flare $1 Plus'
4428    - regex: 'Flare_J2_2018'
4429      model: 'Flare J2 (2018)'
4430    - regex: 'Flare S4 Max LTE'
4431      model: 'Flare S4 Max LTE'
4432    - regex: 'Flare[_ ](S[47]|J2)[_ ]Max'
4433      model: 'Flare $1 Max'
4434    - regex: 'FlareS5LiteDTV'
4435      model: 'Flare S5 Lite DTV'
4436    - regex: 'Flare[_ ]J2[_ ]DTV'
4437      model: 'Flare S2 DTV'
4438    - regex: 'Flare[_ ]Lite[_ ]3S'
4439      model: 'Flare Lite S3'
4440    - regex: 'FLARE S6 POWER'
4441      model: 'Flare S6 Power'
4442    - regex: 'Flare(?:[ _])?(A[123]|J8 LTE|J[13568]|P[13]|S[4-8]|X2|Y3s|Y7_LTE|Y[673]|[45])'
4443      model: 'Flare $1'
4444    - regex: 'OMEGA HD ([45])'
4445      model: 'Omega HD $1'
4446    - regex: 'Omega_HD_Duo'
4447      model: 'Omega HD Duo'
4448    - regex: 'Omega Icon Lite 2'
4449      model: 'Omega Icon Lite 2'
4450    - regex: 'Omega Icon 2'
4451      model: 'Omega Icon 2'
4452    - regex: 'Omega[_ ]Lite[_ ](3[Cs]|4)'
4453      model: 'Omega Lite $1'
4454    - regex: 'Spin Max 2'
4455      model: 'Spin Max 2'
4456    - regex: 'Selfie_Two'
4457      model: 'Selfie Two'
4458    - regex: '(Fusion Bolt|Flare Tab Pro|Flare Tab|Superion S1 DTV)'
4459      model: '$1'
4460      device: 'tablet'
4461
4462    - regex: 'Cherry(?:[ _]?Mobile)?[ _]?([^/;]+)(?: Build|[);])'
4463      model: '$1'
4464
4465# China Mobile
4466'China Mobile':
4467  regex: '(M812C|1501_M02|9930i|A1303|A309W|M651CY) Build'
4468  device: 'smartphone'
4469  models:
4470    - regex: 'M651CY'
4471      model: 'A3'
4472    - regex: '(M812C|1501_M02|9930i|A1303|A309W)'
4473      model: '$1'
4474
4475# Comio
4476Comio:
4477  regex: 'Comio|CT701G PLUS|CT701W|GT100'
4478  device: 'smartphone'
4479  models:
4480    - regex: 'GT100'
4481      model: 'GT100'
4482      device: 'tablet'
4483    - regex: 'CT701W'
4484      model: 'CT701W'
4485      device: 'tablet'
4486    - regex: 'CT701G PLUS'
4487      model: 'CT701G Plus'
4488      device: 'tablet'
4489
4490    - regex: 'Comio[ _-]?([^;/)]+)(?: Build|[);])'
4491      model: '$1'
4492
4493# Compal
4494Compal:
4495  regex: 'Compal-[a-z0-9]+'
4496  device: 'feature phone'
4497  model: '$1'
4498
4499# Artel
4500Artel:
4501  regex: 'Artel[_ ]|\w+_ARTEL_\w+|GAP YOQ(?:[);/ ]|$)'
4502  device: 'smartphone'
4503  models:
4504    - regex: 'GAP YOQ(?:[);/ ]|$)'
4505      model: 'Gap Yo Q'
4506    - regex: 'Artel[_ ](Quadro(?: Pro)?|Tesla|Air|Tomchi|Premium|U3_4G|Z5|Sentinel (?:X 8G|X D5|X)|T10)'
4507      model: '$1'
4508    - regex: 'Artel[_ ]Komi3'
4509      model: 'Komi 3'
4510    - regex: 'Artel[_ ]Q21_PRO'
4511      model: 'Q21 Pro'
4512    - regex: 'Artel[_ ](Star|Nova|Connect|Choice|Style)'
4513      model: '$1'
4514      device: 'tablet'
4515
4516    - regex: '(?:\w+_)?ARTEL_([FVM]5|X[45])_\w+'
4517      device: 'feature phone'
4518      model: '$1'
4519
4520# ComTrade Tesla
4521ComTrade Tesla:
4522  regex: 'Tesla(?!Group/LUMUS)|Impulse 7.85 3G|Impulse 10.1 OCTA|Smartphone_6.1|SP(?:6.2|6.2_Lite)|TTL(?:713G|8)'
4523  device: 'smartphone'
4524  models:
4525    - regex: 'TeslaEvo5.0'
4526      model: 'Evo 5.0'
4527    - regex: '(Gravity 9.7 SHD)'
4528      model: '$1'
4529      device: 'tablet'
4530    - regex: '(Impulse 7.85 3G)'
4531      model: '$1'
4532      device: 'tablet'
4533    - regex: 'Impulse 10.1 OCTA'
4534      model: 'Impulse 10.1" OCTA'
4535      device: 'tablet'
4536    - regex: 'Tesla_SP([^/;]+)L Build'
4537      model: 'Smartphone $1 Lite'
4538    - regex: 'Smartphone_6.1'
4539      model: 'Smartphone 6.1'
4540    - regex: 'SP6.2_Lite'
4541      model: 'Smartphone 6.2 Lite'
4542    - regex: 'Tesla_SP([^/;]+) Build'
4543      model: 'Smartphone $1'
4544    - regex: 'SP([^/;]+) Build'
4545      model: 'Smartphone $1'
4546    - regex: 'Smartphone ([36])'
4547      model: 'Smartphone $1'
4548    - regex: 'Tesla_Tablet_785'
4549      model: '7.85"'
4550      device: 'tablet'
4551    - regex: 'TTH7'
4552      model: 'H7'
4553      device: 'tablet'
4554    - regex: 'TTL7 Build'
4555      model: 'L7'
4556      device: 'tablet'
4557    - regex: 'Tesla_Tablet_L7_3G'
4558      model: 'L7 3G'
4559      device: 'tablet'
4560    - regex: '(L7.1)'
4561      model: '$1'
4562      device: 'tablet'
4563    - regex: 'TTL713G'
4564      model: 'L7.1 3G'
4565      device: 'tablet'
4566    - regex: '(L7 Quad) Build'
4567      model: '$1'
4568      device: 'tablet'
4569    - regex: '(L7 Quad Lite)'
4570      model: '$1'
4571      device: 'tablet'
4572    - regex: 'TTL8 Build'
4573      model: 'L8'
4574      device: 'tablet'
4575    - regex: '(L8.1)'
4576      model: '$1'
4577      device: 'tablet'
4578    - regex: 'TESLA_TABLET_M7'
4579      model: 'M7'
4580      device: 'tablet'
4581    - regex: 'Tesla_Tablet_M8'
4582      model: 'M8'
4583      device: 'tablet'
4584
4585# ConCorde
4586ConCorde:
4587  regex: 'ConCorde ([^/;]+) Build|Concorde_Raptor_Z55(?:[);/ ]|$)'
4588  device: 'smartphone'
4589  models:
4590    - regex: 'Concorde_(Raptor_Z55)(?:[);/ ]|$)'
4591      model: '$1'
4592    - regex: 'ConCorde Tab ?([^/;]+) Build'
4593      model: 'Tab $1'
4594      device: 'tablet'
4595    - regex: 'ConCorde ReadMan ?([^/;]+) Build'
4596      model: 'ReadMan $1'
4597      device: 'tablet'
4598    - regex: 'ConCorde ([^/;]+) Build'
4599      model: '$1'
4600
4601# Condor (www.condor.dz)
4602Condor:
4603  regex: 'Allure (?:M[13]|X)|Griffe T[2356789]|TFX712G|TRA-901G|TGW[-]?(710G|709)|(?: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'
4604  device: 'smartphone'
4605  models:
4606    - regex: 'CTAB([^/;]+) Build'
4607      device: 'tablet'
4608      model: 'CTAB $1'
4609    - regex: '(TGW)-?(710G|709)(?:[);/ ]|$)'
4610      device: 'tablet'
4611      model: '$1 $2'
4612    - regex: '(TFX712G|TB105L|TB717G)(?:[);/ ]|$)'
4613      device: 'tablet'
4614      model: '$1'
4615    - regex: '(TRA)-(901G)(?:[);/ ]|$)'
4616      device: 'tablet'
4617      model: '$1 $2'
4618
4619    - regex: 'PHS\-601'
4620      model: 'C8'
4621    - regex: 'PGN\-?403'
4622      model: 'C4+ Noir'
4623    - regex: 'PGN\-?404'
4624      model: 'C7 Mini'
4625    - regex: 'PGN\-?409'
4626      model: 'Plume P4'
4627    - regex: 'PKT\-?301'
4628      model: 'C2'
4629    - regex: 'PGN\-?504'
4630      model: 'C5'
4631    - regex: 'PGN\-?505'
4632      model: 'C8S'
4633    - regex: 'PGN\-?506'
4634      model: 'C7'
4635    - regex: '(Allure (?:M[13]|X))'
4636      model: '$1'
4637    - regex: 'PGN\-?507'
4638      model: 'Allure A9'
4639    - regex: 'PGN\-?508'
4640      model: 'C6+'
4641    - regex: 'PGN\-?509'
4642      model: 'C6 Pro'
4643    - regex: 'PGN\-?511'
4644      model: 'Allure A9 Plus'
4645    - regex: 'PGN\-?513'
4646      model: 'Griffe G4'
4647    - regex: 'PHQ519'
4648      model: 'Griffe G4S'
4649    - regex: 'PHQ520'
4650      model: 'Griffe G5'
4651    - regex: 'PHQ525'
4652      model: 'Griffe G6'
4653    - regex: 'PHQ526'
4654      model: 'Griffe G6 Pro'
4655    - regex: 'PGN\-?514'
4656      model: 'Plume P7'
4657    - regex: 'PGN\-?515'
4658      model: 'Plume P4 Pro'
4659    - regex: 'PGN\-?516'
4660      model: 'Plume P5'
4661    - regex: 'PGN\-?51[78]'
4662      model: 'Plume P6'
4663    - regex: 'PGN\-?521'
4664      model: 'Griffe G4 Plus'
4665    - regex: 'Griffe T3 ?pro'
4666      model: 'Griffe T3 Pro'
4667    - regex: 'Griffe T([0-9]) Plus'
4668      model: 'Griffe T$1 Plus'
4669    - regex: 'Griffe T([0-9])'
4670      model: 'Griffe T$1'
4671    - regex: 'PGN\-?522'
4672      model: 'P6 Plus'
4673    - regex: 'PGN\-?523'
4674      model: 'P7 Plus'
4675    - regex: 'PGN\-?527'
4676      model: 'Plume P4 Plus'
4677    - regex: 'PGN\-?528|PLUME P6 PRO LTE'
4678      model: 'Plume P6 Pro LTE'
4679    - regex: 'PGN\-?605'
4680      model: 'Plume P8'
4681    - regex: 'PGN\-?606'
4682      model: 'Allure A55'
4683    - regex: 'PGN\-?607'
4684      model: 'Allure A100'
4685    - regex: 'PGN\-?608'
4686      model: 'Allure A55 Slim'
4687    - regex: 'PGN\-?609'
4688      model: 'Allure A100 Lite'
4689    - regex: 'PGN\-?610'
4690      model: 'Plume P8 Lite'
4691    - regex: 'PGN\-?611'
4692      model: 'Allure A8'
4693    - regex: 'PGN\-?612'
4694      model: 'Allure A8 Plus'
4695    - regex: 'PGN\-?613'
4696      model: 'Allure A55 Plus'
4697    - regex: 'Plume H1'
4698      model: 'Plume H1'
4699    - regex: 'Plume L([2468]) Pro'
4700      model: 'Plume L$1 Pro'
4701    - regex: 'Plume L3 Plus'
4702      model: 'Plume L3 Plus'
4703    - regex: 'Plume L3 Smart'
4704      model: 'Plume L3 Smart'
4705    - regex: 'Plume L([1-4])'
4706      model: 'Plume L$1'
4707    - regex: 'Plume P8 Pro'
4708      model: 'Plume P8 Pro'
4709
4710    - regex: 'PGN\-?([0-9]{3})'
4711      model: 'PGN-$1'
4712
4713# Coolpad (coolpad.us)
4714Coolpad:
4715  regex: '(?:YL-)?Coolpad|(?:Cool_9S|1824-S0|8190Q|1831-A0|8676-[AM]01|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|CP3706AS|CP3669AS|C103)(?:[);/ ]|$)|(8295|5860S) Build'
4716  device: 'smartphone'
4717  models:
4718    - regex: 'VCR-[AI]0'
4719      model: 'Cool Play 6'
4720    - regex: '1831-A0(?:[);/ ]|$)'
4721      model: 'Cool Play C7'
4722    - regex: 'REVVLPLUS C3701A'
4723      model: 'REVVL Plus'
4724      device: 'phablet'
4725    - regex: '8190Q(?:[);/ ]|$)'
4726      model: '8190Q'
4727    - regex: 'DLS-E0(?:[);/ ]|$)'
4728      model: 'N5'
4729    - regex: '1824-S0(?:[);/ ]|$)'
4730      model: 'N5C'
4731    - regex: 'CP3705A[S]?(?:[);/ ]|$)'
4732      model: 'Legacy'
4733    - regex: 'CP3648AT?(?:[);/ ]|$)'
4734      model: 'Legacy S'
4735    - regex: 'CP3320AS2?(?:[);/ ]|$)'
4736      model: 'Legacy S SR'
4737    - regex: 'CP3706AS(?:[);/ ]|$)'
4738      model: 'Legacy Brisa'
4739    - regex: 'CP3669AS(?:[);/ ]|$)'
4740      model: 'Suva'
4741    - regex: 'MTS-T0(?:[);/ ]|$)'
4742      model: 'N2M'
4743    - regex: '(?:C106-[789]|R116|C10[36])(?:[);/ ]|$)'
4744      model: 'Cool 1'
4745    - regex: 'C107-9(?:[);/ ]|$)'
4746      model: '1C'
4747    - regex: 'C105-(?:E0|8)(?:[);/ ]|$)'
4748      model: 'Cool S1'
4749    - regex: '1826-I01(?:[);/ ]|$)'
4750      model: 'Cool 5'
4751    - regex: 'ORL-C0(?:[);/ ]|$)'
4752      model: 'Cool 9'
4753    - regex: 'Cool_9S(?:[);/ ]|$)'
4754      model: 'Cool 9S'
4755    - regex: '5560S(?:[);/ ]|$)'
4756      model: 'Arise'
4757    - regex: '(5860S|8295) Build'
4758      model: '$1'
4759    - regex: 'E501'
4760      model: 'Modena'
4761    - regex: 'E502'
4762      model: 'Modena 2'
4763    - regex: 'CP8676_I02(?:[);/ ]|$)'
4764      model: 'Note 3'
4765    - regex: 'CP8676_I03(?:[);/ ]|$)'
4766      model: 'Note 3 Plus'
4767    - regex: 'CP8298_I00(?:[);/ ]|$)'
4768      model: 'Note 3 Lite'
4769    - regex: '(8676-[AM]01|8298-(?:M02|A01))(?:[);/ ]|$)'
4770      model: '$1'
4771    - regex: '(?:YL-)?Coolpad[ _\-]?([^/;]+) Build'
4772      model: '$1'
4773    - regex: '(?:YL-)?Coolpad[ _\-]?([a-z0-9\-]+)'
4774      model: '$1'
4775
4776# Clarmin (clarmin.com)
4777Clarmin:
4778  regex: 'Clarmin'
4779  device: 'smartphone'
4780  models:
4781    - regex: 'Clarmin[_ ](B[65]|C1)'
4782      model: '$1'
4783
4784# CORN (corn-mobile.com)
4785CORN:
4786  regex: 'CORN '
4787  device: 'smartphone'
4788  models:
4789    - regex: 'CORN R20'
4790      model: 'R20'
4791
4792# Cosmote (https://www.telekom.ro/)
4793Cosmote:
4794  regex: 'Cosmote'
4795  device: 'smartphone'
4796  models:
4797    - regex: 'Cosmote_My_mini_Tab' # Allview My Mini Tab
4798      device: 'tablet'
4799      model: 'My Mini Tab'
4800
4801# Cricket
4802Cricket:
4803  regex: 'Cricket-([a-z0-9]+)|(?:U325AC|U705AC|V350C)(?:[);/ ]|$)'
4804  device: 'smartphone'
4805  models:
4806    - regex: 'U325AC'
4807      model: 'Icon 2'
4808    - regex: 'U705AC'
4809      model: 'Ovation'
4810    - regex: 'V350C'
4811      model: 'Influence'
4812    - regex: 'Cricket-([a-z0-9]+)'
4813      device: 'feature phone'
4814      model: '$1'
4815
4816# Crius
4817'Crius Mea':
4818  regex: '(Q7A\+?)(?:[);/ ]|$)'
4819  device: 'tablet'
4820  model: '$1'
4821
4822# Crosscall
4823Crosscall:
4824  regex: 'Crosscall|ODYSSEY_Plus|Odyssey S1|Trekker-[MSX][1234]|Action-X3|Core-X[34]'
4825  device: 'smartphone'
4826  models:
4827    - regex: 'Action-X3'
4828      model: 'Action-X3'
4829    - regex: 'Core-X([34])'
4830      model: 'Core-X$1'
4831    - regex: 'Crosscall ([^;/]+) Build'
4832      model: '$1'
4833    - regex: 'ODYSSEY_Plus'
4834      model: 'ODYSSEY+'
4835    - regex: 'Odyssey S1'
4836      model: 'ODYSSEY S1'
4837    - regex: 'Trekker-([MSX][1234](?: Core)?)'
4838      model: 'Trekker-$1'
4839
4840# AllDocube (alldocube.com)
4841AllDocube:
4842  regex: '(?:T1001XS?|T1006S?|iPlay_[234]0|U1006H?|iPlay8|iPlay30|iPlay_40H|iPlay20S)(?:[);/ ]|$)'
4843  device: 'tablet'
4844  models:
4845    - regex: 'T1001XS(?:[);/ ]|$)'
4846      model: 'M5XS'
4847    - regex: 'T1006S(?:[);/ ]|$)'
4848      model: 'M5S'
4849    - regex: 'T1006(?:[);/ ]|$)'
4850      model: 'M5'
4851    - regex: 'T1001X(?:[);/ ]|$)'
4852      model: 'M5X'
4853    - regex: 'U1006H?(?:[);/ ]|$)'
4854      model: 'iPlay 10 Pro 10.1"'
4855    - regex: 'iPlay_?([234]0|8|40H|20s)(?:[);/ ]|$)'
4856      model: 'iPlay $1'
4857
4858# Cube (short name Alldocube)
4859Cube:
4860  regex: '(<!myPhone ?)Cube|(U[0-9]+GT|K8GT)|(?:T8-PLUSM?S?|T8PLUSML|I1-TF[BD]?|I1-TC|i15-TG|i1002S|Iwork10 Flagship|iwork10 Pro)(?:[);/ ]|$)'
4861  device: 'tablet'
4862  models:
4863    - regex: 'U27GT'
4864      model: 'Talk 8'
4865    - regex: '(?:T8-PLUSM?S?|T8PLUSML)(?:[);/ ]|$)'
4866      model: 'T8 Ultimate'
4867    - regex: 'U55GT'
4868      model: 'Talk 79'
4869    - regex: 'U65GT'
4870      model: 'Talk 9X'
4871    - regex: 'I1-TF[BD]?(?:[);/ ]|$)'
4872      model: 'iWork 8 Air'
4873    - regex: 'I1-TC(?:[);/ ]|$)'
4874      model: 'iWork 8 Ultimate'
4875    - regex: 'i15-TG(?:[);/ ]|$)'
4876      model: 'iWork 10 Ultimate'
4877    - regex: '(?:i1002S|iwork10 Pro)(?:[);/ ]|$)'
4878      model: 'iWork 10 Pro'
4879    - regex: 'Iwork10 Flagship(?:[);/ ]|$)'
4880      model: 'iWork 10 Flagship'
4881
4882    - regex: '(U[0-9]+GT[^;/]*) Build'
4883      model: '$1'
4884    - regex: '(U[0-9]+GT(?:[0-9]|[\-_][a-z]+)?)'
4885      model: '$1'
4886    - regex: '(K8GT)'
4887      model: '$1'
4888
4889# Oculus (https://www.oculus.com/)
4890Oculus:
4891  regex: '(?:Pacific|Quest).+OculusBrowser|Standalone HMD'
4892  device: 'wearable'
4893  models:
4894    - regex: 'Pacific'
4895      model: 'Go'
4896    - regex: '(?:Quest 2|Standalone HMD)'
4897      model: 'Quest 2'
4898    - regex: 'Quest'
4899      model: 'Quest'
4900
4901# CUBOT
4902CUBOT:
4903  regex: 'CUBOT|(?<!QUMO )QUEST(?!(?:[0-9]|\s[0-9]))(?: LITE)?|(?:NOTE 20 PRO|RAINBOW 2|KING_KONG_3|KINGKONG 7|KINGKONG 5 Pro|ZORRO 001|KINGKONG[_ ]MINI2?|KING KONG CS|R15_PRO|S550 Pro| CHEETAH| X19|X19 S)(?:[);/ ]|$)'
4904  device: 'smartphone'
4905  models:
4906    - regex: 'CHEETAH( 2)?'
4907      model: 'Cheetah$1'
4908    - regex: 'RAINBOW 2'
4909      model: 'Rainbow 2'
4910    - regex: 'RAINBOW'
4911      model: 'Rainbow'
4912    - regex: 'DINOSAUR'
4913      model: 'Dinosaur'
4914    - regex: 'KINGKONG MINI2'
4915      model: 'King Kong Mini 2'
4916    - regex: 'KINGKONG_MINI'
4917      model: 'King Kong Mini'
4918    - regex: 'KING[_ ]?KONG[_ ]([37])'
4919      model: 'King Kong $1'
4920    - regex: 'KINGKONG 5 Pro'
4921      model: 'King Kong 5 Pro'
4922    - regex: 'KING KONG CS'
4923      model: 'King Kong CS'
4924    - regex: 'KING KONG'
4925      model: 'King Kong'
4926    - regex: 'QUEST LITE'
4927      model: 'Quest Lite'
4928    - regex: 'QUEST'
4929      model: 'Quest'
4930    - regex: 'ZORRO 001'
4931      model: 'Zorro 001'
4932    - regex: 'CUBOT[ _]Echo'
4933      model: 'Echo'
4934    - regex: 'CUBOT[ _]MANITO'
4935      model: 'Manito'
4936    - regex: 'CUBOT[ _]MAGIC'
4937      model: 'Magic'
4938    - regex: 'CUBOT[ _]MAX'
4939      model: 'Max'
4940    - regex: 'NOTE Plus'
4941      model: 'Note Plus'
4942    - regex: 'NOTE 20 PRO'
4943      model: 'Note 20 Pro'
4944    - regex: '(R15|S550|J3)[_ ]PRO'
4945      model: '$1 Pro'
4946    - regex: 'CUBOT[_ ]NOTE[_ ]S'
4947      model: 'Note S'
4948    - regex: 'CUBOT_NOVA'
4949      model: 'Nova'
4950    - regex: 'CUBOT_POWER'
4951      model: 'Power'
4952    - regex: 'CUBOT_X18_Plus'
4953      model: 'X18 Plus'
4954    - regex: 'CUBOT[ _](A5|C6W|H3|J3|P7|P20|[RXJ]9|R11|X18)(?:[);/ ]|$)'
4955      model: '$1'
4956    - regex: ' (X19 S|X19)(?:[);/ ]|$)'
4957      model: '$1'
4958    - regex: 'CUBOT ([^;/]+) Build'
4959      model: '$1'
4960    - regex: '([^;/]+) Build/CUBOT'
4961      model: '$1'
4962
4963# Clout
4964Clout:
4965  regex: 'Hind[ _]5\.1|X417[ _]Amaze|X418[ _]Zest|X421[ _]Nova|X422[ ]Exotic|X425[ _]Shavit|X428[ _]Astute'
4966  device: 'smartphone'
4967  models:
4968    - regex: 'Hind[ _]5\.1'
4969      model: 'Hind 5.1'
4970    - regex: 'X417[ _]Amaze'
4971      model: 'X417 Amaze'
4972    - regex: 'X418[ _]Zest'
4973      model: 'X418 Zest'
4974    - regex: 'X421[ _]Nova'
4975      model: 'X421 Nova'
4976    - regex: 'X422[ _]Exotic'
4977      model: 'X422 Exotic'
4978    - regex: 'X425[ _]Shavit'
4979      model: 'X425 Shavit'
4980    - regex: 'X428[ _]Astute'
4981      model: 'X428 Astute'
4982
4983# Concord
4984Concord:
4985  regex: 'Concord[ _-]|(?:Flyfix 6|C-721|Plus-7_C777|Plus_M19_C779|Plus-9_C778)(?:[);/ ]|$)'
4986  device: 'smartphone'
4987  models:
4988    - regex: 'M10'
4989      model: 'M10'
4990    - regex: 'Flyfix 6'
4991      model: 'Flyfix 6'
4992    - regex: 'C-721'
4993      model: 'Flyfix Q'
4994      device: 'tablet'
4995    - regex: 'Plus[-_]([79]|M19)_(C77[789])(?:[);/ ]|$)'
4996      model: 'Plus-$1 $2'
4997      device: 'tablet'
4998
4999# Crescent
5000Crescent:
5001  regex: 'WING 5|WING9|Venus[ _][14]'
5002  device: 'smartphone'
5003  models:
5004    - regex: 'WING 5'
5005      model: 'Wing 5'
5006    - regex: 'WING9'
5007      model: 'Wing 9'
5008    - regex: 'Venus[ _]([14])'
5009      model: 'Venus $1'
5010
5011# Cyrus
5012Cyrus:
5013  regex: 'Cyrus[ _-]|CyrusApel'
5014  device: 'smartphone'
5015  models:
5016    - regex: 'Cyrus[ _-]?([^;/)]+) Build'
5017      model: '$1'
5018    - regex: 'Cyrus[ _-]?([^;/)]+)(?:[);/ ]|$)'
5019      model: '$1'
5020
5021# Datang
5022Datang:
5023  regex: 'DATANG'
5024  device: 'smartphone'
5025  models:
5026    - regex: '(?:DATANG[ _-])+([^;/]+) Build'
5027      model: '$1'
5028    - regex: '(?:DATANG[ _-])+([^;/)]+)(?:[;/)]|$)'
5029      model: '$1'
5030
5031# Datsun
5032Datsun:
5033  regex: 'DATSUN'
5034  device: 'smartphone'
5035  models:
5036    - regex: 'DATSUN_D5500'
5037      model: 'D5500'
5038    - regex: 'Datsun_D5001'
5039      model: 'D5001'
5040
5041# Danew
5042Danew:
5043  regex: 'Dslide ?([^;/]+) Build|Konnect_?(?:402|50[246]|60[127])|GEODROID_A5|Dslide ?(?:714|101[45]|1013QC)'
5044  device: 'smartphone'
5045  models:
5046    - regex: 'Konnect_?(402|50[246]|60[127])'
5047      model: 'Konnect $1'
5048    - regex: 'Dslide ?([^;/]+) Build'
5049      device: 'tablet'
5050      model: 'DSlide $1'
5051    - regex: 'GEODROID_A5'
5052      device: 'tablet'
5053      model: 'Geodroid A5'
5054    - regex: 'Dslide ?(714|1013QC|101[45])'
5055      device: 'tablet'
5056      model: 'Dslide $1'
5057
5058# Denver Electronics (denver-electronics.com)
5059Denver:
5060  regex: '(?:TA[CDQ]-[0-9]+)|P(?:.+)TAQ-(?:[0-9]+)|SDQ[_-](?:550[24]4L|52001G|50002G|57004L)'
5061  device: 'tablet'
5062  models:
5063    - regex: 'P(?:.+)TAQ-(10213GMK2|10172MK3|10242MK2|70242MK2|[0-9]+)(?:[);/ ]|$)'
5064      model: 'TAQ-$1'
5065    - regex: '(TA[CDQ]-[0-9]+)'
5066      model: '$1'
5067    - regex: 'SDQ[_-](550[24]4L|52001G|50002G|57004L)'
5068      device: 'smartphone'
5069      model: 'SDQ-$1'
5070
5071# Dell
5072Dell:
5073  regex: 'Dell[^a-z]|Venue|XCD35'
5074  device: 'smartphone'
5075  models:
5076    - regex: 'XCD35'
5077      model: 'XCD35'
5078    - regex: 'Venue ((?:10|[78]) [0-9]{4}|[78] HSPA\+)'
5079      model: 'Venue $1'
5080      device: 'tablet'
5081    - regex: '(?:Dell )?Venue(?: Build|[);])'
5082      model: 'Venue'
5083    - regex: 'Dell; Venue Pro'
5084      model: 'Venue Pro'
5085
5086    - regex: '(OptiPlex (?:3050|7010))'
5087      device: 'desktop'
5088      model: '$1'
5089
5090    - regex: '(?:Dell )?(Streak|Venue) ?([^/;]*) Build'
5091      model: '$1 $2'
5092      device: 'tablet'
5093    - regex: '(?:Dell Inc./)?(XPS 13 9360|Latitude 7480)(?:[);/ ]|$)'
5094      device: 'desktop'
5095      model: '$1'
5096    - regex: 'Dell; ((?:Streak|Venue)[^;/\)]*)'
5097      model: '$1'
5098      device: 'tablet'
5099    - regex: 'Dell; ([^;/\)]+)'
5100      model: '$1'
5101    - regex: 'Dell[ _\-]([^/;]+) Build'
5102      model: '$1'
5103
5104# Desay
5105Desay:
5106  regex: 'Desay'
5107  device: 'smartphone'
5108  models:
5109    - regex: 'Desay[ _-]?([^;/)]+) Build'
5110      model: '$1'
5111    - regex: 'Desay[ _-]?([^;/)]+)(?:[);/ ]|$)'
5112      model: '$1'
5113
5114# DEXP (dexp.club)
5115DEXP:
5116  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|E210|B(?:450|340|35[05])|M445|T155|U43F8000Q|A(?:1[456]0|340|355)|GS15[035]|GL[23]55|G25[05]|G15[05]|ES750|XL150|Z[1-4]55|H170|H310|P510|L2[17]0)|Z250|A440|N180i|N380i|(?<!VOX )G450)(?:[);/ ]|$)'
5117  device: 'smartphone'
5118  models:
5119    - regex: 'Ixion[_ ]([^;/]+)(?: Build|\))'
5120      model: 'Ixion $1'
5121    - regex: '(ML450|MS[56]50|ES750|XL150)(?:[);/ ]|$)'
5122      model: 'Ixion $1'
5123    - regex: 'IxionES250(?:[);/ ]|$)'
5124      model: 'Ixion ES250 Rage'
5125    - regex: 'IxionML4.7(?:[);/ ]|$)'
5126      model: 'Ixion ML 4.7"'
5127    - regex: 'M150Storm(?:[);/ ]|$)'
5128      model: 'Ixion M150 Storm'
5129    - regex: 'M445(?:[);/ ]|$)'
5130      model: 'Ixion M445 Onyx 2'
5131    - regex: 'AL250(?:[);/ ]|$)'
5132      model: '4.5" AL250'
5133    - regex: 'AL350(?:[);/ ]|$)'
5134      model: '5.0" AL350'
5135    - regex: 'AS155(?:[);/ ]|$)'
5136      model: '5.45" AS155'
5137    - regex: 'AS260(?:[);/ ]|$)'
5138      model: '5.85" AS260'
5139      device: 'phablet'
5140    - regex: 'AS360(?:[);/ ]|$)'
5141      model: '6.22" AS360'
5142      device: 'phablet'
5143
5144    - regex: 'Ursus[ _]([^;/)]+)(?: Build|[);])'
5145      model: 'Ursus $1'
5146      device: 'tablet'
5147    - 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|N180i|N380i|E1[78]0)(?:[);/ ]|$)'
5148      model: 'Ursus $1'
5149      device: 'tablet'
5150
5151    - regex: ' (A440|A355|B450|B340|B35[05]|BL155|BL160|A160|A340|T155|Z[1-4]55|G25[05]|Z250|G450)(?:[);/ ]|$)'
5152      model: '$1'
5153    - regex: 'SENIOR(?:[);/ ]|$)'
5154      model: 'Senior'
5155
5156    - regex: 'Larus_TV1'
5157      device: 'feature phone'
5158      model: 'Larus_TV1'
5159
5160    - regex: 'H135[ _]Build'
5161      model: 'Atlas'
5162      device: 'desktop'
5163    - regex: '(BL[123]50|BS155|BS160|BS[1256]50|AL[12]40|A1[45]0|GS15[035]|AS160|GL[23]55|G15[05])(?:[);/ ]|$)'
5164      model: '$1'
5165    - regex: 'DEXP[ _]([^;/]+) Build'
5166      model: '$1'
5167    - regex: 'DEXP[ _]([^);/]+)(?:[);/ ]|$)'
5168      model: '$1'
5169
5170    - regex: '(F4[38]D8000K|U43F8000Q)(?:[);/ ]|$)'
5171      device: 'tv'
5172      model: '$1'
5173
5174# Dbtel
5175Dbtel:
5176  regex: 'DBTEL(?:[\-/])?([a-z0-9]+)'
5177  device: 'feature phone'
5178  model: '$1'
5179
5180# Dialog
5181Dialog:
5182  regex: 'Dialog ?([^;/]+)(?: Build|[;)])'
5183  device: 'smartphone'
5184  model: '$1'
5185
5186# Dicam
5187Dicam:
5188  regex: 'DICAM-([a-z0-9]+)'
5189  device: 'feature phone'
5190  model: '$1'
5191
5192# Digi
5193Digi:
5194  regex: '(?<!FBCR/)Digi[ _]([^);/]+)(?:[);/ ]|$)'
5195  device: 'smartphone'
5196  model: '$1'
5197
5198# Digicel
5199Digicel:
5200  regex: 'DIGICEL'
5201  device: 'smartphone'
5202  models:
5203    - regex: 'DL810'
5204      model: 'DL810'
5205    - regex: 'DIGICEL ([^/;]+) Build'
5206      model: '$1'
5207
5208# Digiland
5209Digiland:
5210  regex: '(?:DL721-RB|DL(?:1023|1036|9002|[78]006|1008M)|Compumax Blue)(?:[);/ ]|$)'
5211  device: 'tablet'
5212  models:
5213    - regex: 'DL1008M'
5214      model: 'DL1008M'
5215    - regex: 'DL(1023|1036|9002|[78]006|721-RB)'
5216      model: 'DL$1'
5217    - regex: '(Compumax Blue)'
5218      model: '$1'
5219
5220# Digma
5221Digma:
5222  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)'
5223  device: 'smartphone'
5224  models:
5225    - regex: 'HIT(?: 3G)? HT707[10]MG'
5226      model: 'HIT 3G'
5227      device: 'tablet'
5228    - regex: 'iDx5'
5229      model: 'iDx5'
5230    - regex: 'HT5035PG'
5231      model: 'HIT Q500 3G'
5232    - regex: 'HT4039PG'
5233      model: 'HIT Q401 3G'
5234    - regex: '(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)'
5235      model: '$1'
5236    - regex: 'PS604M'
5237      model: 'Linx 6.0'
5238    - regex: 'LT4049PG'
5239      model: 'Linx Atom 3G'
5240    - regex: 'LT5048MG'
5241      model: 'Linx Joy 3G'
5242    - regex: 'LT5052ML'
5243      model: 'Linx Base 4G'
5244    - regex: 'LT4047MG'
5245      model: 'Linx Alfa 3G'
5246    - regex: 'LS4050MG'
5247      model: 'Linx X1 3G'
5248    - regex: 'LS4051MG'
5249      model: 'Linx X1 Pro 3G'
5250    - regex: 'LT4054MG'
5251      model: 'Linx Argo 3G'
5252    - regex: 'LS5041PL'
5253      model: 'Linx Trix 4G'
5254    - regex: 'LS5040PL'
5255      model: 'Linx Rage 4G'
5256    - regex: 'LS5053ML'
5257      model: 'Linx Pay 4G'
5258    - regex: 'Linx ([A-Z][0-9]{3}) 3G (?:LT4028PG|LS4019PG|LT4001PG|LT5001PG|LT4038PG|LT5037MG|LT4030PG)'
5259      model: 'Linx $1 3G'
5260    - regex: '(Linx PS474S)'
5261      model: '$1'
5262    - regex: 'PT452E'
5263      model: 'Linx 4.5'
5264    - regex: 'CITI ATL 4G CS5029ML'
5265      model: 'CITI ATL 4G'
5266    - regex: '(CITI Z530 3G)'
5267      model: '$1'
5268    - regex: '(CITI [A-Z0-9]+ [34]G) C[ST](?:606[32]ML|4024PG|5009PL|5021ML|502[56]PL)'
5269      model: '$1'
5270
5271    - regex: 'TS7854M'
5272      model: 'Plane 8.1" 3G'
5273      device: 'tablet'
5274    - regex: 'PS1043MG'
5275      model: 'Plane 10.3" 3G'
5276      device: 'tablet'
5277    - regex: 'TS1012E 3G'
5278      model: 'Plane 10.1" 3G'
5279      device: 'tablet'
5280    - regex: 'MVM900H(?:WZ|C)'
5281      model: 'iDx8'
5282      device: 'tablet'
5283    - regex: 'MVM908HCZ'
5284      model: 'iDx9'
5285      device: 'tablet'
5286    - regex: '(iD(?:xD10|rQ10|xD7)[_ ]3G)'
5287      model: '$1'
5288      device: 'tablet'
5289    - regex: '(iDx10|iDx7)'
5290      model: '$1'
5291    - regex: '(iDxD[45]|iDxQ5)'
5292      model: '$1'
5293    - regex: 'HIT 4G HT7074ML'
5294      model: 'HIT 4G'
5295      device: 'tablet'
5296    - regex: 'CITI[_ ](1902 3G|Kids|8527_4G|Octa [178]0|10 E402 4G|8 E400 4G|7 E401 4G)'
5297      model: 'CITI $1'
5298      device: 'tablet'
5299    - 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)'
5300      model: '$1'
5301      device: 'tablet'
5302    - regex: 'iDxD8 3G'
5303      model: 'D-Plane2 8'
5304      device: 'tablet'
5305    - regex: '(iDnD7)'
5306      model: '$1'
5307      device: 'tablet'
5308    - regex: 'NS6902QL'
5309      model: 'Platina 7.2 4G'
5310      device: 'tablet'
5311    - regex: 'NS9797MG'
5312      model: 'Platina 7.2 3G'
5313      device: 'tablet'
5314    - regex: 'TT1004PG'
5315      model: 'Optima 10.4" 3G'
5316      device: 'tablet'
5317    - regex: 'TT1002MG'
5318      model: 'Optima D 10.4" 3G'
5319      device: 'tablet'
5320    - regex: 'TT7025MG'
5321      model: 'Optima 7.5" 3G'
5322      device: 'tablet'
5323    - regex: 'TT7026MW'
5324      model: 'Optima 7.6" 3G'
5325      device: 'tablet'
5326    - regex: 'TT7020MG'
5327      model: 'Optima 7.3" 3G'
5328      device: 'tablet'
5329    - regex: 'TT7024MG'
5330      model: 'Optima 7.4" 3G'
5331      device: 'tablet'
5332    - regex: 'Optima ([0-9]+ X70[0-9]+) 4G'
5333      model: 'Optima $1 4G'
5334      device: 'tablet'
5335    - regex: 'Optima ([0-9]+ A500S) 3G'
5336      model: 'Optima $1 3G'
5337      device: 'tablet'
5338    - regex: '((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.STNMEV]+|Prime)(?:[ _][43]G)?)'
5339      model: '$1'
5340      device: 'tablet'
5341    - regex: 'Digma[_ ]([^;/]+) Build'
5342      model: '$1'
5343      device: 'tablet'
5344    # VR headset
5345    - regex: 'VRL42(?:[);/ ]|$)'
5346      device: 'wearable'
5347      model: 'VR L42'
5348
5349# DoCoMo
5350DoCoMo:
5351  regex: 'DoCoMo|\;FOMA|KGT/1\.0'
5352  device: 'feature phone'
5353  models:
5354    - regex: 'DoCoMo/.+MST.+(SH2101V)'
5355      model: '$1'
5356    - regex: 'DoCoMo/[12]\.0[/ ]([a-z0-9]+)'
5357      model: '$1'
5358    - regex: '([a-z0-9]+)(?:_W)?\;FOMA'
5359      model: '$1'
5360    - regex: 'KGT/1\.0 ([a-z0-9]+)'
5361      model: '$1'
5362
5363# Doogee
5364Doogee:
5365  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|S60Lite|Iron-bone DG750|X10S|X60L|MIX2|Y6 Max|Y6_Piano(?:_black)?)(?:[);/ ]|$)'
5366  device: 'smartphone'
5367  models:
5368    - regex: '(?:Valencia2_)?Y100_Plus(?:[);/ ]|$)'
5369      model: 'Valencia2 Y100 Plus'
5370    - regex: 'Valencia2_Y100pro'
5371      model: 'Valencia2 Y100 Pro'
5372    - regex: 'Valencia2_Y100(?:[);/ ]|$)'
5373      model: 'Valencia2 Y100'
5374    - regex: 'LEO_(DG280)'
5375      model: 'Leo $1'
5376    - regex: 'Iron-bone (DG750)'
5377      model: 'Iron Bone $1'
5378    - regex: '(BL[579]000|S90C|X10S|X60L)(?:[);/ ]|$)'
5379      model: '$1'
5380    - regex: 'X(9[56])Pro(?:[);/ ]|$)'
5381      model: 'X$1 Pro'
5382    - regex: 'N([24]0)Pro(?:[);/ ]|$)'
5383      model: 'N$1 Pro'
5384    - regex: 'BL12000 PRO'
5385      model: 'BL12000 Pro'
5386    - regex: 'BL5500[_ ]Lite'
5387      model: 'BL5500 Lite'
5388    - regex: 'BL12000'
5389      model: 'BL12000'
5390    - regex: 'S([568]8|9[0567]|59|40|86)Pro'
5391      model: 'S$1 Pro'
5392    - regex: 'S(88)Plus'
5393      model: 'S$1 Plus'
5394    - regex: 'S([4-8]0|55)[_ ]?Lite'
5395      model: 'S$1 Lite'
5396    - regex: 'KISSME-DG580'
5397      model: 'Kissme DG580'
5398    - regex: 'Hitman_DG850'
5399      model: 'Hitman DG580'
5400    - regex: 'X9 Mini'
5401      model: 'X9 Mini'
5402    - regex: 'x5_doogee'
5403      model: 'X5'
5404    - regex: 'Shoot_([12])'
5405      model: 'Shoot $1'
5406    - regex: 'Ibiza_F2'
5407      model: 'Ibiza F2'
5408    - regex: 'Y6_Piano_black'
5409      model: 'Y6 Piano Black'
5410    - regex: 'Y6_Piano'
5411      model: 'Y6 Piano'
5412    - regex: 'Y6 Max 3D'
5413      model: 'Y6 Max 3D'
5414    - regex: 'Y6 Max'
5415      model: 'Y6 Max'
5416
5417    - regex: '(X5max(?:[_ ]PRO)?)'
5418      model: '$1'
5419    - 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?)(?:[);/ ]|$)'
5420      model: '$1 $2'
5421    - regex: 'DOOGEE[ _-]([^);/]+) Build'
5422      model: '$1'
5423    - regex: 'DOOGEE[ _-]([^);/]+)(?:[);/ ]|$)'
5424      model: '$1'
5425    - regex: 'Y([89]) ?Plus(?:[);/ ]|$)'
5426      model: 'Y$1 Plus'
5427    - regex: 'MIX2(?:[);/ ]|$)'
5428      model: 'Mix 2'
5429
5430# Doov
5431Doov:
5432  regex: '(?:Doov-)?Doov[ _]'
5433  device: 'smartphone'
5434  models:
5435    - regex: '(?:Doov-)?Doov[ _]([^;/]+) Build'
5436      model: '$1'
5437    - regex: '(?:Doov-)?Doov[ _]([^);/]+)(?:[);/ ]|$)'
5438      model: '$1'
5439
5440# Dopod
5441Dopod:
5442  regex: 'Dopod(?: )?([a-z0-9]+)'
5443  device: 'feature phone'
5444  model: '$1'
5445
5446# Doro
5447Doro:
5448  regex: 'Doro'
5449  device: 'smartphone'
5450  models:
5451    - regex: 'Doro[ _-]?([^;/)]+) Build'
5452      model: '$1'
5453    - regex: 'Doro[ _-]([0-9a-z]+)'
5454      model: '$1'
5455
5456# Dune HD
5457'Dune HD':
5458  regex: 'DuneHD|SOLO 4K(?:[);/ ]|$)'
5459  device: 'tv'
5460  models:
5461    - regex: 'SOLO 4K(?:[);/ ]|$)'
5462      model: 'Solo 4k'
5463    - regex: 'DuneHD/\d.\d \([a-z]+__([a-z0-9_-]+);'
5464      model: '$1'
5465    - regex: 'DuneHD/\d.\d \(([a-z0-9_-]+);'
5466      model: '$1'
5467
5468# DNS
5469DNS:
5470  regex: '(?:DNS|AirTab)[ _\-]([^;/)]+)|(?:S4505M|S4004M|SD01M)(?:[);/ ]|$)'
5471  device: 'smartphone'
5472  models:
5473    - regex: '(?:DNS[_ ])?(S4505M|S4004M|SD01M|S4502|S4003|S4003)(?:[);/ ]|$)'
5474      model: '$1'
5475    - regex: 'S-4003(?:[);/ ]|$)'
5476      model: 'S4003'
5477    - regex: 'AirTab[ _\-]([^;/]+)(?: Build|[);])'
5478      model: 'AirTab $1'
5479      device: 'tablet'
5480    - regex: 'DNS[ _\-]([^;/]+)(?: Build|[);])'
5481      model: '$1'
5482
5483# E-Boda (e-boda.ro)
5484E-Boda:
5485  regex: 'E-Boda|Eclipse_(?:G400M|G500)|Revo R77 GPS'
5486  device: 'smartphone'
5487  models:
5488    - regex: 'E-Boda ((?:Revo|Izzycomm|Essential|Intelligence|Supreme)[^/;]+) Build'
5489      device: 'tablet'
5490      model: '$1'
5491    - regex: 'Revo R77 GPS'
5492      device: 'tablet'
5493      model: 'Revo R77 GPS'
5494    - regex: 'Eclipse_(G400M|G500)'
5495      model: 'Eclipse $1'
5496    - regex: 'E-Boda ([^/;]+) Build'
5497      model: '$1'
5498
5499# Easypix
5500Easypix:
5501  regex: 'EasyPad|EasyPhone'
5502  device: 'smartphone'
5503  models:
5504    - regex: '(EasyPhone[^/;]+) Build'
5505      model: '$1'
5506    - regex: 'EasyPad ([^/;)]+)(?: Build|[;)])'
5507      model: 'EasyPad $1'
5508      device: 'tablet'
5509
5510# Ebest
5511EBEST:
5512  regex: 'EBEST'
5513  device: 'smartphone'
5514  models:
5515    - regex: 'EBEST[ _-]?([^;/)]+) Build'
5516      model: '$1'
5517    - regex: 'EBEST[ _-]?([^;/)]+)(?:[);/ ]|$)'
5518      model: '$1'
5519
5520# Echo Mobiles
5521Echo Mobiles:
5522  regex: 'ECHO[ _](HOLI|HORIZON|MAX|MOSS|NOTE|POWER|SMART|DUNE|JAVA|FUSION)|HORIZON_M|Stellar 3G|FEELING'
5523  device: 'smartphone'
5524  models:
5525    - regex: 'ECHO_HORIZON_LITE'
5526      model: 'HORIZON Lite'
5527    - regex: '(HORIZON_M|FEELING)(?:[);/ ]|$)'
5528      model: '$1'
5529    - regex: 'STELLAR 3G'
5530      model: 'STELLAR 3G'
5531    - regex: 'ECHO_SMART_4G'
5532      model: 'SMART 4G'
5533    - regex: 'ECHO[ _](HOLI|MAX|MOSS|NOTE|POWER|SMART|DUNE|JAVA|FUSION)'
5534      model: '$1'
5535
5536# ECS
5537ECS:
5538  regex: '(?:TA10CA3|TM105A?|TR10[CR]S1)(?:[);/ ]|$)'
5539  device: 'tablet'
5540  models:
5541    - regex: 'TA10CA3(?:[);/ ]|$)'
5542      model: 'TA10CA3'
5543    - regex: '(TR10[CR]S1)(?:[);/ ]|$)'
5544      model: '$1'
5545    - regex: 'TM105A(?:[);/ ]|$)'
5546      model: 'TM105A'
5547    - regex: 'TM105(?:[);/ ]|$)'
5548      model: 'TM105'
5549
5550# EE
5551EE:
5552  regex: '(?:Harrier|Hawk|Rook)[_ ]from[_ ]EE'
5553  device: 'smartphone'
5554  models:
5555    - regex: 'Rook[_ ]from[_ ]EE'
5556      model: 'Rock'
5557    - regex: '(Harrier|Hawk)[_ ]from[_ ]EE'
5558      model: '$1'
5559
5560# EKT
5561EKT:
5562  regex: 'EK-(?:5040|5336|5540|5937|6020|8680|MII|T7020)'
5563  device: 'tablet'
5564  models:
5565    - regex: 'EK-(MII|T7020)'
5566      model: 'EK-$1'
5567    - regex: 'EK-(5040|5336|5540|5937|6020|8680)'
5568      device: 'smartphone'
5569      model: 'EK-$1'
5570
5571# Eks Mobility
5572Eks Mobility:
5573  regex: 'S5LS|X4UPlus'
5574  device: 'smartphone'
5575  models:
5576    - regex: 'S5LS'
5577      model: 'S5LS'
5578    - regex: 'X4UPlus'
5579      model: 'X4U Plus'
5580
5581# Elephone
5582Elephone:
5583  regex: 'Elephone|Vowney(?: Lite)?|P6000(?!_Plus)( ?Pro| ?Plus|\+| ?02| 5.0 01)?|Soldier|(?:P8_3D|P8_Max)(?:[);/ ]|$)'
5584  device: 'smartphone'
5585  models:
5586    - regex: 'Elephone Trunk(?:[);/ ]|$)'
5587      model: 'Trunk'
5588    - regex: 'Vowney Lite(?:[);/ ]|$)'
5589      model: 'Vowney Lite'
5590    - regex: 'Vowney(?:[);/ ]|$)'
5591      model: 'Vowney'
5592    - regex: 'P6000(\+| ?Plus)(?:[);/ ]|$)'
5593      model: 'P6000 Plus'
5594    - regex: 'P6000 02(?:[);/ ]|$)'
5595      model: 'P6000 02'
5596    - regex: 'P6000 5.0 01(?:[);/ ]|$)'
5597      model: 'P6000 01'
5598    - regex: 'P6000 ?Pro(?:[);/ ]|$)'
5599      model: 'P6000 Pro'
5600    - regex: 'Soldier(?:[);/ ]|$)'
5601      model: 'Soldier'
5602    - regex: '(P8_3D|P8_Max)(?:[);/ ]|$)'
5603      model: '$1'
5604    - regex: '(?:Elephone[ _])?(P[768]000|S2)(?:[);/ ]|$)'
5605      model: '$1'
5606    - regex: 'Elephone[ _\-]([^/;]+)(?: Build|[;)])'
5607      model: '$1'
5608
5609# Element
5610Element:
5611  regex: 'AFTRS'
5612  model: 'Element 4K (2017)'
5613  device: 'tv'
5614
5615# Elenberg
5616Elenberg:
5617  regex: '(TAB(?:101|728)[ _]3G|TAB7(?:[03]8|16|40|3[30]))(?:[);/ ]|$)'
5618  device: 'tablet'
5619  model: '$1'
5620
5621
5622# Ericy
5623Ericy:
5624  regex: 'Ericy-([a-z0-9]+)'
5625  device: 'feature phone'
5626  model: '$1'
5627
5628# Essential
5629Essential:
5630  regex: 'PH-1[ )]'
5631  device: 'smartphone'
5632  models:
5633    - regex: 'PH-1[ )]'
5634      model: 'PH-1'
5635
5636# E-tel
5637E-tel:
5638  regex: 'E-tel_i250'
5639  device: 'smartphone'
5640  models:
5641    - regex: 'E-tel[_ ]i250'
5642      model: 'i250'
5643
5644# Evercoss
5645Evercoss:
5646  regex: 'EVERCOSS[ _]|(A75A\*|U50A_PLUS|M50 STAR|A75 MAX)(?:[);/ ]|$)'
5647  device: 'smartphone'
5648  models:
5649    - regex: 'A75A\*(?:[);/ ]|$)'
5650      model: 'A75A Star'
5651    - regex: 'A75 MAX*(?:[);/ ]|$)'
5652      model: 'A75 Max'
5653    - regex: 'U50A_PLUS(?:[);/ ]|$)'
5654      model: 'U50A Plus'
5655    - regex: 'M50 STAR(?:[);/ ]|$)'
5656      model: 'M50 Star'
5657    - regex: 'EVERCOSS[ _](A7[BRLZ]|A65|A74A|A5Z)(?:[);/ ]|$)'
5658      model: '$1'
5659
5660# Eurostar
5661Eurostar:
5662  regex: '(ET7002C-H12|Onyx-[13]S)(?:[);/ ]|$)'
5663  device: 'smartphone'
5664  models:
5665    - regex: 'Onyx-([13]S)(?:[);/ ]|$)'
5666      model: 'Onyx $1'
5667    - regex: 'ET7002C-H12(?:[);/ ]|$)'
5668      model: 'ePad 4S'
5669      device: 'tablet'
5670
5671# Eton
5672Eton:
5673  regex: 'Eton'
5674  device: 'smartphone'
5675  models:
5676    - regex: 'Eton[ _-]?([^;/)]+) Build'
5677      model: '$1'
5678    - regex: 'Eton[ _-]?([^;/)]+)(?:[);/ ]|$)'
5679      model: '$1'
5680
5681# Essentielb
5682Essentielb:
5683  regex: '(?:Wooze[_ ]?(?:I55?|I45|X?L)|HEYOU(?:[135]|30))(?:[);/ ]|$)'
5684  device: 'smartphone'
5685  models:
5686    - regex: 'HEYOU([135]|30)(?:[);/ ]|$)'
5687      model: 'HEYou $1'
5688    - regex: 'Wooze[_ ]?((?:I55?|I45|X?L))(?:[);/ ]|$)'
5689      model: 'Wooze $1'
5690
5691# Facebook
5692Facebook:
5693  regex: 'PortalTV'
5694  device: 'tv'
5695  model: 'Portal TV'
5696
5697# Rikomagic
5698Rikomagic:
5699  regex: 'MK(80[28][^/;]*) Build'
5700  device: 'tv'
5701  model: 'MK$1'
5702
5703# Rinno
5704Rinno:
5705  regex: 'Rinno (R(?:400|505))'
5706  device: 'smartphone'
5707  model: '$1'
5708
5709# Riviera (www.riviera.com.ec)
5710Riviera:
5711  regex: 'RIVIERA[ _]'
5712  device: 'smartphone'
5713  models:
5714    - regex: 'RIVIERA[ _](F23|U963)'
5715      model: '$1'
5716
5717# Senseit
5718Senseit:
5719  regex: 'SENSEIT[ _]?([^;/)]+)( Build|\))'
5720  device: 'smartphone'
5721  model: '$1'
5722
5723# SunWind (sunwind.ru.com)
5724SUNWIND:
5725  regex: 'SUNWIND[_ ]|SKY 9 A102 3G SS9236PG(?:[);/ ]|$)'
5726  device: 'tablet'
5727  models:
5728    - regex: 'SKY 9 A102 3G SS9236PG'
5729      model: 'Sky 9 A102 3G'
5730    - regex: 'SKY 7 E200 3G ST7230MG'
5731      model: 'Sky 7 E200 3G'
5732
5733# Sony & Sony Ericsson (combined as they are mixed up)
5734Sony:
5735  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-4]|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|[234]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-52[AB]|A002SO|NW-(A100|Z1000)Series|NSZ-GS7'
5736  device: 'smartphone'
5737  models:
5738    # SONY ERICSSON: explicit smartphone models
5739    - regex: '(?:Sony(?:Ericsson)?)?E10[ai]v?'
5740      model: 'Xperia X10 mini'
5741      brand: 'Sony Ericsson'
5742    - regex: '(?:Sony(?:Ericsson)?)?U20'
5743      model: 'Xperia X10 mini pro'
5744      brand: 'Sony Ericsson'
5745    - regex: '(?:Sony(?:Ericsson)?)?E15[ai]v?'
5746      model: 'Xperia X8'
5747      brand: 'Sony Ericsson'
5748    - regex: '(?:Sony(?:Ericsson)?)?(LT15[ai]?v?|SO-01C)'
5749      model: 'Xperia arc'
5750      brand: 'Sony Ericsson'
5751    - regex: '(?:Sony(?:Ericsson)?)?LT18[ai]v?'
5752      model: 'Xperia arc S'
5753      brand: 'Sony Ericsson'
5754    - regex: '(?:Sony(?:Ericsson)?)?MT11'
5755      model: 'Xperia neo V'
5756      brand: 'Sony Ericsson'
5757    - regex: '(?:Sony(?:Ericsson)?)?MT15'
5758      model: 'Xperia neo'
5759      brand: 'Sony Ericsson'
5760    - regex: '(?:Sony(?:Ericsson)?)?MT27'
5761      model: 'Xperia Sola'
5762      brand: 'Sony Ericsson'
5763    - regex: '(?:Sony(?:Ericsson)?)?MK16[ai]'
5764      model: 'Xperia pro'
5765      brand: 'Sony Ericsson'
5766    - regex: '(?:Sony(?:Ericsson)?)?ST15[ai]'
5767      model: 'Xperia mini'
5768      brand: 'Sony Ericsson'
5769    - regex: '(?:Sony(?:Ericsson)?)?ST17[ai]'
5770      model: 'Xperia active'
5771      brand: 'Sony Ericsson'
5772    - regex: '(?:Sony(?:Ericsson)?)?SO-02L'
5773      model: 'Xperia Ace'
5774      brand: 'Sony Ericsson'
5775    - regex: '(?:Sony(?:Ericsson)?)?ST18[ai]'
5776      model: 'Xperia ray'
5777      brand: 'Sony Ericsson'
5778    - regex: '(?:Sony(?:Ericsson)?)?SK17[ai]?'
5779      model: 'Xperia mini pro'
5780      brand: 'Sony Ericsson'
5781    - regex: '(?:Sony(?:Ericsson)?)?X10[ai]v?'
5782      model: 'Xperia X10'
5783      brand: 'Sony Ericsson'
5784    - regex: '(?:Sony(?:Ericsson)?)M1'
5785      model: 'Aspen'
5786      brand: 'Sony Ericsson'
5787    - regex: '(?:Sony(?:Ericsson)?)?R800'
5788      model: 'Xperia PLAY'
5789      brand: 'Sony Ericsson'
5790    - regex: '(?:Sony(?:Ericsson)?)?WT19|LiveWithWalkman'
5791      model: 'Live with Walkman'
5792      brand: 'Sony Ericsson'
5793
5794    # SONY ERICSSON: explicit feature phone models
5795    - regex: '(?:Sony(?:Ericsson)?)?CK13i'
5796      model: 'txt'
5797      brand: 'Sony Ericsson'
5798      device: 'feature phone'
5799    - regex: '(?:Sony(?:Ericsson)?)?CK15[ai]'
5800      model: 'txt pro'
5801      brand: 'Sony Ericsson'
5802      device: 'feature phone'
5803    - regex: '(?:Sony(?:Ericsson)?)?F100i'
5804      model: 'Jalou'
5805      brand: 'Sony Ericsson'
5806      device: 'feature phone'
5807    - regex: '(?:Sony(?:Ericsson)?)?J105'
5808      model: 'Naite'
5809      brand: 'Sony Ericsson'
5810      device: 'feature phone'
5811    - regex: '(?:Sony(?:Ericsson)?)?J108'
5812      model: 'Cedar'
5813      brand: 'Sony Ericsson'
5814      device: 'feature phone'
5815    - regex: '(?:Sony(?:Ericsson)?)?J10'
5816      model: 'Elm'
5817      brand: 'Sony Ericsson'
5818      device: 'feature phone'
5819    - regex: '(?:Sony(?:Ericsson)?)?J20'
5820      model: 'Hazel'
5821      brand: 'Sony Ericsson'
5822      device: 'feature phone'
5823    - regex: '(?:Sony(?:Ericsson)?)?U10'
5824      model: 'Aino'
5825      brand: 'Sony Ericsson'
5826      device: 'feature phone'
5827    - regex: '(?:Sony(?:Ericsson)?)?U100'
5828      model: 'Yari'
5829      brand: 'Sony Ericsson'
5830      device: 'feature phone'
5831    - regex: '(?:Sony(?:Ericsson)?)?U1'
5832      model: 'Satio'
5833      brand: 'Sony Ericsson'
5834      device: 'feature phone'
5835    - regex: '(?:Sony(?:Ericsson)?)?U5'
5836      model: 'Vivaz'
5837      brand: 'Sony Ericsson'
5838      device: 'feature phone'
5839    - regex: '(?:Sony(?:Ericsson)?)?U8'
5840      model: 'Vivaz pro'
5841      brand: 'Sony Ericsson'
5842      device: 'feature phone'
5843    - regex: '(?:Sony(?:Ericsson)?)?W20'
5844      model: 'Zylo'
5845      brand: 'Sony Ericsson'
5846      device: 'feature phone'
5847    - regex: '(?:Sony(?:Ericsson)?)?W100'
5848      model: 'Spiro'
5849      brand: 'Sony Ericsson'
5850      device: 'feature phone'
5851    - regex: '(?:Sony(?:Ericsson)?)?W150'
5852      model: 'Yendo'
5853      brand: 'Sony Ericsson'
5854      device: 'feature phone'
5855    - regex: '(?:Sony(?:Ericsson)?)?W960'
5856      model: 'W960'
5857      brand: 'Sony Ericsson'
5858      device: 'feature phone'
5859    - regex: '(?:Sony(?:Ericsson)?)?WT13'
5860      model: 'Mix Walkman'
5861      brand: 'Sony Ericsson'
5862      device: 'feature phone'
5863
5864    # SONY: explicit smartphone models
5865    - regex: 'SO-04F'
5866      model: 'Xperia A2'
5867    - regex: 'SO-02D'
5868      model: 'Xperia NX'
5869    - regex: 'G2299'
5870      model: 'Xperia R1 Plus'
5871    - regex: 'SO-04G'
5872      model: 'Xperia A4'
5873    - regex: '(?:Sony(?:Ericsson)?)?I(?:4113|31[12]3)'
5874      model: 'Xperia 10'
5875    - regex: '(?:Sony(?:Ericsson)?)?J3173(?:[);/ ]|$)'
5876      model: 'Xperia Ace'
5877    - regex: 'SO-41B(?:[);/ ]|$)'
5878      model: 'Xperia Ace II'
5879    - regex: '(?:A001SO|XQ-AU42|XQ-AU51|XQ-A[TU]52|SO-41A|SOV43)(?:[);/ ]|$)'
5880      model: 'Xperia 10 II'
5881    - regex: '(?:A10[12]SO|SO-52B|SOG04|XQ-BT52)(?:[);/ ]|$)'
5882      model: 'Xperia 10 III'
5883    - regex: 'XQ-BT44(?:[);/ ]|$)'
5884      model: 'Xperia 10 III Lite'
5885    - regex: '(?:Sony(?:Ericsson)?)?I(?:42[19]3|32[12]3)'
5886      model: 'Xperia 10 Plus'
5887    - regex: '(?:Sony(?:Ericsson)?)?I4193'
5888      model: 'Xperia 10 Dual'
5889    - regex: '(?:Sony(?:Ericsson)?)?(?:J(?:9110|81[17]0)|SOV40|SO-03L|802SO)'
5890      model: 'Xperia 1'
5891    - regex: '(?:Sony(?:Ericsson)?)?(?:J9150)'
5892      model: 'Xperia 1 Professional Edition'
5893    - regex: '(?:Sony(?:Ericsson)?)?(?:SOG01|SO-51A|XQ-AT42|XQ-AT51|SO51Aa|XQ-AT72)(?:[);/ ]|$)'
5894      model: 'Xperia 1 II'
5895    - regex: '(?:Sony(?:Ericsson)?)?(?:SO-51B|SOG03|XQ-BC[57]2)(?:[);/ ]|$)'
5896      model: 'Xperia 1 III'
5897    - regex: '(?:Sony(?:Ericsson)?)?LT22i|Xperia P'
5898      model: 'Xperia P'
5899    - regex: '(?:Sony(?:Ericsson)?)?LT25i|Xperia V'
5900      model: 'Xperia V'
5901    - regex: '(?:Sony(?:Ericsson)?)?J92[16]0'
5902      model: 'Xperia 5 Dual'
5903    - regex: '(?:Sony(?:Ericsson)?)?(?:J82[17]0|SO-01M|SOV41|901SO)'
5904      model: 'Xperia 5'
5905    - regex: '(?:Sony(?:Ericsson)?)?(?:SOG02|A002SO|XQ-AS[4567]2|SO-52A)'
5906      model: 'Xperia 5 II'
5907    - regex: '(?:Sony(?:Ericsson)?)?(?:SOV42|902SO)'
5908      model: 'Xperia 8'
5909    - regex: '(?:Sony(?:Ericsson)?)?J3273'
5910      model: 'Xperia 8 Lite'
5911    - regex: '(?:Sony(?:Ericsson)?)?LT26ii'
5912      model: 'Xperia SL'
5913    - regex: '(?:Sony(?:Ericsson)?)?LT26i|Xperia S(?:[);/ ]|$)'
5914      model: 'Xperia S'
5915    - regex: '(?:Sony(?:Ericsson)?)?SO-02C'
5916      model: 'Xperia arco'
5917    - regex: '(?:Sony(?:Ericsson)?)?SO-03D'
5918      model: 'Xperia arco HD'
5919    - regex: '(?:Sony(?:Ericsson)?)?LT26w'
5920      model: 'Xperia arco S'
5921    - regex: '(?:Sony(?:Ericsson)?)?LT28[aih]'
5922      model: 'Xperia ion'
5923    - regex: '(?:Sony(?:Ericsson)?)?LT29i|Xperia TX(?:[);/ ]|$)'
5924      model: 'Xperia TX'
5925    - regex: '(?:Sony(?:Ericsson)?)?LT30a'
5926      model: 'Xperia T LTE'
5927    - regex: '(?:Sony(?:Ericsson)?)?LT30p'
5928      model: 'Xperia T'
5929    - regex: '(?:Sony(?:Ericsson)?)?ST21[ia]2'
5930      model: 'Xperia tipo dual'
5931    - regex: '(?:Sony(?:Ericsson)?)?ST21[ia]'
5932      model: 'Xperia tipo'
5933    - regex: '(?:Sony(?:Ericsson)?)?ST23[ia]'
5934      model: 'Xperia miro'
5935    - regex: '(?:Sony(?:Ericsson)?)?ST25[ia]'
5936      model: 'Xperia U'
5937    - regex: '(?:Sony(?:Ericsson)?)?SOL22'
5938      model: 'Xperia UL'
5939    - regex: '(?:Sony(?:Ericsson)?)?ST26[ia]'
5940      model: 'Xperia J'
5941    - regex: '(?:Sony(?:Ericsson)?)?ST27[ia]'
5942      model: 'Xperia go'
5943    - regex: '(?:Sony(?:Ericsson)?)?C150[45]'
5944      model: 'Xperia E'
5945    - regex: '(?:Sony(?:Ericsson)?)?C160[45]'
5946      model: 'Xperia E Dual'
5947    - regex: '(?:Sony(?:Ericsson)?)?(?:E210[45]|E2115|E2124)'
5948      model: 'Xperia E4'
5949    - regex: '(?:Sony(?:Ericsson)?)?E20[05]3|E2006'
5950      model: 'Xperia E4G'
5951    - regex: '(?:Sony(?:Ericsson)?)?C190[45]'
5952      model: 'Xperia M'
5953    - regex: '(?:Sony(?:Ericsson)?)?C200[45]'
5954      model: 'Xperia M Dual'
5955    - regex: '(?:Sony(?:Ericsson)?)?C210[45]|S36h'
5956      model: 'Xperia L'
5957    - regex: '(?:Sony(?:Ericsson)?)?C230[45]|S39h'
5958      model: 'Xperia C'
5959    - regex: '(?:Sony(?:Ericsson)?)?C530[236]|Xperia SP(?:[);/ ]|$)'
5960      model: 'Xperia SP'
5961    - regex: '(?:Sony(?:Ericsson)?)?C550[23]'
5962      model: 'Xperia ZR'
5963    - regex: '(?:Sony(?:Ericsson)?)?C650[236]|Xperia ZL(?:[);/ ]|$)'
5964      model: 'Xperia ZL'
5965    - regex: '(?:Sony(?:Ericsson)?)?SOL25(?:[);/ ]|$)'
5966      model: 'Xperia ZL2'
5967    - regex: '(?:Sony(?:Ericsson)?)?(?:C66(?:0[236]|16)|SO-02E)'
5968      model: 'Xperia Z'
5969    - regex: '(?:Sony(?:Ericsson)?)?(?:C68(?:0[26]|[34]3)|XL39H|SOL24)|Xperia Z Ultra(?:[);/ ]|$)'
5970      device: 'phablet'
5971      model: 'Xperia Z Ultra'
5972    - regex: 'Xperia Z(?:[);/ ]|$)'
5973      model: 'Xperia Z'
5974    - regex: '(?:Sony(?:Ericsson)?)?D200[45]'
5975      model: 'Xperia E1'
5976    - regex: '(?:Sony(?:Ericsson)?)?D21(?:0[45]|14)'
5977      model: 'Xperia E1 Dual'
5978    - regex: '(?:Sony(?:Ericsson)?)?D22(?:0[236]|43)'
5979      model: 'Xperia E3'
5980    - regex: '(?:Sony(?:Ericsson)?)?D2212|E3 Dual'
5981      model: 'Xperia E3 Dual'
5982    - regex: '(?:Sony(?:Ericsson)?)?E20[34]3'
5983      model: 'Xperia E4g Dual'
5984    - regex: 'H33[12]1'
5985      model: 'Xperia L2'
5986    - regex: 'H43[13]1'
5987      model: 'Xperia L2 Dual'
5988    - regex: 'I3312'
5989      model: 'Xperia L3'
5990    - regex: 'I43[13]2'
5991      model: 'Xperia L3 Dual'
5992    - regex: 'XQ-AD5[12]'
5993      model: 'Xperia L4'
5994    - regex: '(?:Sony(?:Ericsson)?)?D2302'
5995      model: 'Xperia M2 Dual'
5996    - regex: '(?:Sony(?:Ericsson)?)?D230[356]'
5997      model: 'Xperia M2'
5998    - regex: '(?:Sony(?:Ericsson)?)?D240[36]'
5999      model: 'Xperia M2 Aqua'
6000    - regex: '(?:Sony(?:Ericsson)?)?(?:E230[36]|E23[35]3)'
6001      model: 'Xperia M4 Aqua'
6002    - regex: '(?:Sony(?:Ericsson)?)?(?:E2312|E2363)'
6003      model: 'Xperia M4 Aqua Dual'
6004    - regex: '(?:Sony(?:Ericsson)?)?E56[05][36]'
6005      model: 'Xperia M5'
6006    - regex: '(?:Sony(?:Ericsson)?)?E56[436]3'
6007      model: 'Xperia M5 Dual'
6008    - regex: '(?:Sony(?:Ericsson)?)?D2502'
6009      model: 'Xperia C3 Dual'
6010    - regex: '(?:Sony(?:Ericsson)?)?D2533'
6011      model: 'Xperia C3'
6012    - regex: '(?:Sony(?:Ericsson)?)?E53[05]3|E5306'
6013      model: 'Xperia C4'
6014    - regex: '(?:Sony(?:Ericsson)?)?E53[0346]3'
6015      model: 'Xperia C4 Dual'
6016    - regex: '(?:Sony(?:Ericsson)?)?E5506|E5553'
6017      model: 'Xperia C5 Ultra'
6018    - regex: '(?:Sony(?:Ericsson)?)?E55[36]3'
6019      model: 'Xperia C5 Ultra Dual'
6020    - regex: '(?:Sony(?:Ericsson)?)?D510[236]'
6021      model: 'Xperia T3'
6022    - regex: '(?:Sony(?:Ericsson)?)?(?:D530[36]|D5316|XM50[ht])'
6023      model: 'Xperia T2 Ultra'
6024      device: 'phablet'
6025    - regex: '(?:Sony(?:Ericsson)?)?D5322'
6026      model: 'Xperia T2 Ultra Dual'
6027      device: 'phablet'
6028    - regex: '(?:Sony(?:Ericsson)?)?D5503|Xperia Z1 Compact'
6029      model: 'Xperia Z1 Compact'
6030    - regex: '(?:Sony(?:Ericsson)?)?(?:C69(?:0[236]|16|43)|SOL23|L39H|SO-0[12]F)|Xperia Z1(?:[);/ ]|$)'
6031      model: 'Xperia Z1'
6032    - regex: '(?:Sony(?:Ericsson)?)?(?:D58[03]3|SO-02G)|Xperia Z3 Compact(?:[);/ ]|$)'
6033      model: 'Xperia Z3 Compact'
6034    - regex: 'Xperia Z2 Tablet Wifi'
6035      model: 'Xperia Z2 Tablet WiFi'
6036      device: 'tablet'
6037    - regex: 'SGP561'
6038      model: 'Xperia Z2 Tablet'
6039      device: 'tablet'
6040    - regex: '(?:Sony(?:Ericsson)?)?(?:D65(?:0[23]|43)|SO-03F)|Xperia Z2(?:[);/ ]|$)'
6041      model: 'Xperia Z2'
6042    - regex: 'D6563'
6043      model: 'Xperia Z2a'
6044    - regex: '(?:Sony(?:Ericsson)?)?(?:D66[045]3|D66[14]6|SO-01G|SOL26|401SO)|Xperia Z3(?:[);/ ]|$)'
6045      model: 'Xperia Z3'
6046    - regex: '(?:Sony(?:Ericsson)?)?(?:D6633|D6683)'
6047      model: 'Xperia Z3 Dual'
6048    - regex: '(?:Sony(?:Ericsson)?)?(?:E65[35]3)'
6049      model: 'Xperia Z3+'
6050    - regex: '(?:Sony(?:Ericsson)?)?(?:D6708)'
6051      model: 'Xperia Z3v'
6052    - regex: 'SOV31|402SO|SO-03G'
6053      model: 'Xperia Z4'
6054    - regex: 'E6508'
6055      model: 'Xperia Z4v'
6056    - regex: 'SGP771|SOT31|SO-05G'
6057      model: 'Xperia Z4'
6058      device: 'tablet'
6059    - regex: '(?:Sony(?:Ericsson)?)?(?:E58[02]3|SO-02H)'
6060      model: 'Xperia Z5 Compact'
6061    - regex: '(?:Sony(?:Ericsson)?)?(?:E66[05]3|SOV32|501SO|SO-01H)'
6062      model: 'Xperia Z5'
6063    - regex: '(?:Sony(?:Ericsson)?)?E66[38]3'
6064      model: 'Xperia Z5 Dual'
6065    - regex: '(?:Sony(?:Ericsson)?)?(?:E68[58]3|SO-03H)'
6066      model: 'Xperia Z5 Premium'
6067    - regex: '(?:Sony(?:Ericsson)?)?E6833'
6068      model: 'Xperia Z5 Premium Dual'
6069    - regex: '(?:Sony(?:Ericsson)?)?F311[135]'
6070      model: 'Xperia XA'
6071    - regex: '(?:Sony(?:Ericsson)?)?F311[26]'
6072      model: 'Xperia XA Dual'
6073    - regex: '(?:Sony(?:Ericsson)?)?F321[135]'
6074      model: 'Xperia XA Ultra'
6075    - regex: '(?:Sony(?:Ericsson)?)?F321[26]'
6076      model: 'Xperia XA Ultra Dual'
6077    - regex: '(?:Sony(?:Ericsson)?)?F833[12]|SOV34|601SO|SO-01J'
6078      model: 'Xperia XZ'
6079    - regex: '(?:Sony(?:Ericsson)?)?(?:701SO|SOV36|G834[123]|SO-01K)'
6080      model: 'Xperia XZ1'
6081    - regex: '(?:Sony(?:Ericsson)?)?G8441|SO-02K'
6082      model: 'Xperia XZ1 Compact'
6083    - regex: '(?:Sony(?:Ericsson)?)?F331[13]'
6084      model: 'Xperia E5'
6085    - regex: '(?:Sony(?:Ericsson)?)?G312[135]|G311[26]'
6086      model: 'Xperia XA1'
6087    - regex: '(?:Sony(?:Ericsson)?)?G341[26]|G342[13]'
6088      model: 'Xperia XA1 Plus'
6089    - regex: '(?:Sony(?:Ericsson)?)?G3426'
6090      model: 'Xperia XA1 Plus Dual'
6091    - regex: '(?:Sony(?:Ericsson)?)?G322[136]|G3212'
6092      model: 'Xperia XA1 Ultra'
6093    - regex: '(?:Sony(?:Ericsson)?)?H31[123]3'
6094      model: 'Xperia XA2'
6095    - regex: '(?:Sony(?:Ericsson)?)?H41[13]3'
6096      model: 'Xperia XA2 Dual'
6097    - regex: 'H44[19]3'
6098      model: 'Xperia XA2 Plus Dual'
6099    - regex: 'H4433'
6100      model: 'H4433'
6101    - regex: '(?:Sony(?:Ericsson)?)?H(?:3213|3223|4213|4233)'
6102      model: 'Xperia XA2 Ultra'
6103    - regex: '(?:Sony(?:Ericsson)?)?G823[12]|SOV35|602SO|SO-03J'
6104      model: 'Xperia XZs'
6105    - regex: '(?:Sony(?:Ericsson)?)?(?:G814[12]|G8188|SO-04[JK])'
6106      model: 'Xperia XZ Premium'
6107    - regex: '(?:Sony(?:Ericsson)?)?(?:H83[12]4|H82[17]6|SOV37|SO-03K|H8296|702SO)'
6108      model: 'Xperia XZ2'
6109    - regex: 'H8266'
6110      model: 'Xperia XZ2 Dual'
6111    - regex: 'SO-05K'
6112      model: 'Xperia XZ2 Compact'
6113    - regex: '(?:H81[16]6|SOV38)(?:[);/ ]|$)'
6114      model: 'Xperia XZ2 Premium Dual'
6115    - regex: '(?:Sony(?:Ericsson)?)?(?:H(8416|9436|9493)|SO-01L|SOV39|801SO)'
6116      model: 'Xperia XZ3'
6117    - regex: '(?:Sony(?:Ericsson)?)?G331[13]'
6118      model: 'Xperia L1'
6119    - regex: '(?:Sony(?:Ericsson)?)?G3312'
6120      model: 'Xperia L1 Dual'
6121    - regex: '(?:Sony(?:Ericsson)?)?SO-04E'
6122      model: 'Xperia A'
6123    - regex: '(?:Sony(?:Ericsson)?)?SO-04D'
6124      model: 'Xperia GX'
6125    - regex: '(?:Sony(?:Ericsson)?)?SO-05D'
6126      model: 'Xperia SX'
6127    - regex: '(?:Sony(?:Ericsson)?)?F5121'
6128      model: 'Xperia X'
6129    - regex: '(?:Sony(?:Ericsson)?)?F5122'
6130      model: 'Xperia X Dual'
6131    - regex: '(?:Sony(?:Ericsson)?)?F5321|SO-02J'
6132      model: 'Xperia X Compact'
6133    - regex: '(?:Sony(?:Ericsson)?)?(?:F8131|502SO|SOV33|SO-04H)'
6134      model: 'Xperia X Performance'
6135    - regex: '(?:Sony(?:Ericsson)?)?F8132'
6136      model: 'Xperia X Performance Dual'
6137
6138    # SONY: explicit tablet models
6139    - regex: '(?:SGP(?:311|312|321)|(Sony)?SO-03E|Tablet Z LTE)(?:[);/ ]|$)'
6140      model: 'Xperia Tablet Z'
6141      device: 'tablet'
6142    - regex: 'SGP712(?:[);/ ]|$)'
6143      model: 'Xperia Tablet Z4'
6144      device: 'tablet'
6145    - regex: 'SGP(?:511|512|521)(?:[);/ ]|$)|SO-05F'
6146      model: 'Xperia Tablet Z2'
6147      device: 'tablet'
6148    - regex: 'SGP(?:6[124]1|612)(?:[);/ ]|$)'
6149      model: 'Xperia Tablet Z3 Compact'
6150      device: 'tablet'
6151    - regex: 'SGPT(?:12|121|122|123|13|131|132|133)(?:[);/ ]|$)'
6152      model: 'Xperia Tablet S'
6153      device: 'tablet'
6154
6155    # SONY: Bravia or TV Box
6156    - regex: '(?:BRAVIA )(2K GB ATV3|4K UR2|4K GB ATV3|4K GB|4K 2015|2015)(?:[);/ ]|$)'
6157      model: 'Bravia $1'
6158      device: 'tv'
6159    - regex: '(NSZ-GS7)(?:[);/ ]|$)'
6160      model: '$1'
6161      device: 'tv'
6162
6163    - regex: 'NW-A100Series'
6164      model: 'Walkman A100'
6165      device: 'portable media player'
6166    - regex: 'NW-Z1000Series'
6167      model: 'Walkman Z1000'
6168      device: 'portable media player'
6169
6170    # general detections
6171    - regex: 'SonyBDP|SonyDBV'
6172      model: 'Blu-ray Player'
6173      device: 'tv'
6174    - regex: '(?:Sony-)?(KDL?-?[0-9a-z]+)'
6175      model: '$1'
6176      device: 'tv'
6177    - regex: 'Opera TV Store.*(?:Sony-)([0-9a-z\-_]+)'
6178      model: '$1'
6179      device: 'tv'
6180    - regex: '((?:WT|SO|ST|SK|MK)[0-9]+[a-z]*[0-9]*)(?: Build|\))'
6181      model: '$1'
6182      brand: 'Sony Ericsson'
6183    - regex: '(MT[0-9]{2}[a-z]?)(?:[);/ ]|$)'
6184      model: '$1'
6185      brand: 'Sony Ericsson'
6186    - regex: 'portalmmm/2.0 K([a-z0-9]+)'
6187      model: 'K$1'
6188      brand: 'Sony Ericsson'
6189    - regex: 'SonyEricsson ?IS11S'
6190      model: 'arco IS11S'
6191      brand: 'Sony Ericsson'
6192    - regex: 'Sony ?Ericsson?([^/;]*) Build'
6193      model: '$1'
6194      brand: 'Sony Ericsson'
6195    - regex: 'SonyEricsson([CGJKPTWZ][0-9]+[a-z]+)/'
6196      model: '$1'
6197      brand: 'Sony Ericsson'
6198      device: 'feature phone'
6199    - regex: 'Sony ?Ericsson ?([a-z0-9\-]+)'
6200      model: '$1'
6201      brand: 'Sony Ericsson'
6202    - regex: 'Sony Corporation/([^/;]*)\)'
6203      model: '$1'
6204      device: 'desktop'
6205
6206    - regex: 'Sony (Tablet[^/;]*) Build'
6207      model: '$1'
6208      device: 'tablet'
6209    - regex: '(SGP[^/;]*) Build'
6210      model: '$1'
6211      device: 'tablet'
6212    - regex: 'Xperia ([^/;]*Tablet[^/;]*) Build'
6213      model: 'Xperia $1'
6214      device: 'tablet'
6215    - regex: 'Xperia ([^;/]+) Build'
6216      model: 'Xperia $1'
6217    - regex: '(XQ-[A-Z]{2}[0-9]{2})'
6218      model: '$1'
6219    - regex: 'Sony[ -]?([^/;]*) Build'
6220      model: '$1'
6221    - regex: 'Sony[ -]?([a-z0-9\-]+)'
6222      model: '$1'
6223
6224# Ergo
6225Ergo:
6226  regex: 'ERGO|(V550[_ ]Vision|B502 Basic|B504[_ ]Unit|A502[_ ]Aurum|A503[ _]Optima|Prime B400|A551 Sky 4G|A553 Power|A555 Universe|Force F500|GoTab GBT9|GoTab Gti8|F501_Magic|V551[ _]Aura|V540_Level|V570_BIG_BEN|B506[_ ]INTRO|A503-Optima|B505_Unit_4G)'
6227  device: 'smartphone'
6228  models:
6229    - regex: 'F501_Magic'
6230      model: 'F501 Magic'
6231    - regex: 'B502 Basic'
6232      model: 'B502 Basic'
6233    - regex: 'A503-Optima'
6234      model: 'A503 Optima'
6235    - regex: 'B506[_ ]INTRO'
6236      model: 'B506 Intro'
6237    - regex: 'V550[_ ]Vision'
6238      model: 'V550 Vision'
6239    - regex: 'B504[_ ]Unit'
6240      model: 'B504 Unit'
6241    - regex: 'B505_Unit_4G'
6242      model: 'B505 Unit 4G'
6243    - regex: 'V551[ _]Aura'
6244      model: 'V551 Aura'
6245    - regex: 'V540_Level'
6246      model: 'V540 Level'
6247    - regex: 'V570_BIG_BEN'
6248      model: 'V570 Big Ben'
6249    - regex: 'Ergo F502'
6250      model: 'F502 Platinum'
6251    - regex: '(ERGO_)?A500[ _]Best'
6252      model: 'A500 Best'
6253    - regex: '(ERGO_)?A550[ _]Maxx'
6254      model: 'A550 Maxx'
6255    - regex: 'Prime B400'
6256      model: 'Prime B400'
6257    - regex: 'A502[_ ]Aurum'
6258      model: 'A502 Aurum'
6259    - regex: 'A503[ _]Optima'
6260      model: 'A503 Optima'
6261    - regex: 'A551 Sky 4G'
6262      model: 'A551 Sky 4G'
6263    - regex: 'A553 Power'
6264      model: 'A553 Power'
6265    - regex: 'A555 Universe'
6266      model: 'A555 Universe'
6267    - regex: 'ERGO[_ ]A556'
6268      model: 'A556'
6269    - regex: 'ERGO[_ ]F500'
6270      model: 'F500'
6271    - regex: 'ERGO[_ ]F501'
6272      model: 'F501'
6273    - regex: 'B500 First'
6274      model: 'B500 First'
6275    - regex: 'Force F500'
6276      model: 'Force F500'
6277    - regex: 'GoTab GBT9'
6278      model: 'GoTab GBT9'
6279      device: 'tablet'
6280    - regex: 'GoTab Gti8'
6281      model: 'GoTab GTi8'
6282      device: 'tablet'
6283    - regex: 'ERGO[_ ]Tab[ _]Crystal[ _]Lite'
6284      model: 'Tab Crystal Lite'
6285      device: 'tablet'
6286    - regex: 'ERGO[_ ]Tab[ _]Hero[ _]II'
6287      model: 'Tab Hero II'
6288      device: 'tablet'
6289    - regex: 'ERGO[_ ](B700)'
6290      model: 'Tab $1'
6291      device: 'tablet'
6292
6293    - regex: 'ERGO SmartBox SX'
6294      model: 'SmartBox SX'
6295      device: 'tv'
6296
6297# Ericsson
6298Ericsson:
6299  regex: '(?:Ericsson(?:/ )?[a-z0-9]+)|(?:R380 2.0 WAP1.1)'
6300  device: 'feature phone'
6301  models:
6302    - regex: 'Ericsson(?:/ )?([a-z0-9]+)'
6303      model: '$1'
6304    - regex: 'R380 2.0 WAP1.1'
6305      model: 'R380'
6306
6307# Energizer (www.energizeyourdevice.com)
6308Energizer:
6309  regex: 'PowerMax|HARDCASEH550S|ENERGY[_ ]?(?:[45]00|400S|S[56]00|E12|E5[02]0S?)(?:[_ ](?:LTE|EU))?'
6310  device: 'smartphone'
6311  models:
6312    - regex: 'PowerMax(P[0-9]+S?)'
6313      model: 'Power Max $1'
6314    - regex: 'ENERGY[_ ]([45]00|E520)[_ ]LTE'
6315      model: 'Energy $1 LTE'
6316    - regex: 'ENERGY[_ ]400S'
6317      model: 'Energy 400S'
6318    - regex: 'ENERGY400'
6319      model: 'Energy 400'
6320    - regex: 'ENERGY[_ ]S([56]00)'
6321      model: 'Energy S$1'
6322    - regex: 'ENERGY[_ ]?(E500S|E500|E12)'
6323      model: 'Energy $1'
6324    - regex: 'HARDCASE(H550S)'
6325      model: 'Hard Case $1'
6326
6327# Energy Sistem
6328'Energy Sistem':
6329  regex: 'ENERGY[ _-]?([^;/]+) Build|Energy Phone Pro 3'
6330  device: 'smartphone'
6331  models:
6332    - regex: 'Energy Phone Pro 3'
6333      model: 'Energy Phone Pro 3'
6334    - regex: 'ENERGY[ _-]?([^;/]+) Build'
6335      device: 'tablet'
6336      model: '$1'
6337
6338# eTouch
6339eTouch:
6340  regex: 'eTouch ?([a-z0-9]+)'
6341  device: 'smartphone'
6342  model: '$1'
6343
6344# Etuline
6345Etuline:
6346  regex: '(ETL-S(?:3520|4521|5042|5084|6022)|ETL-T(?:752G|882G|9[78]0))(?:[);/ ]|$)'
6347  device: 'smartphone'
6348  models:
6349    - regex: '(ETL-S(?:[^/); ]+))'
6350      model: '$1'
6351    - regex: '(ETL-T(?:[^/); ]+))'
6352      device: 'tablet'
6353      model: '$1'
6354
6355# Storex
6356Storex:
6357  regex: "eZee[^a-z]*Tab ?([^;/]*) Build|STOREX LinkBox"
6358  device: 'tablet'
6359  models:
6360    - regex: "eZee[^a-z]*Tab ?([^;/]*) Build"
6361      model: "eZee'Tab$1"
6362    - regex: 'STOREX LinkBox'
6363      model: 'LinkBox'
6364      device: 'tv'
6365
6366# Evertek
6367Evertek:
6368  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'
6369  device: 'smartphone'
6370  models:
6371    - regex: '(E70[25]0HD|E805[01]HD|E9054HD|E8050HG|E7914HG)'
6372      device: 'tablet'
6373      model: 'Everpad $1'
6374    - regex: '(Ever(?:Glory|Shine|Miracle|Mellow|Classic|Trendy|Fancy|Vivid|Slim|Glow|Magic|Smart|Star)[^/;]*) Build'
6375      model: '$1'
6376
6377# Evolio
6378Evolio:
6379  regex: 'Evolio|M4MAGIC'
6380  device: 'smartphone'
6381  models:
6382    - regex: 'M4MAGIC'
6383      model: 'M4 Magic'
6384    - regex: 'Evolio_M5Pro'
6385      model: 'M5 Pro'
6386    - regex: 'Evolio[ _](M6|S4 Cobalt|S5|X10|Yuppi)'
6387      model: '$1'
6388
6389# Evolveo
6390Evolveo:
6391  regex: 'EVOLVEO|StrongPhone'
6392  device: 'smartphone'
6393  models:
6394    - regex: 'EVOLVEO MultiMedia Box M4'
6395      device: 'tv'
6396      model: 'MultiMedia Box M4'
6397    - regex: 'Smart TV ([^;/]*) Build'
6398      device: 'tv'
6399      model: 'Smart TV $1'
6400    - regex: 'EVOLVEO StrongPhone G([2478])'
6401      model: 'StrongPhone G$1'
6402    - regex: '(?:EVOLVEO[ _])?StrongPhone[ _]?Q([679])(_LTE)?'
6403      model: 'StrongPhone Q$1$2'
6404    - regex: 'EVOLVEO[ _]([^;/]*) Build'
6405      model: '$1'
6406
6407# Leotec
6408Leotec:
6409  regex: '(LESPH501[14]|LESPH5003B|SUPERNOVA (?:Qi16|Qi32|i3G96[X]?|iS3G)|PULSAR QI3G)(?:[);/ ]|$)'
6410  device: 'smartphone'
6411  models:
6412    - regex: 'LESPH5011'
6413      model: 'Argon e250'
6414    - regex: 'LESPH5003B'
6415      model: 'Argon A250B'
6416    - regex: 'LESPH5014'
6417      model: 'Krypton K150'
6418    - regex: 'SUPERNOVA (Qi16|Qi32|i3G96[X]?|iS3G)'
6419      device: 'tablet'
6420      model: 'Supernova $1'
6421    - regex: 'PULSAR (QI3G)'
6422      device: 'tablet'
6423      model: 'Pulsar $1'
6424
6425# EvroMedia
6426EvroMedia:
6427  regex: 'EVROMEDIA|Playpad[ _]|PLAY_PAD_PRO_XL|3G NOTE XL'
6428  device: 'tablet'
6429  models:
6430    - regex: 'Playpad 3G GOO'
6431      model: 'Play Pad 3G Goo'
6432    - regex: 'Play Pad 3G 2Goo'
6433      model: 'Play Pad 3G 2Goo'
6434    - regex: 'Play Pad PRO'
6435      model: 'Play Pad Pro'
6436    - regex: 'PLAY_PAD_PRO_XL'
6437      model: 'Play Pad Pro XL'
6438    - regex: 'PlayPad 3GTab XL'
6439      model: 'Play Pad 3G Tab XL'
6440    - regex: '3G NOTE XL'
6441      model: 'Play Pad 3G Note XL'
6442# EKO
6443EKO:
6444  regex: 'EKO'
6445  device: 'smartphone'
6446  models:
6447    - regex: 'EKO[ _-]?([^;/)]+) Build'
6448      model: '$1'
6449    - regex: 'EKO[ _-]?([^;/)]+)(?:[);/ ]|$)'
6450      model: '$1'
6451
6452# Extrem
6453Extrem:
6454  regex: 'Rock X9+|ROCK_X11'
6455  device: 'smartphone'
6456  models:
6457    - regex: 'Rock X9+'
6458      model: 'Rock X9+'
6459    - regex: 'ROCK_X11'
6460      model: 'Rock X11'
6461
6462# Ezze
6463Ezze:
6464  regex: 'EZZE-|EZ(?!Browser)[a-z0-9]+'
6465  device: 'feature phone'
6466  models:
6467    - regex: 'EZZE-([a-z0-9]+)'
6468      model: '$1'
6469    - regex: 'EZ([a-z0-9]+)'
6470      model: 'EZ$1'
6471
6472# Ezio
6473Ezio:
6474  regex: 'EZIO-([a-z0-9]+)'
6475  device: 'feature phone'
6476  model: '$1'
6477
6478# Forstar
6479Forstar:
6480  regex: 'Amosta ?3G5'
6481  device: 'smartphone'
6482  models:
6483    - regex: 'Amosta ?3G5'
6484      model: 'Amosta 3G5'
6485
6486# Foxconn
6487Foxconn:
6488  regex: 'InFocus M[0-9]+[a-z]?'
6489  device: 'smartphone'
6490  models:
6491    - regex: 'InFocus M([0-9]+[a-z]?)'
6492      model: 'InFocus M$1'
6493
6494# Fondi
6495Fondi:
6496  regex: 'Fondi[- _]([^;/)]+)|(T702|Q008B|Q010B|Q718B|Q902|T602B|T707G|T708B|T725B|T725B1|T907B)(?:\)| Build)'
6497  device: 'smartphone'
6498  models:
6499    - regex: '(T702|T602B)'
6500      model: '$1'
6501    - regex: '(Q008B|Q010B|Q718B|Q902|T707G|T708B|T725B|T725B1|T907B)'
6502      device: 'tablet'
6503      model: '$1'
6504    - regex: 'Fondi[- _]([^;/)]+)'
6505      model: '$1'
6506
6507# Fairphone (fairphone.com)
6508Fairphone:
6509  regex: ' (FP(?:1U?|[23]))(?:[);/ ]|$)'
6510  device: 'smartphone'
6511  model: '$1'
6512
6513# Famoco
6514Famoco:
6515  regex: '(FX[123]00)'
6516  device: 'smartphone'
6517  model: '$1'
6518
6519# FiGO (figoglobal.com)
6520FiGO:
6521  regex: 'ATRIUM II F55L2|TRIO F40LT|CENTRIC S50G|EPIC F50G|Gravity X55L|Orion M50L|ULTRA M50G|M405B|VIRTUE3|F55L Build'
6522  device: 'smartphone'
6523  models:
6524    - regex: 'ATRIUM II F55L2'
6525      model: 'Atrium II'
6526    - regex: '(F55L)'
6527      model: '$1'
6528    - regex: 'TRIO F40LT'
6529      model: 'Trio F40LT'
6530    - regex: 'EPIC F50G'
6531      model: 'Epic F50G'
6532    - regex: '(Gravity X55L|Orion M50L)'
6533      model: '$1'
6534    - regex: 'ULTRA M50G'
6535      model: 'Prime'
6536    - regex: 'M405B_8GB'
6537      model: 'Virtue II 8GB'
6538    - regex: 'M405B'
6539      model: 'Virtue II'
6540    - regex: 'VIRTUE3'
6541      model: 'Virtue III'
6542    - regex: 'CENTRIC S50G'
6543      model: 'Centric S50G'
6544
6545# FNB
6546FNB:
6547  regex: 'ConeXis (A[12]|X[12])|SP5045V'
6548  device: 'smartphone'
6549  models:
6550    - regex: 'SP5045V'
6551      model: 'SP5045V'
6552    - regex: 'ConeXis A1'
6553      model: 'ConeXis A1'
6554    - regex: 'ConeXis A2'
6555      model: 'ConeXis A2'
6556    - regex: 'ConeXis X1'
6557      model: 'ConeXis X1'
6558    - regex: 'ConeXis X2'
6559      model: 'ConeXis X2'
6560
6561# Fujitsu
6562Fujitsu:
6563  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|M532|FARTM933KZ|901FJ|arrows(?:RX|M03|M0[45](?:-PREMIUM)?)|801FJ|FJL2[12]|RM02)(?:[);/ ]|$)'
6564  device: 'smartphone'
6565  models:
6566    - regex: 'F-51A(?:[);/ ]|$)'
6567      model: 'Arrows 5G F-51A'
6568    - regex: 'F-01F(?:[);/ ]|$)'
6569      model: 'Arrows NX F-01F'
6570    - regex: '(F-01[LM]|F-06F|F-03K|F-42A)(?:[);/ ]|$)'
6571      model: 'Easy Phone $1'
6572    - regex: 'F-03L(?:[);/ ]|$)'
6573      model: 'Arrows Phone F-03L'
6574    - regex: 'F-01J(?:[);/ ]|$)'
6575      model: 'Arrows NX F-01J'
6576    - regex: 'F-01K(?:[);/ ]|$)'
6577      model: 'Arrows NX F-01K'
6578    - regex: 'F-01H(?:[);/ ]|$)'
6579      model: 'Arrows Fit F-01H'
6580    - regex: 'F-02E(?:[);/ ]|$)'
6581      model: 'Arrows X F-02E'
6582    - regex: 'F-02G(?:[);/ ]|$)'
6583      model: 'Arrows NX F-02G'
6584    - regex: 'FJL21(?:[);/ ]|$)'
6585      model: 'Arrows EF FJL21'
6586    - regex: 'FJL22(?:[);/ ]|$)'
6587      model: 'Arrows Z FJL22'
6588    - regex: 'F-02H(?:[);/ ]|$)'
6589      model: 'Arrows NX F-02H'
6590    - regex: 'F-52A(?:[);/ ]|$)'
6591      model: 'Arrows NX9 F-52A'
6592    - regex: 'F-03D(?:[);/ ]|$)'
6593      model: 'Arrows Kiss F-03D'
6594    - regex: 'F-03E(?:[);/ ]|$)'
6595      model: 'Arrows Kiss F-03E'
6596    - regex: 'F-03F(?:[);/ ]|$)'
6597      model: 'Disney Mobile F-03F'
6598    - regex: 'F-03H(?:[);/ ]|$)'
6599      model: 'Arrows SV F-03H'
6600    - regex: '901FJ(?:[);/ ]|$)'
6601      model: 'Arrows J 901FJ'
6602    - regex: 'F-04E(?:[);/ ]|$)'
6603      model: 'Arrows V F-04E'
6604    - regex: 'F-04G(?:[);/ ]|$)'
6605      model: 'Arrows NX F-04G'
6606    - regex: 'F-05D(?:[);/ ]|$)'
6607      model: 'Arrows X LTE F-05D'
6608    - regex: 'F-05F(?:[);/ ]|$)'
6609      model: 'Arrows NX F-05F'
6610    - regex: 'F-05J(?:[);/ ]|$)'
6611      model: 'Arrows Be F-05J'
6612    - regex: 'F-05G(?:[);/ ]|$)'
6613      model: 'Arrows K-tai'
6614    - regex: 'F-04K(?:[);/ ]|$)'
6615      model: 'Arrows Be F-04K'
6616    - regex: 'F-02L(?:[);/ ]|$)'
6617      model: 'Arrows Be 3 F-02L'
6618    - regex: 'F-41A(?:[);/ ]|$)'
6619      model: 'Arrows Be 4 F-41A'
6620    - regex: 'F-41B(?:[);/ ]|$)'
6621      model: 'Arrows Be 4 Plus F-41B'
6622    - regex: 'F-06E(?:[);/ ]|$)'
6623      model: 'Arrows NX F-06E'
6624    - regex: 'F-07D(?:[);/ ]|$)'
6625      model: 'Arrows μ F-07D'
6626    - regex: '801FJ(?:[);/ ]|$)'
6627      model: 'Arrows U 801FJ'
6628    - regex: 'F-07E(?:[);/ ]|$)'
6629      model: 'Disney Mobile F-07E'
6630    - regex: 'F-08D(?:[);/ ]|$)'
6631      model: 'Disney Mobile F-08D'
6632    - regex: 'F-09D(?:[);/ ]|$)'
6633      model: 'ANTEPRIMA F-09D'
6634    - regex: 'F-09E(?:[);/ ]|$)'
6635      model: 'Raku-Raku Smartphone Premium F-09E'
6636    - regex: 'F-10D(?:[);/ ]|$)'
6637      model: 'Arrows X F-10D'
6638    - regex: 'F-11D(?:[);/ ]|$)'
6639      model: 'Arrows Me F-11D'
6640    - regex: 'F-12C(?:[);/ ]|$)'
6641      model: 'F-12C'
6642    - regex: '(F-04[JF])(?:[);/ ]|$)'
6643      model: '$1'
6644    - regex: 'arrowsM03(?:[);/ ]|$)'
6645      model: 'Arrows M03'
6646    - regex: 'RM02(?:[);/ ]|$)'
6647      model: 'Arrows RM02'
6648    - regex: 'arrowsRX(?:[);/ ]|$)'
6649      model: 'Arrows RX'
6650    - regex: 'arrowsM04-PREMIUM(?:[);/ ]|$)'
6651      model: 'Arrows M04 Premium'
6652    - regex: 'arrowsM(0[45])(?:[);/ ]|$)'
6653      model: 'Arrows M$1'
6654
6655    - regex: '(F-0[32]F|F-03G|F-04H|F-05E|F-02K)(?:[);/ ]|$)'
6656      model: 'Arrows Tab $1'
6657      device: 'tablet'
6658    - regex: 'FARTM933KZ'
6659      model: 'Arrows Tab M504/HA4'
6660      device: 'tablet'
6661    - regex: 'M532(?:[);/ ]|$)'
6662      model: 'Stylistic'
6663      device: 'tablet'
6664
6665# G-TiDE
6666G-TiDE:
6667  regex: 'G-TiDE'
6668  device: 'smartphone'
6669  models:
6670    - regex: 'Shining7'
6671      model: 'Shining 7'
6672    - regex: 'G-TiDE_(A1|S[34])'
6673      model: '$1'
6674    - regex: 'G-TiDE V6'
6675      model: 'V6'
6676    - regex: 'E(57|60|66|72|77)'
6677      model: '$1'
6678
6679# Gemini
6680Gemini:
6681  regex: '(GEM[0-9]+[a-z]*)'
6682  device: 'tablet'
6683  model: '$1'
6684
6685# General Mobile (www.generalmobile.com)
6686General Mobile:
6687  regex: 'GM 5 Plus|GM8 go|GM [68] d|GM 8|General Mobile 4G|GM 9 (?:Pro|Plus)|e-tab 20(?:[);/ ]|$)'
6688  device: 'smartphone'
6689  models:
6690    - regex: 'GM 5 Plus'
6691      model: 'GM 5 Plus'
6692    - regex: 'GM ([68]) d'
6693      model: 'GM $1D'
6694    - regex: 'GM 8'
6695      model: 'GM 8'
6696    - regex: 'GM8 go'
6697      model: 'GM 8 Go'
6698    - regex: 'GM 9 Pro'
6699      model: 'GM 9 Pro'
6700    - regex: 'GM 9 Plus'
6701      model: 'GM 9 Plus'
6702    - regex: 'General Mobile 4G Dual'
6703      model: '4G Dual'
6704    - regex: 'General Mobile 4G'
6705      model: '4G'
6706    - regex: 'e-tab 20(?:[);/ ]|$)'
6707      device: 'tablet'
6708      model: 'E-Tab 20'
6709
6710# Geotel
6711Geotel:
6712  regex: 'GEOTEL[ _]?'
6713  device: 'smartphone'
6714  models:
6715    - regex: 'G1'
6716      model: 'G1'
6717    - regex: 'GEOTEL[ _]?Note'
6718      model: 'Note'
6719    - regex: 'GEOTEL[ _]AMIGO'
6720      model: 'Amigo'
6721
6722# Ghia
6723Ghia:
6724  regex: 'GHIA|QS702|VECTOR10\.1'
6725  device: 'smartphone'
6726  models:
6727    - regex: 'QS702'
6728      model: 'QS702'
6729    - regex: 'GHIA_ZEUS_3G'
6730      model: 'Zeus 3G'
6731    - regex: 'GHIA_AXIS7'
6732      model: 'Axis 7'
6733      device: 'tablet'
6734    - regex: 'VECTOR10\.1'
6735      model: 'Vector 10.1"'
6736      device: 'tablet'
6737
6738# Gigabyte
6739Gigabyte:
6740  regex: 'GSmart[ _][a-z0-9 ]+(?: Build|\))|Gigabyte-[a-z0-9]+|Simba SX1|GSmart_Classic_Lite|(?<!Eagle )Classic[_ ](?:Joy|Pro)'
6741  device: 'smartphone'
6742  models:
6743    - regex: '(GSmart[ _][a-z0-9 ]+)(?: Build|[);])'
6744      model: '$1'
6745    - regex: 'Gigabyte-([a-z0-9]+)'
6746      model: '$1'
6747    - regex: '(Classic[ _](?:Joy|Pro)|GSmart_Classic_Lite)'
6748      model: '$1'
6749    - regex: 'Simba SX1'
6750      model: 'GSmart Simba SX1'
6751
6752# Gigaset
6753Gigaset:
6754  regex: 'Gigaset|(?: GS80|GS1[0189]0|GS1[89]5|GS2[89]0|GS5[357]-6|GS[23]70(?:_Plus)?)(?:[);/ ]|$)'
6755  device: 'smartphone'
6756  models:
6757    - regex: 'Gigaset QV(1030|830)'
6758      model: 'Gigaset QV$1'
6759      device: 'tablet'
6760
6761    - regex: 'G(S[23]70)[_ ]Plus(?:[);/ ]|$)'
6762      model: 'G$1 Plus'
6763    - regex: 'GS([23]70|1[0189]0|1[89]5|2[89]0|80)(?:[);/ ]|$)'
6764      model: 'GS$1'
6765    - regex: 'GS57-6'
6766      model: 'ME Pro'
6767    - regex: 'GS55-6'
6768      model: 'ME'
6769    - regex: 'GS53-6'
6770      model: 'ME Pure'
6771
6772    - regex: 'Gigaset ([^;/]+) Build'
6773      model: '$1'
6774    - regex: 'Gigaset ([^;/)]+)(?:[);/]|$)'
6775      model: '$1'
6776
6777# Ginzzu
6778Ginzzu:
6779  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)(?:[);/ ]|$)'
6780  device: 'smartphone'
6781  models:
6782    - regex: 'GINZZU[_ ]?(S40[17]0|S4710|ST60[14]0|ST6120)'
6783      model: '$1'
6784    - regex: 'GINZZU[_ ]?(GT-(?:1050|7105|70[1-4]0|7115|7210|[WX]831|X[78]70|7810|8[01]10|X853))'
6785      model: '$1'
6786      device: 'tablet'
6787    - regex: '(RS6[12]D) ULTIMATE'
6788      model: '$1 Ultimate'
6789    - 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)(?:[);/ ]|$)'
6790      model: '$1'
6791
6792# Gionee
6793Gionee:
6794  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)(?:[);/ ]|$)'
6795  device: 'smartphone'
6796  models:
6797    - regex: 'GN810(?:[);/ ]|$)'
6798      model: 'GN810'
6799      device: 'phablet'
6800    - regex: 'GN([0-9]{3,4}[a-z]?)(?:[);/ ]|$)'
6801      model: 'GN$1'
6802    - regex: '(F106L|F100A|V188S|V188|F103S)(?:[);/ ]|$)'
6803      model: '$1'
6804    - regex: 'M7 Power(?:[);/ ]|$)'
6805      model: 'M7 Power'
6806    - regex: '20190620G(?:[);/ ]|$)'
6807      model: 'M11'
6808    - regex: 'P5 mini Build'
6809      model: 'P5 mini'
6810    - regex: 'P7 Max Build'
6811      model: 'P7 Max'
6812    - regex: '(S11|F205) Lite(?:[);/ ]|$)'
6813      model: '$1 Lite'
6814    - regex: 'M6 mirror(?:[);/ ]|$)'
6815      model: 'M6 Mirror'
6816    - regex: 'F103( Pro)?( BUILD|\))'
6817      model: 'F103$1'
6818    - regex: '(?:(?:GIO-)?GIONEE[ _-])?Dream_D1(?:[);/ ]|$)'
6819      model: 'Dream D1'
6820    - regex: '(?:GIO-)?GIONEE[ _-]([a-z0-9_-]+).*Android'
6821      model: '$1'
6822    - regex: 'Android.*(?:GIO-)?GIONEE[ _-]([a-z0-9_-]+)'
6823      model: '$1'
6824    - regex: '(?:GIO-)?GIONEE[ _-]?([a-z0-9]+)'
6825      model: '$1'
6826      device: 'feature phone'
6827
6828# Grape
6829Grape:
6830  regex: '(?:Grape[ _])?GTM-5([^;/]+) Build'
6831  device: 'smartphone'
6832  model: 'GTM-5$1'
6833
6834# Vizio (vizio.com)
6835Vizio:
6836  regex: 'Vizio|(?:VAP430|VTAB1008|XR6[PM]10)(?:[);/ ]|$)'
6837  device: 'tv'
6838  models:
6839    - regex: 'VAP430'
6840      model: 'VAP430'
6841    - regex: '(VTAB1008|XR6[PM]10)'
6842      device: 'tablet'
6843      model: '$1'
6844
6845# GOCLEVER (goclever.com)
6846GOCLEVER:
6847  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'
6848  device: 'smartphone'
6849  models:
6850    - regex: 'QUANTUM_(1010N|1010M|900)'
6851      model: 'QUANTUM $1'
6852      device: 'tablet'
6853    - regex: 'INSIGNIA_(785_PRO|1010M|800M)'
6854      model: 'INSIGNIA $1'
6855      device: 'tablet'
6856    - regex: '(ORION|ARIES|ELIPSO)[_ ](71|101|102)'
6857      model: '$1 $2'
6858      device: 'tablet'
6859    - regex: 'TQ700N'
6860      model: 'QUANTUM 700N'
6861      device: 'tablet'
6862    - regex: 'QUANTUM_1010_Lite'
6863      model: 'Quantum 1010 Lite'
6864      device: 'tablet'
6865    - regex: 'QUANTUM_2_(1010|700|960)_Mobile'
6866      model: 'Quantum 2 $1 Mobile'
6867      device: 'tablet'
6868    - regex: 'QUANTUM_1010_Lite'
6869      model: 'Quantum 1010 Lite'
6870      device: 'tablet'
6871    - regex: 'QUANTUM_([235])_(5[05]0)_RUGGED'
6872      model: 'Quantum $1 $2 Rugged'
6873    - regex: 'QUANTUM_(\d+)_RUGGED_PRO'
6874      model: 'Quantum $1 Rugged Pro'
6875    - regex: 'QUANTUM[_ ]([235])_([45]00)[_ ]LITE'
6876      model: 'Quantum $1 $2 Lite'
6877    - regex: 'QUANTUM_II_500_N'
6878      model: 'Quantum 2 500 N'
6879    - regex: 'QUANTUM[_ ]([45]00)[_ ]LITE'
6880      model: 'Quantum $1 Lite'
6881    - regex: 'QUANTUM[ _]?([235])[ _]([^;/]+)(?: Build|[);])'
6882      model: 'Quantum $1 $2'
6883    - regex: '((?:QUANTUM|ARIES|INSIGNIA|ORION|ELIPSO)[ _-]?[^;/]+)(?: Build|\))'
6884      model: '$1'
6885    - regex: 'NETBOOK R103'
6886      device: 'desktop'
6887      model: 'Netbook R103'
6888    - regex: 'GOCLEVER[ _-]TAB[ _-]?([^;/]+) Build'
6889      model: 'TAB $1'
6890      device: 'tablet'
6891    - regex: 'GOCLEVER[ _-]?([^;/]+) Build'
6892      model: '$1'
6893    - regex: 'TAB ([^;/)]+) Build/GOCLEVER'
6894      model: 'TAB $1'
6895      device: 'tablet'
6896    - regex: '([^;/)]+) Build/GOCLEVER'
6897      model: '$1'
6898    - regex: 'GOCLEVER[ _-]?TAB[ _-]([^;/)]+)(?:[;/)]|$)'
6899      model: 'TAB $1'
6900      device: 'tablet'
6901    - regex: 'GOCLEVER[ _-]?([^;/)]+)(?:[;/)]|$)'
6902      model: '$1'
6903    - regex: 'LIBRA[ _]97'
6904      model: 'Libra 97'
6905      device: 'tablet'
6906
6907# GoMobile
6908GoMobile:
6909  regex: 'GO Onyx|GO[0-9]{3,4}'
6910  device: 'smartphone'
6911  models:
6912    - regex: 'GO Onyx'
6913      model: 'Go Onyx'
6914    - regex: 'GO([0-9]{3,4})'
6915      model: 'Go$1'
6916
6917# Explay
6918Explay:
6919  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})'
6920  device: 'tablet'
6921  models:
6922    - regex: 'ActiveD[ _]7.4[ _]3G'
6923      model: 'ActiveD 7.4 3G'
6924    - regex: 'Imperium([78])(?:[);/ ]|$)'
6925      model: 'Imperium $1 3G'
6926    - regex: 'ActiveD[ _]8.2[ _]3G'
6927      model: 'ActiveD 8.2 3G'
6928    - regex: 'CinemaTV[ _]3G'
6929      model: 'CinemaTV 3G'
6930    - regex: 'Infinityll'
6931      model: 'Infinity II'
6932    - regex: 'Informer[ _]([0-9]+(?:[ _]3G)?)'
6933      model: 'Informer $1'
6934    - regex: 'Surfer[ _]([0-9\.]+(?:[ _]3G)?)'
6935      model: 'Surfer $1'
6936    - regex: 'sQuad[ _]([0-9\.]+(?:[ _]3G)?)'
6937      model: 'sQuad $1'
6938    - regex: 'Onliner([1-4])'
6939      model: 'Onliner $1'
6940    - regex: 'Winner([78])'
6941      model: 'Winner $1'
6942    - regex: 'Atlant(?:[);/ ]|$)'
6943      device: 'smartphone'
6944      model: 'Atlant'
6945    - regex: 'Indigo(?:[);/ ]|$)'
6946      device: 'smartphone'
6947      model: 'Indigo'
6948    - regex: 'Pulsar(?:[);/ ]|$)'
6949      device: 'smartphone'
6950      model: 'Pulsar'
6951    - regex: 'Tornado(?:3G)?(?:[);/ ]|$)'
6952      device: 'smartphone'
6953      model: 'Tornado 3G'
6954    - regex: 'Onyx(?:[);/ ]|$)'
6955      device: 'smartphone'
6956      model: 'Onyx'
6957    - regex: 'Joy_TV(?:[);/ ]|$)'
6958      device: 'smartphone'
6959      model: 'JoyTV'
6960    - regex: '[\w]+-EXPLAY-FIN'
6961      device: 'feature phone'
6962      model: 'Fin'
6963
6964    - regex: 'Lagoon(?:[);/ ]|$)'
6965      model: 'Lagoon'
6966    - regex: 'Explay[ _-]([^;/]+)(?: Build|[;)])'
6967      model: '$1'
6968    - regex: 'RioPlay(?:[);/ ]|$)'
6969      device: 'smartphone'
6970      model: 'Rio Play'
6971    - regex: 'Leader'
6972      model: 'Leader'
6973
6974# Gol Mobile (gol-mobile.com)
6975Gol Mobile:
6976  regex: 'F10_PRIME'
6977  device: 'smartphone'
6978  models:
6979    - regex: 'F10_PRIME'
6980      model: 'F10 Prime'
6981
6982# Goly
6983Goly:
6984  regex: 'Goly[ _-]'
6985  device: 'smartphone'
6986  models:
6987    - regex: 'Goly[ _-]([^;/]+) Build'
6988      model: '$1'
6989    - regex: 'Goly[ _-]([^;/)]+)(?:[;/)]|$)'
6990      model: '$1'
6991
6992# Google
6993Google:
6994  regex: 'Nexus(?! 6P)|GoogleTV|Google Fiber|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 Manta'
6995  device: 'smartphone'
6996  models:
6997    - regex: 'Glass'
6998      model: 'Glass'
6999    - regex: 'Galaxy Nexus'
7000      model: 'Galaxy Nexus'
7001    - regex: '(Nexus (?:S|4|5X?|One))'
7002      model: '$1'
7003    - regex: '(Nexus (?:6P?))'
7004      device: 'phablet'
7005      model: '$1'
7006    - regex: '(Nexus (?:7|9|10))'
7007      device: 'tablet'
7008      model: '$1'
7009    - regex: 'AOSP on Manta'
7010      device: 'tablet'
7011      model: 'Nexus 10'
7012    # explicit tv models
7013    - regex: '(GFHD[12]00)'
7014      device: 'tv'
7015      model: 'Fiber $1'
7016    - regex: 'CrKey[^a-z0-9]'
7017      model: 'Chromecast'
7018      device: 'tv'
7019    - regex: 'Chromecast'
7020      model: 'Chromecast (2020)'
7021      device: 'tv'
7022    - regex: 'GoogleTV'
7023      device: 'tv'
7024      model: 'GoogleTV'
7025    # explicit smartphone models
7026    - regex: '(?:Pixel|sailfish)(?: Build|[)])'
7027      model: 'Pixel'
7028    - regex: 'Pixel XL'
7029      model: 'Pixel XL'
7030    - regex: 'blueline'
7031      model: 'Pixel 3'
7032    - regex: 'Pixel 3 XL'
7033      model: 'Pixel 3 XL'
7034    - regex: 'Pixel 2 XL|taimen'
7035      model: 'Pixel 2 XL'
7036    - regex: 'Pixel 3a XL'
7037      model: 'Pixel 3a XL'
7038    - regex: 'Pixel 3a'
7039      model: 'Pixel 3a'
7040    - regex: 'Pixel 4 XL'
7041      model: 'Pixel 4 XL'
7042    - regex: 'Pixel 4a \(5G\)'
7043      model: 'Pixel 4a (5G)'
7044    - regex: 'pixel ([45])a'
7045      model: 'Pixel $1a'
7046    - regex: 'G011A'
7047      model: 'Pixel 2'
7048    - regex: 'Google 2XL'
7049      model: 'Pixel 2 XL'
7050    - regex: 'Pixel 6 Pro'
7051      model: 'Pixel 6 Pro'
7052    - regex: 'pixel ([2-6])'
7053      model: 'Pixel $1'
7054
7055    - regex: 'Pixel C'
7056      device: 'tablet'
7057      model: 'Pixel C'
7058    - regex: 'Nexus Player'
7059      device: 'tv'
7060      model: 'Nexus Player'
7061
7062# Gradiente
7063Gradiente:
7064  regex: 'GRADIENTE'
7065  device: 'feature phone'
7066  models:
7067    - regex: 'GRADIENTE-([a-z0-9]+)'
7068      model: '$1'
7069    - regex: 'GRADIENTE ([a-z0-9\-]+)'
7070      model: '$1'
7071
7072# Grundig
7073Grundig:
7074  regex: 'GR?-TB[0-9]+[a-z]*|GRUNDIG|portalmmm/2\.0 G|AFTEU(?:011|014|FF014)'
7075  device: 'tv'
7076  models:
7077    - regex: '(GR?-TB[0-9]+[a-z]*)'
7078      device: 'tablet'
7079      model: '$1'
7080    - regex: 'GRUNDIG ([a-z0-9]+)'
7081      model: '$1'
7082    - regex: 'portalmmm/2\.0 G([a-z0-9]+)'
7083      model: 'G$1'
7084    - regex: 'AFTEU014'
7085      model: 'Vision 7 4K (2019)'
7086    - regex: 'AFTEUFF014'
7087      model: 'OLED 4K (2019)'
7088    - regex: 'AFTEU011'
7089      model: 'Vision 6 HD (2019)'
7090
7091# Hafury
7092Hafury:
7093  regex: 'HAFURY'
7094  device: 'smartphone'
7095  models:
7096    - regex: '(MIX|UMAX)'
7097      model: '$1'
7098
7099# Haier
7100Haier:
7101  regex: 'Haier|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|N501|I560|G553|N701)-FL|G(?:303)?-W|I(?:557)?-FL)|(?:PAD[ _](?:D71|G781|d85))|A2_Lite_NFC|HL810G'
7102  device: 'smartphone'
7103  models:
7104    - regex: 'A2_Lite_NFC'
7105      model: 'Alpha A2 Lite NFC'
7106    - regex: 'HM-N505-FL'
7107      model: 'I8'
7108    - regex: 'S5 Silk'
7109      model: 'S5 Silk'
7110    - regex: 'HM-N700-FL'
7111      model: 'L7'
7112    - regex: 'HM-N701-FL'
7113      model: 'L8'
7114    - regex: 'HM-N501-FL'
7115      model: 'L56'
7116    - regex: 'HM-I559-FL'
7117      model: 'L55s'
7118    - regex: 'HM-I560-FL'
7119      model: 'G7s'
7120    - regex: 'HM-G553-FL'
7121      model: 'G51'
7122    - regex: '(?:HM-)?(G(?:152|353|552|70[01])|G(?:303)|I(?:557))'
7123      model: '$1'
7124    - regex: '(Titan[_ ]T[135]|I6_Infinity)'
7125      model: '$1'
7126    - regex: '(?:HW-)?W(71[67]|757|86[07]|970)(?:[);/ ]|$)'
7127      model: 'W$1'
7128    - regex: 'PAD[ -_](D71|G781|d85)'
7129      device: 'tablet'
7130      model: '$1'
7131    - regex: '(HL810G)'
7132      device: 'tablet'
7133      model: '$1'
7134    - regex: 'Haier[ _\-](H[WT]-[^/;]+) Build'
7135      model: '$1'
7136    - regex: 'Haier[ _\-](H[WT]-[a-z0-9_\-]+)'
7137      model: '$1'
7138    - regex: 'Haier[ _\-](sy[0-9]+)'
7139      model: '$1'
7140    - regex: 'Haier[ _\-]([a-z0-9\-]+)'
7141      model: '$1'
7142      device: 'feature phone'
7143
7144# HannSpree
7145HannSpree:
7146  regex: '(HSG[0-9]{4})|SN97T41W|SN1AT71W\(B\)|SN70T51A|SN70T31?|T7-QC'
7147  device: 'tablet'
7148  models:
7149    - regex: '(HSG[0-9]{4})'
7150      model: '$1'
7151    - regex: 'SN1AT71W\(B\)'
7152      model: 'SN1AT71W(B)'
7153    - regex: 'SN70T31'
7154      model: 'SN70T31'
7155    - regex: 'SN70T3'
7156      model: 'SN70T3'
7157    - regex: 'SN70T51A'
7158      model: 'SN70T51A'
7159    - regex: 'SN97T41W'
7160      model: 'SN97T41W'
7161    - regex: 'T7-QC'
7162      model: 'SNAT71BUE'
7163
7164# Hasee
7165Hasee:
7166  regex: 'Hasee'
7167  device: 'smartphone'
7168  models:
7169    - regex: 'Hasee ([^;/]+) Build'
7170      model: '$1'
7171    - regex: 'Hasee ([^;/)]+)(?:[);/ ]|$)'
7172      model: '$1'
7173
7174# Hisense ()
7175Hisense:
7176  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|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)|KS907|U601S Pro'
7177  device: 'smartphone'
7178  models:
7179    # explicit tablet models
7180    - regex: 'E270BSA'
7181      device: 'tablet'
7182      model: 'Sero 7'
7183    - regex: 'M470BS[AE]'
7184      device: 'tablet'
7185      model: 'Sero 7 Pro'
7186    - regex: 'E2281'
7187      device: 'tablet'
7188      model: 'Sero 8'
7189    - regex: 'HLTE202N'
7190      model: 'A5'
7191    - regex: 'HLTE203T'
7192      model: 'A5 Pro CC'
7193    - regex: 'HLTE700T'
7194      model: 'A6'
7195    - regex: 'HLTE730T'
7196      model: 'A6L'
7197    - regex: 'HLTE221E'
7198      model: 'E Max'
7199    - regex: 'HLTE501N'
7200      model: 'V Plus'
7201    - regex: 'KS907'
7202      model: 'V3'
7203    - regex: 'HLTE223E'
7204      model: 'H30'
7205    - regex: 'I46D1G'
7206      model: 'Smartfren Andromax R'
7207    - regex: 'EG680'
7208      model: 'Smartfren Andromax Z'
7209    - regex: 'EG98'
7210      model: 'Smartfren Andromax U2'
7211    - regex: 'HLTE200T(?:[);/ ]|$)'
7212      model: 'F26'
7213    - regex: 'HLTE210T(?:[);/ ]|$)'
7214      model: 'F28'
7215    - regex: 'HLTE215T(?:[);/ ]|$)'
7216      model: 'F29'
7217    - regex: 'HLTE213T(?:[);/ ]|$)'
7218      model: 'King Kong 4'
7219    - regex: 'HLTE311T(?:[);/ ]|$)'
7220      model: 'King Kong 4 Pro'
7221    - regex: 'HLTE216[TM](?:[);/ ]|$)'
7222      model: 'King Kong 5'
7223    - regex: 'HLTE316T(?:[);/ ]|$)'
7224      model: 'King Kong 5 Pro'
7225    - regex: 'HLTE226T(?:[);/ ]|$)'
7226      model: 'King Kong 6'
7227    - regex: 'HLTE217T(?:[);/ ]|$)'
7228      model: 'F30S'
7229    - regex: 'HLTE227T(?:[);/ ]|$)'
7230      model: 'F40'
7231    - regex: 'HNR550T(?:[);/ ]|$)'
7232      model: 'F50'
7233    - regex: 'HNR551T(?:[);/ ]|$)'
7234      model: 'F50 Plus'
7235    - regex: 'HLTE310[TM](?:[);/ ]|$)'
7236      model: 'H18'
7237    - regex: 'HLTE510[TM](?:[);/ ]|$)'
7238      model: 'H20'
7239    - regex: 'HLTE103E'
7240      model: 'E20'
7241    - regex: 'HLTE500T(?:[);/ ]|$)'
7242      model: 'H11'
7243    - regex: '(?:HLTE230E|Infinity H40 Lite)(?:[);/ ]|$)'
7244      model: 'Infinity H40 Lite'
7245    - regex: 'HLTE720T(?:[);/ ]|$)'
7246      model: 'U30'
7247      device: 'phablet'
7248    - regex: 'HWCD100E(?:[);/ ]|$)'
7249      model: 'U40 Lite'
7250    - regex: '(HLTE300T|HLTE200M|HLTE212T)(?:[);/ ]|$)'
7251      model: '$1'
7252    - regex: 'HITV300C(?:[);/ ]|$)'
7253      model: 'E9'
7254    - regex: 'E260T\+(?:[);/ ]|$)'
7255      model: 'Nana'
7256    - regex: 'U601S Pro(?:[);/ ]|$)'
7257      model: 'U601S Pro'
7258    - regex: 'Infinity H50 ZOOM(?:[);/ ]|$)'
7259      model: 'Infinity H50 Zoom'
7260    - regex: '(HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\-]*)'
7261      model: '$1'
7262
7263    - regex: '(HAT4KDTV)(?:[);/ ]|$)'
7264      device: 'tv'
7265      model: '$1'
7266
7267    - regex: '(?:HS-)?Hisense (U3) 2021(?: Build|[);])'
7268      model: 'U3 (2021)'
7269    - regex: '(?:HS-)?Hisense ([^;/)]+) Pro(?: Build|[);])'
7270      model: '$1 Pro'
7271    - regex: '(?:HS-)?Hisense ([^;/)]+) Plus(?: Build|[);])'
7272      model: '$1 Plus'
7273    - regex: '(?:HS-)?Hisense ([^;/)]+)(?: Build|[);])'
7274      model: '$1'
7275    - regex: '(?:HS-)?Hisense ([^/]+)/'
7276      model: '$1'
7277
7278# Hi-Level
7279Hi-Level:
7280  regex: 'HLV-T([a-z0-9]+)'
7281  device: 'tablet'
7282  model: 'HLV-T$1'
7283
7284# Hoffmann (hoffmann-electric.com)
7285Hoffmann:
7286  regex: '(HOFFMANN|Neo[_ ]A[1379]00|X-Go|X-Play|X-Pro|X_Ultra)(?:[);/ ]|$)'
7287  device: 'smartphone'
7288  models:
7289    - regex: 'Neo[_ ](A[1379]00)'
7290      model: 'Neo $1'
7291    - regex: 'HOFFMANN[ _]X[-_ ](Prime|Twist|Max)'
7292      model: 'X $1'
7293    - regex: 'X[-_](Play|Go|Pro|Ultra)'
7294      model: 'X $1'
7295
7296# Homtom
7297Homtom:
7298  regex: 'Homtom|(?:HT[0-9]{1,2}(?: ?Pro)?|HT3_Pro)(?:[);/ ]|$)'
7299  device: 'smartphone'
7300  models:
7301    - regex: '(?:Homtom[_ ])?HT ?([0-9]{1,2})[ _]?Pro(?:[);/ ]|$)'
7302      model: 'HT$1 Pro'
7303    - regex: '(?:Homtom[_ ])?HT ?([0-9]{1,2}?)(?:[);/ ]|$)'
7304      model: 'HT$1'
7305    - regex: 'Homtom ([^;/]+) Build'
7306      model: '$1'
7307# Hosin
7308Hosin:
7309  regex: 'HOSIN[ _-]'
7310  device: 'smartphone'
7311  models:
7312    - regex: 'HOSIN[ _-]([^;/]+) Build'
7313      model: '$1'
7314    - regex: 'HOSIN[ _-]([^;/]+)(?:[;/)]|$)'
7315      model: '$1'
7316
7317# Hoozo (hoozoelectronics.com)
7318Hoozo:
7319  regex: '(?:HOOZO[_ ](MT232|MT116|MT Pad 116 LTE|X1001)|HZ0010|HZ1012)(?:[);/ ]|$)'
7320  device: 'tablet'
7321  models:
7322    - regex: 'HOOZO[_ ](MT232|MT116|MT Pad 116 LTE|X1001)(?:[);/ ]|$)'
7323      model: '$1'
7324    - regex: '(HZ0010|HZ1012)(?:[);/ ]|$)'
7325      model: '$1'
7326
7327# Minix (minix.us)
7328Minix:
7329  regex: 'NEO-(?:X8-H|U9-H|X[57]-mini|X8H-PLUS|X88-?I|X7-216A|X5-116A|X[68]|U1|Z64)(?:[);/ ]|$)'
7330  device: 'tv'
7331  models:
7332    - regex: 'NEO-X8-H(?:[);/ ]|$)'
7333      model: 'NEO X8H'
7334    - regex: 'NEO-X([57])-mini(?:[);/ ]|$)'
7335      model: 'NEO X$1 Mini'
7336    - regex: 'NEO-X8H-PLUS(?:[);/ ]|$)'
7337      model: 'NEO X8H Plus'
7338    - regex: 'NEO-X88-?I(?:[);/ ]|$)'
7339      model: 'NEO X88i'
7340    - regex: 'NEO-X7-216A(?:[);/ ]|$)'
7341      model: 'NEO X7'
7342    - regex: 'NEO-X5-116A(?:[);/ ]|$)'
7343      model: 'NEO X5'
7344    - regex: 'NEO-X([68])(?:[);/ ]|$)'
7345      model: 'NEO X$1'
7346    - regex: 'NEO-U1(?:[);/ ]|$)'
7347      model: 'NEO U1'
7348    - regex: 'NEO-Z64(?:[);/ ]|$)'
7349      model: 'NEO Z64'
7350    - regex: 'NEO-U9-H(?:[);/ ]|$)'
7351      model: 'NEO U9H'
7352
7353# Huawei
7354Huawei:
7355  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|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]|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)|YOK-AN00|NIC-LX1A|MRX-(AL09|W09|W29)|CDY-(?:[AT]N00|AN[29][05]|NX9[AB]|TN90)|GLK-(?:[AT]L00|LX1U)|JER-(?:AN20|[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-(AL[02]0|LX9N)|NTS-AL00|ART-(?:[AT]L00[xm]|L29N?|L28)|MED-(?:[AT]L00|LX9N?)|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|HWT31|Y320-U10|Y541-U02|VAT-L19|70[14]HW|60[58]HW|NOH-(?:NX9|AN0[01])|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|PPA-LX[12]|ANG-(?:AN00|LX1)|NOP-AN00|ALA-AN70|DVC-[AT]N20|302HW|Nexus 6P|DBY-W09|WKG-LX9|JSC-AN00|OCE-AN10|NZA-AL00|BRQ-A[LN]00|BZC-(?:AL|W)00|NEN-L(?:X1|22)|KOZ-AL[04]0|NTH-NX9'
7356  device: 'smartphone'
7357  models:
7358    - regex: 'POT-[TA]L00a(?:[);/ ]|$)'
7359      model: '9S'
7360    - regex: 'U9500(?:[);/ ]|$)'
7361      model: 'Ascend D1'
7362    - regex: 'Z100-UL00(?:[);/ ]|$)'
7363      model: 'Ascend D3'
7364    - regex: 'Y320-(?:U10|T00|U05)(?:[);/ ]|$)'
7365      model: 'Ascend Y320'
7366    - regex: 'Y330-U05(?:[);/ ]|$)'
7367      model: 'Ascend Y330'
7368    - regex: 'Y541-U02(?:[);/ ]|$)'
7369      model: 'Ascend Y5C'
7370    - regex: 'U8818(?:[);/ ]|$)'
7371      model: 'Ascend G300'
7372    - regex: 'G527-U081(?:[);/ ]|$)'
7373      model: 'Ascend G527'
7374    - regex: '(G620S-L0[13]|C8817D)(?:[);/ ]|$)'
7375      model: 'Ascend G620S'
7376    - regex: 'G630-U251(?:[);/ ]|$)'
7377      model: 'Ascend G630'
7378    - regex: 'G7-(?:L01|TL00)(?:[);/ ]|$)'
7379      model: 'Ascend G7'
7380    - regex: 'P7-L10(?:[);/ ]|$)'
7381      model: 'Ascend P7'
7382    - regex: 'G730-C00(?:[);/ ]|$)'
7383      model: 'Ascend G730'
7384    - regex: 'U9200(?:[);/ ]|$)'
7385      model: 'Ascend P1'
7386    - regex: 'H1711(?:[);/ ]|$)'
7387      model: 'Ascend XT2'
7388    - regex: 'Y221-U(?:[12]2|[0345]3)(?:[);/ ]|$)'
7389      model: 'Ascend Y221'
7390    - regex: 'Y550-L03(?:[);/ ]|$)'
7391      model: 'Ascend Y550'
7392    - regex: 'Y560-L01(?:[);/ ]|$)'
7393      model: 'Ascend Y560'
7394    - regex: 'ART-[AT]L00[xm](?:[);/ ]|$)'
7395      model: 'Enjoy 10'
7396    - regex: 'STK-[AT]L00(?:[);/ ]|$)'
7397      model: 'Enjoy 10 Plus'
7398    - regex: 'MED-[AT]L00(?:[);/ ]|$)'
7399      model: 'Enjoy 10E'
7400    - regex: 'AQM-[AT]L00(?:[);/ ]|$)'
7401      model: 'Enjoy 10S'
7402    - regex: 'TAG-[ACT]L00(?:[);/ ]|$)'
7403      model: 'Enjoy 5S'
7404    - regex: 'NCE-(AL[10]0|TL10)(?:[);/ ]|$)'
7405      model: 'Enjoy 6'
7406    - regex: 'DIG-(?:TL10|AL00)(?:[);/ ]|$)'
7407      model: 'Enjoy 6S'
7408    - regex: 'SLA-(?:AL00|TL10)(?:[);/ ]|$)'
7409      model: 'Enjoy 7'
7410    - regex: 'FIG-(?:[AT]L[10]0)(?:[);/ ]|$)'
7411      model: 'Enjoy 7S'
7412    - regex: '(?:TRT-AL00[A]?|TRT-TL10A)(?:[);/ ]|$)'
7413      model: 'Enjoy 7 Plus'
7414    - regex: 'LDN-(?:AL[12]0|TL[02]0)(?:[);/ ]|$)'
7415      model: 'Enjoy 8'
7416    - regex: 'FLA-AL10(?:[);/ ]|$)'
7417      model: 'Enjoy 8 Plus'
7418    - regex: 'ATU-[AT]L10(?:[);/ ]|$)'
7419      model: 'Enjoy 8e'
7420    - regex: 'MRD-[TA]L00(?:[);/ ]|$)'
7421      model: 'Enjoy 9e'
7422    - regex: 'DVC-[AT]N20(?:[);/ ]|$)'
7423      model: 'Enjoy 20 Pro'
7424    - regex: 'PPA-AL20(?:[);/ ]|$)'
7425      model: 'Enjoy 20 SE'
7426    - regex: 'U8665(?:[);/ ]|$)'
7427      model: 'Fusion 2'
7428    - regex: 'MED-LX9N?(?:[);/ ]|$)'
7429      model: 'Y6p'
7430    - regex: 'G735-L(?:03|12|23)(?:[);/ ]|$)'
7431      model: 'G Play'
7432    - regex: 'CHC-U(?:0[13]|23)(?:[);/ ]|$)'
7433      model: 'G Play Mini'
7434    - regex: '(?:Honor_|HW-)?G621-TL00M?(?:[);/ ]|$)'
7435      model: 'G621'
7436    - regex: 'DIG-L2[12](?:[);/ ]|$)'
7437      model: 'GR3 (2017)'
7438    - regex: 'KII-L21(?:[);/ ]|$)'
7439      model: 'GR5'
7440    - regex: 'BLL-L2[12](?:[);/ ]|$)'
7441      model: 'GR5 (2017)'
7442    - regex: 'RIO-L03(?:[);/ ]|$)'
7443      model: 'GX8'
7444    - regex: 'RIO-L01(?:[);/ ]|$)'
7445      model: 'G8'
7446    - regex: 'U8860(?:[);/ ]|$)'
7447      model: 'Honor'
7448    - regex: 'COL-(?:AL[01]0|TL[01]0|L29)(?:[);/ ]|$)'
7449      model: 'Honor 10'
7450    - regex: 'HRY-(?:[AT]L00[A]?|LX[12]|LX1MEB)(?:[);/ ]|$)'
7451      model: 'Honor 10 Lite'
7452    - regex: 'HRY-LX1T(?:[);/ ]|$)'
7453      model: 'Honor 10I'
7454    - regex: 'U9508(?:[);/ ]|$)'
7455      model: 'Honor 2'
7456    - regex: 'YAL-(?:L21|[AT]L00)(?:[);/ ]|$)'
7457      model: 'Honor 20'
7458    - regex: 'LRA-AL00(?:[);/ ]|$)'
7459      model: 'Honor 20 Lite'
7460    - regex: '(HRY-AL00T[a]?)(?:[);/ ]|$)'
7461      model: 'Honor 20I'
7462    - regex: 'YAL-(L41|AL10)(?:[);/ ]|$)'
7463      model: 'Honor 20 Pro'
7464    - regex: '(MAR-LX1H|YAL-AL50)(?:[);/ ]|$)'
7465      model: 'Honor 20S'
7466    - regex: 'BMH-(?:AN[12]0|TN10)(?:[);/ ]|$)'
7467      model: 'Honor 30'
7468    - regex: 'EBG-[AT]N00(?:[);/ ]|$)'
7469      model: 'Honor 30 Pro'
7470    - regex: 'EBG-AN10(?:[);/ ]|$)'
7471      model: 'Honor 30 Pro Plus'
7472    - regex: 'CDY-(?:AN9[05]|NX9A|TN90)(?:[);/ ]|$)'
7473      model: 'Honor 30S'
7474    - regex: 'LRA-LX1(?:[);/ ]|$)'
7475      model: 'Honor 30I'
7476    - regex: 'MXW-[AT]N00(?:[);/ ]|$)'
7477      model: 'Honor 30 Lite'
7478    - regex: '(?:Honor_|HW-)?H30-(?:C00|L01M?|L02|U10|T00|T10)(?:_TD)?(?:[);/ ]|$)'
7479      model: 'Honor 3C'
7480    - regex: 'Hol-U19(?:[);/ ]|$)'
7481      model: 'Honor 3C Lite'
7482    - regex: 'G750-T01(?:[);/ ]|$)'
7483      model: 'Honor 3X'
7484    - regex: '(?:Honor_|HW-)?SCL-(?:AL00|CL00|TL00H?)(?:_TD)?(?:[);/ ]|$)'
7485      model: 'Honor 4A'
7486    - regex: '(?:Honor_|HW-)?CHM-U01(?:_TD)?(?:[);/ ]|$)'
7487      model: 'Honor 4C'
7488    - regex: 'Honor 4c Pro(?:[);/ ]|$)'
7489      model: 'Honor 4C Pro'
7490    - regex: 'AQM-AL10(?:[);/ ]|$)'
7491      model: 'Honor 4T Pro'
7492    - regex: '(CHE2?-[UT]L00[HM]?|CHE1-CL[12]0|CHE2-L(?:1[12]|23)|Che1-L04|CHE-TL00)(?:[);/ ]|$)'
7493      model: 'Honor 4X'
7494    - regex: '(?:Honor_|HW-)?CUN-[AT]L00(?:[);/ ]|$)'
7495      model: 'Honor 5 Play'
7496    - regex: '(?:Honor_|HW-)?CAM-(?:AL00|TL00H|TL00)(?:_TD)?(?:[);/ ]|$)'
7497      model: 'Honor 5A'
7498    - regex: '(?:Honor_|HW-)?NEM-(?:AL10|L51|UL10|TL00)(?:[);/ ]|$)'
7499      model: 'Honor 5C'
7500    - regex: '(?:Honor_|HW-)?NEM-(?:L22|TL00H)(?:[);/ ]|$)'
7501      model: 'Honor 5C Dual SIM'
7502    - regex: '(?:Honor_|HW-)?KIW-(?:AL10|TL00H|[TC]L00|L2[1-4]|UL00)(?:_TD)?(?:[);/ ]|$)'
7503      model: 'Honor 5X'
7504    - regex: 'NTH-NX9(?:[);/ ]|$)'
7505      model: 'Honor 50 5G'
7506    - regex: '((?:Honor_|HW-)?H60-L(?:01|02|03|04|11|12)(?:_TD)?|HW-H60-J1)(?:[);/ ]|$)'
7507      model: 'Honor 6'
7508    - regex: 'MYA-TL10(?:[);/ ]|$)'
7509      model: 'Honor 6 Play'
7510    - regex: 'PE-(UL00|TL[12]0|TL00M)(?:[);/ ]|$)'
7511      model: 'Honor 6 Plus'
7512    - regex: '(?:HONOR[ _]?)?DLI-(?:AL10|L[24]2|TL20)(?:[);/ ]|$)'
7513      model: 'Honor 6A'
7514    - regex: 'DIG-L21HN(?:[);/ ]|$)'
7515      model: 'Honor 6C'
7516    - regex: 'JMM-L22(?:[);/ ]|$)'
7517      model: 'Honor 6C Pro'
7518    - regex: '(?:HONOR[ _]?)?BLN-(?:L2[124]|AL[1234]0|TL[01]0(?:[);/ ]|$))'
7519      model: 'Honor 6X'
7520    - regex: '(?:Honor[_]?|HW-)?PLK-(?:AL10|CL00|TL00|TL01H?|UL00|L01)(?:[);/ ]|$)'
7521      model: 'Honor 7'
7522    - regex: '(?:Honor_|HW-)?NEM-L21(?:[);/ ]|$)'
7523      model: 'Honor 7 Lite'
7524    - regex: 'AUM-(?:AL[20]0|L33[A]?|TL20)(?:[);/ ]|$)'
7525      model: 'Honor 7A'
7526    - regex: 'AUM-L29(?:[);/ ]|$)'
7527      model: 'Honor 7A Pro'
7528    - regex: '(?:Honor_|HW-)?(?:LND-(?:AL[34]0|L29|TL40)|AUM-L41)(?:[);/ ]|$)'
7529      model: 'Honor 7C'
7530    - regex: 'ATH-(?:[CAU]L00|TL00H)(?:[);/ ]|$)'
7531      model: 'Honor 7i'
7532    - regex: '(?:Honor_|HW-)?DUA-(?:L22|LX3)(?:[);/ ]|$)'
7533      model: 'Honor 7S'
7534    - regex: '(?:HONOR[ _]?)?BND-(?:AL[01]0|TL10|L2[14]|L31)(?:[);/ ]|$)'
7535      model: 'Honor 7X'
7536    - regex: '(?:FRD-(?:AL[01]0|L0[249]|L1[49]|DL00)|VAT-L19)(?:[);/ ]|$)'
7537      model: 'Honor 8'
7538    - regex: 'PRA-(?:AL00X|AL00|TL10)(?:[);/ ]|$)'
7539      model: 'Honor 8 Lite'
7540    - regex: 'DUK-(?:L09|TL30)(?:[);/ ]|$)'
7541      model: 'Honor 8 Pro'
7542    - regex: 'VEN-L22(?:[);/ ]|$)'
7543      model: 'Honor 8 Smart'
7544    - regex: 'JAT-L(29|X[13])(?:[);/ ]|$)'
7545      model: 'Honor 8A'
7546    - regex: 'JAT-L41(?:[);/ ]|$)'
7547      model: 'Honor 8A Pro'
7548    - regex: 'BKK-(?:AL[10]0|L21|L22|LX2|TL00)(?:[);/ ]|$)'
7549      model: 'Honor 8C'
7550    - regex: 'KSA-(LX[239]|AL00)(?:[);/ ]|$)'
7551      model: 'Honor 8S'
7552    - regex: 'JSN-L(?:2[123]|42)|JSN-[TA]L00[a]?(?:[);/ ]|$)'
7553      model: 'Honor 8X'
7554    - regex: 'ARE-(?:AL[10]0|L22(?:HN)?|TL00)(?:[);/ ]|$)'
7555      model: 'Honor 8X Max'
7556    - regex: 'STF-(?:AL[10]0|L09S?|TL10)(?:[);/ ]|$)'
7557      model: 'Honor 9'
7558    - regex: 'MOA-LX9N(?:[);/ ]|$)'
7559      model: 'Honor 9A'
7560    - regex: 'AKA-L29(?:[);/ ]|$)'
7561      model: 'Honor 9C'
7562    - regex: 'LLD-(?:AL[01]0|L[23]1|TL10)(?:[);/ ]|$)'
7563      model: 'Honor 9 Lite'
7564    - regex: 'LLD-AL[23]0(?:[);/ ]|$)'
7565      model: 'Honor 9i'
7566    - regex: 'DUA-LX9(?:[);/ ]|$)'
7567      model: 'Honor 9S'
7568    - regex: 'HLK-AL00a?(?:[);/ ]|$)'
7569      model: 'Honor 9X'
7570    - regex: 'HLK-(?:AL10|L4[12])(?:[);/ ]|$)'
7571      model: 'Honor 9X Pro'
7572    - regex: 'CAM-UL00(?:[);/ ]|$)'
7573      model: 'Honor Holly 3'
7574    - regex: 'NTS-AL00(?:[);/ ]|$)'
7575      model: 'Honor Magic'
7576    - regex: 'TNY-[AT]L00(?:[);/ ]|$)'
7577      model: 'Honor Magic 2'
7578    - regex: 'RVL-AL09(?:[);/ ]|$)'
7579      model: 'Honor Note 10'
7580    - regex: 'EDI-AL10(?:[);/ ]|$)'
7581      model: 'Honor Note 8'
7582    - regex: 'VKY-TL00(?:[);/ ]|$)'
7583      model: 'Honor P10 Plus'
7584    - regex: 'VOG-AL00(?:[);/ ]|$)'
7585      model: 'Honor P30 Pro'
7586    - regex: 'ANA-(?:[AT]N00)(?:[);/ ]|$)'
7587      model: 'Honor P40 5G'
7588    - regex: 'ANA-AL00(?:[);/ ]|$)'
7589      model: 'Honor P40 4G'
7590    - regex: 'ANA-NX9(?:[);/ ]|$)'
7591      model: 'Honor P40 Dual'
7592    - regex: 'COR-(?:AL[01]0|L29|TL10)(?:[);/ ]|$)'
7593      model: 'Honor Play'
7594    - regex: 'ASK-AL(00x|20)(?:[);/ ]|$)'
7595      model: 'Honor Play 3'
7596    - regex: 'KSA-AL10(?:[);/ ]|$)'
7597      model: 'Honor Play 3E'
7598    - regex: 'TNNH-AN00(?:[);/ ]|$)'
7599      model: 'Honor Play 4'
7600    - regex: 'CHM-[CUT]L00[HM]?(?:[);/ ]|$)'
7601      model: 'Honor Play 4C'
7602    - regex: 'AKA-AL10(?:[);/ ]|$)'
7603      model: 'Honor Play 4T'
7604    - regex: '(?:NZA-AL00?|KOZ-AL40)(?:[);/ ]|$)'
7605      model: 'Honor Play 5T' # Vitality Edition
7606    - regex: 'DUA-[TA]L00(?:[);/ ]|$)'
7607      model: 'Honor Play 7'
7608    - regex: 'KOZ-AL00(?:[);/ ]|$)'
7609      model: 'Honor Play 20'
7610    - regex: 'JAT-[AT]L00(?:[);/ ]|$)'
7611      model: 'Honor Play 8A'
7612    - regex: 'MOA-AL[02]0(?:[);/ ]|$)'
7613      model: 'Honor Play 9A'
7614    - regex: 'BKL-(?:AL00|AL20|AL30|L09|TL10)(?:[);/ ]|$)'
7615      model: 'Honor V10'
7616    - regex: 'PCT-[TA]L10(?:[);/ ]|$)'
7617      model: 'Honor V20'
7618    - regex: 'YOK-AN10(?:[);/ ]|$)'
7619      model: 'Honor V40'
7620    - regex: 'KNT-(?:AL[12]0|[TU]L10)(?:[);/ ]|$)'
7621      model: 'Honor V8'
7622    - regex: 'DUK-AL20(?:[);/ ]|$)'
7623      model: 'Honor V9'
7624    - regex: 'JMM-[AT]L[01]0(?:[);/ ]|$)'
7625      model: 'Honor V9 Play'
7626    - regex: 'BKL-L04(?:[);/ ]|$)'
7627      model: 'Honor View 10'
7628    - regex: 'PCT-L29(?:[);/ ]|$)'
7629      model: 'Honor View 20'
7630    - regex: 'OXF-AN00(?:[);/ ]|$)'
7631      model: 'Honor View 30'
7632    - regex: 'OXF-AN10(?:[);/ ]|$)'
7633      model: 'Honor View 30 Pro'
7634    - regex: '(?:Honor_|HW-)?SCL-L(0[1-4]|21|32)(?:_TD)?(?:[);/ ]|$)'
7635      model: 'Honor Y6'
7636    - regex: '(?:Honor_|HW-)?LYO-L21(?:[);/ ]|$)'
7637      model: 'Honor Y6 II Compact'
7638    - regex: 'TEL-(?:AN(?:00a?|10)|TN00)(?:[);/ ]|$)'
7639      model: 'Honor X10'
7640    - regex: 'KKG-AN00(?:[);/ ]|$)'
7641      model: 'Honor X10 Max'
7642    - regex: 'DNN-LX9(?:[);/ ]|$)'
7643      model: 'Honor X10 Lite'
7644    - regex: 'ALA-AN70(?:[);/ ]|$)'
7645      model: 'Honor V40 Lite'
7646    - regex: 'U8500(?:[);/ ]|$)'
7647      model: 'Ideos X2'
7648    - regex: 'U8510(?:[);/ ]|$)'
7649      model: 'Ideos X3'
7650    - regex: 'U8800(?:[);/ ]|$)'
7651      model: 'Ideos X5'
7652    - regex: 'MLA-AL10(?:[);/ ]|$)'
7653      model: 'Maimang 5'
7654    - regex: 'POT-AL10(?:[);/ ]|$)'
7655      model: 'Maimang 8'
7656    - regex: 'TAH-(?:N29|AN00)m(?:[);/ ]|$)'
7657      model: 'Mate XS'
7658    - regex: 'ALP-(?:[TA]L00|L[02]9)(?:[);/ ]|$)'
7659      model: 'Mate 10'
7660    - regex: 'RNE-(?:AL00|L(?:01|03|21|23))(?:[);/ ]|$)'
7661      model: 'Mate 10 Lite'
7662    - regex: 'BLA-(?:A09|L[02]9|[TA]L00)(?:[);/ ]|$)'
7663      model: 'Mate 10 Pro'
7664    - regex: 'HMA-(?:[AT]L00|L[02]9)(?:[);/ ]|$)'
7665      model: 'Mate 20'
7666    - regex: 'SNE-(?:AL00|LX[0-3])(?:[);/ ]|$)'
7667      model: 'Mate 20 Lite'
7668    - regex: 'LYA-(?:AL[01]0|L[02]9|L0C|TL00)(?:[);/ ]|$)'
7669      model: 'Mate 20 Pro'
7670    - regex: 'LYA-AL00P(?:[);/ ]|$)'
7671      model: 'Mate 20 RS'
7672    - regex: 'EVR-(?:[TA]L00|L29|N29|AN00)(?:[);/ ]|$)'
7673      model: 'Mate 20 X'
7674    - regex: 'TAS-([AT]L00|L29)(?:[);/ ]|$)'
7675      model: 'Mate 30'
7676    - regex: 'TAS-AN00(?:[);/ ]|$)'
7677      model: 'Mate 30 5G'
7678    - regex: 'LIO-AN00P(?:[);/ ]|$)'
7679      model: 'Mate 30 RS Porsche Design'
7680    - regex: 'SPN-AL00(?:[);/ ]|$)'
7681      model: 'Mate 30 Lite'
7682    - regex: 'LIO-(?:[TA]L00|L29|AN00)(?:[);/ ]|$)'
7683      model: 'Mate 30 Pro'
7684    - regex: 'LIO-N29(?:[);/ ]|$)'
7685      model: 'Mate 30 Pro 5G'
7686    - regex: 'NOH-(?:NX9|AN0[01])(?:[);/ ]|$)'
7687      model: 'Mate 40 Pro'
7688    - regex: 'NOP-AN00(?:[);/ ]|$)'
7689      model: 'Mate 40 Pro+'
7690    - regex: 'OCE-AN10(?:[);/ ]|$)'
7691      model: 'Mate 40'
7692    - regex: 'NXT-(?:AL10|L[02]9)(?:[);/ ]|$)'
7693      model: 'Mate 8'
7694    - regex: 'MHA-(?:L[02]9|[AT]L00)(?:[);/ ]|$)'
7695      model: 'Mate 9'
7696    - regex: 'BLL-L23(?:[);/ ]|$)'
7697      model: 'Mate 9 Lite'
7698    - regex: 'LON-(?:AL00(?:-PD)?|L29)(?:[);/ ]|$)'
7699      model: 'Mate 9 Pro'
7700    - regex: 'NEO-AL00(?:[);/ ]|$)'
7701      model: 'Mate RS'
7702    - regex: 'NEO-L29(?:[);/ ]|$)'
7703      model: 'Mate RS Porsche Design'
7704    - regex: 'CRR-(?:L09|UL00)(?:[);/ ]|$)'
7705      model: 'Mate S'
7706    - regex: 'BND-L34(?:[);/ ]|$)'
7707      model: 'Mate SE'
7708    - regex: '(CAZ-(?:AL[01]0|TL[12]0)|CAN-L[01][1-3])(?:[);/ ]|$)'
7709      model: 'Nova'
7710    - regex: '(?:608HW|PRA-LX[23])(?:[);/ ]|$)'
7711      model: 'Nova Lite'
7712    - regex: 'MLA-L11(?:[);/ ]|$)'
7713      model: 'Nova Plus'
7714    - regex: '(?:PIC-(?:[AT]L00|LX9)|HWV31)(?:[);/ ]|$)'
7715      model: 'Nova 2'
7716    - regex: '704HW(?:[);/ ]|$)'
7717      model: 'Nova 2 Lite'
7718    - regex: 'BAC-(?:L01|TL00)(?:[);/ ]|$)'
7719      model: 'Nova 2 Plus'
7720    - regex: 'BAC-(?:AL00|L2[12])(?:[);/ ]|$)'
7721      model: 'Nova 2 Plus Dual SIM'
7722    - regex: 'RNE-L[02]2(?:[);/ ]|$)'
7723      model: 'Nova 2I'
7724    - regex: 'HWI-[AT]L00(?:[);/ ]|$)'
7725      model: 'Nova 2S'
7726    - regex: 'PAR-(?:[AT]L00|LX[19]|LX1M|TL20)(?:[);/ ]|$)'
7727      model: 'Nova 3'
7728    - regex: 'ANE-AL00(?:[);/ ]|$)'
7729      model: 'Nova 3e'
7730    - regex: 'INE-(?:AL00|LX[12]r|LX[12]|TL00)(?:[);/ ]|$)'
7731      model: 'Nova 3i'
7732    - regex: 'VCE-(L22|[AT]L00)(?:[);/ ]|$)'
7733      model: 'Nova 4'
7734    - regex: 'MAR-AL00(?:[);/ ]|$)'
7735      model: 'Nova 4e'
7736    - regex: 'SEA-AL00(?:[);/ ]|$)'
7737      model: 'Nova 5'
7738    - regex: 'SEA-AL10(?:[);/ ]|$)'
7739      model: 'Nova 5 Pro'
7740    - regex: 'GLK-(?:[AT]L00|LX1U)(?:[);/ ]|$)'
7741      model: 'Nova 5i'
7742    - regex: 'SPN-TL00(?:[);/ ]|$)'
7743      model: 'Nova 5i Pro'
7744    - regex: 'WLZ-AL10(?:[);/ ]|$)'
7745      model: 'Nova 6'
7746    - regex: 'WLZ-AN00(?:[);/ ]|$)'
7747      model: 'Nova 6 5G'
7748    - regex: 'JNY-AL10(?:[);/ ]|$)'
7749      model: 'Nova 6 SE'
7750    - regex: 'JEF-(?:[AT]N00|AN20|NX9)(?:[);/ ]|$)'
7751      model: 'Nova 7 5G'
7752    - regex: 'JER-(?:[AT]N10|AN20)(?:[);/ ]|$)'
7753      model: 'Nova 7 Pro 5G'
7754    - regex: 'CDY-(?:[AT]N00|NX9B|AN20)(?:[);/ ]|$)'
7755      model: 'Nova 7 SE 5G'
7756    - regex: 'JNY-LX2(?:[);/ ]|$)'
7757      model: 'Nova 7i'
7758    - regex: 'ANG-LX1(?:[);/ ]|$)'
7759      model: 'Nova 8'
7760    - regex: 'NEN-L(?:X1|22)(?:[);/ ]|$)'
7761      model: 'Nova 8i'
7762    - regex: 'ANG-AN00(?:[);/ ]|$)'
7763      model: 'Nova 8 5G'
7764    - regex: 'JSC-AN00(?:[);/ ]|$)'
7765      model: 'Nova 8 SE 5G'
7766    - regex: 'BRQ-AL00(?:[);/ ]|$)'
7767      model: 'Nova 8 Pro 4G'
7768    - regex: 'BRQ-AN00(?:[);/ ]|$)'
7769      model: 'Nova 8 Pro 5G'
7770    - regex: 'DIG-L01(?:[);/ ]|$)'
7771      model: 'Nova Smart'
7772    - regex: 'WAS-AL00(?:[);/ ]|$)'
7773      model: 'Nova Youth'
7774    - regex: 'WKG-LX9(?:[);/ ]|$)'
7775      model: 'Nova Y60'
7776    - regex: 'FIG-L(?:A1|X[123])(?:[);/ ]|$)'
7777      model: 'P smart'
7778    - regex: 'POT-(?:LX(?:[13]|1T|2J|1AF)|AL00)(?:[);/ ]|$)'
7779      model: 'P smart (2019)'
7780    - regex: 'POT-LX1A(?:[);/ ]|$)'
7781      model: 'P smart (2020)'
7782    - regex: 'PPA-LX[12](?:[);/ ]|$)'
7783      model: 'P smart (2021)'
7784    - regex: 'STK-LX1(?:[);/ ]|$)'
7785      model: 'P smart Z'
7786    - regex: 'VTR-(?:L[02]9|AL00|TL00)(?:[);/ ]|$)'
7787      model: 'P10'
7788    - regex: 'WAS-(?:L(?:X1|X1A|X2|X2J|X3|03T)|TL10)(?:[);/ ]|$)'
7789      model: 'P10 Lite'
7790    - regex: 'VKY-(?:AL00|L09|L29)(?:[);/ ]|$)'
7791      model: 'P10 Plus'
7792    - regex: 'BAC-L[02]3(?:[);/ ]|$)'
7793      model: 'P10 Selfie'
7794    - regex: 'EML-(?:[TA]L00|L[02]9)(?:[);/ ]|$)'
7795      model: 'P20'
7796    - regex: '(?:ANE-(?:LX[123]|LX2J|TL00)|HWV32)(?:[);/ ]|$)'
7797      model: 'P20 Lite'
7798    - regex: '(?:CLT-(?:AL0[01]|TL0[01]|L(?:04|[02]9))|HW-01K)(?:[);/ ]|$)'
7799      model: 'P20 Pro'
7800    - regex: '(ELE-L(?:04|09|29)|ELE-[AT]L00)(?:[);/ ]|$)'
7801      model: 'P30'
7802    - regex: '(?:MAR-(?:LX(?:1[BM]|2B|[13]Am?|2J?|3BM)|TL00)|NIC-LX1A|HWV33)(?:[);/ ]|$)'
7803      model: 'P30 Lite'
7804    - regex: '(?:VOG-(?:L(?:04|09|29)|TL00|AL10)|HW-02L)(?:[);/ ]|$)'
7805      model: 'P30 Pro'
7806    - regex: 'ANA-LX4(?:[);/ ]|$)'
7807      model: 'P40'
7808    - regex: 'JNY-LX1(?:[);/ ]|$)'
7809      model: 'P40 Lite'
7810    - regex: 'ART-L29(?:[);/ ]|$)'
7811      model: 'P40 Lite E'
7812    - regex: 'ART-L29N(?:[);/ ]|$)'
7813      model: 'P40 Lite E NFC'
7814    - regex: '(?:ELS-(?:[AT]N00|NX9|N04)|NEY-NX9)(?:[);/ ]|$)'
7815      model: 'P40 Pro'
7816    - regex: 'ELS-(?:AN10|N39)(?:[);/ ]|$)'
7817      model: 'P40 Pro Plus'
7818    - regex: 'GRA-(?:L09|UL00)(?:[);/ ]|$)'
7819      model: 'P8'
7820    - regex: '(?:ALE-L(?:02|21|23)|ALE-[TUC]L00|503HW)(?:[);/ ]|$)'
7821      model: 'P8 Lite (2015)'
7822    - regex: '(?:PRA-L(?:A1|X[12])|hi6210sft)(?:[);/ ]|$)'
7823      model: 'P8 Lite (2017)'
7824    - regex: 'EVA-(?:AL[10]0|L[012]9|[TCD]L00)(?:[);/ ]|$)'
7825      model: 'P9'
7826    - regex: 'VNS-L(?:[23]1|[26]2|53|23)(?:[);/ ]|$)'
7827      model: 'P9 Lite'
7828    - regex: 'VNS-L52(?:[);/ ]|$)'
7829      model: 'P9 Lite Premium'
7830    - regex: 'SLA-L(?:02|03|22|23)(?:[);/ ]|$)'
7831      model: 'P9 Lite Mini'
7832    - regex: 'DIG-L(?:03|23)(?:[);/ ]|$)'
7833      model: 'P9 Lite Smart'
7834    - regex: 'VIE-(?:AL10|L[02]9)(?:[);/ ]|$)'
7835      model: 'P9 Plus'
7836    - regex: 'MLA-TL[01]0(?:[);/ ]|$)'
7837      model: 'G9 Plus'
7838    - regex: 'ATH-UL0[16](?:[);/ ]|$)'
7839      model: 'ShotX'
7840    - regex: 'U(8230|8661|8667)(?:[);/ ]|$)'
7841      model: 'U$1'
7842    - regex: 'ARS-([AT]L00|L22)(?:[);/ ]|$)'
7843      model: 'Y Max'
7844    - regex: 'CRO-(?:L[02]2|U00)(?:[);/ ]|$)'
7845      model: 'Y3 (2017)'
7846    - regex: 'CAG-L[02]2(?:[);/ ]|$)'
7847      model: 'Y3 (2018)'
7848    - regex: 'LUA-(U22|L2[12]|U03)(?:[);/ ]|$)'
7849      model: 'Y3II'
7850    - regex: 'MYA-(?:L(?:02|03|2[23])|U29)(?:[);/ ]|$)'
7851      model: 'Y5 (2017)'
7852    - regex: 'DRA-L(?:01|03|21|23|X3)(?:[);/ ]|$)'
7853      model: 'Y5 (2018)'
7854    - regex: 'AMN-LX[1239](?:[);/ ]|$)'
7855      model: 'Y5 (2019)'
7856    - regex: 'DRA-LX5(?:[);/ ]|$)'
7857      model: 'Y5 lite'
7858    - regex: 'DRA-LX9(?:[);/ ]|$)'
7859      model: 'Y5p'
7860    - regex: 'CRO-L[02]3(?:[);/ ]|$)'
7861      model: 'Y5 Lite (2017)'
7862    - regex: 'CAG-L[02]3(?:[);/ ]|$)'
7863      model: 'Y5 Lite (2018)'
7864    - regex: 'DRA-(?:LX2|[AT]L00)(?:[);/ ]|$)'
7865      model: 'Y5 Prime (2018)'
7866    - regex: 'MYA-L13(?:[);/ ]|$)'
7867      model: 'Y5 Pro (2017)'
7868    - regex: 'CUN-(?:L(?:0[123]|2[123]|33)|U29)(?:[);/ ]|$)'
7869      model: 'Y5II'
7870    - regex: '(?:SCC-U21|SCL-U31)(?:[);/ ]|$)'
7871      model: 'Y6'
7872    - regex: 'MYA-L11(?:[);/ ]|$)'
7873      model: 'Y6 (2016)'
7874    - regex: 'MYA-(L41|AL10)(?:[);/ ]|$)'
7875      model: 'Y6 (2017)'
7876    - regex: 'ATU-L(?:11|21|22|X3)(?:[);/ ]|$)'
7877      model: 'Y6 (2018)'
7878    - regex: 'MRD-L(?:X1[NF]?|X3)(?:[);/ ]|$)'
7879      model: 'Y6 (2019)'
7880    - regex: 'ATU-L(?:31|42)(?:[);/ ]|$)'
7881      model: 'Y6 Prime (2018)'
7882    - regex: 'TIT-(?:AL00|L01|U02)(?:[);/ ]|$)'
7883      model: 'Y6 Pro'
7884    - regex: 'MRD-LX2(?:[);/ ]|$)'
7885      model: 'Y6 Pro (2019)'
7886    - regex: 'Y625-U03(?:[);/ ]|$)'
7887      model: 'Y625'
7888    - regex: 'Y635-L0[123](?:[);/ ]|$)'
7889      model: 'Y635'
7890    - regex: 'Y635-L21(?:[);/ ]|$)'
7891      model: 'Y635 Dual SIM'
7892    - regex: 'CAM-L(?:03|21|23|32)(?:[);/ ]|$)'
7893      model: 'Y6II'
7894    - regex: 'TRT-LX[123](?:[);/ ]|$)'
7895      model: 'Y7 (2017)'
7896    - regex: 'LDN-L(?:01|X3)(?:[);/ ]|$)'
7897      model: 'Y7 (2018)'
7898    - regex: '(?:HUAWEI[ _]?)?DUB-(?:LX[13]|TL00)(?:[);/ ]|$)'
7899      model: 'Y7 (2019)'
7900    - regex: '(LDN-(?:AL00|L21)|TRT-TL10)(?:[);/ ]|$)'
7901      model: 'Y7 Prime'
7902    - regex: '(LDN-(?:LX2|TL10)|TRT-(?:L21A|L53))(?:[);/ ]|$)'
7903      model: 'Y7 Prime (2018)'
7904    - regex: 'DUB-(?:LX2|AL00)(?:[);/ ]|$)'
7905      model: 'Y7 Pro (2019)'
7906    - regex: 'DUB-AL00a(?:[);/ ]|$)'
7907      model: 'Enjoy 9'
7908    - regex: 'DUB-AL20(?:[);/ ]|$)'
7909      model: 'Y7 Pro (2019)'
7910    - regex: 'PPA-LX3(?:[);/ ]|$)'
7911      model: 'Y7a'
7912    - regex: 'ART-L28(?:[);/ ]|$)'
7913      model: 'Y7p'
7914    - regex: 'AQM-LX1(?:[);/ ]|$)'
7915      model: 'Y8p'
7916    - regex: 'FLA-(LX[123]|AL20|TL10)(?:[);/ ]|$)'
7917      model: 'Y9 (2018)'
7918    - regex: 'JKM-(?:[TA]L00[ab]?|LX[123])(?:[);/ ]|$)'
7919      model: 'Y9 (2019)'
7920    - regex: 'STK-(L2[12]|LX3)(?:[);/ ]|$)'
7921      model: 'Y9 Prime (2019)'
7922    - regex: 'FRL-L2[23](?:[);/ ]|$)'
7923      model: 'Y9a'
7924    - regex: '302HW(?:[);/ ]|$)'
7925      model: 'Stream S'
7926    - regex: 'NMO-L31(?:[);/ ]|$)'
7927      model: 'GT3'
7928    - regex: 'Nexus 6P(?:[);/ ]|$)'
7929      device: 'phablet'
7930      model: 'Nexus 6P'
7931
7932    - regex: 'HWT31(?:[);/ ]|$)'
7933      model: 'Qua Tab 02 10.1"'
7934      device: 'tablet'
7935    - regex: 'HDN-[LW]09(?:[);/ ]|$)'
7936      model: 'Honor Water Play 10.1'
7937      device: 'tablet'
7938    - regex: 'BAH3-(?:AL00|[LW]09)(?:[);/ ]|$)'
7939      model: 'MatePad 10.4"'
7940      device: 'tablet'
7941    - regex: 'BAH3-W59(?:[);/ ]|$)'
7942      model: 'MatePad 10.4" WiFi'
7943      device: 'tablet'
7944    - regex: 'BAH3-AN10(?:[);/ ]|$)'
7945      model: 'MatePad 10.4" 5G'
7946      device: 'tablet'
7947    - regex: 'BAH3-AN10(?:[);/ ]|$)'
7948      model: 'MatePad 10.4" 5G'
7949      device: 'tablet'
7950    - regex: 'DBY-W09(?:[);/ ]|$)'
7951      model: 'MatePad 11 WiFi'
7952      device: 'tablet'
7953    - regex: 'AGS3-(L09|AL00)(?:[);/ ]|$)'
7954      model: 'MatePad T10s'
7955      device: 'tablet'
7956    - regex: 'AGS3-W09(?:[);/ ]|$)'
7957      model: 'MatePad T10s WiFi'
7958      device: 'tablet'
7959    - regex: 'HDL-(?:W09|AL09)(?:[);/ ]|$)'
7960      model: 'Honor Water Play 8.0'
7961      device: 'tablet'
7962    - regex: 'JDN-(?:AL00|W09)(?:[);/ ]|$)'
7963      model: 'Honor Pad 2'
7964      device: 'tablet'
7965    - regex: 'KRJ-W09(?:[);/ ]|$)'
7966      model: 'Honor Pad V6'
7967      device: 'tablet'
7968    - regex: 'AGR-W09HN(?:[);/ ]|$)'
7969      device: 'tablet'
7970      model: 'Honor Pad X6'
7971    - regex: 'AGS3-AL09HN(?:[);/ ]|$)'
7972      device: 'tablet'
7973      model: 'Honor Pad 6 10.1"'
7974    - regex: 'AGS3-W09HN(?:[);/ ]|$)'
7975      device: 'tablet'
7976      model: 'Honor Pad 6 10.1" WiFi'
7977    - regex: 'MON-(W|AL)19(?:[);/ ]|$)'
7978      device: 'tablet'
7979      model: 'MatePad C5 8'
7980    - regex: 'BZA-W00(?:[);/ ]|$)'
7981      device: 'tablet'
7982      model: 'C3 9.6'
7983    - regex: 'BZC-AL00(?:[);/ ]|$)'
7984      device: 'tablet'
7985      model: 'C3 9.7" (2020)'
7986    - regex: 'BZC-W00(?:[);/ ]|$)'
7987      device: 'tablet'
7988      model: 'C3 9.7" (2020) WiFi'
7989    - regex: 'M2-801L(?:[);/ ]|$)'
7990      device: 'tablet'
7991      model: 'MediaPad M2 8.0"'
7992    - regex: 'MRX-(AL09|W09|W29)(?:[);/ ]|$)'
7993      device: 'tablet'
7994      model: 'MatePad Pro'
7995    - regex: 'CMR-(?:AL[01]9|W09)(?:[);/ ]|$)'
7996      device: 'tablet'
7997      model: 'MediaPad M5 10.8'
7998    - regex: 'CMR-W19(?:[);/ ]|$)'
7999      device: 'tablet'
8000      model: 'MediaPad M5 Pro 10.8'
8001    - regex: 'SCM-AL09(?:[);/ ]|$)'
8002      device: 'tablet'
8003      model: 'MediaPad M5 Pro'
8004    - regex: 'GEM-70[1-3]L(?:[);/ ]|$)'
8005      device: 'tablet'
8006      model: 'MediaPad X2'
8007    - regex: '(?:JDN2-(:?[WL]09|AL[50]0)|BAH2-(?:AL[01]0|L09|W[01]9))(?:[);/ ]|$)'
8008      device: 'tablet'
8009      model: 'MediaPad M5 Lite'  #8.4
8010    - regex: 'SHT-(?:AL|W)09(?:[);/ ]|$)'
8011      device: 'tablet'
8012      model: 'MediaPad M5 8.4'
8013    - regex: 'VRD-(?:(AL|W)09|AL10|W10)(?:[);/ ]|$)'
8014      device: 'tablet'
8015      model: 'MediaPad M6 8.4'
8016    - regex: 'SCM-W09(?:[);/ ]|$)'
8017      device: 'tablet'
8018      model: 'MediaPad M6 10'
8019    - regex: 'BTV-W09(?:[);/ ]|$)'
8020      device: 'tablet'
8021      model: 'MediaPad M3 8'
8022    - regex: '(BAH-W09|CPN-(?:L|W)09|CPN-AL00|701HW)(?:[);/ ]|$)'
8023      device: 'tablet'
8024      model: 'MediaPad M3 Lite'
8025    - regex: 'BAH-(?:L09|AL00)(?:[);/ ]|$)'
8026      device: 'tablet'
8027      model: 'MediaPad M3 Lite 10'
8028    - regex: 'BTV-DL09'
8029      device: 'tablet'
8030      model: 'MediaPad M3'
8031    - regex: '(AGS2-AL00|JDN2-W09)HN(?:[);/ ]|$)'
8032      device: 'tablet'
8033      model: 'Honor Tab 5'
8034    - regex: 'AGS2-(?:[LW]09|W09HN|W19|L03)(?:[);/ ]|$)'
8035      device: 'tablet'
8036      model: 'MediaPad T5 10'
8037    - regex: 'KOB2-[LW]09(?:[);/ ]|$)'
8038      device: 'tablet'
8039      model: 'MediaPad T 8.0"'
8040    - regex: 'AGR-[LW]09(?:[);/ ]|$)'
8041      device: 'tablet'
8042      model: 'MediaPad T 10'
8043    - regex: 'AGS-(?:L0[39]|W09)(?:[);/ ]|$)'
8044      device: 'tablet'
8045      model: 'MediaPad T3 10'
8046    - regex: '(KOB-(?:L|W)09|BZK-[LW]00)(?:[);/ ]|$)'
8047      device: 'tablet'
8048      model: 'MediaPad T3 8'
8049    - regex: 'BG2-(?:U0[13]|W09)(?:[);/ ]|$)'
8050      device: 'tablet'
8051      model: 'MediaPad T3 7'
8052    - regex: 'BGO-L03(?:[);/ ]|$)'
8053      device: 'tablet'
8054      model: 'MediaPad T2 7.0'
8055    - regex: '(?:BGO-DL09|PLE-70[13]L)(?:[);/ ]|$)'
8056      device: 'tablet'
8057      model: 'MediaPad T2 7.0 Pro'
8058    - regex: 'JDN-L01(?:[);/ ]|$)'
8059      device: 'tablet'
8060      model: 'MediaPad T2 8.0 Pro'
8061    - regex: '(?:FDR-(A01[LW]|A03L)|605HW)(?:[);/ ]|$)'
8062      device: 'tablet'
8063      model: 'MediaPad T2 10.0" Pro'
8064    - regex: 'T1-(?:A21[LW]|A23L)(?:[);/ ]|$)'
8065      device: 'tablet'
8066      model: 'MediaPad T1 10'
8067    - regex: 'T1-701u(?:[);/ ]|$)'
8068      device: 'tablet'
8069      model: 'MediaPad T1 7'
8070    - regex: '(?:T1-82(?:3L|1W)|MediaPad T1 8.0)(?:[);/ ]|$)'
8071      device: 'tablet'
8072      model: 'MediaPad T1 8'
8073    - regex: 'AGS2-AL00(?:[);/ ]|$)'
8074      device: 'tablet'
8075      model: 'Enjoy Tablet 10.1'
8076    - regex: 'AGS3-W00[DE](?:[);/ ]|$)'
8077      device: 'tablet'
8078      model: 'Enjoy Tablet 2 10.1" WiFi'
8079    - regex: 'BZT-(W09|AL[01]0)(?:[);/ ]|$)'
8080      device: 'tablet'
8081      model: 'MediaPad C5 10.1'
8082    - regex: '(?:d-01J|d-02[HK])(?:[);/ ]|$)'
8083      device: 'tablet'
8084      model: 'D Tab Compact'
8085    - regex: '(d-01K)(?:[);/ ]|$)'
8086      device: 'tablet'
8087      model: 'dtab d-01K'
8088
8089
8090      # smart watch regex
8091    - regex: 'LEO-BX9(?:[);/ ]|$)'
8092      device: 'wearable'
8093      model: 'Smart Watch 2'
8094
8095      # common regex
8096    - regex: '(MediaPad[^/;]*) Build'
8097      device: 'tablet'
8098      model: '$1'
8099    - regex: 'Ideos([^;/]*) Build'
8100      model: 'Ideos$1'
8101    - regex: '(?:HUAWEI )?MT([0-9]+)'
8102      device: 'phablet'
8103      model: 'Ascend Mate $1'
8104    - regex: 'Huawei[ _\-]?([^/;]*) Build'
8105      model: '$1'
8106    - regex: '(?:HW-)?Huawei(?!Browser)(?:/1\.0/0?(?:Huawei))?[_\- /]?([a-z0-9\-_]+)'
8107      model: '$1'
8108    - regex: 'Huawei; ([a-z0-9 \-]+)'
8109      model: '$1'
8110
8111# Hyundai
8112Hyundai:
8113  regex: 'Hyundai|Ultra (?:Active|Air|Charm|Dream|Energy|Latitude|Link|Live|Shadow|Shine|Storm|Style|Sync|Trend|Vision|Wave)|Ultra_Vision_Plus|G(24027|2552[34])K|W25042L|HP554O|Seoul S8|L503F Plus|HT0701L16|HT0704K08|HT1004L16|HT1004LI16|Koral_8W2|Eternity[_ ]G25|HYMI 5S Plus'
8114  device: 'smartphone'
8115  models:
8116    - regex: 'Ultra[_ ]Vision[_ ]Plus'
8117      model: 'Ultra Vision Plus'
8118    - regex: 'Ultra (Active|Air|Charm|Dream|Energy Lite|Energy Plus|Energy|Latitude|Link|Live II|Live|Shadow|Shine|Storm|Style|Sync|Trend|Vision|Wave)'
8119      model: 'Ultra $1'
8120    - regex: 'Seoul S8'
8121      model: 'Seoul S8'
8122    - regex: 'G25523K'
8123      model: 'Eternity G23'
8124    - regex: 'Eternity[_ ]G25'
8125      model: 'Eternity G25'
8126    - regex: 'G25524K'
8127      model: 'Eternity G24'
8128    - regex: 'G24027K'
8129      model: 'Eternity G27'
8130    - regex: 'W25042L'
8131      model: 'Eternity W42'
8132    - regex: 'HP554O'
8133      model: 'HP554O'
8134    - regex: 'L503F Plus'
8135      model: 'L503F Plus'
8136    - regex: 'HYMI 5S Plus'
8137      model: 'Hymi 5S Plus'
8138    - regex: '(?:Hyundai_)?(Eternity_(?:G57L?|G60))'
8139      model: '$1'
8140
8141    # explicit tables models
8142    - regex: 'HT0701L16'
8143      model: 'Koral 7XL'
8144      device: 'tablet'
8145    - regex: 'HT1004LI16'
8146      model: 'Koral 10XL'
8147      device: 'tablet'
8148    - regex: 'Koral_8W2'
8149      model: 'Koral 8W2'
8150      device: 'tablet'
8151    - regex: 'HT1004L16'
8152      model: 'Koral 10XL'
8153      device: 'tablet'
8154    - regex: 'HT0704K08'
8155      model: 'Koral 7M4'
8156      device: 'tablet'
8157    - regex: 'Hyundai ([^;/]+) Build'
8158      model: '$1'
8159      device: 'tablet'
8160    - regex: 'Hyundai[ _\-]?([a-z0-9_-]+)'
8161      model: '$1'
8162      device: 'tablet'
8163
8164#i-Joy
8165'i-Joy':
8166  regex: 'i-Joy|i-Call|(?:Neon[79]|Sygnus|Deox|Elektra (?:M|L|XL|XXL))(?:[);/ ]|$)'
8167  device: 'smartphone'
8168  models:
8169    # explicit smartphone models
8170    - regex: 'Elektra M(?:[);/ ]|$)'
8171      model: 'Elektra M'
8172    - regex: 'Elektra L(?:[);/ ]|$)'
8173      model: 'Elektra L'
8174    - regex: 'Elektra XL(?:[);/ ]|$)'
8175      model: 'Elektra XL'
8176    - regex: 'Elektra XXL(?:[);/ ]|$)'
8177      model: 'Elektra XXL'
8178      device: 'phablet'
8179
8180    # explicit tablet models
8181    - regex: 'Neon([79])(?:[);/ ]|$)'
8182      model: 'Neon $1'
8183      device: 'tablet'
8184    - regex: 'Sygnus(?:[);/ ]|$)'
8185      model: 'Sygnus'
8186      device: 'tablet'
8187    - regex: 'Deox(?:[);/ ]|$)'
8188      model: 'Deox'
8189      device: 'tablet'
8190
8191    - regex: 'i-Call ([^;/]+) Build'
8192      model: 'i-Call $1'
8193    - regex: 'i-Joy ([^;/]+) Build'
8194      model: '$1'
8195
8196# iBall (iball.co.in)
8197iBall:
8198  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)(?:[);/ ]|$)'
8199  device: 'tablet'
8200  models:
8201    - regex: 'Andi Wink 4G'
8202      device: 'smartphone'
8203      model: 'Andi Wink 4G'
8204    - regex: 'Andi 5G Blink 4G'
8205      device: 'smartphone'
8206      model: 'Andi 5G Blink 4G'
8207    - regex: '(Snap[_ ]4G2|Avid|Twinkle_i5|Gorgeo[_ ]4GL|Blaze_V4|Wondro 10|Q27 4G|Brisk 4G2|Co-Mate)(?:[);/ ]|$)'
8208      model: '$1'
8209    - regex: '6351-Q400i(?:[);/ ]|$)'
8210      model: 'Slide'
8211    - regex: 'iT-KSA0003(?:[);/ ]|$)'
8212      model: 'iTAB BizniZ'
8213    - regex: 'iT-KSA0066(?:[);/ ]|$)'
8214      model: 'iTAB BizniZ Mini'
8215    - regex: 'iT-KSA0012(?:[);/ ]|$)'
8216      model: 'iTAB Moviez Pro'
8217    - regex: 'iBall[ _]([^;/)]+)(?:[ _]Build|\))'
8218      model: '$1'
8219
8220# iRola
8221iRola:
8222  regex: 'iRola ([^/;]+) Build|(DX758|DX752|DX752|DX758[ _]?Pro) Build'
8223  device: 'tablet'
8224  models:
8225    - regex: 'DX758[ _]?Pro'
8226      model: 'DX758 Pro'
8227    - regex: '(DX758|DX752)'
8228      model: '$1'
8229    - regex: 'iRola ([^/;]+) Build'
8230      model: '$1'
8231
8232# iRulu
8233iRulu:
8234  regex: 'iRULU[ _-](X11|V[34]|U2|AL101)(?:[);/ ]|$)'
8235  device: 'tablet'
8236  models:
8237    - regex: 'iRULU[ _-](X11|V[34]|AL101)(?:[);/ ]|$)'
8238      model: '$1'
8239    - regex: 'iRULU[ _](U2)(?:[);/ ]|$)'
8240      device: 'smartphone'
8241      model: '$1'
8242
8243# Irbis
8244Irbis:
8245  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-4679]|2[021567]|3[025-8]|4[257]|5[23457]|6[12]|72|7[17]|8[1]|9[147])|8(?:[34]1|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))(?:[);/ ]|$)'
8246  device: 'tablet'
8247  models:
8248    - regex: '(TZ(?:[0-9]+)|TZ(?:one|art|HIT|81L))(?:[);/ ]|$)'
8249      model: '$1'
8250    - regex: '(SP[0-9]+)(?:[);/ ]|$)'
8251      device: 'smartphone'
8252      model: '$1'
8253
8254iBerry:
8255  regex: 'AUXUS ([^/;]+) Build'
8256  device: 'smartphone'
8257  models:
8258    - regex: 'AUXUS (Core[^/;]+) Build'
8259      device: 'tablet'
8260      model: '$1'
8261    - regex: 'AUXUS ([^/;]+) Build'
8262      model: '$1'
8263
8264# iHunt
8265iHunt:
8266  regex: 'iHunt|One_ Love_|TITAN_P11000_PRO|Like_(3|4U|3_Pro)|X300 Elite|S10_Tank_2019|S60_Discovery_2019|AlienXLite2020|Alien X Lite|Alien_X|S[23]0 Ultra ApeX 2021|S21 Ultra 4G 2021|Like 11 Panda Pro'
8267  device: 'smartphone'
8268  models:
8269    - regex: 'iHunt_Like'
8270      model: 'Like'
8271    - regex: 'S10_Tank_2019'
8272      model: 'S10 Tank (2019)'
8273    - regex: 'One_ Love_'
8274      model: 'One Love'
8275    - regex: 'TITAN_P11000_PRO'
8276      model: 'Titan P11000 Pro'
8277    - regex: 'Like_3_Pro'
8278      model: 'Like 3 Pro'
8279    - regex: 'Like_3'
8280      model: 'Like 3'
8281    - regex: 'Like_4U'
8282      model: 'Like 4U'
8283    - regex: 'X300 Elite'
8284      model: 'X300 Elite'
8285    - regex: 'S60_Discovery_2019'
8286      model: 'S60 Discovery (2019)'
8287    - regex: 'AlienXLite2020'
8288      model: 'Alien X Lite (2020)'
8289    - regex: 'Alien X Lite PRO'
8290      model: 'Alien X Lite Pro'
8291    - regex: 'Alien X Lite'
8292      model: 'Alien X Lite'
8293    - regex: 'Alien_X_ApeX'
8294      model: 'Alien X ApeX'
8295    - regex: 'Alien_X'
8296      model: 'Alien X'
8297    - regex: 'S([23]0) Ultra ApeX 2021'
8298      model: 'S$1 Ultra ApeX (2021)'
8299    - regex: 'S21 Ultra 4G 2021'
8300      model: 'S21 Ultra 4G (2021)'
8301    - regex: 'Like 11 Panda Pro 2022'
8302      model: 'Like 11 Panda Pro (2022)'
8303
8304# IconBIT
8305IconBIT:
8306  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|Omnicast UHD|Movie Smart 4K|Movie IPTV Quad|TOUCAN (?:NANO|Stick) 4K|NetTAB_Space_3G'
8307  device: 'tablet'
8308  models:
8309    - regex: 'NT-3506M'
8310      device: 'smartphone'
8311      model: 'NetTAB Mercury Quad FHD'
8312    - regex: 'NT-0704S'
8313      model: 'NetTAB Sky LE'
8314    - regex: 'NT-0909T'
8315      model: 'NetTAB Thor IZ'
8316    - regex: 'NT-1009T'
8317      model: 'NetTAB Thor quad II'
8318    - regex: 'NT-10[01]1T'
8319      model: 'NetTAB Thor LE'
8320    - regex: 'NT-1017T'
8321      model: 'NetTAB Thor 3G quad'
8322    - regex: 'NT-3601P/3602P'
8323      model: 'NetTAB Pocket 3G'
8324    - regex: 'NT-3603P'
8325      model: 'NetTAB Pocket 3G Slim'
8326    - regex: 'NT-3702S'
8327      model: 'NetTAB Sky HD 3G'
8328    - regex: 'NT-3805C'
8329      model: 'NetTAB Skat 3G quad'
8330    - regex: 'NT-3701S'
8331      model: 'NetTAB Sky 3G duo'
8332    - regex: 'NT-3905T'
8333      model: 'NetTAB Thor ZX 3G'
8334    - regex: 'NT-0701S'
8335      model: 'NetTAB Sky net'
8336    - regex: 'NT-0805C'
8337      model: 'NetTAB Skat MX'
8338    - regex: 'NT-0902S'
8339      model: 'NetTAB Space quad RX'
8340    - regex: 'NetTAB_Space_3G'
8341      model: 'NetTAB Space 3G'
8342    - regex: 'NT-3702M'
8343      model: 'NetTAB Matrix 3G duo'
8344    - regex: 'NT-3703M'
8345      model: 'NetTAB Matrix 3GT'
8346    - regex: 'MATRIX ULTRA'
8347      model: 'NetTAB Matrix Ultra'
8348
8349    - regex: 'TOUCAN NANO 4K'
8350      model: 'Toucan Nano 4K'
8351      device: 'tv'
8352    - regex: 'TOUCAN Stick 4K'
8353      model: 'Toucan Stick 4K'
8354      device: 'tv'
8355    - regex: '(?:iconBIT )?(Movie Smart 4K|Movie IPTV Quad|Movie Ultra HD 4K|XDS[789]4K|Omnicast UHD|Stick)'
8356      model: '$1'
8357      device: 'tv'
8358
8359# LYF
8360LYF:
8361  regex: '(LYF[ _])?LS-[456][0-9]{3}|LYF/[^/]+/'
8362  device: 'smartphone'
8363  models:
8364    - regex: 'LS-4004'
8365      model: 'Flame 2'
8366    - regex: 'LS-5501'
8367      model: 'Earth 1'
8368    - regex: 'LS-5021'
8369      model: 'Earth 2'
8370    - regex: 'LS-5505'
8371      model: 'Water F1'
8372    - regex: 'LS-4503'
8373      model: 'Flame LS-4503'
8374    - regex: 'LS-4001'
8375      model: 'Flame 3'
8376    - regex: 'LS-4003'
8377      model: 'Flame 4'
8378    - regex: 'LS-4002'
8379      model: 'Flame 5'
8380    - regex: 'LS-4005'
8381      model: 'Flame 6'
8382    - regex: '(LYF[ _])?LS-4006'
8383      model: 'Flame 7'
8384    - regex: 'LS-4008'
8385      model: 'Flame 7S'
8386    - regex: 'LS-450[58]'
8387      model: 'Flame 8'
8388    - regex: 'LS-5002'
8389      model: 'Water 1'
8390    - regex: 'LS-5005'
8391      model: 'Water 4'
8392    - regex: 'LS-5006'
8393      model: 'Water 6'
8394    - regex: 'LS-5008'
8395      model: 'Water 2'
8396    - regex: 'LS-5009'
8397      model: 'Wind 6'
8398    - regex: 'LS-5013'
8399      model: 'Wind 5'
8400    - regex: 'LS-5014'
8401      model: 'Wind 4'
8402    - regex: 'LS-5010'
8403      model: 'Wind 1'
8404    - regex: 'LS-5015'
8405      model: 'Water 8'
8406    - regex: 'LS-5016'
8407      model: 'Wind 7'
8408    - regex: 'LS-5504'
8409      model: 'Water 7'
8410    - regex: 'LS-5507'
8411      model: 'Water 7S'
8412    - regex: 'LS-5017'
8413      model: 'Water 11'
8414    - regex: 'LS-5018'
8415      model: 'Wind 4S'
8416    - regex: 'LS-5020'
8417      model: 'Water 10'
8418    - regex: 'LS-5201'
8419      model: 'Water F1S'
8420    - regex: 'LS-5502'
8421      model: 'Wind 3'
8422    - regex: 'LS-5503'
8423      model: 'Water 3'
8424    - regex: 'LS-5506'
8425      model: 'Water 9'
8426    - regex: 'LS-6001'
8427      model: 'Wind 2'
8428
8429    - regex: 'LYF/([^/]+)/'
8430      model: '$1'
8431
8432# Lumus
8433Lumus:
8434  regex: '(?:NEO(SR620|SC600)|INNOSR545|Lumus[_ ]Ion|AEONSR570)(?:[);/ ]|$)'
8435  device: 'smartphone'
8436  models:
8437    # explicit smartphone models
8438    - regex: 'NEO(SR620|SC600)(?:[);/ ]|$)'
8439      model: 'Neo $1'
8440    - regex: 'INNO(SR545)(?:[);/ ]|$)'
8441      model: 'INNO $1'
8442    - regex: 'Lumus[_ ]Ion(?:[);/ ]|$)'
8443      model: 'Ion'
8444    - regex: 'AEON(SR570)(?:[);/ ]|$)'
8445      model: 'AEON $1'
8446# M4tel
8447M4tel:
8448  regex: '(?:M4 SS[0-9]{4}(?:-R)?|M4_B[23]|M4_R2)(?:[);/ ]|$)'
8449  device: 'smartphone'
8450  models:
8451    - regex: 'SS1050'
8452      model: 'Joy'
8453    - regex: 'SS1060'
8454      model: 'Live'
8455    - regex: 'SS1070'
8456      model: 'Sense'
8457    - regex: 'SS1080'
8458      model: 'Max One'
8459    - regex: 'SS1090'
8460      model: 'Max Ultra'
8461    - regex: 'SS4020'
8462      model: 'Play'
8463    - regex: 'SS4040'
8464      model: 'In Touch'
8465    - regex: 'SS4045'
8466      model: 'Style'
8467    - regex: 'SS4345'
8468      model: 'Soul Mini'
8469    - regex: 'SS4350'
8470      model: 'Soul'
8471    - regex: 'SS4445'
8472      model: 'Style Access'
8473    - regex: 'SS4450'
8474      model: 'Share'
8475    - regex: 'SS4451'
8476      model: 'Believe'
8477    - regex: 'SS4452'
8478      model: 'Dream'
8479    - regex: 'SS4453-R'
8480      model: 'R1 Feel'
8481    - regex: 'SS4453'
8482      model: 'Inspiration'
8483    - regex: 'SS4455'
8484      model: 'Excite'
8485    - regex: 'SS4456'
8486      model: 'Evolution'
8487    - regex: 'SS4457-R'
8488      model: 'Ever'
8489    - regex: 'SS4457'
8490      model: 'Elegance'
8491    - regex: 'SS4458-R'
8492      model: 'Feel Plus'
8493    - regex: 'SS4458'
8494      model: 'Attitude'
8495    - regex: 'M4_B([23])'
8496      model: 'B$1'
8497    - regex: 'M4_R(2)'
8498      model: 'R$1'
8499
8500# IMO Mobile or In My Opinion Mobile
8501IMO Mobile:
8502  regex: 'IMO[ _]\w'
8503  device: 'smartphone'
8504  models:
8505    - regex: 'IMO[ _]Q([23]) Plus(?:[);/ ]|$)'
8506      model: 'Q$1 Plus'
8507    - regex: 'IMO[ _]Q2(?:[);/ ]|$)'
8508      model: 'Q2'
8509    - regex: 'IMO[ _]S2(?:[);/ ]|$)'
8510      model: 'S2'
8511    - regex: 'IMO[ _]FEEL A2(?:[);/ ]|$)'
8512      model: 'Feel A2'
8513    - regex: 'IMO[ _]S50(?:[);/ ]|$)'
8514      model: 'S50 Light'
8515    - regex: 'IMO[ _]S80(?:[);/ ]|$)'
8516      model: 'S80 Hero'
8517    - regex: 'IMO[ _]S89(?:[);/ ]|$)'
8518      model: 'S89 Miracle'
8519    - regex: 'IMO[ _]S88(?:[);/ ]|$)'
8520      model: 'S88 Discovery'
8521    - regex: 'IMO[ _]S99(?:[);/ ]|$)'
8522      model: 'S99 Ocean'
8523    - regex: 'IMO[ _]S98(?:[);/ ]|$)'
8524      model: 'S98 Champion'
8525    - regex: 'IMO[ _]S87(?:[);/ ]|$)'
8526      model: 'S87 Raptor'
8527    - regex: 'IMO[ _]S67(?:[);/ ]|$)'
8528      model: 'S67 Blast'
8529    - regex: 'IMO[ _]S78(?:[);/ ]|$)'
8530      model: 'S78 Glory'
8531    - regex: 'IMO[ _]Q8(?:[);/ ]|$)'
8532      model: 'Q8 Clarity'
8533    - regex: 'IMO[ _]Discovery II(?:[);/ ]|$)'
8534      model: 'Discovery II'
8535    - regex: 'IMO[ _]Q(?:[);/ ]|$)'
8536      model: 'Q'
8537
8538    - regex: 'IMO[ _](Y5|Z[67])(?:[);/ ]|$)'
8539      model: 'Tab $1'
8540      device: 'tablet'
8541    - regex: 'IMO TAB X9(?:[);/ ]|$)'
8542      model: 'Tab X9'
8543      device: 'tablet'
8544
8545# iLA or ILA Mobile
8546iLA:
8547  regex: 'iLA[-_ ](Silk|X)(?:[);/ ]|$)'
8548  device: 'smartphone'
8549  model: '$1'
8550
8551# iNew
8552iNew:
8553  regex: 'iNew|(?:V7A|V3 Plus|V3-?E|V3C|FIRE_Tab_6)(?:[);/ ]|$)'
8554  device: 'smartphone'
8555  models:
8556    - regex: 'V3C(?:[);/ ]|$)'
8557      model: 'V3C'
8558    - regex: 'V3-?E(?:[);/ ]|$)'
8559      model: 'V3-E'
8560    - regex: 'V3 Plus(?:[);/ ]|$)'
8561      model: 'V3 Plus'
8562    - regex: 'V7A(?:[);/ ]|$)'
8563      model: 'V7A'
8564    - regex: 'FIRE_Tab_6(?:[);/ ]|$)'
8565      device: 'tablet'
8566      model: 'Fire Tab 6'
8567
8568    - regex: 'iNew[ -_]([^;/]+) Build'
8569      model: '$1'
8570
8571# iPro
8572iPro:
8573  regex: '(?:Kylin[ _]5.[05]S?|KYLIN40|Jade[78]s|Amber[67]S?|Amber5S_Pro|Phonenix50S|Zafiro|I9355A)(?:[);/ ]|$)'
8574  device: 'smartphone'
8575  models:
8576    - regex: 'Kylin_5.0S'
8577      model: 'Kylin 5.0S'
8578    - regex: 'Kylin (5.[05])'
8579      model: 'Kylin $1'
8580    - regex: 'KYLIN40'
8581      model: 'Kylin 40'
8582    - regex: 'Jade([78])s'
8583      model: 'Jade $1s'
8584    - regex: 'Amber7S'
8585      model: 'Amber 7S'
8586    - regex: 'Amber5S_Pro'
8587      model: 'Amber 5S Pro'
8588    - regex: 'Amber6'
8589      model: 'Amber 6'
8590    - regex: 'Phonenix50S'
8591      model: 'Phonenix 50S'
8592    - regex: 'Zafiro'
8593      model: 'Zafiro'
8594    - regex: '(I9355A)'
8595      model: '$1'
8596
8597# Infinix (infinixmobility.com)
8598Infinix:
8599  regex: 'Infinix'
8600  device: 'smartphone'
8601  models:
8602    - regex: 'Infinix[ _-]X260'
8603      model: 'Buzz'
8604    - regex: 'Infinix[ _-]X502'
8605      model: 'Alpha Marvel'
8606    - regex: 'Infinix[ _-]X570'
8607      model: 'Alpha'
8608
8609    - regex: 'Infinix[ _-]X350'
8610      model: 'Surf Smart'
8611    - regex: 'Infinix[ _-]X351'
8612      model: 'Surf Smart 3G'
8613    - regex: 'Infinix[ _-]X352'
8614      model: 'Surf Smart 2'
8615    - regex: 'Infinix[ _-]X403'
8616      model: 'Surf Spice'
8617    - regex: 'Infinix[ _-]X503'
8618      model: 'Surf Bravo'
8619    - regex: 'Infinix[ _-]X511'
8620      model: 'Surf Noir'
8621
8622    - regex: 'Infinix[ _-]X400'
8623      model: 'Race'
8624    - regex: 'Infinix[ _-]X401'
8625      model: 'Race Lite'
8626    - regex: 'Infinix[ _-]X450'
8627      model: 'Race Bolt'
8628    - regex: 'Infinix[ _-]X451'
8629      model: 'Race Bolt Q'
8630    - regex: 'Infinix[ _-]X454'
8631      model: 'Race Bolt 2'
8632    - regex: 'Infinix[ _-]X500'
8633      model: 'Race Eagle'
8634    - regex: 'Infinix[ _-]X501'
8635      model: 'Race Jet'
8636
8637    - regex: 'Infinix[ _-]X506'
8638      model: 'Zero'
8639    - regex: 'Infinix[ _-]X509'
8640      model: 'Zero 2'
8641    - regex: 'Infinix[ _-]X552'
8642      model: 'Zero 3'
8643    - regex: 'Infinix[ _-]X555'
8644      model: 'Zero 4'
8645    - regex: 'Infinix[ _-]X(?:574|602)'
8646      model: 'Zero 4 Plus'
8647    - regex: 'Infinix[ _-]X603'
8648      model: 'Zero 5'
8649    - regex: 'Infinix[ _-]X603B'
8650      model: 'Zero 5 Pro'
8651    - regex: 'Infinix[ _-]X620'
8652      model: 'Zero 6'
8653    - regex: 'Infinix[ _-]X687B'
8654      device: 'phablet'
8655      model: 'Zero 8i'
8656    - regex: 'Infinix[ _-]X687'
8657      device: 'phablet'
8658      model: 'Zero 8'
8659
8660    - regex: 'Infinix[ _-]X507'
8661      model: 'Hot'
8662    - regex: 'Infinix[ _-]X510'
8663      model: 'Hot 2'
8664    - regex: 'Infinix[ _-]X55[34]'
8665      model: 'Hot 3'
8666    - regex: 'Infinix[ _-]X521'
8667      model: 'Hot S'
8668    - regex: 'Infinix[ _-]X522'
8669      model: 'Hot S2'
8670    - regex: 'Infinix[ _-]X557'
8671      model: 'Hot 4'
8672    - regex: 'Infinix[ _-]X556'
8673      model: 'Hot 4 Pro'
8674    - regex: 'Infinix[ _-]X559c'
8675      model: 'Hot 5'
8676    - regex: 'Infinix[ _-]X559'
8677      model: 'Hot 5 Lite'
8678    - regex: 'Infinix[ _-]X606[BC]?'
8679      model: 'Hot 6'
8680    - regex: 'Infinix[ _-]X608'
8681      model: 'Hot 6 Pro'
8682    - regex: 'Infinix[ _-]X624'
8683      model: 'Hot 7'
8684    - regex: 'Infinix[ _-]X625'
8685      model: 'Hot 7 Pro'
8686    - regex: 'Infinix[ _-]X650'
8687      model: 'Hot 8'
8688    - regex: 'Infinix[ _-]X655'
8689      model: 'Hot 9'
8690    - regex: 'Infinix[ _-]X680'
8691      model: 'Hot 9 Play'
8692    - regex: 'Infinix[ _-]X688'
8693      model: 'Hot 10 Play'
8694    - regex: 'Infinix[ _-]X682[BC]'
8695      model: 'Hot 10'
8696    - regex: 'Infinix[ _-]X689C'
8697      model: 'Hot 10T'
8698    - regex: 'Infinix X689D'
8699      model: 'Hot 10s NFC'
8700    - regex: 'Infinix X689'
8701      model: 'Hot 10s'
8702    - regex: 'Infinix[ _-](?:X659|PR652)'
8703      model: 'Hot 10i'
8704    - regex: 'Infinix[ _-]X573B?'
8705      model: 'Hot S3'
8706    - regex: 'Infinix[ _-]X6812'
8707      model: 'Hot 11S'
8708
8709    - regex: 'Infinix[ _-]X612'
8710      model: 'Smart HD (2021)'
8711    - regex: 'Infinix[ _-]X5010'
8712      model: 'Smart'
8713    - regex: 'Infinix[ _-]X5515F'
8714      model: 'Smart 2'
8715    - regex: 'Infinix[ _-]X609'
8716      model: 'Smart 2 HD'
8717    - regex: 'Infinix[ _-]X627'
8718      model: 'Smart 3 Plus'
8719    - regex: 'Infinix[ _-]X5514D'
8720      model: 'Smart 2 Pro'
8721    - regex: 'Infinix[ _-]X653'
8722      model: 'Smart 4'
8723    - regex: 'Infinix[ _-]X657'
8724      model: 'Smart 5'
8725
8726    - regex: 'Infinix[ _-]X652B'
8727      model: 'S5 Lite'
8728    - regex: 'Infinix[ _-]X626'
8729      model: 'S4'
8730    - regex: 'Infinix[ _-]X652'
8731      model: 'S5'
8732    - regex: 'Infinix[ _-]X660'
8733      model: 'S5 Pro'
8734
8735    - regex: 'Infinix[ _-]X551'
8736      model: 'Hot Note'
8737      device: 'phablet'
8738    - regex: 'Infinix[ _-]X600'
8739      model: 'Note 2'
8740      device: 'phablet'
8741    - regex: 'Infinix[ _-]X601'
8742      model: 'Note 3'
8743      device: 'phablet'
8744    - regex: 'Infinix[ _-]X572'
8745      model: 'Note 4'
8746      device: 'phablet'
8747    - regex: 'Infinix[ _-]X571'
8748      model: 'Note 4 Pro'
8749      device: 'phablet'
8750    - regex: 'Infinix[ _-]X604'
8751      model: 'Note 5'
8752      device: 'phablet'
8753    - regex: 'Infinix[ _-]X610'
8754      model: 'Note 6'
8755      device: 'phablet'
8756    - regex: 'Infinix[ _-]X690'
8757      model: 'Note 7'
8758      device: 'phablet'
8759    - regex: 'Infinix[ _-]X656'
8760      model: 'Note 7 Lite'
8761      device: 'phablet'
8762    - regex: 'Infinix[ _-]X692'
8763      model: 'Note 8'
8764      device: 'phablet'
8765    - regex: 'Infinix[ _-]X683'
8766      model: 'Note 8i'
8767      device: 'phablet'
8768    - regex: 'Infinix[ _-]X695'
8769      model: 'Note 10 Pro'
8770      device: 'phablet'
8771    - regex: 'Infinix[ _-]X693'
8772      model: 'Note 10'
8773      device: 'phablet'
8774
8775    - regex: 'Infinix HOT ([a-z]?[1-6])( (?:Lite|Plus|Pro))?'
8776      model: 'Hot $1$2'
8777    - regex: 'Infinix[ _-](X[78]00)'
8778      device: 'tablet'
8779      model: '$1'
8780    - regex: 'Infinix[ _-](X\d+)'
8781      model: '$1'
8782    - regex: 'Infinix[ _-]([a-z0-9_\-]+)'
8783      model: '$1'
8784
8785# InFocus
8786InFocus:
8787  regex: 'IF(900[1237]|902[19]|903[15])(?:[);/ ]|$)'
8788  device: 'smartphone'
8789  models:
8790    - regex: 'IF9001'
8791      model: 'Turbo 5'
8792    - regex: 'IF9007'
8793      model: 'A3'
8794    - regex: 'IF9021'
8795      model: 'Turbo 5 Plus'
8796    - regex: 'IF9035'
8797      model: 'A2'
8798    - regex: 'IF9002'
8799      model: 'M5s'
8800    - regex: 'IF9003'
8801      model: 'M6s'
8802    - regex: 'IF9031'
8803      model: 'Vision 3'
8804    - regex: 'IF9029'
8805      model: 'Vision 3 Pro'
8806
8807# InnJoo
8808InnJoo:
8809  regex: 'InnJoo|(?:Halo Plus|Halo X|Halo[ _]4(?:[ _]mini[ _]LTE)?|Halo2 3G|Fire2 Plus LTE)(?:[);/ ]|$)'
8810  device: 'smartphone'
8811  models:
8812    - regex: 'InnJoo[ _]X3(?:[);/ ]|$)'
8813      model: 'X3'
8814    - regex: 'Halo[ _]X[ _]LTE(?:[);/ ]|$)'
8815      model: 'Halo X LTE'
8816    - regex: 'InnJoo[ _]X(?:[);/ ]|$)'
8817      model: 'X'
8818    - regex: 'Halo Plus(?:[);/ ]|$)'
8819      model: 'Halo Plus'
8820    - regex: 'Halo[ _]4[ _]mini[ _]LTE(?:[);/ ]|$)'
8821      model: 'Halo 4 Mini LTE'
8822    - regex: 'Halo 4(?:[);/ ]|$)'
8823      model: 'Halo 4'
8824    - regex: 'Halo2 3G(?:[);/ ]|$)'
8825      model: 'Halo 2 3G'
8826    - regex: 'InnJoo[ _]Pro2(?:[);/ ]|$)'
8827      model: 'Pro 2'
8828    - regex: 'Innjoo ONE 3G(?:[);/ ]|$)'
8829      model: 'One 3G'
8830    - regex: 'Innjoo[ _]2[ _]LTE(?:[);/ ]|$)'
8831      model: '2 LTE'
8832    - regex: 'InnJoo[ _]([2-4])'
8833      model: '$1'
8834    - regex: 'Fire2 Plus LTE'
8835      model: 'Fire 2 Plus LTE'
8836
8837# Inkti
8838Inkti:
8839  regex: 'intki[ _]([^/;]*)[ _]Build'
8840  device: 'smartphone'
8841  model: '$1'
8842
8843# Innos
8844Innos:
8845  regex: 'Innos_?(D6000)(?:[);/ ]|$)'
8846  device: 'smartphone'
8847  model: '$1'
8848
8849
8850# Innostream
8851Innostream:
8852  regex: 'INNO([a-z0-9]+)'
8853  device: 'feature phone'
8854  model: 'INNO$1'
8855
8856# Insignia
8857Insignia:
8858  regex: 'NS-(P11A8100|P10A8100|P10A6100|P16AT08|P16AT10|P16AT785HD|P08A7100|P10A7100)(?:[);/ ]|$)|AFTEAMR311|AFTJMST12'
8859  device: 'tablet'
8860  models:
8861    - regex: 'NS-P11A8100'
8862      model: '11.6"'
8863    - regex: 'NS-(P10A6100|P16AT10)'
8864      model: 'Flex 10.1"'
8865    - regex: 'NS-P16AT08'
8866      model: 'Flex 8"'
8867    - regex: 'NS-P08A7100'
8868      model: '8"'
8869    - regex: 'NS-(P10A8100|P10A7100)'
8870      model: '10.1"'
8871    - regex: 'NS-P16AT785HD'
8872      model: 'Flex Elite 7.85"'
8873    - regex: 'AFTEAMR311'
8874      model: 'HD (2018)'
8875      device: 'tv'
8876    - regex: 'AFTJMST12'
8877      model: '4K (2018)'
8878      device: 'tv'
8879
8880# Inq
8881INQ:
8882  regex: 'INQ[/ ]'
8883  device: 'feature phone'
8884  models:
8885    - regex: 'INQ/([a-z0-9\-]+)'
8886      model: '$1'
8887    - regex: 'INQ ([^;/]+) Build'
8888      model: '$1'
8889      device: 'smartphone'
8890
8891# Intex
8892Intex:
8893  regex: 'Intex|(Aqua|Cloud[ _][XY][0-9]{1}|Cloud (?:Fame|Glory) 4G)|IM0318ND(?:[);/ ]|$)'
8894  device: 'smartphone'
8895  models:
8896    - regex: 'IM0318ND'
8897      model: 'Aqua Lions 3'
8898    - regex: 'AQUA[ _]LIONS[ _]T1[ _]LITE(?:[);/ ]|$)'
8899      model: 'Aqua Lions T1 Lite'
8900    - regex: 'AQUA[ _]LIONS[ _]([NT]1|[23]|E3)(?:[);/ ]|$)'
8901      model: 'Aqua Lions $1'
8902    - regex: 'AQUA (A4) PLUS(?:[);/ ]|$)'
8903      model: 'Aqua $1 Plus'
8904    - regex: 'AQUA[ _](A4|S[13])(?:[);/ ]|$)'
8905      model: 'Aqua $1'
8906    - regex: 'AQUA CRYSTAL\+(?:[);/ ]|$)'
8907      model: 'Aqua Crystal Plus'
8908    - regex: 'AQUA FulVU e5(?:[);/ ]|$)'
8909      model: 'Aqua Fulvu E5'
8910    - regex: 'AQUA JEWEL 2(?:[);/ ]|$)'
8911      model: 'Aqua Jewel 2'
8912    - regex: 'Intex[ _]([^/;]*)[ _]Build'
8913      model: '$1'
8914    - regex: '(Cloud (?:Fame|Glory) 4G)'
8915      model: '$1'
8916    - regex: '(Aqua|Cloud)[ _\.]([^/;\)]+)(?:[ _]Build|(?<!Build)/|\))'
8917      model: '$1 $2'
8918    - regex: 'Intex[ _]([a-z0-9_+\-]+)'
8919      model: '$1'
8920
8921# i-mate
8922i-mate:
8923  regex: 'i-mate ([a-z0-9]+)'
8924  device: 'feature phone'
8925  model: '$1'
8926
8927# i-mobile
8928i-mobile:
8929  regex: 'i-mobile ?[a-z0-9]+|i-Style|IQ ?(9\.1|5\.5|5\.6A?)'
8930  device: 'feature phone'
8931  models:
8932    - regex: 'i-mobile (i-note[^/;]*) Build'
8933      model: '$1'
8934      device: 'tablet'
8935    - regex: 'i-Style ?([^;/]+) Build'
8936      model: 'i-Style $1'
8937      device: 'smartphone'
8938    - regex: 'IQ ?(9\.1|5\.5|5\.6A?)'
8939      model: 'IQ $1'
8940      device: 'smartphone'
8941    - regex: 'i-mobile (IQ[^/;]*) Build'
8942      model: '$1'
8943      device: 'smartphone'
8944    - regex: 'i-mobile(?: )?([a-z0-9\- ]+) Build'
8945      model: '$1'
8946    - regex: 'i-mobile(?: )?([a-z0-9]+)'
8947      model: '$1'
8948
8949# ikomo
8950iKoMo:
8951  regex: 'iKoMo ([a-z0-9]+)'
8952  device: 'feature phone'
8953  model: '$1'
8954
8955# iOcean
8956iOcean:
8957  regex: 'iOCEAN|M6752|W180|X7[ _]?S|X8 mini'
8958  device: 'smartphone'
8959  models:
8960    - regex: 'X7S-T'
8961      model: 'X7S-T'
8962    - regex: 'X8 mini pro'
8963      model: 'X8 Mini Pro'
8964    - regex: 'X8 mini'
8965      model: 'X8 Mini'
8966    - regex: 'X7[ _]?S'
8967      model: 'X7S Elite'
8968    - regex: '(M6752|W180) Build'
8969      model: '$1'
8970    - regex: 'iOCEAN[ _\-]?([^/;]+) Build'
8971      model: '$1'
8972    - regex: 'iOCEAN[ _\-]?([^);/ ]+)'
8973      model: '$1'
8974
8975# iView (iviewus.com)
8976iView:
8977  regex: '(?:(?:733|730|766|930)TPC|769TPC(?:II)?|744TPC plus)(?:[);/ ]|$)'
8978  device: 'tablet'
8979  models:
8980    - regex: '744TPC plus'
8981      model: '744TPC Plus'
8982    - regex: '((?:733|730|766|930)TPC|769TPC(?:II)?)(?:[);/ ]|$)'
8983      model: '$1'
8984
8985# Impression
8986Impression:
8987  regex: '(?:Impression[ _\-]?([^/;]+)|A502|I10\-LE|ImPad[ _]?(.*)|ImSmart[ _]?(.*))(?:[);/ ]|$)'
8988  device: 'tablet'
8989  models:
8990    - regex: '(A502)'
8991      model: '$1'
8992      device: 'smartphone'
8993    - regex: 'ImSmart[ _]?([^/;)]+)(?: Build|\))'
8994      model: 'ImSmart $1'
8995      device: 'smartphone'
8996    - regex: 'ImPad[ _]?([^/;)]+)(?: Build|\))'
8997      model: 'ImPad $1'
8998    - regex: '(I10\-LE)'
8999      model: '$1'
9000      device: 'smartphone'
9001    - regex: 'Impression[ _\-]?([^/;)]+)(?: Build|\))'
9002      model: '$1'
9003
9004#iLife or i-life (lifedigital.com)
9005iLife:
9006  regex: '(ITELL[_ ](?:K3300|K3500N?|K4700)|WTAB_714|WTAB 805)(?:[);/ ]|$)'
9007  device: 'tablet'
9008  model: '$1'
9009
9010# iTel
9011iTel:
9012  regex: 'itel|iNote|GP10X2019(?:[);/ ]|$)'
9013  device: 'smartphone'
9014  models:
9015    - regex: 'W6502'
9016      device: 'phablet'
9017      model: 'S16'
9018    - regex: 'W5505'
9019      model: 'A36'
9020    - regex: 'W6002E?'
9021      model: 'S15'
9022    - regex: 'L5502'
9023      model: 'A44 Air'
9024    - regex: 'L5505'
9025      model: 'A47'
9026    - regex: 'W5006X'
9027      model: 'A17'
9028    - regex: 'L6006'
9029      model: 'A48'
9030    - regex: 'L6003P'
9031      model: 'A55 LTE'
9032    - regex: 'L6002P'
9033      model: 'S15 Pro'
9034    - regex: 'L5002'
9035      model: 'A22'
9036    - regex: 'L5503'
9037      model: 'A46'
9038    - regex: 'W6004P'
9039      model: 'A56 Pro'
9040    - regex: '[LW]6004'
9041      model: 'A56 LTE'
9042    - regex: 'W6001'
9043      model: 'P33 Plus'
9044    - regex: 'W6003'
9045      model: 'A55'
9046    - regex: 'L6005'
9047      model: 'Vision 1'
9048    - regex: 'L6501'
9049      model: 'Vision 1 Plus'
9050    - regex: 'L6502'
9051      model: 'Vision 1 Pro'
9052    - regex: 'GP10X2019'
9053      model: 'GP10X2019'
9054    - regex: 'iNote ([^/;]*)Build'
9055      model: 'iNote $1'
9056    - regex: 'iNote_([a-z0-9\-_]+)'
9057      model: 'iNote $1'
9058    - regex: 'itel-it(1410|1512|1520)(?:[);/ ]|$)'
9059      model: 'it$1'
9060    - regex: 'itel-it1553(?:[);/ ]|$)'
9061      model: 'Power Pro'
9062    - regex: 'itel[- ](A14|A16 Plus|A44 Power|A23S|A52 Lite)'
9063      model: '$1'
9064
9065    - regex: 'itel it1701'
9066      device: 'tablet'
9067      model: 'iNote Prime'
9068    - regex: 'itel it170([23])'
9069      device: 'tablet'
9070      model: 'iNote Prime $1'
9071
9072    - regex: 'iTel ([^/;]*)Build'
9073      model: '$1'
9074    - regex: 'iTel[_ ]([a-z0-9\-_]*)'
9075      model: '$1'
9076
9077# iZotron
9078iZotron:
9079  regex: '(Mi7_HERO_(?:BETA|TAB))(?:[);/ ]|$)'
9080  device: 'tablet'
9081  models:
9082    - regex: 'Mi7[_ ]HERO[_ ]BETA(?:[);/ ]|$)'
9083      model: 'MI7 Hero Beta'
9084    - regex: 'Mi7[_ ]HERO[_ ]TAB(?:[);/ ]|$)'
9085      model: 'MI7 Hero Tab'
9086
9087# JAY-Tech
9088JAY-Tech:
9089  regex: 'TPC-[A-Z0-9]+|TPCY-TX[TE][^);/ ]+'
9090  device: 'tablet'
9091  models:
9092    - regex: 'TPC-([A-Z0-9]+)'
9093      model: 'Tablet PC $1'
9094    - regex: '(TPCY-TX[TE][^);/ ]+)'
9095      model: '$1'
9096
9097# Jiayu
9098Jiayu:
9099  regex: 'JIAYU[ _-]|(?:JY-G4[\\_]G5|(?:JY-[a-z0-9]+)|JY_G4C)(?:[);/ ]|$)'
9100  device: 'smartphone'
9101  models:
9102    - regex: '(?:JIAYU G4_G5|JY-G4[\\_]G5)(?:[);/ ]|$)'
9103      model: 'G4/G5'
9104    - regex: 'JIAYU[ _-](G4[S]?|G2F|G3[S]?|S[23])(?:[);/ ]|$)'
9105      model: '$1'
9106    - regex: 'JY[-_]([a-z0-9]+|G4C)(?:[);/ ]|$)'
9107      model: 'JY-$1'
9108
9109# Jolla
9110Jolla:
9111  regex: 'Jolla'
9112  device: 'smartphone'
9113  model: ''
9114
9115# Juniper Systems (https://junipersys.com/)
9116'Juniper Systems':
9117  regex: 'Junipers/'
9118  device: 'smartphone'
9119  models:
9120    - regex: 'Cedar#CT8'
9121      device: 'tablet'
9122      model: 'CT8'
9123
9124# Just5 (www.just5.com)
9125Just5:
9126  regex: 'JUST5(-)?SPACER(s)?|COSMO[_ ](L707|L808)|BLASTER|FREEDOM[ _](C100|M303|X1)|Freedom'
9127  device: 'smartphone'
9128  models:
9129    - regex: 'COSMO[_ ](L707|L808)'
9130      model: 'Cosmo $1'
9131    - regex: 'FREEDOM[ _](C100|M303|X1)'
9132      model: 'Freedom $1'
9133    - regex: 'Freedom'
9134      model: 'Freedom'
9135    - regex: 'JUST5(-)?SPACER2s'
9136      model: 'Spacer 2S'
9137    - regex: 'JUST5(-)?SPACER2'
9138      model: 'Spacer 2'
9139    - regex: 'JUST5SPACER'
9140      model: 'Spacer'
9141    - regex: 'BLASTER 2'
9142      model: 'Blaster 2'
9143    - regex: 'BLASTER'
9144      model: 'Blaster'
9145
9146# Kalley (www.kalley.com.co)
9147Kalley:
9148  regex: 'KALLEY|(?:ELEMENT (?:MAX|Q)|ELEMENT_PRO_2|K-BOOK(?:8MG|73G))(?:[);/ ]|$)'
9149  device: 'smartphone'
9150  models:
9151    - regex: 'ELEMENT MAX'
9152      model: 'Element Max'
9153    - regex: 'ELEMENT Q'
9154      model: 'Element Q'
9155    - regex: 'ELEMENT_PRO_2'
9156      model: 'Element Pro 2'
9157    - regex: 'K-BOOK(8MG|73G)'
9158      device: 'tablet'
9159      model: 'K-BOOK$1'
9160    - regex: 'KALLEY,(55D1240)'
9161      device: 'tv'
9162      model: '$1'
9163
9164# Kaan
9165Kaan:
9166  regex: 'KAAN[ _](N[12]|A1)(?:[);/ ]|$)'
9167  device: 'smartphone'
9168  model: '$1'
9169
9170# Kazam
9171Kazam:
9172  regex: 'Kazam|(?:Trooper_X[0-9][0-9]|Tornado 348|TROOPER 4\.0)(?:[);/ ]|$)'
9173  device: 'smartphone'
9174  models:
9175    - regex: 'Tornado 348'
9176      model: 'Tornado 348'
9177    - regex: 'Thunder 450W'
9178      model: 'Thunder 450W'
9179    - regex: 'TROOPER 4\.0'
9180      model: 'Trooper X4.0'
9181    - regex: 'Trooper_X([0-9])([0-9])(?:[);/ ]|$)'
9182      model: 'Trooper X$1.$2'
9183    - regex: 'Kazam[; _]([^;/)]+)(?: Build|\))'
9184      model: '$1'
9185
9186# Kazuna (https://kazuna.co.jp/)
9187Kazuna:
9188  regex: 'KAZ-N20'
9189  device: 'smartphone'
9190  models:
9191    - regex: 'KAZ-N20'
9192      model: 'eTalk MYFLIX'
9193
9194# Keneksi
9195Keneksi:
9196  regex: 'KENEKSI|(?:Hemera|Teta Dual|Helios)(?:[);/ ]|$)'
9197  device: 'smartphone'
9198  models:
9199    - regex: '(Hemera|Teta Dual|Helios)(?:[);/ ]|$)'
9200      model: '$1'
9201    - regex: 'KENEKSI[ _-]liberty'
9202      model: 'Liberty'
9203    - regex: 'KENEKSI[ _-]FLASH'
9204      model: 'Flash'
9205    - regex: 'KENEKSI[ _-]SUN'
9206      model: 'Sun'
9207    - regex: 'KENEKSI[ _-]ZETA'
9208      model: 'Zeta'
9209    - regex: 'KENEKSI[ _-]SIGMA'
9210      model: 'Sigma'
9211    - 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)'
9212      model: '$1'
9213
9214# Kempler & Strauss (www.kemplerusa.com)
9215'Kempler & Strauss':
9216  regex: 'Alumini_?3_?Plus|Alumini ?[23]|KEMPLER_(?:P1|TV|[X9]|8_PLUS)'
9217  device: 'smartphone'
9218  models:
9219    - regex: 'Alumini ?2'
9220      model: 'Alumini 2'
9221    - regex: 'Alumini_?3_?Plus'
9222      model: 'Alumini 3 Plus'
9223    - regex: 'Alumini3'
9224      model: 'Alumini 3'
9225    - regex: 'KEMPLER_P1'
9226      model: 'P1'
9227    - regex: 'KEMPLER_TV'
9228      model: 'TV'
9229    - regex: 'KEMPLER_X'
9230      model: 'X'
9231    - regex: 'KEMPLER_8_PLUS'
9232      model: '8 Plus'
9233    - regex: 'KEMPLER_9'
9234      model: '9'
9235
9236# Kiano
9237Kiano:
9238  regex: 'Kiano|Elegance_[45]_[015](?:_PRO)?|Elegance 6|CORE 10.1 DUAL 3G|Intelect ?(7|8|10)|Slim ?Tab ?\d+(?:[_ ]3GR?)?(?:[);/ ]|$)'
9239  device: 'smartphone'
9240  models:
9241    - regex: 'Slim ?Tab ?(\d+)(?:[_ ]3GR?)?'
9242      model: 'Slim Tab $1'
9243      device: 'tablet'
9244    - regex: 'CORE 10.1 DUAL 3G'
9245      model: 'CORE 10.1 DUAL 3G'
9246      device: 'tablet'
9247    - regex: 'Elegance_(5)_([51])_Pro'
9248      model: 'Elegance $1.$2" Pro'
9249    - regex: 'Elegance_([45])_([015])'
9250      model: 'Elegance $1.$2"'
9251    - regex: 'Elegance 6'
9252      model: 'Elegance 6 5.85"'
9253    - regex: '(Kiano)?(Intelect|Elegance) ?(7|8|10)?'
9254      model: '$2 $3'
9255      device: 'tablet'
9256    - regex: 'Kiano[ _]([^;/]+) Build'
9257      model: '$1'
9258
9259# Kingsun
9260Kingsun:
9261  regex: 'Kingsun[ _-]'
9262  device: 'smartphone'
9263  models:
9264    - regex: 'Kingsun[ _-]([^;/]+) Build'
9265      model: '$1'
9266    - regex: 'Kingsun[ -]((?!Build)[a-z0-9_-]+)'
9267      model: '$1'
9268
9269# Kocaso
9270Kocaso:
9271  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)(?:[);/ ]|$)'
9272  device: 'tablet'
9273  models:
9274    - regex: 'M6200(?:[);/ ]|$)'
9275      model: 'M6200'
9276    - regex: 'M729(?:[);/ ]|$)'
9277      model: 'M729'
9278    - regex: 'M(7[357][026])[hw]?(?:[);/ ]|$)'
9279      model: 'M$1'
9280    - regex: 'M(76[01236])[bw]?(?:[);/ ]|$)'
9281      model: 'M$1'
9282    - regex: 'MX780(?:[);/ ]|$)'
9283      model: 'MX780'
9284    - regex: 'M(83[016])(?:[);/ ]|$)'
9285      model: 'M$1'
9286    - regex: 'M(8[567]0)(?:[);/ ]|$)'
9287      model: 'M$1'
9288    - regex: 'M851(?:[);/ ]|$)'
9289      model: 'M851'
9290    - regex: 'M1050S(?:[);/ ]|$)'
9291      model: 'M1050s'
9292    - regex: 'M(106[012368])W?(?:[);/ ]|$)'
9293      model: 'M$1'
9294    - regex: 'M1070(?:[);/ ]|$)'
9295      model: 'M1070'
9296    - regex: 'MX736(?:-kit)?(?:[);/ ]|$)'
9297      model: 'MX736'
9298    - regex: 'MX780(?:[);/ ]|$)'
9299      model: 'MX780'
9300    - regex: 'Kocaso[ _\-]?([^;/]+) Build'
9301      model: '$1'
9302    - regex: 'Kocaso[ _\-]?([a-z0-9_-]+)'
9303      model: '$1'
9304
9305# Kogan
9306Kogan:
9307  regex: 'Kogan'
9308  device: 'smartphone'
9309  models:
9310    - regex: 'Kogan[ _-]([^;/]+) Build'
9311      model: '$1'
9312    - regex: 'Kogan[ _-]([a-z0-9_-]+)'
9313      model: '$1'
9314
9315# Komu
9316Komu:
9317  regex: 'Komu[_ -]'
9318  device: 'smartphone'
9319  models:
9320    - regex: 'Komu[_ -]([^;/]+) Build'
9321      model: '$1'
9322    - regex: 'Komu[_ -]([a-z0-9_-]+)'
9323      model: '$1'
9324
9325# Koobee
9326Koobee:
9327  regex: 'Koobee'
9328  device: 'smartphone'
9329  models:
9330    - regex: 'Koobee[ _\-]?([^;/]+) Build'
9331      model: '$1'
9332    - regex: 'Koobee[ _\-]?([a-z0-9_-]+)'
9333      model: '$1'
9334
9335# Kumai
9336Kumai:
9337  regex: '(?:KM-)?Kumai'
9338  device: 'smartphone'
9339  models:
9340    - regex: '(?:KM-)?Kumai[ _\-]?([^;/]+) Build'
9341      model: '$1'
9342    - regex: '(?:KM-)?Kumai[ _\-]?([a-z0-9_-]+)'
9343      model: '$1'
9344
9345# KT-Tech
9346KT-Tech:
9347  regex: '(KM-[a-z0-9]+|EV-[a-z0-9]+)(?:[);/ ]|$)'
9348  device: 'smartphone'
9349  model: '$1'
9350
9351# kddi
9352KDDI:
9353  regex: 'kddi-([a-z0-9]+)'
9354  device: 'feature phone'
9355  model: '$1'
9356
9357# Kodak
9358Kodak:
9359  regex: 'KODAK|(?:IM5|KD50|Ektra|Smartway_T1)(?:[);/ ]|$)'
9360  device: 'smartphone'
9361  models:
9362    - regex: 'IM5'
9363      model: 'IM5'
9364    - regex: 'KD50'
9365      model: 'Seren KD50'
9366    - regex: 'Ektra(?:[);/ ]|$)'
9367      model: 'Ektra'
9368    - regex: '(?:KODAK[_ ])?SMARTWAY[_ ]([MTX]1|T3)'
9369      model: 'Smartway $1'
9370    - regex: 'Tablet (7|10)'
9371      device: 'tablet'
9372      model: 'Tablet $1'
9373
9374# KOPO
9375KOPO:
9376  regex: 'KOPO[ _-]'
9377  device: 'smartphone'
9378  models:
9379    - regex: 'KOPO[ _\-]?([^/;]+) Build'
9380      model: '$1'
9381    - regex: 'KOPO[ _\-]?([^);/ ]+)'
9382      model: '$1'
9383
9384# Koridy
9385Koridy:
9386  regex: 'KORIDY[ _-]([^/;]+) Build'
9387  device: 'smartphone'
9388  model: '$1'
9389
9390# KRONO
9391KRONO:
9392  regex: 'NET1100|NET_(?:TITAN|VOLT)'
9393  device: 'smartphone'
9394  models:
9395    - regex: 'NET1100'
9396      model: 'NET 1100'
9397    - regex: 'NET_(TITAN|VOLT)'
9398      model: 'NET $1'
9399
9400#k-touch
9401K-Touch:
9402  regex: 'K-?Touch[ _][a-z0-9]+|Pace 2 Lite(?:[);/ ]|$)'
9403  device: 'smartphone'
9404  models:
9405    - regex: 'Pace 2 Lite'
9406      model: 'Pace 2 Lite'
9407    - regex: 'K-?Touch[ _]([^/;]*)[ _]Build'
9408      model: '$1'
9409    - regex: 'K-?Touch[ _]([a-z0-9]+)'
9410      model: '$1'
9411
9412# Diva
9413Diva:
9414  regex: '(QC-(?:703GN|704GA|803GN|1013G|7BHD))(?:[);/ ]|$)'
9415  device: 'tablet'
9416  model: '$1'
9417
9418# kyocera (kyocera.co.jp, kyocera.com)
9419Kyocera:
9420  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|[47]04KC|A001KC|WX10K|URBANO PROGRESSO|E7110)(?:[-_]u2?)?(?:[);/ ]|$)'
9421  device: 'smartphone'
9422  models:
9423    # explicit smartphone models
9424    - regex: 'C5120(?:[);/ ]|$)'
9425      model: 'Milano'
9426    - regex: 'S4-KC(?:[);/ ]|$)'
9427      model: 'One S4'
9428    - regex: 'S6-KC(?:[);/ ]|$)'
9429      model: 'One S6'
9430    - regex: 'S8-KC(?:[);/ ]|$)'
9431      model: 'One S8'
9432    - regex: 'C5155(?:[);/ ]|$)'
9433      model: 'Rise'
9434    - regex: '602KC(?:[);/ ]|$)'
9435      model: 'Digno G'
9436    - regex: '503KC(?:[);/ ]|$)'
9437      model: 'Digno E'
9438    - regex: '404KC(?:[);/ ]|$)'
9439      model: 'Digno C'
9440    - regex: '704KC(?:[);/ ]|$)'
9441      model: 'Digno J'
9442    - regex: '302KC(?:[);/ ]|$)'
9443      model: 'Digno T'
9444    - regex: 'NP501KC(?:[);/ ]|$)'
9445      model: 'Digno'
9446    - regex: 'WX10K(?:[);/ ]|$)'
9447      model: 'Digno Dual 2'
9448    - regex: 'KYV36(?:[);/ ]|$)'
9449      model: 'Digno Rafre'
9450    - regex: '901KC(?:[);/ ]|$)'
9451      model: 'Digno BX'
9452    - regex: 'KYV39(?:[);/ ]|$)'
9453      model: 'Miraie F'
9454    - regex: 'KYX31(?:[);/ ]|$)'
9455      model: 'Infobar XV'
9456    - regex: 'C5170(?:[);/ ]|$)'
9457      model: 'Hydro'
9458    - regex: 'C5215(?:[);/ ]|$)'
9459      model: 'Hydro EDGE'
9460    - regex: 'C6522N?'
9461      model: 'Hydro XTRM'
9462    - regex: 'C6730'
9463      model: 'Hydro ICON'
9464    - regex: 'C6750'
9465      model: 'Hydro ELITE'
9466    - regex: 'C6530N'
9467      model: 'Hydro LIFE'
9468    - regex: 'C6740(N)?'
9469      model: 'Hydro WAVE'
9470    - regex: 'C6743'
9471      model: 'Hydro Reach'
9472    - regex: 'E6560[CT]'
9473      model: 'DuraForce'
9474    - regex: '(?:KYOCERA-)?E68[12]0'
9475      model: 'DuraForce Pro'
9476    - regex: '(?:KYOCERA-)?E69[12]0'
9477      model: 'DuraForce Pro 2'
9478    - regex: 'E7110'
9479      model: 'DuraForce Ultra 5G'
9480    - regex: 'KC-S701'
9481      model: 'Torque'
9482    - regex: 'KYG01'
9483      model: 'Torque 5G'
9484    - regex: 'KYL21(?:[);/ ]|$)'
9485      model: 'Digno S'
9486    - regex: 'KYL23(?:[);/ ]|$)'
9487      model: 'Miraie'
9488    - regex: 'KYY24(?:[);/ ]|$)'
9489      model: 'Torque G01'
9490    - regex: 'KYF32(?:[);/ ]|$)'
9491      model: 'Easy Mobile Phone'
9492    - regex: 'KYF35(?:[);/ ]|$)'
9493      model: 'Marvera'
9494    - regex: 'KYF40(?:[);/ ]|$)'
9495      model: 'Mamorino 5'
9496    - regex: 'KYF3[179](?:[);/ ]|$)'
9497      model: 'Gratina 4G'
9498    - regex: 'KYV48(?:[);/ ]|$)'
9499      model: 'Gratina KYV48'
9500    - regex: 'KYF33(?:[);/ ]|$)'
9501      model: 'Torque X01'
9502    - regex: 'KYV35(?:[);/ ]|$)'
9503      model: 'Torque G02'
9504    - regex: 'KYV41(?:[);/ ]|$)'
9505      model: 'Torque G03'
9506    - regex: 'KYV46(?:[);/ ]|$)'
9507      model: 'Torque G04'
9508    - regex: 'KYV32?(?:[);/ ]|$)'
9509      model: 'Basio'
9510    - regex: 'KYV47(?:-u)?(?:[);/ ]|$)'
9511      model: 'Basio 4'
9512    - regex: 'KYV43(?:[);/ ]|$)'
9513      model: 'Basio 3'
9514    - regex: '705KC(?:[);/ ]|$)'
9515      model: 'Kantan Sumaho'
9516    - regex: 'KYV37(?:[);/ ]|$)'
9517      model: 'Qua Phone'
9518    - regex: 'KYV42(?:_u)?(?:[);/ ]|$)'
9519      model: 'Qua Phone QX'
9520    - regex: 'KYV44(?:_u2?)?(?:[);/ ]|$)'
9521      model: 'Qua Phone QZ'
9522    - regex: 'KYT33(?:[);/ ]|$)'
9523      model: 'Qua Tab QZ10'
9524      device: 'tablet'
9525    - regex: 'KYT32(?:[);/ ]|$)'
9526      model: 'Qua Tab QZ8'
9527      device: 'tablet'
9528    - regex: 'KYT31(?:[);/ ]|$)'
9529      model: 'Qua Tab 01'
9530      device: 'tablet'
9531    - regex: 'KYV40U?(?:[);/ ]|$)'
9532      model: 'Rafre'
9533    - regex: 'KYV33(?:[);/ ]|$)'
9534      model: 'Infobar A03'
9535    - regex: 'KYY21(?:[);/ ]|$)'
9536      model: 'Urbano L01'
9537    - regex: 'KYY22(?:[);/ ]|$)'
9538      model: 'Urbano L02'
9539    - regex: 'KYY23(?:[);/ ]|$)'
9540      model: 'Urbano L03'
9541    - regex: 'KYV31(?:[);/ ]|$)'
9542      model: 'Urbano V01'
9543    - regex: 'KYV34(?:[);/ ]|$)'
9544      model: 'Urbano V02'
9545    - regex: 'KYV(?:45|38)(?:[);/ ]|$)'
9546      model: 'Urbano V03'
9547    - regex: '(?:Kyocera-)?E6790(?:TM)?'
9548      model: 'DuraForce XD'
9549    - regex: 'X3-KC(?:[);/ ]|$)'
9550      model: 'One X3'
9551    - regex: 'E6782(?:[);/ ]|$)'
9552      model: 'Brigadier'
9553    - regex: 'E6782L(?:[);/ ]|$)'
9554      model: 'DuraScout'
9555    - regex: '(KC-S301AE|SZJ-JS201)(?:[);/ ]|$)'
9556      model: '$1'
9557    - regex: 'A001KC(?:[);/ ]|$)'
9558      model: 'Katan Sumaho 2'
9559    - regex: 'URBANO PROGRESSO(?:[);/ ]|$)'
9560      model: 'Urbano Progresso'
9561
9562    # explicit feature phone models
9563    - regex: 'S2151'
9564      model: 'Coast'
9565      device: 'feature phone'
9566
9567    - regex: 'Kyocera-KZ-([a-z0-9]+)'
9568      model: 'KZ $1'
9569    - regex: 'Kyocera(?:[\-/])?([a-z0-9]+)'
9570      model: '$1'
9571    - regex: '(KWC|QC)-?([a-z0-9]+)'
9572      model: '$1-$2'
9573
9574# Mymaga (support.mymaga.eu)
9575Mymaga:
9576  regex: '(MOVE_S201)(?:[);/ ]|$)'
9577  device: 'tablet'
9578  model: '$1'
9579
9580# Krüger&Matz or Kruger&Matz (www.krugermatz.com)
9581Krüger&Matz:
9582  regex: 'Kruger[ _&]Matz|KrugerMatz[ _]|FLOW ?5PLUS|FLOW 4 PLUS|Flow 9|FLOW_5|FLOW7|FLOW6(?:S|Lite)|DRIVE9|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)'
9583  device: 'smartphone'
9584  models:
9585    - regex: 'MOVE8mini'
9586      model: 'MOVE 8 Mini'
9587    - regex: 'MOVE_6_mini'
9588      model: 'MOVE 6 Mini'
9589    - regex: 'MOVE[_ ]([78]|6S?)'
9590      model: 'MOVE $1'
9591    - regex: 'DRIVE 4 mini LTE'
9592      model: 'DRIVE 4 mini LTE'
9593    - regex: 'DRIVE[ _]?([4569][S]?)(?:[);/ ]|$)'
9594      model: 'DRIVE $1'
9595    - regex: 'FLOW ?([54]) ?PLUS(?:[);/ ]|$)'
9596      model: 'FLOW $1 Plus'
9597    - regex: 'FLOW6Lite(?:[);/ ]|$)'
9598      model: 'FLOW 6 Lite'
9599    - regex: 'FLOW[ _]?([4-7][S]?|9)(?:[);/ ]|$)'
9600      model: 'FLOW $1'
9601    - regex: 'LIVE4_(KM043[89])(?:[);/ ]|$)'
9602      model: 'LIVE 4 $1'
9603    - regex: 'KrugerMatz_LIVE4(?:[);/ ]|$)'
9604      model: 'LIVE 4'
9605    - regex: '_LIVE5_(KM0450)(?:[);/ ]|$)'
9606      model: 'LIVE 5 $1'
9607    - regex: 'LIVE 5 PLUS(?:[);/ ]|$)'
9608      model: 'LIVE 5 Plus'
9609    - regex: 'LIVE_6plus(?:[);/ ]|$)'
9610      model: 'LIVE 6 Plus' # KM0454
9611    - regex: 'LIVE 7S(?:[);/ ]|$)'
9612      model: 'LIVE 7S'
9613    - regex: 'Live ([89])(?:[);/ ]|$)'
9614      model: 'LIVE $1'
9615    - regex: 'MOVE9(?:[);/ ]|$)'
9616      model: 'MOVE 9'
9617
9618    - regex: 'KM(106[679])(?:[);/ ]|$)'
9619      device: 'tablet'
9620      model: 'EAGLE $1 10.1"'
9621    - regex: 'KM(1070)(?:[);/ ]|$)'
9622      device: 'tablet'
9623      model: 'EAGLE $1 10.5"'
9624    - regex: 'KM(1065G)(?:[);/ ]|$)'
9625      device: 'tablet'
9626      model: 'EAGLE $1 10.1"'
9627    - regex: 'KM0(701)_1(?:[);/ ]|$)'
9628      device: 'tablet'
9629      model: 'EAGLE $1 7.1"'
9630    - regex: 'KM0(805)_1(?:[);/ ]|$)'
9631      device: 'tablet'
9632      model: 'EAGLE $1 8.0"'
9633    - regex: 'KM0(702)(?:[);/ ]|$)'
9634      device: 'tablet'
9635      model: 'EAGLE $1 7.0"'
9636
9637# LAIQ
9638LAIQ:
9639  regex: 'LAIQ'
9640  device: 'smartphone'
9641  models:
9642    - regex: '(Glam|New York|Dubai)(?:[);/ ]|$)'
9643      model: '$1'
9644
9645# AIS
9646AIS:
9647  regex: 'iris708|Kingcomm C500'
9648  device: 'smartphone'
9649  models:
9650    - regex: 'iris708'
9651      model: 'LAVA PRO 4.5'
9652    - regex: 'Kingcomm C500'
9653      model: 'Super Smart Plus X3'
9654
9655# Lava (Lavamobiles.com)
9656Lava:
9657  regex: 'Lava[ _]|LAVA(?:A1|X10)|(?:DISCOVER136|KKT QUADRA)|iris[ _]?([^/;]+)(?:\)| Build)|A(?:67|76) Build|X1 Selfie Build|X41 Plus Build|(?:Flair Z1|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)(?:[);/ ]|$)'
9658  device: 'smartphone'
9659  models:
9660    # explicit smartphone models
9661    - regex: 'Flair Z1(?:[);/ ]|$)'
9662      model: 'Flair Z1'
9663    - regex: 'AH9910(?:[);/ ]|$)'
9664      model: 'Benco Y40'
9665    - regex: 'A97 IPS(?:[);/ ]|$)'
9666      model: 'A97 IPS'
9667    - regex: 'A97 2GB PLUS(?:[);/ ]|$)'
9668      model: 'A97 2GB Plus'
9669    - regex: 'A76Plus(?:[);/ ]|$)'
9670      model: 'A76 Plus'
9671    - regex: 'Pixel V2\+(?:[);/ ]|$)'
9672      model: 'Pixel V2 Plus'
9673    - regex: 'Pixel ?V([12])(?:[);/ ]|$)'
9674      model: 'Pixel V$1'
9675    - regex: 'X1 Selfie(?:[);/ ]|$)'
9676      model: 'Iris X1 Selfie'
9677    - regex: 'X41 Plus(?:[);/ ]|$)'
9678      model: 'X41 Plus'
9679    - regex: '(?:LAVA[_ ]?)?A([13]|67|76)(?:[);/ ]|$)'
9680      model: 'A$1'
9681    - regex: 'LAVA_R1'
9682      model: 'R1'
9683    - regex: 'Z61_2GB(?:[);/ ]|$)'
9684      model: 'Z61'
9685    - regex: 'LMX06(?:[);/ ]|$)'
9686      model: 'Z6'
9687    - regex: 'Z60s(?:[);/ ]|$)'
9688      model: 'Z60s'
9689    - regex: 'LE9920[ _]P(?:[);/ ]|$)'
9690      model: 'V7'
9691    - regex: 'LE9920(?:[);/ ]|$)'
9692      model: 'Z53'
9693    - regex: 'LH9910(?:[);/ ]|$)'
9694      model: 'Z52'
9695    - regex: 'LH9810(?:[);/ ]|$)'
9696      model: 'Iris 52'
9697    - regex: 'LE9930(?:[);/ ]|$)'
9698      model: 'Iris 59'
9699    - regex: 'LH9950(?:[);/ ]|$)'
9700      model: 'Iris 46'
9701    - regex: 'LN9910(?:[);/ ]|$)'
9702      model: 'Z41'
9703    - regex: 'LE9910(?:[);/ ]|$)'
9704      model: 'V8'
9705    - regex: 'LH9920(?:[);/ ]|$)'
9706      model: 'V+6'
9707    - regex: 'Grand2c'
9708      model: 'Grand 2C'
9709    # explicit feature phone models
9710    - regex: 'DISCOVER136'
9711      device: 'feature phone'
9712      model: 'Discover 136'
9713    - regex: 'KKT QUADRA'
9714      device: 'feature phone'
9715      model: 'KKT Quadra'
9716    - regex: 'KKT40[ ]?Power[P\+]'
9717      device: 'feature phone'
9718      model: 'KKT40 Power Plus'
9719    # explicit tablet models
9720    - regex: 'Ivory(S1|S4G)?(?:[);/ ]|$)'
9721      device: 'tablet'
9722      model: 'Ivory $1'
9723    # explicit general
9724    - regex: 'iris[ _]?([^/;)]+)(?: Build|[);])'
9725      model: 'Iris $1'
9726    - regex: 'Lava[ _]?([^/;)]+)(?: Build|[);])'
9727      model: '$1'
9728    - regex: 'LAVA[ _]([^/;)]+)/MIDP'
9729      device: 'feature phone'
9730      model: '$1'
9731
9732# SKG (skgmobile.net | skgmobile.com)
9733SKG:
9734  regex: '(Modern[ _](?:S10?|S[3679]))(?:[);/ ]|$)'
9735  device: 'smartphone'
9736  model: '$1'
9737
9738# iVA
9739iVA:
9740  regex: '(LAMCY (?:L3[05]0|C100|L400)|IVA S6)(?:[);/ ]|$)'
9741  device: 'smartphone'
9742  models:
9743    - regex: 'LAMCY (L3[05]0|C100|L400)(?:[);/ ]|$)'
9744      model: 'Lamcy $1'
9745    - regex: 'IVA S6(?:[);/ ]|$)'
9746      model: 'S6'
9747
9748# Landvo
9749Landvo:
9750  regex: 'XM[123]00|(?<!Blade )S6 Build'
9751  device: 'smartphone'
9752  models:
9753    - regex: 'S6 Build' # clone Galaxy S6
9754      model: 'S6'
9755    - regex: 'XM([123])00([^/;]*) Build'
9756      model: 'XM$100$2'
9757
9758# Land Rover
9759Land Rover:
9760  regex: 'Land[ ]?Rover[d]?[ _-](?:X1[0-9]|Explore|T878|L15\+|V18|V[168]|X)(?:[);/ ]|$)|Polar3|Vphone[- ]X3'
9761  device: 'smartphone'
9762  models:
9763    - regex: 'Land[ ]?Rover[d]?[ _-](X1[0-9]|Explore|T878|L15\+|V18|V[168]|X)(?:[);/ ]|$)'
9764      model: '$1'
9765    - regex: 'Vphone[- ]X3'
9766      model: 'Vphone X3'
9767    - regex: 'Polar3'
9768      model: 'Ioutdoor Polar 3'
9769
9770# iOutdoor
9771iOutdoor:
9772  regex: 'iOutdoor (X)(?:[);/ ]|$)'
9773  device: 'smartphone'
9774  model: '$1'
9775
9776# lanix (lanix.com)
9777Lanix:
9778  regex: 'LANIX-([a-z0-9]+)|Ilium[ _]|IliumPad|X120C|Alpha 950'
9779  device: 'smartphone'
9780  models:
9781    - regex: 'ILIUM[ _]?PAD[ _]?([^;/]+)(?: Build|[;)])'
9782      model: 'Ilium Pad $1'
9783      device: 'tablet'
9784    - regex: 'X120C'
9785      model: 'Ilium X120C'
9786    - regex: 'Ilium[ _](Alpha [15]s|Alpha [379]|L(?:200|6[12]0|9[0125]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)|M[579]s)(?:[);/ ]|$)'
9787      model: 'Ilium $1'
9788    - regex: 'ILIUM[ _]([^;/]+) Build'
9789      model: 'Ilium $1'
9790    - regex: 'Alpha 950'
9791      model: 'Ilium Alpha 950'
9792    - regex: 'LANIX-([a-z0-9]+)'
9793      device: 'feature phone'
9794      model: '$1'
9795
9796# Lark
9797Lark:
9798  regex: '(Lark|Cumulus|Evolution|FreeMe|Ultimate (?:X4|7i))[ _-]|Build/Lark|Bjorn[_ ]SP-500|FreeBird 5WiFi'
9799  device: 'tablet'
9800  models:
9801    - regex: 'Cumulus[ _](5\.5|[56])[ _]HD'
9802      model: 'Cumulus $1 HD'
9803      device: 'smartphone'
9804    - regex: 'FreeMe X2 ([79]) (?:ver|v)?\.([23])'
9805      model: 'FreeMe X2 $1 Version $2'
9806    - regex: 'FreeMe X4 7 3G HD'
9807      model: 'FreeMe X4 7HD 3G'
9808    - regex: 'FreeMe[ _]X2[ _]([7-9])'
9809      model: 'FreeMe X2 $1'
9810    - regex: 'FreeMe X4[ _]7[_ ]?HD'
9811      model: 'FreeMe X4 7HD'
9812    - regex: 'FreeMe X4[ _]9'
9813      model: 'FreeMe X4 9'
9814    - regex: 'FreeMe X4 7'
9815      model: 'FreeMe X4 7'
9816    - regex: 'FreeBird 5WiFi'
9817      model: 'FreeBird 5 WiFi'
9818    - regex: '(?:Lark[ _-])?Evolution[ _](X2 7 3G-GPS|X4[_ ]10\.1|10|X4[_ ]7[ _]IPS)'
9819      model: 'Evolution $1'
9820    - regex: 'Ul(?:ti|it)mate (X4 10\.1 3G IPS|X4 8s 3G|7i)'
9821      model: 'Ultimate $1'
9822    - regex: 'PHABLET 7'
9823      model: 'Phablet 7'
9824    - regex: 'Phablet 6\.0'
9825      model: 'Phablet 6.0'
9826      device: 'smartphone'
9827    - regex: 'Bjorn[_ ]SP-500'
9828      model: 'Bjorn SP-500'
9829      device: 'smartphone'
9830    - regex: 'Cirrus[ _](4\.5|[45])'
9831      model: 'Cirrus $1'
9832      device: 'smartphone'
9833    - regex: 'Lark[ _](Stratus[_ ]5)'
9834      model: '$1'
9835      device: 'smartphone'
9836
9837# lct
9838LCT:
9839  regex: 'LCT_([a-z0-9]+)'
9840  device: 'feature phone'
9841  model: '$1'
9842
9843# Le Pan
9844'Le Pan':
9845  regex: 'Le ?Pan|TC970 ([^;/]+)Build'
9846  device: 'tablet'
9847  models:
9848    - regex: 'TC802A'
9849      model: 'Le Pan Mini'
9850    - regex: 'TC970 ([^;/]+)Build'
9851      model: 'TC970 $1'
9852    - regex: 'Le ?Pan ?(II|S)(?:[);/ ]|$)'
9853      model: 'Le Pan $1'
9854    - regex: 'Le ?Pan ?([^;/]+) Build'
9855      model: '$1'
9856
9857# Leagoo
9858Leagoo:
9859  regex: '(?:MY)?LEAGOO[ _-]?|(?:XRover(?: C)?|Shark 5000|M5 EDGE|KIICAA (POWER|MIX)|Leapad[ _](?:X|7s)|Alfa 1|Elite [15]|Venture 1|Z10-E|M9 Pro|Power 5|Power 2(?: Pro)?)(?:[);/ ]|$)'
9860  device: 'smartphone'
9861  models:
9862    - regex: '(?:LEAGOO[- _])?M([89])[_-]?Pro(?:[);/ ]|$)'
9863      model: 'M$1 Pro'
9864    - regex: 'LEAGOO[- _](Z[156]|Z5c|M[58]|T1)(?:[);/ ]|$)'
9865      model: '$1'
9866    - regex: 'M5 EDGE'
9867      model: 'M5 Edge'
9868    - regex: 'LEAGOO[_ ]Lead([57])'
9869      model: 'Lead $1'
9870    - regex: 'KIICAA POWER'
9871      model: 'KICCAA Power'
9872    - regex: 'KIICAA MIX'
9873      model: 'KICCAA Mix'
9874    - regex: 'Elite ([15])(?:[);/ ]|$)'
9875      model: 'Elite $1'
9876    - regex: 'Shark 5000(?:[);/ ]|$)'
9877      model: 'Shark 5000'
9878    - regex: 'Power 2 Pro(?:[);/ ]|$)'
9879      model: 'Power 2 Pro'
9880    - regex: 'Power ([25])(?:[);/ ]|$)'
9881      model: 'Power $1'
9882    - regex: 'Venture 1(?:[);/ ]|$)'
9883      model: 'Venture 1'
9884    - regex: 'Alfa 1(?:[);/ ]|$)'
9885      model: 'Alfa 1'
9886    - regex: 'XRover( C)?(?:[);/ ]|$)'
9887      model: 'XRover$1'
9888    - regex: '(?:LEAGOO[- _])?(Z10-E|M6)(?:[);/ ]|$)'
9889      model: '$1'
9890    - regex: '(?:My)?Leagoo[- _](E4)(?:[);/ ]|$)'
9891      model: '$1'
9892
9893    - regex: '(?:Leapad[ _])(7s|10|X)'
9894      model: 'LeaPad $1'
9895      device: 'tablet'
9896
9897# Ledstar
9898Ledstar:
9899  regex: '(?:Ledstar[_ ])?(?:Trendy 5.0|Novus_Premium_6.0)'
9900  device: 'smartphone'
9901  models:
9902    - regex: 'Trendy 5.0'
9903      model: 'Trendy 5.0'
9904    - regex: 'Ledstar_Novus_Premium_6.0(?:[);/ ]|$)'
9905      model: 'Novus Premium 6.0"'
9906
9907# LeEco
9908LeEco:
9909  regex: 'Letv|LeEco|Le ?X[0-9][^;/]+|Le Max|Le [12]|Le2[_ ]x527|X900 Build|(?:X[89]00\+|X52[67])(?:[);/ ]|$)'
9910  device: 'smartphone'
9911  models:
9912    - regex: 'X800\+'
9913      model: 'Le 1 Pro'
9914    - regex: 'X900\+'
9915      model: 'Max X900+'
9916    - regex: 'X50[10]'
9917      model: 'Le 1S'
9918    - regex: '(X910)'
9919      model: '$1'
9920    - regex: 'X900 Build'
9921      model: 'Le X900'
9922    - regex: 'LEX72[07](?:[);/ ]|$)'
9923      model: 'Le Pro 3'
9924    - regex: '(?:Le ?X526|Le2[_ ]x527|Le 2|X52[67])(?:[);/ ]|$)'
9925      model: 'Le 2'
9926    - regex: 'LEX820'
9927      model: 'Le Max 2'
9928    - regex: 'Le ?X([^;/]+) Build'
9929      model: 'Le X$1'
9930    - regex: 'Le ?X([^) ;/]+)'
9931      model: 'Le X$1'
9932    - regex: 'Le ?([12][^;/]+) Build'
9933      model: 'Le $1'
9934    - regex: 'Le Max([^;/]*) Build'
9935      model: 'Le Max$1'
9936    - regex: 'Le Max([^ ;/]*)'
9937      model: 'Le Max$1'
9938    - regex: 'LeEco ([^;/]+) Build'
9939      model: '$1'
9940
9941# Lephone
9942Lephone:
9943  regex: 'lephone[ _]|lephoneP1'
9944  device: 'smartphone'
9945  models:
9946    - regex: 'lephone[ _](K7|K10)'
9947      device: 'feature phone'
9948      model: '$1'
9949    - regex: 'lephone(?:[ _])?(W(1[0125]|[279])|T2|P1)(?:[);/ ]|$)'
9950      model: '$1'
9951    - regex: 'lephone_W7_plus'
9952      model: 'W7 Plus'
9953
9954# lenco
9955Lenco:
9956  regex: 'Lenco ([^/);]*)(?: Build|[);])'
9957  device: 'tablet'
9958  models:
9959    - regex: 'LENCO Diverso-700'
9960      device: 'portable media player'
9961      model: 'Diverso 700'
9962    - regex: 'Lenco ([^/);]*)(?: Build|[);])'
9963      model: '$1'
9964
9965
9966# Aligator
9967Aligator:
9968  regex: 'ALIGATOR[_ ]'
9969  device: 'smartphone'
9970  models:
9971    - regex: 'ALIGATOR[ _](S4080|S50(?:6[56]|[678]0)|S5540|RX510|S6[05]00|RX710|RX800|S5520)(?:[);/ ]|$)'
9972      model: '$1'
9973
9974# lenovo (lenovo.com)
9975Lenovo:
9976  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)(?:[);/ ]|$)'
9977  device: 'smartphone'
9978  models:
9979    - regex: 'Lenovo ?G780'
9980      model: 'G780'
9981      device: 'desktop'
9982    - regex: 'Lenovo ?A3500-FL'
9983      model: 'IdeaTab A7-40'
9984      device: 'tablet'
9985    - regex: '(?:Lenovo ?)?A3500-(?:H|HV|F)'
9986      model: 'IdeaTab A7-50'
9987      device: 'tablet'
9988    - regex: '(?:Lenovo[ _])?A5500-[HF]'
9989      model: 'IdeaTab A8-50'
9990      device: 'tablet'
9991    - regex: 'Lenovo ?A7600'
9992      model: 'IdeaTab A10-70'
9993      device: 'tablet'
9994    - regex: 'A2107A-H'
9995      model: 'A2107'
9996      device: 'tablet'
9997    - regex: 'A2109A'
9998      model: 'IdeaTab A2109A'
9999      device: 'tablet'
10000    - regex: 'TB2-X30[FL]'
10001      model: 'Tab 2 A10-30'
10002      device: 'tablet'
10003    - regex: 'TB-X6C6X'
10004      model: 'Tab K10'
10005      device: 'tablet'
10006    - regex: 'YT3-X50[FLM]'
10007      model: 'Yoga Tab 3'
10008      device: 'tablet'
10009    - regex: 'TB3-730X'
10010      model: 'TAB3 7'
10011      device: 'tablet'
10012    - regex: 'TB3-710[IF]'
10013      model: 'TAB3 7 Essential'
10014      device: 'tablet'
10015    - regex: 'TB-7703X'
10016      model: 'TAB3 7 Plus'
10017      device: 'tablet'
10018    - regex: 'TB3-X70L'
10019      model: 'TAB3 10 Plus'
10020      device: 'tablet'
10021    - regex: 'TB-8703X'
10022      model: 'TAB3 8 Plus'
10023      device: 'tablet'
10024    - regex: 'TAB 2 A8-50LC'
10025      model: 'TAB2 A8-50LC'
10026      device: 'tablet'
10027    - regex: '501LV(?:[);/ ]|$)'
10028      model: 'TAB2 8.0"'
10029      device: 'tablet'
10030    - regex: 'TAB 2 A10-70L(?:[);/ ]|$)'
10031      model: 'TAB 2 A10'
10032      device: 'tablet'
10033    - regex: '(?:TB3-850[FM]|601LV)(?:[);/ ]|$)'
10034      model: 'TAB3 8'
10035      device: 'tablet'
10036    - regex: '602LV(?:[);/ ]|$)'
10037      model: 'TAB3 8 Dual'
10038      device: 'tablet'
10039    - regex: 'TB-X304[FL]'
10040      model: 'TAB4 10'
10041      device: 'tablet'
10042    - regex: 'TB-8504X'
10043      model: 'TAB4 8'
10044      device: 'tablet'
10045    - regex: 'TB-8704X'
10046      model: 'TAB4 8 Plus'
10047      device: 'tablet'
10048    - regex: '(?:TB-X704[FVL]|70[12]LV)(?:[);/ ]|$)'
10049      model: 'TAB4 10 Plus'
10050      device: 'tablet'
10051    - regex: '801LV(?:[);/ ]|$)'
10052      model: 'TAB5 10.1"'
10053      device: 'tablet'
10054    - regex: 'TB-X103F(?:[);/ ]|$)'
10055      model: 'TAB10 10.1"'
10056      device: 'tablet'
10057    - regex: 'TB-X704A(?:[);/ ]|$)'
10058      model: 'Moto Tab'
10059      device: 'tablet'
10060    - regex: 'TB-X605F(?:[);/ ]|$)'
10061      model: 'Tab M10'
10062      device: 'tablet'
10063    - regex: 'TB-X705[FL](?:[);/ ]|$)'
10064      model: 'Tab P10'
10065      device: 'tablet'
10066    - regex: 'TB-J606[LF](?:[);/ ]|$)'
10067      model: 'Tab P11'
10068      device: 'tablet'
10069    - regex: 'TB-J706L(?:[);/ ]|$)'
10070      model: 'Tab P11 Pro'
10071      device: 'tablet'
10072    - regex: 'TB-7104[IF](?:[);/ ]|$)'
10073      model: 'Tab E7'
10074      device: 'tablet'
10075    - regex: 'TB-8304F1(?:[);/ ]|$)'
10076      model: 'Tab E8'
10077      device: 'tablet'
10078    - regex: 'TB-7304'
10079      model: 'Tab 7 Essential'
10080      device: 'tablet'
10081    - regex: 'TB-7504X(?:[);/ ]|$)'
10082      model: 'Tab 7'
10083      device: 'tablet'
10084    - regex: 'PB-6505'
10085      model: 'Tab V7'
10086      device: 'tablet'
10087    - regex: 'TB-X606[FXV](?:[);/ ]|$)'
10088      model: 'Tab M10 FHD Plus'
10089      device: 'tablet'
10090    - regex: 'TB-X605'
10091      model: 'Tab M10 FHD'
10092      device: 'tablet'
10093    - regex: 'Lenovo TB-X306'
10094      model: 'Tab M10 HD'
10095      device: 'tablet'
10096    - regex: 'Lenovo TB-X505' # 2019
10097      model: 'Tab M10'
10098      device: 'tablet'
10099    - regex: 'TB-7305[IX](?:[);/ ]|$)'
10100      model: 'Tab M7'
10101      device: 'tablet'
10102    - regex: 'Lenovo ?B8000(-[FH])?'
10103      model: 'Yoga Tablet 10'
10104      device: 'tablet'
10105    - regex: 'YOGA Tablet 2 Pro-1380[FL]'
10106      model: 'Yoga Tablet 2 Pro 13.3"'
10107      device: 'tablet'
10108    - regex: 'YOGA Tablet 2-1050[FL]'
10109      model: 'Yoga Tablet 2 10.1"'
10110      device: 'tablet'
10111    - regex: 'YOGA Tablet 2-830(?:[FL]|LC)'
10112      model: 'Yoga Tablet 2 8.0"'
10113      device: 'tablet'
10114    - regex: 'Lenovo ?B6000(-[FH])?'
10115      model: 'Yoga Tablet 8'
10116      device: 'tablet'
10117    - regex: 'YT3-X90(L|F|X)'
10118      model: 'Yoga 3 Pro'
10119      device: 'tablet'
10120    - regex: 'YT3-850[FL]'
10121      model: 'Yoga Tab 3 8'
10122      device: 'tablet'
10123    - regex: 'YT3-850M'
10124      model: 'Yoga Tab 3 10'
10125      device: 'tablet'
10126    - regex: 'YT-X703L'
10127      model: 'Yoga Tab 3 Plus'
10128      device: 'tablet'
10129    - regex: 'YT-X705[FL]'
10130      model: 'Yoga Smart Tab'
10131      device: 'tablet'
10132
10133    - regex: 'S6000(?:[);/ ]|$)'
10134      model: 'IdeaTab S6000'
10135      device: 'tablet'
10136    - regex: 'Lenovo ([ASB][0-9]{4})[A-Z]?\-[EHF]'
10137      model: 'IdeaTab $1'
10138      device: 'tablet'
10139    - regex: 'ThinkPadTablet_(A[0-9]{3})_'
10140      model: 'ThinkPad Tablet $1'
10141      device: 'tablet'
10142    - regex: 'ThinkPad ?Tablet([^;/]*) Build'
10143      model: 'ThinkPad Tablet$1'
10144      device: 'tablet'
10145    - regex: 'Lenovo ?A3300-(?:GV|H)'
10146      model: 'TAB 2 A7-30'
10147      device: 'tablet'
10148    - regex: 'TAB 2 A7-30[HGD]C'
10149      model: 'TAB 2 A7'
10150      device: 'tablet'
10151    - regex: 'TB-8504F'
10152      model: 'TAB 4 8'
10153      device: 'tablet'
10154    - regex: 'TB-8704F'
10155      model: 'Tab 4 8" Plus'
10156      device: 'tablet'
10157    - regex: 'TB-8704F'
10158      model: 'Tab 4 8" Plus'
10159      device: 'tablet'
10160    - regex: 'TB-X304X'
10161      model: 'Tab 4 10.1"'
10162      device: 'tablet'
10163    - regex: 'TB-X304X'
10164      model: 'Tab 4 10.1"'
10165      device: 'tablet'
10166    - regex: 'TB-X304F'
10167      model: 'TAB4 10'
10168      device: 'tablet'
10169    - regex: 'TB-X505[FX]'
10170      model: 'M10'
10171      device: 'tablet'
10172    - regex: 'TB-X104[FXL]'
10173      model: 'E10'
10174      device: 'tablet'
10175    - regex: 'Tab2A([0-9]-[0-9]{2}[a-z]?)'
10176      model: 'TAB 2 A$1'
10177      device: 'tablet'
10178    - regex: 'IdeaTab[ \-_]?([a-z0-9]+)'
10179      model: 'IdeaTab $1'
10180      device: 'tablet'
10181    - regex: 'YB-Q501F' # tablet/pc
10182      model: 'Yoga A12'
10183      device: 'tablet'
10184    - regex: 'YT-X705X'
10185      model: 'Yoga Smart Tab'
10186      device: 'tablet'
10187    - regex: 'Yoga Tablet([^;/]+) Build'
10188      model: 'Yoga Tablet$1'
10189      device: 'tablet'
10190    - regex: 'TB-8505FS'
10191      model: 'Smart Tab M8'
10192      device: 'tablet'
10193    - regex: 'TB-8505[FX]'
10194      model: 'Tab M8'
10195      device: 'tablet'
10196    - regex: 'TB-8705F'
10197      model: 'Tab M8 FHD'
10198      device: 'tablet'
10199    - regex: 'TB-8705F'
10200      model: 'Tab M8 FHD'
10201      device: 'tablet'
10202    - regex: 'Lenovo (TB[0-9]?\-[a-z0-9\-]+) Build'
10203      model: '$1'
10204      device: 'tablet'
10205    - regex: 'L18011(?:[);/ ]|$)'
10206      model: 'A5'
10207    - regex: 'L18081(?:[);/ ]|$)'
10208      model: 'A5s'
10209    - regex: 'L19111(?:[);/ ]|$)'
10210      model: 'A7'
10211    - regex: 'L10041(?:[);/ ]|$)'
10212      model: 'A8'
10213    - regex: 'L78121(?:[);/ ]|$)'
10214      model: 'Z6'
10215    - regex: 'Z2 Plus'
10216      model: 'Z2 Plus'
10217    - regex: 'Z2151'
10218      model: 'ZUK Edge'
10219    - regex: 'Z213[12]'
10220      model: 'ZUK Z2'
10221    - regex: 'Z2121'
10222      model: 'ZUK Z2 Pro'
10223    - regex: 'ZUK[ -_]([^/;]*)(?: Build|\))'
10224      model: 'ZUK $1'
10225    - regex: 'K10a40(?:[);/ ]|$)'
10226      model: 'C2'
10227    - regex: '(?:k50a40|K50-t5)(?:[);/ ]|$)'
10228      model: 'K3 Note'
10229    - regex: 'K(1[30]) Note(?:[);/ ]|$)'
10230      model: 'K$1 Note'
10231    - regex: 'A7010(?:a48)?(?:[);/ ]|$)'
10232      model: 'K4 Note'
10233    - regex: 'K350t(?:[);/ ]|$)'
10234      model: 'K5'
10235    - regex: 'L38011(?:[);/ ]|$)'
10236      model: 'K5 Play'
10237    - regex: '(?:L38041|K5 Pro)(?:[);/ ]|$)'
10238      model: 'K5 Pro'
10239    - regex: 'L39051(?:[);/ ]|$)'
10240      model: 'K10 Plus'
10241    - regex: '(?:A7020a4[08]|L38012|K52e78)(?:[);/ ]|$)'
10242      model: 'K5 Note'
10243    - regex: 'L19041(?:[);/ ]|$)'
10244      model: 'A6 Note'
10245    - regex: 'K31-t3(?:[);/ ]|$)'
10246      model: 'K31'
10247    - regex: 'A6010Pro(?:[);/ ]|$)'
10248      model: 'A6010 Pro'
10249    - regex: '(?:A6020a46|Vibe K5 Plus)(?:[);/ ]|$)'
10250      model: 'Vibe K5 Plus'
10251    - regex: '(?:Lenovo-)?(?:A6020(?:a40|l36)|Vibe K5)(?:[);/ ]|$)'
10252      model: 'Vibe K5'
10253    - regex: 'VIBE Z2(?:[);/ ]|$)'
10254      model: 'Vibe Z2'
10255    - regex: '(?:VIBE C|A2020a40)(?:[);/ ]|$)'
10256      model: 'Vibe C'
10257    - regex: 'VIBE X2(?:[);/ ]|$)'
10258      model: 'Vibe X2'
10259    - regex: 'X3(?:a40|c50)(?:[);/ ]|$)'
10260      model: 'Vibe X3'
10261    - regex: 'Lenovo X3 Lite(?:[);/ ]|$)'
10262      model: 'Vibe X3 Lite'
10263    - regex: 'VIBE V7(?:[);/ ]|$)'
10264      model: 'Vibe V7'
10265    - regex: 'VIBE S6i Plus(?:[);/ ]|$)'
10266      model: 'Vibe S6i Plus'
10267    - regex: 'VIBE[ _]S([23567])i(?:[);/ ]|$)'
10268      model: 'Vibe S$1i'
10269    - regex: 'L79031(?:[);/ ]|$)'
10270      model: 'Legion Pro'
10271    - regex: 'k33a48(?:[);/ ]|$)'
10272      model: 'K6'
10273    - regex: 'L38043(?:[);/ ]|$)'
10274      model: 'K9'
10275    - regex: 'P2A42(?:[);/ ]|$)'
10276      model: 'P2'
10277    - regex: 'k53a48(?:[);/ ]|$)'
10278      model: 'K6 Note'
10279    - regex: 'K33a42(?:[);/ ]|$)'
10280      model: 'K6 Power'
10281    - regex: 'P1ma40(?:[);/ ]|$)'
10282      model: 'Vibe P1m'
10283    - regex: 'Vibe P1 Turbo(?:[);/ ]|$)'
10284      model: 'Vibe P1 Turbo'
10285    - regex: '(?:P1(?:a42|c72)|Vibe P1)(?:[);/ ]|$)'
10286      model: 'Vibe P1'
10287    - regex: 'A2016a40(?:[);/ ]|$)'
10288      model: 'Vibe B'
10289    - regex: 'A1010a20(?:[);/ ]|$)'
10290      model: 'A Plus'
10291    - regex: '(?:Z90a40|Z90-7)(?:[);/ ]|$)'
10292      model: 'Vibe Shot'
10293    - regex: 'S1a40(?:[);/ ]|$)'
10294      model: 'Vibe S1'
10295    - regex: 'S1La40(?:[);/ ]|$)'
10296      model: 'Vibe S1 Lite'
10297    - regex: 'L78071(?:[);/ ]|$)'
10298      model: 'Z5s'
10299    - regex: 'L78011(?:[);/ ]|$)'
10300      model: 'Z5'
10301    - regex: 'L78031(?:[);/ ]|$)'
10302      model: 'Z5 Pro'
10303    - regex: '(?:Z6 Pro|L78051)(?:[);/ ]|$)'
10304      model: 'Z6 Pro'
10305    - regex: 'L78032(?:[);/ ]|$)'
10306      model: 'Z5 Pro GT'
10307    - regex: 'L38111(?:[);/ ]|$)'
10308      model: 'Z6 Youth'
10309    - regex: 'L58041(?:[);/ ]|$)'
10310      model: 'S5 Pro'
10311    - regex: 'L58091(?:[);/ ]|$)'
10312      model: 'S5 Pro GT'
10313    - regex: 'L18021(?:[);/ ]|$)'
10314      model: 'A3'
10315    - regex: 'PB2-6(?:70M|50[YM])(?:[);/ ]|$)'
10316      model: 'Phab 2'
10317    - regex: 'PB1-750M(?:[);/ ]|$)'
10318      model: 'Phab'
10319    - regex: 'PB1-770M(?:[);/ ]|$)'
10320      model: 'Phab Plus'
10321    - regex: '(S90-A|P70-A)(?:[);/ ]|$)'
10322      model: '$1'
10323    - regex: 'IdeaPad ?([^;/]*) Build'
10324      model: 'IdeaPad $1'
10325      device: 'tablet'
10326
10327    - regex: 'Lenovo K12 Pro'
10328      model: 'K12 Pro'
10329
10330    - regex: 'VR-1541F'  # VR headset
10331      device: 'wearable'
10332      model: 'Mirage Solo'
10333
10334    - regex: 'LENOVO/81W8(?:[);/ ]|$)'
10335      device: 'desktop'
10336      model: 'IdeaPad S145-15IIL'
10337    - regex: 'LENOVO/81MV(?:[);/ ]|$)'
10338      device: 'desktop'
10339      model: 'IdeaPad S145-15IWL'
10340    - regex: 'LENOVO/81SS(?:[);/ ]|$)'
10341      device: 'desktop'
10342      model: 'Flex 14API 81SS'
10343
10344
10345    - regex: 'Lenovo TAB ?([^/;]*) Build'
10346      model: 'TAB $1'
10347      device: 'tablet'
10348    - regex: 'Lenovo ([^/;]*) Build'
10349      model: '$1'
10350    - regex: '(?:LNV-|Lenovo-)?Lenovo[ \-_]?([a-z0-9_+\-]+)'
10351      model: '$1'
10352
10353
10354# Lexand
10355Lexand:
10356  regex: '(?:SC7 PRO HD|S5A[1-4]|S4A[1-5]|S6A1|A811|A802)(?:[);/ ]|$)|Lexand ([^;/]+) Build'
10357  device: 'smartphone'
10358  models:
10359    - regex: 'A(811|802)'
10360      device: 'tablet'
10361      model: 'A$1'
10362
10363    - regex: 'S4A1'
10364      model: 'Vega'
10365    - regex: 'S4A2'
10366      model: 'Irida'
10367    - regex: 'S4A3'
10368      model: 'Pallada'
10369    - regex: 'S4A5'
10370      model: 'Oxygen'
10371    - regex: 'S4A4 NEON'
10372      model: 'S4A4 Neon'
10373    - regex: 'S5A1'
10374      model: 'Callisto'
10375    - regex: 'S5A2'
10376      model: 'Overon'
10377    - regex: 'S5A3'
10378      model: 'Capella'
10379    - regex: 'S5A4'
10380      model: 'Argon'
10381    - regex: 'S6A1'
10382      model: 'Antares'
10383    - regex: 'SC7 PRO HD'
10384      model: 'SC7 PRO HD'
10385
10386    - regex: 'Lexand ([^;/]+) Build'
10387      model: '$1'
10388
10389# lexibook
10390Lexibook:
10391  regex: '(MFC[0-9]{3}[a-z]{2,})'
10392  device: 'tablet'
10393  models:
10394    # Explicit tablet models
10395    - regex: 'MFC191FR'
10396      model: 'Tablet Ultra 3 XL'
10397    - regex: 'MFC045FR'
10398      model: 'TabTab'
10399    - regex: 'MFC163FR'
10400      model: 'Tablet Master 3'
10401    - regex: 'MFC142FR'
10402      model: 'Tablet Kids'
10403    - regex: 'MFC250FR'
10404      model: 'Tablet Junior'
10405    - regex: 'MFC270FR'
10406      model: 'Tablet Junior Power Touch'
10407    - regex: 'MFC280FR'
10408      model: 'Tablet Junior 2'
10409    - regex: 'MFC156FR'
10410      model: 'Tablet One'
10411    - regex: 'MFC155FR'
10412      model: 'Tablet Master'
10413    - regex: 'MFC157FR'
10414      model: 'Tablet Master 2'
10415    - regex: 'MFC17[05]FR'
10416      model: 'Tablet Ultra'
10417    - regex: 'MFC375FR'
10418      model: 'Tablet Ultra 2'
10419    - regex: 'MFC162FR'
10420      model: 'Power Tablet'
10421    - regex: 'MFC180FR'
10422      model: 'Tablet Advanced'
10423    - regex: 'MFC181FR'
10424      model: 'Tablet Advanced 2'
10425    - regex: 'MFC500FR'
10426      model: 'Tablet XL'
10427    - regex: 'MFC190BBFR'
10428      model: 'Barbie Tablet'
10429    - regex: 'MFC195DCFR'
10430      model: 'Tablet Disney Cars HD'
10431    - regex: 'MFC195FUFR'
10432      model: 'Furby Tablet'
10433    - regex: 'MFC195DPFR'
10434      model: 'Tablet Disney Princesse HD'
10435    - regex: 'MFC140FR'
10436      model: 'LapTab'
10437    - regex: 'MFC141FR'
10438      model: 'LapTab 2'
10439
10440    - regex: '(MFC[0-9]{3}[a-z]{2,})'
10441      model: '$1'
10442
10443# LG (lg.com)
10444LG:
10445  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]))(?:[);/ ]|$)|NetCast|RS98[78]|RS500|VS(?:50[01]|835|876|880|98[0578]|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'
10446  device: 'smartphone'
10447  models:
10448    - regex: 'DM-(01K|02H)'
10449      model: 'Disney Mobile DM-$1'
10450    - regex: 'LG-D32[05]'
10451      model: 'L70'
10452    - regex: 'LG-?(D315|L31L)'
10453      model: 'F70'
10454    - regex: 'LG-D4(?:[01]5|10)'
10455      model: 'L90'
10456    - regex: 'LG-D373'
10457      model: 'L80'
10458    - regex: 'LG-D340F8'
10459      model: 'L70 Tri'
10460    - regex: 'LG-D125'
10461      model: 'L30'
10462    - regex: 'LG-X145'
10463      model: 'L60'
10464    - regex: 'LG-X135'
10465      model: 'L60i'
10466    - regex: 'LG-D285'
10467      model: 'L65'
10468    - regex: 'LM-X210APM'
10469      model: 'Phoenix 4'
10470    - regex: 'LG-P505R'
10471      model: 'Phoenix'
10472    - regex: 'LM-X210VPP'
10473      model: 'Zone 4'
10474    - regex: 'LM-X220PM'
10475      model: 'Tribute Empire'
10476    - regex: 'LGLS675'
10477      model: 'Tribute 5'
10478    - regex: 'LG-F570'
10479      model: 'Band Play'
10480    - regex: 'VS980|L-01F|LG-F320L|LG-D800'
10481      model: 'G2'
10482    - regex: 'LG-D6(?:18|20)'
10483      model: 'G2 Mini'
10484    - regex: 'LG-D85[012568]|VS985|LGLS990|LGL24(?:[);/ ]|$)'
10485      model: 'G3'
10486    - regex: 'LG-D722'
10487      model: 'G3S'
10488    - regex: 'LG-D693n?|LG-D690n'
10489      model: 'G3 Stylus'
10490    - regex: 'LG-D72[23568]'
10491      model: 'G3 Beat'
10492    - regex: 'LG-F460'
10493      model: 'G3 Cat. 6'
10494    - regex: 'LG-D724'
10495      model: 'G3s'
10496    - regex: 'LG-?H81[012589]|LG-?[LU]S991|LGV32|LG-F500[LSK]'
10497      model: 'G4'
10498    - regex: 'LG-H525n?'
10499      model: 'G4c'
10500    - regex: 'LG-(?:H540|H542|H630)'
10501      model: 'G4 Stylus'
10502    - regex: 'LG-H736'
10503      model: 'G4s'
10504    - regex: 'LG-H735'
10505      model: 'G4 Beat'
10506    - regex: 'LG-H8(?:20|3[01]|5[08]|6[08])|VS987|RS988|LG-F700[SKL]|LG-?[LU]S992'
10507      model: 'G5'
10508    - regex: 'LG-H84[05]'
10509      model: 'G5 SE'
10510    - regex: 'VS988|LG-H87(?:[01](?:DS|[SI]|AR)?|[23])|LG-?US997|LGM-G600[SKL]|LG-[AL]S993'
10511      model: 'G6'
10512    - regex: 'LM-Q850'
10513      model: 'G7 Fit'
10514    - regex: 'LM-Q910'
10515      model: 'G7 One'
10516    - regex: 'LGL23(?:[);/ ]|$)'
10517      model: 'G Flex'
10518    - regex: 'LG-H950'
10519      model: 'G Flex 2'
10520    - regex: 'LG-D68[06]'
10521      model: 'G Pro Lite'
10522    - regex: 'LM-G820(N|QM[0127]|UMB)?'
10523      model: 'G8'
10524    - regex: 'LM-G850'
10525      model: 'G8X ThinQ'
10526    - regex: 'LM-G810'
10527      model: 'G8S ThinQ'
10528    - regex: '901LG(?:[);/ ]|$)'
10529      model: 'G8X ThinQ'
10530    - regex: 'LG-H410(?:[);/ ]|$)'
10531      model: 'Wine Smart H410'
10532    - regex: 'VS501|LM-X120'
10533      model: 'K20'
10534    - regex: 'LGMS395'
10535      model: 'F60'
10536    - regex: 'LG-H788'
10537      model: 'AKA'
10538    - regex: 'LM-K920'
10539      model: 'K92'
10540    - regex: 'LGL41C'
10541      model: 'Ultimate 2'
10542    - regex: 'LGLS660'
10543      model: 'Tribute'
10544    - regex: '(?:LG-)?H50[02]'
10545      model: 'Magna'
10546    - regex: 'LG-(?:X15[05]|X165g)'
10547      model: 'Bello 2'
10548    - regex: 'LG-D33[15]'
10549      model: 'L Bello'
10550    - regex: 'LG-D29[05]'
10551      model: 'L Fino'
10552    - regex: '(?:LG-)?H343'
10553      model: 'Risio'
10554    - regex: '(?:LG-)?H650'
10555      model: 'Zero'
10556    - regex: '(?:LG-)?M154'
10557      model: 'Risio 2'
10558    - regex: 'LGM-K120[LSK]'
10559      model: 'X300'
10560    - regex: 'LG-K120(?:[);/ ]|$)'
10561      model: 'Spree'
10562    - regex: 'LGM-X401S'
10563      model: 'X400'
10564    - regex: 'LGM-X320[SKL]?(?:[);/ ]|$)'
10565      model: 'X500'
10566    - regex: 'LG-F620K'
10567      model: 'Class'
10568    - regex: '(?:LG-)?P500H'
10569      model: 'Optimus One'
10570    - regex: 'LG-E975'
10571      model: 'Optimus G'
10572    - regex: 'LG-E435f'
10573      model: 'Optimus L3 II'
10574    - regex: 'LG-E4(?:70f|40|65f)'
10575      model: 'Optimus L4 II'
10576    - regex: 'LG-E467f'
10577      model: 'Optimus L4 II Dual'
10578    - regex: 'LG-E460'
10579      model: 'Optimus L5 II'
10580    - regex: 'LG-E4[17]5f'
10581      model: 'Optimus L1 II'
10582    - regex: 'LG-P875'
10583      model: 'Optimus F5'
10584    - regex: 'LGMS500'
10585      model: 'Optimus F6'
10586    - regex: '(L-05[DE])(?:[);/ ]|$)'
10587      model: 'Optimus it $1'
10588    - regex: 'LG-L160L(?:[);/ ]|$)'
10589      model: 'Optimus LTE 2'
10590    - regex: '(?:P713|LG-P71[05])(?:[);/ ]|$)'
10591      model: 'Optimus L7 II'
10592    - regex: 'L-01D(?:[);/ ]|$)'
10593      model: 'Optimus LTE L-01D'
10594    - regex: 'L-02D(?:[);/ ]|$)'
10595      model: 'PRADA phone L-02D'
10596    - regex: 'L-07C'
10597      model: 'Optimus Bright L-07C'
10598    - regex: '(?:LG-?)?(?:F800[SKL]?|H990|H910(?:PR)?|US996|V34|LS997)(?:[);/ ]|$)'
10599      model: 'V20'
10600    - regex: 'LM-Q710(?:\(FGN\)|[\.]?FGN)'
10601      model: 'Q Stylus Plus'
10602    - regex: '801LG'
10603      model: 'Q Stylus'
10604    - regex: 'LG-M400'
10605      model: 'Stylus 3'
10606    - regex: 'LG-(?:K520|F720[SL])'
10607      model: 'Stylus 2'
10608    - regex: 'LG-(?:K53[05])'
10609      model: 'Stylus 2 Plus'
10610    - regex: 'LM-Q[67]10\.FG(?:[);/ ]|$)'
10611      model: 'Q7'
10612    - regex: 'LM-(Q725[KL]|Q610.FGN)(?:[);/ ]|$)'
10613      model: 'Q7+'
10614    - regex: 'LM-Q815[KSL](?:[);/ ]|$)'
10615      model: 'Q8+'
10616    - regex: 'LGM-X800[KL]|LG-H970'
10617      model: 'Q8'
10618    - regex: 'LM-Q925[LKS](?:[);/ ]|$)'
10619      model: 'Q9'
10620    - regex: 'LM-(?:Q730N|Q620)(?:[);/ ]|$)'
10621      model: 'Q70'
10622    - regex: 'LM-Q520N(?:[);/ ]|$)'
10623      model: 'Q52'
10624    - regex: 'LGV33(?:[);/ ]|$)'
10625      model: 'Qua Phone PX'
10626    - regex: 'L-03K(?:[);/ ]|$)'
10627      model: 'Style'
10628    - regex: 'L-01L(?:[);/ ]|$)'
10629      model: 'Style 2'
10630    - regex: 'LGLS775'
10631      model: 'Stylo 2'
10632    - regex: 'VS835(?:[);/ ]|$)'
10633      model: 'Stylo 2 V'
10634    - regex: 'LG-?(?:MS550|K550)'
10635      model: 'Stylo 2 Plus'
10636    - regex: 'L-41A(?:[);/ ]|$)'
10637      model: 'Style 3'
10638    - regex: 'LG-?(?:MS63[14]|H63[45])(?:[);/ ]|$)'
10639      model: 'G Stylo'
10640    - regex: 'LG-?(?:LS777|L84VL|M430|L83BL)(?:[);/ ]|$)'
10641      model: 'Stylo 3'
10642    - regex: 'LG-?([TM]P450)(?:[);/ ]|$)'
10643      model: 'Stylo 3 Plus'
10644    - regex: 'LM-Q710|LML713DL|LG-Q710[AP]L'
10645      model: 'Stylo 4'
10646    - regex: '(?:LM-Q720|LGL722DL)(?:[);/ ]|$)'
10647      model: 'Stylo 5'
10648    - regex: 'LM-Q730(?:[);/ ]|$)'
10649      model: 'Stylo 6'
10650    - regex: 'LM-G710(N|VM)?|LG-G710'
10651      model: 'G7 ThinQ'
10652    - regex: 'LG-M153'
10653      model: 'Fortune'
10654    - regex: 'LM-X210CM'
10655      model: 'Fortune 2'
10656    - regex: 'LM-X410\.FG?(?:[);/ ]|$)'
10657      model: 'Premier Pro'
10658    - regex: 'LGL455DL(?:[);/ ]|$)'
10659      model: 'Premier Pro Plus'
10660    - regex: 'LML41[34]DL(?:[);/ ]|$)'
10661      model: 'Premier Pro LTE'
10662    - regex: 'LM-X525'
10663      model: 'Q60'
10664    - regex: 'LM-K315IM'
10665      model: 'W31'
10666    - regex: 'LGL423DL'
10667      model: 'Solo LTE'
10668    - regex: 'LM-X210K'
10669      model: 'X2'
10670    - regex: 'LG-(?:K580|F690L)'
10671      model: 'X Cam'
10672    - regex: 'LG-(?:SP320|M32[27])'
10673      model: 'X Charge'
10674    - regex: 'LG-K200|LGLS676'
10675      model: 'X Style'
10676    - regex: 'LG-F740L'
10677      model: 'X Skin'
10678    - regex: 'LG-(?:K500|F650)'
10679      model: 'X Screen'
10680    - regex: 'LG-(?:M710|H700|US701)'
10681      model: 'X Venture'
10682    - regex: 'LM-X510WM'
10683      model: 'X Power 3'
10684    - regex: 'LM-X(?:41[05]K|410S)'
10685      model: 'X4'
10686    - regex: 'LM-X(415[LS]|410L)'
10687      model: 'X4+'
10688    - regex: 'LM-X410(?:\.FN|\(FG\))'
10689      model: 'K11'
10690    - regex: 'LM-X(?:320|410[UP]M)|LGL322DL'
10691      model: 'K30'
10692    - regex: 'LMX130IM'
10693      model: 'W10'
10694    - regex: 'LG-H522'
10695      model: 'Prime Plus 4G'
10696    - regex: 'LGL58VL'
10697      model: 'Rabel 2'
10698    - regex: 'LG-X190'
10699      model: 'Ray'
10700    - regex: 'LGLS740'
10701      model: 'Volt'
10702    - regex: 'LM-X410'
10703      model: 'LM-X410'
10704    - regex: 'LGM-K121'
10705      model: 'X400'
10706    - regex: 'LGM-X401L'
10707      model: 'X401'
10708    - regex: 'LM-X420N'
10709      model: 'X4 (2019)'
10710    - regex: '(?:LG-X230|VS425)(?:[);/ ]|$)'
10711      model: 'K4'
10712    - regex: 'LG-K130(?:[);/ ]|$)'
10713      model: 'K4 LTE'
10714    - regex: '(?:LG-?)?(?:M160|L57BL)(?:[);/ ]|$)'
10715      model: 'K4 (2017)'
10716    - regex: 'LM-X420'
10717      model: 'K40'
10718    - regex: 'LM-X430(?:[);/ ]|$)'
10719      model: 'K40S'
10720    - regex: 'LM-K410'
10721      model: 'K41S'
10722    - regex: 'LG-X220'
10723      model: 'K5'
10724    - regex: 'LM-X540'
10725      model: 'K50S'
10726    - regex: '(?:802LG|LM-X520)(?:[);/ ]|$)'
10727      model: 'K50'
10728    - regex: '402LG'
10729      model: 'Spray'
10730    - regex: 'L-02K'
10731      model: 'JoJo'
10732    - regex: '(?:LM-X510[KLS]|X5-LG)'
10733      model: 'X5'
10734    - regex: 'LM-X625N1'
10735      model: 'X6'
10736    - regex: 'LM-X625N'
10737      model: 'X6 (2019)'
10738    - regex: 'LGMS210|LG-M210'
10739      model: 'Aristo'
10740    - regex: 'LM-X210[G]?'
10741      model: 'Aristo 2'
10742    - regex: 'LM-X220(?:[);/ ]|$)'
10743      model: 'Aristo 3'
10744    - regex: 'LM-V40(?:5|9N|5EBW)?(?:[);/ ]|$)'
10745      model: 'V40 ThinQ'
10746    - regex: 'LM-(?:V500N?|V450)(?:[);/ ]|$)'
10747      model: 'V50 ThinQ'
10748    - regex: 'LM-V510N'
10749      model: 'V50S ThinQ'
10750    - regex: 'LM-Q920N'
10751      model: 'Q92'
10752    - regex: 'LM-Q927L'
10753      model: 'Q9 One'
10754    - regex: '(?:LG-)?(?:RS987|H90[01]|H96[02128]|VS990|F600[LK]|K428)'
10755      model: 'V10'
10756    - regex: 'LG-(?:X240|M200)'
10757      model: 'K8 (2017)'
10758    - regex: 'LM-X220QMA'
10759      model: 'K8s'
10760    - regex: '(?:LG-)?RS500'
10761      model: 'K8 4G'
10762    - regex: '(?:LG-)?VS500'
10763      model: 'K8 V'
10764    - regex: 'LM-X212\(G\)|LGUS215'
10765      model: 'K8 (2018)'
10766    - regex: '(?:LG-)?(?:VS995|F800K|US999|LS997|H91[058]|H990(?:DS|[NT])?)'
10767      model: 'V20'
10768    - regex: '(?:VS996|LG-(?:H933|H93[012]|H930RE|H932PR|[LU]S998|AS998)|LGM-V300[KLS])(?:[);/ ]|$)'
10769      model: 'V30'
10770    - regex: 'L-01J(?:[);/ ]|$)'
10771      model: 'V20 Pro'
10772    - regex: '(?:L-01K|LGV35|LG-H930DS)(?:[);/ ]|$)'
10773      model: 'V30 Plus'
10774    - regex: 'L-51A(?:[);/ ]|$)'
10775      model: 'V60'
10776    - regex: '(?:L-52A|LM-G900(?:N|TM)?)(?:[);/ ]|$)'
10777      model: 'Velvet 5G'
10778    - regex: '(?:LM-G910)(?:[);/ ]|$)'
10779      model: 'Velvet 4G'
10780    - regex: '(?:A001LG|LM-V600)(?:[);/ ]|$)'
10781      model: 'V60 ThinQ 5G'
10782    - regex: '(?:LG-)?VS410PP'
10783      model: 'Optimus Zone'
10784    - regex: 'LM-V350[N]?'
10785      model: 'V35'
10786    - regex: '(?:LG-)?VS415PP'
10787      model: 'Optimus Zone 2'
10788    - regex: '(?:LG-)?VS425PP'
10789      model: 'Optimus Zone 3'
10790    - regex: '(?:LG-?)?(?:K100|LS450)'
10791      model: 'K3'
10792    - regex: 'LG-AS110'
10793      model: 'K3 (2017)'
10794    - regex: '(?:LG-?)?(?:K|MS)33[02]|LG-X210'
10795      model: 'K7'
10796    - regex: '(?:LG-?)?(?:K|MS)350'
10797      model: 'K8'
10798    - regex: 'VS500PP'
10799      model: 'K8 V'
10800    - regex: '(?:LG-?)?(?:K420(?:N)?|F670[KLS]?|K430(?:DS|DSF|DSY)?|K410|MS428)'
10801      model: 'K10'
10802    - regex: '(?:LG-)?M250N?'
10803      model: 'K10 (2017)'
10804    - regex: '(?:LG-)?M255'
10805      model: 'K20'
10806    - regex: '(?:LG-?)?[MT]P260'
10807      model: 'K20 Plus'
10808    - regex: 'LM-K200(?:[);/ ]|$)'
10809      model: 'K22'
10810    - regex: 'LM-K300(?:[);/ ]|$)'
10811      model: 'K31'
10812    - regex: 'LM-K420(?:[);/ ]|$)'
10813      model: 'K42'
10814    - regex: '(?:LM-K500|LGL555DL)(?:[);/ ]|$)'
10815      model: 'K51'
10816    - regex: 'LM-K510(?:[);/ ]|$)'
10817      model: 'K51S'
10818    - regex: 'LM-K520(?:[);/ ]|$)'
10819      model: 'K52'
10820    - regex: 'LM-K525(?:[);/ ]|$)'
10821      model: 'K56'
10822    - regex: 'LM-K526(?:[);/ ]|$)'
10823      model: 'K56 Plus'
10824    - regex: 'LM-Q510N(?:[);/ ]|$)'
10825      model: 'Q51'
10826    - regex: 'LM-Q630N?(?:[);/ ]|$)'
10827      model: 'Q61'
10828    - regex: '(?:LG-)?M700(?:N|A|DSK|AN)?|LGM-X600[SLK]|LG-M703|LG-US700'
10829      model: 'Q6'
10830    - regex: 'LM-X440IM'
10831      model: 'W30'
10832    - regex: 'LGV36(?:[);/ ]|$)'
10833      model: 'it'
10834    - regex: 'LG-M257(?:[);/ ]|$)'
10835      model: 'Harmony'
10836    - regex: 'LM-K400(?:[);/ ]|$)'
10837      model: 'Harmony 4'
10838    - regex: '(?:LG-?)?(?:K220|LS755|F750K)'
10839      model: 'X Power'
10840    - regex: '(?:LG-?)?M320'
10841      model: 'X Power 2'
10842    - regex: '(?:LG-)?K371'
10843      model: 'Phoenix 2'
10844    - regex: '(?:LG-)?M150'
10845      model: 'Phoenix 3'
10846    - regex: '(?:LG-)?F100[SL]'
10847      model: 'Optimus Vu'
10848    - regex: '(?:LG-)?P880'
10849      model: 'Optimus 4X HD'
10850    - regex: '(?:LG-)?(H340n?|H324)'
10851      model: 'Leon'
10852    - regex: '(?:LG-)?H342|LGMS345'
10853      model: 'Leon 4G LTE'
10854    - regex: '(?:LG-)?H4(?:40|2[02])'
10855      model: 'Spirit'
10856    - regex: '(?:LG)?C660'
10857      model: 'Optimus Pro'
10858    - regex: 'LGL158VL'
10859      model: 'Rebel 3'
10860    - regex: 'LML21(?:1B|2V)L'
10861      model: 'Rebel 4'
10862    - regex: 'VS876'
10863      model: 'Lucid 3'
10864    - regex: 'VS880(PP)?|LG-D690'
10865      model: 'G Vista'
10866    - regex: 'VS820'
10867      model: 'Lancet'
10868    - regex: 'VS870 4G'
10869      model: 'Lucid 2'
10870    - regex: 'VS810PP'
10871      model: 'Transpyre'
10872    - regex: 'LM-F100N?(?:[);/ ]|$)'
10873      device: 'phablet'
10874      model: 'WING'
10875
10876    - regex: 'LM-T605'
10877      model: 'G Pad 5 10.1" FHD'
10878      device: 'tablet'
10879    - regex: 'LG-?(?:UK|V)410'
10880      model: 'G Pad 7.0" LTE'
10881      device: 'tablet'
10882    - regex: 'LG-V533'
10883      model: 'G Pad IV 8.0"'
10884      device: 'tablet'
10885    - regex: 'LG-?(?:LK430|V400)'
10886      model: 'G Pad F 7.0"'
10887      device: 'tablet'
10888    - regex: 'LGLK430'
10889      model: 'G Pad F 7.0"'
10890      device: 'tablet'
10891    - regex: 'LG-V49[56]'
10892      model: 'G Pad F 8.0"'
10893      device: 'tablet'
10894    - regex: 'LG-V4[89]0'
10895      model: 'G Pad 8.0'
10896      device: 'tablet'
10897    - regex: 'LGT01'
10898      model: 'G Pad 8.0" LTE'
10899      device: 'tablet'
10900    - regex: 'LG-V500'
10901      model: 'G Pad 8.3'
10902      device: 'tablet'
10903    - regex: 'LG-V700'
10904      model: 'G Pad 10.1'
10905      device: 'tablet'
10906    - regex: 'LG-V497'
10907      model: 'G Pad II 8.0"'
10908      device: 'tablet'
10909    - regex: 'LG-V935'
10910      model: 'G Pad II 10.1'
10911      device: 'tablet'
10912    - regex: 'LGT02'
10913      model: 'G Pad III 8.0'
10914      device: 'tablet'
10915    - regex: 'LG-V521'
10916      model: 'G Pad X 8.0'
10917      device: 'tablet'
10918    - regex: 'VK810'
10919      model: 'G Pad 8.3 LTE'
10920      device: 'tablet'
10921    - regex: 'VK815'
10922      model: 'G Pad X 8.3'
10923      device: 'tablet'
10924    - regex: 'LG-V520'
10925      model: 'G Pad X 8.0"'
10926      device: 'tablet'
10927    - regex: 'LG-V530'
10928      model: 'G Pad X2 8.0" Plus'
10929      device: 'tablet'
10930    - regex: 'LGT32'
10931      model: 'Qua Tad PZ'
10932      device: 'tablet'
10933    - regex: 'LGT31'
10934      model: 'Qua Tad PX'
10935      device: 'tablet'
10936
10937    - regex: 'webOS.TV'
10938      device: 'tv'
10939      model: 'WebOS TV'
10940    - regex: 'LGE_DLNA_SDK|NetCast'
10941      device: 'tv'
10942      model: 'NetCast'
10943
10944    - regex: 'LG Watch Urbane'
10945      device: 'wearable'
10946      model: 'Watch Urbane'
10947
10948    # general detections
10949    - regex: '(LM-[A-Z]{1}[0-9]{3}([A-Z]{1,3})?)'
10950      model: '$1'
10951    - regex: 'LGE(?: |-LG| LG-AX|-)([a-z0-9]+)'
10952      model: '$1'
10953    - regex: 'FBDV/LG-([a-z0-9]+);FBSV'
10954      model: '$1'
10955    - regex: 'LGE;([a-z0-9\-]+)'
10956      model: '$1'
10957    - regex: 'LG[ _\-](V90.*|Optimus[ _\-]Pad.*) Build'
10958      device: 'tablet'
10959      model: '$1'
10960    - regex: 'LGM-([^/;]*)( Build|[;)])'
10961      model: '$1'
10962    - regex: 'LG(?:/|-LG| |-)?([^/;]*) Build'
10963      model: '$1'
10964    - regex: 'LG(?:/|-LG| |-)?([a-z0-9]+)'
10965      model: '$1'
10966    - regex: 'LG; ([a-z0-9 ]+)'
10967      model: '$1'
10968    - regex: 'portalmmm/2.0 ((?:KE|KG|KP|L3)[a-z0-9]+)'
10969      model: '$1'
10970    - regex: '(VX[0-9]+)'
10971      model: '$1'
10972
10973    - regex: 'Web0S; Linux/SmartTV'
10974      device: 'tv'
10975      model: ''
10976
10977# Lingwin
10978Lingwin:
10979  regex: 'Lingwin[ _\-]'
10980  device: 'smartphone'
10981  models:
10982    - regex: 'Lingwin[ _\-]?([^/;]+) Build'
10983      model: '$1'
10984    - regex: 'Lingwin[ _\-]?([^);/ ]+)'
10985      model: '$1'
10986
10987# Logicom (logicom-europe.com)
10988Logicom:
10989  regex: 'LOGICOM[_ ]|(TAB950|TAB1062|E731|E812|E912|E1031|POWER BOT|La[ _]Tab[ _](?:7[24]|10[57]|114)|(?:B|C|M|ID|VR)[ _]?BOT[ _]?(?:TAB[ _])?([0-9]+\+?)(?:PLUS)?|KT712A_4\.4|L-?IXIR[0-9]*|L-ITE|L-EGANTONE(?:-R)?|L-?EMENT.+|Le[ _]?(?:Connect|Hop|Hello|Lift|Hola|Moov[2]?|Must(?: 2)?|Starter L|Fit FR|Spark|Prime|Smooth(?: FR)?))[_);/ ]'
10990  device: 'tablet'
10991  models:
10992    - regex: 'La[ _]Tab[ _](7[24]|10[57]|114)(?:[);/ ]|$)'
10993      model: 'La Tab $1'
10994    - regex: 'LOGICOM_LA_TAB_LINK_71'
10995      model: 'La Tab Link 71'
10996    - regex: 'KT712A_4.4|L-IXIR TAB 701 3G'
10997      model: 'L-ixir Tab 701 3G'
10998    - regex: 'LIXIR1041'
10999      model: 'L-ixir Tab 1041'
11000    - regex: 'L-?IXIR[ _]TAB[ _]([^);/]+)( Build|[);])'
11001      model: 'L-ixir Tab $1'
11002    - regex: 'L-ITE[ _](400M|452|50[46] HD|506R HD|552 HD)(?:[);/ ]|$)'
11003      device: 'smartphone'
11004      model: 'L-ite $1'
11005    - regex: 'L-ITE[ _]([^;/]+) Build'
11006      model: 'L-ite Tab $1'
11007    - regex: 'L-?EMENT[ _]?(350|451|40[103]|55[013]|50[15]|500L?)(?:[);/ ]|$)'
11008      model: 'L-ement $1'
11009      device: 'smartphone'
11010    - regex: 'L-?EMENT[ _](?:TAB)[ )]?([^);/]+)(?: Build|[);])'
11011      model: 'L-ement Tab $1'
11012    - regex: 'L-?EMENT[ _]?(74[01])(?:[);/ ]|$)'
11013      model: 'L-ement Tab $1'
11014    - regex: '(TAB950|TAB1062|E731|E812|E912|E1031)(?:[);/ ]|$)'
11015      model: '$1'
11016    - regex: 'POWER BOT'
11017      model: 'POWER BOT'
11018    - regex: '((?:B|C|M|ID|VR))[ _]?BOT[ _]?((?:TAB[ _])?([0-9]+\+?)(?:PLUS)?)'
11019      model: '$1 BOT $2'
11020    - regex: 'Le Lift'
11021      model: 'Le Lift'
11022      device: 'smartphone'
11023    - regex: 'Le[ _]Connect'
11024      model: 'Le Connect'
11025      device: 'smartphone'
11026    - regex: 'Le Hola FR(?:[);/ ]|$)'
11027      model: 'Le Hola FR'
11028      device: 'smartphone'
11029    - regex: 'Le[ _]Hola(?:[);/ ]|$)'
11030      model: 'Le Hola'
11031      device: 'smartphone'
11032    - regex: 'LeMoov2(?:[);/ ]|$)'
11033      model: 'Le Moov 2'
11034      device: 'smartphone'
11035    - regex: 'LeMoov(?:[);/ ]|$)'
11036      model: 'Le Moov'
11037      device: 'smartphone'
11038    - regex: 'Le Fit FR(?:[);/ ]|$)'
11039      model: 'Le Fit FR'
11040      device: 'smartphone'
11041    - regex: 'Le Hop(?:[);/ ]|$)'
11042      model: 'Le Hop'
11043      device: 'smartphone'
11044    - regex: 'Le[ _]Hello(?:[);/ ]|$)'
11045      model: 'Le Hello'
11046      device: 'smartphone'
11047    - regex: 'Le Smooth FR(?:[);/ ]|$)'
11048      model: 'Le Smooth FR'
11049      device: 'smartphone'
11050    - regex: 'Le Smooth(?:[);/ ]|$)'
11051      model: 'Le Smooth'
11052      device: 'smartphone'
11053    - regex: 'Le Must 2(?:[);/ ]|$)'
11054      device: 'smartphone'
11055      model: 'Le Must 2'
11056    - regex: 'Le Must(?:[);/ ]|$)'
11057      model: 'Le Must'
11058      device: 'smartphone'
11059    - regex: 'Le Starter L(?:[);/ ]|$)'
11060      model: 'Le Starter L'
11061      device: 'smartphone'
11062    - regex: 'Le[ _]Spark(?:[);/ ]|$)'
11063      model: 'Le Spark'
11064      device: 'smartphone'
11065    - regex: 'Le[ _]Prime(?:[);/ ]|$)'
11066      model: 'Le Prime'
11067      device: 'smartphone'
11068    - regex: 'L-EGANTONE-R'
11069      model: 'L-Egant One R'
11070      device: 'smartphone'
11071    - regex: 'L-EGANTONE'
11072      model: 'L-Egant One'
11073      device: 'smartphone'
11074
11075# Konka
11076Konka:
11077  regex: 'KONKA[_ ]([a-z0-9]+)'
11078  device: 'smartphone'
11079  models:
11080    # Explicit smartphone models
11081    - regex: 'E5660S'
11082      model: 'Viva 5660s'
11083    - regex: 'W830'
11084      model: 'Tango 830'
11085    - regex: 'W(9[67]0)'
11086      model: 'Expose $1'
11087    - regex: 'W990'
11088      model: 'Tuxedo 990'
11089
11090    - regex: 'KONKA[_ ]([a-z0-9]+)'
11091      device: 'feature phone'
11092      model: '$1'
11093
11094# Konrow (konrow.com)
11095Konrow:
11096  regex: '(?:BIGCOOL|COOLFIVE|COOL-K|Just5|Link5|EASY(?:5|62)|CITY55|Cool55)(?:[);/ ]|$)'
11097  device: 'smartphone'
11098  models:
11099    - regex: 'BIGCOOL(?:[);/ ]|$)'
11100      model: 'BigCool'
11101    - regex: 'COOL-K(?:[);/ ]|$)'
11102      model: 'Cool-K'
11103    - regex: 'Cool55(?:[);/ ]|$)'
11104      model: 'Cool 55'
11105    - regex: 'COOLFIVE(?:[);/ ]|$)'
11106      model: 'Cool Five'
11107    - regex: 'Just5(?:[);/ ]|$)'
11108      model: 'Just 5'
11109    - regex: 'Link5(?:[);/ ]|$)'
11110      model: 'Link 5'
11111    - regex: 'EASY(5|62)(?:[);/ ]|$)'
11112      model: 'Easy $1'
11113    - regex: 'CITY55(?:[);/ ]|$)'
11114      model: 'City 55'
11115
11116# Karbonn (karbonnmobiles.com)
11117Karbonn:
11118  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)'
11119  device: 'smartphone'
11120  models:
11121    - regex: 'K9 Kavach 4G'
11122      model: 'K9 Kavach 4G'
11123    - regex: 'K9 Music 4G'
11124      model: 'K9 Music 4G'
11125    - regex: 'K9 Smart 1GB'
11126      model: 'K9 Smart'
11127    - regex: 'K9 Smart 4G'
11128      model: 'K9 Smart 4G'
11129    - regex: 'K9 Smart Grand'
11130      model: 'K9 Smart Grand'
11131    - regex: 'K9 Smart Yuva'
11132      model: 'K9 Smart Yuva'
11133    - regex: 'K9[_ ]Smart[_ ]Plus'
11134      model: 'K9 Smart Plus'
11135    - regex: 'K9 Smart'
11136      model: 'K9 Smart'
11137    - regex: 'K9[_ ]Viraat[_ ]Plus'
11138      model: 'K9 Viraat Plus'
11139    - regex: 'Aura Sleek Plus'
11140      model: 'Aura Sleek Plus'
11141    - regex: 'Aura Power 4G Plus'
11142      model: 'Aura Power 4G Plus'
11143    - regex: 'Aura Note Play'
11144      model: 'Aura Note Play'
11145    - regex: 'Aura Note 2'
11146      model: 'Aura Note 2'
11147    - regex: 'Alfa A114 Quad'
11148      model: 'Alfa A114 Quad'
11149    - regex: 'karbonnK9 Viraat 4G|K9 VIRAAT 4G'
11150      model: 'K9 Viraat 4G'
11151    - regex: 'MACHFIVE'
11152      model: 'Mach Five'
11153    - regex: 'MACHONEPLUS'
11154      model: 'Titanium Mach One Plus'
11155    - regex: 'MACHONE'
11156      model: 'Titanium Mach One'
11157    - regex: 'Titanium[ _]S2[ _]Plus'
11158      model: 'Titanium S2 Plus'
11159    - regex: 'Titanium_S9Plus'
11160      model: 'Titanium S9 Plus'
11161    - regex: 'Titanium[_ ]S(99|360|1[059]|109|35|200 HD|20[13]|22|[15])(?:[);/ ]|$)'
11162      model: 'Titanium S$1'
11163    - regex: 'Titanium Vista 4G'
11164      model: 'Titanium Vista 4G'
11165    - regex: 'Titanium Jumbo 2'
11166      model: 'Titanium Jumbo 2'
11167    - regex: 'Titanium Jumbo'
11168      model: 'Titanium Jumbo'
11169    - regex: 'Titanium[ _]MOGHUL'
11170      model: 'Titanium Moghul'
11171    - regex: 'Titanium Frames S7'
11172      model: 'Titanium Frames S7'
11173    - regex: 'Titanium Octane Plus'
11174      model: 'Titanium Octane Plus'
11175    - regex: 'Titanium[ _]3D-Plex'
11176      model: 'Titanium 3D Plex'
11177    - regex: 'K-lite F3'
11178      model: 'K-Lite F3'
11179    - regex: 'Sparkle V'
11180      model: 'Sparkle V'
11181    - regex: 'Quattro[ _]L(5[05])[ _]HD'
11182      model: 'Quattro L$1 HD'
11183    - regex: 'Quattro[ _]L(45)[ _]IPS'
11184      model: 'Quattro L$1 IPS'
11185    - regex: 'Quattro[ _]L(52)[ _]VR'
11186      model: 'Quattro L$1 VR'
11187    - regex: 'Karbonn ([a-z0-9]+) WAP-Browser'
11188      model: '$1'
11189      device: 'feature phone'
11190    - regex: 'WAP Browser-Karbonn ([a-z0-9]+)/'
11191      model: '$1'
11192      device: 'feature phone'
11193    - regex: 'Karbonn_([^;/)]+)'
11194      model: '$1'
11195    - regex: 'Karbonn ([^;/]+) Build'
11196      model: '$1'
11197    - regex: 'Karbonn ([^;/]+)/'
11198      model: '$1'
11199
11200# Sagem
11201Sagem:
11202  regex: 'SAGEM|portalmmm/2.0 (?:SG|my)'
11203  device: 'smartphone'
11204  models:
11205    - regex: 'SAGEM-(my[a-z0-9\-]+)'
11206      model: '$1'
11207      device: 'feature phone'
11208    - regex: 'SAGEM ([a-z0-9]+)'
11209      model: '$1'
11210    - regex: 'SAGEM-([a-z0-9\-]+)'
11211      model: '$1'
11212    - regex: 'portalmmm/2.0 ((?:SG|my)[a-z0-9]+)'
11213      model: '$1'
11214
11215# Coby Kyros
11216Coby Kyros:
11217  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))(?:[);/ ]|$)'
11218  device: 'tablet'
11219  model: '$1'
11220
11221# Mpman (mpmaneurope.com)
11222Mpman:
11223  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)(?:[);/ ]|$)'
11224  device: 'tablet'
11225  models:
11226    - regex: '((?:MPQC|MPDC)[0-9]+[^/;)]+)(?: Build|\))'
11227      model: '$1'
11228    - regex: 'MP100i OCTA(?:[);/ ]|$)'
11229      model: 'MP100i OCTA'
11230    - regex: 'MPQCG10(?: 3G)?(?:[);/ ]|$)'
11231      model: 'MPQCG10 3G'
11232    - 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)(?:[);/ ]|$)'
11233      model: '$1'
11234    - regex: '(PH(?:150|340|350|360|451|500|520|544|604))'
11235      model: '$1'
11236      device: 'smartphone'
11237
11238# Majestic
11239Majestic:
11240  regex: 'MAJESTIC[ _-]|CRONO ?[0-9]+|(?:TAB (?:647|411) 3G|URANO 77LTE|PLUTO__?26N?)(?:[);/ ]|$)'
11241  device: 'smartphone'
11242  models:
11243    - regex: 'URANO 77LTE(?:[);/ ]|$)'
11244      model: 'Urano 77 LTE'
11245    - regex: 'PLUTO__?(26N?)(?:[);/ ]|$)'
11246      model: 'Pluto $1'
11247    - regex: 'TAB (647|411) 3G'
11248      model: 'Tab $1 3G'
11249      device: 'tablet'
11250    - regex: 'MAJESTIC[ _]Tab([^;/]+)Build'
11251      model: 'Tab$1'
11252      device: 'tablet'
11253    - regex: 'MAJESTIC[ _]Tab([^);/]+)(?:[);/]|$)'
11254      model: 'Tab$1'
11255      device: 'tablet'
11256    - regex: 'MAJESTIC[ _]([^;/]+)Build'
11257      model: '$1'
11258    - regex: 'MAJESTIC[ _]([^);/]+)(?:(?:[);/ ]|$)|$)'
11259      model: '$1'
11260    - regex: 'CRONO ?([0-9]+) Build'
11261      model: 'Crono $1'
11262    - regex: 'CRONO ?([0-9]+)(?:[);/]|$)'
11263      model: 'Crono $1'
11264
11265# Manta Multimedia or Manta
11266Manta Multimedia:
11267  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))(?:[);/ ]|$)'
11268  device: 'smartphone'
11269  models:
11270    - 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))(?:[);/ ]|$)'
11271      device: 'tablet'
11272      model: '$1'
11273    - regex: 'MSP95012'
11274      model: 'Titano 1'
11275    - regex: 'MSP95014'
11276      model: 'Titano 3'
11277    - regex: 'MSP95015'
11278      model: 'Mezo 2'
11279    - regex: 'MSP95020'
11280      model: 'Rocky 2'
11281    - regex: 'MSP95021'
11282      model: 'Rocky 3 Pro'
11283    - regex: 'MSP96017'
11284      model: 'Forto 2'
11285    - regex: 'MSP96002'
11286      model: 'Forto 1'
11287    - regex: 'MSP94501'
11288      model: 'Easy Selfie'
11289    - regex: '(MSP450[79]|MSP95009)(?:[);/ ]|$)'
11290      model: '$1'
11291
11292# Masstel
11293Masstel:
11294  regex: 'Masstel|Juno[ _]Q[567]'
11295  device: 'smartphone'
11296  models:
11297    - regex: '(?:Masstel[_ ])?(Juno[_ ]Q[3567]|X9|N4[56]0|N5[2458]0|N536|M05|M1[29]0|M1[125]|M250|M25)(?:[);/ ]|$)'
11298      model: '$1'
11299    - regex: 'Masstel[_ ]\((M18)\)'
11300      model: '$1'
11301    - regex: 'Masstel_Tab7LTE(?:[);/ ]|$)'
11302      model: 'Tab 7 LTE'
11303      device: 'tablet'
11304    - regex: 'Masstel Tab (840|700i)(?:[);/ ]|$)'
11305      model: 'Tab $1'
11306      device: 'tablet'
11307
11308# Maxwest
11309Maxwest:
11310  regex: '(?:Astro[_ ](?:Phablet_9|55?N[_ ]LTE|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)(?:[);/ ]|$)'
11311  device: 'smartphone'
11312  models:
11313    - regex: 'Astro[_ ](55?)N[_ ]LTE'
11314      model: 'Astro $1N LTE'
11315    - regex: 'Astro[_ ]X55[_ ]LTE'
11316      model: 'Astro X55 LTE'
11317    - regex: 'Astro_5_GO_LTE'
11318      model: 'Astro 5 Go LTE'
11319    - regex: 'Astro[_ ](X55s?|5s|4|X[45]|[45]P)(?:[);/ ]|$)'
11320      model: 'Astro $1'
11321    - regex: 'Astro[_ ](4\.5)'
11322      model: 'Astro $1"'
11323    - regex: 'Virtue Z5'
11324      model: 'Virtue Z5'
11325    - regex: 'Astro (X55s?|5s)'
11326      model: 'Astro $1'
11327    - regex: 'Astro[_ ]X4'
11328      model: 'Astro X4'
11329    - regex: 'Nitro ([45]) GO'
11330      model: 'Nitro $1 GO'
11331    - regex: 'Nitro 4s LTE'
11332      model: 'Nitro 4s LTE'
11333    - regex: 'Nitro[ _]4s'
11334      model: 'Nitro 4s'
11335    - regex: 'Nitro[_ ](4|55R|5[XRP])'
11336      model: 'Nitro $1'
11337    - regex: 'Gravity_(55?)_GO'
11338      model: 'Gravity $1 GO'
11339
11340    - regex: 'Astro6'
11341      device: 'phablet'
11342      model: 'Astro 6'
11343
11344    - regex: 'Nitro_Phablet_9s'
11345      device: 'tablet'
11346      model: 'Nitro Phablet 9s'
11347    - regex: 'Astro_Phablet_9'
11348      device: 'tablet'
11349      model: 'Astro Phablet 9'
11350
11351# True Slim (ssbphones.com)
11352True Slim:
11353  regex: '(SSB-508[ED])(?:[);/ ]|$)'
11354  device: 'smartphone'
11355  model: '$1'
11356
11357# Maze Speed (ssbphones.com)
11358Maze Speed:
11359  regex: '(SSB-(?:500|508)|SSB408D|SSB504R)(?:[);/ ]|$)'
11360  device: 'smartphone'
11361  models:
11362    - regex: 'SSB-?(500|508|408D|504R)(?:[);/ ]|$)'
11363      model: 'SSB-$1'
11364
11365# Maze (mazephone.com)
11366Maze:
11367  regex: '(?:Alpha[_ ]X|Maze Alpha)(?:[);/ ]|$)'
11368  device: 'smartphone'
11369  models:
11370    - regex: 'Alpha[_ ]X(?:[);/ ]|$)'
11371      model: 'Alpha X'
11372    - regex: 'Maze Alpha(?:[);/ ]|$)'
11373      model: 'Alpha'
11374
11375# Mediacom (mediacomeurope.it)
11376Mediacom:
11377  regex: '(?:SmartPad7503G|M-SP10MXA|M-PPAB500|SmartPad970s2(?:3G)?|M[_-][MPS]P[0-9a-z]+|M-IPRO[0-9a-z]+|1AEC)(?:[);/ ]|$)'
11378  device: 'tablet'
11379  models:
11380    - regex: 'SmartPad7503G(?:[);/ ]|$)'
11381      model: 'SmartPad 750 3G'
11382    - regex: 'SmartPad970s23G(?:[);/ ]|$)'
11383      model: 'SmartPad 970 S2 3G'
11384    - regex: 'SmartPad970s2(?:[);/ ]|$)'
11385      model: 'SmartPad 970 S2'
11386    - regex: 'M-MP84[02]M(?:[);/ ]|$)'
11387      model: 'SmartPad 8.0" Mobile'
11388    - regex: 'M-MP940M(?:[);/ ]|$)'
11389      model: 'SmartPad 9.7" Mobile'
11390    - regex: 'M-SP10MXA(?:[);/ ]|$)'
11391      model: 'SmartPad MX 10.1"'
11392    - regex: 'M-SP8MXA(?:[);/ ]|$)'
11393      model: 'SmartPad MX 8.0"'
11394    - regex: 'M-SP7HXAH(?:[);/ ]|$)'
11395      model: 'SmartPad HX 7.0"'
11396    - regex: 'M-SP8HXAH(?:[);/ ]|$)'
11397      model: 'SmartPad HX 8.0" HD'
11398    - regex: 'M-MP(?:710|720|725|726|740)GOx?(?:[);/ ]|$)'
11399      model: 'SmartPad 7.0" Go'
11400    - regex: 'M-MP876S2(?:[);/ ]|$)'
11401      model: 'SmartPad 8.0" S2'
11402    - regex: 'M-MP8S2[AB]?3G(?:[);/ ]|$)'
11403      model: 'SmartPad 8.0" S2 3G'
11404    - regex: 'M-MP(101|102|860|875)S2[BW]?(?:[);/ ]|$)'
11405      model: 'SmartPad $1 S2'
11406    - regex: 'M-MP85S23G(?:[);/ ]|$)'
11407      model: 'SmartPad 875 S2 3G'
11408    - regex: 'M-SP1AGO3G'
11409      model: 'SmartPad 10 Go 3G'
11410    - regex: 'M-SP7xGO3G'
11411      model: 'SmartPad 10.1" iPro 3G'
11412    - regex: '1AEC'
11413      model: 'SmartPad 10 Eclipse'
11414    - regex: 'M-MP10[45][01]S2(?:[);/ ]|$)'
11415      model: 'SmartPad 10.1" S2'
11416    - regex: 'M-MP1S2[AB]3G(?:[);/ ]|$)'
11417      model: 'SmartPad 10.1" S2 3G'
11418    - regex: 'M-MP8[24]S4(?:[);/ ]|$)'
11419      model: 'SmartPad 8.0" S4'
11420    - regex: 'M-MP8S4[AB]3G(?:[);/ ]|$)'
11421      model: 'SmartPad 8.0" S4 3G'
11422    - regex: 'M-MP9S4A3G(?:[);/ ]|$)'
11423      model: 'SmartPad 9.7" S4 3G'
11424    - regex: 'M-MP1[02]S4(?:[);/ ]|$)'
11425      model: 'SmartPad 10.1" S4'
11426    - regex: 'M-MP1040MC?(?:[);/ ]|$)'
11427      model: 'SmartPad 10.1" HD S4 3G'
11428    - regex: 'M-MP1S4[AB]3G(?:[);/ ]|$)'
11429      model: 'SmartPad 10.1" S4 3G'
11430    - regex: 'M-SP10HXxH(?:[);/ ]|$)'
11431      model: 'SmartPad 10.1" HX HD'
11432    - regex: 'M-SP10MXHA(?:[);/ ]|$)'
11433      model: 'SmartPad 10.1" MX'
11434    - regex: 'M-SP10MXHL(?:[);/ ]|$)'
11435      model: 'SmartPad 10.1" MX Lite'
11436    - regex: 'M-MP8PA3G(?:[);/ ]|$)'
11437      model: 'SmartPad 8.0" HD Pro 3G'
11438    - regex: 'M-MP10PA(?:[);/ ]|$)'
11439      model: 'SmartPad 10.1" HD Pro'
11440    - regex: 'M-MP10PA3G(?:[);/ ]|$)'
11441      model: 'SmartPad 10.1" HD Pro 3G'
11442    - regex: 'M-IPRO([18][01]0)[BW](?:[);/ ]|$)'
11443      model: 'SmartPad 8.0" HD iPro$1 3G'
11444
11445    - regex: '(?:M-MP75S23G|M-MP72[01]M)(?:[);/ ]|$)'
11446      model: 'SmartPad 7.0" Mobile'
11447      device: 'phablet'
11448    - regex: 'M-MP7S2[ABDK]3G(?:[);/ ]|$)'
11449      model: 'SmartPad 7.0" S2 3G'
11450      device: 'phablet'
11451    - regex: 'M-MP5303G(?:[);/ ]|$)'
11452      model: 'SmartPad Mini Mobile'
11453      device: 'phablet'
11454    - regex: 'M-PPxB400(?:[);/ ]|$)'
11455      model: 'PhonePad Duo B400'
11456      device: 'phablet'
11457    - regex: 'M-PPAG550(?:[);/ ]|$)'
11458      model: 'PhonePad Duo G550'
11459      device: 'phablet'
11460    - regex: 'M-PPAB500(?:[);/ ]|$)'
11461      model: 'PhonePad Duo B500'
11462      device: 'phablet'
11463    - regex: 'M-PP2G530(?:[);/ ]|$)'
11464      model: 'PhonePad Duo G530'
11465      device: 'phablet'
11466    - regex: 'M-PPG700(?:[);/ ]|$)'
11467      model: 'PhonePad Duo G700'
11468      device: 'phablet'
11469    - regex: 'M-PPxS531(?:[);/ ]|$)'
11470      model: 'PhonePad Duo S531'
11471      device: 'phablet'
11472    - regex: 'M-PP2S550(?:[);/ ]|$)'
11473      model: 'PhonePad Duo S550'
11474      device: 'phablet'
11475    - regex: 'M-PP2S650C?(?:[);/ ]|$)'
11476      model: 'PhonePad Duo S650'
11477      device: 'phablet'
11478    - regex: 'M-PPxS551U(?:[);/ ]|$)'
11479      model: 'PhonePad Duo S551U'
11480      device: 'phablet'
11481
11482    - regex: 'M-PPAG4(?:[);/ ]|$)'
11483      model: 'PhonePad Duo G4'
11484      device: 'smartphone'
11485    - regex: 'M-PP[ABC]G500(?:[);/ ]|$)'
11486      model: 'PhonePad Duo G500'
11487      device: 'smartphone'
11488    - regex: 'M-PP2S500[BC]?(?:[);/ ]|$)'
11489      model: 'PhonePad Duo S500'
11490      device: 'smartphone'
11491    - regex: 'M[_-]PP[Ax]X(470|510|520)U(?:[);/ ]|$)'
11492      model: 'PhonePad Duo X$1U'
11493      device: 'smartphone'
11494    - regex: 'M-PPxG(400|501|[457][PM]?)(?:[);/ ]|$)'
11495      model: 'PhonePad Duo G$1'
11496      device: 'smartphone'
11497    - regex: 'M-PPxS(532[LU]|470|501|5P?|7P?)(?:[);/ ]|$)'
11498      model: 'PhonePad Duo S$1'
11499      device: 'smartphone'
11500    - regex: 'M-PPxG(450)(?:[);/ ]|$)'
11501      model: 'PhonePad Duo G$1'
11502      device: 'smartphone'
11503
11504    - regex: 'M-MP([0-9a-z]+)'
11505      model: 'SmartPad $1'
11506
11507# Medion
11508Medion:
11509  regex: 'Medion|(?:MD_)?LIFETAB|([SPX]10[0-9]{2}X|E10[45]1X|X5001|P851X|P850X|E691X|E1050X)(?:[);/ ]|$)'
11510  device: 'smartphone'
11511  models:
11512    - regex: '(?:MD_)?LIFETAB[_ ]([a-z0-9]+)'
11513      device: 'tablet'
11514      model: 'Lifetab $1'
11515    - regex: '(E450[46]|E5004|S5004|X5001|E5020|P5015|P500[45]|X6001)(?:[);/ ]|$)'
11516      model: 'Life $1'
11517    - regex: '(B5530)(?:[);/ ]|$)'
11518      model: '$1'
11519    - regex: '(E10[45]1X)(?:[);/ ]|$)'
11520      device: 'tablet'
11521      model: '$1'
11522    - regex: '([SPX]10[0-9]{2}X|P851X|P850X|E691X|E1050X)(?:[);/ ]|$)'
11523      model: 'Lifetab $1'
11524      device: 'tablet'
11525    - regex: 'Medion(?: Smartphone)? ([^/;]+) Build'
11526      model: '$1'
11527
11528# MEEG
11529MEEG:
11530  regex: 'MEEG[ _-]'
11531  device: 'smartphone'
11532  models:
11533    - regex: 'MEEG[ _\-]?([^/;]+) Build'
11534      model: '$1'
11535    - regex: 'MEEG[ _\-]?([^);/ ]+)'
11536      model: '$1'
11537
11538# Fourel
11539Fourel:
11540  regex: '(?:EASYSMARTM3|EasySmart M2)(?:[);/ ]|$)'
11541  device: 'smartphone'
11542  models:
11543    - regex: 'EASY ?SMART ?M([32])'
11544      model: 'Easy Smart M$1'
11545
11546# Meizu
11547Meizu:
11548  regex: 'Meizu|MZ-[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 )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)(?:[);/ ]|$)'
11549  device: 'smartphone'
11550  models:
11551    - regex: '(?:MZ-)?M571C'
11552      device: 'phablet'
11553      model: 'M2 Note'
11554    - regex: '(?:MZ-|Meizu-)?m([1-6])[_ ]note(?:[);/ ]|$)'
11555      device: 'phablet'
11556      model: 'M$1 Note'
11557    - regex: '(?:MZ-)?M1 E(?:[);/ ]|$)'
11558      model: 'M1E'
11559    - regex: 'M2 E(?:[);/ ]|$)'
11560      model: 'M2E'
11561    - regex: '(?:MZ-)?M578C[A]?|M2(?:[);/ ]|$)'
11562      model: 'M2'
11563    - regex: 'M681C(?:[);/ ]|$)'
11564      model: 'M3 Note'
11565      device: 'phablet'
11566    - regex: 'M621C(?:[);/ ]|$)'
11567      model: 'M5 Note'
11568      device: 'phablet'
11569    - regex: 'M711C(?:[);/ ]|$)'
11570      model: 'M6'
11571    - regex: 'M721C(?:[);/ ]|$)'
11572      model: 'M6 Note'
11573      device: 'phablet'
11574    - regex: '(M6T|MX6|M3E|M3X)(?:[);/ ]|$)'
11575      model: '$1'
11576    - regex: '(?:MZ-)?M3S(?:[);/ ]|$)'
11577      model: 'M3s'
11578    - regex: '(?:MZ-)?M3 Max(?:[);/ ]|$)'
11579      model: 'M3 Max'
11580    - regex: 'M5S|M612C'
11581      model: 'M5S'
11582    - regex: '(M04[05]|MX[ -]?2)(?:[);/ ]|$)'
11583      model: 'MX2'
11584    - regex: '(M35[1356]|MX[ -]?3)(?:[);/ ]|$)'
11585      model: 'MX3'
11586    - regex: 'MX[ -]?4 Pro(?:[);/ ]|$)'
11587      model: 'MX4 Pro'
11588    - regex: 'MX[ -]?4(?:[);/ ]|$)'
11589      model: 'MX4'
11590    - regex: '(Meizu[- _])?MX[ -]?5(?:[);/ ]|$)'
11591      model: 'MX5'
11592    - regex: 'm1 metal'
11593      model: 'M1 Metal'
11594    - regex: 'M1813(?:[);/ ]|$)'
11595      model: 'M8'
11596    - regex: '(?:M1816|M8 lite)(?:[);/ ]|$)'
11597      model: 'M8 Lite'
11598    - regex: 'M8c Pro(?:[);/ ]|$)'
11599      model: 'M8c Pro'
11600    - regex: 'PRO 7-[HS](?:[);/ ]|$)'
11601      model: 'PRO 7'
11602    - regex: 'PRO 7 Plus(?:[);/ ]|$)'
11603      model: 'Pro 7 Plus'
11604    - regex: 'PRO ([567])'
11605      model: 'PRO $1'
11606    - regex: 'M031(?:[);/ ]|$)'
11607      model: 'MX Dual Core'
11608    - regex: 'M1852(?:[);/ ]|$)'
11609      model: 'X8'
11610    - regex: 'M1822(?:[);/ ]|$)'
11611      model: 'Note 8'
11612    - regex: '(?:MZ-)?16T(?:[);/ ]|$)'
11613      model: '16T'
11614    - regex: '(?:MZ-)?16th Plus(?:[);/ ]|$)'
11615      model: '16th Plus'
11616    - regex: '(?:MZ-)?15 Plus(?:[);/ ]|$)'
11617      model: '15 Plus'
11618    - regex: '(?:MZ-15 Lite| 15 Lite)(?:[);/ ]|$)'
11619      model: '15 Lite'
11620    - regex: 'MZ-16th| 16th(?:[);/ ]|$)'
11621      model: '16th'
11622    - regex: '(?:MZ-)?16 X(?:[);/ ]|$)'
11623      model: '16X'
11624    - regex: 'meizu (17|C9) Pro(?:[);/ ]|$)'
11625      model: '$1 Pro'
11626    - regex: 'MZ-?M3(?:[);/ ]|$)'
11627      model: 'M3'
11628    - regex: 'Meizu[_ ]note([89])(?:[);/ ]|$)'
11629      device: 'phablet'
11630      model: 'Note $1'
11631
11632    - regex: '(?:MZ-)?Meizu[_ ]([^/;]+) Build'
11633      model: '$1'
11634    - regex: '(?:MZ-)?Meizu[_ ]([a-z0-9_]+)'
11635      model: '$1'
11636    - regex: 'MZ-([^/;]+) Build'
11637      model: '$1'
11638
11639# Meitu
11640Meitu:
11641  regex: '(?:(?<!MI CC 9 )Meitu[2]?|MP1503|MP1512|MP160[235]|MP170[19]|MP171[138])(?:[);/ ]|$)'
11642  device: 'smartphone'
11643  models:
11644    - regex: 'MP1503(?:[);/ ]|$)'
11645      model: 'M6'
11646    - regex: '(?:MP1512|Meizu M6s)(?:[);/ ]|$)'
11647      model: 'M6s'
11648    - regex: 'MP1602(?:[);/ ]|$)'
11649      model: 'T8'
11650    - regex: 'MP1605(?:[);/ ]|$)'
11651      model: 'V6'
11652    - regex: 'MP17(?:01|13)(?:[);/ ]|$)'
11653      model: 'T8s'
11654    - regex: 'MP1718(?:[);/ ]|$)'
11655      model: 'T9'
11656    - regex: 'MP1603(?:[);/ ]|$)'
11657      model: 'M8'
11658    - regex: 'MP17(?:09|11)(?:[);/ ]|$)'
11659      model: 'M8s'
11660    - regex: 'Meitu2(?:[);/ ]|$)'
11661      model: '2'
11662    - regex: 'Meitu (Kiss|[MV]4)(?:[);/ ]|$)'
11663      model: '$1'
11664
11665# Memup
11666Memup:
11667  regex: 'SlidePad ?([^;/]*) Build|SPNG?[0-9]{2,4}[a-z]{0,2}(?:[);/ ]|$)|SP704CE?|SP-NG708-3G'
11668  device: 'tablet'
11669  models:
11670    - regex: 'SlidePad ?([^;/]*) Build'
11671      model: 'SlidePad $1'
11672    - regex: 'SPNG([0-9]{2,4}[a-z]{0,2})(?:[);/ ]|$)'
11673      model: 'SlidePad NG$1'
11674    - regex: 'SP-NG(708)-3G(?:[);/ ]|$)'
11675      model: 'SlidePad NG$1 3G'
11676    - regex: 'SP704(CE?)'
11677      model: 'SlidePad 704$1'
11678
11679# Mecer (mecer.co.za)
11680Mecer:
11681  regex: '(M785|800P3[12]C|101P51C|X1010|M7[67]QF6|M17QF6_[43]G)(?:[);/ ]|$)'
11682  device: 'tablet'
11683  models:
11684    - regex: 'M785(?:[);/ ]|$)'
11685      model: 'Xpress Smartlife M785'
11686    - regex: 'X1010(?:[);/ ]|$)'
11687      model: 'X1010'
11688    - regex: 'M17QF6_([34])G(?:[);/ ]|$)'
11689      model: 'M17QF6 $1G'
11690    - regex: '800P31C(?:[);/ ]|$)'
11691      model: 'Xpress Smartlife 800P31C'
11692    - regex: '800P32C(?:[);/ ]|$)'
11693      model: 'Xpress Smartlife 800P32C'
11694    - regex: '101P51C(?:[);/ ]|$)'
11695      model: 'Xpress Smartlife 101P51C'
11696    - regex: 'M7([76])QF6(?:[);/ ]|$)'
11697      model: 'Xpress Smartlife M7$1QF6'
11698
11699# mio
11700Mio:
11701  regex: 'MIO(?:/)?([a-z0-9]+)|(?:MOBIX M6|Mio TouchPad 7 Quad Core)(?:[);/ ]|$)'
11702  device: 'smartphone'
11703  models:
11704    - regex: 'MOBIX M6(?:[);/ ]|$)'
11705      model: 'Mobix M6'
11706    - regex: 'MIO(?:/)?([a-z0-9]+)'
11707      model: '$1'
11708    - regex: 'Mio TouchPad 7 Quad Core'
11709      device: 'tablet'
11710      model: 'TouchPad 7 Quad Core'
11711
11712# Miray
11713Miray:
11714  regex: 'MIDM[_-]|MPM[_-]'
11715  device: 'smartphone'
11716  models:
11717    - regex: 'MIDM[_-]([a-z0-9]+)'
11718      model: 'MIDM $1'
11719      device: 'tablet'
11720    - regex: 'MPM[_-]([a-z0-9]+)'
11721      model: 'MPM $1'
11722
11723# mitsubishi
11724Mitsubishi:
11725  regex: 'MITSU|portalmmm/[12]\.0 M'
11726  device: 'feature phone'
11727  models:
11728    - regex: 'MITSU/[a-z0-9.]+ \(([a-z0-9]+)\)'
11729      model: '$1'
11730    - regex: 'MITSU[ \-]?([a-z0-9]+)'
11731      model: '$1'
11732    - regex: 'portalmmm/[12]\.0 (M[a-z0-9]+)'
11733      model: '$1'
11734
11735# MIXC
11736MIXC:
11737  regex: '(M35|M20|G7106|G7108)(?:[);/ ]|$)'
11738  device: 'smartphone'
11739  models:
11740    - regex: '(M[0-9]{1,2})(?:[);/ ]|$)'
11741      model: '$1'
11742    - regex: '(G[0-9]{4})(?:[);/ ]|$)'
11743      model: '$1'
11744
11745# Mobiola
11746Mobiola:
11747  regex: '(MS5[50]X6|MS55X5|MS55L1|MS50L1|MS43A3000|MS45A4000|MS50A4000|MS50A4500|MS50A5000|MS50A6000|MS50B11000|MB-2900 QUATTRO|POLYS[_ ]MS45L1|Wave5)'
11748  device: 'smartphone'
11749  models:
11750    - regex: 'MS50X6'
11751      model: 'Atmos II'
11752    - regex: 'POLYS[_ ]MS45L1'
11753      model: 'Polys MS45L1'
11754    - regex: 'MS55X6'
11755      model: 'Atmos Pro II'
11756    - regex: 'MS55X5'
11757      model: 'Atmos Pro'
11758    - regex: 'MS55L1'
11759      model: 'GAIA'
11760    - regex: 'MS50L1'
11761      model: 'Inti'
11762    - regex: 'MB-2900 QUATTRO'
11763      model: 'MB-2900 Quattro'
11764    - regex: 'MS43A3000'
11765      model: 'MS43A3000'
11766    - regex: 'MS45A4000'
11767      model: 'eOn 45'
11768    - regex: 'MS50A4000'
11769      model: 'eOn 50'
11770    - regex: 'MS50A4500'
11771      model: 'eOn 50 Elegance'
11772    - regex: 'MS50A5000'
11773      model: 'eOn 50 Quad 8'
11774    - regex: 'MS50A6000'
11775      model: 'eOn 50 Quad 16'
11776    - regex: 'MS50B11000'
11777      model: 'MS50B11000'
11778    - regex: 'Wave5'
11779      model: 'Wave 5'
11780
11781# Mobicel or Mobicell
11782Mobicel:
11783  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[_ ]?(?:[12]|PLUS)|R1PLUS_1|ZOOM-H|REBEL|LEGEND MAX|HERO_DS|Switch[ _]GO|PULSE_1|TRENDY 2|FEVER_PLUS_[HJ]|RIO_SS|Clik plus|PURE PLUS|Neo[ _]LTE|Titan_1|ZOOM_1)(?:[);/ ]|$)'
11784  device: 'smartphone'
11785  models:
11786    - regex: 'Matrix'
11787      model: 'Matrix'
11788    - regex: 'LEGEND MAX'
11789      model: 'Legend Max'
11790    - regex: 'BLINK'
11791      model: 'Blink'
11792    - regex: 'BERRY1'
11793      model: 'Berry 1'
11794    - regex: 'BERRY 2'
11795      model: 'Berry 2'
11796    - regex: 'TRENDY 2'
11797      model: 'Trendy 2'
11798    - regex: 'BERRY[_ ]PLUS'
11799      model: 'Berry Plus'
11800    - regex: 'TRENDY PLUS'
11801      model: 'Trendy Plus'
11802    - regex: 'HYPE'
11803      model: 'Hype'
11804    - regex: 'DANDY_ZAM'
11805      model: 'Dandy Zam'
11806    - regex: 'DANDY'
11807      model: 'Dandy'
11808    - regex: 'ASTRO'
11809      model: 'Astro'
11810    - regex: 'VENUS_G'
11811      model: 'Venus Go'
11812    - regex: 'TANGO_LITE'
11813      model: 'Tango Lite'
11814    - regex: 'FENDY_DS'
11815      model: 'Fendy DS'
11816    - regex: 'REBEL'
11817      model: 'Rebel'
11818    - regex: 'R7_1'
11819      model: 'R7'
11820    - regex: 'Titan_1'
11821      model: 'Titan 1'
11822    - regex: 'ZOOM_1'
11823      model: 'Zoom 1'
11824    - regex: 'HERO_DS'
11825      model: 'Hero DS'
11826    - regex: 'FAME_DS'
11827      model: 'Fame DS'
11828    - regex: 'FAME'
11829      model: 'Fame'
11830    - regex: 'BEAM'
11831      model: 'Beam'
11832    - regex: 'Neo[ _]LTE'
11833      model: 'Neo LTE'
11834    - regex: 'RIO_SS'
11835      model: 'Rio SS'
11836    - regex: 'Switch[ _]GO'
11837      model: 'Switch Go'
11838    - regex: 'R1PLUS_1'
11839      model: 'R1 Plus'
11840    - regex: 'Clik plus'
11841      model: 'Clik Plus'
11842    - regex: 'CLIK'
11843      model: 'Clik'
11844    - regex: 'PULSE_1'
11845      model: 'Pulse 1'
11846    - regex: 'PURE PLUS'
11847      model: 'Pure Plus'
11848    - regex: 'Mobicel_(R1)'
11849      model: '$1'
11850    - regex: 'ZOOM-H'
11851      device: 'tablet'
11852      model: 'Zoom H'
11853    - regex: 'FEVER_PLUS_([HJ])'
11854      device: 'tablet'
11855      model: 'Fever Plus $1'
11856
11857# Mobiistar
11858Mobiistar:
11859  regex: 'Mobiistar|Zumbo[ _]S|(?:PRIME X MAX|X1 Notch|E1 Selfie|XQ[_ ]Dual)(?:[);/ ]|$)'
11860  device: 'smartphone'
11861  models:
11862    - regex: 'X1 Notch(?:[);/ ]|$)'
11863      model: 'X1 Notch'
11864    - regex: 'E1 Selfie(?:[);/ ]|$)'
11865      model: 'E1 Selfie'
11866    - regex: 'XQ[_ ]Dual(?:[);/ ]|$)'
11867      model: 'XQ Dual'
11868    - regex: 'mobiistar_LAI_Zumbo(?:[);/ ]|$)'
11869      model: 'Zumbo'
11870    - regex: 'Zumbo[_ ]S[_ ]2017[_ ]Lite(?:[);/ ]|$)'
11871      model: 'Lai Zumbo S Lite (2017)'
11872    - regex: 'Zumbo[_ ]S[_ ]2017(?:[);/ ]|$)'
11873      model: 'Lai Zumbo S (2017)'
11874    - regex: 'mobiistar ZUMBO S2( Dual)'
11875      model: 'Zumbo S2'
11876    - regex: 'Mobiistar_LAI_Zumbo_J_2017(?:[);/ ]|$)'
11877      model: 'Lai Zumbo J (2017)'
11878    - regex: 'Mobiistar_LAI_Zumbo_J(?:[);/ ]|$)'
11879      model: 'Lai Zumbo J'
11880    - regex: 'Mobiistar_Zumbo_J2'
11881      model: 'Lai Zumbo J2'
11882    - regex: 'Mobiistar[_ ]Zumbo[_ ]S2'
11883      model: 'Zumbo S2'
11884    - regex: 'mobiistar ZUMBO Power'
11885      model: 'Zumbo Power'
11886    - regex: 'mobiistar[ _]LAI[ _]YUNA[ _]([1XCS])'
11887      model: 'Lai Yuna $1'
11888    - regex: 'mobiistar LAI Yuki'
11889      model: 'Lai Yuki'
11890    - regex: 'mobiistar[ _]LAI[ _]ZORO[ _]([23])'
11891      model: 'Lai Zoro $1'
11892    - regex: 'mobiistar[ _]LAI[ _]Zena'
11893      model: 'Lai Zena'
11894    - regex: 'mobiistar[ _]LAI[ _]Z([12])?'
11895      model: 'Lai Z$1'
11896    - regex: 'mobiistar_ZORO_4G'
11897      model: 'Zoro 4G'
11898    - regex: 'mobiistar touch LAI 512'
11899      model: 'Touch Lai 512'
11900    - regex: 'mobiistar LAI 504([KC])'
11901      model: 'Lai 504$1'
11902    - regex: 'mobiistar LAI Y'
11903      model: 'Lai Y'
11904    - regex: 'mobiistar PRIME X 2017'
11905      model: 'Prime X'
11906    - regex: 'mobiistar[ _]PRIME[ _](X1|558|X[ _]Plus|X[ _]Grand) Build'
11907      model: 'Prime $1'
11908    - regex: 'PRIME X MAX 2018'
11909      model: 'Prime X Max'
11910    - regex: 'mobiistar[ _]KOOL([ _]Lite)?'
11911      model: 'Kool$1'
11912    - regex: 'mobiistar KAT 452 Build'
11913      model: 'Kat 452'
11914    - regex: 'mobiistar_LAI_YOLLO Build'
11915      model: 'Lai Yollo'
11916    - regex: 'Mobiistar[ _]([^;/)]+)(?: Build|[;)])'
11917      model: '$1'
11918
11919# MSI (msi.com)
11920MSI:
11921  regex: 'Primo ?(?:9[13]|81|76)|Enjoy 7 Plus'
11922  device: 'tablet'
11923  models:
11924    # explicit tablet models
11925    - regex: 'Primo ?(9[13]|76|81)'
11926      model: 'Primo $1'
11927    - regex: 'Enjoy 7 Plus'
11928      model: 'Enjoy 7 Plus'
11929
11930# MLLED
11931MLLED:
11932  regex: 'MLLED[ _]'
11933  device: 'smartphone'
11934  models:
11935    - regex: 'MLLED[ _]([^;/]+)Build'
11936      model: '$1'
11937    - regex: 'MLLED[ _]([^);/]+)(?:[);/]|$)'
11938      model: '$1'
11939
11940# Mobistel
11941Mobistel:
11942  regex: '(Cynus[ _][^/;)]+)( Build|\))'
11943  device: 'smartphone'
11944  model: '$1'
11945
11946# Mecool
11947Mecool:
11948  regex: '(?:KM9PRO|BB2 PRO|K[I]{1,3} PRO|KI PLUS|KM9_TV_BOX|M8SPROW|M8S (?:PLUS|PRO) (?:DVB|[LW]|PLUS)|M8S (?:MAX|PRO))(?:[);/ ]|$)'
11949  device: 'tv'
11950  models:
11951    - regex: 'KM9PRO(?:[);/ ]|$)'
11952      model: 'KM9 Pro'
11953    - regex: 'KM9_TV_BOX(?:[);/ ]|$)'
11954      model: 'KM9 TV Box'
11955    - regex: 'BB2 PRO(?:[);/ ]|$)'
11956      model: 'BB2 Pro'
11957    - regex: '(K[I]{1,3}) PRO(?:[);/ ]|$)'
11958      model: '$1 Pro'
11959    - regex: 'KI PLUS(?:[);/ ]|$)'
11960      model: 'KI Plus'
11961    - regex: 'M8SPROW(?:[);/ ]|$)'
11962      model: 'M8S Pro W'
11963    - regex: 'M8S PLUS DVB(?:[);/ ]|$)'
11964      model: 'M8S Plus DVB'
11965    - regex: 'M8S PLUS ([LW])(?:[);/ ]|$)'
11966      model: 'M8S Plus $1'
11967    - regex: 'M8S PRO ([LW])(?:[);/ ]|$)'
11968      model: 'M8S Pro $1'
11969    - regex: 'M8S PRO PLUS(?:[);/ ]|$)'
11970      model: 'M8S Pro Plus'
11971    - regex: 'M8S PRO(?:[);/ ]|$)'
11972      model: 'M8S Pro'
11973    - regex: 'M8S MAX(?:[);/ ]|$)'
11974      model: 'M8S Max'
11975
11976# Modecom
11977Modecom:
11978  regex: 'Modecom|Free(?:Way )?Tab|xino z[\d]+ x[\d]+'
11979  device: 'tablet'
11980  models:
11981    - regex: 'xino Z([\d]+) X([\d]+)'
11982      model: 'Xino Z$1 X$2'
11983      device: 'smartphone'
11984
11985    - regex: 'FreeTab[ _\-]?([^/;]+)? Build'
11986      model: 'FreeTab $1'
11987    - regex: 'FreeTab[ _\-]?((?!Build)[^);/ ]+)?'
11988      model: 'FreeTab $1'
11989    - regex: 'FreeWay Tab[ _\-]?([^/;]+) Build'
11990      model: 'FreeWay Tab $1'
11991    - regex: 'FreeWay Tab[ _\-]?((?!Build)[^);/ ]+)'
11992      model: 'FreeWay Tab $1'
11993
11994# Mofut
11995Mofut:
11996  regex: 'Mofut'
11997  device: 'smartphone'
11998  models:
11999    - regex: 'Mofut[ _\-]?([^/;]+) Build'
12000      model: '$1'
12001    - regex: 'Mofut[ _\-]?((?!Build)[^);/ ]+)'
12002      model: '$1'
12003
12004# BrightSign (brightsign.biz)
12005BrightSign:
12006  regex: 'BrightSign'
12007  device: 'tv'
12008  models:
12009    - regex: '(HD1023|XD233|XD230|XD1030|XT114[34]|4K1142|LS424)'
12010      model: '$1'
12011
12012# motorola
12013Motorola:
12014  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|XT2125-4|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|\))'
12015  device: 'smartphone'
12016  models:
12017    # Explicit feature phone models
12018    - regex: 'MOT-V360'
12019      model: 'V360'
12020      device: 'feature phone'
12021
12022    # Explicit smartphone models
12023    - regex: '(?:MOT-|Motorola-)?XT300'
12024      model: 'Spice'
12025    - regex: '(?:MOT-|Motorola-)?XT30[35]'
12026      model: 'Motosmart ME'
12027    - regex: '(?:MOT-|Motorola-)?XT31[16]'
12028      model: 'Fire'
12029    - regex: '(?:MOT-|Motorola-)?XT2125-4'
12030      model: 'Edge S'
12031    - regex: '(?:MOT-|Motorola-)?XT32[01]'
12032      model: 'Defy Mini'
12033    - regex: '(?:MOT-|Motorola-)?XT3(?:89|90)'
12034      model: 'Motosmart'
12035    - regex: '(?:MOT-|Motorola-)?XT502'
12036      model: 'Quench'
12037    - regex: '(?:MOT-|Motorola-)?XT531'
12038      model: 'Fire XT'
12039    - regex: '(?:MOT-|Motorola-)?XT535'
12040      model: 'Defy'
12041    - regex: '(?:MOT-|Motorola-)?XT55[567]C?'
12042      model: 'Defy XT'
12043    - regex: '(?:MOT-|Motorola-)?XT603'
12044      model: 'Admiral'
12045    - regex: '(?:MOT-|Motorola-)?XT610'
12046      model: 'Droid Pro'
12047    - regex: '(?:MOT-|Motorola-)?XT615'
12048      model: 'Motoluxe'
12049    - regex: '(?:MOT-|Motorola-)?XT621'
12050      model: 'Primus'
12051    - regex: '(?:MOT-|Motorola-)?XT626'
12052      model: 'IronRock'
12053    - regex: '(?:MOT-|Motorola-)?XT682'
12054      model: 'Atrix'
12055    - regex: '(?:MOT-|Motorola-)?XT685'
12056      model: 'Motoluxe Dual-SIM'
12057    - regex: '(?:MOT-|Motorola-)?XT687'
12058      model: 'Atrix TV'
12059    - regex: '(?:MOT-|Motorola-)?XT720'
12060      model: 'Milestone'
12061    - regex: '(?:MOT-|Motorola-)?XT800W'
12062      model: 'Glam'
12063    - regex: '(?:MOT-|Motorola-)?XT860'
12064      model: 'Milestone 3'
12065    - regex: '(?:MOT-|Motorola-)?XT881'
12066      model: 'Electrify 2'
12067    - regex: '(?:MOT-|Motorola-)?XT882'
12068      model: 'Moto XT882'
12069    - regex: '(?:MOT-|Motorola-)?XT88[56]'
12070      model: 'Droid RAZR V'
12071    - regex: '(?:MOT-|Motorola-)?XT890'
12072      model: 'Droid RAZR i'
12073    - regex: '(?:MOT-|Motorola-)?XT894'
12074      model: 'Droid 4'
12075    - regex: '(?:MOT-|Motorola-)?XT897'
12076      model: 'Photon Q'
12077    - regex: '(?:MOT-|Motorola-)?XT901'
12078      model: 'Electrify M'
12079    - regex: '(?:MOT-|Motorola-)?XT90[567]'
12080      model: 'Droid RAZR M'
12081    - regex: '(?:MOT-|Motorola-)?XT910S?'
12082      model: 'Droid RAZR'
12083    - regex: '(?:MOT-|Motorola-)?XT91[4568]'
12084      model: 'Droid RAZR D1'
12085    - regex: '(?:MOT-|Motorola-)?XT9(?:19|20)'
12086      model: 'Droid RAZR D3'
12087    - regex: '(?:MOT-|Motorola-)?XT925'
12088      model: 'Droid RAZR HD'
12089    - regex: '(?:MOT-|Motorola-)?XT102[12]'
12090      model: 'Moto E'
12091    - regex: '(?:MOT-|Motorola-)?XT1706'
12092      model: 'Moto E3 Power'
12093    - regex: '(?:MOT-|Motorola-)?XT1924-9'
12094      model: 'Moto E5 Plus'
12095    - regex: 'moto e\(?([0-9])\)? plus'
12096      model: 'Moto E$1 Plus'
12097    - regex: 'Moto E([0-9]) Play'
12098      model: 'Moto E$1 Play'
12099    - regex: 'Moto E5 go(?:[);/ ]|$)'
12100      model: 'Moto E5 Go'
12101    - regex: 'Moto E\(?(\di?)\)? Power(?:[);/ ]|$)'
12102      model: 'Moto E$1 Power'
12103    - regex: 'Moto E\(?([567]i?)\)?(?:[);/ ]|$)'
12104      model: 'Moto E$1'
12105    - regex: 'Moto E\(?([567])s\)?(?:[);/ ]|$)'
12106      model: 'Moto E$1s'
12107    - regex: '(?:MOT-|Motorola-)?XT1030'
12108      model: 'Droid Mini'
12109    - regex: '(?:MOT-|Motorola-)?XT1565'
12110      model: 'Droid Maxx 2'
12111    - regex: '(?:MOT-|Motorola-)?XT1096'
12112      model: 'Moto X2'
12113    - regex: '(?:MOT-|Motorola-)?XT1254'
12114      model: 'Droid Turbo'
12115    - regex: '(?:MOT-|Motorola-)?XT10(?:28|3[12349]|68|69)'
12116      model: 'Moto G'
12117    - regex: '(?:MOT-|Motorola-)?XT1609'
12118      model: 'Moto G4 Play'
12119    - regex: '(?:MOT-|Motorola-)?XT180[3-5]|Moto G ?5S Plus|Moto G \(5S\) Plus'
12120      model: 'Moto G5s Plus'
12121    - regex: '(?:MOT-|Motorola-)?XT1799-2|Moto G \(5S\)'
12122      model: 'Moto G5s'
12123    - regex: '(?:MOT-|Motorola-)?XT168[57]'
12124      model: 'Moto G5 Plus'
12125    - regex: '(?:MOT-|Motorola-)?XT167[06]' #XT1671 XT1677
12126      model: 'Moto G5'
12127    - regex: '(?:MOT-|Motorola-)?XT1925-10'
12128      model: 'Moto G6'
12129    - regex: '(?:MOT-|Motorola-)?XT1965-6'
12130      model: 'Moto G7 Plus'
12131    - regex: '(?:MOT-|Motorola-)?XT10(?:49|5[23568]|60|9[23457])'
12132      model: 'Moto X'
12133    - regex: '(?:MOT-|Motorola-)?XT156[234]|Moto X Play(?:[);/ ]|$)'
12134      model: 'Moto X Play'
12135    - regex: '(?:MOT-|Motorola-)?XT1572'
12136      model: 'Moto X Style'
12137    - regex: '(?:MOT-|Motorola-)?XT1575'
12138      model: 'Moto X Pure Edition'
12139    - regex: '(?:MOT-|Motorola-)?XT158[01]'
12140      model: 'Moto X Force'
12141    - regex: '(?:MOT-|Motorola-)?XT1080'
12142      model: 'Droid Ultra'
12143    - regex: '(?:MOT-|Motorola-)?XT1585'
12144      model: 'Droid Turbo 2'
12145    - regex: '(?:MOT-|Motorola-)?XT1650(?:-05)?'
12146      model: 'Moto Z'
12147    - regex: 'moto z4(?:[);/ ]|$)'
12148      model: 'Moto Z4'
12149    - regex: 'Moto Z3 Play(?:[);/ ]|$)'
12150      model: 'Moto Z3 Play'
12151    - regex: '(?:MOT-|Motorola-)?XT1635(?:-0[1-3])?'
12152      model: 'Moto Z Play'
12153    - regex: '(?:MOT-|Motorola-)?XT1710-(?:-0[28])?'
12154      model: 'Moto Z2 Play'
12155    - regex: '(?:MOT-|Motorola-)?XT1789-05'
12156      model: 'Moto Z2 Force'
12157    - regex: '(?:MOT-|Motorola-)?XT1929-15|moto z3(?:[);/ ]|$)'
12158      model: 'Moto Z3'
12159    - regex: '(?:MOT-|Motorola-)?XT1663'
12160      model: 'Moto M'
12161    - regex: '(?:MOT-|Motorola-)?XT1943-1'
12162      model: 'P30'
12163    - regex: '(?:MOT-|Motorola-)?XT1941-2'
12164      model: 'P30 Play'
12165    - regex: '(?:MOT-|Motorola-)?XT1942-1'
12166      model: 'P30 Note'
12167    - regex: '(?:MOT-|Motorola-)?edge plus'
12168      model: 'Edge Plus'
12169    - regex: '(?:MOT-|Motorola-)?edge plus'
12170      model: 'Edge Plus'
12171    - regex: '(?:MOT-|Motorola-)?edge 20 lite'
12172      model: 'Edge 20 Lite'
12173    - regex: '(?:MOT-|Motorola-)?edge 20 pro'
12174      model: 'Edge 20 Pro'
12175    - regex: '(?:MOT-|Motorola-)?edge'
12176      model: 'Edge'
12177    - regex: '(?:MOT-|Motorola-)?one vision plus'
12178      model: 'One Vision Plus'
12179    - regex: '(?:MOT-|Motorola-)?(?:XT1970-5|one vision)'
12180      model: 'One Vision'
12181    - regex: '(?:MOT-|Motorola-)?one power'
12182      model: 'One Power'
12183    - regex: '(?:MOT-|Motorola-)?one hyper'
12184      model: 'One Hyper'
12185    - regex: '(?:MOT-|Motorola-)?one zoom'
12186      model: 'One Zoom'
12187    - regex: '(?:MOT-|Motorola-)?one fusion\+'
12188      model: 'One Fusion Plus'
12189    - regex: '(?:MOT-|Motorola-)?one fusion'
12190      model: 'One Fusion'
12191    - regex: 'motorola one action'
12192      model: 'One Action'
12193    - regex: 'motorola one macro'
12194      model: 'One Macro'
12195    - regex: 'motorola one 5G UW'
12196      model: 'One 5G UW'
12197    - regex: 'motorola one 5G ace'
12198      model: 'One 5G Ace'
12199    - regex: 'motorola one vision'
12200      model: 'One Vision'
12201    - regex: 'moto g stylus \(2021\)'
12202      model: 'Moto G Stylus (2021)'
12203    - regex: 'moto g stylus'
12204      model: 'Moto G Stylus'
12205    - regex: 'moto g play \(2021\)'
12206      model: 'Moto G Play (2021)'
12207    - regex: 'moto g power \(2021\)'
12208      model: 'Moto G Power (2021)'
12209    - regex: 'moto g power'
12210      model: 'Moto G Power'
12211    - regex: 'moto g pro'
12212      model: 'Moto G Pro'
12213    - regex: 'moto g fast'
12214      model: 'Moto G Fast'
12215    - regex: 'moto g 5G plus'
12216      model: 'Moto G 5G Plus'
12217    - regex: 'moto g 5G'
12218      model: 'Moto G 5G'
12219    - regex: 'moto g\(([0-9])\) power lite'
12220      model: 'Moto G$1 Power Lite'
12221    - regex: 'moto g\(([0-9])\) power'
12222      model: 'Moto G$1 Power'
12223    - regex: 'moto g\(([0-9])\) supra'
12224      model: 'Moto G$1 Supra'
12225    - regex: 'moto g\(([0-9])\) plus'
12226      model: 'Moto G$1 Plus'
12227    - regex: 'moto g\(([0-9]+)\) play'
12228      model: 'Moto G$1 Play'
12229    - regex: 'moto g\(([0-9]+)\)'
12230      model: 'Moto G$1'
12231
12232    - regex: 'Moto ([CGEXZ]) ?\(([a-z0-9]+)\)( Plus| Play)?'
12233      model: 'Moto $1$2$3'
12234    - regex: 'Moto ?([CGEXZ])([0-9]+)( Plus| Play)?'
12235      model: 'Moto $1$2$3'
12236    - regex: '(?:Motorola-)?Moto[ _]?([CGEXZ])([ _](?:Plus|Play))?'
12237      model: 'Moto $1$2'
12238    - regex: 'MotoroiX'
12239      model: 'MotoroiX'
12240
12241    - regex: 'razr \(2020\)'
12242      model: 'RAZR (2020)'
12243    - regex: 'Motorola[ _\-]([^/;]+)(?: Build|[);])'
12244      model: '$1'
12245    - regex: 'MOTORAZR[ _\-]([a-z0-9]+)'
12246      model: 'RAZR $1'
12247    - regex: 'MOTORIZR[ _\-]([a-z0-9]+)'
12248      model: 'RIZR $1'
12249    - regex: 'MOT(?!OROLA)[O]?[_\-]?([a-z0-9.]+)'
12250      model: '$1'
12251    - regex: '(?<!AN)DROID ?([a-z0-9 ]*) Build'
12252      model: 'DROID $1'
12253    - regex: '(?<!AN)DROID ?([a-z0-9]+)'
12254      model: 'DROID $1'
12255    - regex: 'portalmmm/2.0 ((?:E378i|L6|L7|V3)[a-z0-9]+)'
12256      model: '$1'
12257    - regex: '(XOOM [^;/]*)Build'
12258      device: 'tablet'
12259      model: '$1'
12260    - regex: '(MZ[0-9]{3})(?:[);/ ]|$)'
12261      device: 'tablet'
12262      model: '$1'
12263    - regex: '((?:ME|MB|XT)[0-9]{3,4}(?:\(Defy\))?)(?:[);/ ]|$)'
12264      model: '$1'
12265
12266# Movic
12267Movic:
12268  regex: 'MOVIC|F4502'
12269  device: 'smartphone'
12270  models:
12271    - regex: 'MOVIC[ -]W([2345])'
12272      model: 'W$1'
12273    - regex: 'F4502'
12274      model: 'F4502'
12275
12276# MTN
12277MTN:
12278  regex: 'MTN-'
12279  device: 'smartphone'
12280  models:
12281    - regex: 'MTN-(L860|S620)'
12282      model: 'Sm@rt Mini $1'
12283    - regex: 'MTN-8978P'
12284      device: 'tablet'
12285      model: 'Steppa'
12286    - regex: 'MTN-([a-z0-9_\-]+)'
12287      model: 'MTN-$1'
12288
12289# MyTab
12290MyTab:
12291  regex: 'MyTAB[ _-](?:8 MINI Dual Core|U55GT)(?:[);/ ]|$)'
12292  device: 'tablet'
12293  models:
12294    - regex: 'MyTAB[ _-]8 MINI Dual Core(?:[);/ ]|$)'
12295      model: '8 Mini Dual Core'
12296    - regex: 'MyTAB-U55GT(?:[);/ ]|$)'
12297      model: 'U55GT'
12298
12299# myphone (myphone.com.ph)
12300MyPhone:
12301  regex: '(?:MyPhone|MyPad|MyTab)[ _][^;/)]+( Build|\))|Cube_LTE|myTab10II|LUNA_II|HAMMER[ _](FORCE|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'
12302  device: 'smartphone'
12303  models:
12304    # explicit table models
12305    - regex: 'MyPad[ _]([^;/]+) Build'
12306      model: 'MyPad $1'
12307      device: 'tablet'
12308    - regex: 'MyTab[ _]([^;/]+) Build'
12309      model: 'MyTab $1'
12310      device: 'tablet'
12311    - regex: 'myTab_10III'
12312      model: 'MyTab 10 III'
12313      device: 'tablet'
12314    - regex: 'myTab10II'
12315      model: 'MyTab 10 II'
12316      device: 'tablet'
12317    - regex: 'myT6 DTV'
12318      model: 'myT6 DTV'
12319      device: 'tablet'
12320
12321    # explicit smartphones models
12322    - regex: 'Cube_LTE'
12323      model: 'Cube LTE'
12324    - regex: 'Prime_4_Lite'
12325      model: 'Prime 4 Lite'
12326    - regex: 'HAMMER[ _]ENERGY'
12327      model: 'Hammer Energy'
12328    - regex: 'HAMMER_AXE[_ ]M[_ ]LTE'
12329      model: 'Hammer Axe M LTE'
12330    - regex: 'Hammer Titan 2'
12331      model: 'Hammer Titan 2'
12332    - regex: 'Hammer[_ ]FORCE'
12333      model: 'Hammer Force'
12334    - regex: '(?:Hammer[ _])?Iron[ _](2|3)'
12335      model: 'Hammer Iron $1'
12336    - regex: 'Hammer[ _]Explorer'
12337      model: 'Hammer Explorer'
12338    - regex: 'Hammer Active(?:[);/ ]|$)'
12339      model: 'Hammer Active'
12340    - regex: 'Hammer_Active2(?:[);/ ]|$)'
12341      model: 'Hammer Active 2'
12342    - regex: 'Hammer_Active2_LTE(?:[);/ ]|$)'
12343      model: 'Hammer Active 2 LTE'
12344    - regex: 'Hammer AXE Pro'
12345      model: 'Hammer Axe Pro'
12346    - regex: 'Hammer_Blade2_PRO'
12347      model: 'Hammer Blade 2 Pro'
12348    - regex: 'C-Smart_pix'
12349      model: 'C-Smart Pix'
12350    - regex: 'Pocket_2(?:[);/ ]|$)'
12351      model: 'Pocket 2'
12352    - regex: 'myA17(?:[);/ ]|$)'
12353      model: 'myA17'
12354    - regex: '(?:myPhone_)?Fun[_ ]?(\d)[_ ]?Lite'
12355      model: 'FUN $1 Lite'
12356    - regex: '(?:myPhone_)?Fun[_ ]?(\d)[_ ]?LTE'
12357      model: 'FUN $1 LTE'
12358    - regex: '(?:myPhone_)?Fun_?([48]|18x9)'
12359      model: 'FUN $1'
12360
12361    - regex: 'MyPhoneMY27'
12362      model: 'my27'
12363    - regex: 'myX12(?:[);/ ]|$)'
12364      model: 'myX12'
12365    - regex: 'myXI1 Plus(?:[);/ ]|$)'
12366      model: 'myXI1 Plus'
12367    - regex: 'myXI1 Pro(?:[);/ ]|$)'
12368      model: 'myXI1 Pro'
12369    - regex: 'myXI3(?:[);/ ]|$)'
12370      model: 'myXI3'
12371    - regex: 'Q_Smart_BE(?:[);/ ]|$)'
12372      model: 'Q-Smart BE'
12373    - regex: 'Prime_18x9(_LTE)?(?:[);/ ]|$)'
12374      model: 'Prime 18x9$1'
12375    - regex: 'Prime3Lite(?:[);/ ]|$)'
12376      model: 'Prime 3 Lite'
12377    - regex: 'Brown 1(?:[);/ ]|$)' # ARK Brown 1
12378      model: 'Brown 1'
12379    - regex: 'myPhone[_ ]Pocket[_ ]Pro'
12380      model: 'Pocket Pro'
12381    - regex: 'Q-Smart_III_Plus'
12382      model: 'Q-Smart III Plus'
12383    - regex: 'LUNA_II'
12384      model: 'Luna II'
12385
12386    # general detections
12387    - regex: 'MyPhone[ _]([^;/)]+)( Build|\))'
12388      model: '$1'
12389
12390# MyWigo
12391MyWigo:
12392  regex: 'MyWigo '
12393  device: 'smartphone'
12394  models:
12395    - regex: 'City3'
12396      model: 'City 3'
12397
12398# Myros (myrosworld.com)
12399Myros:
12400  regex: '(E70 Ultra)(?:[);/ ]|$)'
12401  device: 'smartphone'
12402  model: '$1'
12403
12404# Myria
12405Myria:
12406  regex: ' (Myria_[^/;]+|502M|Cozy|Easy tab 9|Grand) Build|Myria_FIVE|Myria_Grand_4G|Myria_Wide_2|Myria_Wide_4G'
12407  device: 'smartphone'
12408  models:
12409    - regex: 'Myria_([^/;]+) Build'
12410      model: '$1'
12411    - regex: 'Myria_FIVE'
12412      model: 'Five'
12413    - regex: '(502M|Grand)'
12414      model: '$1'
12415    - regex: 'Myria_Grand_4G'
12416      model: 'Grand 4G'
12417    - regex: 'Myria_Wide_4G'
12418      model: 'Wide 4G'
12419    - regex: 'Myria_Wide_2'
12420      model: 'Wide 2'
12421    - regex: '(Cozy|Easy tab 9)'
12422      model: '$1'
12423      device: 'tablet'
12424
12425# M.T.T.
12426M.T.T.:
12427  regex: 'M\.T\.T\.'
12428  device: 'smartphone'
12429  models:
12430    - regex: 'M\.T\.T\. ?Tablet([^;/]+)? Build'
12431      device: 'tablet'
12432      model: 'Tablet$1'
12433    - regex: 'M\.T\.T\. ?([^;/]+) Build'
12434      model: '$1'
12435
12436# Navon
12437Navon:
12438  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))?)(?:[);/ ]|$)'
12439  device: 'smartphone'
12440  models:
12441    - regex: 'M505 LTE(?:[);/ ]|$)'
12442      model: 'Mizu M505 LTE'
12443    - regex: '(F552|D504)(?:[);/ ]|$)'
12444      model: 'Mizu $1'
12445    - regex: 'Superme_Max(?:[);/ ]|$)'
12446      model: 'Supreme Max'
12447    - regex: 'Supreme_Fine_Mini(?:[);/ ]|$)'
12448      model: 'Supreme Fine Mini'
12449    - regex: 'Supreme_Fine_Micro(?:[);/ ]|$)'
12450      model: 'Supreme Fine Micro'
12451    - regex: 'Supreme[_ ]Fine[_ ]Plus(?:[);/ ]|$)'
12452      model: 'Supreme Fine Plus'
12453    - regex: 'Supreme_Fine(?:[);/ ]|$)'
12454      model: 'Supreme Fine'
12455    - regex: 'Supreme[_ ]Chief(?:[);/ ]|$)'
12456      model: 'Supreme Chief'
12457    - regex: 'Supreme[_ ]Pure[ _]Plus(?:[);/ ]|$)'
12458      model: 'Supreme Pure Plus'
12459    - regex: 'Supreme Pure(?:[);/ ]|$)'
12460      model: 'Supreme Pure'
12461    - regex: 'Supreme[_ ]Pro(?:[);/ ]|$)'
12462      model: 'Supreme Pro'
12463    - regex: 'Pure Micro(?:[);/ ]|$)'
12464      model: 'Pure Micro'
12465    - regex: 'Navon[_ ]Infinity(?:[);/ ]|$)'
12466      model: 'Infinity'
12467    - regex: 'Navon[_ ](D405)(?:[);/ ]|$)'
12468      model: '$1'
12469
12470    - regex: '(?:Navon[_ ])?Platinum[ _]10[ _]3G(_V2)?(?:[);/ ]|$)'
12471      device: 'tablet'
12472      model: 'Platinum 10.1" 3G$1'
12473    - regex: '(?:Navon[_ ])?Orpheus[ _]3G(?:[);/ ]|$)'
12474      device: 'tablet'
12475      model: 'Orpheus 3G'
12476    - regex: '(?:Navon_)?Predator[_ ](3G|10|7)(?:[);/ ]|$)'
12477      device: 'tablet'
12478      model: 'Predator $1'
12479    - regex: 'Raptor3G8GB(?:[);/ ]|$)'
12480      device: 'tablet'
12481      model: 'Raptor 3G 8GB'
12482
12483    - regex: 'Vision_Tab_(7|10)(?:[);/ ]|$)'
12484      device: 'tablet'
12485      model: 'Vision Tab $1'
12486
12487# NOA or NOA Mobile (noa-mobile.eu)
12488NOA:
12489  regex: '(?:NOA-)?NOA[ _]|Hummer(?:_2019_R|LE)|NextSE|Vivo 4G_r|SPRINT4G'
12490  device: 'smartphone'
12491  models:
12492    - regex: 'NOA[_ ]CORE[_ ]FORTE'
12493      model: 'Core Forte'
12494    - regex: 'HummerLE'
12495      model: 'Hummer LE'
12496    - regex: 'Hummer_2019_R'
12497      model: 'Hummer R (2019)'
12498    - regex: 'NOA[_ ]Hummer[_ ]Lite'
12499      model: 'Hummer Lite'
12500    - regex: 'NOA[_ ]MOVEse'
12501      model: 'Move SE'
12502    - regex: 'NextSE'
12503      model: 'Next SE'
12504    - regex: 'NOA[_ ]NEXT'
12505      model: 'Next'
12506    - regex: 'NOA[_ ]VISION[_ ]H3SE'
12507      model: 'Vision H3SE'
12508    - regex: 'NOA[_ ]VISION[_ ]H3'
12509      model: 'Vision H3'
12510    - regex: 'NOA[_ ]LOOP'
12511      model: 'Loop'
12512    - regex: '(?:NOA-)?NOA[_ ]H4se'
12513      model: 'H4SE'
12514    - regex: 'NOA[_ ]Mg12'
12515      model: 'MG12'
12516    - regex: 'NOA[_ ]H44SE'
12517      model: 'H44SE'
12518    - regex: 'NOA[_ ]H10LE'
12519      model: 'H10LE'
12520    - regex: 'SPRINT4G'
12521      model: 'Sprint 4G'
12522    - regex: '(?:NOA[_ ])?Vivo 4G_r'
12523      model: 'Vivo 4G'
12524    - regex: 'NOA[_ ]([^;)/ ]+)'
12525      model: '$1'
12526
12527# Nobby (nobby.ru)
12528Nobby:
12529  regex: 'Nobby[ ](S500|X800(?: Pro)?|S300(?: Pro)?)(?:[);/ ]|$)'
12530  device: 'smartphone'
12531  model: '$1'
12532
12533# nec or nec lavie (www.nec-lavie.jp)
12534NEC:
12535  regex: 'NEC[ _\-]|KGT/2\.0|PC-TE508(?:S1|[BH]AW)|PC-TE510(?:HAW|BAL|S1)|PC-TS708T1W|PC-TS507N1S|PC-TE507JAW|portalmmm/1\.0 (?:DB|N)|(?:portalmmm|o2imode)/2.0[ ,]N|(?:N-06C|N-02E|LAVIE Tab E (?:10|8)FHD1|7SD1)(?:[);/ ]|$)'
12536  device: 'smartphone'
12537  models:
12538    - regex: 'N-06C(?:[);/ ]|$)'
12539      model: 'Medias Amadana'
12540    - regex: 'N-02E(?:[);/ ]|$)'
12541      model: 'Medias U'
12542    - regex: '(?:NEC[ _\-]|KGT/2\.0 )([a-z0-9]+)'
12543      model: '$1'
12544    - regex: 'portalmmm/1\.0 ((?:DB|N)[a-z0-9]+)'
12545      model: '$1'
12546    - regex: '(?:portalmmm|o2imode)/2\.0[ ,](N[a-z0-9]+)'
12547      model: '$1'
12548    - regex: 'PC-TE508[BH]AW(?:[);/ ]|$)'
12549      device: 'tablet'
12550      model: 'LAVIE Tab E TE508'
12551    - regex: 'PC-TE510(?:BAL|HAW|S1)(?:[);/ ]|$)'
12552      device: 'tablet'
12553      model: 'LAVIE Tab E TE510'
12554    - regex: 'PC-TS507N1S(?:[);/ ]|$)'
12555      device: 'tablet'
12556      model: 'LAVIE Tab S TS507'
12557    - regex: 'PC-TS708T1W(?:[);/ ]|$)'
12558      device: 'tablet'
12559      model: 'LAVIE Tab S TS708'
12560    - regex: 'PC-TE507JAW(?:[);/ ]|$)'
12561      device: 'tablet'
12562      model: 'LAVIE Tab E TS507'
12563    - regex: 'PC-TE508S1(?:[);/ ]|$)'
12564      device: 'tablet'
12565      model: 'LAVIE Tab E TE508'
12566    - regex: 'LAVIE (Tab E (?:(?:10|8)FHD1|7SD1))(?:[);/ ]|$)'
12567      device: 'tablet'
12568      model: 'LAVIE $1'
12569
12570# Neffos (sub brand TP-Link) (neffos.com)
12571Neffos:
12572  regex: 'Neffos|(TP601A)(?:[);/ ]|$)'
12573  device: 'smartphone'
12574  models:
12575    - regex: 'TP601A(?:[);/ ]|$)'
12576      model: 'C5L'
12577    - regex: 'Neffos[_ ]Y50'
12578      model: 'Y50'
12579    - regex: 'Neffos X20 Pro'
12580      model: 'X20 Pro'
12581    - regex: 'Neffos[_ ]((?:[YNCXA])[0-9][A-Z]?(?: Max| Lite| Plus)?)'
12582      model: '$1'
12583
12584# Nextbit
12585Nextbit:
12586  regex: 'Nextbit|(?:Robin)(?: Build|\))'
12587  device: 'smartphone'
12588  models:
12589    - regex: '(Robin)(?:[);/ ]|$)'
12590      model: '$1'
12591
12592# newgen
12593Newgen:
12594  regex: 'NEWGEN\-([a-z0-9]+)'
12595  device: 'feature phone'
12596  model: '$1'
12597
12598# Netgear
12599Netgear:
12600  regex: 'GTV100'
12601  device: 'tv'
12602  models:
12603    - regex: 'GTV100'
12604      model: 'NeoTV Prime'
12605
12606# NeuImage
12607NeuImage:
12608  regex: 'NIM-'
12609  device: 'smartphone'
12610  models:
12611    - regex: 'NIM-(450D|550O|600Q)'
12612      model: '$1'
12613
12614# NextBook
12615NextBook:
12616  regex: 'Next[0-9]|NX(?:785QC8G|M900MC|008HD8G|010HI8G|M908HC|M726|16A8116K|A8QC116|16A10132S|16A11264)'
12617  device: 'tablet'
12618  models:
12619    - regex: 'NX008HD8G'
12620      model: 'Premium 8 HD'
12621    - regex: 'NXA8QC116'
12622      model: 'Ares 8'
12623    - regex: 'NX16A8116K'
12624      model: 'Ares A8'
12625    - regex: 'NX16A10132S'
12626      model: 'Ares A10'
12627    - regex: 'NX16A11264'
12628      model: 'Ares A11'
12629    - regex: 'NEXT1015BAP'
12630      model: 'Ares 10'
12631    - regex: 'NXM908HC'
12632      model: 'Premium 9'
12633    - regex: 'NX010HI8G'
12634      model: 'Premium 10 Hi'
12635    - regex: 'NX785QC8G'
12636      model: '8'
12637    - regex: 'NXM900MC'
12638      model: '8 HD'
12639    - regex: 'NXM726'
12640      model: 'Premium 7'
12641
12642    - regex: 'Next([0-9]+[^;/]+) Build'
12643      model: 'Next $1'
12644
12645# ngm (www.ngm.eu)
12646NGM:
12647  regex: 'NGM[_ ][a-z0-9]+|(Forward|Dynamic)[ _]?[^/;]+(?:Build|/)|Smart5Plus32GB'
12648  device: 'smartphone'
12649  models:
12650    - regex: 'Smart5Plus32GB'
12651      model: 'Smart 5 Plus'
12652    - regex: '(Forward|Dynamic)[ _]?([^/;]+) Build'
12653      model: '$1 $2'
12654    - regex: '(Forward|Dynamic)[ _]?([^/;]+)/'
12655      model: '$1 $2'
12656    - regex: 'NGM ([^;/]+) Build'
12657      model: '$1'
12658    - regex: 'NGM_([a-z0-9]+)'
12659      model: '$1'
12660
12661# nexian
12662Nexian:
12663  regex: 'S?Nexian'
12664  device: 'smartphone'
12665  models:
12666    - regex: 'S?Nexian[ ]?([a-z0-9\-]+)'
12667      model: '$1'
12668    - regex: 'S?Nexian-([a-z0-9]+)'
12669      model: '$1'
12670
12671# Noain
12672Noain:
12673  regex: 'NOAIN'
12674  device: 'smartphone'
12675  models:
12676    - regex: 'NOAIN[ _-]([^;/]+) Build'
12677      model: '$1'
12678    - regex: 'NOAIN[ _-]([^;/)]+)(?:[;/)]|$)'
12679      model: '$1'
12680
12681# Noblex
12682Noblex:
12683  regex: 'Noblex|NBX-'
12684  device: 'smartphone'
12685  models:
12686    - regex: '(?:Noblex|NBX)[ _-]([^;/]+) Build'
12687      model: '$1'
12688    - regex: '(?:Noblex|NBX)[ _-]([^;/)]+)(?:[;/)]|$)'
12689      model: '$1'
12690
12691# Nomu
12692Nomu:
12693  regex: '(?:Nomu[ _-](?:T18|S30mini|S10)|(?:V1600S|S10 PRO|S50_Pro))(?:[);/ ]|$)'
12694  device: 'smartphone'
12695  models:
12696    - regex: 'Nomu[ _-]T18(?:[);/ ]|$)'
12697      model: 'T18'
12698    - regex: 'Nomu[ _-]s10(?:[);/ ]|$)'
12699      model: 'S10'
12700    - regex: 'Nomu[ _-]S30mini(?:[);/ ]|$)'
12701      model: 'S30 Mini'
12702    - regex: 'S([15]0)[_ ]PRO(?:[);/ ]|$)'
12703      model: 'S$1 Pro'
12704    - regex: '(V1600S)(?:[);/ ]|$)'
12705      model: '$1'
12706
12707# Opsson
12708Opsson:
12709  regex: 'Opsson|IUSAI'
12710  device: 'smartphone'
12711  models:
12712    - regex: 'IUSAI[ _]([^/;]+) Build'
12713      model: 'Iusai $1'
12714    - regex: 'IUSAI[ _]([^/;\)]+)[/;\)]'
12715      model: 'Iusai $1'
12716    - regex: 'Opsson[ _]([^/;]+) Build'
12717      model: '$1'
12718    - regex: '(?:Opsson-)?Opsson[ -_]([^/;]+)/'
12719      model: '$1'
12720
12721# Nomi (nomi-electronics.com)
12722Nomi:
12723  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]))(?:[);/ ]|$)'
12724  device: 'smartphone'
12725  models:
12726    - regex: 'i501[23](?:[);/ ]|$)'
12727      model: 'Evo M2'
12728    - regex: 'Nomi[ _]i5010(?:[);/ ]|$)'
12729      model: 'Evo M'
12730    - regex: 'Nomi[ _]i5001(?:[);/ ]|$)'
12731      model: 'Evo M3'
12732    - regex: 'Nomi[ _]i5011(?:[);/ ]|$)'
12733      model: 'Evo M1'
12734    - regex: 'Nomi[ _]i506(?:[);/ ]|$)'
12735      model: 'i506 Shine'
12736    - regex: 'Nomi[ _]i5730(?:[);/ ]|$)'
12737      model: 'i5730 Infinity'
12738    - regex: 'Nomi[ _]i6030(?:[);/ ]|$)'
12739      model: 'Note-X'
12740    - regex: 'I5070(?:[);/ ]|$)'
12741      model: 'Iron-X'
12742    - regex: 'i5071(?:[);/ ]|$)'
12743      model: 'Iron-X1'
12744    - regex: 'Nomi[_ ]I4070(?:[);/ ]|$)'
12745      model: 'Iron-M'
12746    - regex: 'i5014(?:[);/ ]|$)'
12747      model: 'Evo M4'
12748    - regex: 'i5032(?:[);/ ]|$)'
12749      model: 'Evo X2'
12750    - regex: 'i5050(?:[);/ ]|$)'
12751      model: 'Evo Z'
12752    - regex: '(?:Nomi_)?i4510(?:[);/ ]|$)'
12753      model: 'Beat M'
12754    - regex: '(?:Nomi_)?i4500(?:[);/ ]|$)'
12755      model: 'Beat M1'
12756    - regex: 'i5532(?:[);/ ]|$)'
12757      model: 'Space X2'
12758    - regex: 'i5510(?:[);/ ]|$)'
12759      model: 'Space M'
12760    - regex: 'Nomi[_ ]i5511(?:[);/ ]|$)'
12761      model: 'Space M1'
12762    - regex: '(?:Nomi_)?i5710(?:[);/ ]|$)'
12763      model: 'Infinity X1'
12764    - regex: '(?:Nomi[ _])?i(50[015]|450|40[01]|55[02])(?:[);/ ]|$)'
12765      model: 'i$1'
12766    - regex: 'C101010 Ultra2'
12767      model: 'Ultra 2'
12768      device: 'tablet'
12769    - regex: '(?:Nomi_)?C101040'
12770      model: 'Ultra 3 Pro'
12771      device: 'tablet'
12772    - regex: '(?:Nomi_)?C101030'
12773      model: 'Ultra 3 LTE'
12774      device: 'tablet'
12775    - regex: '(?:Nomi_)?C101012'
12776      model: 'Ultra 3 3G'
12777      device: 'tablet'
12778    - regex: '(?:Nomi_)?C101014'
12779      model: 'Ultra 4 3G'
12780      device: 'tablet'
12781    - regex: '(?:Nomi_)?C101034'
12782      model: 'Ultra 4 LTE'
12783      device: 'tablet'
12784    - regex: '(?:Nomi_)?C101044'
12785      model: 'Ultra 4 Pro LTE'
12786      device: 'tablet'
12787    - regex: '(?:Nomi_)?C070010'
12788      device: 'tablet'
12789      model: 'Corsa'
12790    - regex: '(?:Nomi_)?C070020'
12791      model: 'Corsa Pro'
12792      device: 'tablet'
12793    - regex: '(?:Nomi_)?C070011'
12794      model: 'Corsa 2'
12795      device: 'tablet'
12796    - regex: '(?:Nomi_)?C070030'
12797      model: 'Corsa 3 LTE'
12798      device: 'tablet'
12799    - regex: '(?:Nomi_)?C070012'
12800      model: 'Corsa 3 3G'
12801      device: 'tablet'
12802    - regex: '(?:Nomi_)?C070014L'
12803      model: 'Corsa 4 Light 3G'
12804      device: 'tablet'
12805    - regex: '(?:Nomi_)?C0700[13]4'
12806      model: 'Corsa 4 LTE'
12807      device: 'tablet'
12808    - regex: '(?:Nomi_)?C070044'
12809      model: 'Corsa 4 Pro LTE'
12810      device: 'tablet'
12811    - regex: '(?:Nomi_)?C080012'
12812      model: 'Libra 3 3G'
12813      device: 'tablet'
12814    - regex: '(?:Nomi_)?C080034'
12815      model: 'Libra 4 LTE'
12816      device: 'tablet'
12817    - regex: '(?:Nomi_)?C080014'
12818      model: 'Libra 4 3G'
12819      device: 'tablet'
12820    - regex: '(?:Nomi_)?C07008'
12821      model: 'Sigma'
12822      device: 'tablet'
12823    - regex: '(?:Nomi[ _])?(C0(?:700(?:[0235]|2HD)|7850|9600)|C1010[0-3])(?:[);/ ]|$)'
12824      model: '$1'
12825      device: 'tablet'
12826    - regex: 'Nomi[ _-]([^;/]+) Build'
12827      model: '$1'
12828    - regex: 'Nomi[ _-]([^;/)]+)(?:[;/)]|$)'
12829      model: '$1'
12830
12831# NUU Mobile
12832NUU Mobile:
12833  regex: 'NUU_|(?:(?:N(5702|500[12])L|S6001L|[SN]5501L)|A6L-[CG])(?:[);/ ]|$)'
12834  device: 'smartphone'
12835  models:
12836    - regex: 'NUU_A([13])'
12837      model: 'A$1'
12838    - regex: 'NUU_M([32])(?:[);/ ]|$)'
12839      model: 'M$1'
12840    - regex: 'NUU_X5(?:[);/ ]|$)'
12841      model: 'X5'
12842    - regex: 'S6001L'
12843      model: 'G2'
12844    - regex: 'S5501L'
12845      model: 'M19'
12846    - regex: 'N5702L'
12847      model: 'G3'
12848    - regex: 'N5501L'
12849      model: 'A5L'
12850    - regex: 'N5002L'
12851      model: 'A7L'
12852    - regex: '(N5001L|A6L-[CG])(?:[);/ ]|$)'
12853      model: '$1'
12854
12855# NYX Mobile
12856NYX Mobile:
12857  regex: 'NYX[ _]|(?:GLAM)(?:[);/ ]|$)'
12858  device: 'smartphone'
12859  models:
12860    - regex: 'NYX_A1'
12861      model: 'A1'
12862    - regex: 'NYX_Blink'
12863      model: 'Blink'
12864    - regex: 'NYX_EGO'
12865      model: 'Ego'
12866    - regex: 'NYX_FENIX'
12867      model: 'Fenix'
12868    - regex: 'NYX_FLY_II'
12869      model: 'Fly II'
12870    - regex: 'NYX_FLY_MINI'
12871      model: 'Fly Mini'
12872    - regex: 'NYX_FLY'
12873      model: 'Fly'
12874    - regex: 'NYX_HIT'
12875      model: 'Hit'
12876    - regex: 'NYX_JAK'
12877      model: 'Jak'
12878    - regex: 'NYX_JOIN'
12879      model: 'Join'
12880    - regex: 'NYX_NOBA_II'
12881      model: 'Noba II'
12882    - regex: 'NYX_NOBA'
12883      model: 'Noba'
12884    - regex: 'NYX_ORBIS'
12885      model: 'Orbis'
12886    - regex: 'NYX[ _]REX'
12887      model: 'Rex'
12888    - regex: 'NYX_SHADE'
12889      model: 'Shade'
12890    - regex: 'NYX_SKY'
12891      model: 'Sky'
12892    - regex: 'NYX_SPARK'
12893      model: 'Spark'
12894    - regex: 'NYX_VOX'
12895      model: 'Vox'
12896    - regex: 'NYX_ZEUZ_HD'
12897      model: 'Zeus HD'
12898    - regex: 'GLAM'
12899      model: 'Glam'
12900
12901# Nous
12902Nous:
12903  regex: '(?:NS(?:[356]|500[2-68]|5511|5502)|NS 5511)(?:[);/ ]|$)'
12904  device: 'smartphone'
12905  models:
12906    - regex: 'NS 5511(?:[);/ ]|$)'
12907      model: 'NS5511'
12908    - regex: '(NS[0-9]{1,4})(?:[);/ ]|$)'
12909      model: '$1'
12910
12911# Nvidia
12912Nvidia:
12913  regex: 'NVIDIA|SHIELD Tablet(?: K1)?|SHIELD Android TV|Tegra(Note-P1640| Note 7)'
12914  device: 'tablet'
12915  models:
12916    - regex: 'TegraNote-P1640'
12917      model: 'Tegra Note P1640'
12918    - regex: '(SHIELD Tablet(?: K1)?|Tegra Note 7)(?: Build|[;)])'
12919      model: '$1'
12920    - regex: 'SHIELD Android TV'
12921      model: 'SHIELD Android TV'
12922      device: 'tv'
12923    - regex: 'NVIDIA_SHIELD_PRO_2019'
12924      model: 'SHIELD TV Pro'
12925      device: 'tv'
12926    - regex: 'NVIDIA Shield'
12927      model: 'SHIELD TV'
12928      device: 'tv'
12929
12930# O+ (OPlus)
12931O+:
12932  regex: 'O\+[ _](Air|Crunch|Ultra|Upsized|Venti|360 ALPHA PLUS 2.0)'
12933  device: 'smartphone'
12934  models:
12935    - regex: 'O\+[ _](Crunch|Ultra 2.0|Ultra|Upsized|Venti 4G)'
12936      model: '$1'
12937    - regex: 'O\+_AIR'
12938      model: 'Air'
12939    - regex: 'O\+ 360 ALPHA PLUS 2.0'
12940      model: '360 Alpha Plus 2.0'
12941
12942# o2
12943O2:
12944  regex: 'Xda|(?<!FBCR/)O2[ \-]|COCOON'
12945  device: 'smartphone'
12946  models:
12947    - regex: '(Xda[ _][a-z0-9_]+)'
12948      model: '$1'
12949    - regex: '(COCOON)'
12950      model: '$1'
12951    - regex: 'O2 ([a-z0-9 ]+)'
12952      model: '$1'
12953    - regex: 'O2-([a-z0-9]+)'
12954      model: '$1'
12955
12956# Odys (odys.de)
12957Odys:
12958  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'
12959  device: 'tablet'
12960  models:
12961    - regex: 'XELIO[_ ]A10'
12962      model: 'Xelio A10'
12963    - regex: 'XELIOPHONETAB3'
12964      model: 'Xelio Phonetab 3'
12965    - regex: 'THANOS_10'
12966      model: 'Thanos 10'
12967    - regex: 'XELIO_NEXT_10_PLUS_3G'
12968      model: 'Xelio Next 10 Plus 3G'
12969    - regex: 'XELIO_PHONE_TAB7_3G'
12970      model: 'Xelio Phonetab 7 3G'
12971    - regex: 'XELIO10EXTREME'
12972      model: 'Xelio 10 Xtreme'
12973    - regex: 'XELIO10_PLUS_3G'
12974      model: 'Xelio 10 Plus 3G'
12975    - regex: 'XELIO10_HD_PLUS_3G'
12976      model: 'Xelio 10 HD Plus 3G'
12977    - regex: 'XELIO_10_HD'
12978      model: 'Xelio 10 HD'
12979    - regex: 'XELIO_PRO_10_LTE'
12980      model: 'Xelio Pro 10 LTE'
12981    - regex: 'ELEMENT10_PLUS_3G'
12982      model: 'Element 10 Plus 3G'
12983    - regex: 'CONNECT8PLUS'
12984      model: 'Connect 8 Plus'
12985    - regex: 'CONNECT7PRO'
12986      model: 'Connect 7 Pro'
12987    - regex: 'MAVEN_X10_HD_LTE'
12988      model: 'Maven X10 HD LTE'
12989    - regex: 'MAVEN_X10_HD'
12990      model: 'Maven X10 HD'
12991    - regex: 'MAVEN_?10_PRO_PLUS_3G'
12992      model: 'Maven 10 Pro Plus 3G'
12993    - regex: 'MAVEN_?10_?PLUS'
12994      model: 'Maven 10 Plus'
12995    - regex: 'MAVEN_?10_?PRO'
12996      model: 'Maven 10 Pro'
12997    - regex: 'MAVEN_?10_?HD'
12998      model: 'Maven 10 HD'
12999    - regex: 'RAPID_?7_?LTE'
13000      model: 'Rapid 7 LTE'
13001    - regex: 'RAPID_?10_?LTE'
13002      model: 'Rapid 10 LTE'
13003    - regex: 'TAO_X10'
13004      model: 'Tao X10'
13005    - regex: 'SPACE10_PLUS_3G'
13006      model: 'Space 10 Plus 3G'
13007    - regex: 'SPACE10_PRO_3G'
13008      model: 'Space 10 Pro 3G'
13009    - regex: 'THOR_?10 Build'
13010      model: 'Thor 10'
13011    - regex: 'JuniorT8Pro'
13012      model: 'Junior T8 Pro'
13013    - regex: 'JUNIOR_8_PRO'
13014      model: 'Junior 8 Pro'
13015    - regex: 'ADM816HC'
13016      model: 'Neo X'
13017    - regex: 'EOS10'
13018      model: 'EOS 10'
13019    - regex: 'PACE_10_LTE_V2'
13020      model: 'Pace 10 LTE V2'
13021    - regex: 'PACE ?10'
13022      model: 'Pace 10'
13023    - regex: 'AEON'
13024      model: 'Aeon'
13025    - regex: 'FALCON_10_PLUS_3G'
13026      model: 'Falcon 10 Plus 3G'
13027    - regex: 'FUSION'
13028      model: 'Fusion 7'
13029    - regex: 'UNO_X8'
13030      model: 'Uno X8'
13031    - regex: 'ADM8000KP'
13032      model: 'Titan'
13033    - regex: 'PYRO_7_PLUS_3G'
13034      model: 'Pyro 7 Plus 3G'
13035    - regex: 'NOVA_X7_PLUS_3G'
13036      model: 'Nova X7 Plus 3G'
13037    - regex: 'ODYS_NOVA_X7'
13038      model: 'Nova X7'
13039    - regex: 'THOR_?10_PLUS_3G'
13040      model: 'Thor 10 Plus 3G'
13041    - regex: 'NOTOSplus3G'
13042      model: 'Notos Plus 3G'
13043    - regex: 'MAVEN_G10'
13044      model: 'Maven G10'
13045
13046    # explicit smartphones models
13047    - regex: 'NEO6[_ ]LTE'
13048      model: 'Neo 6 LTE'
13049      device: 'smartphone'
13050    - regex: 'SLADE_X55'
13051      model: 'Slade X55'
13052      device: 'smartphone'
13053
13054    # general detections
13055    - regex: 'IEOS[ _]([^/;]+) Build'
13056      model: 'Ieos $1'
13057    - regex: '(?:ODYS[ _-])?NOON Build'
13058      model: 'Noon'
13059    - regex: '(?:ODYS[ _-])?NOON_PRO Build'
13060      model: 'Noon Pro'
13061    - regex: 'Odys[ _-]([^/;]+) Build'
13062      model: '$1'
13063
13064# Obi
13065Obi:
13066  regex: 'Obi[ _-]|(SJ1\.5|SJ2\.6|(?<!verykool )S(400|452\+|45[13]|50[127]|503\+?|520|55[01])|falcon)[ _]'
13067  device: 'smartphone'
13068  models:
13069    - regex: 'SJ2\.6'
13070      model: 'SJ2.6'
13071    - regex: 'SJ1\.5'
13072      model: 'SJ1.5'
13073    - regex: '(?:Obi_)?S400'
13074      model: 'Skipper'
13075    - regex: '(?:Obi_)?S451|falcon'
13076      model: 'Flacon'
13077    - regex: '(?:Obi_)?S452\+'
13078      model: 'Python'
13079    - regex: '(?:Obi_)?S453'
13080      model: 'Fox'
13081    - regex: '(?:Obi_)?S501'
13082      model: 'Wolverine'
13083    - regex: '(?:Obi_)?S502'
13084      model: 'Leopard'
13085    - regex: '(?:Obi_)?S503\+'
13086      model: 'Boa Plus'
13087    - regex: '(?:Obi_)?S503'
13088      model: 'Boa'
13089    - regex: '(?:Obi_)?S507'
13090      model: 'Pelican'
13091    - regex: '(?:Obi_)?S520'
13092      model: 'Octopus'
13093    - regex: '(?:Obi_)?S550'
13094      model: 'Crane'
13095    - regex: '(?:Obi_)?S551'
13096      model: 'Hornbill'
13097    - regex: '(?:Obi_)?S454'
13098      model: 'Alligator'
13099    - regex: 'Obi[ _-]([^;/]+) Build'
13100      model: '$1'
13101    - regex: 'Obi[ _-]([^;/)]+)(?:[;/)]|$)'
13102      model: '$1'
13103
13104# Okapia
13105Okapia:
13106  regex: 'Signature (?:L|Pro|Touch)'
13107  device: 'smartphone'
13108  models:
13109    - regex: 'Signature (L|Pro|Touch)'
13110      model: 'Signature $1'
13111
13112# onda
13113Onda:
13114  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)(?:[);/ ]|$)'
13115  device: 'smartphone'
13116  models:
13117    # explicit tablet models
13118    - regex: 'ONDA[ _]MID'
13119      model: 'MID'
13120      device: 'tablet'
13121    - regex: 'V820w[ _-]DualOS'
13122      model: 'V820W Dual OS'
13123      device: 'tablet'
13124    - regex: 'V891W[ _-]DualOS'
13125      model: 'V891W Dual OS'
13126      device: 'tablet'
13127    - regex: 'V891[ _-]DualOS'
13128      model: 'V891 Dual OS'
13129      device: 'tablet'
13130    - regex: 'V919 3G Air[ _-]DualOS'
13131      model: 'V919 3G Air Dual OS'
13132      device: 'tablet'
13133    - regex: 'V919 Air[ _-]DualOS'
13134      model: 'V919 Air Dual OS'
13135      device: 'tablet'
13136    - regex: 'V919 Air CH DualOS'
13137      model: 'V919 Air CH Dual OS'
13138      device: 'tablet'
13139    - regex: 'V919 4G Air Core8'
13140      model: 'V919 4G Air Core 8'
13141      device: 'tablet'
13142    - regex: 'V972 Core4'
13143      model: 'V919 Core 4'
13144      device: 'tablet'
13145    - regex: 'V989 Air Core8'
13146      model: 'V989 Air Core 8'
13147      device: 'tablet'
13148    - regex: 'ONDA V989'
13149      model: 'V989 Core 8'
13150      device: 'tablet'
13151    - regex: 'T2101L2B1C|OBOOK 20 PLUS DUALOS'
13152      model: 'oBook 20 Plus Dual OS'
13153      device: 'tablet'
13154    - regex: ' V10 4G(?:[);/ ]|$)'
13155      model: 'V10 10.1" 4G'
13156      device: 'tablet'
13157    - regex: 'OBOOK 20 SE(?:[);/ ]|$)'
13158      model: 'oBook 20 SE'
13159      device: 'tablet'
13160    - regex: 'OBOOK10 SE(?:[);/ ]|$)'
13161      model: 'oBook 10 SE'
13162      device: 'tablet'
13163
13164    - regex: '([a-z0-9]+)[ _]Onda'
13165      model: '$1'
13166    - regex: 'Onda ([a-z0-9]+)'
13167      model: '$1'
13168
13169# OnePlus (www.oneplus.com or oneplus.com.ru)
13170OnePlus:
13171  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[0137]|LE212[035]|Nord N10 5G|LE210[01]|LE212[17]|DE211[78]|DN210[13]|EB210[13])(?: Build|\))'
13172  device: 'smartphone'
13173  models:
13174    - regex: 'AC200[13](?:[);/ ]|$)'
13175      model: 'Nord 5G'
13176    - regex: 'EB210[13](?:[);/ ]|$)'
13177      model: 'Nord CE 5G'
13178    - regex: 'BE2012(?:[);/ ]|$)'
13179      model: 'Clover'
13180    - regex: 'BE201[135](?:[);/ ]|$)'
13181      model: 'Nord N100'
13182    - regex: 'DE211[78](?:[);/ ]|$)'
13183      model: 'Nord N200 5G'
13184    - regex: 'BE2025(?:[);/ ]|$)'
13185      model: 'Nord N10'
13186    - regex: '(BE202[69]|Nord N10 5G)(?:[);/ ]|$)'
13187      model: 'Nord N10 5G'
13188    - regex: 'BE2028(?:[);/ ]|$)'
13189      model: 'Nord N10 Lite'
13190    - regex: 'DN210[13](?:[);/ ]|$)'
13191      model: 'Nord 2 5G'
13192    - regex: 'IN202[0135](?:[);/ ]|$)'
13193      model: '8 Pro'
13194    - regex: 'KB2000(?:[);/ ]|$)'
13195      model: '8T'
13196    - regex: '(?:IN201[01357]|OnePlus 8)(?:[);/ ]|$)'
13197      model: '8'
13198    - regex: 'IN2019(?:[);/ ]|$)'
13199      model: '8 5G UW'
13200    - regex: 'LE211[0137](?:[);/ ]|$)'
13201      model: '9'
13202    - regex: 'LE210[01](?:[);/ ]|$)'
13203      model: '9R'
13204    - regex: 'LE212[01357](?:[);/ ]|$)'
13205      model: '9 Pro'
13206    - regex: '(?:GM191[01357]|OnePlus 7 Pro)(?:[);/ ]|$)'
13207      model: '7 Pro'
13208    - regex: 'GM190[0135](?:[);/ ]|$)'
13209      model: '7'
13210    - regex: 'HD190[01357](?:[);/ ]|$)'
13211      model: '7T'
13212    - regex: '(?:HD191[013]|OnePlus 7T Pro)(?:[);/ ]|$)'
13213      model: '7T Pro'
13214    - regex: '(?:HD1925|GM192[05])(?:[);/ ]|$)'
13215      model: '7T Pro 5G'
13216    - regex: 'KB200[1357](?:[);/ ]|$)'
13217      model: '8T'
13218    - regex: 'A0001(?:[);/ ]|$)'
13219      model: 'One'
13220    - regex: 'A200[135]|OnePlus2'
13221      model: '2'
13222    - regex: 'E100[135](?:[);/ ]|$)'
13223      model: 'X'
13224    - regex: 'A3010|OnePlus3T'
13225      model: '3T'
13226    - regex: 'A300[03]|OnePlus3'
13227      model: '3'
13228    - regex: 'A5010|OnePlus[ ]?5T'
13229      model: '5T'
13230    - regex: 'A5000|OnePlus5'
13231      model: '5'
13232    - regex: 'A600[03]|OnePlus6'
13233      model: '6'
13234    - regex: 'A601[03](?:[);/ ]|$)'
13235      model: '6T'
13236    - regex: '(?:du_)?ONEPLUS ?([^;/]+) Build'
13237      model: '$1'
13238
13239# Realme (sub brand Oppo)
13240Realme:
13241  regex: 'Realme[ _]|(?:RMX(?:19(03|4[1235]|19|9[23]|2[157]|[01379]1|73)|20(?:[025-7]1|42|[0357]2|2[57]|63|7[56]|8[156]|[2-5]0)|21(?:0[13]|17|[12]1|4[24]|5[156]|6[13]|7[036]|8[059]|9[345])|220[0125]|18(0[13579]|11|3[13]|2[157]|[45]1|53|45)|32(?:0[13]|42|[346]1)|30(?:[348]1|9[23]|63|85)|31(?:2[12]|15|9[15]|51|6[16]|71)|3350|336[36]|3263)|(?:OPPO[ _]?)?CPH1861)(?:[);/ ]|$)'
13242  device: 'smartphone'
13243  models:
13244    - regex: '(?:OPPO[ _]?)?CPH1861(?:[);/ ]|$)'
13245      model: '1'
13246    - regex: 'RMX180[59]'
13247      model: '2'
13248    - regex: 'RMX180[137]'
13249      model: '2 Pro'
13250    - regex: 'RMX(1833|182[15])'
13251      model: '3'
13252    - regex: 'RMX1827'
13253      model: '3i'
13254    - regex: 'RMX185[13]'
13255      model: '3 Pro'
13256    - regex: 'RMX190[13]|Realme X(?:[);/ ]|$)'
13257      model: 'X'
13258    - regex: 'RMX199[12]'
13259      model: 'X2'
13260    - regex: 'RMX1993'
13261      model: 'X2 Dual'
13262    - regex: 'RMX1931|Realme X2 Pro(?:[);/ ]|$)'
13263      model: 'X2 Pro'
13264    - regex: 'RMX2117'
13265      model: 'Q2 5G'
13266    - regex: 'RMX2173'
13267      model: 'Q2 Pro'
13268    - regex: 'RMX2205'
13269      model: 'Q3 Pro 5G'
13270    - regex: 'RMX3161'
13271      model: 'Q3 5G'
13272    - regex: 'RMX2176(?:[);/ ]|$)'
13273      model: 'X7 5G'
13274    - regex: 'RMX2121(?:[);/ ]|$)'
13275      model: 'X7 Pro 5G'
13276    - regex: 'RMX1921|Realme XT(?:[);/ ]|$)'
13277      model: 'XT'
13278    - regex: 'RMX19(1[19]|27)'
13279      model: '5'
13280    - regex: 'RMX197[13]'
13281      model: '5 Pro'
13282    - regex: 'RMX203[02]'
13283      model: '5i'
13284    - regex: 'RMX2001'
13285      model: '6'
13286    - regex: 'RMX204[02]'
13287      model: '6i'
13288    - regex: 'RMX2002'
13289      model: '6S'
13290    - regex: 'RMX206[13](?:[);/ ]|$)'
13291      model: '6 Pro'
13292    - regex: 'RMX215[15]'
13293      model: '7'
13294    - regex: 'RMX2103'
13295      model: '7I'
13296    - regex: 'RMX2170'
13297      model: '7 Pro'
13298    - regex: 'RMX3115'
13299      model: 'X7 Pro Extreme Edition'
13300    - regex: 'RMX3081'
13301      model: '8 Pro'
13302    - regex: 'RMX3085'
13303      model: '8'
13304    - regex: 'RMX3151'
13305      model: '8i'
13306    - regex: 'RMX3241'
13307      model: '8 5G'
13308    - regex: 'RMX1925(?:[);/ ]|$)'
13309      model: '5S'
13310    - regex: 'RMX1811(?:[);/ ]|$)'
13311      model: 'C1'
13312    - regex: 'RMX194[1235](?:[);/ ]|$)'
13313      model: 'C2'
13314    - regex: 'RMX202[107](?:[);/ ]|$)'
13315      model: 'C3'
13316    - regex: 'RMX2185(?:[);/ ]|$)'
13317      model: 'C11'
13318    - regex: 'RMX2189(?:[);/ ]|$)'
13319      model: 'C12'
13320    - regex: 'RMX2180(?:[);/ ]|$)'
13321      model: 'C15'
13322    - regex: 'RMX219[45](?:[);/ ]|$)'
13323      model: 'C15 Qualcomm Edition'
13324    - regex: 'RMX2101(?:[);/ ]|$)'
13325      model: 'C17'
13326    - regex: 'RMX3063(?:[);/ ]|$)'
13327      model: 'C20'
13328    - regex: 'RMX320[13]'
13329      model: 'C21'
13330    - regex: 'RMX326[13]'
13331      model: 'C21Y'
13332    - regex: 'RMX3191'
13333      model: 'C25'
13334    - regex: 'RMX3195'
13335      model: 'C25s'
13336    - regex: 'RMX3231'
13337      model: 'C11 (2021)'
13338    - regex: 'RMX3031(?:[);/ ]|$)'
13339      model: 'GT Neo'
13340    - regex: 'RMX336[36](?:[);/ ]|$)'
13341      model: 'GT Master Edition'
13342    - regex: 'RMX3350(?:[);/ ]|$)'
13343      model: 'GT Neo Flash'
13344    - regex: 'RMX216[13](?:[);/ ]|$)'
13345      model: 'Narzo 20 Pro'
13346    - regex: 'RMX2193(?:[);/ ]|$)'
13347      model: 'Narzo 20'
13348    - regex: 'RMX2050(?:[);/ ]|$)'
13349      model: 'Narzo 20A'
13350    - regex: 'RMX3171(?:[);/ ]|$)'
13351      model: 'Narzo 30A'
13352    - regex: 'RMX2156(?:[);/ ]|$)'
13353      model: 'Narzo 30'
13354    - regex: 'RMX3242'
13355      model: 'Narzo 30 5G'
13356    - regex: 'RMX1831(?:[);/ ]|$)'
13357      model: 'U1'
13358    - regex: 'RMX(?:20(?:51|[2]5)|2144)(?:[);/ ]|$)'
13359      model: 'X50 5G'
13360    - regex: 'RMX2052(?:[);/ ]|$)'
13361      model: 'X50t 5G'
13362    - regex: 'RMX2071(?:[);/ ]|$)'
13363      model: 'X50 Pro'
13364    - regex: 'RMX207[56](?:[);/ ]|$)'
13365      model: 'X50 Pro 5G'
13366    - regex: 'RMX2072(?:[);/ ]|$)'
13367      model: 'X50 Pro Player'
13368    - regex: 'RMX(2142|2081)(?:[);/ ]|$)'
13369      model: 'X3'
13370    - regex: 'RMX208[56](?:[);/ ]|$)'
13371      model: 'X3 Super Zoom'
13372    - regex: 'RMX2173(?:[);/ ]|$)'
13373      model: 'Q2 Pro'
13374    - regex: 'RMX2111'
13375      model: 'V5 5G'
13376    - regex: 'RMX220[01]'
13377      model: 'V3 5G'
13378    - regex: 'RMX312[12]'
13379      model: 'V11 5G'
13380    - regex: 'RMX3041'
13381      model: 'V13 5G'
13382    - regex: 'RMX309[23]'
13383      model: 'V15 5G'
13384    - regex: 'RMX2202'
13385      model: 'GT 5G'
13386    - regex: 'Realme[ _]([1-9])[ _]Pro(?:[);/ ]|$)'
13387      model: '$1 Pro'
13388
13389
13390# Oppo (oppo.com)
13391OPPO:
13392  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|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(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)|PEG[MT]10|PEM[MT][02]0|PDET10|PDS[TM]00|PEC[MT]30|OPG03|PE[QYPEXN]M00)(?:[);/ ]|$)'
13393  device: 'smartphone'
13394  models:
13395    - regex: 'PCHM10(?:[);/ ]|$)'
13396      model: 'A11'
13397    - regex: '(?:CPH2083|CPH2077)(?:[);/ ]|$)'
13398      model: 'A12'
13399    - regex: '(?:CPH2179)(?:[);/ ]|$)'
13400      model: 'A15s'
13401    - regex: '(?:CPH2271)(?:[);/ ]|$)'
13402      model: 'A16s'
13403    - regex: '(?:CPH2185)(?:[);/ ]|$)'
13404      model: 'A15'
13405    - regex: 'PCHM00(?:[);/ ]|$)'
13406      model: 'A11x'
13407    - regex: 'CPH1923(?:[);/ ]|$)'
13408      model: 'A1k'
13409    - regex: 'CPH1925(?:[);/ ]|$)'
13410      model: 'A1s'
13411    - regex: 'CPH2269(?:[);/ ]|$)'
13412      model: 'A16'
13413    - regex: '(?:OPPO[ _]?)?(CPH1837|PAD[TM]00)(?:[);/ ]|$)'
13414      model: 'A3'
13415    - regex: '(?:OPPO[ _]?)?A37f(w)(?:[);/ ]|$)'
13416      model: 'A37f$1'
13417    - regex: 'A37f(?:[);/ ]|$)'
13418      model: 'A37f'
13419    - regex: '(?:OPPO[ _]?)?CPH1605(?:[);/ ]|$)'
13420      model: 'A39'
13421    - regex: 'CPH20(?:81|73|31|15)(?:[);/ ]|$)'
13422      model: 'A31'
13423    - regex: '(?:OPPO[ _]?)?(?:CPH18(?:0[35]|53)|PBBM30)(?:[);/ ]|$)'
13424      model: 'A3s'
13425    - regex: '(?:OPPO[ _]?)?(?:CPH1809|PBA[TM]00|PBBT30)(?:[);/ ]|$)'
13426      model: 'A5'
13427    - regex: 'CPH19(?:3[13]|43)(?:[);/ ]|$)'
13428      model: 'A5 (2020)'
13429    - regex: 'PEC[MT]30(?:[);/ ]|$)'
13430      model: 'A53 5G'
13431    - regex: 'PDVM00(?:[);/ ]|$)'
13432      model: 'A32'
13433    - regex: 'PEFM00(?:[);/ ]|$)'
13434      model: 'A35'
13435    - regex: '(?:PDAM10|CPH2069|CPH2061)(?:[);/ ]|$)'
13436      model: 'A52'
13437    - regex: 'CPH2127(?:[);/ ]|$)'
13438      model: 'A53'
13439    - regex: 'CPH2135(?:[);/ ]|$)'
13440      model: 'A53s'
13441    - regex: '(?:CPH2195|OPG02|CPH2303)(?:[);/ ]|$)'
13442      model: 'A54 5G'
13443    - regex: 'CPH2239(?:[);/ ]|$)'
13444      model: 'A54'
13445    - regex: 'PEM[MT][02]0(?:[);/ ]|$)'
13446      model: 'A55 5G'
13447    - regex: '(?:OPPO[ _]?)?CPH170[15](?:[);/ ]|$)'
13448      model: 'A57'
13449    - regex: 'CPH19(?:09|1[02])(?:[);/ ]|$)'
13450      model: 'A5S'
13451    - regex: '(?:OPPO[ _]?)?(?:CPH190[15]|PBF[TM]00)(?:[);/ ]|$)'
13452      model: 'A7'
13453    - regex: '(?:OPPO[ _]?)?(CPH1801|CPH1717)(?:[);/ ]|$)'
13454      model: 'A71'
13455    - regex: '(?:OPPO[ _]?)?(?:PDY[TM]20|CPH2067)(?:[);/ ]|$)'
13456      model: 'A72'
13457    - regex: 'CPH(?:2161|2099)(?:[);/ ]|$)'
13458      model: 'A73 5G'
13459    - regex: 'CPH2219(?:[);/ ]|$)'
13460      model: 'A74'
13461    - regex: '(?:OPPO[ _]?)?(?:PDY[TM]10)(?:[);/ ]|$)'
13462      model: 'A72n 5G'
13463    - regex: '(?:OPPO[ _]?)?CPH1715(?:[);/ ]|$)'
13464      model: 'A77'
13465    - regex: '(?:OPPO[ _]?)?A79kt'
13466      model: 'A79'
13467    - regex: 'PCD[TM]00(?:[);/ ]|$)'
13468      model: 'A7n'
13469    - regex: '(PBBT00|PBBM00)(?:[);/ ]|$)'
13470      model: 'A7x'
13471    - regex: '(?:OPPO[ _]?)?(?:PDBM00)(?:[);/ ]|$)'
13472      model: 'A8'
13473    - regex: '(?:OPPO[ _]?)?CPH1729(?:[);/ ]|$)'
13474      model: 'A83'
13475    - regex: '(?:OPPO[ _]?)?CPH1827(?:[);/ ]|$)'
13476      model: 'A83 (2018)'
13477    - regex: 'PCA[TM]10(?:[);/ ]|$)'
13478      model: 'A9'
13479    - regex: '(CPH1937|CPH1941|PCHM30)(?:[);/ ]|$)'
13480      model: 'A9 (2020)'
13481    - regex: '(?:OPPO[ _]?)?CPH1938(?:[);/ ]|$)'
13482      model: 'A9 (EN)'
13483    - regex: '(?:PCPM00|CPH20[02]1)(?:[);/ ]|$)'
13484      model: 'A91'
13485    - regex: 'CPH2059(?:[);/ ]|$)'
13486      model: 'A92'
13487    - regex: 'PDKT00(?:[);/ ]|$)'
13488      model: 'A92s'
13489    - regex: '(?:PEH[MT]00|CPH212[13])(?:[);/ ]|$)'
13490      model: 'A93'
13491    - regex: 'PDKM00(?:[);/ ]|$)'
13492      model: 'A93s'
13493    - regex: '(?:CPH2203)(?:[);/ ]|$)'
13494      model: 'A94'
13495    - regex: '(?:CPH2197)(?:[);/ ]|$)'
13496      model: 'A94 5G'
13497    - regex: 'PCE[TM]00(?:[);/ ]|$)'
13498      model: 'A9x'
13499    - regex: '(?:OPPO[ _]?)?CPH1851(?:[);/ ]|$)'
13500      model: 'AX5'
13501    - regex: 'CPH1920(?:[);/ ]|$)'
13502      model: 'AX5s'
13503    - regex: '(?:OPPO[ _]?)?CPH1903(?:[);/ ]|$)'
13504      model: 'AX7'
13505    - regex: '(?:OPPO[ _]?)?X9009(?:[);/ ]|$)'
13506      model: 'F1 Plus'
13507    - regex: 'CPH191[135](?:[);/ ]|$)'
13508      model: 'F11'
13509    - regex: 'CPH19(?:69|87)(?:[);/ ]|$)'
13510      model: 'F11 Pro'
13511    - regex: '(?:OPPO[ _]?)?CPH2095'
13512      model: 'F17'
13513    - regex: '(?:OPPO[ _]?)?(?:CPH2119)(?:[);/ ]|$)'
13514      model: 'F17 Pro'
13515    - regex: '(?:OPPO[ _]?)?A1601(?:[);/ ]|$)'
13516      model: 'F1s'
13517    - regex: '(?:OPPO[ _]?)?CPH1609(?:[);/ ]|$)'
13518      model: 'F3'
13519    - regex: '(?:OPPO[ _]?)?CPH1613(?:[);/ ]|$)'
13520      model: 'F3 Plus'
13521    - regex: '(?:OPPO[ _]?)?CPH172[37](?:[);/ ]|$)'
13522      model: 'F5'
13523    - regex: '(?:OPPO[ _]?)?CPH1725(?:[);/ ]|$)'
13524      model: 'F5 Youth'
13525    - regex: '(?:OPPO[ _]?)?CPH(1859|18(?:19|21))(?:[);/ ]|$)'
13526      model: 'F7'
13527    - regex: '(?:OPPO[ _]?)?(?:CPH1825|CPH1881)(?:[);/ ]|$)'
13528      model: 'F9'
13529    - regex: '(?:OPPO[ _]?)?CPH1823(?:[);/ ]|$)'
13530      model: 'F9 Pro'
13531    - regex: '(?:OPPO[ _]?)?CPH2285(?:[);/ ]|$)'
13532      model: 'F19 Pro'
13533    - regex: '(?:OPPO[ _]?)?CPH2213(?:[);/ ]|$)'
13534      model: 'F19 Pro Plus'
13535    - regex: '(?:OPPO[ _]?)?X909T?(?:[);/ ]|$)'
13536      model: 'Find 5'
13537    - regex: '(?:OPPO[ _]?)?R827T?(?:[);/ ]|$)'
13538      model: 'Find 5 Mini'
13539    - regex: '(?:OPPO[ _]?)?X907[067](?:[);/ ]|$)'
13540      model: 'Find 7'
13541    - regex: '(?:OPPO[ _]?)?X900[067](?:[);/ ]|$)'
13542      model: 'Find 7a'
13543    - regex: '(?:OPPO[ _]?)?R815[TW]?(?:[);/ ]|$)'
13544      model: 'Find Clover'
13545    - regex: '(?:OPPO[ _]?)?R8015(?:[);/ ]|$)'
13546      model: 'Find Guitar'
13547    - regex: '(?:OPPO[ _]?)?R8111(?:[);/ ]|$)'
13548      model: 'Find Melody'
13549    - regex: '(?:OPPO[ _]?)?R821T?(?:[);/ ]|$)'
13550      model: 'Find Muse'
13551    - regex: '(?:OPPO[ _]?)?U707T?(?:[);/ ]|$)'
13552      model: 'Find Way S'
13553    - regex: '(?:OPPO[ _]?)?U705T(?:[);/ ]|$)'
13554      model: 'Ulike 2'
13555    - regex: '(?:OPPO[ _]?)?(?:CPH187[15]|PAF[MT]00)(?:[);/ ]|$)'
13556      model: 'Find X'
13557    - regex: '(?:OPPO[ _]?)?(?:PAHM00)(?:[);/ ]|$)'
13558      model: 'Find X Lamborghini'
13559    - regex: '(?:OPPO[ _]?)?(?:PDE[TM]10|CPH2023)(?:[);/ ]|$)'
13560      model: 'Find X2'
13561    - regex: '(?:OPPO[ _]?)?CPH2005(?:[);/ ]|$)'
13562      model: 'Find X2 Lite'
13563    - regex: '(?:OPPO[ _]?)?(?:PDEM30|OPG01|CPH2025)(?:[);/ ]|$)'
13564      model: 'Find X2 Pro'
13565    - regex: 'PEDM00(?:[);/ ]|$)'
13566      model: 'Find X3'
13567    - regex: '(?:PEEM00|CPH2173|OPG03)(?:[);/ ]|$)'
13568      model: 'Find X3 Pro'
13569    - regex: '(?:OPPO[ _]?)?R1011 Build'
13570      model: 'Joy Plus'
13571    - regex: '(?:OPPO[ _]?)?(PBC(?:M30|T10))(?:[);/ ]|$)'
13572      model: 'K1'
13573    - regex: 'CPH1955(?:[);/ ]|$)'
13574      model: 'K3'
13575    - regex: '(?:OPPO[ _]?)?(PCNM00)(?:[);/ ]|$)'
13576      model: 'K5'
13577    - regex: '(?:OPPO[ _]?)?(PCLM50)(?:[);/ ]|$)'
13578      model: 'K7'
13579    - regex: '(?:OPPO[ _]?)?(PERM00)(?:[);/ ]|$)'
13580      model: 'K7x'
13581    - regex: '(?:OPPO[ _]?)?N5117(?:[);/ ]|$)'
13582      model: 'N1 Mini'
13583    - regex: '(?:OPPO[ _]?)?N520[79](?:[);/ ]|$)'
13584      model: 'N3'
13585    - regex: '(?:OPPO[ _]?)?R831T?(?:[);/ ]|$)'
13586      model: 'Neo'
13587    - regex: '(?:OPPO[ _]?)?R831K(?:[);/ ]|$)'
13588      model: 'Neo 3'
13589    - regex: '(?:OPPO[ _]?)?R831[SL](?:[);/ ]|$)'
13590      model: 'Neo 5'
13591    - regex: '(?:OPPO[ _]?)?A33[wf](?:[);/ ]|$)'
13592      model: 'Neo 7'
13593    - regex: '(?:OPPO[ _]?)?A33fw(?:[);/ ]|$)'
13594      model: 'Neo 7s'
13595    - regex: '(?:OPPO[ _]?)?R8113(?:[);/ ]|$)'
13596      model: 'Piano'
13597    - regex: '(?:OPPO[ _]?)?CPH1707(?:[);/ ]|$)'
13598      model: 'R11'
13599    - regex: '(?:OPPO[ _]?)?R11 Pluskt(?:[);/ ]|$)'
13600      model: 'R11 Plus'
13601    - regex: 'R8001(?:[);/ ]|$)'
13602      model: 'R1K'
13603    - regex: '(?:OPPO[ _]?)?(?:CPH1719|R11st?)(?:[);/ ]|$)'
13604      model: 'R11s'
13605    - regex: '(?:OPPO[ _]?)?CPH1721(?:[);/ ]|$)'
13606      model: 'R11s Plus'
13607    - regex: '(?:OPPO[ _]?)?(?:CPH1835|PAC[TM]00|PAAM00)(?:[);/ ]|$)'
13608      model: 'R15'
13609    - regex: '(?:OPPO[ _]?)?(?:CPH183[13]|PAAT00)(?:[);/ ]|$)'
13610      model: 'R15 Pro'
13611    - regex: 'PBCM10(?:[);/ ]|$)'
13612      model: 'R15x'
13613    - regex: '(?:OPPO[ _]?)?(?:CPH1879|PBE[MT]00)(?:[);/ ]|$)'
13614      model: 'R17'
13615    - regex: '(?:OPPO[ _]?)?(?:CPH1893)(?:[);/ ]|$)'
13616      model: 'R17 Neo'
13617    - regex: '(?:OPPO[ _]?)?(?:CPH1877|PBD[MT]00)(?:[);/ ]|$)'
13618      model: 'R17 Pro'
13619    - regex: '(?:OPPO[ _]?)?R8006(?:[);/ ]|$)'
13620      model: 'R1L'
13621    - regex: '(?:OPPO[ _]?)?R800[07](?:[);/ ]|$)'
13622      model: 'R1S'
13623    - regex: '(?:OPPO[ _]?)?R810[679](?:[);/ ]|$)'
13624      model: 'R5'
13625    - regex: '(?:OPPO[ _]?)?R7kf(?:[);/ ]|$)'
13626      model: 'R7 Lite'
13627    - regex: '(?:OPPO[ _]?)?R7Plusm(?:[);/ ]|$)'
13628      model: 'R7 Plus'
13629    - regex: '(?:OPPO[ _]?)?R7Plusf(?:[);/ ]|$)'
13630      model: 'R7 Plus F'
13631    - regex: '(?:OPPO[ _]?)?X9079(?:[);/ ]|$)'
13632      model: 'R9 Plus'
13633    - regex: '(?:OPPO[ _]?)?(?:CPH1607|R9sk)(?:[);/ ]|$)'
13634      model: 'R9s'
13635    - regex: '(?:OPPO[ _]?)?(?:CPH1611|R9s Plus)(?:[);/ ]|$)'
13636      model: 'R9s Plus'
13637    - regex: '(?:CPH1917|PCA[MT]00)(?:[);/ ]|$)'
13638      model: 'Reno'
13639    - regex: 'CPH1983(?:[);/ ]|$)'
13640      model: 'Reno A'
13641    - regex: 'PCCM00(?:[);/ ]|$)'
13642      model: 'Reno 10X'
13643    - regex: 'CPH1919(?:[);/ ]|$)'
13644      model: 'Reno 10X Zoom'
13645    - regex: '(?:PCKM00|CPH1907)(?:[);/ ]|$)'
13646      model: 'Reno 2'
13647    - regex: 'CPH1989(?:[);/ ]|$)'
13648      model: 'Reno 2F'
13649    - regex: '(?:PCKM80|CPH1945|CPH1951)(?:[);/ ]|$)'
13650      model: 'Reno 2Z'
13651    - regex: 'CPH2043(?:[);/ ]|$)'
13652      model: 'Reno 3'
13653    - regex: '(?:CPH2013|A002OP)(?:[);/ ]|$)'
13654      model: 'Reno 3A'
13655    - regex: '(?:PDCM00|A001OP)(?:[);/ ]|$)'
13656      model: 'Reno 3 5G'
13657    - regex: '(?:PCRM00|CPH203[567]|CPH2009)'
13658      model: 'Reno 3 Pro'
13659    - regex: 'PCRT01(?:[);/ ]|$)'
13660      model: 'Reno 3 Lite'
13661    - regex: 'CPH2113(?:[);/ ]|$)'
13662      model: 'Reno 4 4G'
13663    - regex: 'CPH2125(?:[);/ ]|$)'
13664      model: 'Reno 4 Lite'
13665    - regex: 'CPH2109(?:[);/ ]|$)'
13666      model: 'Reno 4 Pro 4G'
13667    - regex: '(?:PDP[TM]00|CPH2091)(?:[);/ ]|$)'
13668      model: 'Reno 4 5G'
13669    - regex: 'PEA[TM]00(?:[);/ ]|$)'
13670      model: 'Reno 4 SE 5G '
13671    - regex: '(?:PDN[TM]00|CPH2089)(?:[);/ ]|$)'
13672      model: 'Reno 4 Pro 5G'
13673    - regex: 'CPH2065(?:[);/ ]|$)'
13674      model: 'Reno 4Z 5G'
13675    - regex: 'CPH2209(?:[);/ ]|$)'
13676      model: 'Reno 4F'
13677    - regex: 'CPH2159(?:[);/ ]|$)'
13678      model: 'Reno 5'
13679    - regex: '(?:CPH2199|A101OP)(?:[);/ ]|$)'
13680      model: 'Reno 5A'
13681    - regex: 'CPH2205(?:[);/ ]|$)'
13682      model: 'Reno 5 Lite'
13683    - regex: '(?:PEG[MT]00|CPH2145)(?:[);/ ]|$)'
13684      model: 'Reno 5 5G'
13685    - regex: 'PEG[MT]10(?:[);/ ]|$)'
13686      model: 'Reno 5K'
13687    - regex: 'CPH2217(?:[);/ ]|$)'
13688      model: 'Reno 5F'
13689    - regex: 'CPH2211(?:[);/ ]|$)'
13690      model: 'Reno 5Z'
13691    - regex: '(?:PDS[TM]00|CPH220[17])(?:[);/ ]|$)'
13692      model: 'Reno 5 Pro 5G'
13693    - regex: 'PDR[TM]00(?:[);/ ]|$)'
13694      model: 'Reno 5 Pro Plus 5G'
13695    - regex: 'CPH1921(?:[);/ ]|$)'
13696      model: 'Reno 5G'
13697    - regex: '(?:CPH2235|PEQM00)(?:[);/ ]|$)'
13698      model: 'Reno 6'
13699    - regex: 'CPH2237(?:[);/ ]|$)'
13700      model: 'Reno 6 Z 5G'
13701    - regex: 'PEPM00(?:[);/ ]|$)'
13702      model: 'Reno 6 Pro'
13703    - regex: 'CPH2247(?:[);/ ]|$)'
13704      model: 'Reno 6 Pro 5G'
13705    - regex: 'PENM00(?:[);/ ]|$)'
13706      model: 'Reno 6 Pro Plus'
13707    - regex: '(?:PEYM00)(?:[);/ ]|$)'
13708      model: 'K9 Pro 5G'
13709    - regex: '(?:PEXM00)(?:[);/ ]|$)'
13710      model: 'K9 5G'
13711    - regex: 'PCLM10(?:[);/ ]|$)'
13712      model: 'Reno Ace'
13713    - regex: 'PDHM00(?:[);/ ]|$)'
13714      model: 'Reno Ace 2'
13715    - regex: 'PCGM00(?:[);/ ]|$)'
13716      model: 'Reno K3'
13717    - regex: '(?:OPPO[ _]?)?(?:CPH1979|PCD[TM]10)(?:[);/ ]|$)'
13718      model: 'Reno Z'
13719
13720    - regex: 'N1T?(?:[);/ ]|$)'
13721      model: 'N1T'
13722      device: 'phablet'
13723    - regex: 'R([0-9]{3,4}[KSTW]?)(?:[);/ ]|$)' # valid model numbers are filtered in main regex
13724      model: 'R$1'
13725
13726    # general detections
13727    - regex: '(CPH[0-9]{4})'
13728      model: '$1'
13729
13730    - regex: '(?:OB-)?OPPO[ _]?((?!Browser)[a-z0-9]+)'
13731      model: '$1'
13732
13733# orange
13734Orange:
13735  regex: 'SPV[ \-]?([a-z0-9]+)|(?<!FBCR/)Orange[ _-](?!Tahiti-LS\))([^/;]+)( Build|\))(?<!Tahiti-LS\))|SC/IHD92|Nura 2|FunTab ([^/;]+) Build|Orange Mahpee|Dive 50'
13736  device: 'smartphone'
13737  models:
13738    - regex: 'SC/IHD92'
13739      device: 'tv' # set top box
13740      model: 'Livebox Play'
13741    - regex: 'Nola play'
13742      model: 'Nola Play'
13743    - regex: 'Nura 2'
13744      model: 'Nura 2'
13745    - regex: 'Sego'
13746      model: 'Sego'
13747      device: 'tablet'
13748    - regex: 'FunTab ([^/;]+) Build'
13749      model: 'FunTab $1'
13750      device: 'tablet'
13751    - regex: 'Orange[ _-](Rise)(3[12]|5[12])(?:[);/ ]|$)'
13752      model: '$1 $2'
13753    - regex: '(?:Orange[ _-])?Dive ?(\d+) Dual(?:[);/ ]|$)'
13754      model: 'Dive $1 Dual'
13755    - regex: '(?:Orange[ _-])?Dive ?(\d+)(?:[);/ ]|$)'
13756      model: 'Dive $1'
13757    - 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)(?:[);/ ]|$)'
13758      model: '$1'
13759    - regex: 'SPV[ \-]?([a-z0-9]+)'
13760      model: 'SPV $1'
13761
13762# Oukitel
13763Oukitel:
13764  regex: 'OUKITEL|(?:Android 10.+ (?:C19|C22)|(?: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|WP15|WP[58] Pro|K[46]000[ _](?:Plus|Lite)|Y4800|K10000|K[4-8]000| WP(?:[5-79]|1[023])|K[37]_Pro|K13_Pro)(?:[);/ ]|$)'
13765  device: 'smartphone'
13766  models:
13767    - regex: '(C1[0-9]|C2[13]|K10000|K[46]000|WP[258]|WP12|U15|K[37]|K13)[ _]?Pro(?:[);/ ]|$)'
13768      model: '$1 Pro'
13769    - regex: 'OUKITEL K([37])(?:[);/ ]|$)'
13770      model: 'K$1'
13771    - regex: '(K10000|U16|U7)[ _]Max(?:[);/ ]|$)'
13772      model: '$1 Max'
13773    - regex: '(U20|K[46]000|U7|U11|OK6000|K15|C12)[_ ]?Plus(?:[);/ ]|$)'
13774      model: '$1 Plus'
13775    - regex: '(K4000)[_ ]Lite(?:[);/ ]|$)'
13776      model: '$1 Lite'
13777    - regex: '(K10000)[_ ]Mix(?:[);/ ]|$)'
13778      model: '$1 Mix'
13779    - regex: '(Y4800|K10000|K[4-8]000|WP2|WP15|WP5000|[CU]2|U10|C19|C22)(?:[);/ ]|$)'
13780      model: '$1'
13781    - regex: ' (WP(?:[5-79]|1[023])|C11_F)(?:[);/ ]|$)'
13782      model: '$1'
13783    - regex: 'OUKITEL; ([^;]+);'
13784      model: '$1'
13785
13786# OKWU
13787OKWU:
13788  regex: 'OKWU SIGMA(?:[);/ ]|$)'
13789  device: 'smartphone'
13790  model: 'Sigma'
13791
13792# Ouki
13793Ouki:
13794  regex: 'OUKI|OK[AU][0-9]+[a-z]* Build'
13795  device: 'smartphone'
13796  models:
13797    - regex: 'OUKI[ _-]?([^;/]+) Build'
13798      model: '$1'
13799    - regex: '([^;/)]+) Build/OUKI'
13800      model: '$1'
13801    - regex: 'OUKI[ _-]?([^;/)]+)(?:[;/)]|$)'
13802      model: '$1'
13803    - regex: '(OK[AU][0-9]+[a-z]*) Build'
13804      model: '$1'
13805
13806# Overmax
13807Overmax:
13808  regex: 'OV-[a-z]+(?:[^;(/]*)[();/ ]|Qualcore 10(?:10|27)|Livecore7032|Vertis 5021 Aim|Vertis 4004 You|OV1027[34]G'
13809  device: 'tablet'
13810  models:
13811    - regex: 'OV-V10'
13812      model: 'Vertis Yard'
13813      device: 'smartphone'
13814    - regex: 'Vertis 5021 Aim'
13815      model: 'Vertis 5021 Aim'
13816      device: 'smartphone'
13817    - regex: 'Vertis 4004 You'
13818      model: 'Vertis 4004 You'
13819      device: 'smartphone'
13820    - regex: 'OV-Vertis[ _-]([^;/]+) Build'
13821      model: 'Vertis $1'
13822      device: 'smartphone'
13823    - regex: 'Livecore7032'
13824      model: 'Livecore 7032'
13825    - regex: 'Qualcore 1010'
13826      model: 'Qualcore 1010'
13827    - regex: 'Qualcore 1027 4G'
13828      model: 'Qualcore 1027 4G'
13829    - regex: 'OV1027([34])G'
13830      model: 'Qualcore 1027 $1G'
13831    - regex: '(OV-[a-z]+(?:[^;(/]*))(?<!Build)[();/ ]'
13832      model: '$1'
13833
13834# Oysters
13835Oysters:
13836  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)'
13837  device: 'tablet'
13838  models:
13839    - regex: 'Pacific[ ]?800i'
13840      device: 'smartphone'
13841      model: 'Pacific 800i'
13842    - regex: 'PacificE'
13843      device: 'smartphone'
13844      model: 'Pacific E'
13845    - regex: 'Atlantic4G'
13846      device: 'smartphone'
13847      model: 'Atlantic 4G'
13848    - regex: 'AntarcticE'
13849      device: 'smartphone'
13850      model: 'Antarctic E'
13851    - regex: 'IndianV'
13852      device: 'smartphone'
13853      model: 'Indian V'
13854    - regex: '(?:Oysters[_ ])?Pacific(VS?|4G)'
13855      device: 'smartphone'
13856      model: 'Pacific $1'
13857    - regex: 'Oysters ((?:Arctic|Indian|Atlantic|Pacific)[^/;]+) Build'
13858      device: 'smartphone'
13859      model: '$1'
13860    - regex: '(T84ERI[ _]3G|T72HM(s_)?3G|(?:(T74HMi|T84Bi)[_ ]4G)|T84Ni[_ ][34]G)'
13861      model: '$1'
13862    - regex: '(T74MR|T102MS|T104B|T74SC|T74[DN]|T72HA|T102ER|T104SCi|T104MBi|T104ER|T7V)[ _]?([34]G)'
13863      model: '$1 $2'
13864    - regex: 'T74Mai_3G'
13865      model: 'T74MAi 3G'
13866    - regex: 'Oysters ([^/;]+)( Build|\))'
13867      model: '$1'
13868
13869# öwn (own mobile)
13870öwn:
13871  regex: 'OWN[ _]|(?:S4035[ _][34]G|Smart8|SMART PLUS LTE)(?:[);/ ]|$)'
13872  device: 'smartphone'
13873  models:
13874    - regex: 'FUN ([67])'
13875      model: 'Fun $1'
13876    - regex: 'FUN 5\(4G\)'
13877      model: 'Fun 5 4G'
13878    - regex: '(?:OWN[ _])?(S3000D|S3010|S3020D|S4010|S4025|S4035[ _][34]G)'
13879      model: '$1'
13880    - regex: 'One Plus'
13881      model: 'One Plus'
13882    - regex: 'One'
13883      model: 'One'
13884    - regex: 'SMART 9'
13885      model: 'Smart 9'
13886    - regex: 'Smart8(?:[);/ ]|$)'
13887      model: 'Smart 8'
13888    - regex: 'SMART PLUS LTE(?:[);/ ]|$)'
13889      model: 'Smart Plus LTE'
13890
13891# Panacom
13892Panacom:
13893  regex: 'T-i708D'
13894  device: 'smartphone'
13895  models:
13896    - regex: 'T-i708D'
13897      device: 'tablet'
13898      model: 'T-i708D'
13899
13900# panasonic
13901Panasonic:
13902  regex: 'Panasonic|PANATV[0-9]+|Viera/|(?:P902i|P-0[28]D|FZ-B2D|FZ-[NX]1|DMC-CM1|P-01J|P-03E|P55 Max)(?:[);/ ]|$)|Eluga[ _]|P55 Novo 4G'
13903  device: 'smartphone'
13904  models:
13905    - regex: 'P-01J(?:[);/ ]|$)'
13906      model: 'P-smart Keitai'
13907    - regex: 'P-03E(?:[);/ ]|$)'
13908      model: 'Eluga P'
13909    - regex: 'Eluga[ _]I7(?:_EE)?'
13910      model: 'Eluga I7'
13911    - regex: 'Eluga[ _-]([^;/]+) Build'
13912      model: 'Eluga $1'
13913    - regex: 'Eluga[ _-]([^);/]+)[;/)]'
13914      model: 'Eluga $1'
13915    - regex: '(DMC-CM1)'
13916      model: 'Lumix $1'
13917      device: 'camera'
13918    - regex: 'P-02D(?:[);/ ]|$)'
13919      model: 'Lumix Phone P-02D'
13920    - regex: '(FZ-[XN]1)(?:[);/ ]|$)'
13921      model: 'Toughpad $1'
13922    - regex: 'FZ-B2D(?:[);/ ]|$)'
13923      model: 'Toughpad FZ-B2D'
13924      device: 'tablet'
13925    - regex: 'P55 Novo 4G'
13926      model: 'P55 Novo 4G'
13927    - regex: 'P55 Max'
13928      model: 'P55 Max'
13929    - regex: 'P902i(?:[);/ ]|$)'
13930      device: 'feature phone'
13931      model: 'P902i'
13932    - regex: 'Panasonic MIL DLNA'
13933      device: 'tv'
13934      model: 'Viera Cast'
13935    - regex: 'PANATV[0-9]+|Viera/'
13936      device: 'tv'
13937      model: 'Smart TV'
13938    - regex: '(43D1200|(?:32|43)D1270|32D1280)'
13939      device: 'tv'
13940      model: '$1'
13941    - regex: 'Panasonic[ _\-]?([a-z0-9]+)'
13942      model: '$1'
13943    - regex: 'portalmmm/2.0 (P[a-z0-9]+)'
13944      model: '$1'
13945
13946    - regex: 'P-08D(?:[);/ ]|$)'
13947      model: 'Eluga Live 10.1"'
13948      device: 'tablet'
13949
13950# PCBOX
13951PCBOX:
13952  regex: 'Art-PCB-V116|Bee-PCB-V216|Clap-PCB-I316|PCB-T(103|715)'
13953  device: 'smartphone'
13954  models:
13955    - regex: 'Art-PCB-V116'
13956      model: 'Art'
13957    - regex: 'Bee-PCB-V216'
13958      model: 'Bee'
13959    - regex: 'Clap-PCB-I316'
13960      model: 'Clap'
13961    - regex: 'PCB-T103'
13962      device: 'tablet'
13963      model: 'Curi Lite'
13964    - regex: 'PCB-T715'
13965      device: 'tablet'
13966      model: 'T715'
13967
13968# PCD
13969PCD:
13970  regex: 'PH4001'
13971  device: 'smartphone'
13972  models:
13973    - regex: 'PH4001'
13974      model: 'PH4001'
13975
13976# PCD Argentina
13977PCD Argentina:
13978  regex: 'PCD[ ]?50[689]'
13979  device: 'smartphone'
13980  models:
13981    - regex: 'PCD[ ]?(50[689])'
13982      model: '$1'
13983
13984# ArmPhone
13985ArmPhone:
13986  regex: '(TSD Octa A0520P|TSD Quadra A050[59]P)(?:[);/ ]|$)'
13987  device: 'smartphone'
13988  model: '$1'
13989
13990# Pentagram
13991Pentagram:
13992  regex: 'Pentagram|Quadra|Monster X5'
13993  device: 'tablet'
13994  models:
13995    - regex: '(?:PENTAGRAM[_ ])?EON[_ ]PRIX'
13996      model: 'Eon Prix'
13997    - regex: 'Quadra 7(?: UltraSlim)?'
13998      model: 'Quadra 7 UltraSlim'
13999    - regex: 'Monster X5?'
14000      model: 'Monster X5'
14001      device: 'smartphone'
14002    - regex: 'Quadra ?([^);/]*) Build'
14003      model: 'Quadra $1'
14004    - regex: 'Pentagram ?TAB ?([^);/]*) Build'
14005      model: 'Tab $1'
14006    - regex: 'Pentagram ?([^);/]*) Build'
14007      model: '$1'
14008      device: 'smartphone'
14009
14010# Tcl (tcl.com)
14011TCL:
14012  regex: 'TCL,|TCL[_ -][a-z0-9]+|(?:TCL[_ -][^;/]+ Build)|(?:TCLGalaG60(?:\(9108A\))?|6125[FD]|A50[279]DL|T78[02]H|5199I|7040N|5133A|5159[AJ]|5152D|T770H|T671[HF]|T790Y|T766H_(?:RU|EEA)|T766[AJU]|T799[BH]|T775H|Percee TV)(?:[);/ ]|$)'
14013  device: 'smartphone'
14014  models:
14015    - regex: 'TCLGalaG60(?:\(9108A\))?(?:[);/ ]|$)'
14016      model: 'Gala G60'
14017    - regex: 'T775H(?:[);/ ]|$)'
14018      model: '20L Plus'
14019    - regex: '6125[FD](?:[);/ ]|$)'
14020      model: '20E'
14021    - regex: '5199I(?:[);/ ]|$)'
14022      model: 'C9'
14023    - regex: 'A509DL(?:[);/ ]|$)'
14024      model: 'A3'
14025    - regex: '5152D(?:[);/ ]|$)'
14026      model: 'C5'
14027    - regex: '5133A(?:[);/ ]|$)'
14028      model: 'L5'
14029    - regex: 'T780H(?:[);/ ]|$)'
14030      model: 'Plex'
14031    - regex: 'T782H(?:[);/ ]|$)'
14032      model: '10 Plus'
14033    - regex: 'T790Y(?:[);/ ]|$)'
14034      model: '10 5G'
14035    - regex: 'TCL[_ -]([^;/]+) Build'
14036      model: '$1'
14037    - regex: 'TCL[_ -]([a-z0-9]+)'
14038      model: '$1'
14039    - regex: '(7040N)(?:[);/ ]|$)'
14040      model: '$1'
14041    - regex: 'A502DL(?:[);/ ]|$)'
14042      model: 'LX'
14043    - regex: 'A507DL(?:[);/ ]|$)' # TracFone A507DL
14044      model: 'A2'
14045    - regex: '5159[AJ](?:[);/ ]|$)'
14046      model: 'L9'
14047    - regex: 'T770H(?:[);/ ]|$)'
14048      model: '10L'
14049    - regex: 'T766[AHJU](?:_(?:EEA|RU))?(?:[);/ ]|$)'
14050      model: '10 SE'
14051    - regex: 'T671[HF](?:_EEA)?(?:[);/ ]|$)'
14052      model: '20 SE'
14053    - regex: 'T799[BH](?:[);/ ]|$)'
14054      model: '10 Pro'
14055
14056    - regex: '(Percee TV)(?:[);/ ]|$)'
14057      device: 'tv'
14058      model: '$1'
14059    - regex: '((?:43|55)S62FS|(?:43|50)P65US|U(?:43|60)P60|65P4USM|(?:40|49)S62|L32S6|55P610|50P8S|55S62|(?:43|50)P6US|55DP60)'
14060      device: 'tv'
14061      model: '$1'
14062
14063# JVC
14064JVC:
14065  regex: 'JVC[;,]|AV-10NT310'
14066  device: 'tv'
14067  models:
14068    - regex: 'JVC[;,](32D1290)'
14069      model: '$1'
14070    - regex: '(AV-10NT310)'
14071      device: 'tablet'
14072      model: '$1'
14073
14074# phoneOne
14075phoneOne:
14076  regex: 'phoneOne[ \-]?([a-z0-9]+)'
14077  device: 'smartphone'
14078  model: '$1'
14079
14080# Primepad
14081Primepad:
14082  regex: 'PD\-(3127NC|3127) Build'
14083  device: 'tablet'
14084  models:
14085    - regex: 'PD\-3127NC Build'
14086      model: 'PD-3127NC'
14087    - regex: 'PD\-3127 Build'
14088      model: 'PD-3127'
14089
14090# Pioneer
14091Pioneer:
14092  regex: 'Pioneer|.*; R1 Build|dvr700pi|XDP-300R'
14093  device: 'smartphone'
14094  models:
14095    - regex: '.*; R1 Build'
14096      model: 'R1'
14097      device: 'tablet'
14098    - regex: 'dvr700pi'
14099      model: 'DVR700PI 7.0"'
14100      device: 'tablet'
14101    - regex: '(XDP-300R)'
14102      device: 'portable media player'
14103      model: '$1'
14104    - regex: 'Pioneer, ([^,]+), wired'
14105      model: '$1'
14106    - regex: 'Pioneer[ _-]?([^;/]+) Build'
14107      model: '$1'
14108    - regex: 'Pioneer[ _-]?([^;/)]+)(?:[;/)]|$)'
14109      model: '$1'
14110
14111# Pixus
14112Pixus:
14113  regex: 'Pixus|(hiPower|Touch_7_3G|Ride[_ ][34]G|Play[ _]Three[ _]v(?:[234].0|3.1))(?:[);/ ]|$)'
14114  device: 'tablet'
14115  models:
14116    - regex: 'Ride[_ ]([34])G'
14117      model: 'Ride $1G'
14118    - regex: 'Play[ _]Three[ _]v([234].0|3.1)'
14119      model: 'Play Three v$1'
14120    - regex: 'Play Two'
14121      model: 'Play Two'
14122    - regex: 'Play Five'
14123      model: 'Play Five'
14124    - regex: 'hiPower'
14125      model: 'hiPower'
14126    - regex: 'Pixus[ _]Sprint'
14127      model: 'Sprint'
14128    - regex: '(?:Pixus_)?Touch[ _]7[ _]3G'
14129      model: 'Touch 7 3G'
14130    - regex: 'Pixus[ _]hiMax'
14131      model: 'HiMax 9.6"'
14132    - regex: 'Pixus[ _]Blast'
14133      model: 'Blast 10.1"'
14134    - regex: 'Pixus[ _]Joker'
14135      model: 'Joker 10.1"'
14136    - regex: 'Pixus Blaze 10.1 3G'
14137      model: 'Blaze 10.1" 3G'
14138
14139    - regex: 'Raze'
14140      model: 'Raze'
14141      device: 'smartphone'
14142    - regex: 'Pixus_Jet'
14143      model: 'Jet'
14144      device: 'smartphone'
14145    - regex: 'pixus hit 2'
14146      model: 'Hit 2'
14147      device: 'smartphone'
14148
14149# PULID
14150PULID:
14151  regex: 'PULID[ _]|F1[01357]\+? Build'
14152  device: 'smartphone'
14153  models:
14154    - regex: 'F(1[01357]\+?) Build'
14155      model: 'F$1'
14156    - regex: 'PULID[ _]([^;/]+) Build'
14157      model: '$1'
14158    - regex: 'PULID[ _]([a-z0-9_]+)\)'
14159      model: '$1'
14160
14161# Point of View
14162'Point of View':
14163  regex: 'POV_TV|POV_TAB|MOB-5045'
14164  device: 'tablet'
14165  models:
14166    - regex: 'POV_TV-HDMI-KB-01'
14167      model: 'HDMI Smart TV Dongle'
14168      device: 'tv'
14169    - regex: 'POV_TV-HDMI-200BT'
14170      model: 'Mini PC HDMI Dongle'
14171      device: 'tv'
14172    - regex: 'MOB-5045'
14173      model: 'Mobii Phone 5045'
14174      device: 'smartphone'
14175    - regex: 'POV_TAB-P506'
14176      model: 'ONYX 506 Navi'
14177    - regex: 'POV_TAB[_-]NAVI7[_-]3G[_-]M'
14178      model: 'ONYX 507 Navi'
14179    - regex: 'POV_TAB-P527S'
14180      model: 'ONYX 527S'
14181    - regex: 'POV_TAB-P547'
14182      model: 'ONYX 547 Navi'
14183    - regex: 'POV_TAB-PROTAB26'
14184      model: 'ProTab 26 XXL IPS'
14185    - regex: 'POV_TAB-PROTAB25XXL8?'
14186      model: 'ProTab 25XXL'
14187    - regex: 'POV_TAB-PL1015'
14188      model: 'Mobii 1015'
14189
14190    - regex: 'POV_TAB-PROTAB([a-z0-9]+)'
14191      model: 'ProTab $1'
14192    - regex: 'POV_TAB-P?([a-z0-9]+)'
14193      model: 'Mobii $1'
14194
14195# Pomp
14196Pomp:
14197  regex: 'POMP[ _-]'
14198  device: 'smartphone'
14199  models:
14200    - regex: 'POMP[ _-]([^;/]+) Build'
14201      model: '$1'
14202    - regex: 'POMP[ _-]([^;/)]+)(?:[;/)]|$)'
14203      model: '$1'
14204
14205# PPTV
14206PPTV:
14207  regex: '(KING 7S?)'
14208  device: 'smartphone'
14209  model: '$1'
14210
14211# ProScan
14212ProScan:
14213  regex: 'PLT([^;/]+) Build|PLT(?:777[45]|9774|1074)G(?:[);/ ]|$)'
14214  device: 'tablet'
14215  models:
14216    - regex: 'PLT([^;/]+) Build'
14217      model: 'PLT$1'
14218    - regex: 'PLT(777[45]|9774|1074)G'
14219      model: 'PLT$1G'
14220
14221# RCA Tablets (RCA)
14222'RCA Tablets':
14223  regex: 'RCT([^;/]+) Build|RCA RLTP4028|RCT6613W23P|RCT6513W87|RCT6973W43(?:MD)?|RCT6703W12|RCT(?:6A06P22|6603W47M7|6303W87(?:DK|M)|6773W22B|6203W46L|6873W42M|6K03W13)'
14224  device: 'smartphone'
14225  models:
14226    - regex: 'RCA RLTP4028'
14227      model: 'RLTP4028'
14228    - regex: 'RCT6513W87'
14229      device: 'tablet'
14230      model: 'Galileo Pro 11.5"'
14231    - regex: 'RCT6873W42M'
14232      device: 'tablet'
14233      model: 'Voyager 7.0"'
14234    - regex: 'RCT6973W43(?:MD)?'
14235      device: 'tablet'
14236      model: 'Voyager III 7.0"'
14237    - regex: 'RCT6773W22B'
14238      device: 'tablet'
14239      model: 'Voyager II 7.0"'
14240    - regex: 'RCT6703W12'
14241      device: 'tablet'
14242      model: 'Atlas 10.0"'
14243    - regex: 'RCT6203W46L'
14244      device: 'tablet'
14245      model: 'Pro 10 Edition II'
14246    - regex: 'RCT6A06P22'
14247      device: 'tablet'
14248      model: 'Endeavor 10.0" HD'
14249    - regex: 'RCT(?:6303W87(?:DK|M)|6K03W13)'
14250      device: 'tablet'
14251      model: 'Viking Pro 10.0"'
14252    - regex: 'RCT6603W47M7'
14253      device: 'tablet'
14254      model: 'Viking II 10.0"'
14255    - regex: 'RCT6613W23P'
14256      device: 'tablet'
14257      model: 'Delta Pro 11.6"'
14258    - regex: 'RCT([^;/)]+)(?: Build|[;)])'
14259      device: 'tablet'
14260      model: 'RCT$1'
14261
14262# Readboy
14263Readboy:
14264  regex: 'Readboy[ _-]'
14265  device: 'tablet'
14266  models:
14267    - regex: 'Readboy[ _-]([^;/)]+)(?: Build|[;)])'
14268      model: '$1'
14269
14270# Roku
14271Roku:
14272  regex: 'Roku(?:OS)?/(?:DVP|Pluto)?-?|QSP; Roku'
14273  device: 'tv'
14274  model: 'Digital Video Player'
14275
14276# Rokit (rokitphones.com)
14277Rokit:
14278  regex: 'IO (?:Pro|3D|Light)(?:[);/ ]|$)'
14279  device: 'smartphone'
14280  models:
14281    - regex: 'IO Pro'
14282      model: 'IO Pro'
14283    - regex: 'IO Light'
14284      model: 'IO Light'
14285    - regex: 'IO 3D'
14286      model: 'IO 3D'
14287
14288# Rombica
14289Rombica:
14290  regex: '(Rombica|SSQ-A0500|Smart Box v[0-9]+)(?:[);/ ]|$)'
14291  device: 'tv'
14292  models:
14293    - regex: 'SSQ-A0500(?:[);/ ]|$)'
14294      model: 'Smart Stick 4K'
14295    - regex: '(Infinity K8|Smart Box (?:v00[3-9]|Quad|Ultra HD v002|4K V001))(?:[);/ ]|$)'
14296      model: '$1'
14297
14298# Rover
14299Rover:
14300  regex: 'Rover ([0-9]+)'
14301  device: 'feature phone'
14302  model: '$1'
14303
14304# RoverPad or Rover Pad
14305RoverPad:
14306  regex: '(?:Rover[ ]?Pad|RoverPhone|Sky 7.85 3G|Pro_Q(?:8|10)_LTE)(?:[);/ ]|$)'
14307  device: 'tablet'
14308  models:
14309    - regex: 'RoverPhone(?:[);/ ]|$)'
14310      model: ''
14311      device: 'smartphone'
14312    - regex: 'Pro_Q(8|10)_LTE(?:[);/ ]|$)'
14313      model: 'Pro Q$1 LTE'
14314    - regex: '(?:Rover[ ]?Pad)?sky 7.85(?: 3G)?(?:[);/ ]|$)'
14315      model: 'Sky 7.85" 3G'
14316    - regex: 'RoverPad (10.4|Air S70|9.7 3G|Sky 9.7|3W A73|3W7|3WT70|3W9.4)(?:[);/ ]|$)'
14317      model: '$1'
14318
14319# Roadrover
14320Roadrover:
14321  regex: 'Roadrover ChangAn S'
14322  device: 'tablet'
14323  model: 'ChangAn S'
14324
14325# RT Project
14326RT Project:
14327  regex: 'Shock 5'
14328  device: 'smartphone'
14329  models:
14330    - regex: 'Shock 5'
14331      model: 'Shock 5'
14332
14333# S-TELL
14334S-TELL:
14335  regex: 'S-TELL|(?:M630|M55[78]|P760|M555i)(?:[);/ ]|$)'
14336  device: 'smartphone'
14337  models:
14338    - regex: '(P760)(?:[);/ ]|$)'
14339      model: '$1'
14340    - regex: '(?:S-TELL[ _])?M([0-9]{3}|555i)(?:[);/ ]|$)'
14341      model: 'M$1'
14342
14343
14344# Safaricom
14345Safaricom:
14346  regex: 'NEON_RAY'
14347  device: 'smartphone'
14348  models:
14349    - regex: 'NEON_RAY_PRO'
14350      model: 'Neon Ray Pro'
14351    - regex: 'NEON_RAY'
14352      model: 'Neon Ray'
14353
14354# Santin
14355Santin:
14356  regex: 'SANTIN|(?:BiTBiZ_V58|ACTOMA ACE|DREAMPLUS03A|Candy U7 Pro|GAAMII|RS635H)(?:[);/ ]|$)'
14357  device: 'smartphone'
14358  models:
14359    - regex: 'BiTBiZ_V58(?:[);/ ]|$)'
14360      model: 'BiTBiZ V58'
14361    - regex: 'GAAMII G1(?:[);/ ]|$)'
14362      model: 'GAAMII G1'
14363    - regex: 'GAAMII(?:[);/ ]|$)'
14364      model: 'GAAMII'
14365    - regex: 'Candy U7 Pro(?:[);/ ]|$)'
14366      model: 'Candy U7 Pro'
14367    - regex: 'DREAMPLUS03A(?:[);/ ]|$)'
14368      model: 'Dream Plus 03A'
14369    - regex: 'GreenOrange(?:[);/ ]|$)'
14370      model: 'Green Orange'
14371    - regex: 'CLASSONE(?:[);/ ]|$)'
14372      model: 'Class One'
14373    - regex: 'halove(?:[);/ ]|$)'
14374      model: 'Halove'
14375    - regex: 'ACTOMA ACE(?:[);/ ]|$)'
14376      model: 'Actoma Ace'
14377    - regex: 'monica(?:[);/ ]|$)'
14378      model: 'Monica'
14379    - regex: 'POWER(?:[);/ ]|$)'
14380      model: 'Power'
14381    - regex: 'GALAZ(?:[);/ ]|$)'
14382      model: 'Galaz'
14383    - regex: 'NEWDUN(?:[);/ ]|$)'
14384      model: 'Newdun'
14385    - regex: 'SANTIN[ _][#]?(Dante|Candy U7|Armor|YSL-Y7|ANT.W|N[13]|JS|S6|V9(?:[ _]Pro)?|Life Shine|ovvi|D|11 XS Max|SHUGUO)(?:[);/ ]|$)'
14386      model: '$1'
14387    - regex: '(RS635H)(?:[);/ ]|$)'
14388      model: '$1'
14389
14390# Siemens
14391Siemens:
14392  regex: 'SIEMENS|SIE-|portalmmm/2\.0 SI|(?:S55(?! Nova)|SL45i)(?:[);/ ]|$)'
14393  device: 'smartphone'
14394  models:
14395    - regex: '(?:SIE-)?(S[56]5|S40|C45|ME45|SLIK)(?:[);/ ]|$)'
14396      device: 'feature phone'
14397      model: '$1'
14398
14399    - regex: 'SIEMENS[ \-]([a-z0-9]+)'
14400      model: '$1'
14401    - regex: 'SIE(?:MENS )?[\-]?([a-z0-9]+)'
14402      model: '$1'
14403    - regex: '(?:SIE-)?(SL45i)'
14404      model: '$1'
14405    - regex: 'portalmmm/2.0 (SI[a-z0-9]+)'
14406      model: '$1'
14407
14408# Soundmax
14409Soundmax:
14410  regex: '((?:SM-LED32M(?:11|04)S)(?:_-Ver01)?|SM-LED40M04S)(?:[);/ ]|$)'
14411  device: 'tv'
14412  model: '$1'
14413
14414# Samsung
14415Samsung:
14416  regex: 'SAMSUNG(?! ?Browser)|lineage_j5y17lte|Maple (?!III)|SC-(?:01[FGHKLM]|02[CGHJKLM]|03[JKLE]|04[EFJL]|05[GL]|(?:4[12]|5[1234])A|5[123]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|T21|G0[1-9]|G10|L2[234])(?:-[uj])?(?:[);/ ]|$)'
14417  device: 'smartphone'
14418  models:
14419    # explicit tv models
14420    - regex: 'GT-B9150'
14421      device: 'tv'
14422      model: 'Home Sync'
14423    - regex: '(?:OTV-)?SMT-E5015'
14424      device: 'tv'
14425      model: 'SMT-E5015' # set top box
14426    - regex: 'Maple '
14427      device: 'tv'
14428      model: ''
14429
14430    # explicit tablet models
14431    - regex: '(?:SAMSUNG-)?(?:GT-)?N5100'
14432      device: 'tablet'
14433      model: 'Galaxy Note 8.0"'
14434    - regex: '(?:SAMSUNG-)?SM-T677(?:[ATV]|N[KL])?(?:[);/ ]|$)'
14435      device: 'tablet'
14436      model: 'Galaxy View 18.4" LTE'
14437    - regex: '(?:SAMSUNG-)?SM-T670(?:[);/ ]|$)'
14438      device: 'tablet'
14439      model: 'Galaxy View 18.4" WiFi'
14440    - regex: '(?:SAMSUNG-)?(?:GT-)?N5110'
14441      device: 'tablet'
14442      model: 'Galaxy Note 8.0" WiFi'
14443    - regex: '(?:SAMSUNG-)?GT-N5120'
14444      device: 'tablet'
14445      model: 'Galaxy Note 8.0" LTE'
14446    - regex: '(?:SAMSUNG-)?(?:GT|SM)-N8000'
14447      device: 'tablet'
14448      model: 'Galaxy Note 10.1"'
14449    - regex: '(?:SAMSUNG-)?GT-N8010'
14450      device: 'tablet'
14451      model: 'Galaxy Note 10.1" WiFi'
14452    - regex: '(?:SAMSUNG-)?GT-N8020'
14453      device: 'tablet'
14454      model: 'Galaxy Note 10.1" LTE'
14455    - regex: '(?:SAMSUNG-)?GT-P1000M?|SCH-I800'
14456      device: 'tablet'
14457      model: 'Galaxy Tab'
14458    - regex: '(?:SAMSUNG-)?GT-P3100B?'
14459      device: 'tablet'
14460      model: 'Galaxy Tab 2 7"'
14461    - regex: '(?:SAMSUNG-)?GT-P311[03]'
14462      device: 'tablet'
14463      model: 'Galaxy Tab 2 7" WiFi'
14464    - regex: '(?:SAMSUNG-)?GT-P5100|SCH-I915'
14465      device: 'tablet'
14466      model: 'Galaxy Tab 2 10.1"'
14467    - regex: '(?:SAMSUNG-)?GT-P511[03]'
14468      device: 'tablet'
14469      model: 'Galaxy Tab 2 10.1" WiFi'
14470    - regex: '(?:SAMSUNG-)?SM-T217T'
14471      device: 'tablet'
14472      model: 'Galaxy Tab 3 7.0" 4G'
14473    - regex: '(?:SAMSUNG-)?GT-P5200'
14474      device: 'tablet'
14475      model: 'Galaxy Tab 3 10.1"'
14476    - regex: '(?:SAMSUNG-)?GT-P5210'
14477      device: 'tablet'
14478      model: 'Galaxy Tab 3 10.1" WiFi'
14479    - regex: '(?:SAMSUNG-)?GT-P5220'
14480      device: 'tablet'
14481      model: 'Galaxy Tab 3 10.1" LTE'
14482    - regex: '(?:SAMSUNG-)?GT-P6200'
14483      device: 'tablet'
14484      model: 'Galaxy Tab 7" Plus'
14485    - regex: '(?:SAMSUNG-)?GT-P6201'
14486      device: 'tablet'
14487      model: 'Galaxy Tab 7" Plus N'
14488    - regex: '(?:SAMSUNG-)?GT-P6810'
14489      device: 'tablet'
14490      model: 'Galaxy Tab 7.7"'
14491    - regex: '(?:SAMSUNG-)?GT-P7100'
14492      device: 'tablet'
14493      model: 'Galaxy Tab 10.1v'
14494    - regex: '(?:SAMSUNG-)?GT-P75[01]0'
14495      device: 'tablet'
14496      model: 'Galaxy Tab 10.1"'
14497    - regex: '(?:SAMSUNG-)?SM-P600'
14498      device: 'tablet'
14499      model: 'Galaxy Note 10.1" 2014 Edition WiFi'
14500    - regex: '(?:SAMSUNG-)?SM-P60[12]'
14501      device: 'tablet'
14502      model: 'Galaxy Note 10.1" 2014 Edition'
14503    - regex: '(?:SAMSUNG-)?SM-(?:P605|P607T)'
14504      device: 'tablet'
14505      model: 'Galaxy Note 10.1" 2014 Edition LTE'
14506    - regex: '(?:SAMSUNG-)?SM-P900'
14507      device: 'tablet'
14508      model: 'Galaxy NotePRO 12.2" WiFi'
14509    - regex: '(?:SAMSUNG-)?SM-P901'
14510      device: 'tablet'
14511      model: 'Galaxy NotePRO 12.2"'
14512    - regex: '(?:SAMSUNG-)?SM-P905'
14513      device: 'tablet'
14514      model: 'Galaxy NotePRO 12.2" LTE'
14515    - regex: '(?:SAMSUNG-)?SM-(?:P587|P588C)(?:[);/ ]|$)'
14516      device: 'tablet'
14517      model: 'Galaxy Tab A 10.1" with S Pen (2016) LTE'
14518    - regex: '(?:SAMSUNG-)?SM-P583(?:[);/ ]|$)'
14519      device: 'tablet'
14520      model: 'Galaxy Tab A 10.1" with S Pen (2016) WiFi'
14521    - regex: '(?:SAMSUNG-)?SM-P205(?:[);/ ]|$)'
14522      device: 'tablet'
14523      model: 'Galaxy Tab A 8.0" with S Pen (2019) LTE'
14524    - regex: '(?:SAMSUNG-)?SM-P200(?:[);/ ]|$)'
14525      device: 'tablet'
14526      model: 'Galaxy Tab A 8.0" with S Pen (2019) WiFi'
14527    - regex: '(?:SAMSUNG-)?SM-T307U(?:[);/ ]|$)'
14528      device: 'tablet'
14529      model: 'Galaxy Tab A 8.4" (2020) LTE'
14530    - regex: '(?:SAMSUNG-)?SM-(?:T505[CN]?|T507)(?:[);/ ]|$)'
14531      device: 'tablet'
14532      model: 'Galaxy Tab A7 10.4" (2020) LTE'
14533    - regex: '(?:SAMSUNG-)?SM-T500(?:[);/ ]|$)'
14534      device: 'tablet'
14535      model: 'Galaxy Tab A7 10.4" (2020) WiFi'
14536    - regex: '(?:SAMSUNG-)? SM-T225(?:[);/ ]|$)'
14537      device: 'tablet'
14538      model: 'Galaxy Tab A7 Lite 8.7" (2021) LTE'
14539    - regex: '(?:SAMSUNG-)? SM-T220(?:[);/ ]|$)'
14540      device: 'tablet'
14541      model: 'Galaxy Tab A7 Lite 8.7" (2021) WiFi'
14542    - regex: '(?:SAMSUNG-)?SM-T11[03]'
14543      device: 'tablet'
14544      model: 'Galaxy Tab 3 Lite 7.0" WiFi'
14545    - regex: '(?:SAMSUNG-)?SM-(?:T830[X]?|T837R4)(?:[);/ ]|$)'
14546      device: 'tablet'
14547      model: 'Galaxy Tab S4 10.5" WiFi'
14548    - regex: '(?:SAMSUNG-)?SM-T837P(?:[);/ ]|$)'
14549      device: 'tablet'
14550      model: 'Galaxy Tab S4 10.5" with S Pen'
14551    - regex: '(?:SAMSUNG-)?SM-(?:T835[CN]?|T837[VTA]?)(?:[);/ ]|$)'
14552      device: 'tablet'
14553      model: 'Galaxy Tab S4 10.5"'
14554    - regex: '(?:SAMSUNG-)?SM-(?:T725[CN]?|T720X|T727(?:R4|[AUV])?)(?:[);/ ]|$)'
14555      device: 'tablet'
14556      model: 'Galaxy Tab S5e 10.5"'
14557    - regex: '(?:SAMSUNG-)?SM-T720(?:[);/ ]|$)'
14558      device: 'tablet'
14559      model: 'Galaxy Tab S5e 10.5" WiFi'
14560    - regex: '(?:SAMSUNG-)?SM-T865N?(?:[);/ ]|$)'
14561      device: 'tablet'
14562      model: 'Galaxy Tab S6 10.5"'
14563    - regex: '(?:SAMSUNG-)?SM-T867(?:R4|[VU])?(?:[);/ ]|$)'
14564      device: 'tablet'
14565      model: 'Galaxy Tab S6 10.5" LTE'
14566    - regex: '(?:SAMSUNG-)?SM-(?:P615[CN]?|P617)(?:[);/ ]|$)'
14567      device: 'tablet'
14568      model: 'Galaxy Tab S6 Lite 10.4"'
14569    - regex: '(?:SAMSUNG-)?SM-P610X?(?:[);/ ]|$)'
14570      device: 'tablet'
14571      model: 'Galaxy Tab S6 Lite 10.4" WiFi'
14572    - regex: '(?:SAMSUNG-)?SM-T860(?:[);/ ]|$)'
14573      device: 'tablet'
14574      model: 'Galaxy Tab S6 10.5" WiFi'
14575    - regex: '(?:SAMSUNG-)?SM-T866N(?:[);/ ]|$)'
14576      device: 'tablet'
14577      model: 'Galaxy Tab S6 10.5" 5G'
14578    - regex: '(?:SAMSUNG-)?SM-T111[M]?(?:[);/ ]|$)'
14579      device: 'tablet'
14580      model: 'Galaxy Tab 3 Lite 7.0"'
14581    - regex: '(?:SAMSUNG-)?SM-T116(?:BU|NU|NY)?'
14582      device: 'tablet'
14583      model: 'Galaxy Tab 3 V'
14584    - regex: '(?:SAMSUNG-)?SM-(?:T2105|T212)'
14585      device: 'tablet'
14586      model: 'Galaxy Tab 3 7.0" Kids'
14587    - regex: '(?:SAMSUNG-)?SM-T210R?'
14588      device: 'tablet'
14589      model: 'Galaxy Tab 3 7.0" WiFi'
14590    - regex: '(?:SAMSUNG-)?SM-T21(?:[15]|7[AS])'
14591      device: 'tablet'
14592      model: 'Galaxy Tab 3 7.0"'
14593    - regex: '(?:SAMSUNG-)?SM-T230(?:NU)?'
14594      device: 'tablet'
14595      model: 'Galaxy Tab 4 7.0" WiFi'
14596    - regex: '(?:SAMSUNG-)?SM-T23[15]|403SC'
14597      device: 'tablet'
14598      model: 'Galaxy Tab 4 7.0" 3G'
14599    - regex: '(?:SAMSUNG-)?SM-(?:T239|T237[PV])'
14600      device: 'tablet'
14601      model: 'Galaxy Tab 4 7.0" LTE'
14602    - regex: '(?:SAMSUNG-)?SM-T232(?:[);/ ]|$)'
14603      device: 'tablet'
14604      model: 'Galaxy Tab 4 7.0" WiFi + 3G'
14605    - regex: '(?:SAMSUNG-)?SM-T310'
14606      device: 'tablet'
14607      model: 'Galaxy Tab 3 8.0" WiFi'
14608    - regex: '(?:SAMSUNG-)?SM-T312'
14609      device: 'tablet'
14610      model: 'Galaxy Tab 3 8.0" 3G'
14611    - regex: '(?:SAMSUNG-)?SM-T311'
14612      device: 'tablet'
14613      model: 'Galaxy Tab 3 8.0"'
14614    - regex: '(?:SAMSUNG-)?SM-T315'
14615      device: 'tablet'
14616      model: 'Galaxy Tab 3 8.0" LTE'
14617    - regex: '(?:SAMSUNG-)?SM-T330'
14618      device: 'tablet'
14619      model: 'Galaxy Tab 4 8.0" WiFi'
14620    - regex: '(?:SAMSUNG-)?SM-(?:T33[215]|T337[AVT])'
14621      device: 'tablet'
14622      model: 'Galaxy Tab 4 8.0" LTE'
14623    - regex: '(?:SAMSUNG-)?SM-T520'
14624      device: 'tablet'
14625      model: 'Galaxy TabPRO 10.1" WiFi'
14626    - regex: '(?:SAMSUNG-)?SM-(?:T53[15]|T537[AV])'
14627      device: 'tablet'
14628      model: 'Galaxy Tab 4 10.1" LTE'
14629    - regex: '(?:SAMSUNG-)?SM-T536(?:[);/ ]|$)'
14630      device: 'tablet'
14631      model: 'Galaxy Tab 4 10.1" Advanced'
14632    - regex: '(?:SAMSUNG-)?SM-T532(?:[);/ ]|$)'
14633      device: 'tablet'
14634      model: 'Galaxy Tab 4 10.1"'
14635    - regex: '(?:SAMSUNG-)?SM-T320'
14636      device: 'tablet'
14637      model: 'Galaxy TabPRO 8.4" WiFi'
14638    - regex: '(?:SAMSUNG-)?SM-T325'
14639      device: 'tablet'
14640      model: 'Galaxy TabPRO 8.4" LTE'
14641    - regex: '(?:SAMSUNG-)?SM-T525'
14642      device: 'tablet'
14643      model: 'Galaxy TabPRO 10.1" LTE'
14644    - regex: '(?:SAMSUNG-)?SM-(?:T530(?:NU)?|T533)'
14645      device: 'tablet'
14646      model: 'Galaxy Tab 4 10.1" WiFi'
14647    - regex: '(?:SAMSUNG-)?SM-T700'
14648      device: 'tablet'
14649      model: 'Galaxy Tab S 8.4" WiFi'
14650    - regex: '(?:SAMSUNG-)?SM-(?:T705|T707[AV])'
14651      device: 'tablet'
14652      model: 'Galaxy Tab S 8.4" LTE'
14653    - regex: '(?:SAMSUNG-)?SM-T800'
14654      device: 'tablet'
14655      model: 'Galaxy Tab S 10.5" WiFi'
14656    - regex: '(?:SAMSUNG-)?(?:SM-(?:T805|T807[PV]?)|SCT21)'
14657      device: 'tablet'
14658      model: 'Galaxy Tab S 10.5" LTE'
14659    - regex: '(?:SAMSUNG-)?SM-(?:T813|T810)'
14660      device: 'tablet'
14661      model: 'Galaxy Tab S2 9.7" WiFi'
14662    - regex: '(?:SAMSUNG-)?SM-(?:T719[CY]?|T715(?:N0|[CY])?)(?:[);/ ]|$)'
14663      device: 'tablet'
14664      model: 'Galaxy Tab S2 8.0" LTE'
14665    - regex: '(?:SAMSUNG-)?SM-(?:T71[03]|T710X)(?:[);/ ]|$)'
14666      device: 'tablet'
14667      model: 'Galaxy Tab S2 8.0" WiFi'
14668    - regex: '(?:SAMSUNG-)?SM-(?:T815|T817[ATW]?|T818[ATVW]?|T819[Y]?)'
14669      device: 'tablet'
14670      model: 'Galaxy Tab S2 9.7" LTE'
14671    - regex: '(?:SAMSUNG-)?SM-T820'
14672      device: 'tablet'
14673      model: 'Galaxy Tab S3 9.7" WiFi'
14674    - regex: '(?:SAMSUNG-)?SM-T82[57]'
14675      device: 'tablet'
14676      model: 'Galaxy Tab S3 9.7" LTE'
14677    - regex: '(?:SAMSUNG-)?SM-T975N?(?:[);/ ]|$)'
14678      device: 'tablet'
14679      model: 'Galaxy Tab S7+ 12.4" LTE'
14680    - regex: '(?:SAMSUNG-)?SM-T970(?:[);/ ]|$)'
14681      device: 'tablet'
14682      model: 'Galaxy Tab S7+ 12.4" WiFi'
14683    - regex: '(?:SAMSUNG-)?SM-(?:T976[BN]|T978U)(?:[);/ ]|$)'
14684      device: 'tablet'
14685      model: 'Galaxy Tab S7+ 12.4" 5G'
14686    - regex: '(?:SAMSUNG-)?SM-T870(?:[);/ ]|$)'
14687      device: 'tablet'
14688      model: 'Galaxy Tab S7 11.0" WiFi'
14689    - regex: '(?:SAMSUNG-)?SM-T875N?(?:[);/ ]|$)'
14690      device: 'tablet'
14691      model: 'Galaxy Tab S7 11.0" LTE'
14692    - regex: '(?:SAMSUNG-)?SM-T878U(?:[);/ ]|$)'
14693      device: 'tablet'
14694      model: 'Galaxy Tab S7 11.0" 5G'
14695    - regex: '(?:SAMSUNG-)?SM-T735'
14696      device: 'tablet'
14697      model: 'Galaxy Tab S7 FE 12.4" LTE'
14698    - regex: '(?:SAMSUNG-)?SM-T900'
14699      device: 'tablet'
14700      model: 'Galaxy TabPRO 12.2" WiFi'
14701    - regex: '(?:SAMSUNG-)?SM-T280'
14702      device: 'tablet'
14703      model: 'Galaxy Tab A 7.0" WiFi'
14704    - regex: '(?:SAMSUNG-)?SM-T285'
14705      device: 'tablet'
14706      model: 'Galaxy Tab A 7.0" LTE'
14707    - regex: '(?:SAMSUNG-)?SM-T3[58]0'
14708      device: 'tablet'
14709      model: 'Galaxy Tab A 8.0" WiFi'
14710    - regex: '(?:SAMSUNG-)?SM-(?:P350|T3[58]5|T357[TW])'
14711      device: 'tablet'
14712      model: 'Galaxy Tab A 8.0" LTE'
14713    - regex: '(?:SAMSUNG-)?SM-T387(?:AA|R4|VK|[TVW])'
14714      device: 'tablet'
14715      model: 'Galaxy Tab A 8.0" LTE (2018)'
14716    - regex: '(?:SAMSUNG-)?SM-T295'
14717      device: 'tablet'
14718      model: 'Galaxy Tab A 8.0" LTE (2019)'
14719    - regex: '(?:SAMSUNG-)?SM-T290'
14720      device: 'tablet'
14721      model: 'Galaxy Tab A 8.0" WiFi (2019)'
14722    - regex: '(?:SAMSUNG-)?SM-(?:P355([MY])?|T550)'
14723      device: 'tablet'
14724      model: 'Galaxy Tab A 9.7" WiFi'
14725    - regex: '(?:SAMSUNG-)?SM-(?:P550|P555(M)?|T555)'
14726      device: 'tablet'
14727      model: 'Galaxy Tab A 9.7" LTE'
14728    - regex: '(?:SAMSUNG-)?SM-(?:T58[05]|P58[05])'
14729      device: 'tablet'
14730      model: 'Galaxy Tab A 10.1" WiFi (2016)'
14731    - regex: '(?:SAMSUNG-)?SM-T587[P]?'
14732      device: 'tablet'
14733      model: 'Galaxy Tab A 10.1" LTE (2016)'
14734    - regex: '(?:SAMSUNG-)?SM-T59[057]'
14735      device: 'tablet'
14736      model: 'Galaxy Tab A 10.5" LTE (2018)'
14737    - regex: '(?:SAMSUNG-)?SM-T51(?:7P|[057])'
14738      device: 'tablet'
14739      model: 'Galaxy Tab A 10.1" (2019)'
14740    - regex: '(?:SAMSUNG-)?SM-(?:T37[57]|T378[KLSV])'
14741      device: 'tablet'
14742      model: 'Galaxy Tab E 8.0"'
14743    - regex: '(?:SAMSUNG-)?SM-T56[02]'
14744      device: 'tablet'
14745      model: 'Galaxy Tab E 9.6" WiFi'
14746    - regex: '(?:SAMSUNG-)?SM-T561'
14747      device: 'tablet'
14748      model: 'Galaxy Tab E 9.6" 3G'
14749    - regex: '(?:SAMSUNG-)?SM-T567V'
14750      device: 'tablet'
14751      model: 'Galaxy Tab E 9.6" 4G'
14752    - regex: '(?:SAMSUNG-)?SM-T365(?:F0|[MY])?(?:[);/ ]|$)'
14753      device: 'tablet'
14754      model: 'Galaxy Tab Active 8.0"'
14755    - regex: '(?:SAMSUNG-)?SM-T360(?:[);/ ]|$)'
14756      device: 'tablet'
14757      model: 'Galaxy Tab Active 8.0" WiFi'
14758    - regex: '(?:SAMSUNG-)?SM-(?:T395[CN]?|T397U)(?:[);/ ]|$)'
14759      device: 'tablet'
14760      model: 'Galaxy Tab Active 2 8.0"'
14761    - regex: '(?:SAMSUNG-)?SM-T390(?:[);/ ]|$)'
14762      device: 'tablet'
14763      model: 'Galaxy Tab Active 2 8.0" WiFi'
14764    - regex: '(?:SAMSUNG-)?SM-(?:T575N?|T577U?)(?:[);/ ]|$)'
14765      device: 'tablet'
14766      model: 'Galaxy Tab Active 3 8.0"'
14767    - regex: '(?:SAMSUNG-)?SM-T570(?:[);/ ]|$)'
14768      device: 'tablet'
14769      model: 'Galaxy Tab Active 3 8.0" WiFi'
14770    - regex: '(?:SAMSUNG-)?SM-(?:T545|T547U?)(?:[);/ ]|$)'
14771      device: 'tablet'
14772      model: 'Galaxy Tab Active Pro 10.1"'
14773    - regex: '(?:SAMSUNG-)?SM-T540(?:[);/ ]|$)'
14774      device: 'tablet'
14775      model: 'Galaxy Tab Active Pro 10.1" WiFi'
14776    - regex: '(?:SAMSUNG-)?SM-(?:P902|P907A)(?:[);/ ]|$)'
14777      device: 'tablet'
14778      model: 'Galaxy Note Pro 12.2"'
14779    - regex: '(?:SAMSUNG[- ])?SM-T2519'
14780      model: 'Galaxy Tab Q'
14781      device: 'tablet'
14782
14783    # explicit wearable models
14784    - regex: 'SM-R820'
14785      device: 'wearable'
14786      model: 'Galaxy Watch Active 2 44mm'
14787    - regex: 'SM-R825'
14788      device: 'wearable'
14789      model: 'Galaxy Watch Active 2 44mm LTE'
14790    - regex: 'SM-R830'
14791      device: 'wearable'
14792      model: 'Galaxy Watch Active 2 40mm'
14793    - regex: 'SM-R835'
14794      device: 'wearable'
14795      model: 'Galaxy Watch Active 2 40mm LTE'
14796    - regex: 'SM-R800'
14797      device: 'wearable'
14798      model: 'Galaxy Watch 46mm'
14799    - regex: 'SM-R805'
14800      device: 'wearable'
14801      model: 'Galaxy Watch 46mm LTE'
14802    - regex: 'SM-R810'
14803      device: 'wearable'
14804      model: 'Galaxy Watch 42mm'
14805    - regex: 'SM-R815'
14806      device: 'wearable'
14807      model: 'Galaxy Watch 42mm LTE'
14808    - regex: 'SM-R500'
14809      device: 'wearable'
14810      model: 'Galaxy Watch Active'
14811    - regex: 'SM-R600'
14812      device: 'wearable'
14813      model: 'Galaxy Gear Sport 43mm'
14814    - regex: 'SM-R760'
14815      device: 'wearable'
14816      model: 'Galaxy Gear S3 Frontier 46mm'
14817    - regex: 'SM-R765'
14818      device: 'wearable'
14819      model: 'Galaxy Gear S3 Frontier 33mm'
14820    - regex: 'SM-R770'
14821      device: 'wearable'
14822      model: 'Galaxy Gear S3 Classic 41mm'
14823    - regex: 'SM-R845'
14824      device: 'wearable'
14825      model: 'Galaxy Watch 3 45mm LTE'
14826    - regex: 'SM-R840'
14827      device: 'wearable'
14828      model: 'Galaxy Watch 3 45mm'
14829    - regex: 'SM-R850'
14830      device: 'wearable'
14831      model: 'Galaxy Watch 3 41mm'
14832    - regex: 'SM-R855'
14833      device: 'wearable'
14834      model: 'Galaxy Watch 3 41mm 4G'
14835
14836    # smart fridge models
14837    - regex: 'Family Hub'
14838      device: 'peripheral'
14839      model: 'Family Hub'
14840
14841    # explicit smartphone models
14842    - regex: '(?:SAMSUNG-)?SM-G850(?:8S|[AFKLMSWXY])'
14843      model: 'Galaxy Alpha'
14844    - regex: '(?:SAMSUNG-)?GT-B5330'
14845      model: 'Galaxy Chat'
14846    - regex: '(?:SAMSUNG-)?SM-A605K'
14847      model: 'Galaxy Jean'
14848    - regex: '(?:SAMSUNG-)?SM-A202K'
14849      model: 'Galaxy Jean 2'
14850    - regex: '(?:SAMSUNG-)?GT-B5510'
14851      model: 'Galaxy Y Pro'
14852    - regex: '(?:SAMSUNG-)?GT-B5512'
14853      model: 'Galaxy Y Pro Duos'
14854    - regex: '(?:SAMSUNG-)?GT-B7510'
14855      model: 'Galaxy Pro'
14856    - regex: '(?:SAMSUNG-)?GT-I5700'
14857      model: 'Galaxy Spica'
14858    - regex: '(?:SAMSUNG-)?GT-I5801'
14859      model: 'Galaxy Apollo'
14860    - regex: '(?:SAMSUNG-)?GT-I5800'
14861      model: 'Galaxy 3'
14862    - regex: '(?:SAMSUNG-)?GT-I8000'
14863      model: 'Omnia II'
14864    - regex: '(?:SAMSUNG-)?(?:GT-I8150|SM-T255S)'
14865      model: 'Galaxy W'
14866    - regex: 'SC-01H(?:[);/ ]|$)'
14867      model: 'Galaxy Active Neo'
14868    - regex: '(?:SAMSUNG-)?GT-S5830'
14869      model: 'Galaxy Ace'
14870    - regex: '(?:SAMSUNG-)?SM-(?:G357(?:FZ|M)|G310HN)'
14871      model: 'Galaxy Ace Style'
14872    - regex: '(?:SAMSUNG-)?GT-I8160'
14873      model: 'Galaxy Ace 2'
14874    - regex: '(?:SAMSUNG-)?SM-G313(?:HY|M[LUY]|[FM])'
14875      model: 'Galaxy Ace 4'
14876    - regex: '(?:SAMSUNG-)?SM-G316M'
14877      model: 'Galaxy Ace 4 Duos'
14878    - regex: '(?:SAMSUNG-)?SM-G313[HU]'
14879      model: 'Galaxy Ace 4 Lite'
14880    - regex: '(?:SAMSUNG-)?SM-(?:G316U|G318(?:H|ML))(?:[);/ ]|$)'
14881      model: 'Galaxy Ace 4 Neo'
14882    - regex: '(?:SAMSUNG-)?SM-G9100(?:[);/ ]|$)'
14883      model: 'Galaxy S II'
14884    - regex: '(?:SAMSUNG-)?SHV-E120S(?:[);/ ]|$)'
14885      model: 'Galaxy S II HD LTE'
14886    - regex: '(?:SAMSUNG-)?GT-I8190'
14887      model: 'Galaxy S III mini'
14888    - regex: '(?:SAMSUNG-)?GT-I8200'
14889      model: 'Galaxy S III mini Value Edition'
14890    - regex: '(?:SAMSUNG-)?GT-I826[02]'
14891      model: 'Galaxy Core'
14892    - regex: '(?:SAMSUNG-)?SM-G386W'
14893      model: 'Galaxy Core LTE'
14894    - regex: '(?:SAMSUNG-)?SM-G3589W'
14895      model: 'Galaxy Core Lite LTE'
14896    - regex: '(?:SAMSUNG-)?GT-I8320'
14897      model: 'H1'
14898    - regex: '(?:SAMSUNG-)?GT-I85[23]0'
14899      model: 'Galaxy Beam'
14900    - regex: '(?:SAMSUNG-)?SM-G3858'
14901      model: 'Galaxy Beam 2'
14902    - regex: '(?:SAMSUNG-)?SM-G600S'
14903      model: 'Galaxy Wide'
14904    - regex: '(?:SAMSUNG-)?GT-I855[028]'
14905      model: 'Galaxy Win'
14906    - regex: '(?:SAMSUNG-)?SM-G381[28]'
14907      model: 'Galaxy Win Pro'
14908    - regex: '(?:SAMSUNG-)?GT-I8580'
14909      model: 'Galaxy Core Advance'
14910    - regex: '(?:SAMSUNG-)?GT-I8730'
14911      model: 'Galaxy Express'
14912    - regex: '(?:SAMSUNG-)?SM-(?:E500(?:HQ|YZ|[0FHM])|S978L)'
14913      model: 'Galaxy E5'
14914    - regex: '(?:SAMSUNG-)?SM-E700[09FHM]'
14915      model: 'Galaxy E7'
14916    - regex: '(?:SAMSUNG-)?GT-I90(?:00|08|18|88)'
14917      model: 'Galaxy S'
14918    - regex: '(?:SAMSUNG-)?GT-I9001'
14919      model: 'Galaxy S Plus'
14920    - regex: '(?:SAMSUNG-)?GT-I9003'
14921      model: 'Galaxy SL'
14922    - regex: '(?:SAMSUNG-)?GT-I9010'
14923      model: 'Galaxy S Giorgio Armani'
14924    - regex: '(?:SAMSUNG-)?GT-I9070'
14925      model: 'Galaxy S Advance'
14926    - regex: '(?:SAMSUNG-)?GT-I910[08]'
14927      model: 'Galaxy S II'
14928    - regex: '(?:SAMSUNG-)?ISW11SC'
14929      model: 'Galaxy S II WiMAX'
14930    - regex: '(?:SAMSUNG-)?GT-I9103'
14931      model: 'Galaxy R'
14932    - regex: '(?:SAMSUNG-)?GT-I9105'
14933      model: 'Galaxy S II Plus'
14934    - regex: '(?:SAMSUNG-)?SM-G730(?:W8|[AV])'
14935      model: 'Galaxy S3 mini'
14936    - regex: '(?:SAMSUNG-)?(?:GT-I919[025]|SCH-I435)'
14937      model: 'Galaxy S4 mini'
14938    - regex: '(?:SAMSUNG-)?GT-I9515'
14939      model: 'Galaxy S4 Value Edition'
14940    - regex: '(?:SAMSUNG-)?GT-I9295'
14941      model: 'Galaxy S4 ACTIVE'
14942    - regex: '(?:SAMSUNG-)?(?:GT-I9300|SCH-(?:I535|I939|L710))|SC-03E'
14943      model: 'Galaxy S III'
14944    - regex: '(?:SAMSUNG-)?(?:GT-I9305|SCH-R530)'
14945      model: 'Galaxy S III LTE'
14946    - regex: '(?:SAMSUNG-)?(?:SM-S975L|GT-I950[025]|SC-04E|SCH-(?:I545|I959|R970)|SGH-M919N?|Galaxy-S4)'
14947      model: 'Galaxy S4'
14948    - regex: '(?:SAMSUNG-)?GT-I9506'
14949      model: 'Galaxy S4 with LTE+'
14950    - regex: '(?:SAMSUNG-)?GT-S5280'
14951      model: 'Galaxy STAR'
14952    - regex: '(?:SAMSUNG-)?GT-S5301'
14953      model: 'Galaxy POCKET Plus'
14954    - regex: '(?:SAMSUNG-)?GT-S5310'
14955      model: 'Galaxy POCKET Neo'
14956    - regex: '(?:SAMSUNG-)?SM-G110[BHM]'
14957      model: 'Galaxy POCKET 2'
14958    - regex: '(?:SAMSUNG-)?GT-S5360'
14959      model: 'Galaxy Y Hello Kitty'
14960    - regex: '(?:SAMSUNG-)?GT-S6310'
14961      model: 'Galaxy Young'
14962    - regex: '(?:SAMSUNG-)?GT-S6312'
14963      model: 'Galaxy Young DUOS'
14964    - regex: '(?:SAMSUNG-)?SM-G130(?:BT|HN|[EHMU])'
14965      model: 'Galaxy Young 2'
14966    - regex: '(?:SAMSUNG-)?SM-G130BU'
14967      model: 'Galaxy Young 2 Pro'
14968    - regex: '(?:SAMSUNG-)?GT-S6790'
14969      model: 'Galaxy FAME Lite with NFC'
14970    - regex: '(?:SAMSUNG-)?GT-S6810'
14971      model: 'Galaxy FAME'
14972    - regex: '(?:SAMSUNG-)?GT-S6812'
14973      model: 'Galaxy FAME Duos'
14974    - regex: 'SC-04J(?:[);/ ]|$)'
14975      model: 'Galaxy Feel'
14976    - regex: 'SC-02L(?:[);/ ]|$)'
14977      model: 'Galaxy Feel 2'
14978    - regex: '(?:SAMSUNG-)?GT-S7275'
14979      model: 'Galaxy ACE 3'
14980    - regex: '(?:SAMSUNG-)?GT-S7500'
14981      model: 'Galaxy ACE Plus'
14982    - regex: '(?:SAMSUNG-)?(?:GT-S7560|SCH-I699)'
14983      model: 'Galaxy Trend'
14984    - regex: '(?:SAMSUNG-)?GT-S7390'
14985      model: 'Galaxy Trend Lite'
14986    - regex: '(?:SAMSUNG-)?GT-S7580'
14987      model: 'Galaxy Trend Plus'
14988    - regex: '(?:SAMSUNG-)?SCH-I739'
14989      model: 'Galaxy Trend 2'
14990    - regex: '(?:SAMSUNG-)?(?:GT-S7562|SCH-I919)'
14991      model: 'Galaxy S DUOS'
14992    - regex: '(?:SAMSUNG-)?GT-S7582'
14993      model: 'Galaxy S DUOS 2'
14994    - regex: '(?:SAMSUNG-)?SM-(?:G31[36]HU|G313HZ)'
14995      model: 'Galaxy S DUOS 3'
14996    - regex: '(?:SAMSUNG-)?GT-S7710'
14997      model: 'Galaxy Xcover 2'
14998    - regex: '(?:SAMSUNG-)?SM-G388F'
14999      model: 'Galaxy Xcover 3'
15000    - regex: '(?:SAMSUNG-)?SM-G389F'
15001      model: 'Galaxy Xcover 3 VE'
15002    - regex: '(?:SAMSUNG-)?SM-G390[FWY]'
15003      model: 'Galaxy Xcover 4'
15004    - regex: '(?:SAMSUNG-)?SM-G398FN'
15005      model: 'Galaxy Xcover 4s'
15006    - regex: '(?:SAMSUNG-)?SM-G715(?:FN|U1|[AUW])'
15007      model: 'Galaxy Xcover Pro'
15008    - regex: '(?:SAMSUNG-)?SM-G889(?:YB|[AFG])'
15009      model: 'Galaxy Xcover FieldPro'
15010    - regex: '(?:SAMSUNG-)?SM-G525F'
15011      model: 'Galaxy Xcover 5'
15012    - regex: '(?:SAMSUNG-)?GT-S8500'
15013      model: 'Wave'
15014    - regex: '(?:SAMSUNG-)?GT-S8530'
15015      model: 'Wave II'
15016    - regex: '(?:SAMSUNG-)?GT-S8600'
15017      model: 'Wave 3'
15018    - regex: '(?:SAMSUNG-)?GT-S5380'
15019      model: 'Wave Y'
15020    - regex: '(?:SAMSUNG-)?GT-S7250'
15021      model: 'Wave M'
15022    - regex: '(?:SAMSUNG-)?GT-S5250'
15023      model: 'Wave 525'
15024    - regex: '(?:SAMSUNG-)?GT-S5330'
15025      model: 'Wave 533'
15026    - regex: '(?:SAMSUNG-)?GT-S5780'
15027      model: 'Wave 578'
15028    - regex: '(?:SAMSUNG-)?GT-S7230'
15029      model: 'Wave 723'
15030    - regex: '(?:SAMSUNG-)?SM-(?:C101|C105([AL])?)'
15031      model: 'Galaxy S4 zoom'
15032    - regex: '(?:SAMSUNG-)?SM-(?:C111(M)?|C115)'
15033      model: 'Galaxy K zoom'
15034    - regex: '(?:SAMSUNG-)?SM-G318[HM]Z'
15035      model: 'Galaxy V Plus'
15036    - regex: '(?:SAMSUNG-)?SM-G355(?:6D|[89HM])'
15037      model: 'Galaxy Core 2'
15038    - regex: '(?:SAMSUNG-)?SM-G350'
15039      model: 'Galaxy Core Plus'
15040    - regex: '(?:SAMSUNG-)?SM-(?:G360[FH]?|S820L)'
15041      model: 'Galaxy Core Prime'
15042    - regex: '(?:SAMSUNG-)?SM-G361[FH]?'
15043      model: 'Galaxy Core Prime Value Edition'
15044    - regex: '(?:SAMSUNG-)?SM-(?:G386F|G3518(?:_TD)?|G3586V)'
15045      model: 'Galaxy Core LTE'
15046    - regex: '(?:SAMSUNG-)?SM-G3568V'
15047      model: 'Galaxy Core Mini 4G'
15048    - regex: '(?:SAMSUNG-)?SM-G5108Q?'
15049      model: 'Galaxy Core Max'
15050    - regex: '(?:SAMSUNG-)?SM-G3815'
15051      model: 'Galaxy EXPRESS II'
15052    - regex: '(?:SAMSUNG-)?SM-G800'
15053      model: 'Galaxy S5 mini'
15054    - regex: '(?:SAMSUNG-)?SM-G9009D'
15055      model: 'Galaxy S5 Dual-SIM'
15056    - regex: '(?:SAMSUNG-)?SM-G900FD'
15057      model: 'Galaxy S5 Duos'
15058    - regex: '(?:SAMSUNG-)?SM-(?:G900|G906[KLS]|S902L|S903VL)|Galaxy-S5|SCL23|SC-04F'
15059      model: 'Galaxy S5'
15060    - regex: '(?:SAMSUNG-)?SM-G901F'
15061      model: 'Galaxy S5 LTE+'
15062    - regex: '(?:SAMSUNG-)?SM-G870[AFW]|SC-02G'
15063      model: 'Galaxy S5 Active'
15064    - regex: '(?:SAMSUNG-)?SM-G903[FMW]'
15065      model: 'Galaxy S5 Neo'
15066    - regex: '(?:SAMSUNG-)?SM-G860P'
15067      model: 'Galaxy S5 K Sport'
15068    - regex: '(?:SAMSUNG-)?(?:SM-G920(?:F[DQ]|W8|[089AFIKLPRSTVX])?|SM-S906L|SM-S907VL)|SC-05G'
15069      model: 'Galaxy S6'
15070    - regex: '(?:SAMSUNG-)?SM-G890A'
15071      model: 'Galaxy S5 Active'
15072    - regex: '(?:SAMSUNG-)?SM-G925[0ADFIKLPRSTVWX]|SCV31|404SC'
15073      model: 'Galaxy S6 Edge'
15074    - regex: '(?:SAMSUNG-)?SM-G928(?:7C|N0|R4|W8|[07ACFGIKLPSTVX])'
15075      model: 'Galaxy S6 Edge+'
15076    - regex: '(?:SAMSUNG-)?SM-G930(?:AZ|FD|R[467]|T1|V[CL]|W8|[0AFKLPRSTUVX8])?(?:[);/ ]|$)'
15077      model: 'Galaxy S7'
15078    - regex: '(?:SAMSUNG-)?SM-G935(?:R4|W8|[0AFKLPSTUVX])|SC-02H|SCV33'
15079      model: 'Galaxy S7 Edge'
15080    - regex: '(?:SAMSUNG-)?SM-G891A'
15081      model: 'Galaxy S7 Active'
15082    - regex: '(?:SAMSUNG-)?SM-G950[08FNUW]?|SCV36|SC-02J'
15083      model: 'Galaxy S8'
15084    - regex: '(?:SAMSUNG-)?SM-G8750'
15085      model: 'Galaxy S8 Lite'
15086    - regex: '(?:SAMSUNG-)?SM-G892[AU]'
15087      model: 'Galaxy S8 Active'
15088    - regex: '(?:SAMSUNG-)?SM-G955[0AFKLNPRTUVWX]?|SCV35|SC-03J'
15089      model: 'Galaxy S8+'
15090    - regex: '(?:SAMSUNG-)?SM-G960[0FNUWX]?|SCV38|SC-02K'
15091      model: 'Galaxy S9'
15092    - regex: '(?:SAMSUNG-)?SM-G965[0FNUWX]|SCV39|SC-03K'
15093      model: 'Galaxy S9+'
15094    - regex: '(?:SAMSUNG-)?(?:SM-(?:G973|G977[BNPTU])|SCV41|SC-03L)'
15095      model: 'Galaxy S10'
15096    - regex: '(?:SAMSUNG-)?SM-(?:S10 Lite|G770(?:U1|F))'
15097      model: 'Galaxy S10 Lite'
15098    - regex: '(?:SAMSUNG-)?(?:SM-G975[08FUNWX]|SCV42|SC-04L)'
15099      model: 'Galaxy S10+'
15100    - regex: 'SC-05L'
15101      model: 'Galaxy S10+ Olympic Games Edition'
15102    - regex: '(?:SAMSUNG-)?SM-G970(?:U1|[08FUNWX])(?:[);/ ]|$)'
15103      model: 'Galaxy S10e'
15104    - regex: '(?:SAMSUNG-)?SM-G980F'
15105      model: 'Galaxy S20'
15106    - regex: '(?:SAMSUNG-)?SM-G981(?:U1|[0BNUVW])|SCG01|SC-51A|SC51Aa'
15107      model: 'Galaxy S20 5G'
15108    - regex: '(?:SAMSUNG-)?SM-G780'
15109      model: 'Galaxy S20 FE'
15110    - regex: '(?:SAMSUNG-)?SM-G781(?:U1|[0BNUVW])'
15111      model: 'Galaxy S20 FE 5G'
15112    - regex: '(?:SAMSUNG-)?SM-G988(?:U1|[0BNQUW])|SCG03'
15113      model: 'Galaxy S20 Ultra 5G'
15114    - regex: '(?:SAMSUNG-)?SM-G985F|SCG02'
15115      model: 'Galaxy S20+'
15116    - regex: '(?:SAMSUNG-)?SM-G986(?:U1|[0BNUW])|SC-52A'
15117      model: 'Galaxy S20+ 5G'
15118    - regex: '(?:SAMSUNG-)?SM-G991(?:U1|[0BNW])|SCG09'
15119      model: 'Galaxy S21 5G'
15120    - regex: '(?:SAMSUNG-)?SC-51B'
15121      model: 'Galaxy S21 5G Olympic Games Edition'
15122    - regex: '(?:SAMSUNG-)?(?:SM-G998(?:U1|[0BNUW])|SC-52B)'
15123      model: 'Galaxy S21 Ultra 5G'
15124    - regex: '(?:SAMSUNG-)?SM-G996(?:U1|[0BNWU])|SCG10'
15125      model: 'Galaxy S21+ 5G'
15126    - regex: '(?:SAMSUNG-)?SM-F700(?:U1|[0FNUW])|SCV47'
15127      model: 'Galaxy Z Flip'
15128    - regex: '(?:SAMSUNG-)?SM-F707(?:U1|[0BNUW])|SCG04'
15129      model: 'Galaxy Z Flip 5G'
15130    - regex: '(?:SAMSUNG-)?SCH-I200'
15131      model: 'Galaxy Stellar'
15132    - regex: '(?:SAMSUNG-)?SCH-I829'
15133      model: 'Galaxy Style Duos'
15134    - regex: '(?:SAMSUNG-)?(?:SCH-R740|SGH-S730)'
15135      model: 'Galaxy Discover'
15136    - regex: '(?:SAMSUNG-)?SCH-S738'
15137      model: 'Galaxy Centura'
15138    - regex: 'vollo Vi86(?:[);/ ]|$)'
15139      model: 'Vollo Vi86'
15140    - regex: '(?:SAMSUNG-)?SM-G386(?:T1|T)'
15141      model: 'Galaxy Avant'
15142    - regex: '(?:SAMSUNG-)?SM-A716S'
15143      model: 'Galaxy A Quantum'
15144    - regex: '(?:SAMSUNG-)?SM-(?:A015(?:DL|[TU]1|[AFGMUV])|S111DL)'
15145      model: 'Galaxy A01'
15146    - regex: '(?:SAMSUNG-)?SM-A013[FGM]'
15147      model: 'Galaxy A01 Core'
15148    - regex: '(?:SAMSUNG-)?SM-A025[FGM]'
15149      model: 'Galaxy A02s'
15150    - regex: '(?:SAMSUNG-)?SM-A037[F]?'
15151      model: 'Galaxy A03s'
15152    - regex: '(?:SAMSUNG-)?SM-A022[GM]'
15153      model: 'Galaxy A02'
15154    - regex: '(?:SAMSUNG-)?SM-A260[FG]'
15155      model: 'Galaxy A2 Core'
15156    - regex: '(?:SAMSUNG-)?SM-A225[F]?'
15157      model: 'Galaxy A22'
15158    - regex: '(?:SAMSUNG-)?SM-A226'
15159      model: 'Galaxy A22 5G'
15160    - regex: '(?:SAMSUNG-)?SM-A300(?:FU|YZ|XU|XZ|[09FGHMXY])'
15161      model: 'Galaxy A3 (2015)'
15162    - regex: '(?:SAMSUNG-)?SM-A310(?:N0|[FMXY])'
15163      model: 'Galaxy A3 (2016)'
15164    - regex: '(?:SAMSUNG-)?SM-A320(?:FL|[FXY])'
15165      model: 'Galaxy A3 (2017)'
15166    - regex: '(?:SAMSUNG-)?SM-A430F'
15167      model: 'Galaxy A4'
15168    - regex: '(?:SAMSUNG-)?SM-A500(?:YZ|[9LSWY])?(?:[);/ ]|$)'
15169      model: 'Galaxy A5'
15170    - regex: '(?:SAMSUNG-)?SM-A500[0FGHKM]'
15171      model: 'Galaxy A5 Duos'
15172    - regex: '(?:SAMSUNG-)?SM-A500(?:FU|X)'
15173      model: 'Galaxy A5 (2015)'
15174    - regex: '(?:SAMSUNG-)?SM-A510[08FKLMSXY]'
15175      model: 'Galaxy A5 (2016)'
15176    - regex: '(?:SAMSUNG-)?SM-A520[FKLSWX]'
15177      model: 'Galaxy A5 (2017)'
15178    - regex: '(?:SAMSUNG-)?SM-A525'
15179      model: 'Galaxy A52'
15180    - regex: '(?:SAMSUNG-)?(?:SC-53B|SM-A526)'
15181      model: 'Galaxy A52 5G'
15182    - regex: '(?:SAMSUNG-)?SM-A528'
15183      model: 'Galaxy A52s 5G'
15184    - regex: '(?:SAMSUNG-)?SM-A600(?:AZ|FN|GN|T1|[AFGNPTUX])'
15185      model: 'Galaxy A6'
15186    - regex: '(?:SAMSUNG-)?SM-A605(?:[FG]N|[08FGX])'
15187      model: 'Galaxy A6+'
15188    - regex: '(?:SAMSUNG-)?SM-G6200'
15189      model: 'Galaxy A6s (2018)'
15190    - regex: '(?:SAMSUNG-)?SM-A606[0Y]'
15191      model: 'Galaxy A60'
15192    - regex: '(?:SAMSUNG-)?SM-A700(?:YD|[09FHKLSX])'
15193      model: 'Galaxy A7'
15194    - regex: '(?:SAMSUNG-)?SM-A710[08FKLMSXY]'
15195      model: 'Galaxy A7 (2016)'
15196    - regex: '(?:SAMSUNG-)?SM-A720[FMSX]'
15197      model: 'Galaxy A7 (2017)'
15198    - regex: '(?:SAMSUNG-)?SM-A750(?:GN|[CFGNX])'
15199      model: 'Galaxy A7 (2018)'
15200    - regex: '(?:SAMSUNG-)?SM-A71(?:5[FW])?(?:[);/ ]|$)'
15201      model: 'Galaxy A71'
15202    - regex: '(?:SAMSUNG-)?SM-A725[FM](?:[);/ ]|$)'
15203      model: 'Galaxy A72'
15204    - regex: '(?:SAMSUNG-)?SM-A716(?:U1|[0BUV])(?:[);/ ]|$)'
15205      model: 'Galaxy A71 5G'
15206    - regex: '(?:SAMSUNG-)?SM-A(?:530F|800[0FISXY])|SCV32'
15207      model: 'Galaxy A8'
15208    - regex: '(?:SAMSUNG-)?SM-G885[FSY]'
15209      model: 'Galaxy A8 Star'
15210    - regex: '(?:SAMSUNG-)?SM-A810(?:YZ|[FS])'
15211      model: 'Galaxy A8 (2016)'
15212    - regex: '(?:SAMSUNG-)?SM-(?:A8s|G887[0F])'
15213      model: 'Galaxy A8s'
15214    - regex: '(?:SAMSUNG-)?SM-A530[MNWX]'
15215      model: 'Galaxy A8 (2018)'
15216    - regex: '(?:SAMSUNG-)?SM-A730[FX]'
15217      model: 'Galaxy A8+ (2018)'
15218    - regex: '(?:SAMSUNG-)?SM-A900[0F]'
15219      model: 'Galaxy A9'
15220    - regex: 'SM-A9\[7\]'
15221      model: 'Galaxy A9 7'
15222    - regex: '(?:SAMSUNG-)?SM-A920[0FXN]'
15223      model: 'Galaxy A9 (2018)'
15224    - regex: '(?:SAMSUNG-)?SM-G885[08]'
15225      model: 'Galaxy A9 Star'
15226    - regex: '(?:SAMSUNG-)?SM-(?:A9 Pro|A910[0F]|G887N)'
15227      model: 'Galaxy A9 Pro'
15228    - regex: '(?:SAMSUNG-)?SM-A105[FGMN]'
15229      model: 'Galaxy A10'
15230    - regex: '(?:SAMSUNG-)?SM-A107[FM]'
15231      model: 'Galaxy A10s'
15232    - regex: '(?:SAMSUNG-)?SM-(?:S102DL|A102[NUW])'
15233      model: 'Galaxy A10e'
15234    - regex: '(?:SAMSUNG-)?SM-A115(?:A[PZ]|U1|[AFMUW])'
15235      model: 'Galaxy A11'
15236    - regex: '(?:SAMSUNG-)?SM-A12(?:5[FMU]|7F)'
15237      model: 'Galaxy A12'
15238    - regex: '(?:SAMSUNG-)?SM-(?:A205(?:U1|YN|[FGSWU])|S205DL)|SC-02M|SCV46'
15239      model: 'Galaxy A20'
15240    - regex: '(?:SAMSUNG-)?(?:SM-A215(?:DL|U1|[UW])|SC-42A|SCV49)(?:[);/ ]|$)'
15241      model: 'Galaxy A21'
15242    - regex: '(?:SAMSUNG-)?SM-A217[FMN](?:[);/ ]|$)'
15243      model: 'Galaxy A21s'
15244    - regex: '(?:SAMSUNG-)?SM-A202[FG]'
15245      model: 'Galaxy A20e'
15246    - regex: '(?:SAMSUNG-)?SM-A207[0FM]'
15247      model: 'Galaxy A20s'
15248    - regex: '(?:SAMSUNG-)?(?:SM-A305(?:[FGY]N|GT|[FGN])|SCV43)'
15249      model: 'Galaxy A30'
15250    - regex: '(?:SAMSUNG-)?SM-A307(?:FN|GN|GT|[FG])'
15251      model: 'Galaxy A30s'
15252    - regex: '(?:SAMSUNG-)?SM-A315[FGN](?:[);/ ]|$)'
15253      model: 'Galaxy A31'
15254    - regex: '(?:SAMSUNG-)?SM-A325'
15255      model: 'Galaxy A32'
15256    - regex: '(?:SAMSUNG-)?(?:SM-A326(?:BR|[BU])|SCG08)'
15257      model: 'Galaxy A32 5G'
15258    - regex: '(?:SAMSUNG-)?SM-A405(?:F[NM]|S)'
15259      model: 'Galaxy A40'
15260    - regex: '(?:SAMSUNG-)?SM-A305[018](?:[);/ ]|$)'
15261      model: 'Galaxy A40s'
15262    - regex: '(?:SAMSUNG-)?(?:SM-A415F|SC-41A|SCV48)(?:[);/ ]|$)'
15263      model: 'Galaxy A41'
15264    - regex: '(?:SAMSUNG-)?SM-A426[0BN](?:[);/ ]|$)'
15265      model: 'Galaxy A42 5G'
15266    - regex: '(?:SAMSUNG-)?SM-(?:A505(?:F[GN]|U1|YN|[FGNUWX])|S506DL|505FN)'
15267      model: 'Galaxy A50'
15268    - regex: '(?:SAMSUNG-)?SM-A5070(?:[);/ ]|$)'
15269      model: 'Galaxy A50s'
15270    - regex: '(?:SAMSUNG-)?SM-A507FN'
15271      model: 'Galaxy A50s'
15272    - regex: '(?:SAMSUNG-)?SM-(?:A515[FUW]|S515DL)'
15273      model: 'Galaxy A51'
15274    - regex: '(?:SAMSUNG-)?(?:SM-A516(?:U1|[0BNUV])|SC-54A|SCG07)'
15275      model: 'Galaxy A51 5G'
15276    - regex: '(?:SAMSUNG-)?SM-A705(?:GM|[MYF]N|[0FUWX])'
15277      model: 'Galaxy A70'
15278    - regex: '(?:SAMSUNG-)?SM-A707[0F]'
15279      model: 'Galaxy A70s'
15280    - regex: '(?:SAMSUNG-)?SM-A805[0FNX]'
15281      model: 'Galaxy A80'
15282    - regex: '(?:SAMSUNG-)?SM-A908[BN]'
15283      model: 'Galaxy A90'
15284    - regex: '(?:SAMSUNG-)?SM-A9080'
15285      model: 'Galaxy A90 5G'
15286    - regex: '(?:SAMSUNG-)?SM-F127G(?:[);/ ]|$)'
15287      model: 'Galaxy F12'
15288    - regex: '(?:SAMSUNG-)?SM-F415F(?:[);/ ]|$)'
15289      model: 'Galaxy F41'
15290    - regex: '(?:SAMSUNG-)?GT-I9301I'
15291      model: 'Galaxy S III Neo'
15292    - regex: '(?:SAMSUNG-)?SM-S120VL(?:[);/ ]|$)'
15293      model: 'Galaxy Luna'
15294    - regex: '(?:SAMSUNG-)?SM-(?:J100(?:FN|VPP|MU|[FGHMY])|S777C)'
15295      model: 'Galaxy J1'
15296    - regex: '(?:SAMSUNG-)?SM-J105[BFHYM]'
15297      model: 'Galaxy J1 Mini'
15298    - regex: '(?:SAMSUNG-)?SM-J106[BFHM]'
15299      model: 'Galaxy J1 mini Prime'
15300    - regex: '(?:SAMSUNG-)?SM-(?:J120(?:ZN|[AFGHMPTW])|J05H)'
15301      model: 'Galaxy J1 (2016)'
15302    - regex: '(?:SAMSUNG-)?SM-(?:J110[FGHLM]|J111[FM])'
15303      model: 'Galaxy J1 Ace'
15304    - regex: '(?:SAMSUNG-)?SM-J200[FGHMY]'
15305      model: 'Galaxy J2'
15306    - regex: '(?:SAMSUNG-)?SM-J200BT'
15307      model: 'Galaxy J2 Duos'
15308    - regex: '(?:SAMSUNG-)?SM-J260AZ'
15309      model: 'Galaxy J2 Pure'
15310    - regex: '(?:SAMSUNG-)?SM-(?:J260([AFGMY]|T1)|S260DL)'
15311      model: 'Galaxy J2 Core'
15312    - regex: '(?:SAMSUNG-)?SM-J(?:210F|250[FGMNY])'
15313      model: 'Galaxy J2 Pro'
15314    - regex: '(?:SAMSUNG-)?SM-(?:S367VL|S357BL)'
15315      model: 'Galaxy J3 Orbit'
15316    - regex: '(?:SAMSUNG-)?SM-J311(?:[09]|9S)'
15317      model: 'Galaxy J3 Pro'
15318    - regex: '(?:SAMSUNG-)?SM-S320VL(?:[);/ ]|$)'
15319      model: 'Galaxy J3 Sky'
15320    - regex: '(?:SAMSUNG-)?SM-S327VL(?:[);/ ]|$)'
15321      model: 'Galaxy J3 Luna Pro'
15322    - regex: '(?:SAMSUNG-)?SM-J327(?:T1|[ATW])(?:[);/ ]|$)'
15323      model: 'Galaxy J3 Prime'
15324    - regex: '(?:SAMSUNG-)?SM-J327(?:[FP]|R4)'
15325      model: 'Galaxy J3 Emerge'
15326    - regex: '(?:SAMSUNG-)?SM-J337R4(?:[);/ ]|$)'
15327      model: 'Galaxy J3 Aura'
15328    - regex: '(?:SAMSUNG-)?SM-J337T(?:[);/ ]|$)'
15329      model: 'Galaxy J3 Star'
15330    - regex: '(?:SAMSUNG-)?SM-J327V'
15331      model: 'Galaxy J3 Eclipse'
15332    - regex: '(?:SAMSUNG-)?SM-S337TL'
15333      model: 'Galaxy J3 Luna Pro'
15334    - regex: '(?:SAMSUNG-)?SM-J3109'
15335      model: 'Galaxy J3 (2015)'
15336    - regex: '(?:SAMSUNG-)?SM-(?:J300H|J320(?:[ZF]N|R4|W8|YZ|[AFGHMNPVY]))'
15337      model: 'Galaxy J3 (2016)'
15338    - regex: '(?:SAMSUNG-)?SM-(?:J330(?:FN|[08FGLN])|J327(?:R7|U))(?:[);/ ]|$)'
15339      model: 'Galaxy J3 (2017)'
15340    - regex: '(?:SAMSUNG-)?SM-J337(?:VPP|[AWPUV])(?:[);/ ]|$)'
15341      model: 'Galaxy J3 (2018)'
15342    - regex: '(?:SAMSUNG-)?SM-(?:G400[FG]|J400[FGM])'
15343      model: 'Galaxy J4'
15344    - regex: '(?:SAMSUNG-)?SM-J500(?:FN|N0|[78FGHMY])(?:[);/ ]|$)'
15345      model: 'Galaxy J5 (2015)'
15346    - regex: '(?:SAMSUNG-)?SM-(?:J510(?:[FGMU]N|FQ|[8FGHKLSY])|5108|G510H)(?:[);/ ]|$)'
15347      model: 'Galaxy J5 (2016)'
15348    - regex: '(?:SAMSUNG-)?SM-J530|lineage_j5y17lte'
15349      model: 'Galaxy J5 (2017)'
15350    - regex: '(?:SAMSUNG-)?SM-G570[0FMY]'
15351      model: 'Galaxy J5 Prime'
15352    - regex: '(?:SAMSUNG-)?SM-J600[FGLN]'  # 2018
15353      model: 'Galaxy J6'
15354    - regex: '(?:SAMSUNG-)?SM-J610[FG]'
15355      model: 'Galaxy J6+'
15356    - regex: '(?:SAMSUNG-)?SM-J410[FG]'
15357      model: 'Galaxy J4 Core'
15358    - regex: '(?:SAMSUNG-)?SM-J415(?:[FG]N|[FGN])'
15359      model: 'Galaxy J4+'
15360    - regex: '(?:SAMSUNG-)?SM-J7[01]0(?:FN|MN|[8FHKM])'
15361      model: 'Galaxy J7'
15362    - regex: '(?:SAMSUNG-)?SM-J700P'
15363      model: 'Galaxy J7 (2015)'
15364    - regex: '(?:SAMSUNG-)?SM-(?:J700(?:T1|T)|J710GN|J7109)'
15365      model: 'Galaxy J7 (2016)'
15366    - regex: '(?:SAMSUNG-)?SM-(?:J730[K]|J727(?:R4|[AFSU]))(?:[);/ ]|$)'
15367      model: 'Galaxy J7 (2017)'
15368    - regex: '(?:SAMSUNG-)?SM-J737(?:R4|T1|VPP|[APSTUV])(?:[);/ ]|$)'
15369      model: 'Galaxy J7 (2018)'
15370    - regex: '(?:SAMSUNG-)?SM-C710F'
15371      model: 'Galaxy J7+ (C7)'
15372    - regex: '(?:SAMSUNG-)?SM-G610[FMY]'
15373      model: 'Galaxy J7 Prime'
15374    - regex: '(?:SAMSUNG-)?SM-G611(?:FF|MT|M)'
15375      model: 'Galaxy J7 Prime 2'
15376    - regex: '(?:SAMSUNG-)?SM-G615F'
15377      model: 'Galaxy J7 Max'
15378    - regex: '(?:SAMSUNG-)?SM-(?:S727VL|S737TL)'
15379      model: 'Galaxy J7 Sky Pro'
15380    - regex: '(?:SAMSUNG-)?SM-(?:J7 Pro|J730(?:GM|[FG]))'
15381      model: 'Galaxy J7 Pro'
15382    - regex: '(?:SAMSUNG-)?SM-J701[FM]'
15383      model: 'Galaxy J7 Core' # also Galaxy J7 Nxt and Galaxy J7 Neo
15384    - regex: '(?:SAMSUNG-)?SM-J720[FM]'
15385      model: 'Galaxy J7 Duo'
15386    - regex: '(?:SAMSUNG-)?SM-(?:S767VL|S757BL)'
15387      model: 'Galaxy J7 Crown'
15388    - regex: '(?:SAMSUNG-)?SM-J727[PTV]'
15389      model: 'Galaxy J7 V'
15390    - regex: 'SM-J7\[7\]'
15391      model: 'Galaxy J7 7'
15392    - regex: '(?:SAMSUNG-)?SM-J810'
15393      model: 'Galaxy J8'
15394    - regex: 'SM-J8 Plus'
15395      model: 'Galaxy J8 Plus'
15396    - regex: 'SM-J8 Pro'
15397      model: 'Galaxy J8 Pro'
15398    - regex: 'SM-J9\[7\] Prime'
15399      model: 'Galaxy J9 7 Prime'
15400    - regex: 'SM-J9\[8\] Pro'
15401      model: 'Galaxy J9 8 Pro'
15402    - regex: '(?:SAMSUNG-)?SM-M015[FG]'
15403      model: 'Galaxy M01'
15404    - regex: '(?:SAMSUNG-)?SM-M013F'
15405      model: 'Galaxy M01 Core'
15406    - regex: '(?:SAMSUNG-)?SM-M017F'
15407      model: 'Galaxy M01s'
15408    - regex: '(?:SAMSUNG-)?SM-M025F'
15409      model: 'Galaxy M02s'
15410    - regex: '(?:SAMSUNG-)? SM-M022'
15411      model: 'Galaxy M02'
15412    - regex: '(?:SAMSUNG-)?SM-M105[FGMY]'
15413      model: 'Galaxy M10'
15414    - regex: '(?:SAMSUNG-)?SM-M107F'
15415      model: 'Galaxy M10s'
15416    - regex: '(?:SAMSUNG-)?SM-M115[FM]'
15417      model: 'Galaxy M11'
15418    - regex: '(?:SAMSUNG-)?SM-M127[FG]'
15419      model: 'Galaxy M12'
15420    - regex: '(?:SAMSUNG-)?SM-(?:M205(?:[FGMN]|FN)|M20)(?:[);/ ]|$)'
15421      model: 'Galaxy M20'
15422    - regex: '(?:SAMSUNG-)?SM-M215F'
15423      model: 'Galaxy M21'
15424    - regex: '(?:SAMSUNG-)?SM-M215G'
15425      model: 'Galaxy M21 (2021)'
15426    - regex: '(?:SAMSUNG-)?SM-(?:M307(?:FN|[0F])|M30s)'
15427      model: 'Galaxy M30s'
15428    - regex: '(?:SAMSUNG-)?SM-M305?'
15429      model: 'Galaxy M30'
15430    - regex: '(?:SAMSUNG-)?SM-M315F'
15431      model: 'Galaxy M31'
15432    - regex: '(?:SAMSUNG-)?SM-M325F'
15433      model: 'Galaxy M32'
15434    - regex: '(?:SAMSUNG-)?SM-M317F'
15435      model: 'Galaxy M31s'
15436    - regex: '(?:SAMSUNG-)?SM-M405'
15437      model: 'Galaxy M40'
15438    - regex: '(?:SAMSUNG-)?SM-M426'
15439      model: 'Galaxy M42 5G'
15440    - regex: '(?:SAMSUNG-)?SM-M515F'
15441      model: 'Galaxy M51'
15442    - regex: '(?:SAMSUNG-)?SM-M625'
15443      model: 'Galaxy M62'
15444    - regex: '(?:SAMSUNG-)?SM-W201([689])'
15445      model: 'Galaxy W201$1'
15446
15447    - regex: '(?:SAMSUNG-)?SM-W2015'
15448      model: 'Galaxy Golden 2'
15449    - regex: '(?:SAMSUNG-)?SM-G910S'
15450      model: 'Galaxy Round'
15451    - regex: '(?:SAMSUNG-)?SM-(?:G550(?:FY|T[12]?)|S550TL|G55[01]0|G5520)'
15452      model: 'Galaxy On5'
15453    - regex: '(?:SAMSUNG-)?SM-G5528'
15454      model: 'Galaxy On5 (2016)'
15455    - regex: '(?:SAMSUNG-)?SM-G600(?:FY|[0F])'
15456      model: 'Galaxy On7'
15457    - regex: '(?:SAMSUNG-)?SM-G610[0KLS]'
15458      model: 'Galaxy On7 (2016)'
15459    - regex: '(?:SAMSUNG-)?SM-G611[FKLS]'
15460      model: 'Galaxy On7 Prime'
15461    - regex: '(?:SAMSUNG-)?SM-C500[0X]'
15462      model: 'Galaxy C5'
15463    - regex: '(?:SAMSUNG-)?SM-C501[08]'
15464      model: 'Galaxy C5 Pro'
15465    - regex: '(?:SAMSUNG-)?SM-C700[0X]'
15466      model: 'Galaxy C7'
15467    - regex: '(?:SAMSUNG-)?SM-C701[08FX]'
15468      model: 'Galaxy C7 Pro'
15469    - regex: '(?:SAMSUNG-)?SM-C710[08]'
15470      model: 'Galaxy C8'
15471    - regex: '(?:SAMSUNG-)?SM-C900[08FY]'
15472      model: 'Galaxy C9 Pro'
15473    - regex: '(?:SAMSUNG-)?SM-Z130H'
15474      model: 'Galaxy Z1'
15475    - regex: '(?:SAMSUNG-)?SM-Z200[FMY]'
15476      model: 'Galaxy Z2'
15477    - regex: '(?:SAMSUNG-)?SM-Z300H'
15478      model: 'Galaxy Z3'
15479    - regex: '(?:SAMSUNG-)?SM-Z400[FY]'
15480      model: 'Galaxy Z4'
15481    - regex: '(?:SAMSUNG-)?SM-(?:G150(?:N[0KLS])?|G155S)(?:[);/ ]|$)'
15482      model: 'Galaxy Folder'
15483    - regex: '(?:SAMSUNG-)?(?:SM-G16(?:0N|[05]0?|5N))(?:[);/ ]|$)'
15484      model: 'Galaxy Folder 2'
15485    - regex: '(?:SAMSUNG-)?SM-J321AZ(?:[);/ ]|$)'
15486      model: 'Galaxy Sol'
15487    - regex: '(?:SAMSUNG-)?SM-J326AZ(?:[);/ ]|$)'
15488      model: 'Galaxy Sol 2'
15489    - regex: '(?:SAMSUNG-)?SM-J336AZ(?:[);/ ]|$)'
15490      model: 'Galaxy Sol 3'
15491    - regex: '(?:SAMSUNG-)?SM-J727AZ(?:[);/ ]|$)'
15492      model: 'Galaxy Halo'
15493    - regex: '(?:SAMSUNG-)?SM-J327AZ'
15494      model: 'Galaxy Amp Prime 2'
15495    - regex: '(?:SAMSUNG-)?SM-J337AZ'
15496      model: 'Galaxy Amp Prime 3 (2018)'
15497
15498    # explicit phablet models
15499    - regex: '(?:SAMSUNG-)?SM-(?:F900[0FUW]|F907[BN])|SCV44'
15500      model: 'Galaxy Fold'
15501      device: 'phablet'
15502    - regex: '(?:SAMSUNG-)?SM-F711'
15503      model: 'Galaxy Z Flip 3'
15504      device: 'phablet'
15505    - regex: '(?:SAMSUNG-)?SM-F916(?:U1|[0BNQUW])|SCG05'
15506      model: 'Galaxy Z Fold 2 5G'
15507      device: 'phablet'
15508    - regex: '(?:SAMSUNG-)?SM-F926'
15509      model: 'Galaxy Z Fold 3 5G'
15510      device: 'phablet'
15511    - regex: '(?:SAMSUNG-)?GT-I9060(?:[);/ ]|$)'
15512      model: 'Galaxy Grand Neo'
15513      device: 'phablet'
15514    - regex: '(?:SAMSUNG-)?GT-I9063'
15515      model: 'Galaxy Grand Neo Duos'
15516      device: 'phablet'
15517    - regex: '(?:SAMSUNG-)?GT-I9(?:080|128)'
15518      model: 'Galaxy Grand'
15519      device: 'phablet'
15520    - regex: '(?:SAMSUNG-)?GT-I9168'
15521      model: 'Galaxy Grand Neo+'
15522      device: 'phablet'
15523    - regex: '(?:SAMSUNG-)?GT-I9082'
15524      model: 'Galaxy Grand Duos'
15525      device: 'phablet'
15526    - regex: '(?:SAMSUNG-)?GT-N7000'
15527      model: 'Galaxy Note'
15528      device: 'phablet'
15529    - regex: '(?:SC-01G|SCL24)(?:[);/ ]|$)'
15530      model: 'Galaxy Note Edge'
15531      device: 'phablet'
15532    - regex: '(?:SAMSUNG-)?SM-N935[FSLK](?:[);/ ]|$)'
15533      model: 'Galaxy Note Fan Edition'
15534      device: 'phablet'
15535    - regex: '(?:SAMSUNG-)?(?:(?:GT-)?N7100|SCH-(?:I605|N719|R950)|SPH-L900)(?:[);/ ]|$)'
15536      model: 'Galaxy Note II'
15537      device: 'phablet'
15538    - regex: '(?:SAMSUNG-)?GT-N7105'
15539      model: 'Galaxy Note II LTE'
15540      device: 'phablet'
15541    - regex: '(?:SAMSUNG-)?SM-G710(?:2T|5[HL]|[25689KLS])?(?:[);/ ]|$)'
15542      model: 'Galaxy Grand 2'
15543      device: 'phablet'
15544    - regex: '(?:SAMSUNG-)?SM-G720(?:AX|N0|[02])(?:[);/ ]|$)'
15545      model: 'Galaxy Grand Max'
15546    - regex: '(?:SAMSUNG-)?SM-(?:G530(?:[689]W|[AF]Z|BT|MU|R[47]|[AFHMPTWY])|G531[FH]|S920L)(?:[);/ ]|$)'
15547      model: 'Galaxy Grand Prime'
15548      device: 'phablet'
15549    - regex: '(?:SAMSUNG-)?SM-G531(?:BT|[MY])(?:[);/ ]|$)'
15550      model: 'Galaxy Grand Prime VE Duos'
15551      device: 'phablet'
15552    - regex: '(?:SAMSUNG-)?SM-G532F(?:[);/ ]|$)'
15553      model: 'Galaxy Grand Prime Plus' # also Galaxy J2 Prime
15554      device: 'phablet'
15555    - regex: '(?:SAMSUNG-)?SM-G532MT(?:[);/ ]|$)'
15556      model: 'Galaxy J2 Prime (TV)'
15557      device: 'phablet'
15558    - regex: '(?:SAMSUNG-)?SM-G532[MG](?:[);/ ]|$)'
15559      model: 'Galaxy J2 Prime'
15560      device: 'phablet'
15561    - regex: '(?:SAMSUNG-)?SM-N7502(?:[);/ ]|$)'
15562      model: 'Galaxy Note 3 Neo Duos'
15563      device: 'phablet'
15564    - regex: '(?:SAMSUNG-)?SM-N750[05LQ]?'
15565      model: 'Galaxy Note 3 Neo'
15566      device: 'phablet'
15567    - regex: '(?:SAMSUNG-)?SM-N9002(?:[);/ ]|$)'
15568      model: 'Galaxy Note 3 Duos'
15569      device: 'phablet'
15570    - regex: '(?:SAMSUNG-)?SM-9005(?:[);/ ]|$)'
15571      model: 'Galaxy Note 3 LTE'
15572      device: 'phablet'
15573    - regex: '(?:SAMSUNG-)?(?:SM-N900(?:W8|[05689][VQ]?|[AKLPSTV])?|SCL22|SC-01F(?:[);/ ]|$))'
15574      model: 'Galaxy Note 3'
15575      device: 'phablet'
15576    - regex: '(?:SAMSUNG-)?SM-(?:N910|910U)|N9100(?:[);/ ]|$)'
15577      model: 'Galaxy Note 4'
15578      device: 'phablet'
15579    - regex: '(?:SAMSUNG-)?SM-N916[KLS]'
15580      model: 'Galaxy Note 4 LTE'
15581      device: 'phablet'
15582    - regex: '(?:SAMSUNG-)?SM-N915'
15583      model: 'Galaxy Note 4 Edge'
15584      device: 'phablet'
15585    - regex: '(?:SAMSUNG-)?SM-N920(?:R[467]|W8|[0ACFGIKLPSTVX])'
15586      model: 'Galaxy Note 5'
15587      device: 'phablet'
15588    - regex: '(?:SAMSUNG-)?SM-N9208'
15589      model: 'Galaxy Note 5 Duos'
15590      device: 'phablet'
15591    - regex: '(?:SAMSUNG-)?SM-G750(?:8Q|[9AFH])'
15592      model: 'Galaxy Mega 2'
15593      device: 'phablet'
15594    - regex: '(?:SAMSUNG-)?GT-I915[028]'
15595      model: 'Galaxy Mega 5.8'
15596      device: 'phablet'
15597    - regex: '(?:SAMSUNG-)?GT-I920[05]'
15598      model: 'Galaxy Mega 6.3'
15599      device: 'phablet'
15600    - regex: '(?:SAMSUNG-)?(?:SM-N930(?:R[467]|W8|[0AFKLPSTUVX])|SCV34)'
15601      model: 'Galaxy Note 7'
15602      device: 'phablet'
15603    - regex: '(?:SAMSUNG[- ])?SM-N950|SCV37|SC-01K'
15604      model: 'Galaxy Note 8'
15605      device: 'phablet'
15606    - regex: '(?:SAMSUNG[- ])?(?:SM-N960|SCV40|SC-01L)'
15607      model: 'Galaxy Note 9'
15608      device: 'phablet'
15609    - regex: '(?:SAMSUNG[- ])?SM-(?:N970(?:U1|W8|[089DFJKLSUWX])|N971N)'
15610      model: 'Galaxy Note 10'
15611      device: 'phablet'
15612    - regex: '(?:SAMSUNG[- ])?SM-N770[FX]'
15613      model: 'Galaxy Note 10 Lite'
15614      device: 'phablet'
15615    - regex: '(?:SAMSUNG[- ])?(?:SM-N975(?:U1|XU|[0CFUWX])|SM-N976[0BVNQU]|SC-01M|SCV45)'
15616      model: 'Galaxy Note 10+'
15617      device: 'phablet'
15618    - regex: '(?:SAMSUNG[- ])?(?:SM-N980(?:F/DS|F))'
15619      model: 'Galaxy Note 20'
15620      device: 'phablet'
15621    - regex: '(?:SAMSUNG[- ])?(?:SM-N981(?:B/DS|U1|[0BNUW]))'
15622      model: 'Galaxy Note 20 5G'
15623      device: 'phablet'
15624    - regex: '(?:SAMSUNG[- ])?(?:SM-N985(?:F/DS|F))'
15625      model: 'Galaxy Note 20 Ultra'
15626      device: 'phablet'
15627    - regex: '(?:SAMSUNG[- ])?(?:SM-N986(?:B/DS|U1|[0BNUW])|SC-53A|SCG06)'
15628      model: 'Galaxy Note 20 Ultra 5G'
15629      device: 'phablet'
15630
15631    - regex: '(?:SAMSUNG-)?SM-W750V'
15632      model: 'Ativ SE'
15633    - regex: '(?:SAMSUNG-)?SM-G310R5'
15634      model: 'GreatCall Touch 3'
15635
15636    # explicit feature phones
15637    - regex: '(?:SAMSUNG-)?GT-E2152'
15638      model: 'E2152'
15639      device: 'feature phone'
15640
15641    # explicit notebooks
15642    - regex: 'Chromebook 3'
15643      model: 'Chromebook 3'
15644      device: 'desktop'
15645
15646    # general detections
15647    - regex: '(?:SAMSUNG-)?(GT-(P|N8|N5)[0-9]+[a-z]?)'
15648      device: 'tablet'
15649      model: '$1'
15650    - regex: 'SC-02C'
15651      model: 'Galaxy S II'
15652    - regex: '(?:SAMSUNG-)?((?:SM-[TNP]|GT-P)[a-z0-9_\-]+)'
15653      device: 'tablet'
15654      model: '$1'
15655    - regex: '((?:SCH|SGH|SPH|SHV|SHW|GT|SM)-[a-z0-9_\-]+)'
15656      model: '$1'
15657    - regex: 'SMART-TV'
15658      device: 'tv'
15659      model: 'Smart TV'
15660    - regex: 'Galaxy ([^/;]+) Build'
15661      model: 'Galaxy $1'
15662    - regex: 'Galaxy ([a-z0-9]+)'
15663      model: 'Galaxy $1'
15664    - regex: 'SAMSUNG[\-][ ]?([a-z0-9]+[\-_][a-z0-9]+)'
15665      model: '$1'
15666    - regex: 'SAMSUNG;[ ]?([a-z0-9]+[\-_][a-z0-9]+)'
15667      model: '$1'
15668    - regex: 'SAMSUNG[ _/\-]?([a-z0-9\-]+)'
15669      model: '$1'
15670    - regex: 'SAMSUNG;[ ]?([a-z0-9 ]+)'
15671      model: '$1'
15672    - regex: 'SEC-([a-z0-9]+)'
15673      model: '$1'
15674    - regex: 'SAM-([a-z0-9]+)'
15675      model: 'SCH-$1'
15676    - regex: '(?:portalmmm|o2imode)/2\.0 ([SZ][a-z0-9]+)'
15677      model: '$1'
15678    - regex: 'sam([rua][0-9]+)'
15679      model: 'SCH-$1'
15680
15681# Sanei
15682Sanei:
15683  regex: '(?:8312D|G(60[25]|70[3568]G?|785|803)|N83(?:-2cpu)?|N91) Build'
15684  device: 'smartphone'
15685  models:
15686    - regex: 'N83'
15687      model: 'N83'
15688    - regex: 'N91'
15689      model: 'N91'
15690    - regex: '8312D'
15691      model: 'G101'
15692    - regex: 'G(60[25]|70[3568]G?|785|803)'
15693      model: 'G$1'
15694
15695# Selfix
15696Selfix:
15697  regex: 'SELFIX'
15698  device: 'smartphone'
15699  models:
15700    - regex: 'SELFIX_SLASH6'
15701      model: 'Slash 6'
15702    - regex: 'VOYAGER-V45'
15703      model: 'Voyager V45'
15704
15705# Sencor (sencor.cz or sencor.com)
15706Sencor:
15707  regex: 'Sencor|(?:ELEMENT[ _]?(?:(?:7|8|9\.7|10[ _]1)(?:[ _]?V[23])?|P[0-9]+|10.1 Q001)|10_1Q205)(?:[);/ ]|$)'
15708  device: 'tablet'
15709  models:
15710    # explicit tablet models
15711    - regex: '(?:SENCOR[ _])?Element (10\.1) (Q001)'
15712      model: 'Element $1" $2'
15713    - regex: '(?:SENCOR[ _])?ELEMENT[ _]?7[ _]?V3'
15714      model: 'Element 7 V3'
15715    - regex: '(?:SENCOR[ _])?ELEMENT[ _]?7[ _]?V2[ _]BASIC'
15716      model: 'Element 7 V2 Basic'
15717    - regex: '(?:SENCOR[ _])?ELEMENT[ _]?7[ _]?V2'
15718      model: 'Element 7 V2'
15719    - regex: '(?:SENCOR[ _])?ELEMENT[ _]8[ _]?V3'
15720      model: 'Element 8 V3'
15721    - regex: '(?:SENCOR[ _])?ELEMENT[ _]8[ _]?V2'
15722      model: 'Element 8 V2'
15723    - regex: '(?:SENCOR[ _])?ELEMENT8'
15724      model: 'Element 8'
15725    - regex: '(?:SENCOR[ _])?ELEMENT[ _]9\.7[ _]?V3'
15726      model: 'Element 9.7 V3'
15727    - regex: '(?:SENCOR[ _])?ELEMENT[ _]9\.7[ _]?V2'
15728      model: 'Element 9.7 V2'
15729    - regex: '(?:SENCOR[ _])?ELEMENT[ _]9\.7'
15730      model: 'Element 9.7'
15731    - regex: '(?:SENCOR[ _])?ELEMENT10[ _]1'
15732      model: 'Element 10.1'
15733    - regex: '(?:SENCOR[ _])?(7Q105)(?:[);/ ]|$)'
15734      model: '$1'
15735    - regex: '(10)_(1Q205)(?:[);/ ]|$)'
15736      model: '$1.$2'
15737
15738    - regex: '(?:SENCOR[ _])?ELEMENT[ _]?P([0-9]+)'
15739      model: 'Element P$1'
15740      device: 'smartphone'
15741
15742    - regex: 'Sencor[ _]([^;/]+) Build'
15743      model: '$1'
15744
15745# Senwa (senwamobile.com)
15746Senwa:
15747  regex: 'Senwa|(?:S\-?(?:471|7[12]5|6[01]5|915|905TL|1000|5018)|V705B|LS50F| LS50?|LS5518H|LS5718)(?:[);/ ]|$)'
15748  device: 'smartphone'
15749  models:
15750    - regex: 'S-?471(?:[);/ ]|$)'
15751      model: 'Jazz'
15752    - regex: 'S-?605(?:[);/ ]|$)'
15753      model: 'City'
15754    - regex: 'S-?905TL(?:[);/ ]|$)'
15755      model: 'Odin'
15756    - regex: 'S-?1000(?:[);/ ]|$)'
15757      model: 'Odin'
15758    - regex: 'S-?5018(?:[);/ ]|$)'
15759      model: 'Inizio'
15760    - regex: 'S-?(615|7[12]5|915)(?:[);/ ]|$)'
15761      model: 'S$1'
15762    - regex: 'V705B(?:[);/ ]|$)'
15763      model: 'V705B'
15764    - regex: 'LS50F(?:[);/ ]|$)'
15765      model: 'Evolution'
15766    - regex: ' LS50(?:[);/ ]|$)'
15767      model: 'Pegasus'
15768    - regex: ' LS5(?:[);/ ]|$)'
15769      model: 'Thor'
15770    - regex: 'LS5518H(?:[);/ ]|$)'
15771      model: 'Sparkly'
15772    - regex: 'LS5718(?:[);/ ]|$)'
15773      model: 'Diamond'
15774    - regex: 'Senwa[ _-]*([^;/]+)(?: Build|[;)])'
15775      model: '$1'
15776
15777# Sky or Sky Devices (skydevices.com)
15778Sky:
15779  regex: '(?:SKY|Elite|Fuego)[_ ][3-7]\.[05](?:[A-Z]{1,2})?|Elite[ _](?:E55|5_0T|M45|[45]T|45T|GO|M5Plus|T55|T[46]|[AB]5|5_5_Octa|[BC]55)|Platinum[_ ](?:5.0M|5\.5C|[56]\.[05]\+?|M5|[ABCM]4|[ACG]55|[ABDEFG]5|A57|P9|X|UNO|VIEW2|O|4\.0|4_0Plus)|PLATINUMVIEW|SKY[ _](?:55M|Pro_III)|SKYVISION|SKY Black'
15780  device: 'smartphone'
15781  models:
15782    - regex: 'Platinum[_ ](?:5\.0M|M5)'
15783      model: 'Platinum 5.0M'
15784    - regex: 'Platinum[_ ]5\.5C'
15785      model: 'Platinum 5.5C'
15786    - regex: 'Platinum[_ ]([56])\.([05])\+'
15787      model: 'Platinum $1.$2 Plus'
15788    - regex: 'Platinum_4_0Plus'
15789      model: 'Platinum 4.0 Plus'
15790    - regex: 'Platinum[ _]4\.0'
15791      model: 'Platinum 4.0'
15792    - regex: 'Platinum[_ ](P9) Pro(?:[);/ ]|$)'
15793      model: 'Platinum $1 Pro'
15794    - regex: 'Platinum[_ ]([ABCM]4|[ACG]55|[ABDEFG]5|A57|P9|X|UNO|O|6\.0)(?:[);/ ]|$)'
15795      model: 'Platinum $1'
15796    - regex: 'Platinum[_ ]?VIEW(2)?(?:[);/ ]|$)'
15797      device: 'tablet'
15798      model: 'Platinum View$1'
15799    - regex: 'SKYVISION'
15800      device: 'tablet'
15801      model: 'Vision'
15802    - regex: 'Elite_5_5_Octa'
15803      model: 'Elite 5.5 Octa'
15804    - regex: 'Elite M5Plus'
15805      model: 'Elite M5 Plus'
15806    - regex: 'Elite[ _](M45|Go|[45]T|T[46]|T55|[AB]5|[ABCE]55|45T)(?:[);/ ]|$)'
15807      model: 'Elite $1'
15808    - regex: 'Elite[_ ]([3-7])[\._]([05](?:[A-Z]{1,2})?\+?)'
15809      model: 'Elite $1.$2'
15810    - regex: 'Fuego[_ ]([3-7]\.[05](?:[A-Z]{1,2})?\+?)'
15811      model: 'Fuego $1'
15812    - regex: 'SKY Black'
15813      model: 'Black'
15814    - regex: 'SKY_Pro_III'
15815      model: 'Pro III'
15816    - regex: 'SKY 55M'
15817      model: '55M'
15818    - regex: 'SKY[_ ]([3-7]\.[05](?:[A-Z]{1,2})?)'
15819      model: '$1'
15820
15821# Skyworth
15822Skyworth:
15823  regex: 'Sky_?worth'
15824  device: 'tv'
15825  models:
15826    - regex: 'Sky_?worth ([^;/]+) Build'
15827      model: '$1'
15828
15829# Smartfren
15830Smartfren:
15831  regex: 'Smartfren|Androtab|Andromax|PD6D1J|AD682J|AD68[89]G|AD6B1H|AD9A1H|AD682H|AD683G'
15832  device: 'smartphone'
15833  models:
15834    # explicit tablet models
15835    - regex: 'S7 Build'
15836      model: 'Andromax Tab 7.0'
15837      device: 'tablet'
15838
15839    # explicit smartphone models
15840    - regex: 'PD6D1J'
15841      model: 'Andromax V3s'
15842    - regex: 'AD682J'
15843      model: 'Andromax T'
15844    - regex: 'AD688G'
15845      model: 'Andromax C2'
15846    - regex: 'AD689G'
15847      model: 'Andromax i3'
15848    - regex: 'AD682H'
15849      model: 'Andromax i3s'
15850    - regex: 'AD6B1H'
15851      model: 'Andromax G2 Hot'
15852    - regex: 'AD9A1H'
15853      model: 'Andromax G2'
15854    - regex: 'AD683G'
15855      model: 'Andromax I'
15856    - regex: 'New Andromax-i'
15857      model: 'New Andromax I'
15858
15859    - regex: 'Andromax[ _\-]([^/;]+) Build'
15860      model: 'Andromax $1'
15861    - regex: 'Andromax[ _\-]([a-z0-9]+)'
15862      model: 'Andromax $1'
15863    - regex: 'Smartfren[ _\-]([^/;\)]+)(?: Build|[/;\)])'
15864      model: '$1'
15865    - regex: '(Androtab[^/;]+) Build'
15866      model: '$1'
15867      device: 'tablet'
15868
15869# Smartisan
15870Smartisan:
15871  regex: '(SM(?:70[15]|[89]01|919)|OD10[35]|YQ60[1357]|DT2002C|DE106|DT190[12]A|O[CE]106|OS103|O[CS]105)[ /;\)]'
15872  device: 'smartphone'
15873  models:
15874    - regex: 'SM70[15]'
15875      model: 'T1'
15876    - regex: 'SM801'
15877      model: 'T2'
15878    - regex: 'SM901'
15879      model: 'M1'
15880    - regex: 'SM919'
15881      model: 'M1L'
15882    - regex: 'YQ60[1357]'
15883      model: 'U1'
15884    - regex: 'OD10[35]'
15885      model: 'Pro'
15886    - regex: 'OS105[ /;\)]'
15887      model: 'Pro 2'
15888    - regex: 'DE106[ /;\)]'
15889      model: 'R1'
15890    - regex: 'OE106[ /;\)]'
15891      model: 'Nut Pro 2s'
15892    - regex: 'OC10[56][ /;\)]'
15893      model: 'Nut 3'
15894    - regex: 'DT2002C[ /;\)]'
15895      model: 'Nut 2'
15896    - regex: 'DT190[12]A[ /;\)]'
15897      model: 'Nut Pro 3'
15898    - regex: 'OS103[ /;\)]'
15899      model: 'JianGuo Pro 2'
15900
15901# STF Mobile
15902STF Mobile:
15903  regex: '(?:Fractal|AERIAL PLUS|Origins Pro|BLOCK_MINI|BLOCK GO|BLOCK 3|SLAY II)(?:[);/ ]|$)'
15904  device: 'smartphone'
15905  models:
15906    - regex: 'Fractal'
15907      model: 'Fractal'
15908    - regex: 'Origins Pro'
15909      model: 'Origins Pro'
15910    - regex: 'AERIAL PLUS'
15911      model: 'Aerial Plus'
15912    - regex: 'BLOCK_MINI'
15913      model: 'Block Mini'
15914    - regex: 'BLOCK 3 mini'
15915      model: 'Block 3 Mini'
15916    - regex: 'BLOCK 3'
15917      model: 'Block 3'
15918    - regex: 'BLOCK GO'
15919      model: 'Block Go'
15920    - regex: 'SLAY II'
15921      model: 'Slay II'
15922
15923# STK
15924STK:
15925  regex: 'STK[_ ]'
15926  device: 'smartphone'
15927  models:
15928    - regex: 'STK[_ ]([^/;]+) Build'
15929      model: '$1'
15930    - regex: 'STK[_ ]([a-z0-9]+)'
15931      model: '$1'
15932
15933# Stonex
15934Stonex:
15935  regex: 'STX[ -]([^;/]+)|STONE EVO'
15936  device: 'smartphone'
15937  models:
15938    - regex: 'STX[ -]([^;/]+) Build'
15939      model: '$1'
15940    - regex: 'STX[ -]([a-z0-9_-]+)'
15941      model: '$1'
15942
15943# SuperSonic
15944SuperSonic:
15945  regex: '(SC-[0-9]+[a-z]+)'
15946  device: 'tablet'
15947  model: '$1'
15948
15949# Supra
15950Supra:
15951  regex: 'SUPRA|NVTAB 7.0 3G|M74C 3G'
15952  device: 'smartphone'
15953  models:
15954    - regex: 'SUPRA[ _]([^;/)]+)(?: Build|[;)])'
15955      device: 'tablet'
15956      model: '$1'
15957    - regex: '(NVTAB 7.0 3G|M74C 3G)'
15958      device: 'tablet'
15959      model: '$1'
15960
15961# Sumvision
15962Sumvision:
15963  regex: '(Cyclone [^/;]+) Build'
15964  device: 'tablet'
15965  model: '$1'
15966
15967# SunVan
15968SunVan:
15969  regex: 'SUNVAN[ _\-]'
15970  device: 'smartphone'
15971  models:
15972    - regex: 'SUNVAN[ _\-]?([^/;]+) Build'
15973      model: '$1'
15974    - regex: 'SUNVAN[ _\-]?([^);/ ]+)'
15975      model: '$1'
15976
15977# SWISSMOBILITY or Swiss Mobility
15978SWISSMOBILITY:
15979  regex: '(?:SCHR9GR|PRA(?:U8|100|557|507)|ZUR(?:722M|70016W?|700[RW]|805A))(?:[);/ ]|$)'
15980  device: 'smartphone'
15981  models:
15982    - regex: 'SCHR9GR'
15983      model: 'SCHON R9'
15984    - regex: 'PRA(U8|100|557|507)(?:[);/ ]|$)'
15985      model: 'PRA$1'
15986    - regex: 'ZUR722M'
15987      device: 'phablet'
15988      model: 'Z72 go'
15989
15990    - regex: 'ZUR(70016W?|700[RW]|805A)(?:[);/ ]|$)'
15991      device: 'tablet'
15992      model: 'ZUR$1'
15993
15994# Thomson
15995Thomson:
15996  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,'
15997  device: 'tablet'
15998  models:
15999    # already detected as manta device
16000    #- regex: 'MID1002'
16001    #  model: 'MID1002'
16002    - regex: 'Primo(7|8)'
16003      model: 'Primo $1'
16004    - regex: 'QM734-2'
16005      model: 'QM734-2'
16006    - regex: 'QM734-8G'
16007      model: 'QM734-8G'
16008    - regex: 'QM735-8G'
16009      model: 'QM735-8G'
16010    - regex: 'QM736-8G\(HD\)'
16011      model: 'QM736-8G (HD)'
16012    - regex: '(?<!\.)8950(?:[);/ ]|$)'
16013      model: '3G 8950'
16014    - regex: 'TEO(7RK|104G)(?:[);/ ]|$)'
16015      model: 'TEO$1'
16016
16017    - regex: '5014G(?:[);/ ]|$)'
16018      device: 'smartphone'
16019      model: '5014G'       # EGO-5014G
16020    - regex: 'Tlink([0-9]+)'
16021      device: 'smartphone'
16022      model: 'Tlink$1'
16023    - regex: 'Every([0-9]+)'
16024      device: 'smartphone'
16025      model: 'Every$1'
16026    - regex: 'Delight TH201'
16027      device: 'smartphone'
16028      model: 'Delight TH201'
16029    - regex: 'Friendly_TH101'
16030      device: 'smartphone'
16031      model: 'Friendly TH101'
16032    - regex: '((?:49|55)UC6306|55UC63|32HD55|40FD54|55UD63)'
16033      device: 'tv'
16034      model: '$1'
16035
16036# Tanix
16037Tanix:
16038  regex: '(?:TX5 MAX|TX[69]s)(?:[);/ ]|$)'
16039  device: 'tv'
16040  models:
16041    - regex: 'TX([69])s'
16042      model: 'TX$1s'
16043    - regex: 'TX5 MAX'
16044      model: 'TX5 Max'
16045
16046# pantech
16047Pantech:
16048  regex: 'Pantech|P[GN]-|PT-[a-z0-9]{3,}|(?<!Winmax )TX[T]?[0-9]+|IM-[a-z0-9]+(?:[);/ ]|$)|ADR910L'
16049  device: 'smartphone'
16050  models:
16051    # explicit smartphone models
16052    - regex: 'ADR910L'
16053      model: 'Star Q'
16054    - regex: 'IM-A870K'
16055      model: 'Vega Iron'
16056
16057    - regex: 'Pantech[ \-]?([a-z0-9]+)'
16058      model: '$1'
16059    - regex: 'Pantech_([a-z0-9\-]+)'
16060      model: '$1'
16061    - regex: '(P[GTN]-[a-z0-9]+)'
16062      model: '$1'
16063    - regex: '(TX[T]?[0-9]+)'
16064      model: '$1'
16065    - regex: '(IM-[a-z0-9]+)(?:[);/ ]|$)'
16066      model: '$1'
16067
16068# Ployer
16069Ployer:
16070  regex: 'MOMO([0-9]|[ ]?mini[ ]?(?:S|3GS)?)'
16071  device: 'tablet'
16072  models:
16073    - regex: 'MOMOminiS'
16074      model: 'MOMO mini S'
16075    - regex: 'momo mini 3GS'
16076      model: 'MOMO Mini 3GS'
16077    - regex: 'MOMO([0-9][^);/]*) Build'
16078      model: 'MOMO $1'
16079    - regex: 'MOMO([0-9][^);/]*)(?:[);/]|$)'
16080      model: 'MOMO $1'
16081
16082# Plum (plum-mobile.com)
16083Plum:
16084  regex: 'PLUM[ _]'
16085  device: 'smartphone'
16086  models:
16087    - regex: 'Z405'
16088      model: 'Gator 3'
16089    - regex: 'Z407'
16090      model: 'Axe 4'
16091    - regex: 'Z516'
16092      model: 'Compass'
16093    - regex: 'Z811'
16094      device: 'tablet'
16095      model: 'Optimax 11'
16096    - regex: 'Z709'
16097      device: 'tablet'
16098      model: 'Optimax 7'
16099    - regex: 'Z712'
16100      device: 'tablet'
16101      model: 'Optimax 12'
16102
16103# Polaroid
16104Polaroid:
16105  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)(?:[);/ ]|$)'
16106  device: 'smartphone'
16107  models:
16108    # explicit smartphone models
16109    - regex: 'P4005A'
16110      model: 'Turbo C4'
16111    - regex: 'P5005A'
16112      model: 'Turbo C5'
16113    - regex: 'P4006A'
16114      model: 'Turbo D4'
16115    - regex: 'PSPTD21NA'
16116      model: 'Turbo D2 Plus'
16117    - regex: 'P4526A'
16118      model: 'Turbo E'
16119    - regex: 'PSPC(505|550)'
16120      model: 'Cosmo $1'
16121    - regex: 'P5006A'
16122      model: 'Cosmo K'
16123    - regex: 'P5526A'
16124      model: 'Cosmo K Plus'
16125    - regex: 'PSPCK20NA'
16126      model: 'Cosmo K2'
16127    - regex: 'PSPCK21NA'
16128      model: 'Cosmo K2 Plus'
16129    - regex: 'P5026A'
16130      model: 'Cosmo L'
16131    - regex: 'PSPCL20A0'
16132      model: 'Cosmo L2'
16133    - regex: 'PSPCM20A0'
16134      model: 'Cosmo M2'
16135    - regex: 'P5046A'
16136      model: 'Cosmo P5s'
16137    - regex: 'P5525A'
16138      model: 'Cosmo Q5s'
16139    - regex: 'P5047A'
16140      model: 'Cosmo Z'
16141    - regex: 'PSPCZ20A0'
16142      model: 'Cosmo Z2'
16143    - regex: 'P5025A'
16144      model: 'L5s'
16145    - regex: 'PRO4611(?:PR201)?'
16146      model: 'Pro4611'
16147    - regex: 'PRO5023'
16148      model: 'Phantom 5'
16149    - regex: 'PROV400'
16150      model: 'Agate'
16151    - regex: 'PROV350'
16152      model: 'ProV350'
16153    - regex: 'SIGMA 5(?:[);/ ]|$)'
16154      model: 'Sigma 5'
16155    - regex: 'PRO([VG]?(?:[0-9]{3,}[a-z]*|[0-9]{2}[a-z]))'
16156      model: 'Pro$1'
16157    - regex: 'PSPT350'
16158      model: 'Turbo 350 Gris'
16159
16160    - regex: 'MIDS185PR'
16161      model: 'Pure 10.1"'
16162    - regex: '(MID(?:1014|0714|S145PXE|S747PX|4004JBL))'
16163      model: '$1'
16164      device: 'tablet'
16165
16166    - regex: '((?:PMID|MIDC)[0-9a-z]+)(?:[);/ ]|$)'
16167      model: '$1'
16168      device: 'tablet'
16169    - regex: '(P902/A900)(?:[);/ ]|$)'
16170      model: '$1'
16171      device: 'tablet'
16172    - regex: 'Polaroid'
16173      model: ''
16174      device: 'tablet'
16175
16176# PolyPad
16177PolyPad:
16178  regex: 'POLY ?PAD'
16179  device: 'tablet'
16180  models:
16181    - regex: 'POLY ?PAD[_ \.]([a-z0-9]+)(?:[);/ ]|$)'
16182      model: '$1'
16183    - regex: 'POLY ?PAD[_\.]([a-z0-9]+)'
16184      model: '$1'
16185
16186# Polytron
16187Polytron:
16188  regex: 'POLYTRON|W8480|W7430|PW1100S|W7550|W7531|W8570|R2401'
16189  device: 'smartphone'
16190  models:
16191    - regex: 'R2508'
16192      model: 'Rocket'
16193    - regex: 'POLYTRON[ _]R1500'
16194      model: 'Rocket Q-Five'
16195    - regex: 'R2401'
16196      model: 'Rocket 2X'
16197    - regex: 'POLYTRON[ _-]R2402'
16198      model: 'Rocket R2402'
16199    - regex: 'POLYTRON[ _-]R2403'
16200      model: 'Rocket R1'
16201    - regex: 'POLYTRON[ _-]R2406'
16202      model: 'Rocket R2'
16203    - regex: 'POLYTRON[ _-]R2407'
16204      model: 'Rocket R3'
16205    - regex: 'POLYTRON[ _-]R2452'
16206      model: 'Rocket S1'
16207    - regex: 'POLYTRON[ _-]R2457'
16208      model: 'Rocket S2'
16209    - regex: 'POLYTRON[ _-]R2501'
16210      model: 'Rocket T1'
16211    - regex: 'POLYTRON[ _-]R2507'
16212      model: 'Rocket T3'
16213    - regex: 'POLYTRON[ _-]R2509SE'
16214      model: 'Rocket T6 SE'
16215    - regex: 'POLYTRON[ _-]R2509'
16216      model: 'Rocket T6'
16217    - regex: 'POLYTRON[ _-]R250A'
16218      model: 'Rocket T7'
16219    - regex: 'POLYTRON[ _-]R2506'
16220      model: 'Rocket T4'
16221    - regex: 'POLYTRON[ _-](?:R3450|W1400)'
16222      model: 'Rocket Jetz'
16223    - regex: 'POLYTRON[ _-]R3500'
16224      model: 'Rocket Jetz 5.0'
16225    - regex: '4G450'
16226      model: 'Zap 5'
16227    - regex: 'W6500'
16228      model: 'Quadra Rocket'
16229    - regex: 'W7452'
16230      model: 'Quadra S2'
16231    - regex: 'W7550'
16232      model: 'Quadra V5'
16233    - regex: 'W8570'
16234      model: 'Quadra V7'
16235    - regex: 'POLYTRON[ _]L501'
16236      model: 'Rocket L501'
16237    - regex: 'POLYTRON[ _]P520'
16238      model: 'Prime 7S'
16239    - regex: 'POLYTRON[ _]P552'
16240      model: 'Prime 7 Pro'
16241    - regex: '4G500'
16242      model: 'Zap 6 Cleo'
16243    - regex: 'W8480'
16244      model: 'Crystal 4 W8480'
16245    - regex: 'W7531'
16246      model: 'Wizard V'
16247    - regex: 'W7430'
16248      model: 'Quadra Mini W7430'
16249    - regex: 'POLYTRON[ _]4G501'
16250      model: 'Zap 6 Posh'
16251    - regex: 'POLYTRON[ _]4G502'
16252      model: 'Zap 6 Power'
16253    - regex: 'POLYTRON[ _]4G503'
16254      model: 'Zap 6 Flaz'
16255    - regex: 'POLYTRON[_ ]?[ _]4G550'
16256      model: 'Zap 6 Note'
16257    - regex: 'POLYTRON[ _]4G551'
16258      model: 'Zap 6 Posh Note'
16259    - regex: 'PW1100S'
16260      model: 'PW1100S'
16261    - regex: 'Q2352'
16262      model: 'Q2352'
16263    - regex: 'POLYTRON[ _]T7800'
16264      model: 'Cosmica T7800'
16265      device: 'tablet'
16266    - regex: 'POLYTRON[ _]T7700'
16267      model: 'Rocket Pad'
16268      device: 'tablet'
16269
16270
16271# Positivo
16272Positivo:
16273  regex: 'YPY_S450'
16274  device: 'smartphone'
16275  models:
16276    - regex: 'YPY_S450'
16277      model: 'YPY S450'
16278
16279# Prestigio (prestigio.ru)
16280Prestigio:
16281  regex: 'Prestigio 5500 DUO|(?:PMP|PAP|PMT|PSP|PGPS)[0-9]+[a-z0-9_]+(?:[);/ ]|$)|Muze C3'
16282  device: 'tablet'
16283  models:
16284    # explicit smartphone models
16285    - regex: 'Prestigio 5500 DUO'    # PAP5500DUO
16286      model: 'MultiPhone 5500 Duo'
16287      device: 'smartphone'
16288    - regex: 'PSP(5517|550[578])DUO(?:[);/ ]|$)'
16289      model: 'MultiPhone $1 Duo'
16290      device: 'smartphone'
16291    - regex: 'PSP5551DUO'
16292      device: 'smartphone'
16293      model: 'Grace S5'
16294    - regex: 'PSP7590DUO'
16295      device: 'smartphone'
16296      model: 'Grace V7 LTE'
16297    - regex: 'PSP7551DUO'
16298      device: 'smartphone'
16299      model: 'Grace S7 LTE'
16300    - regex: 'PSP5470DUO'
16301      device: 'smartphone'
16302      model: 'Grace X5'
16303    - regex: 'PSP5530DUO'
16304      device: 'smartphone'
16305      model: 'Grace Z5'
16306    - regex: 'PSP3533DUO'
16307      device: 'smartphone'
16308      model: 'Grace Z3'
16309    - regex: 'PSP5515DUO'
16310      device: 'smartphone'
16311      model: 'Grace P5'
16312    - regex: 'PSP5552DUO'
16313      device: 'smartphone'
16314      model: 'Grace R5 LTE'
16315    - regex: 'PSP5506DUO'
16316      device: 'smartphone'
16317      model: 'Grace Q5'
16318    - regex: 'PSP5511DUO'
16319      device: 'smartphone'
16320      model: 'Grace M5 LTE'
16321    - regex: 'PSP7501DUO'
16322      device: 'smartphone'
16323      model: 'Grace R7'
16324    - regex: 'PSP7570DUO'
16325      device: 'smartphone'
16326      model: 'Grace P7 LTE'
16327    - regex: 'PSP7572DUO'
16328      device: 'smartphone'
16329      model: 'Grace B7'
16330    - regex: 'PSP3552DUO'
16331      device: 'smartphone'
16332      model: 'Muze H3'
16333    - regex: 'PSP3515DUO'
16334      device: 'smartphone'
16335      model: 'Muze M3 LTE'
16336    - regex: 'PSP3495DUO'
16337      device: 'smartphone'
16338      model: 'Muze V3 LTE'
16339    - regex: 'PSP5513DUO'
16340      device: 'smartphone'
16341      model: 'Muze D5 LTE'
16342    - regex: 'PSP5520DUO'
16343      device: 'smartphone'
16344      model: 'Muze B5'
16345    - regex: 'PSP5518DUO'
16346      device: 'smartphone'
16347      model: 'Muze X5 LTE'
16348    - regex: 'PSP5553DUO'
16349      device: 'smartphone'
16350      model: 'Muze F5 LTE'
16351    - regex: 'PSP5502DUO'
16352      device: 'smartphone'
16353      model: 'Muze A5'
16354    - regex: 'PSP5545DUO'
16355      device: 'smartphone'
16356      model: 'Muze E5 LTE'
16357    - regex: 'PSP7512DUO'
16358      device: 'smartphone'
16359      model: 'Muze E7 LTE'
16360    - regex: 'PSP3511DUO'
16361      device: 'smartphone'
16362      model: 'Muze G3 LTE'
16363    - regex: 'PSP7550DUO(?:[);/ ]|$)'
16364      device: 'smartphone'
16365      model: 'Muze G7 LTE'
16366    - regex: 'PSP7510DUO(?:[);/ ]|$)'
16367      device: 'smartphone'
16368      model: 'Muze C7 LTE'
16369    - regex: 'Muze C3(?:[);/ ]|$)'
16370      device: 'smartphone'
16371      model: 'Muze C3'
16372    - regex: 'PSP3512DUO(?:[);/ ]|$)'
16373      device: 'smartphone'
16374      model: 'Muze B3'
16375    - regex: 'PSP3532DUO'
16376      device: 'smartphone'
16377      model: 'Muze F3'
16378    - regex: 'PSP3470DUO'
16379      device: 'smartphone'
16380      model: 'Muze J3'
16381    - regex: 'PSP5524DUO'
16382      device: 'smartphone'
16383      model: 'Muze J5'
16384    - regex: 'PSP7511DUO'
16385      device: 'smartphone'
16386      model: 'Muze B7'
16387    - regex: 'PSP3423DUO'
16388      device: 'smartphone'
16389      model: 'Wize R3'
16390    - regex: 'PSP3471DUO'
16391      device: 'smartphone'
16392      model: 'Wize Q3 LTE'
16393    - regex: 'PSP3510DUO'
16394      device: 'smartphone'
16395      model: 'Wize G3'
16396    - regex: 'PSP3537DUO'
16397      device: 'smartphone'
16398      model: 'Wize NV3'
16399    - regex: 'PSP3528DUO'
16400      device: 'smartphone'
16401      model: 'Wize PX3'
16402    - regex: 'PSP3527DUO'
16403      device: 'smartphone'
16404      model: 'Wize NK3'
16405    - regex: 'PSP3468DUO'
16406      device: 'smartphone'
16407      model: 'Wize OK3'
16408    # explicit tables models
16409    - regex: 'PMT3277_3G'
16410      model: 'MultiPad Ranger 7.0" 3G'
16411    - regex: 'PMP7070C3G'
16412      model: 'MultiPad 4 Diamond 7.0" 3G'
16413    - regex: 'PGPS7799CIS08GBPG(?:[);/ ]|$)'
16414      model: 'Geo Vision Tour 3'
16415    - regex: 'PGPS7797(?:[);/ ]|$)'
16416      model: 'Geo Vision Tour 2'
16417    - regex: 'PMT(3118|3[12]01|3[12]57)[_ ]([34])G'
16418      model: 'Grace $1 $2G'
16419    - regex: 'PMT3287_3G'
16420      model: 'MultiPad Ranger 8.0 3G'
16421    - regex: 'PMT4238_4G'
16422      model: 'Q Pro'
16423    - regex: 'PMT(1177|3208|3618|31[357]1|1157|1196|3[10]96|3[17]61)[_ ]([34])GE?'
16424      model: 'MultiPad Wize $1 $2G'
16425    - regex: 'PMT(3231|4231)[_ ]([34])GE?'
16426      model: 'Muze $1 $2G'
16427    - regex: 'PSP7546DUO([ _][A-Z]{2})?'
16428      model: 'X Pro'
16429    - regex: 'PSP7610DUO([ _][A-Z]{2})?'
16430      model: 'S Max'
16431    # general detection
16432    - regex: '(PM[PT][0-9]+[a-z0-9_]+)(?:[);/ ]|$)'
16433      model: '$1'
16434    - regex: '((?:PAP|PSP)[0-9]+[a-z0-9_]+(?: DUO)?)(?:[);/ ]|$)'
16435      model: '$1'
16436      device: 'smartphone'
16437
16438# Sanyo
16439Sanyo:
16440  regex: 'Sanyo|MobilePhone[ ;]'
16441  device: 'feature phone'
16442  models:
16443    # explicit feature phone models
16444    - regex: 'SCP-?6750'
16445      model: 'Katana Eclipse X'
16446    - regex: 'SCP-?6760'
16447      model: 'Incognito'
16448    - regex: 'SCP-?6780'
16449      model: 'Innuendo'
16450
16451    - regex: 'SANYO[ /_-]([a-z0-9\-]+)'
16452      model: '$1'
16453    - regex: 'MobilePhone ([a-z0-9\-]+)'
16454      model: '$1'
16455
16456# Qilive
16457Qilive:
16458  regex: 'Qilive [0-9][^;/]*|Q(7S5[5]?IN4G|7T10INP|8T10IN|8S55IN4G2|8S[56]IN4G|9T9IN|9T(?:7|10)IN4G|9S55IN4G|10S5[37]IN4G|10S[56]IN4G|10S[56]IN4GR|9S5IN4G|6T7IN)'
16459  device: 'smartphone'
16460  models:
16461    - regex: 'Q7S5IN4G'
16462      model: 'Q7 5.0" 4G'
16463    - regex: 'Q7S55IN4G'
16464      model: 'Q7 5.5" 4G'
16465    - regex: 'Q8S55IN4G2'
16466      model: 'Q8 5.5" 4G'
16467    - regex: 'Q8S6IN4G'
16468      model: 'Q8 6.0" 4G'
16469    - regex: 'Q8S5IN4GP'
16470      model: 'Q8 5.1" 4G'
16471    - regex: 'Q9S5IN4G'
16472      model: 'Q9 5.0" 4G'
16473    - regex: 'Q9S55IN4G'
16474      model: 'Q9 5.5" 4G'
16475    - regex: 'Q10S53IN4G'
16476      model: 'Q10 5.3" 4G'
16477    - regex: 'Q10S57IN4G'
16478      model: 'Q10 5.7" 4G'
16479    - regex: 'Q10S5IN4G[R]?'
16480      model: 'Q10 5.0" 4G'
16481    - regex: 'Q10S6IN4G'
16482      model: 'Q10 6.0" 4G'
16483    - regex: 'Q6T7IN'
16484      model: 'Q6'
16485      device: 'tablet'
16486    - regex: 'Q7T10INP'
16487      model: 'Q7 10.1"'
16488      device: 'tablet'
16489    - regex: 'Q8T10IN'
16490      model: 'Q8 10.1"'
16491      device: 'tablet'
16492    - regex: 'Q9T7IN4G'
16493      model: 'Q9 7.0" 4G'
16494      device: 'tablet'
16495    - regex: 'Q9T9IN'
16496      model: 'Q9 9.0"'
16497      device: 'tablet'
16498    - regex: 'Q9T10IN4G'
16499      model: 'Q9 10.1" 4G'
16500      device: 'tablet'
16501    - regex: 'Qilive ([0-5][^;/]*) Build'
16502      model: '$1'
16503    - regex: 'Qilive ([0-5][^;/]*)/'
16504      model: '$1'
16505    - regex: 'Qilive ([6-9][^;/]*) Build'
16506      model: '$1'
16507      device: 'tablet'
16508    - regex: 'Qilive ([6-9][^;/]*)/'
16509      model: '$1'
16510      device: 'tablet'
16511
16512# QMobile (qmobile.com.pk)
16513QMobile:
16514  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 Pro 2|VITA S|i7i 2020)(?:[);/ ]|$)'
16515  device: 'smartphone'
16516  models:
16517    - regex: 'JazzX JS7 PRO'
16518      model: 'Jazz X JS7 Pro'
16519    - regex: 'JazzX JS(2|10)'
16520      model: 'Jazz X JS$1'
16521    - regex: 'Noir X1S'
16522      model: 'Noir X1S'
16523    - regex: 'A600(?:[);/ ]|$)'
16524      model: 'Noir A600'
16525    - regex: 'E2 Noir'
16526      model: 'E2 Noir'
16527    - regex: 'Hot Pro 2'
16528      model: 'Hot Pro 2'
16529    - regex: 'LT([57]00)[ _]PRO'
16530      model: 'Noir LT$1 Pro'
16531    - regex: 'LUNA PRO'
16532      model: 'Luna Pro'
16533    - regex: 'VITA S'
16534      model: 'Vita S'
16535    - regex: 'NICE S'
16536      model: 'Nice S'
16537    - regex: 'i7i 2020'
16538      model: 'i7i (2020)'
16539    - regex: 'Q Infinity PRO'
16540      model: 'Q Infinity Pro'
16541    - regex: 'Q Infinity E Lite'
16542      model: 'Q Infinity E Lite'
16543    - regex: 'Q Infinity ([FCB])'
16544      model: 'Q Infinity $1'
16545    - regex: '(LT950)(?:[);/ ]|$)'
16546      model: '$1'
16547    - regex: 'QMobile ENERGY (X[12])(?:[);/ ]|$)'
16548      model: 'Energy $1'
16549    # general detections
16550    - regex: 'QTab[ _-]([^;/]+) Build'
16551      model: '$1 Tab'
16552      device: 'tablet'
16553    - regex: 'QTab[ _-]([^;/)]+)(?:[;/)]|$)'
16554      model: '$1 Tab'
16555      device: 'tablet'
16556    - regex: '(?:QMobile|Q-Smart)[ _-]([^;/]+) Build'
16557      model: '$1'
16558    - regex: '(?:QMobile|Q-Smart)[ _-]([^;/)]+)(?:[;/)]|$)'
16559      model: '$1'
16560    - regex: 'Q Infinity'
16561      model: 'Q Infinity'
16562
16563# Maximus (maximus-mobile.com)
16564Maximus:
16565  regex: 'Maximus[ _]|(Noir X)(?:[);/ ]|$)'
16566  device: 'smartphone'
16567  models:
16568    - regex: '(?:Maximus[ _])?(Noir X|D1)(?:[);/ ]|$)'
16569      model: '$1'
16570    - regex: 'Maximus_(T2)'
16571      device: 'tablet'
16572      model: '$1'
16573
16574# Quantum
16575Quantum:
16576  regex: '(?:Quantum (?:Fit|UP|MUV (?:PRO|UP)|Go|Mini|V|You [2E])|Q-TITANO(_007i|-H2)?|Q-Pulse70M|Q-Wave(?:101|71M))(?:[);/ ]|$)'
16577  device: 'smartphone'
16578  models:
16579    - regex: 'Quantum (Fit|Go|Mini|V|You [2E])(?:[);/ ]|$)'
16580      model: '$1'
16581    - regex: 'Quantum MUV PRO(?:[);/ ]|$)'
16582      model: 'MUV Pro'
16583    - regex: 'Quantum MUV UP(?:[);/ ]|$)'
16584      model: 'MUV Up'
16585    - regex: 'Quantum UP(?:[);/ ]|$)'
16586      model: 'Up'
16587    - regex: 'Q-TITANO[ _-](BOS|X|M1|007i|H[12]|AK47)(?:[);/ ]|$)'
16588      model: 'Q-Titano $1'
16589    - regex: 'Q-Pulse70M(?:[);/ ]|$)'
16590      device: 'tablet'
16591      model: 'Q-Pulse 70M'
16592    - regex: 'Q-Wave(101|71M)(?:[);/ ]|$)'
16593      device: 'tablet'
16594      model: 'Q-Wave $1'
16595
16596# Quechua
16597Quechua:
16598  regex: 'Quechua Phone 5'
16599  device: 'smartphone'
16600  model: 'Quechua Phone 5'
16601
16602# Ramos
16603Ramos:
16604  regex: 'Ramos ?([^/);]+)(?: Build|[);])|MOS1(?:max)?(?:[);/ ]|$)'
16605  device: 'smartphone'
16606  models:
16607    - regex: '(?:Ramos[ _])?(R10|R9|M7)(?:[);/ ]|$)'
16608      model: '$1'
16609    - regex: '(MOS1)(?:[);/ ]|$)'
16610      model: '$1'
16611    - regex: 'MOS1max'
16612      model: 'MOS1 Max'
16613    - regex: 'Ramos ?([^/;]+)(?: Build|[);])'
16614      device: 'tablet'
16615      model: '$1'
16616
16617# Razer
16618Razer:
16619  regex: 'Phone 2'
16620  device: 'smartphone'
16621  model: 'Phone 2'
16622
16623# Sendo
16624Sendo:
16625  regex: 'Sendo([a-z0-9]+)'
16626  device: 'feature phone'
16627  model: '$1'
16628
16629# Turbo-X
16630Turbo-X:
16631  regex: 'Turbo-X|(?:Hive V 3G|Turbox_S3|Fire_II_WiFi)(?:[);/ ]|$)|Mercury(?!/)'
16632  device: 'smartphone'
16633  models:
16634    # specific smartphone models
16635    - regex: 'Turbox_S3'
16636      model: 'S3'
16637    - regex: 'Turbo-X_A2(?:[);/ ]|$)'
16638      model: 'A2'
16639    - regex: 'Turbo-X_e3(?:[);/ ]|$)'
16640      model: 'E3'
16641    - regex: 'Mercury(?!/)'
16642      model: 'Mercury'
16643
16644    # specific tablet models
16645    - regex: 'Turbo-X Ice(?:[);/ ]|$)'
16646      device: 'tablet'
16647      model: 'Ice'
16648    - regex: 'Hive V 3G(?:[);/ ]|$)'
16649      device: 'tablet'
16650      model: 'Hive V 3G'
16651    - regex: 'Fire_II_WiFi(?:[);/ ]|$)'
16652      device: 'tablet'
16653      model: 'Fire II WiFi'
16654
16655    # general detections
16656    - regex: 'Turbo-X Tablet([^;/]+) Build'
16657      device: 'tablet'
16658      model: 'Tablet$1'
16659    - regex: 'Turbo-X ([^;/]+) Build'
16660      model: '$1'
16661
16662# Turbo
16663Turbo:
16664  regex: 'Turbo[_ ]?(?:X5[_ ]?(?:Max|Black|Space|Hero)|X8|X6[ _]Z|X[ _]Ray)(?:[);/ ]|$)'
16665  device: 'smartphone'
16666  models:
16667    - regex: 'TurboX5Space(?:[);/ ]|$)'
16668      model: 'X5 Space'
16669    - regex: 'TurboX5Hero(?:[);/ ]|$)'
16670      model: 'X5 Hero'
16671    - regex: 'TurboX[ _]Ray(?:[);/ ]|$)'
16672      model: 'X Ray'
16673    - regex: 'Turbo[ _]?X5[ _]?Black(?:[);/ ]|$)'
16674      model: 'X5 Black'
16675    - regex: 'Turbo[ _]X5[ _]Max(?:[);/ ]|$)'
16676      model: 'X5 Max'
16677    - regex: 'Turbo[ _]X6[ _]Z(?:[);/ ]|$)'
16678      model: 'X6 Z'
16679    - regex: 'Turbo[ _]X8(?:[);/ ]|$)'
16680      model: 'X8'
16681
16682# Silent Circle
16683'Silent Circle':
16684  regex: 'Blackphone 2'
16685  device: 'smartphone'
16686  model: 'Blackphone 2'
16687
16688# Sigma or Sigma Mobile (sigmamobile.net)
16689Sigma:
16690  regex: 'Sigma(?!Designs)|(X[_-]Style[ _]?Tab[_ ]A([0-9]{2,3})|X[-_ ]?treme[-_ ]?PQ[0-9]{2}|X-Style_S5501)(?:[);/ ]|$)'
16691  device: 'smartphone'
16692  models:
16693    - regex: '(?:Sigma[ _])?X[-_ ]?treme[-_ ]?PQ([0-9]{2})(?:[);/ ]|$)'
16694      model: 'X-Treme PQ$1'
16695    - regex: 'X[_-]Style[ _]?Tab[_ ]A([0-9]{2,3})(?:[);/ ]|$)'
16696      model: 'X-Style Tab A$1'
16697      device: 'tablet'
16698    - regex: '(?:Sigma[ _])?X[-_ ]?Style[-_ ]S([0-9]+)(?:[);/ ]|$)'
16699      model: 'X-Style S$1'
16700
16701# Spice
16702Spice:
16703  regex: '(?<![\d];)Spice'
16704  device: 'smartphone'
16705  models:
16706    - regex: 'Spice[ _\-]?([^/;]+)(?:[\)]| Build)'
16707      model: '$1'
16708    - regex: 'Spice[ _\-]?([^/;]+)(?:/|$)'
16709      model: '$1'
16710
16711# Sharp (jp.sharp)
16712Sharp:
16713  regex: 'SHARP|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[125]|02)|[34]04SH|401SH|[45]02SH|306SH|[36]05SH|70[1246]SH|80[138]SH|90[1678]SH|50[3679]SH|SHL2[25]|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[123]|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|IS05|SH-(?:53A|51B|H01)|LP-01|FS8014)(?:[);/ ]|$)'
16714  device: 'smartphone'
16715  models:
16716    # explicit smartphone models
16717    - regex: '506SH(?:[);/ ]|$)'
16718      model: 'Aquos Xx3'
16719    - regex: '603SH(?:[);/ ]|$)'
16720      model: 'Aquos Xx3 Mini'
16721    - regex: '50[23]SH(?:[);/ ]|$)'
16722      model: 'Aquos Xx2'
16723    - regex: '[34]04SH(?:[);/ ]|$)'
16724      model: 'Aquos Xx'
16725    - regex: '606SH(?:[);/ ]|$)'
16726      model: 'Aquos ea'
16727    - regex: '507SH(?:[);/ ]|$)'
16728      model: 'Android One'
16729    - regex: 'S3-SH(?:[);/ ]|$)'
16730      model: 'Android One S3'
16731    - regex: 'S5-SH(?:[);/ ]|$)'
16732      model: 'Android One S5'
16733    - regex: 'S7-SH(?:[);/ ]|$)'
16734      model: 'Android One S7'
16735    - regex: 'X4-SH(?:[);/ ]|$)'
16736      model: 'Android One X4'
16737    - regex: 'SH-M04(?:[);/ ]|$)'
16738      model: 'Aquos SH-M04'
16739    - regex: 'SH-M05(?:[);/ ]|$)'
16740      model: 'Aquos Sense Lite'
16741    - regex: 'SH-M07(?:[);/ ]|$)'
16742      model: 'Aquos Sense Plus'
16743    - regex: 'A003SH(?:[);/ ]|$)'
16744      model: 'Aquos Sense 4 Basic'
16745    - regex: 'SH-41A(?:[);/ ]|$)'
16746      model: 'Aquos Sense 4'
16747    - regex: '(?:SHG03|A004SH|SH-M17|SH-53A)(?:[);/ ]|$)'
16748      model: 'Aquos Sense 5G'
16749    - regex: 'SH-D01(?:[);/ ]|$)'
16750      model: 'Aquos D10'
16751    - regex: 'SH-M12(?:-y)?(?:[);/ ]|$)'
16752      model: 'Aquos S3 Dual SIM'
16753    - regex: 'SH-H01(?:[);/ ]|$)'
16754      model: 'Aquos Zeta'
16755    - regex: '(?:SH-[MZ]10|801SH)(?:[);/ ]|$)'
16756      model: 'Aquos Zero'
16757    - regex: '(?:SH-M13|906SH|SH-01M)(?:[);/ ]|$)'
16758      model: 'Aquos Zero 2'
16759    - regex: '(?:SHG02|A002SH)(?:[);/ ]|$)'
16760      model: 'Aquos Zero 5G Basic'
16761    - regex: 'SH-Z01(?:[);/ ]|$)'
16762      model: 'Aquos S2 (C10)'
16763    - regex: '(?:SH-02E|SH-01[GH]|SH-04H)(?:[);/ ]|$)'
16764      model: 'Aquos Phone Zeta'
16765    - regex: 'SH-01FDQ(?:[);/ ]|$)'
16766      model: 'Dragon Quest'
16767    - regex: 'SH-?06D(?:[);/ ]|$)'
16768      model: 'Aquos Phone SH-06D'
16769    - regex: '(SHL2[25]|SH-M01)(?:[);/ ]|$)'
16770      model: 'Aquos Phone $1'
16771    - regex: 'SH-L02(?:[);/ ]|$)'
16772      model: 'Aquos L2'
16773    - regex: '(?:605SH|SH-03J|SHV39)(?:[);/ ]|$)'
16774      model: 'Aquos R'
16775    - regex: '(?:605SH|SH-03J|SHV39)(?:[);/ ]|$)'
16776      model: 'Aquos R'
16777    - regex: '(?:701SH|SHV41|SH-M06)(?:[);/ ]|$)'
16778      model: 'Aquos R Compact'
16779    - regex: '(?:SH-M09|SHV42|706SH|SH-03K)(?:[);/ ]|$)'
16780      model: 'Aquos R2'
16781    - regex: '803SH(?:[);/ ]|$)'
16782      model: 'Aquos R2 Compact'
16783    - regex: '(?:908SH|SHG01|SH-M14)(?:[);/ ]|$)'
16784      model: 'Aquos R5G'
16785    - regex: 'SH-M16(?:[);/ ]|$)'
16786      model: 'Aquos S4 Plus'
16787    - regex: 'SH-M15(?:[);/ ]|$)'
16788      model: 'Aquos S4 SIM'
16789    - regex: 'SH-C02(?:[);/ ]|$)'
16790      model: 'Aquos V'
16791    - regex: '(SHF3[1-4])(?:[);/ ]|$)'
16792      model: 'Aquos K $1'
16793    - regex: '704SH(?:[);/ ]|$)'
16794      model: 'Simple Smartphone 4'
16795    - regex: '(?:SH-02J|SH-04G)(?:[);/ ]|$)'
16796      model: 'Aquos Ever'
16797    - regex: 'SH-02H(?:[);/ ]|$)'
16798      model: 'Aquos Compact'
16799    - regex: '30[56]SH(?:[);/ ]|$)'
16800      model: 'Aquos Crystal'
16801    - regex: '402SH(?:[);/ ]|$)'
16802      model: 'Aquos Crystal X'
16803    - regex: '403SH(?:[);/ ]|$)'
16804      model: 'Aquos Crystal 2'
16805    - regex: '509SH(?:[);/ ]|$)'
16806      model: 'Aquos 3'
16807    - regex: 'NP601SH(?:[);/ ]|$)'
16808      model: 'Aquos 2'
16809    - regex: '(?:SHV40|SHV3[24])(?:_u)?(?:[);/ ]|$)'
16810      model: 'Aquos S'
16811    - regex: '702SH(?:[);/ ]|$)'
16812      model: 'Aquos S Basic'
16813    - regex: 'SHV3[183](?:[);/ ]|$)'
16814      model: 'Aquos S Mini'
16815    - regex: '(?:FS8010|SH-M08|SHV43(?:-u)?|SH-01[KL])(?:[);/ ]|$)'
16816      model: 'Aquos S2'
16817    - regex: 'FS8016(?:[);/ ]|$)'
16818      model: 'Aquos S2 Plus'
16819    - regex: '(?:SHV46|SH-R?M11|901SH)(?:[);/ ]|$)'
16820      model: 'Aquos S3 Plus'
16821    - regex: '(?:SHV44|808SH|SH-04L|SH-03G)(?:[);/ ]|$)'
16822      model: 'Aquos R3'
16823    - regex: '(?:FS8032|FS8015|SH-02M|SHV45(?:-U)?)(?:[);/ ]|$)'
16824      model: 'Aquos S3'
16825    - regex: 'FS8018(?:[);/ ]|$)'
16826      model: 'Aquos S3 Mini'
16827    - regex: '(?:SHV48|907SH)(?:[);/ ]|$)'
16828      model: 'Aquos S3 Basic'
16829    - regex: 'SH-RM12(?:[);/ ]|$)'
16830      model: 'Aquos S3 Lite'
16831    - regex: 'SH-RM15(?:[);/ ]|$)'
16832      model: 'Aquos S4 Lite'
16833    - regex: 'SH-51A(?:[);/ ]|$)'
16834      model: 'Aquos R5G'
16835    - regex: '(?:SH-51B|A101SH)(?:[);/ ]|$)'
16836      model: 'Aquos R6'
16837    - regex: 'SHV3[57](?:_u)?(?:[);/ ]|$)'
16838      model: 'Aquos U'
16839    - regex: 'TG-L900S(?:[);/ ]|$)'
16840      model: 'Luna S'
16841    - regex: 'SH-A01(?:[);/ ]|$)'
16842      model: 'B10'
16843    - regex: '(?:FS8002|SHV47)(?:[);/ ]|$)'
16844      model: 'Z2'
16845    - regex: 'FS8009(?:[);/ ]|$)'
16846      model: 'Z3'
16847    - regex: 'FS8014(?:[);/ ]|$)'
16848      model: 'R1'
16849    - regex: 'FS8028(?:[);/ ]|$)'
16850      model: 'R1S'
16851    - regex: 'SHV36(?:[);/ ]|$)'
16852      model: 'Basio 2'
16853    - regex: 'SW001SH(?:[);/ ]|$)'
16854      model: 'Star Wars'
16855    - regex: 'SH-RM02'
16856      model: 'Aquos SH-RM02'
16857    - regex: '401SH'
16858      model: 'Aquos 401SH'
16859    - regex: '(DM-01[JH])'
16860      model: 'Disney Mobile $1'
16861    - regex: 'A001SH'
16862      model: 'Simple Sumaho 5'  # (Simple Smartphone 5)
16863    - regex: 'NP80[56]SH'
16864      model: 'Aquos Keitai 3'
16865    - regex: 'NP807SH'
16866      model: 'Aquos Keitai 10'
16867    - regex: 'NP501SH'
16868      model: 'Aquos Keitai'
16869    - regex: 'LP-01(?:[);/ ]|$)'
16870      model: 'Leica Leitz Phone 1'
16871
16872    # explicit tablet models
16873    - regex: 'SH-08E(?:[);/ ]|$)'
16874      device: 'tablet'
16875      model: 'Sharp Aquos Pad'
16876    - regex: 'd-41A(?:[);/ ]|$)'
16877      device: 'tablet'
16878      model: 'dtab d-41A'
16879
16880    - regex: '(LC-(?:[0-9]{2})[a-z0-9]+)(?:[);/ ]|$)'
16881      device: 'tv'
16882      model: '$1'
16883    - regex: 'SHARP-AQUOS|AQUOSBrowser'
16884      device: 'tv'
16885      model: 'Aquos Net Plus'
16886    - regex: 'SHARP[ \-]([a-z0-9\-]+)'
16887      model: '$1'
16888    - regex: '(?:SHARP|SBM)([a-z0-9]+)'
16889      model: '$1'
16890    - regex: '(SH-?[0-9]+[a-z]?|IS05)(?:[);/ ]|$)'
16891      model: '$1'
16892
16893# Simply or SIMPLE Mobile (simplemobile.com)
16894Simply:
16895  regex: '(NP602SI)(?:[);/ ]|$)'
16896  device: 'smartphone'
16897  model: '$1'
16898
16899# Softbank
16900Softbank:
16901  regex: 'Softbank|J-PHONE'
16902  device: 'smartphone'
16903  models:
16904    - regex: 'Softbank/[12]\.0/([a-z0-9]+)'
16905      model: '$1'
16906    - regex: '([a-z0-9]+);Softbank;'
16907      model: '$1'
16908    - regex: 'J-PHONE/[0-9]\.[0-9]/([a-z0-9\-]+)'
16909      model: '$1'
16910
16911# Sonim
16912Sonim:
16913  regex: 'Sonim[ -]|XP(?:[67]7|88)00(?:[);/ ]|$)'
16914  device: 'smartphone'
16915  models:
16916    - regex: 'Sonim-XP3400'
16917      model: 'XP3400'
16918      device: 'feature phone'
16919    - regex: 'XP6700(?:[);/ ]|$)'
16920      model: 'XP6700'
16921    - regex: 'XP7700(?:[);/ ]|$)'
16922      model: 'XP7700'
16923    - regex: 'XP8800(?:[);/ ]|$)'
16924      model: 'XP8'
16925
16926# Star
16927Star:
16928  regex: 'N(9[5678]00|8800|9000|9977)(?:[);/ ]|$)'
16929  device: 'smartphone'
16930  models:
16931    - regex: 'N9000'
16932      model: 'Note 3'
16933
16934    - regex: 'N(9[5678]00|8800|9977)(?:[);/ ]|$)'
16935      model: 'N$1'
16936
16937# Starmobile (starmobile.ph)
16938Starmobile:
16939  regex: '(?:Starmobile (?:Play (?:Neo|Spark|GO|Click))|UP[_ ](?:Sense|Rave|Groove|Prime|Selfie|Xtreme|XL|Max)|PLAY (?:Club|Style))(?:[);/ ]|$)'
16940  device: 'smartphone'
16941  models:
16942    - regex: 'Starmobile PLAY GO(?:[);/ ]|$)'
16943      model: 'Play Go'
16944    - regex: '(?:Starmobile )?Play (Neo|Spark|Click|Club|Style)(?:[);/ ]|$)'
16945      model: 'Play $1'
16946    - regex: 'UP[_ ](Sense|Rave|Groove|Prime|Selfie|Xtreme|XL|Max)(?:[);/ ]|$)'
16947      model: 'UP $1'
16948
16949
16950# Toshiba
16951Toshiba:
16952  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)(?:[);/ ]|$)'
16953  device: 'smartphone'
16954  models:
16955    # explicit smartphone models
16956    - regex: 'T-01C'
16957      model: 'Regza T-01C'
16958    - regex: 'T-01D'
16959      model: 'Regza T-01D'
16960    - regex: 'T-02D'
16961      model: 'Regza T-02D'
16962    - regex: 'IS04'
16963      model: 'Regza IS04'
16964    - regex: 'IS11T'
16965      model: 'Regza IS11T'
16966
16967    # explicit tablet models
16968    - regex: 'AT7-C'
16969      model: 'Excite'
16970      device: 'tablet'
16971    - regex: 'AT1S0'
16972      model: 'Regza AT1S0'
16973      device: 'tablet'
16974    - regex: 'AT300SE'
16975      model: 'Regza AT300SE'
16976      device: 'tablet'
16977    - regex: 'AT500a'
16978      model: 'Regza AT500a'
16979      device: 'tablet'
16980    - regex: 'AT(100|200|270|300|330|374|400|470|500|503|570|703|830)'
16981      model: 'Regza AT$1'
16982      device: 'tablet'
16983    - regex: 'AT10([PL])E-A'
16984      model: 'Excite AT10$1-A'
16985      device: 'tablet'
16986    - regex: 'AT10-A'
16987      model: 'Excite AT10-A'
16988      device: 'tablet'
16989
16990    - regex: 'AFTKMST12'
16991      device: 'tv'
16992      model: '43LF711U20'
16993    - regex: 'AFTBAMR311'
16994      device: 'tv'
16995      model: '43LF421U19'
16996    - regex: 'TSBNetTV/'
16997      device: 'tv'
16998      model: ''
16999    - regex: 'Toshiba[ /_\-]?([a-z0-9_ \-]+) Build'
17000      model: '$1'
17001    - regex: 'Toshiba[ /_\-]?([a-z0-9_\-]+)'
17002      model: '$1'
17003    - regex: 'portalmmm/[12].0 (TS[a-z0-9 ]+)'
17004      model: '$1'
17005
17006# Ok
17007Ok:
17008  regex: 'AFTWI001(?:[);/ ]|$)'
17009  device: 'tv'
17010  model: '4K (2020)'
17011
17012# Anker (https://www.anker.com/)
17013Anker:
17014  regex: 'AFTMM(?:[);/ ]|$)'
17015  device: 'tv'
17016  model: 'Nebula Soundbar'
17017
17018# Kindle
17019Amazon:
17020  regex: '(?:AFT[ABMNRST]|AFTSSS?|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'
17021  device: 'tablet'
17022  models:
17023    - regex: 'AFTA'
17024      model: 'Fire TV Cube (Gen 1)'
17025      device: 'tv'
17026    - regex: 'AFTR'
17027      model: 'Fire TV Cube (Gen 2)'
17028      device: 'tv'
17029    - regex: 'AFTN'
17030      model: 'Fire TV (Gen 3)'
17031      device: 'tv'
17032    - regex: 'AFTB'
17033      model: 'Fire TV (Gen 1)'
17034      device: 'tv'
17035    - regex: 'AFTSSS'
17036      model: 'Fire TV Stick (Gen 3)'
17037      device: 'tv'
17038    - regex: 'AFTSS'
17039      model: 'Fire TV Stick Lite (Gen 1)'
17040      device: 'tv'
17041    - regex: 'AFT[MST]'
17042      model: 'Fire TV stick'
17043      device: 'tv'
17044    - regex: '.+FIRETVSTICK2018'
17045      model: 'Fire TV Stick 4K'
17046      device: 'tv'
17047    - regex: 'KFFOWI(?:[);/ ]|$)'
17048      model: 'Fire 7"'
17049    - regex: 'KFMUWI(?:[);/ ]|$)'
17050      model: 'Fire 7" (2019)'
17051    - regex: 'KFTT(?:[);/ ]|$)'
17052      model: 'Kindle Fire HD'
17053    - regex: 'KFJWI(?:[);/ ]|$)|Amazon Jem'
17054      model: 'Kindle Fire HD 8.9" WiFi'
17055    - regex: 'KFJWA(?:[);/ ]|$)'
17056      model: 'Kindle Fire HD 8.9" 4G'
17057    - regex: 'KFSOWI(?:[);/ ]|$)|Amazon Tate'
17058      model: 'Kindle Fire HD 7" WiFi'
17059    - regex: 'KFTHWI(?:[);/ ]|$)'
17060      model: 'Kindle Fire HDX 7" WiFi'
17061    - regex: 'KFTHWA(?:[);/ ]|$)'
17062      model: 'Kindle Fire HDX 7" 4G'
17063    - regex: 'KFAPWI(?:[);/ ]|$)'
17064      model: 'Kindle Fire HDX 8.9" WiFi'
17065    - regex: 'KFAPWA(?:[);/ ]|$)'
17066      model: 'Kindle Fire HDX 8.9" 4G'
17067    - regex: 'KFARWI(?:[);/ ]|$)'
17068      model: 'Fire HD 6'
17069    - regex: 'KFASWI(?:[);/ ]|$)'
17070      model: 'Fire HD 7'
17071    - regex: 'KFAUWI(?:[);/ ]|$)'
17072      model: 'Fire HD 7 (2017)'
17073    - regex: 'KFMEWI(?:[);/ ]|$)'
17074      model: 'Fire HD 8 (2015)'
17075    - regex: 'KFGIWI(?:[);/ ]|$)'
17076      model: 'Fire HD 8 (2016)'
17077    - regex: 'KFDOWI(?:[);/ ]|$)'
17078      model: 'Fire HD 8 (2017)'
17079    - regex: 'KFKAWI(?:[);/ ]|$)'
17080      model: 'Fire HD 8 (2018)'
17081    - regex: 'KFONWI(?:[);/ ]|$)'
17082      model: 'Fire HD 8 (2020)'
17083    - regex: 'KFSAWI(?:[);/ ]|$)'
17084      model: 'Fire HDX 8.9'
17085    - regex: 'KFSAWA(?:[);/ ]|$)'
17086      model: 'Fire HDX 8.9 4G'
17087    - regex: 'KFTBWI(?:[);/ ]|$)'
17088      model: 'Fire HD 10'
17089    - regex: 'KFSUWI(?:[);/ ]|$)'
17090      model: 'Fire HD 10 (2017)'
17091    - regex: 'KFMAWI(?:[);/ ]|$)'
17092      model: 'Fire HD 10 (2019)'
17093    - regex: 'KFTRWI(?:[);/ ]|$)'
17094      model: 'Fire HD 10 (2021)'
17095    - regex: 'KFTRPWI(?:[);/ ]|$)'
17096      model: 'Fire HD 10 Plus (2021)'
17097    - regex: 'SD4930UR'
17098      model: 'Fire Phone'
17099      device: 'smartphone'
17100
17101    - regex: 'KFOT|Kindle Fire|Silk/\d+\.\d+'
17102      model: 'Kindle Fire'
17103    - regex: 'Kindle'
17104      model: 'Kindle'
17105
17106    - regex: 'Echo/1|AEO(?:BC|KN)(?:[);/ ]|$)'
17107      model: 'Echo'
17108      device: 'smart speaker'
17109    - regex: 'AEOC[HW](?:[);/ ]|$)'
17110      model: 'Echo Show 8'
17111      device: 'smart speaker'
17112    - regex: 'AlexaMediaPlayer'
17113      model: 'Alexa'
17114      device: 'smart speaker'
17115
17116# Symphony
17117Symphony:
17118  regex: 'SYMPHONY[ \_]([a-z0-9]+)|(?:roar[ _](?:V20|V78|E80|V150))|roarV95|ZVIII(?:[);/ ]|$)'
17119  device: 'smartphone'
17120  models:
17121    - regex: 'ZVIII'
17122      model: 'ZVIII'
17123    - regex: 'roar[ _]?(V20|E80|V78|V95|V150)(?:[);/ ]|$)'
17124      model: 'Roar $1'
17125    - regex: 'SYMPHONY[ \_]([a-z0-9]+)'
17126      model: '$1'
17127
17128# Helio
17129Helio:
17130  regex: 'Helio (S60|S5)(?:[);/ ]|$)'
17131  device: 'smartphone'
17132  model: '$1'
17133
17134# Syrox
17135Syrox:
17136  regex: '(SYX-(?:T70[04]|T10[12]))(?:[);/ ]|$)'
17137  device: 'tablet'
17138  model: '$1'
17139
17140# Qtek
17141Qtek:
17142  regex: 'Qtek[ _]?([a-z0-9]+)'
17143  device: 'smartphone'
17144  model: '$1'
17145
17146# Q-Touch or Q.Touch or QTouch
17147Q-Touch:
17148  regex: '( Q09|QS701|Q05A)(?:[);/ ]|$)'
17149  device: 'smartphone'
17150  model: '$1'
17151
17152# G-Touch or GTouch
17153G-Touch:
17154  regex: 'GTouch[_ ]|(?:Stella (?:XS?|Omega))(?:[);/ ]|$)'
17155  device: 'smartphone'
17156  models:
17157    - regex: 'Stella (XS?|Omega)'
17158      model: 'Stella $1'
17159    - regex: 'GTouch[_ ]STELLA'
17160      model: 'Stella'
17161
17162# T-Mobile
17163T-Mobile:
17164  regex: 'T-Mobile[ _][a-z0-9 ]+|(?:REVVLRY|REVVL V\+ 5G|REVVL 2(?: PLUS)?|5062[ZW]|5007[ZW])(?:[);/ ]|$)'
17165  device: 'smartphone'
17166  models:
17167    - regex: '5062[ZW]'
17168      model: 'REVVL 4 Plus'
17169    - regex: '5007[ZW]'
17170      model: 'REVVL 4'
17171    - regex: 'REVVL 2 PLUS'
17172      model: 'REVVL 2 Plus'
17173    - regex: 'REVVL V\+ 5G'
17174      model: 'REVVL V+ 5G'
17175    - regex: 'REVVLRY'
17176      model: 'REVVL Plus'
17177    - regex: 'REVVL 2(?:[);/ ]|$)'
17178      model: 'REVVL 2'
17179    - regex: 'T-Mobile[ _]([a-z0-9_ ]+) Build'
17180      model: '$1'
17181    - regex: 'T-Mobile[ _]([a-z0-9_ ]+)'
17182      model: '$1'
17183
17184# TB Touch
17185'TB Touch':
17186  regex: 'Ignis [89]'
17187  device: 'tablet'
17188  models:
17189    - regex: 'Ignis ([89])'
17190      model: 'Ignis $1'
17191
17192# Teclast (teclast.com)
17193Teclast:
17194  regex: 'Teclast|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)_(?:ROW|EEA)|T10\(E3C[56]\)|P10S\(N4H5\)|98\(M1E[45789]\)|98\(M3E3\)|X10 \(M1D3\)|M89 Pro|M40\(N9H3\)|M40SE_EEA'
17195  device: 'tablet'
17196  models:
17197    - regex: 'Tbook[_ -]([^;/]+) Build'
17198      model: 'Tbook $1'
17199    - regex: 'T10\(E3C[56]\)'
17200      model: 'T10'
17201    - regex: 'X10 \(M1D3\)'
17202      model: 'X10'
17203    - regex: 'P10S(?:\(N4H5\)|_(?:ROW|EEA))(?:[);/ ]|$)'
17204      model: 'P10S'
17205    - regex: 'P20HD_(?:ROW|EEA)'
17206      model: 'P20HD'
17207    - regex: 'P10[_ ]HD_(?:ROW|EEA)'
17208      model: 'P10HD'
17209    - regex: 'M30_Pro[_ ](?:ROW|EEA)'
17210      model: 'M30 Pro'
17211    - regex: 'M20_4G'
17212      model: 'M20 4G'
17213    - regex: 'M89 Pro'
17214      model: 'M89 Pro'
17215    - regex: 'TLA002'
17216      model: 'M30 4G'
17217    - regex: 'TLA016'
17218      model: 'M16'
17219    - regex: 'M40\(N9H3\)'
17220      model: 'M40'
17221    - regex: 'M40SE'
17222      model: 'M40 SE'
17223    - regex: 'T40 Plus_(?:ROW|EEA)'
17224      model: 'T40 Plus'
17225    - regex: '(P80[Xh]|T30|M40)[_ ](?:ROW|EEA)'
17226      model: '$1'
17227    - regex: '98\(M1E[45789]\)|98\(M3E3\)'
17228      model: 'TPad 98 10.1" 4G'
17229    - regex: 'X80 Power\(B2N4\)(?:[);/ ]|$)'
17230      model: 'X98 Power'
17231    - regex: 'X98 Air III(?:[);/ ]|$)'
17232      model: 'X98 Air III'
17233    - regex: 'X98 Air II\(HG5N\)(?:[);/ ]|$)'
17234      model: 'X98 Air II'
17235    - regex: 'Teclast[_ -]([^;/]+) Build'
17236      model: '$1'
17237
17238# Tecno Mobile
17239Tecno Mobile:
17240  regex: 'Tecno|Phantom6|Phantom6-Plus|DP7C Pro-SGA1'
17241  device: 'smartphone'
17242  models:
17243    - regex: 'Phantom6-Plus'
17244      model: 'Phantom 6 Plus'
17245    - regex: 'Phantom6'
17246      model: 'Phantom 6'
17247    - regex: 'TECNO[ _]AB7(?:[);/ ]|$)'
17248      model: 'Phantom 9'
17249    - regex: 'TECNO[ _]AX8(?:[);/ ]|$)'
17250      model: 'Phantom 8'
17251    - regex: 'TECNO-W3'
17252      model: 'W3'
17253    - regex: 'TECNO[ _]F4 Pro(?:[);/ ]|$)'
17254      model: 'F4 Pro'
17255    - regex: 'TECNO[ _]ID5b(?:[);/ ]|$)'
17256      model: 'Camon i2X'
17257    - regex: 'TECNO[ _]ID6(?:[);/ ]|$)'
17258      model: 'Camon iClick 2'
17259    - regex: 'TECNO[ _]IN2(?:[);/ ]|$)'
17260      model: 'Camon iSky'
17261    - regex: 'TECNO[ _]KB3(?:[);/ ]|$)'
17262      model: 'Camon iSky 3'
17263    - regex: 'Tecno[ _]7C(?:[);/ ]|$)'
17264      model: 'DroidPad 7C'
17265      device: 'tablet'
17266    - regex: 'Tecno[ _]P701(?:[);/ ]|$)'
17267      model: 'DroidPad 7D'
17268      device: 'tablet'
17269    - regex: 'Tecno[ _]P701(?:[);/ ]|$)'
17270      model: 'DroidPad 7D'
17271      device: 'tablet'
17272    - regex: 'DP7C Pro-SGA1(?:[);/ ]|$)'
17273      model: 'DroidPad 7C Pro'
17274      device: 'tablet'
17275    - regex: 'Tecno[ _]P703(?:[);/ ]|$)'
17276      model: 'DroidPad 7F'
17277      device: 'tablet'
17278    - regex: 'Tecno[ _]P704a(?:[);/ ]|$)'
17279      model: 'DroidPad 7G'
17280      device: 'tablet'
17281    - regex: 'TECNO[ _]DP10A Pro(?:[);/ ]|$)'
17282      model: 'DroidPad 10A Pro'
17283      device: 'tablet'
17284    - regex: 'TECNO[ _]P904(?:[);/ ]|$)'
17285      model: 'DroidPad 10D 4G'
17286      device: 'tablet'
17287    - regex: 'Tecno[ _]CB7[j]?'
17288      model: 'Camon i4'
17289    - regex: 'Tecno[- _]C9(?:[);/ ]|$)'
17290      model: 'Camon C9'
17291    - regex: 'Tecno[ _]CF7k?(?:[);/ ]|$)'
17292      model: 'Camon 11'
17293    - regex: 'Tecno[ _]CF8(?:[);/ ]|$)'
17294      model: 'Camon 11 Pro'
17295    - regex: 'Tecno[ _]CC7S?(?:[);/ ]|$)'
17296      model: 'Camon 12'
17297    - regex: 'Tecno[ _](?:CC6|KC3)(?:[);/ ]|$)'
17298      model: 'Camon 12 Air'
17299    - regex: 'Tecno[ _-]CD7(?:[);/ ]|$)'
17300      model: 'Camon 15'
17301    - regex: 'Tecno[ _-]CD6S?(?:[);/ ]|$)'
17302      model: 'Camon 15 Air'
17303    - regex: 'Tecno[ _-]CD8j(?:[);/ ]|$)'
17304      model: 'Camon 15 Premier'
17305    - regex: 'Tecno[ _-]CD8(?:[);/ ]|$)'
17306      model: 'Camon 15 Pro'
17307    - regex: 'Tecno[ _-]CE9h(?:[);/ ]|$)'
17308      model: 'Camon 16'
17309    - regex: 'Tecno[ _-]CE9(?:[);/ ]|$)'
17310      model: 'Camon 16 Premier'
17311    - regex: 'Tecno[ _-]CE8(?:[);/ ]|$)'
17312      model: 'Camon 16 Pro'
17313    - regex: 'Tecno[ _-]CD6j(?:[);/ ]|$)'
17314      model: 'Camon 16 S'
17315    - regex: 'Tecno[ _-]CE7j(?:[);/ ]|$)'
17316      model: 'Camon 16 SE'
17317    - regex: 'Tecno[ _-]CG6j?(?:[);/ ]|$)'
17318      model: 'Camon 17'
17319    - regex: 'Tecno[ _-]CG8(?:[);/ ]|$)'
17320      model: 'Camon 17 Pro'
17321    - regex: 'Tecno[ _-]CG7n?(?:[);/ ]|$)'
17322      model: 'Camon 17P'
17323    - regex: 'Tecno[ _-]CA6(?:[);/ ]|$)'
17324      model: 'Camon CM'
17325    - regex: 'Tecno[ _-]CA7(?:[);/ ]|$)'
17326      model: 'Camon X'
17327    - regex: 'Tecno[ _-]CA8(?:[);/ ]|$)'
17328      model: 'Camon X Pro'
17329    - regex: 'Tecno[ _-]Camon CX(?:[);/ ]|$)'
17330      model: 'Camon CX'
17331    - regex: 'TECNO[ _]F3(?:[);/ ]|$)'
17332      model: 'Pop 1'
17333    - regex: 'TECNO[ _]B1(?:[);/ ]|$)'
17334      model: 'Pop 2'
17335    - regex: 'TECNO[ _]SA2S(?:[);/ ]|$)'
17336      model: 'Pop 2 Mini'
17337    - regex: 'TECNO[ _]B1[fg](?:[);/ ]|$)'
17338      model: 'Pop 2F'
17339    - regex: 'TECNO[ _]RA8(?:[);/ ]|$)'
17340      model: 'Pop 2S'
17341    - regex: 'TECNO[ _]KB2j(?:[);/ ]|$)'
17342      model: 'Pop 2S Pro'
17343    - regex: 'TECNO[ _]BA2(?:[);/ ]|$)'
17344      model: 'Pop 2 Plus'
17345    - regex: 'TECNO[ _]B1p(?:[);/ ]|$)'
17346      model: 'Pop 2 Power'
17347    - regex: 'TECNO[ _]RB8S(?:[);/ ]|$)'
17348      model: 'Pop 2X Plus'
17349    - regex: 'TECNO[ _]RB6S(?:[);/ ]|$)'
17350      model: 'Pop 2X Air'
17351    - regex: 'TECNO[ _]RB7S(?:[);/ ]|$)'
17352      model: 'Pop 2X'
17353    - regex: 'TECNO[ _]SC7S(?:[);/ ]|$)'
17354      model: 'Pop 2 Air'
17355    - regex: 'TECNO[ _]BB2(?:[);/ ]|$)'
17356      model: 'Pop 3'
17357    - regex: 'TECNO[ _]BC2c?(?:[);/ ]|$)'
17358      model: 'Pop 4'
17359    - regex: 'TECNO[ _]BC3?(?:[);/ ]|$)'
17360      model: 'Pop 4 Pro'
17361    - regex: 'TECNO[ _]BC1(?:[);/ ]|$)'
17362      model: 'Pop 4 Air'
17363    - regex: 'TECNO[ _]BC1s(?:[);/ ]|$)'
17364      model: 'Pop 4 LTE'
17365    - regex: 'TECNO[ _]BD2p(?:[);/ ]|$)'
17366      model: 'Pop 5'
17367    - regex: 'Tecno[ _]KA7O?(?:[);/ ]|$)'
17368      model: 'Spark 2'
17369    - regex: 'Tecno[ _]LB6?(?:[);/ ]|$)'
17370      model: 'Spark 2 Youth'
17371    - regex: 'Tecno[ _]KB7j?(?:[);/ ]|$)'
17372      model: 'Spark 3'
17373    - regex: 'Tecno[ _]KB8?(?:[);/ ]|$)'
17374      model: 'Spark 3 Pro'
17375    - regex: 'Tecno[ _](?:KC8S?|KC2j?)(?:[);/ ]|$)'
17376      model: 'Spark 4'
17377    - regex: 'Tecno[ _]KC6S?(?:[);/ ]|$)'
17378      model: 'Spark 4 Air'
17379    - regex: 'Tecno[ _]BB4k(?:[);/ ]|$)'
17380      model: 'Spark 4 Lite'
17381    - regex: 'Tecno[ _]KD6(?:[);/ ]|$)'
17382      model: 'Spark 5 Air'
17383    - regex: 'Tecno[ _]KD7[hS](?:[);/ ]|$)'
17384      model: 'Spark 5'
17385    - regex: 'Tecno[ _]KD7(?:[);/ ]|$)'
17386      model: 'Spark 5 Pro'
17387    - regex: 'TECNO[ _]KE7(?:[);/ ]|$)'
17388      model: 'Spark 6'
17389    - regex: 'TECNO[ _]KE6j?(?:[);/ ]|$)'
17390      model: 'Spark 6 Air'
17391    - regex: 'TECNO[ _]KE5[jk]?(?:[);/ ]|$)'
17392      model: 'Spark 6 Go'
17393    - regex: 'TECNO[ _]KF6[nmjk](?:[);/ ]|$)'
17394      model: 'Spark 7'
17395    - regex: 'TECNO[ _]KF8(?:[);/ ]|$)'
17396      model: 'Spark 7 Pro'
17397    - regex: 'TECNO[ _]KF7j(?:[);/ ]|$)'
17398      model: 'Spark 7P'
17399    - regex: 'TECNO[ _]KC1h(?:[);/ ]|$)'
17400      model: 'Spark Go'
17401    - regex: 'TECNO[ _]KC1(?:[);/ ]|$)'
17402      model: 'Spark Air'
17403    - regex: 'TECNO[ _]KA6(?:[);/ ]|$)'
17404      model: 'Spark Youth'
17405    - regex: 'TECNO[ _]KA9(?:[);/ ]|$)'
17406      model: 'Spark CM'
17407    - regex: 'Tecno[ _]DP8D(?:[);/ ]|$)'
17408      model: 'DroidPad 8D'
17409      device: 'tablet'
17410    - regex: 'TECNO[ _]LA7 Pro(?:[);/ ]|$)'
17411      model: 'Pouvoir 2 Pro'
17412    - regex: 'TECNO[ _]LA7(?:[);/ ]|$)'
17413      model: 'Pouvoir 2'
17414    - regex: 'TECNO[ _]LA6(?:[);/ ]|$)'
17415      model: 'Pouvoir 1'
17416    - regex: 'TECNO[ _]LB7(?:[);/ ]|$)'
17417      model: 'Pouvoir 3'
17418    - regex: 'TECNO[ _]LC6a?(?:[);/ ]|$)'
17419      model: 'Pouvoir 3 Air'
17420    - regex: 'Tecno[ _]LB8a?'
17421      model: 'Pouvoir 3 Plus'
17422    - regex: 'TECNO[ _]LC7S?(?:[);/ ]|$)'
17423      model: 'Pouvoir 4'
17424    - regex: 'TECNO[ _]LC8(?:[);/ ]|$)'
17425      model: 'Pouvoir 4 Pro'
17426    - regex: 'Tecno[ _-]J8(?:[);/ ]|$)'
17427      model: 'Boom J8'
17428    - regex: 'Tecno[ _-]RA7(?:[);/ ]|$)'
17429      model: 'R7 4G'
17430    - regex: 'Tecno[ _-]W3 Pro(?:[);/ ]|$)'
17431      model: 'W3 Pro'
17432    - regex: 'Tecno[ _-]WX3P(?:[);/ ]|$)'
17433      model: 'WX3 Pro'
17434    - regex: 'TECNO S9'
17435      device: 'phablet'
17436      model: 'S9'
17437    - regex: 'TECNO[ _]LD7j?(?:[);/ ]|$)'
17438      device: 'phablet'
17439      model: 'Pova'
17440    - regex: 'TECNO[ _]LE7n?(?:[);/ ]|$)'
17441      device: 'phablet'
17442      model: 'Pova 2'
17443    - regex: 'Tecno (F2) ?LTE'
17444      model: '$1 LTE'
17445
17446    - regex: 'TECNO[ _-]?(T611)(?:[);/ ]|$)'
17447      device: 'feature phone'
17448      model: '$1'
17449
17450    - regex: 'Tecno[ _]([^;/]+)(?: Build|[);])'
17451      model: '$1'
17452    - regex: 'Tecno[ _-]?([a-z0-9_\-]+)'
17453      model: '$1'
17454
17455# TechPad (techpad.mx)
17456TechPad:
17457  regex: 'Tech[ _]?pad|XTAB[ _-]|(?:3G_16|Dual C1081HD|S813G|NOTE[_ ]4CAM)(?:[);/ ]|$)'
17458  device: 'tablet'
17459  models:
17460    - regex: 'S813G'
17461      model: 'S813G'
17462    - regex: 'TechPad10QC'
17463      model: '10QC'
17464    - regex: 'TechPad_10xx'
17465      model: '10XX'
17466    - regex: 'TechPad703'
17467      model: '703'
17468    - regex: 'TechPad[_ ](10Y|9x|i700)'
17469      model: '$1'
17470    - regex: 'TechPad[_ ]3Gx'
17471      model: '3Gx'
17472    - regex: '3G_16'
17473      model: '3G-16'
17474    - regex: 'Dual C1081HD'
17475      model: 'XTAB C1081HD'
17476    - regex: 'XTAB[ _-]([^/;]+) Build'
17477      model: 'XTAB $1'
17478    - regex: 'NOTE 4CAM'
17479      device: 'smartphone'
17480      model: 'Note 4 Cam'
17481    - regex: 'Tech_Pad_Kaios_One_3G'
17482      device: 'feature phone'
17483      model: 'Kaios One 3G'
17484    - regex: 'Tech ?pad[ _-]([^/;)]+)(?: Build|[;)])'
17485      model: '$1'
17486      device: 'smartphone'
17487
17488# Tesco
17489Tesco:
17490  regex: 'Hudl (?:[^/;]+)(?: Build|[;)])|W032i-C3(?:[);/ ]|$)'
17491  device: 'tablet'
17492  models:
17493    - regex: 'Hudl ([^/;]+)(?: Build|[;)])'
17494      model: 'Hudl $1'
17495    - regex: 'W032i-C3(?:[);/ ]|$)'
17496      model: 'Op3n Dott'
17497
17498# teXet
17499teXet:
17500  regex: 'Texet|(NaviPad [^/;]*) Build|TM-(?:1046|1058|1057|1067|3000|3200R|3500|4003|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)?'
17501  device: 'tablet'
17502  models:
17503    - regex: 'TM-9749'
17504      model: 'X-pad Plus 7.1 3G'
17505    - regex: 'TM-9746'
17506      model: 'X-pad Plus 7 3G'
17507    - regex: 'TM-8051'
17508      model: 'X-pad Force 8i 3G'
17509    - regex: 'TM-1058'
17510      model: 'X-Force 10 3G'
17511    - regex: 'TM-8048'
17512      model: 'X-pad Force 8 3G'
17513    - regex: '(NaviPad [^/;]*) Build'
17514      model: '$1'
17515    - regex: 'TM-7055HD'
17516      model: 'NaviPad 3G'
17517    - regex: 'TM-9758'
17518      model: 'X-pad Style 10.0"'
17519    - regex: 'X-pad SHINE 8.1 3G'
17520      model: 'X-pad Shine 8.1" 3G'
17521    - regex: 'X-pad QUAD 10 3G'
17522      model: 'X-pad Quad 10.0" 3G'
17523    - regex: 'X-pad QUAD 7 3G'
17524      model: 'X-pad Quad 7.0" 3G'
17525    - regex: 'X-pad QUAD 7.2 3G'
17526      model: 'X-pad Quad 7.2" 3G'
17527    - regex: 'X-pad STYLE 8 3G'
17528      model: 'X-pad Style 8.0" 3G'
17529    - regex: 'X-pad HIT 3G'
17530      model: 'X-pad Hit 3G'
17531    - regex: 'X-pad LITE (7.[12])'
17532      model: 'X-pad Lite $1"'
17533    - regex: 'TM-9767'
17534      model: 'X-pad Style 10.0" 3G'
17535    - regex: 'X-pad STYLE 10.1 3G'
17536      model: 'X-pad Style 10.1" 3G'
17537    - regex: '(X-pad (?:AIR 8|iX 7) 3G)'
17538      model: '$1'
17539    - regex: 'TM-7096|X-pad NAVI 7.3 3G'
17540      model: 'X-pad NAVI 7.3" 3G'
17541    - regex: 'TM-7099'
17542      model: 'X-pad NAVI 7.4" 3G'
17543    - regex: 'X-pad NAVI 7.5 3G'
17544      model: 'X-pad NAVI 7.5" 3G'
17545    - regex: 'X-pad SKY 8.1 3G'
17546      model: 'X-pad Sky 8.1" 3G'
17547    - regex: 'TM-1046|X-pad NAVI 10 3G'
17548      model: 'X-pad NAVI 10.0" 3G'
17549    - regex: 'TM-7859'
17550      model: 'X-pad NAVI 8.2" 3G'
17551    - regex: 'TM-7049'
17552      model: 'NaviPad TM-7049 3G'
17553    - regex: 'TM-7887'
17554      model: 'NaviPad TM-7887 3G'
17555    - regex: 'TM-8066'
17556      model: 'X-pad Rapid 8.2" 4G'
17557    - regex: '(TM-(?:1057|1067|6906|8043|9748[_ ]3G|9740|9757(?:[_ ]3G)?|7047HD[ _]3G|9747BT|9751HD|702[13]|705[23]|7041|9720|7047HD[_ ]3G|8044|8041HD|973[78]W|9743W|974[710]|9750HD|7043XD|7037W|702[46])|TB-(?:771A|711A|8041HD))'
17558      model: '$1'
17559    - regex: 'TM-4503'
17560      device: 'smartphone'
17561      model: 'X-Quad'
17562    - regex: '(TM-(?:3000|3200R|4003|4083|4377|4504|451[30]|500[35]|5[23]77|5571|3204R|520[04]|5581|5505|5017|507[13-7]|5081|6003|5513))'
17563      device: 'smartphone'
17564      model: '$1'
17565    - regex: 'TM-5006'
17566      device: 'smartphone'
17567      model: 'X-Line'
17568    - regex: 'TM-5007'
17569      device: 'smartphone'
17570      model: 'X-Shine'
17571    - regex: 'TM_5011'
17572      device: 'smartphone'
17573      model: 'X-Omega'
17574    - regex: 'TM-508(3|4)'
17575      device: 'smartphone'
17576      model: 'Pay $1G'
17577    - regex: 'TM-558(3|4)'
17578      device: 'smartphone'
17579      model: 'Pay 5.5" $1G'
17580    - regex: 'TM-5702'
17581      device: 'smartphone'
17582      model: 'Pay 5.7" 3G'
17583    - regex: 'TM-5703'
17584      device: 'smartphone'
17585      model: 'Pay 5.7" Pro'
17586    - regex: 'TM-5201'
17587      device: 'smartphone'
17588      model: 'Rock'
17589    - regex: 'TM-4515'
17590      device: 'smartphone'
17591      model: 'X-Style'
17592    - regex: 'TM-(5016|3500)'
17593      device: 'smartphone'
17594      model: 'X-Maxi 2'
17595    - regex: 'TM-4071'
17596      device: 'smartphone'
17597      model: 'X-Smart'
17598    - regex: 'TM-4982'
17599      device: 'smartphone'
17600      model: 'iX-Maxi'
17601    - regex: 'TEXET[_ ]IX-MINI'
17602      device: 'smartphone'
17603      model: 'iX-Mini'
17604    - regex: 'TM-5010'
17605      device: 'smartphone'
17606      model: 'X-Selfie'
17607    - regex: 'TM-4082R'
17608      device: 'smartphone'
17609      model: 'X-Driver Quad'
17610    - regex: 'TM-5503'
17611      device: 'smartphone'
17612      model: 'X-Mage'
17613    - regex: 'TM-5508'
17614      device: 'smartphone'
17615      model: 'X-Cosmo'
17616    - regex: 'X-Force[\(-]?TM-5009\)?'
17617      device: 'smartphone'
17618      model: 'X-Force'
17619    - regex: 'X-Plus[\(-]?TM-5577\)?'
17620      device: 'smartphone'
17621      model: 'X-Plus'
17622    - regex: 'teXet[_ ]X-medium[_ ]plus'
17623      device: 'smartphone'
17624      model: 'X-Medium Plus'
17625
17626# Telefunken
17627Telefunken:
17628  regex: 'TELEFUNKEN|Foxtrot|TEL-1013GIQA|TEL-1014GIQ|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|32S70T2S|40S63T2S))|LTE_LIMA|LTE Mike'
17629  device: 'tablet'
17630  models:
17631    - regex: 'TEL-1013GIQA'
17632      model: 'Giqa 10.1 3G'
17633    - regex: 'TEL-1014GIQ'
17634      model: 'TEL-1014GIQ'
17635    - regex: 'Foxtrot2'
17636      model: 'Foxtrot 2'
17637      device: 'smartphone'
17638    - regex: 'LTE_LIMA'
17639      model: 'Lima LTE'
17640      device: 'smartphone'
17641    - regex: 'LTE Mike'
17642      model: 'Mike LTE'
17643      device: 'smartphone'
17644    - regex: '(?:TELEFUNKEN)?(TF-SP(?:500[12]|4002)|Outdoor LTE|Foxtrot)'
17645      model: '$1'
17646      device: 'smartphone'
17647    - regex: '(TF-MID(?:[78]02G|70[78]G|80[46]G|9705RG|9707G|7805G|100[57]G|1010G))'
17648      model: '$1'
17649    - regex: '(TF-LED(?:65S75T2SU|32S39T2S|32S5[289]T2S|32S70T2S|40S63T2S))'
17650      model: '$1'
17651      device: 'tv'
17652
17653# Telego
17654Telego:
17655  regex: 'TELEGO'
17656  device: 'smartphone'
17657  models:
17658    - regex: 'TELEGO-W503'
17659      model: 'W503'
17660    - regex: 'Telego_JOY2'
17661      model: 'Joy 2'
17662    - regex: 'Telego[ _]Mate'
17663      model: 'Mate'
17664
17665# Telenor
17666Telenor:
17667  regex: '(?<!FBCR/)Telenor|(?:Infinity[_ ](?:E[2-5]|K2?|A2))(?:[);/ ]|$)'
17668  device: 'smartphone'
17669  models:
17670    - regex: 'Telenor[ _]([^;/]+)(?: Build|[;)])'
17671      model: '$1'
17672    - regex: 'Infinity[ _](E[2-5]|K2?|A2)'
17673      model: 'Infinity $1'
17674
17675# Telit
17676Telit:
17677  regex: 'Telit'
17678  device: 'feature phone'
17679  models:
17680    - regex: 'Telit_Mobile_Terminals-([a-z0-9]+)'
17681      model: '$1'
17682    - regex: 'Telit[\-_]?([a-z0-9]+)'
17683      model: '$1'
17684
17685# Telpo ((https://www.telpo.com.cn/))
17686Telpo:
17687  regex: 'TPS320'
17688  device: 'peripheral'
17689  models:
17690    - regex: 'TPS320'
17691      model: 'TPS320'
17692
17693# ThL
17694ThL:
17695  regex: 'ThL[ _-]|(?:Knight 2|THL5000|T200)(?:[);/ ]|$)'
17696  device: 'smartphone'
17697  models:
17698    - regex: 'Knight 2'
17699      model: 'Knight 2'
17700    - regex: 'THL ?(5000)'
17701      model: '$1'
17702    - regex: '(T200)(?:[);/ ]|$)'
17703      model: '$1'
17704    - regex: 'ThL[ _-]*([^;/]+) Build'
17705      model: '$1'
17706    - regex: 'ThL[ _-]*([^ ;/)]+)(?:[);/ ]|$)'
17707      model: '$1'
17708
17709# Tianyu
17710TIANYU:
17711  regex: 'TIANYU'
17712  device: 'feature phone'
17713  models:
17714    - regex: 'TIANYU ([a-z0-9]+)'
17715      model: '$1'
17716    - regex: 'TIANYU-KTOUCH/([a-z0-9]+)'
17717      model: '$1'
17718
17719# Timovi
17720Timovi:
17721  regex: 'Tmovi[ _]|(?:Infinit[ _](?:Lite[_ ]2|X[_ ]CAM)|Infinit MX(?: Pro)?|Vision_PRO|VISION ULTRA|Epix|Yeah_Go)(?:[);/ ]|$)'
17722  device: 'smartphone'
17723  models:
17724    - regex: 'Tmovi[ _]Prime'
17725      model: 'Prime'
17726    - regex: 'TMOVI_YEAH_BEAT'
17727      model: 'Yeah Beat'
17728    - regex: 'YeahLIVE'
17729      model: 'Yeah LIVE'
17730    - regex: 'Infinit[_ ]X[_ ]CAM'
17731      model: 'Infinit X Cam'
17732    - regex: 'Infinit MX Pro'
17733      model: 'Infinit MX Pro'
17734    - regex: 'Infinit MX'
17735      model: 'Infinit MX'
17736    - regex: 'Infinit[_ ]Lite([_ ]2)?'
17737      model: 'Infinit Lite$1'
17738    - regex: 'Vision_PRO'
17739      model: 'Vision Pro'
17740    - regex: 'VISION ULTRA'
17741      model: 'Vision Ultra'
17742    - regex: 'Epix'
17743      model: 'Epix'
17744    - regex: 'Yeah_Go'
17745      model: 'Yeah Go'
17746
17747# Tooky
17748Tooky:
17749  regex: 'TOOKY'
17750  device: 'smartphone'
17751  models:
17752    - regex: 'TOOKY (A19|W1|T8[368]|T1982)(?:[);/ ]|$)'
17753      model: '$1'
17754    - regex: 'TOOKY A9PLUS(?:[);/ ]|$)'
17755      model: 'A9 Plus'
17756
17757# Tolino
17758Tolino:
17759  regex: 'Tolino Tab ([^/;]+) Build'
17760  device: 'tablet'
17761  model: 'Tolino Tab $1'
17762
17763# Top House
17764Top House:
17765  regex: 'Coto[_ ]|X1013'
17766  device: 'smartphone'
17767  models:
17768    - regex: 'Coto W418'
17769      model: 'Coto W418'
17770    - regex: 'COTO_T117'
17771      model: 'Coto T117'
17772      device: 'tablet'
17773    - regex: 'X1013'
17774      model: 'X1013'
17775      device: 'tablet'
17776    - regex: 'COTO_T40017'
17777      model: 'T40017'
17778
17779# Topelotek
17780Topelotek:
17781  regex: 'KIDS09'
17782  device: 'tablet'
17783  model: 'KIDS09 Kids Tablet'
17784
17785# Toplux
17786Toplux:
17787  regex: 'Toplux ([a-z0-9]+)'
17788  device: 'feature phone'
17789  model: '$1'
17790
17791# Touchmate (touchmate.net)
17792Touchmate:
17793  regex: 'TOUCHMATE|(TM-(?:MID1050WKD|MID1020A|MID794C|MID795|MID710|MID798|MID792|MID788D|SM500N|SM410|MID1010))'
17794  device: 'smartphone'
17795  models:
17796    - regex: '(TM-(?:MID1020A|MID794C|MID795|MID710|MID798|MID792|MID788D|MID1010))'
17797      device: 'tablet'
17798      model: '$1'
17799    - regex: 'TM-MID1050WKD'
17800      device: 'tablet'
17801      model: 'Mega Matrix 10.1" 3G'
17802    - regex: '(TM-(?:SM500N|SM410))'
17803      model: '$1'
17804    - regex: 'Touchmate ([^/;]+) Build'
17805      model: '$1'
17806
17807# TrekStor (www.trekstor.de)
17808TrekStor:
17809  regex: '(?:TrekStor|Surftab) ([^/;]+)(?: Build|\))|Surftab[^;\)]*(?:[;\)]|$)|ST10216-2A|ST13416-1|VT10416-[12]|TFMTKAW01232|PEAQ PET 100|Xintroni10.1'
17810  device: 'tablet'
17811  models:
17812    - regex: 'ST10216-2A|VT10416-[12]'
17813      model: 'SurfTab 10.1'
17814    - regex: 'ST13416-1'
17815      model: 'SurfTab Theatre 13.4"'
17816    - regex: 'PrimeTab P10'
17817      model: 'PrimeTab P10'
17818    - regex: 'TrekStor ([^/;]+) Build'
17819      model: '$1'
17820    - regex: 'Surftab ([^/;]+) Build'
17821      model: 'SurfTab $1'
17822    - regex: 'Surftab[ _]([^;\)]*)(?:[;\)]|$)'
17823      model: 'SurfTab $1'
17824    - regex: 'TFMTKAW01232'
17825      model: 'SurfTab L15'
17826    - regex: 'Xintroni10.1'
17827      model: 'SurfTab Xintron I 10.1"'
17828    - regex: '(PEAQ PET 100)'
17829      model: '$1'
17830
17831# Trevi
17832Trevi:
17833  regex: 'Trevi[ _]|TAB[ _]10[ _]3G[ _]V16|TAB[ _](7|8)[ _]3G[ _]V8|TAB9 3G|MINITAB 3GV|Phablet[ _](?:4|4\.5|5|5\,3|6)[ _]?[CSQ]|REVERSE[ _]5\.5[ _]?Q'
17834  device: 'tablet'
17835  models:
17836    - regex: 'TAB[ _]?(7|8)[ _]3G[ _]V8'
17837      model: 'TAB $1 3G V8'
17838    - regex: 'TAB[ _]?9[ _]3G[ _]V8'
17839      model: 'TAB 9 3G V8'
17840    - regex: 'TAB[ _]?9[ _]3G'
17841      model: 'TAB 9 3G'
17842    - regex: 'TAB[ _]10[ _]3G[ _]V16'
17843      model: 'TAB 10 3G V16'
17844    - regex: 'MINITAB 3GV'
17845      model: 'MINITAB 3G V'
17846    - regex: '(?:Trevi_)?Phablet[ _]4[ _]?C'
17847      model: 'Phablet 4 C'
17848      device: 'smartphone'
17849    - regex: '(?:Trevi_)?Phablet[ _]4[ _]?S'
17850      model: 'Phablet 4 S'
17851      device: 'smartphone'
17852    - regex: '(?:Trevi_)?Phablet[ _]4.5[ _]?Q'
17853      model: 'Phablet 4.5Q'
17854      device: 'smartphone'
17855    - regex: '(?:Trevi_)?PHABLET[ _]5[ _]?S'
17856      model: 'Phablet 5 S'
17857      device: 'smartphone'
17858    - regex: '(?:Trevi_)?PHABLET[ _]5,3[ _]?Q'
17859      model: 'Phablet 5.3 Q'
17860      device: 'phablet'
17861    - regex: '(?:Trevi_)?REVERSE[ _]5.5[ _]?Q'
17862      model: 'Phablet 5.5 Q REVERSE'
17863      device: 'phablet'
17864    - regex: '(?:Trevi_)?PHABLET[ _]6[ _]?S'
17865      model: 'Phablet 6 S'
17866      device: 'phablet'
17867
17868    - regex: 'Trevi[_]([^;/]+) Build'
17869      model: '$1'
17870
17871#TVC
17872TVC:
17873  regex: '(NuclearSX-SP5)'
17874  device: 'smartphone'
17875  model: 'Nuclear SX-SP5'
17876
17877# U.S. Cellular
17878U.S. Cellular:
17879  regex: 'USCC-'
17880  device: 'smartphone'
17881  models:
17882    - regex: 'USCC-E6762' # Kyocera DuraForce
17883      model: 'Kyocera DuraForce'
17884    - regex: '(USCC-[a-z0-9_\-]+)'
17885      model: '$1'
17886
17887# Uhappy
17888Uhappy:
17889  regex: 'Uhappy|UP?580|UP350|UP[35679]20'
17890  device: 'smartphone'
17891  models:
17892    - regex: 'UP([35679]20)'
17893      model: 'UP$1'
17894    - regex: 'UP350'
17895      model: 'UP350'
17896    - regex: 'UP580'
17897      model: 'UP580'
17898    - regex: 'U580'
17899      model: 'U580'
17900    - regex: 'Uhappy[ _-]([^;/]+) Build'
17901      model: '$1'
17902    - regex: 'Uhappy[ _-]?([^;/)]+)(?:[);/ ]|$)'
17903      model: '$1'
17904
17905# Unimax (UMX)
17906Unimax:
17907  regex: 'U((?:67[013]|680)C|(?:452|504)TL|683CL|693CL)(?:[);/ ]|$)'
17908  device: 'smartphone'
17909  model: 'U$1'
17910
17911# Unowhy
17912Unowhy:
17913  regex: 'QOOQ '
17914  device: 'tablet'
17915  model: 'QOOQ'
17916
17917
17918# UTStarcom
17919UTStarcom:
17920  regex: 'utstar[ _-]?([a-z0-9]+)'
17921  device: 'feature phone'
17922  model: '$1'
17923
17924# Ulefone (ulefone.com or ulefone.ru)
17925Ulefone:
17926  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|Paris_X|P6000_Plus)(?:[);/ ]|$)'
17927  device: 'smartphone'
17928  models:
17929    - regex: 'S(10|9)_Pro'
17930      model: 'S$1 Pro'
17931    - regex: 'Be[ _]Touch([ _][23])?'
17932      model: 'Be Touch$1'
17933    - regex: 'Be[ _]Pure[ _]Lite'
17934      model: 'Be Pure Lite'
17935    - regex: 'Be[ _]Pure'
17936      model: 'Be Pure'
17937    - regex: 'Be[ _]One[ _]Lite'
17938      model: 'Be One Lite'
17939    - regex: 'Be[ _]One'
17940      model: 'Be One'
17941    - regex: 'Be[ _]X'
17942      model: 'Be X'
17943    - regex: 'U(00[78]) Pro'
17944      model: 'U$1 Pro'
17945    - regex: 'P6000_Plus'
17946      model: 'P6000 Plus'
17947    - regex: 'Paris_X'
17948      model: 'Paris X'
17949    - regex: 'Power Armor 13(?:[);/ ]|$)'
17950      model: 'Power Armor 13'
17951    - regex: 'Armor[ _]X([236])(?:[);/ ]|$)'
17952      model: 'Armor X$1'
17953    - regex: 'Armor[ _]6S(?:[);/ ]|$)'
17954      model: 'Armor 6S'
17955    - regex: 'Armor[ _]([679])E(?:[);/ ]|$)'
17956      model: 'Armor $1E'
17957    - regex: 'Armor[ _]X([57]) Pro(?:[);/ ]|$)'
17958      model: 'Armor X$1 Pro'
17959    - regex: 'Armor[ _]X([578])(?:[);/ ]|$)'
17960      model: 'Armor X$1'
17961    - regex: 'Armor[ _]([25])S(?:[);/ ]|$)'
17962      model: 'Armor $1S'
17963    - regex: 'Armor[ _]X(?:[);/ ]|$)'
17964      model: 'Armor X'
17965    - regex: 'Armor[ _]3W(?:[);/ ]|$)'
17966      model: 'Armor 3W'
17967    - regex: 'Armor[ _]3WT(?:[);/ ]|$)'
17968      model: 'Armor 3WT'
17969    - regex: 'Armor[ _](1[10]|11T) 5G(?:[);/ ]|$)'
17970      model: 'Armor $1 5G'
17971    - regex: 'Armor[ _](8) Pro(?:[);/ ]|$)'
17972      model: 'Armor $1 Pro'
17973    - regex: 'Armor[ _]([236789])(?:[);/ ]|$)'
17974      model: 'Armor $1'
17975    - regex: 'Armor(?:[);/ ]|$)'
17976      model: 'Armor'
17977    - regex: 'Gemini Pro(?:[);/ ]|$)'
17978      model: 'Gemini Pro'
17979    - regex: 'Power[_ ]([356][SL]?)'
17980      model: 'Power $1'
17981    - regex: 'Note 8P(?:[);/ ]|$)'
17982      model: 'Note 8P'
17983    - regex: 'Note (9|11)P(?:[);/ ]|$)'
17984      device: 'phablet'
17985      model: 'Note $1P'
17986
17987    - regex: 'Ulefone[_ ](X|S1[ _]Pro|S[17])(?:[);/ ]|$)'
17988      model: '$1'
17989    - regex: 'Ulefone[ _-]?([^;/]+) Build'
17990      model: '$1'
17991    - regex: 'Ulefone[ _-]?([^;/)]+)(?:[;/)]|$)'
17992      model: '$1'
17993
17994# UMIDIGI or UMI
17995UMIDIGI:
17996  regex: 'UMI(?:DIGI)?[ _]|(?:A5_Pro|ROME[_ ]X|BISON|hammer_S|S2 LITE|London|Z2_PRO|C NOTE 2|A11 Pro Max|Power 3|Android 10.+ (?:A3[SX]|A7S))(?:[;/) ]|$)'
17997  device: 'smartphone'
17998  models:
17999    - regex: '(A5|Z2)_Pro'
18000      model: '$1 Pro'
18001    - regex: 'A11 Pro Max'
18002      model: 'A11 Pro Max'
18003    - regex: 'UMI TOUCH X'
18004      model: 'Touch X'
18005    - regex: 'UMI TOUCH'
18006      model: 'Touch'
18007    - regex: 'ROME[_ ]X'
18008      model: 'Rome X'
18009    - regex: 'BISON GT'
18010      model: 'Bison GT'
18011    - regex: 'BISON Pro'
18012      model: 'Bison Pro'
18013    - regex: 'BISON'
18014      model: 'Bison'
18015    - regex: 'hammer_S'
18016      model: 'Hammer S'
18017    - regex: 'C NOTE 2'
18018      model: 'C Note 2'
18019    - regex: 'UMI[_ ]SUPER'
18020      model: 'Super'
18021    - regex: 'S2 LITE'
18022      model: 'S2 Lite'
18023    - regex: 'Power 3'
18024      model: 'Power 3'
18025    - regex: ' (A3[SX]|A7S)(?:[;/) ]|$)'
18026      model: '$1'
18027    - regex: '(?:UMI_)?(London|Diamond(?:_X)?)'
18028      model: '$1'
18029    - regex: 'UMI(?:DIGI)?[ _]([^/;)]+)(?: Build|[;)])'
18030      model: '$1'
18031
18032# Uniscope
18033Uniscope:
18034  regex: 'Uniscope'
18035  device: 'smartphone'
18036  models:
18037    - regex: 'Uniscope[ _\-]?([^/;]+) Build'
18038      model: '$1'
18039    - regex: 'Uniscope[ _\-]?([^);/ ]+)'
18040      model: '$1'
18041
18042# Unnecto
18043Unnecto:
18044  regex: 'Unnecto|(?:U513|U5151|U61[1356]|U7[12]0|U-830|U90[35])(?:[);/ ]|$)'
18045  device: 'smartphone'
18046  models:
18047    - regex: 'U513'
18048      model: 'Drone XT'
18049    - regex: 'U5151'
18050      model: 'Bolt'
18051    - regex: 'U611'
18052      model: 'Quattro X'
18053    - regex: 'U613'
18054      model: 'Quattro S'
18055    - regex: 'U615'
18056      model: 'Quattro M'
18057    - regex: 'U616'
18058      model: 'U616'
18059    - regex: 'U710'
18060      model: 'Quattro U710'
18061    - regex: 'U720'
18062      model: 'Quattro Z'
18063    - regex: 'U-830'
18064      model: 'Rush'
18065    - regex: 'U903'
18066      model: 'Air'
18067    - regex: 'U905'
18068      model: 'Air 5.5'
18069
18070# Unonu (unonumobile.com)
18071Unonu:
18072  regex: 'Unonu[ _-]|(?:U4001)(?:[);/ ]|$)'
18073  device: 'smartphone'
18074  models:
18075    - regex: '(U4001)(?:[);/ ]|$)'
18076      model: '$1'
18077    - regex: 'Unonu[ _-]([^;/]+) Build'
18078      model: '$1'
18079    - regex: 'Unonu[ _-]?([^;/)]+)(?:[);/ ]|$)'
18080      model: '$1'
18081
18082# UTOK
18083UTOK:
18084  regex: 'UTOK (45[01]D)'
18085  device: 'smartphone'
18086  model: '$1'
18087
18088# Vastking
18089Vastking:
18090  regex: '(?:M910A|M783K|M783K-16G|M1072R-3G|KingPad_K10(?:Pro)?)(?:[);/ ]|$)'
18091  device: 'tablet'
18092  models:
18093    - regex: 'KingPad_(K10)(Pro)?(?:[);/ ]|$)'
18094      model: 'KingPad $1 $2'
18095    - regex: '(M910A|M783K|M783K-16G|M1072R-3G)(?:[);/ ]|$)'
18096      model: '$1'
18097
18098# ViewSonic (viewsonic.com)
18099ViewSonic:
18100  regex: 'ViewSonic|ViewPad|ViewPhone|(?:IFP(?:98|86|[67]5)50-3|VSD[0-9]+)(?:[);/ ]|$)'
18101  device: 'smart display'
18102  models:
18103    - regex: '(?:ViewSonic-)?V500(?:[);/ ]|$)'
18104      model: 'V500'
18105      device: 'smartphone'
18106    - regex: 'ViewSonic A8\+(?:[);/ ]|$)'
18107      model: 'A8 Plus'
18108      device: 'smartphone'
18109    - regex: '(?:ViewSonic-)?ViewPhone ?([^;/]+) Build'
18110      model: 'ViewPhone $1'
18111      device: 'smartphone'
18112    - regex: '(?:ViewSonic-)?ViewPad ?([^;/]+) Build'
18113      model: 'ViewPad $1'
18114      device: 'tablet'
18115    - regex: '(VSD[0-9]+)(?:[);/ ]|$)'
18116      model: '$1'
18117    - regex: 'IFP(98|86|[67]5)50-3'
18118      model: 'ViewBoard IFP$150-3 $1" 4K'
18119
18120# Vitelcom
18121Vitelcom:
18122  regex: 'Vitelcom|portalmmm/[12].0 TSM'
18123  device: 'feature phone'
18124  models:
18125    - regex: 'TSM-([a-z0-9]+)'
18126      model: '$1'
18127    - regex: 'TSM([a-z0-9\-]+)'
18128      model: '$1'
18129    - regex: 'portalmmm/[12].0 (TSM[a-z0-9 ]+)'
18130      model: '$1'
18131
18132# Fengxiang
18133Fengxiang:
18134  regex: '(vKB011B|vKB004L)'
18135  device: 'tablet'
18136  model: '$1'
18137
18138# VK Mobile
18139VK Mobile:
18140  regex: 'VK-VK([79]00)(?:[);/ ]|$)'
18141  device: 'feature phone'
18142  model: 'VK$1'
18143
18144# Vernee
18145Vernee:
18146  regex: 'Vernee|(?:Mars Pro|Apollo[ _](?:Lite|X)|Thor (?:E|Plus)|X2_euro|M7_EEA|T3 Pro)(?:[);/ ]|$)'
18147  device: 'smartphone'
18148  models:
18149    - regex: 'Apollo[ _]Lite'
18150      model: 'Apollo Lite'
18151    - regex: 'Apollo[ _]X'
18152      model: 'Apollo X'
18153    - regex: 'Mars Pro'
18154      model: 'Mars Pro'
18155    - regex: 'Thor E'
18156      model: 'Thor E'
18157    - regex: 'Thor Plus'
18158      model: 'Thor Plus'
18159    - regex: 'Vernee_M5'
18160      model: 'M5'
18161    - regex: 'M7_EEA'
18162      model: 'M7'
18163    - regex: 'X2_euro'
18164      model: 'X2'
18165    - regex: 'T3 Pro'
18166      model: 'T3 Pro'
18167    - regex: 'Vernee[ _-]([^;/]+) Build'
18168      model: '$1'
18169    - regex: 'Vernee[ _-]([a-z0-9_-]+)'
18170      model: '$1'
18171
18172# Vertu
18173Vertu:
18174  regex: 'Vertu[ ]?([a-z0-9]+)|(?:ASTER P|CONSTELLATION X)(?:[);/ ]|$)'
18175  device: 'feature phone'
18176  models:
18177    - regex: 'ASTER P(?:[);/ ]|$)'
18178      device: 'smartphone'
18179      model: 'Aster P'
18180    - regex: 'CONSTELLATION X(?:[);/ ]|$)'
18181      device: 'smartphone'
18182      model: 'Constellation X'
18183    - regex: 'Vertu[ ]?([a-z0-9]+)'
18184      model: '$1'
18185
18186# Venso mobile
18187Venso:
18188  regex: '(?:CX-508|CX-551|Reiv 500|Creon F5|Isprit U50|Isprit-U50-LTE)(?:[);/ ]|$)'
18189  device: 'smartphone'
18190  models:
18191    - regex: 'Isprit U50|Isprit-U50-LTE'
18192      model: 'Isprit U50'
18193    - regex: '(CX-508|CX-551|Reiv 500|Creon F5)'
18194      model: '$1'
18195
18196# Verizon
18197Verizon:
18198  regex: 'QTA(SUN[12]|XIA1|QZ3|QZ3KID|IR7)|QMV7B'
18199  device: 'tablet'
18200  models:
18201    - regex: 'QTAXIA1|QTAIR7'
18202      model: 'Ellipsis 10'
18203    - regex: 'QTASUN1'
18204      model: 'Ellipsis 8 HD'
18205    - regex: 'QTASUN2'
18206      model: 'Ellipsis 8 HD 4G LTE'
18207    - regex: 'QTAQZ3KID'
18208      model: 'Ellipsis Kids LTE'
18209    - regex: 'QTAQZ3'
18210      model: 'Ellipsis 8'
18211    - regex: 'QMV7B'
18212      model: 'Ellipsis 7'
18213
18214# Verykool
18215Verykool:
18216  regex: 'verykool'
18217  device: 'smartphone'
18218  models:
18219    - regex: 'verykool[ _]?SL5009'
18220      model: 'Jet'
18221    - regex: 'verykool[ _]?S5001'
18222      model: 'Lotus'
18223    - regex: 'verykool[ _]?S5004'
18224      model: 'Lotus Jr'
18225    - regex: 'verykool[ _]?S5007'
18226      model: 'Lotus Plus'
18227    - regex: 'verykool[ _]?s5015'
18228      model: 'Spark II'
18229    - regex: 'verykool[ _]?SL5011'
18230      model: 'Spark LTE'
18231    - regex: 'verykool[ _]?s5019'
18232      model: 'Wave'
18233    - regex: 'verykool[ _]?S5005'
18234      model: 'Lotus II'
18235    - regex: 'verykool[ _]?SL5560'
18236      model: 'Maverick Pro'
18237    - regex: 'verykool[ _]?SL5200'
18238      model: 'Eclipse'
18239    - regex: 'verykool[ _]?SL5050'
18240      model: 'Phantom'
18241    - regex: 'verykool[ _]?S5030'
18242      model: 'Helix II'
18243    - regex: 'verykool[ _]?s5527'
18244      model: 'Alpha Pro'
18245    - regex: 'verykool[ _]?s5526'
18246      model: 'Alpha'
18247    - regex: 'verykool[ _]?S5530'
18248      model: 'Maverick II'
18249    - regex: 'verykool[ _]?S5525'
18250      model: 'Maverick III'
18251    - regex: 'verykool[ _]?S5524'
18252      model: 'Maverick III Jr'
18253    - regex: 'verykool[ _]?s5516'
18254      model: 'Maverick Jr'
18255    - regex: 'verykool[ _]?SL5550'
18256      model: 'Maverick LTE'
18257    - regex: 'verykool[ _]?s5035'
18258      model: 'Spear'
18259    - regex: 'verykool[ _]?s5034'
18260      model: 'Spear Jr'
18261    - regex: 'verykool[ _]?s5037'
18262      model: 'Apollo Quattro'
18263    - regex: 'verykool[ _]?s5036'
18264      model: 'Apollo'
18265    - regex: 'Sol Quatro Jr'
18266      model: 'Sol Quatro Jr'
18267    - regex: 'verykool[ _]?s6005x'
18268      model: 'Cyprus Pro'
18269    - regex: 'verykool[ _]?SL6010'
18270      model: 'Cyprus LTE'
18271    - regex: 'verykool[ _]?S4006[QT]?'
18272      model: 'Leo 3G'
18273    - regex: 'verykool[ _]?S4007'
18274      model: 'Leo IV'
18275    - regex: 'verykool[ _]?S4008'
18276      model: 'Leo V'
18277    - regex: 'verykool[ _]?s5017|Dorado s5017'
18278      model: 'Dorado'
18279    - regex: 'verykool[ _]?s4510'
18280      model: 'Luna'
18281    - regex: 'verykool[ _]?s5204'
18282      model: 'Orion'
18283    - regex: 'verykool[ _]?s5205'
18284      model: 'Orion Pro'
18285    - regex: 'verykool[ _]?s5528Jr'
18286      model: 'Cosmo Jr'
18287    - regex: 'verykool[ _]?s5528'
18288      model: 'Cosmo'
18289    - regex: 'verykool[ _]?s5702'
18290      model: 'Royale Quattro'
18291    - regex: 'verykool[ _]?SL5029'
18292      model: 'Bolt Pro'
18293    - regex: 'verykool[ _]?SL5565'
18294      model: 'Rocket'
18295
18296    - regex: 'verykool[ _]?TL8010'
18297      device: 'tablet'
18298      model: 'KolorPad LTE'
18299    - regex: 'verykool[ _]?T7440'
18300      device: 'tablet'
18301      model: 'KolorPad II'
18302    - regex: 'verykool[ _]?T7445'
18303      device: 'tablet'
18304      model: 'KolorPad IV'
18305
18306    - regex: 'verykool[ _]?([^/;)]+)(?:[ _]SL?[0-9]{4}[QT]?)(?: Build|[);])'
18307      model: '$1'
18308    - regex: 'verykool[ _]?([^/;)]+)(?: Build|[);])'
18309      model: '$1'
18310
18311
18312# Vestel (vestel.com)
18313Vestel:
18314  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'
18315  device: 'smartphone'
18316  models:
18317    - regex: 'VT97PRO'
18318      model: 'VTab 9.7 Pro'
18319      device: 'tablet'
18320    - regex: 'VP74'
18321      model: 'VTab Lite II'
18322      device: 'tablet'
18323    - regex: 'VTAB10'
18324      model: 'VTab 10'
18325      device: 'tablet'
18326    - regex: 'V_TAB_7_ECO_III'
18327      model: 'VTab 7 Eco 3'
18328      device: 'tablet'
18329    - regex: 'V_TAB_7_LITE_III'
18330      model: 'VTab 7 Lite 3'
18331      device: 'tablet'
18332    - regex: 'V_TAB_([0-9]{4}[A-Z]?)'
18333      model: 'VTab $1'
18334      device: 'tablet'
18335    - regex: 'V3_5580_Dual'
18336      model: 'Venus V3 5580 Dual'
18337    - regex: 'VSP145M'
18338      model: 'Venus 4.5'
18339    - regex: 'VSP250G'
18340      model: 'Venus 5.0V'
18341    - regex: 'VSP250S'
18342      model: 'Venus 5.0X'
18343    - regex: 'VSP355G'
18344      model: 'Venus 5.5V'
18345    - regex: 'VSP355S'
18346      model: 'Venus 5.5X'
18347    - regex: 'Venus[ _]V([1-9])([ _][0-9]{4})?'
18348      model: 'Venus V$1$2'
18349    - regex: 'Venus[ _]Z([1-9]0)'
18350      model: 'Venus Z$1'
18351    - regex: 'Venus[ _]GO'
18352      model: 'Venus Go'
18353    - regex: 'Venus E2 Plus Dual'
18354      model: 'Venus E2 Plus Dual'
18355    - regex: 'Venus[ _]E2 Plus'
18356      model: 'Venus E2 Plus'
18357    - regex: 'Venus[ _]E([345])'
18358      model: 'Venus E$1'
18359    - regex: 'Vestel_5000_Dual'
18360      model: '5000 Dual'
18361    - regex: 'Vestel_5000_2gb'
18362      model: '5000 2GB'
18363    - regex: 'Vestel[ _](5000|5530)'
18364      model: '$1'
18365
18366# Videocon
18367Videocon:
18368  regex: 'Videocon[_ \-]|(?:VT75C|V406018|V512930|V50(?:2430|3630|4730|5024|5430|4630|5[98]20)|Z45_(?:Dazzle|Amaze)|Z45Q Star|Z50 Nova)(?:[);/ ]|$)'
18369  device: 'smartphone'
18370  models:
18371    - regex: 'Videocon_V1585'
18372      device: 'feature phone'
18373      model: 'V1585'
18374    - regex: 'Videocon[_ \-]([a-z0-9]+)'
18375      model: '$1'
18376    - regex: 'VT75C(?:[);/ ]|$)'
18377      model: 'VT75C'
18378      device: 'tablet'
18379    - regex: 'V502430(?:[);/ ]|$)'
18380      model: 'Kryton 3'
18381    - regex: 'V505024(?:[);/ ]|$)'
18382      model: 'Kryton 22 Plus'
18383    - regex: 'V503630(?:[);/ ]|$)'
18384      model: 'Delite 11'
18385    - regex: 'V504730(?:[);/ ]|$)'
18386      model: 'Delite 21'
18387    - regex: 'V505920(?:[);/ ]|$)'
18388      model: 'Metal Pro 2'
18389    - regex: 'V505820(?:[);/ ]|$)'
18390      model: 'Metal Pro 1'
18391    - regex: 'V406018(?:[);/ ]|$)'
18392      model: 'Starr 100'
18393    - regex: 'V512930(?:[);/ ]|$)'
18394      model: 'Ultra 50'
18395    - regex: '(V505430|V504630)(?:[);/ ]|$)'
18396      model: '$1'
18397    - regex: 'Z45_(Dazzle|Amaze)(?:[);/ ]|$)'
18398      model: 'Infinium Z45 $1'
18399    - regex: 'Z45Q Star(?:[);/ ]|$)'
18400      model: 'Infinium Z45Q Star'
18401    - regex: 'Z50 Nova(?:[);/ ]|$)'
18402      model: 'Infinium Z50 Nova'
18403
18404# Vodafone
18405Vodafone:
18406  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))(?:[);/ ]|$)'
18407  device: 'smartphone'
18408  models:
18409    - regex: 'VFD 100'
18410      model: 'Smart Mini'
18411    - regex: 'VF685'
18412      model: 'Smart Kicka'
18413    - regex: 'VF695'
18414      model: 'Smart First 6'
18415    - regex: 'VFD 200'
18416      model: 'Smart First 7'
18417    - regex: 'VFD 300'
18418      model: 'Smart Mini 7'
18419    - regex: 'VFD 50[02]'
18420      model: 'Smart Turbo 7'
18421    - regex: 'VFD 51[013]'
18422      model: 'Smart E8'
18423    - regex: 'VFD 527'
18424      model: 'Smart E9'
18425    - regex: 'VFD 600'
18426      model: 'Smart Prime 7'
18427    - regex: 'VFD320'
18428      model: 'Smart C9'
18429    - regex: 'VFD 820'
18430      model: 'Smart X9'
18431    - regex: 'VFD 610'
18432      model: 'Smart N8'
18433    - regex: 'VFD 630'
18434      model: 'Smart N10'
18435    - regex: 'VFD 620'
18436      model: 'Smart N9 Lite'
18437    - regex: 'Smart ultra 6'
18438      model: 'Smart Ultra 6'
18439    - regex: 'VFD 700'
18440      model: 'Smart Ultra 7'
18441    - regex: 'VFD 720'
18442      model: 'Smart N9'
18443    - regex: 'VFD 730'
18444      model: 'Smart V10'
18445    - regex: 'VFD 900'
18446      model: 'Smart Platinum 7'
18447    - regex: 'Vodafone[ _]875(?:[);/ ]|$)'
18448      model: 'Smart Mini' # Alcatel
18449    - regex: 'Vodafone[ _]975N?(?:[);/ ]|$)'
18450      model: 'Smart 3' # Alcatel
18451    - regex: 'Vodafone[ _]785(?:[);/ ]|$)'
18452      model: 'Smart 4 Mini'
18453    - regex: 'Vodafone[ _]890N(?:[);/ ]|$)'
18454      model: 'Smart 4 Turbo' # Coolpad 3601U
18455    - regex: 'Vodafone[ _]985N(?:[);/ ]|$)'
18456      model: 'Smart 4 Power'
18457    - regex: 'VodafoneSmartChat'
18458      model: 'Smart Chat'
18459    - regex: 'VF-696'
18460      model: 'Smart Grand 6'
18461    - regex: 'VF-795'
18462      model: 'Smart Speed 6'
18463    - regex: 'VF-895N'
18464      model: 'Smart Prime 6'
18465
18466    # explicit table models
18467    - regex: 'VF-1397'
18468      model: 'Tab Speed 6'
18469      device: 'tablet'
18470    - regex: 'VF-1497'
18471      model: 'Tab Prime 6'
18472      device: 'tablet'
18473    - regex: 'VFD 1100'
18474      device: 'tablet'
18475      model: 'Tab Mini 7'
18476    - regex: 'VFD 1300'
18477      device: 'tablet'
18478      model: 'Smart Tab N8'
18479    - regex: 'VFD 1400'
18480      device: 'tablet'
18481      model: 'Tab Prime 7'
18482    - regex: 'Smart ?Tab ?3G'
18483      device: 'tablet'
18484      model: 'Smart Tab 3G'
18485    - regex: 'Smart ?Tab ?4G'
18486      device: 'tablet'
18487      model: 'Smart Tab 4G'  # Alcatel
18488    - regex: 'Smart ?Tab ?4'
18489      model: 'Smart Tab 4' # ZTE
18490      device: 'tablet'
18491    - regex: 'SmartTab7[);/ -]'
18492      model: 'Smart Tab 7' # ZTE
18493      device: 'tablet'
18494    - regex: 'SmartTab10[);/ -]'
18495      model: 'Smart Tab 10' # ZTE
18496      device: 'tablet'
18497    - regex: 'Smart ?Tab ?II ?7'
18498      model: 'Smart Tab II 7' # Lenovo
18499      device: 'tablet'
18500    - regex: 'Smart ?Tab ?II ?10'
18501      model: 'Smart Tab II 10' # Lenovo
18502      device: 'tablet'
18503    - regex: 'Smart ?Tab ?III ?7'
18504      model: 'Smart Tab III 7' # Lenovo
18505      device: 'tablet'
18506    - regex: 'Smart ?Tab ?III ?10'
18507      model: 'Smart Tab III 10' # Lenovo
18508      device: 'tablet'
18509
18510    - regex: 'VFD[ _]([0-9]+)(?:[);/ ]|$)'
18511      model: 'VFD $1'
18512    - regex: 'Vodafone[ _-]([^;/]+) Build'
18513      model: '$1'
18514    - regex: 'Vodafone[ _-]([a-z0-9_-]+)'
18515      model: '$1'
18516
18517# Vonino (vonino.ro)
18518Vonino:
18519  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|Volt[ _][XS]|Xavy_(T7|L8)|Xylo[ _][XSPQT]|Zun[ _]X[OS]?|JAX_N|Druid_L10'
18520  device: 'smartphone'
18521  models:
18522    - regex: 'Zun[ _]XO'
18523      model: 'Zun XO'
18524    - regex: 'Zun[ _]XS'
18525      model: 'Zun XS'
18526    - regex: 'Zun[ _]X'
18527      model: 'Zun X'
18528    - regex: 'Xylo[ _]([PSXQT])'
18529      model: 'Xylo $1'
18530    - regex: 'Volt[ _]S_A7'
18531      model: 'Volt S A7'
18532    - regex: 'Volt[ _]S'
18533      model: 'Volt S'
18534    - regex: 'Volt[ _]X'
18535      model: 'Volt X'
18536    - regex: 'Gyga[ _]QS'
18537      model: 'Gyga QS'
18538    - regex: 'Gyga[ _]XS'
18539      model: 'Gyga XS'
18540    - regex: 'Gyga[ _](S|X)'
18541      model: 'Gyga $1'
18542    - regex: 'Jax[ _]QS'
18543      model: 'Jax QS'
18544    - regex: 'Jax[ _]S_A7'
18545      model: 'Jax S A7'
18546    - regex: 'Jax[ _]([SQXN])'
18547      model: 'Jax $1'
18548    - regex: 'Jax[ _]Mini'
18549      model: 'Jax Mini'
18550    - regex: 'Epic (E8|P7)'
18551      model: 'Epic $1'
18552      device: 'tablet'
18553    - regex: 'Pluri[ _](B|C|M|Q)7'
18554      model: 'Pluri $17'
18555      device: 'tablet'
18556    - regex: 'Pluri[ _]([CQM])8'
18557      model: 'Pluri $18'
18558      device: 'tablet'
18559    - regex: 'Druid[_ ](L10)'
18560      model: 'Druid $1'
18561      device: 'tablet'
18562    - regex: 'Magnet[ _](M[19]|G[35]0)'
18563      model: 'Magnet $1'
18564      device: 'tablet'
18565    - regex: 'Navo_QS'
18566      model: 'Navo QS'
18567      device: 'tablet'
18568    - regex: 'Onyx_(QS|Z)'
18569      model: 'Onyx $1'
18570      device: 'tablet'
18571    - regex: 'Orin_QS'
18572      model: 'Orin QS'
18573      device: 'tablet'
18574    - regex: 'Sirius_QS'
18575      model: 'Sirius QS'
18576      device: 'tablet'
18577    - regex: 'Xavy_T7'
18578      model: 'Xavy T7'
18579      device: 'tablet'
18580    - regex: 'Xavy_L8'
18581      model: 'Xavy L8'
18582      device: 'tablet'
18583
18584# Vorago
18585Vorago:
18586  regex: 'VORAGO'
18587  device: 'smartphone'
18588  models:
18589    - regex: 'CELL-500'
18590      model: 'CELL-500'
18591
18592# Voto
18593Voto:
18594  regex: 'VOTO[ _\-]|VT8[89]8(?:[);/ ]|$)'
18595  device: 'smartphone'
18596  models:
18597    - regex: 'VOTO[ _\-]?([^/;]+) Build'
18598      model: '$1'
18599    - regex: 'VOTO[ _\-]?([^);/ ]+)'
18600      model: '$1'
18601    - regex: '(VT8[89]8)(?:[);/ ]|$)'
18602      model: '$1'
18603
18604# Voxtel
18605Voxtel:
18606  regex: 'Voxtel_([a-z0-9]+)'
18607  device: 'feature phone'
18608  model: '$1'
18609
18610# Vulcan
18611Vulcan:
18612  regex: '(?:VP5004A|HT0704W08|VS5513|VS4011|VR6031)(?:[);/ ]|$)'
18613  device: 'smartphone'
18614  models:
18615    - regex: '(VP5004A|VR6031)(?:[);/ ]|$)'
18616      model: '$1'
18617    - regex: 'VS5513(?:[);/ ]|$)'
18618      model: 'Tempo S13'
18619    - regex: 'VS4011(?:[);/ ]|$)'
18620      model: 'Tempo S11'
18621    - regex: 'HT0704W08' # Hyundai
18622      model: 'Koral 7W4'
18623      device: 'tablet'
18624
18625# Walton (waltonbd.com)
18626Walton:
18627  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-46]|R[HM]2?|RX[23]?|S[1-6]|V1|X[1-4]|Z|ZX)'
18628  device: 'smartphone'
18629  models:
18630    - regex: 'Walpad[ _]([^;/)]+)(?: Build|[);])'
18631      device: 'tablet'
18632      model: 'Primo Walpad $1'
18633    - regex: 'Primo S6 infinity'
18634      model: 'Primo S6 Infinity'
18635    - regex: 'Primo H8 Pro(?:[);/ ]|$)'
18636      model: 'Primo H8 Pro'
18637    - regex: 'Primo (RM2|ZX2|NX4) mini(?:[);/ ]|$)'
18638      model: 'Primo $1 Mini'
18639    - regex: 'Primo H8(?:[);/ ]|$)'
18640      model: 'Primo H8 Turbo'
18641    - regex: 'RX7 Mini(?:[);/ ]|$)'
18642      model: 'RX7 Mini'
18643
18644    # general detections
18645    - regex: 'Primo[ _]([^;/)]+)(?: Build|[;)])'
18646      model: 'Primo $1'
18647    - regex: 'Walton[ _]([^;/)]+)(?: Build|[;)])'
18648      model: '$1'
18649
18650# Wellcom
18651WellcoM:
18652  regex: 'WELLCOM[ _\-/]([a-z0-9]+)'
18653  device: 'smartphone'
18654  model: '$1'
18655
18656# Wexler
18657Wexler:
18658  regex: 'Wexler|(?:ULTIMA 7 TWIST PLUS|TAB10iQ3G|TAB[ _]10Q)(?:[);/ ]|$)|ZEN[ _](?:4\.[57]|5)'
18659  device: 'tablet'
18660  models:
18661    - regex: '(?:Wexler[ _\-\.])?ZEN[ _]4\.5(?:[);/ ]|$)'
18662      model: 'ZEN 4.5'
18663      device: 'smartphone'
18664    - regex: '(?:Wexler[ _\-\.])?ZEN[ _]4\.7(?:[);/ ]|$)'
18665      model: 'ZEN 4.7'
18666      device: 'smartphone'
18667    - regex: '(?:Wexler[ _\-\.])?ZEN[ _]5(?:[);/ ]|$)'
18668      model: 'ZEN 5'
18669      device: 'smartphone'
18670    - regex: '(?:Wexler[ _\-\.])?TAB[ _]10Q(?:[);/ ]|$)'
18671      model: 'TAB 10Q'
18672    - regex: 'TAB10iQ3G(?:[);/ ]|$)'
18673      model: 'TAB 10iQ 3G'
18674    - regex: 'Wexler[ _\-\.]([^;/]+) Build'
18675      model: '$1'
18676    - regex: 'Wexler[ _\-\.]([^);/]+)(?:[);/]|$)'
18677      model: '$1'
18678    - regex: '(ULTIMA 7 TWIST PLUS)(?:[);/ ]|$)'
18679      model: '$1'
18680
18681# Inco (incomobile.com)
18682Inco:
18683  regex: '(?:Inco[ _](Aurora II|Colors|Sphere|Plain[_ ]2S?|Plain2 S|Flex(?: 2S)?|S4|Bloom(?: 2)?)|(Horizon_S|Horizon \+|MATTER))(?:[);/ ]|$)'
18684  device: 'smartphone'
18685  models:
18686    - regex: '(?:Inco[ _])?(Plain[_ ]2S?|Colors|Horizon_S|Horizon \+|Aurora II|Flex(?: 2S)?|S4|Bloom(?: 2)?)(?:[);/ ]|$)'
18687      model: '$1'
18688    - regex: 'Plain2 S'
18689      model: 'Plain 2S'
18690    - regex: 'MATTER'
18691      model: 'Matter'
18692    - regex: 'Inco Sphere( 3)?(?:[);/ ]|$)'
18693      device: 'tablet'
18694      model: 'Sphere$1'
18695
18696# Wink
18697Wink:
18698  regex: '(?<!mismart )Wink[_ ]'
18699  device: 'smartphone'
18700  models:
18701    - regex: 'Wink[_ ]((?:Glory|World|Share|City)(?:[_ ](?:SE|S))?)(?:[);/ ]|$)'
18702      model: '$1'
18703    - regex: 'Wink[ _](Primo|Highway)(?:[);/ ]|$)'
18704      device: 'tablet'
18705      model: '$1'
18706
18707# Wiko (wikomobile.com)
18708Wiko:
18709  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|V8[30]0|P[36]11|K420|K510S?|K560|K130|K380|K610)-(?:TMV|TIM|TVM|EEA|SUN|SWI|OPE|BYT|DU|TH)|WIM Lite|W-K360-TV|W-V600|W-V750BN|W-K200|W-U300|U307AS|CINK PEAX 2|HIGHWAY PURE|C210AE|v3913'
18710  device: 'smartphone'
18711  models:
18712    - regex: '(?:WIKO-)?W-V745'
18713      model: 'Power U10'
18714    - regex: '(?:WIKO-)?W-V750'
18715      model: 'Power U20'
18716    - regex: '(?:WIKO-)?Cink Peax 2'
18717      model: 'Cink Peax 2'
18718    - regex: '(?:Wiko-)?Cink([^/;]*) Build'
18719      model: 'Cink$1'
18720    - regex: '(?:WIKO-)?CINK_([a-z0-9_]+)'
18721      model: 'Cink $1'
18722    - regex: '(?:WIKO-)?HIGHWAY PURE'
18723      model: 'Highway Pure'
18724    - regex: '(?:WIKO-)?HIGHWAY STAR'
18725      model: 'Highway Star'
18726    - regex: '(?:Wiko-)?Highway([^/;]*) Build'
18727      model: 'Highway$1'
18728    - regex: '(?:WIKO-)?HIGHWAY_([a-z0-9_]+)'
18729      model: 'Highway $1'
18730    - regex: '(?:WIKO-)?Iggy'
18731      model: 'Iggy'
18732    - regex: '(?:WIKO-)?FEVER'
18733      model: 'Fever'
18734    - regex: '(?:WIKO-)?Stairway'
18735      model: 'Stairway'
18736    - regex: '(?:WIKO-)?Ridge Fab 4G'
18737      model: 'Ridge Fab 4G'
18738    - regex: '(?:WIKO-)?Ridge 4G'
18739      model: 'Ridge 4G'
18740    - regex: '(?:WIKO-)?Ridge'
18741      model: 'Ridge'
18742    - regex: '(?:WIKO-)?Rainbow ([^/;]+) Build'
18743      model: 'Rainbow $1'
18744    - regex: '(?:WIKO-)?Rainbow'
18745      model: 'Rainbow'
18746    - regex: '(?:WIKO-)?Darkside'
18747      model: 'Darkside'
18748    - regex: '(?:WIKO-)?Darkmoon'
18749      model: 'Darkmoon'
18750    - regex: '(?:WIKO-)?Darkfull'
18751      model: 'Darkfull'
18752    - regex: '(?:WIKO-)?Darknight'
18753      model: 'Darknight'
18754    - regex: '(?:WIKO-)?Sublim'
18755      model: 'Sublim'
18756    - regex: '(?:WIKO-)?Ozzy'
18757      model: 'Ozzy'
18758    - regex: '(?:WIKO-)?Barry'
18759      model: 'Barry'
18760    - regex: '(?:WIKO-)?Birdy'
18761      model: 'Birdy'
18762    - regex: '(?:WIKO-)?Bloom'
18763      model: 'Bloom'
18764    - regex: '(?:WIKO-)?JIMMY'
18765      model: 'Jimmy'
18766    - regex: 'JERRY MAX'
18767      model: 'Jerry Max'
18768    - regex: 'W_K300'
18769      model: 'Jerry 3'
18770    - regex: 'W-K420-TVM'
18771      model: 'Jerry 4'
18772    - regex: '(?:WIKO-)?Jerry2'
18773      model: 'Jerry 2'
18774    - regex: '(?:WIKO-)?Jerry'
18775      model: 'Jerry'
18776    - regex: '(?:WIKO-)?Getaway'
18777      model: 'Getaway'
18778    - regex: '(?:WIKO-)?Goa(?!nna)'
18779      model: 'Goa'
18780    - regex: '(?:WIKO-)?Freddy'
18781      model: 'Freddy'
18782    - regex: '(?:WIKO-)?Kite'
18783      model: 'Kite'
18784    - regex: 'W_K400'
18785      model: 'Lenny 5'
18786    - regex: 'C210AE(?:[);/ ]|$)'
18787      model: 'Life'
18788    - regex: 'U307AS(?:[);/ ]|$)'
18789      model: 'Life 2'
18790    - regex: 'v3913(?:[);/ ]|$)'
18791      model: 'Kenny'
18792    - regex: '(?:WIKO-)?Lenny[ -_]?3 Max'
18793      model: 'Lenny 3 Max'
18794    - regex: '(?:WIKO-)?Lenny[ -_]?4 Plus'
18795      model: 'Lenny 4 Plus'
18796    - regex: '(?:WIKO-)?Lenny[ -_]?([2-9])'
18797      model: 'Lenny $1'
18798    - regex: '(?:WIKO-)?Lenny'
18799      model: 'Lenny'
18800    - regex: '(?:WIKO-)?Slide'
18801      model: 'Slide'
18802    - regex: '(?:WIKO-)?Sunset2'
18803      model: 'Sunset 2'
18804    - regex: '(?:WIKO-)?Sunset'
18805      model: 'Sunset'
18806    - regex: '(?:WIKO-)?Sunny3'
18807      model: 'Sunny 3'
18808    - regex: 'W-K200'
18809      model: 'Sunny 3 Plus'
18810    - regex: '(?:WIKO-)?Sunny2 Plus'
18811      model: 'Sunny 2 Plus'
18812    - regex: '(?:WIKO-)?Sunny2'
18813      model: 'Sunny 2'
18814    - regex: 'W-K360-TV'
18815      model: 'Sunny 4 Plus'
18816    - regex: 'W-K130-TMV'
18817      model: 'Sunny 4'
18818    - regex: 'W-K380-TVM'
18819      model: 'Sunny 5'
18820    - regex: '(?:WIKO-)?Sunny'
18821      model: 'Sunny'
18822    - regex: '(?:W_K600|Tommy3|W_C200SN)'
18823      model: 'Tommy 3'
18824    - regex: '(?:WIKO-)?Tommy2 Plus'
18825      model: 'Tommy 2 Plus'
18826    - regex: '(?:WIKO-)?Tommy2'
18827      model: 'Tommy 2'
18828    - regex: '(?:WIKO-)?Tommy'
18829      model: 'Tommy'
18830    - regex: '(?:WIKO-)?Wax'
18831      model: 'Wax'
18832    - regex: '(?:WIKO-)?HARRY'
18833      model: 'Harry'
18834    - regex: 'W-V600'
18835      model: 'Harry 2'
18836    - regex: '(?:WIKO-)?WIM Lite'
18837      model: 'WIM Lite'
18838    - regex: '(?:WIKO-)?Pulp Fab 4G'
18839      model: 'Pulp Fab 4G'
18840    - regex: '(?:WIKO-)?Pulp Fab'
18841      model: 'Pulp Fab'
18842    - regex: '(?:WIKO-)?Pulp 4G'
18843      model: 'Pulp 4G'
18844    - regex: '(?:WIKO-)?Pulp'
18845      model: 'Pulp'
18846    - regex: '(?:WIKO-)?Robby(2)?'
18847      model: 'Robby$1'
18848    - regex: '(?:WIKO-)?U PULSE LITE'
18849      model: 'U Pulse Lite'
18850    - regex: '(?:WIKO-)?U PULSE'
18851      model: 'U Pulse'
18852    - regex: '(?:WIKO-)?U FEEL LITE'
18853      model: 'U Feel Lite'
18854    - regex: '(?:WIKO-)?U FEEL PRIME'
18855      model: 'U Feel Prime'
18856    - regex: '(?:WIKO-)?U FEEL'
18857      model: 'U Feel'
18858    - regex: '(?:WIKO-)?View2 Go'
18859      model: 'View 2 Go'
18860    - regex: '(?:WIKO-)?View2 Plus'
18861      model: 'View 2 Plus'
18862    - regex: '(?:WIKO-)?View XL'
18863      model: 'View XL'
18864    - regex: '(?:WIKO-)?View Prime'
18865      model: 'View Prime'
18866    - regex: 'WC300'
18867      model: 'View Lite'
18868    - regex: 'W_C800'
18869      model: 'View 2'
18870    - regex: 'W_C860'
18871      model: 'View 2 Pro'
18872    - regex: 'W_P200'
18873      model: 'View Max'
18874    - regex: 'W_P130'
18875      model: 'View Go'
18876    - regex: 'W-V800-(TVM|TIM|EEA|OPE|DU)'
18877      model: 'View 3 Lite'
18878    - regex: 'W-K130-(?:OPE|EEA)'
18879      model: 'Y50'
18880    - regex: 'W-K420-EEA'
18881      model: 'Y50'
18882    - regex: 'W-K510-(?:TVM|EEA|OPE|SUN|BYT|TH)|W-K510S-SWI'
18883      model: 'Y60'
18884    - regex: 'W-K560-EEA'
18885      model: 'Y61'
18886    - regex: 'W-K610'
18887      model: 'Y62'
18888    - regex: 'W-V720-(?:EEA|OPE|SUN)'
18889      model: 'Y80'
18890    - regex: 'W-P311-(?:EEA|OPE|TVM)'
18891      model: 'View 3'
18892    - regex: 'W-P611-(?:EEA|OPE)'
18893      model: 'View 3 Pro'
18894    - regex: 'W-V830-(?:EEA|OPE)'
18895      model: 'View 4'
18896    - regex: 'W-V730-(?:EEA|TVM)'
18897      model: 'View 4 Lite'
18898    - regex: 'W-V745-TVM'
18899      model: 'Power U10'
18900    - regex: 'W-U300(?:[);/ ]|$)'
18901      model: 'Ride'
18902    - regex: 'U520AS(?:[);/ ]|$)'
18903      model: 'Ride 2'
18904    - regex: 'Wiko ([^/;]+) Build'
18905      model: '$1'
18906    - regex: 'Wiko ([^/; ]+)'
18907      model: '$1'
18908
18909# Wieppo
18910Wieppo:
18911  regex: 'Wieppo (S6 Lite|S[658]|E1)(?:[);/ ]|$)'
18912  device: 'smartphone'
18913  model: '$1'
18914
18915# Weimei
18916Weimei:
18917  regex: 'weplus_3'
18918  device: 'smartphone'
18919  models:
18920    - regex: 'weplus_3'
18921      model: 'WePlus 3'
18922
18923# Wileyfox
18924Wileyfox:
18925  regex: 'Wileyfox|Swift 2(?:[);/ ]|$)'
18926  device: 'smartphone'
18927  models:
18928    - regex: 'Wileyfox Spark \+'
18929      model: 'Spark +'
18930    - regex: 'Wileyfox; Pro'
18931      model: 'Pro'
18932    - regex: 'Wileyfox Spark X'
18933      model: 'Spark X'
18934    - regex: 'Wileyfox (Spark|Swift)'
18935      model: '$1'
18936    - regex: 'Wileyfox ([^/)]+)(?: Build|\))'
18937      model: '$1'
18938    - regex: 'Swift 2 (X|Plus)(?:[);/ ]|$)'
18939      model: 'Swift 2 $1'
18940    - regex: 'Swift 2(?:[);/ ]|$)'
18941      model: 'Swift 2'
18942
18943# Wolder
18944Wolder:
18945  regex: 'miSmart|miTab|WIAM \#24|WOLDER'
18946  device: 'smartphone'
18947  models:
18948    - regex: 'WIAM \#24'
18949      model: 'Wiam #24'
18950    - regex: 'WOLDER_WIAM_65'
18951      model: 'Wiam #65'
18952    - regex: 'miSmart[ \-_]?([^/]+) Build'
18953      model: 'miSmart $1'
18954    - regex: 'miTab[ \-_]?([^/)]+)(?: Build|\))'
18955      device: 'tablet'
18956      model: 'miTab $1'
18957
18958# Wolfgang
18959Wolfgang:
18960  regex: 'AT[ _-]AS([0-9A-Z]+)(?:[);/ ]|$)'
18961  device: 'smartphone'
18962  model: 'AT-AS$1'
18963
18964# Wonu
18965Wonu:
18966  regex: 'Wonu ([a-z0-9]+)'
18967  device: 'feature phone'
18968  model: '$1'
18969
18970# Woo
18971Woo:
18972  regex: 'SP5026i-Scorpio'
18973  device: 'smartphone'
18974  models:
18975    - regex: 'SP5026i-Scorpio'
18976      model: 'Scorpio'
18977
18978# Woxter (woxter.es)
18979Woxter:
18980  regex: 'Woxter[ _]|Nimbus 101Q'
18981  device: 'tablet'
18982  models:
18983    - regex: 'Nimbus ?(101Q|115|1100RX)(?:[);/ ]|$)'
18984      model: 'Nimbus $1'
18985    - regex: 'WOXTER[ _]I-101(?:[);/ ]|$)'
18986      model: 'i-101'
18987    - regex: 'Woxter[ _]([SQ]X) ?([0-9A-Z]+)(?:[);/ ]|$)'
18988      model: '$1 $2'
18989    - regex: 'Woxter[_ ](?:Zielo[ _])?(Q27|Z800|Z420)(?:[);/ ]|$)'
18990      device: 'smartphone'
18991      model: 'Zielo $1'
18992    - regex: 'Woxter[ _]([^/;)]+)(?: Build|\))'
18993      model: '$1'
18994
18995# X-View
18996X-View:
18997  regex: 'ZEN_U5\+|AMBER_KIDS|Proton_Amber_HD|PROTON_JADE_2_PRO'
18998  device: 'smartphone'
18999  models:
19000    - regex: 'ZEN_U5\+'
19001      model: 'ZEN U5+'
19002    - regex: 'AMBER_KIDS'
19003      device: 'tablet'
19004      model: 'Amber Kids'
19005    - regex: 'Proton_Amber_HD'
19006      device: 'tablet'
19007      model: 'Proton Amber HD'
19008    - regex: 'PROTON_JADE_2_PRO'
19009      device: 'tablet'
19010      model: 'Proton Jade 2 Pro'
19011
19012# POCO (sub brand Xiaomi)
19013POCO:
19014  regex: '(?:POCO[ _](?:X[23]|F2 PRO|M[32]|F3)|M2010J19C[GI]|M2007J20C[ITG]|M2012K11AG|M2006C3MI|M2004J19PI|M2102J20S[GI]|M2103K19P[GY]|21061110AG|M2104K10I)(?:[);/ ]|$)'
19015  device: 'smartphone'
19016  models:
19017    - regex: 'POCO X2(?:[);/ ]|$)'
19018      model: 'X2'
19019    - regex: '(?:M2012K11AG|POCO F3)(?:[);/ ]|$)'
19020      model: 'F3'
19021    - regex: 'M2004J19PI(?:[);/ ]|$)'
19022      model: 'M2'
19023    - regex: '(?:M2103K19P[GY]|M3 Pro 5G)(?:[);/ ]|$)'
19024      model: 'M3 Pro 5G'
19025    - regex: 'POCO M([23]) Pro(?:[);/ ]|$)'
19026      model: 'M$1 Pro'
19027    - regex: '(?:M2010J19C[GI]|POCO M3)(?:[);/ ]|$)'
19028      model: 'M3'
19029    - regex: '(?:M2007J20C[GT]|POCO X3 NFC)(?:[);/ ]|$)'
19030      model: 'X3 NFC'
19031    - regex: '(?:M2102J20S[GI]|X3 Pro)(?:[);/ ]|$)'
19032      model: 'X3 Pro'
19033    - regex: '(?:M2007J20CI|POCO X3)(?:[);/ ]|$)'
19034      model: 'X3'
19035    - regex: '(?:21061110AG)(?:[);/ ]|$)'
19036      model: 'X3 GT'
19037    - regex: '(?:M2104K10I)(?:[);/ ]|$)'
19038      model: 'F3 GT'
19039    - regex: 'M2006C3MI(?:[);/ ]|$)'
19040      model: 'C3'
19041    - regex: 'POCO F2 PRO(?:[);/ ]|$)'
19042      model: 'F2 Pro'
19043
19044
19045# Zopo
19046Zopo:
19047  regex: 'ZOPO|(?:ZOPO[_ ])?(Flash X3|F2_Color5_5|F5_Color_M5|ZP[0-9]{2,}[^/;]+)(?:\)| Build)'
19048  device: 'smartphone'
19049  models:
19050    - regex: '(?:ZOPO_C2_MOD|ZP998)(?:[);/ ]|$)'
19051      model: 'C2 II'
19052    - regex: 'ZOPO 9xxQuad(?:[);/ ]|$)'
19053      model: '9XX Quad'
19054    - regex: '(?:ZOPO_)?ZP980[+](?:[);/ ]|$)'
19055      model: 'ZP980+'
19056    - regex: '(?:ZOPO_)?ZP980(?:[);/ ]|$)'
19057      model: 'Scorpio'
19058    - regex: 'ZP952(?:[);/ ]|$)'
19059      model: 'Speed 7 Plus'
19060    - regex: 'ZP951(?:[);/ ]|$)'
19061      model: 'Speed 7'
19062    - regex: 'ZP955(?:[);/ ]|$)'
19063      model: 'Speed 8'
19064    - regex: 'ZP950[+h]?(?:[);/ ]|$)'
19065      model: 'Leader Max'
19066    - regex: 'ZP(?:900H?|910)(?:[);/ ]|$)'
19067      model: 'Leader'
19068    - regex: 'ZP(?:800H|810)(?:[);/ ]|$)'
19069      model: 'Libero HD'
19070    - regex: 'ZP500[+]?(?:[);/ ]|$)'
19071      model: 'Libero'
19072    - regex: 'ZP330(?:[);/ ]|$)'
19073      model: 'Color C'
19074    - regex: 'ZP370(?:[);/ ]|$)'
19075      model: 'Color S'
19076    - regex: 'F2_Color5_5(?:[);/ ]|$)'
19077      model: 'Color F2'
19078    - regex: 'F5_Color_M5(?:[);/ ]|$)'
19079      model: 'F5 Color M5'
19080    - regex: 'ZP5(63|86)(?:[);/ ]|$)'
19081      model: 'Color X'
19082    - regex: 'ZP567(?:[);/ ]|$)'
19083      model: 'Color C5i'
19084    - regex: 'ZP300[S+]?(?:[);/ ]|$)'
19085      model: 'Field'
19086    - regex: 'ZP200[+]?(?:[);/ ]|$)'
19087      model: 'Shining'
19088    - regex: 'ZP100(?:[);/ ]|$)'
19089      model: 'Pilot'
19090    - regex: 'ZP1790(?:[);/ ]|$)'
19091      model: 'Flash X2'
19092    - regex: 'ZP781(?:[);/ ]|$)'
19093      model: 'Flash G5 Plus'
19094    - regex: 'ZOPO[_ ]ONE[_ ]([YXTP])(?:[);/ ]|$)'
19095      model: 'One $1'
19096    - regex: '(?:ZOPO_)?(Flash X3|X1i|ZP[0-9]{2,}[^/;)]+)(?: Build|\))'
19097      model: '$1'
19098
19099# Xiaomi
19100Xiaomi:
19101  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|POCOPHONE|(?:SHARK )?(KLE|KSR|MBU)-[AH]0|SK[RW]-[AH]0|PRS-H0|POCO F1|DLT-[AH]0|MIBOX[234]([_ ]PRO)?|MiTV4[CSX]?|MiTV-(MSSP[01]|AXSO0|AESP0)|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|2106118C|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\+|MI_(NOTE_Pro|5X|4i|(?:A2|8)_Lite)|A001XM|lancelot|XIG02|21061119[AD]G|M2101K(?:7BL|9AI)|M2012K10C|M2104K10AC|21051182[CG]|21081111RG|2109119DG|2107113SG|joyeuse|galahad| MDG1'
19102  device: 'smartphone'
19103  models:
19104    # specific smartphone models
19105    - regex: 'SKR-[AH]0'
19106      model: 'Black Shark'
19107    - regex: 'AWM-A0'
19108      model: 'Black Shark Helo'
19109    - regex: 'SKW-[AH]0'
19110      model: 'Black Shark 2'
19111    - regex: 'DLT-[AH]0'
19112      model: 'Black Shark 2 Pro'
19113    - regex: '(?:SHARK )?KLE-A0'
19114      model: 'Black Shark 3'
19115    - regex: '(?:SHARK )?KSR-A0'
19116      model: 'Black Shark 4 Pro'
19117    - regex: '(?:SHARK )?KLE-H0'
19118      model: 'Black Shark 3 5G'
19119    - regex: '(?:SHARK )?MBU-H0'
19120      model: 'Black Shark 3 Pro 5G'
19121    - regex: '(?:SHARK )?MBU-A0'
19122      model: 'Black Shark 3 Pro'
19123    - regex: '(?:SHARK )?PRS-H0'
19124      model: 'Black Shark 4'
19125    - regex: 'Xiaomi_2014501|2014501 Build'
19126      model: 'Hongmi 4G'
19127    - regex: 'Xiaomi_2014011|2014011 Build'
19128      model: 'Hongmi 1S'
19129    - regex: 'Xiaomi_201302[23]|201302[23] Build'
19130      model: 'Hongmi'
19131    - regex: 'Xiaomi[_-]2014818|2014818 Build'
19132      model: 'Hongmi 2 3G'
19133    - regex: 'Xiaomi_2014817|2014817 Build'
19134      model: 'Hongmi 2'
19135    - regex: 'Xiaomi[_-]201481[123]|201481[123] Build'
19136      model: 'Hongmi 2 4G'
19137    - regex: 'MI[_ ]PLAY(?:[);/ ]|$)'
19138      model: 'Mi Play'
19139    - regex: 'Mi 9 SE(?:[);/ ]|$)'
19140      model: 'Mi 9 SE'
19141    - regex: 'MI CC 9e'
19142      model: 'Mi CC 9e'
19143    - regex: 'MI CC9 Pro Premium Edition'
19144      model: 'Mi CC 9 Pro Premium Edition'
19145    - regex: 'MI CC9 Pro'
19146      model: 'Mi CC 9 Pro'
19147    - regex: 'MI CC 9(?: Meitu Edition)?(?:[);/ ]|$)'
19148      model: 'Mi CC 9'
19149    - regex: 'Xiaomi_M2001J2E_TD-LTE(?:[);/ ]|$)'
19150      model: 'Mi 10'
19151    - regex: 'Mi 10 Pro(?:[);/ ]|$)'
19152      model: 'Mi 10 Pro'
19153    - regex: 'M2011K2[CG](?:[);/ ]|$)'
19154      model: 'Mi 11'
19155    - regex: 'M2012K11AI(?:[);/ ]|$)'
19156      model: 'Mi 11X'
19157    - regex: 'M2012K11I(?:[);/ ]|$)'
19158      model: 'Mi 11X Pro'
19159    - regex: 'M2007J3S[GI](?:[);/ ]|$)'
19160      model: 'Mi 10T Pro 5G'
19161    - regex: 'M2007J17G(?:[);/ ]|$)'
19162      model: 'Mi 10T Lite 5G'
19163    - regex: 'M2007J3S[CYP](?:[);/ ]|$)'
19164      model: 'Mi 10T 5G'
19165    - regex: 'M2007J1SC(?:[);/ ]|$)'
19166      model: 'Mi 10 Ultra 5G'
19167    - regex: 'M2102J2SC(?:[);/ ]|$)'
19168      model: 'Mi 10S'
19169    - regex: '(?:M2002J9[EGS]|XIG01)(?:[);/ ]|$)'
19170      model: 'Mi 10 Lite 5G'
19171    - regex: 'M2007J17I(?:[);/ ]|$)'
19172      model: 'Mi 10i'
19173    - regex: 'M2012K11G(?:[);/ ]|$)'
19174      model: 'Mi 11i'
19175    - regex: '21081111RG(?:[);/ ]|$)'
19176      model: 'Mi 11T'
19177    - regex: '2107113SG(?:[);/ ]|$)'
19178      model: 'Mi 11T Pro'
19179    - regex: '(?:M2101K9[GCR]|2109119DG)(?:[);/ ]|$)'
19180      model: 'Mi 11 Lite 5G'
19181    - regex: '(?:M2101K9A[GI]|Mi 11 Lite)(?:[);/ ]|$)'
19182      model: 'Mi 11 Lite'
19183    - regex: 'M2102K1[CG](?:[);/ ]|$)'
19184      model: 'Mi 11 Ultra'
19185    - regex: 'M2102K1AC(?:[);/ ]|$)'
19186      model: 'Mi 11 Pro'
19187    - regex: 'MI[ _]8[ _]Lite(?:[);/ ]|$)'
19188      model: 'Mi 8 Lite'
19189    - regex: 'MI 8 Explorer Edition(?:[);/ ]|$)'
19190      model: 'Mi 8 Explorer Edition'
19191    - regex: 'MI 8 ([a-z]+)(?:[);/ ]|$)'
19192      model: 'Mi 8 $1'
19193    - regex: 'Mi 9T Pro(?:[);/ ]|$)'
19194      model: 'Mi 9T Pro'
19195    - regex: 'Mi ?9 Pro 5G(?:[);/ ]|$)'
19196      model: 'Mi 9 Pro 5G'
19197    - regex: 'MI 9 Transparent Edition(?:[);/ ]|$)'
19198      model: 'Mi 9 Transparent Edition'
19199    - regex: 'MI ([89]) Lite(?:[);/ ]|$)'
19200      model: 'Mi $1 Lite'
19201    - regex: 'MI 5s Plus(?:[);/ ]|$)'
19202      model: 'Mi 5s Plus'
19203    - regex: 'Xiaomi_MDT2'
19204      model: 'Mi 5X'
19205    - regex: 'Xiaomi_2013061|2013061 Build'
19206      model: 'Mi 3'
19207    - regex: 'Mi[- ]([43])c(?:[);/ ]|$)'
19208      model: 'Mi $1C'
19209    - regex: 'MI 4W(?:[);/ ]|$)'
19210      model: 'Mi 4W'
19211    - regex: 'Mi_4i(?:[);/ ]|$)'
19212      model: 'Mi 4i'
19213    - regex: 'MI 4 ?LTE(?:[);/ ]|$)'
19214      model: 'Mi 4 LTE'
19215    - regex: 'MI MAX ([23])(?:[);/ ]|$)'
19216      model: 'Mi Max $1'
19217    - regex: 'MI MAX(?:[);/ ]|$)'
19218      model: 'Mi Max'
19219    - regex: 'Mi[ _]A2[ _]Lite(?:[);/ ]|$)'
19220      model: 'Mi A2 Lite'
19221    - regex: '2106118C(?:[);/ ]|$)'
19222      model: 'Mi Mix 4'
19223    - regex: 'Mi MIX 3 5G(?:[);/ ]|$)'
19224      model: 'Mi Mix 3 5G'
19225    - regex: 'MIX ([23])(?:[);/ ]|$)'
19226      model: 'Mi Mix $1'
19227    - regex: 'MIX 2S(?:[);/ ]|$)'
19228      model: 'Mi Mix 2S'
19229    - regex: 'MIX(?:[);/ ]|$)'
19230      model: 'Mi Mix'
19231    - regex: 'Mi Note 3(?:[);/ ]|$)'
19232      model: 'Mi Note 3'
19233    - regex: 'POCOPHONE[ _]F1|POCO F1'
19234      model: 'Pocophone F1'
19235    - regex: 'Redmi 5 Plus'
19236      model: 'Redmi 5 Plus'
19237    - regex: 'MDG1(?:[);/ ]|$)'
19238      model: 'Redmi 5'
19239    - regex: 'WT88047(?:[);/ ]|$)'
19240      model: 'Redmi 2'
19241    - regex: 'HM2014819(?:[);/ ]|$)'
19242      model: 'Redmi 2 Pro'
19243    - regex: 'HM 2A(?:[);/ ]|$)'
19244      model: 'Redmi 2A'
19245    - regex: 'HM 1S[CW]?(?:[);/ ]|$)'
19246      model: 'Redmi 1S'
19247    - regex: 'HM 1(?:[);/ ]|$)'
19248      model: 'Redmi 1'
19249    - regex: 'M2004J7AC(?:[);/ ]|$)'
19250      model: 'Redmi 10X'
19251    - regex: '(?:M2004J19C|M2006C3MII|lancelot|galahad)(?:[);/ ]|$)'
19252      model: 'Redmi 9'
19253    - regex: 'M2010J19SI(?:[);/ ]|$)'
19254      model: 'Redmi 9 Power'
19255    - regex: 'M2006C3L[GCI](?:[);/ ]|$)'
19256      model: 'Redmi 9A'
19257    - regex: 'M2006C3LII(?:[);/ ]|$)'
19258      model: 'Redmi 9i'
19259    - regex: 'M2006C3M[GT](?:[);/ ]|$)'
19260      model: 'Redmi 9C'
19261    - regex: 'M2006C3LVG(?:[);/ ]|$)'
19262      model: 'Redmi 9AT'
19263    - regex: 'M2010J19S[GYL](?:[);/ ]|$)'
19264      model: 'Redmi 9T'
19265    - regex: 'M2006C3MNG(?:[);/ ]|$)'
19266      model: 'Redmi 9C NFC'
19267    - regex: '21061119[AD]G(?:[);/ ]|$)'
19268      model: 'Redmi 10'
19269    - regex: 'M2004J7BC(?:[);/ ]|$)'
19270      model: 'Redmi 10X Pro'
19271    - regex: 'Redmi K20 Pro Premium Edition(?:[);/ ]|$)'
19272      model: 'Redmi K20 Pro Premium Edition'
19273    - regex: 'Redmi K([23]0) Pro(?:[);/ ]|$)'
19274      model: 'Redmi K$1 Pro'
19275    - regex: 'Redmi K30 5G(?:[);/ ]|$)'
19276      model: 'Redmi K30 5G'
19277    - regex: 'M2012K11AC(?:[);/ ]|$)'
19278      model: 'Redmi K40'
19279    - regex: 'M2012K10C(?:[);/ ]|$)'
19280      model: 'Redmi K40 Gaming'
19281    - regex: 'M2012K11C(?:[);/ ]|$)'
19282      model: 'Redmi K40 Pro'
19283    - regex: 'M2006J10C(?:[);/ ]|$)'
19284      model: 'Redmi K30 Ultra'
19285    - regex: 'Redmi Y1 Lite(?:[);/ ]|$)'
19286      model: 'Redmi Y1 Lite'
19287    - regex: 'Redmi 6 Pro(?:[);/ ]|$)'
19288      model: 'Redmi 6 Pro'
19289    - regex: 'Redmi 4 Prime(?:[);/ ]|$)'
19290      model: 'Redmi 4 Prime'
19291      # specific tablet models
19292    - regex: '21051182[CG](?:[);/ ]|$)'
19293      model: 'Mi Pad 5'
19294      device: 'tablet'
19295    - regex: 'MI PAD 4 PLUS(?:[);/ ]|$)'
19296      model: 'Mi Pad 4 Plus'
19297      device: 'tablet'
19298    - regex: 'MI PAD 4(?:[);/ ]|$)'
19299      model: 'Mi Pad 4'
19300      device: 'tablet'
19301    - regex: 'MI PAD 3(?:[);/ ]|$)'
19302      model: 'Mi Pad 3'
19303      device: 'tablet'
19304    - regex: 'MI PAD 2(?:[);/ ]|$)'
19305      model: 'Mi Pad 2'
19306      device: 'tablet'
19307    - regex: 'MI PAD(?:[);/ ]|$)'
19308      model: 'Mi Pad'
19309      device: 'tablet'
19310
19311      # specific tv models
19312    - regex: 'MIBOX3[ _]Pro(?:[);/ ]|$)'
19313      model: 'Mi Box 3 Pro'
19314      device: 'tv'
19315    - regex: 'MIBOX([234])(?:[);/ ]|$)'
19316      model: 'Mi Box $1'
19317      device: 'tv'
19318    - regex: 'MiBOX1S(?:[);/ ]|$)'
19319      model: 'Mi Box 1S'
19320      device: 'tv'
19321    - regex: 'MiTV-MSSP1(?:[);/ ]|$)'
19322      model: 'MiTV 4S'
19323      device: 'tv'
19324    - regex: 'MiTV-AESP0(?:[);/ ]|$)'
19325      model: 'MiTV Stick'
19326      device: 'tv'
19327    - regex: '(?:MiTV-AXSO0|MiTV4(?:A|-ANSM0)|MiTV-MSSP0)(?:[);/ ]|$)'
19328      model: 'MiTV 4A'
19329      device: 'tv'
19330    - regex: 'MiTV(4[CSX]|4)(?:[);/ ]|$)'
19331      model: 'MiTV $1'
19332      device: 'tv'
19333
19334      # specific phablet models
19335    - regex: 'M2011J18C(?:[);/ ]|$)'
19336      device: 'phablet'
19337      model: 'Mi Mix Fold'
19338    - regex: 'HM NOTE 1W(?:[);/ ]|$)'
19339      device: 'phablet'
19340      model: 'Redmi Note'
19341    - regex: 'HM NOTE 1TD (?:Build|MIUI)'
19342      device: 'phablet'
19343      model: 'Hongmi Note 1TD'
19344    - regex: 'HM NOTE 1(?:LTE|S)(?:W|GLOBAL|TD)? (?:Build|MIUI)|HM NOTE 1LTE'
19345      device: 'phablet'
19346      model: 'Redmi Note 4G'
19347    - regex: 'Xiaomi[_ ]2015052'
19348      model: 'Redmi Note 2'
19349      device: 'phablet'
19350    - regex: 'Redmi Note 5A Prime'
19351      model: 'Redmi Note 5A Prime'
19352      device: 'phablet'
19353    - regex: '(?:M2010J19SC)(?:[);/ ]|$)'
19354      model: 'Redmi Note 9'
19355      device: 'phablet'
19356    - regex: 'M2003J15SC(?:[);/ ]|$)'
19357      model: 'Redmi Note 10X'
19358      device: 'phablet'
19359    - regex: 'M2101K7BL(?:[);/ ]|$)'
19360      model: 'Redmi Note 10S'
19361      device: 'phablet'
19362    - regex: '(?:M2007J22G|A001XM)(?:[);/ ]|$)'
19363      model: 'Redmi Note 9T 5G'
19364      device: 'phablet'
19365    - regex: 'M2007J22C(?:[);/ ]|$)'
19366      model: 'Redmi Note 9 5G'
19367      device: 'phablet'
19368    - regex: 'M2007J17C(?:[);/ ]|$)'
19369      model: 'Redmi Note 9 Pro 5G'
19370      device: 'phablet'
19371    - regex: 'joyeuse(?:[);/ ]|$)'
19372      model: 'Redmi Note 9 Pro'
19373      device: 'phablet'
19374    - regex: 'joyeuse(?:[);/ ]|$)'
19375      model: 'Redmi Note 9 Pro'
19376      device: 'phablet'
19377    - regex: 'M2101K7A[GI]'
19378      model: 'Redmi Note 10'
19379      device: 'phablet'
19380    - regex: 'M2103K19Y'
19381      model: 'Redmi Note 10T'
19382      device: 'phablet'
19383    - regex: 'M2101K7B(?:[GI]|NY)(?:[);/ ]|$)'
19384      model: 'Redmi Note 10S'
19385      device: 'phablet'
19386    - regex: '(?:M2103K19[GC]|Redmi Note 10 5G)(?:[);/ ]|$)'
19387      model: 'Redmi Note 10 5G'
19388      device: 'phablet'
19389    - regex: 'M2103K19I'
19390      model: 'Redmi Note 10T 5G'
19391      device: 'phablet'
19392    - regex: 'XIG02(?:[);/ ]|$)'
19393      model: 'Redmi Note 10 JE'
19394      device: 'phablet'
19395    - regex: '(?:M2101K6[GIRP]|M2104K10AC|Redmi Note 10 Pro)(?:[);/ ]|$)'
19396      model: 'Redmi Note 10 Pro'
19397      device: 'phablet'
19398    - regex: '(?:M1908C3JGG|Redmi Note 8 \(2021\))(?:[);/ ]|$)'
19399      model: 'Redmi Note 8 (2021)'
19400      device: 'phablet'
19401    - regex: 'Redmi Note ([5-9]) Pro(?:[);/ ]|$)'
19402      model: 'Redmi Note $1 Pro'
19403      device: 'phablet'
19404    - regex: 'Redmi[ _]Note[ _]([^;/) ]+)?'
19405      model: 'Redmi Note $1'
19406      device: 'phablet'
19407    - regex: 'Redmi[ _]([^;/) ]+)?'
19408      model: 'Redmi $1'
19409    - regex: 'MI_NOTE_Pro'
19410      model: 'Mi Note Pro'
19411      device: 'phablet'
19412    - regex: 'Mi Note 10 Pro'
19413      model: 'Mi Note 10 Pro'
19414      device: 'phablet'
19415    - regex: 'Mi Note 10 Lite'
19416      model: 'Mi Note 10 Lite'
19417      device: 'phablet'
19418    - regex: 'Mi Note 10'
19419      model: 'Mi Note 10'
19420      device: 'phablet'
19421    - regex: 'MI[ _]Note[ _]([^;/) ]+)?'
19422      model: 'Mi Note $1'
19423      device: 'phablet'
19424
19425    # specific feature phone models
19426    - regex: 'Qin 1s\+'
19427      model: 'Qin 1s+'
19428
19429    # general detections
19430    - regex: 'MI[- ]One[ _]?Plus(?:[);/ ]|$)'
19431      model: 'Mi One Plus'
19432    - regex: 'Mi[- ]One[ _]?([a-z0-9]+)?(?: Build|[);]])'
19433      model: 'Mi One $1'
19434    - regex: 'MI[ _]([^;/]*) Build'
19435      model: 'Mi $1'
19436    - regex: 'MI[ _]([a-z0-9]+)(?:[);/ ]|$)'
19437      model: 'Mi $1'
19438    - regex: 'HM Note ([^/;]+) (?:Build|MIUI)'
19439      device: 'phablet'
19440      model: 'Note'
19441    - regex: 'HM ([^/;]+) (?:Build|MIUI)'
19442      model: 'HM $1'
19443    - regex: 'Xiaomi[ _-]([^/;]+)(?: Build|$)'
19444      model: '$1'
19445
19446# Xion
19447Xion:
19448  regex: 'XI-CE(?:655|U[48])'
19449  device: 'smartphone'
19450  models:
19451    - regex: 'XI-CE(655|U[48])'
19452      model: 'CE$1'
19453
19454# Xolo
19455Xolo:
19456  regex: 'Xolo|(?:Q600|Q700s?|Q800|Q1000s|Q1000[ _]Opus|Q1010i|Q2000|Omega[ _]5.[05]|Era5X|Era[ _]2V|Era_4X(?:_2GB)?)(?:[);/ ]|$)|BLACK-1XM'
19457  device: 'smartphone'
19458  models:
19459    - regex: 'BLACK-1XM'
19460      model: 'Black 1X'
19461    - regex: 'Era_?([45])X(?:[);/ ]|$)'
19462      model: 'Era $1X'
19463    - regex: 'Era_4X_2GB(?:[);/ ]|$)'
19464      model: 'Era 4X 2GB'
19465    - regex: 'Era[ _]2V(?:[);/ ]|$)'
19466      model: 'Era 2V'
19467    - regex: '(Q600 Club|Q600|Q700s?|Q800|Q1000s Plus|Q1000s|Q1000[ _]Opus|Q1010i|Q2000|Omega[ _]5.[05])(?:[);/ ]|$)'
19468      model: '$1'
19469    - regex: 'Xolo[ _]?([^;/]+) Build'
19470      model: '$1'
19471    - regex: 'Xolo[ _]?([a-z0-9_-]+)'
19472      model: '$1'
19473
19474# Yarvik
19475Yarvik:
19476  regex: 'Xenta[ \-]Tab|Luna TAB|TAB09-410|TAB10-410|TAB07-485|TAB0[78]-200|TAB08-201-3G|TAB9-200|TAB09-211|TAB10-2[01]1|TAB13-201'
19477  device: 'tablet'
19478  models:
19479    # explicit tablet models
19480    - regex: 'Luna TAB07-920N'
19481      model: 'Luna 7'
19482    - regex: 'Luna TAB07-10[01]'
19483      model: 'Luna 7c'
19484    - regex: 'Luna TAB274'
19485      model: 'Luna 7c'
19486    - regex: 'Luna TAB474'
19487      model: 'Luna 10'
19488    - regex: 'Luna TAB10-150'
19489      model: 'Luna 10c'
19490    - regex: 'TAB09-410'
19491      model: 'Noble 9.7'
19492    - regex: 'TAB10-410'
19493      model: 'Noble 10.1'
19494    - regex: 'TAB07-485'
19495      model: 'Noble Mini'
19496    - regex: 'Xenta-TAB07-21[01]'
19497      model: 'Xenta 7c'
19498    - regex: 'TAB07-200'
19499      model: 'Xenta 7ic'
19500    - regex: 'TAB08-200'
19501      model: 'Xenta 8ic'
19502    - regex: 'TAB08-201-3G'
19503      model: 'Xenta 8c'
19504    - regex: 'TAB9-200'
19505      model: 'Xenta 9.7ic'
19506    - regex: 'TAB09-211'
19507      model: 'Xenta 9.7ic+'
19508    - regex: 'TAB10-2[01]1'
19509      model: 'Xenta 10ic'
19510    - regex: 'TAB13-201'
19511      model: 'Xenta 13c'
19512
19513# Yes
19514'Yes':
19515  regex: 'M631Y|M685Y4|M651G_MY|YES (MPY(?:48|54))'
19516  device: 'smartphone'
19517  models:
19518    - regex: 'M631Y'
19519      model: 'Altitude'
19520    - regex: 'M651G_MY'
19521      model: 'Altitude 2'
19522    - regex: 'M685Y4'
19523      model: 'Altitude 3'
19524    - regex: 'YES (MPY(?:48|54))'
19525      model: '$1'
19526
19527# Yezz
19528Yezz:
19529  regex: 'Yezz|ANDY[ _]|(?:4E4|A5EI|LIV1)(?:[);/ ]|$)'
19530  device: 'smartphone'
19531  models:
19532    - regex: '4E4'
19533      model: 'Andy 4E4'
19534    - regex: 'Yezz-AC4EI'
19535      model: 'Andy 4EI'
19536    - regex: 'YEZZ-A4M'
19537      model: 'Andy A4M'
19538    - regex: 'A5EI'
19539      model: 'Andy A5EI'
19540    - regex: 'LIV1'
19541      model: 'LIV1'
19542
19543    - regex: 'Andy[ _]([A-Z]*[0-9]\.[0-9][A-Z0-9]*)(?:[ _](LTE))?'
19544      model: 'Andy $1 $2'
19545    - regex: 'Andy[ _]([A-Z]*[0-9])([0-9][A-Z0-9]*)(?:[ _](LTE))?'
19546      model: 'Andy $1.$2 $3'
19547    - regex: 'Andy[ _]([A-Z]*[0-9][A-Z0-9]+)(?:[ _](LTE))?'
19548      model: 'Andy $1 $2'
19549
19550
19551# Yu
19552Yu:
19553  regex: '(?:YU5[05]10[A]?|YU4711|AO5510|YU5050|YU501[14]|YU5551)(?:[);/ ]|$)'
19554  device: 'smartphone'
19555  models:
19556    - regex: 'YU5010[A]?(?:[);/ ]|$)'
19557      model: 'Yuphoria'
19558    - regex: 'YU5011(?:[);/ ]|$)'
19559      model: 'Yunique 2'
19560    - regex: 'YU5050(?:[);/ ]|$)'
19561      model: 'Yutopia'
19562    - regex: 'AO5510(?:[);/ ]|$)'
19563      model: 'Yureka'
19564    - regex: 'YU5551(?:[);/ ]|$)'
19565      model: 'Yureka 2'
19566    - regex: 'YU5510[A]?(?:[);/ ]|$)'
19567      model: 'Yureka Plus'
19568    - regex: 'YU4711(?:[);/ ]|$)'
19569      model: 'Yunique'
19570    - regex: 'YU5014(?:[);/ ]|$)'
19571      model: 'Ace'
19572
19573# Yuandao
19574Yuandao:
19575  regex: 'N101[ _]DUAL(?:[ _]CORE)?(?:[ _]?2|\|\|)?(?:[ _]V11)?(?:[);/ ]|$)'
19576  device: 'tablet'
19577  model: 'N101'
19578
19579# Yusun
19580Yusun:
19581  regex: 'Yusun|LA2-T'
19582  device: 'smartphone'
19583  models:
19584    # explicit smartphone models
19585    - regex: 'LA2-T'
19586      model: 'LA2-T'
19587
19588    - regex: 'Yusun ([^;/]+) Build'
19589      model: '$1'
19590    - regex: 'Yusun ([a-z0-9_\-\+]+)'
19591      model: '$1'
19592
19593# Ytone
19594Ytone:
19595  regex: 'YTONE[ _\-]'
19596  device: 'smartphone'
19597  models:
19598    - regex: 'YTONE[ _\-]?([^/;]+) Build'
19599      model: '$1'
19600    - regex: 'YTONE[ _\-]?([^);/ ]+)'
19601      model: '$1'
19602
19603# Zonda
19604Zonda:
19605  regex: '(ZM(?:CK|EM|TFTV|TN)[a-z0-9]+)|ZA409'
19606  device: 'feature phone'
19607  models:
19608    - regex: 'ZA409'
19609      device: 'smartphone'
19610      model: 'Muzic'
19611    - regex: '(ZM(?:CK|EM|TFTV|TN)[a-z0-9]+)'
19612      model: '$1'
19613
19614# ZYQ
19615ZYQ:
19616  regex: 'ZYQ-Q88|(Q(?:2602|262[436]|638|2688|272[89]|3022|3623|TAB Tab4|328 m9|328|668)|J77|Q[._](?:Up|Boss P99|Dee R09|Good M9|Hi|Hot|Me|Mate R99|Next|TOP-X8|You))(?:[);/ ]|$)'
19617  device: 'smartphone'
19618  models:
19619    - regex: 'Q638'
19620      model: 'I7'
19621    - regex: 'Q2624'
19622      model: 'Cheer 3G'
19623    - regex: 'Q2602'
19624      model: 'TV Next'
19625    - regex: 'Q2728'
19626      model: 'Zone 3G'
19627    - regex: 'Q2729'
19628      model: 'Q2729'
19629    - regex: 'Q2688'
19630      model: 'Q2688'
19631    - regex: 'Q2623'
19632      model: 'Win 3G'
19633    - regex: 'Q2626'
19634      model: 'Care 3G'
19635    - regex: 'Q3623'
19636      model: 'Braw 3G'
19637    - regex: 'Q3022'
19638      model: 'Q3022'
19639    - regex: 'Q328 m9'
19640      model: 'Q328 M9'
19641    - regex: 'Q328'
19642      model: 'Speed 3G'
19643    - regex: 'Q668'
19644      model: 'TV I4'
19645    - regex: 'J77'
19646      model: 'Q.Dee'
19647    - regex: 'Q\.Up C5'
19648      model: 'Q.Up C5'
19649    - regex: 'Q\.Up'
19650      model: 'Q.Up'
19651    - regex: 'Q\.Boss P99'
19652      model: 'Q.Boss P99'
19653    - regex: 'Q[._]Dee R09'
19654      model: 'Q.Dee R09'
19655    - regex: 'Q\.Good M9'
19656      model: 'Q.Good M9'
19657    - regex: 'Q[._]Hi S1'
19658      model: 'Q.Hi S1'
19659    - regex: 'Q[._]Hi'
19660      model: 'Q.Hi'
19661    - regex: 'Q[._]Hot P7 3G'
19662      model: 'Q.Hot P7 3G'
19663    - regex: 'Q[._]Hot'
19664      model: 'Q.Hot'
19665    - regex: 'Q[._]Me Phone7 3G'
19666      model: 'Q.Me Phone 7 3G'
19667    - regex: 'Q[._]Me Plus7'
19668      model: 'Q.Me Plus 7'
19669    - regex: 'Q[._]Me'
19670      model: 'Q.Me'
19671    - regex: 'Q[._]Mate R99'
19672      model: 'Q.Mate R99'
19673    - regex: 'Q[._]Next B7'
19674      model: 'Q.Next B7'
19675    - regex: 'Q[._]Next J2'
19676      model: 'Q.Next J2'
19677    - regex: 'Q[._]TOP-X8'
19678      model: 'Q.Top X8'
19679    - regex: 'Q[._]You'
19680      model: 'Q.You'
19681    - regex: 'QTAB Tab4'
19682      model: 'QTab Tab4'
19683      device: 'tablet'
19684    - regex: 'ZYQ-Q88'
19685      model: 'Q88'
19686      device: 'tablet'
19687
19688
19689# Vivax (www.vivax.com)
19690Vivax:
19691  regex: 'VIVAX|(?:Fly5[_ ]Lite|Fun[_ ]S500|Point[_ ](?:X[12]|X501|X450)|PRO3|32LE77SM|40LE77SM|FUN S1|FUN_S20)(?:[);/ ]|$)'
19692  device: 'smartphone'
19693  models:
19694    - regex: 'Fly5[_ ]Lite(?:[);/ ]|$)'
19695      model: 'Fly 5 Lite'
19696    - regex: 'Point_X([12])(?:[);/ ]|$)'
19697      model: 'Point X$1'
19698    - regex: 'Fun[_ ]S500(?:[);/ ]|$)'
19699      model: 'Fun S500'
19700    - regex: 'FUN[ _]S(1|20)(?:[);/ ]|$)'
19701      model: 'Fun S$1'
19702    - regex: 'VIVAX[ _]Fly ?([32])(?:[);/ ]|$)'
19703      model: 'Fly $1'
19704    - regex: 'VIVAX[ _]Fly[ _]V(1|550)(?:[);/ ]|$)'
19705      model: 'Fly V$1'
19706    - regex: '(?:VIVAX )?(Point[ _](?:X551|X501|X450))(?:[);/ ]|$)'
19707      model: '$1'
19708    - regex: 'SMART Point X5010(?:[);/ ]|$)'
19709      model: 'Smart Point X5010'
19710    - regex: 'VIVAX[_ ]PRO3'
19711      model: 'Pro 3'
19712    - regex: 'VIVAX TABLET TPC 802 3G(?:[);/ ]|$)'
19713      model: 'TPC-802 3G'
19714
19715    - regex: '(32LE77SM|40LE77SM)'
19716      device: 'tv'
19717      model: '$1'
19718
19719# MLS or Making Life Simple (mlsinnovation.com)
19720MLS: #iQ
19721  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|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)(?:[);/ ]|$)'
19722  device: 'smartphone'
19723  models:
19724    - regex: 'IQ0705(?:[);/ ]|$)'
19725      model: 'iQTalk Twist'
19726    - regex: 'IQL550(?:[);/ ]|$)'
19727      model: 'Notch Lite'
19728    - regex: 'IQ1010W?(?:[);/ ]|$)'
19729      model: 'iQTab 10'
19730      device: 'tablet'
19731    - regex: 'IQ1012N?(?:[);/ ]|$)'
19732      model: 'iQTab Brave 3G'
19733      device: 'tablet'
19734    - regex: 'IQ1025(?:[);/ ]|$)'
19735      model: 'iQTab Action 4G'
19736      device: 'tablet'
19737    - regex: 'iQ9013_4N(?:[);/ ]|$)'
19738      model: 'Life 10.1"'
19739      device: 'tablet'
19740    - regex: 'IQ1019N(?:[);/ ]|$)'
19741      model: 'Alu Plus 4G 10.1"'
19742      device: 'tablet'
19743    - regex: 'iQ1805N(?:[);/ ]|$)'
19744      model: 'iQTab Ideal 8.0"'
19745      device: 'tablet'
19746    - regex: 'iQ181011N(?:[);/ ]|$)'
19747      model: 'iQTab Care 8.0"'
19748      device: 'tablet'
19749    - regex: 'IQ1380(?:[);/ ]|$)'
19750      model: 'Brain 3G'
19751    - regex: 'IQ1401(?:[);/ ]|$)'
19752      model: 'iQTalk Verse 4G'
19753    - regex: 'IQ1436(?:[);/ ]|$)'
19754      model: 'Color mini 4G'
19755    - regex: 'IQ1452a(?:[);/ ]|$)'
19756      model: 'TOP-S 4G'
19757    - regex: 'IQ1453(?:[);/ ]|$)'
19758      model: 'Trend 4G'
19759    - regex: 'IQ1470(?:[);/ ]|$)'
19760      model: 'iQTalk Onyx'
19761    - regex: 'IQ1502a(?:[);/ ]|$)'
19762      model: 'iQTalk Flame'
19763    - regex: 'IQ1511(?:[);/ ]|$)'
19764      model: 'iQTalk Spicy'
19765    - regex: 'IQ1552(?:[);/ ]|$)'
19766      model: 'iQTalk Titan 4G'
19767    - regex: 'IQ1553(?:[);/ ]|$)'
19768      model: 'Color 3 4G'
19769    - regex: 'IQ1568(?:[);/ ]|$)'
19770      model: 'Range 4G'
19771    - regex: 'IQ1570(?:[);/ ]|$)'
19772      model: 'iQTalk Color 5.5 4G'
19773    - regex: 'IQ1806(?:[);/ ]|$)'
19774      model: 'iQTab Rose'
19775      device: 'tablet'
19776    - regex: 'IQ1808(?:[);/ ]|$)'
19777      model: 'iQTab Master'
19778      device: 'tablet'
19779    - regex: 'IQ1810B_M(?:[);/ ]|$)'
19780      model: 'iQTab Novel 3G'
19781      device: 'tablet'
19782    - regex: 'IQ1832(?:[);/ ]|$)'
19783      model: 'Jet 3G'
19784      device: 'tablet'
19785    - regex: 'IQ1850(?:[);/ ]|$)'
19786      model: 'Diamond 5.2 4G'
19787    - regex: 'IQ1890(?:[);/ ]|$)'
19788      model: 'iQTalk Aura'
19789    - regex: 'IQ5017(?:[);/ ]|$)'
19790      model: 'Slice 4G'
19791    - regex: 'IQ9610(?:[);/ ]|$)'
19792      model: 'Angel 3G'
19793      device: 'tablet'
19794    - regex: 'iQM960(?:[);/ ]|$)'
19795      model: 'Angel 3G (2018)'
19796      device: 'tablet'
19797    - regex: 'IQG550(?:[);/ ]|$)'
19798      model: 'Style 4G'
19799    - regex: 'IQGW516(?:[);/ ]|$)'
19800      model: 'F5'
19801    - regex: 'IQE100(?:[);/ ]|$)'
19802      model: 'Energy 4G'
19803    - regex: 'iQE200(?:[);/ ]|$)'
19804      model: 'MX 4G'
19805    - regex: 'iQA27X_E(?:[);/ ]|$)'
19806      model: 'MX (2019)'
19807    - regex: 'IQEL41(?:[);/ ]|$)'
19808      model: 'Fab 4G'
19809    - regex: 'IQL30(?:[);/ ]|$)'
19810      model: 'Status 4G'
19811    - regex: 'IQL50(?:[);/ ]|$)'
19812      model: 'More 4G'
19813    - regex: 'IQL51(?:[);/ ]|$)'
19814      model: 'Wave 4G'
19815    - regex: 'IQM801(?:[);/ ]|$)'
19816      model: 'Brace 2018 4G'
19817      device: 'tablet'
19818    - regex: 'IQM1001(?:[);/ ]|$)'
19819      model: 'Level 4G'
19820      device: 'tablet'
19821    - regex: 'IQN700(?:[);/ ]|$)'
19822      model: 'Inspire 4G'
19823    - regex: 'IQP50(?:[);/ ]|$)'
19824      model: 'Ruby 4G'
19825    - regex: 'IQS300(?:[);/ ]|$)'
19826      model: 'DX 4G'
19827    - regex: 'IQS1001(?:[);/ ]|$)'
19828      model: 'Vista 4G' ## Gold
19829      device: 'tablet'
19830    - regex: 'IQR300(?:[);/ ]|$)'
19831      model: 'R3 4G'
19832    - regex: 'IQW608(?:[);/ ]|$)'
19833      model: 'Regal'
19834    - regex: 'iQW603(?:[);/ ]|$)'
19835      model: 'Phab 6.0"'
19836      device: 'phablet'
19837    - regex: 'IQW626(?:[);/ ]|$)'
19838      model: 'D6 4G'
19839    - regex: 'IQW511T(?:[);/ ]|$)'
19840      model: 'Liberal'
19841    - regex: 'IQW553N?(?:[);/ ]|$)'
19842      model: 'Alu 5.5"'
19843    - regex: 'iQL626?(?:[);/ ]|$)'
19844      model: 'Pop 4G'
19845    - regex: 'IQW503(?:[);/ ]|$)'
19846      model: 'Flame 4G (2018)'
19847    - regex: 'iQD700(?:[);/ ]|$)'
19848      model: 'Color Fingerprint 4G'
19849
19850# FLYCAT
19851FLYCAT:
19852  regex: 'FLYCAT'
19853  device: 'smartphone'
19854  models:
19855    - regex: 'OPTIMUM (500[1-4]|5501)'
19856      model: 'Optimum $1'
19857    - regex: 'UNICUM (1002|8S|8003)'
19858      device: 'tablet'
19859      model: 'Unicum $1'
19860
19861# Fly
19862Fly:
19863  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)?(?:[);/ ]|$)'
19864  device: 'smartphone'
19865  models:
19866    - regex: '(?:Fly_)?IQ310(?:[);/ ]|$)'
19867      model: 'Panorama'
19868      device: 'tablet'
19869
19870    - regex: '(?:Fly_)?IQ236(?:[);/ ]|$)'
19871      model: 'Victory'
19872    - regex: 'Slimline(?:[);/ ]|$)'
19873      model: 'Slimline'
19874    - regex: 'Power Plus 5000(?:[);/ ]|$)'
19875      model: 'Power Plus 5000'
19876    - regex: 'Photo Pro(?:[);/ ]|$)'
19877      model: 'Photo Pro'
19878    - regex: 'Life Ace(?:[);/ ]|$)'
19879      model: 'Life Ace'
19880    - regex: 'Life Jet(?:[);/ ]|$)'
19881      model: 'Life Jet'
19882    - regex: 'Life Sky(?:[);/ ]|$)'
19883      model: 'Life Sky'
19884    - regex: 'Life Geo(?:[);/ ]|$)'
19885      model: 'Life Geo'
19886    - regex: 'Life Zen(?:[);/ ]|$)'
19887      model: 'Life Zen'
19888    - regex: 'Life Play(?:[);/ ]|$)'
19889      model: 'Life Play'
19890    - regex: 'Life Compact 4G(?:[);/ ]|$)'
19891      model: 'Life Compact 4G'
19892    - regex: 'FS506'
19893      model: 'Cirrus 3'
19894    - regex: 'FS403'
19895      model: 'Cumulus 1'
19896    - regex: 'FS508'
19897      model: 'Cirrus 6'
19898    - regex: 'FS511'
19899      model: 'Cirrus 7'
19900    - regex: 'FS509'
19901      model: 'Nimbus 9'
19902    - regex: 'FS406'
19903      model: 'Stratus 5'
19904    - regex: 'FS404'
19905      model: 'Stratus 3'
19906    - regex: 'FS504'
19907      model: 'Cirrus 2'
19908    - regex: 'FS407'
19909      model: 'Stratus 6'
19910    - regex: 'FS401'
19911      model: 'Stratus 1'
19912    - regex: 'FS402'
19913      model: 'Stratus 2'
19914    - regex: 'FS501'
19915      model: 'Nimbus 3'
19916    - regex: 'FS502'
19917      model: 'Cirrus 1'
19918    - regex: 'FS507'
19919      model: 'Cirrus 4'
19920    - regex: 'FS505'
19921      model: 'Nimbus 7'
19922    - regex: 'FS551'
19923      model: 'Nimbus 4'
19924    - regex: 'FS514'
19925      model: 'Cirrus 8'
19926    - regex: 'FS553'
19927      model: 'Cirrus 9'
19928    - regex: 'FS554'
19929      model: 'Power Plus FHD'
19930    - regex: 'FS517'
19931      model: 'Cirrus 11'
19932    - regex: 'FS516'
19933      model: 'Cirrus 12'
19934    - regex: 'FS518'
19935      model: 'Cirrus 13'
19936    - regex: 'FS520'
19937      model: 'Selfie 1'
19938    - regex: 'FS521'
19939      model: 'Power Plus 1'
19940    - regex: 'FS522'
19941      model: 'Cirrus 14'
19942    - regex: 'FS523'
19943      model: 'Cirrus 16'
19944    - regex: 'FS524'
19945      model: 'Knockout'
19946    - regex: 'FS526'
19947      model: 'Power Plus 2'
19948    - regex: 'FS527'
19949      model: 'Nimbus 17'
19950    - regex: 'FS528'
19951      model: 'Memory Plus'
19952    - regex: 'FS529'
19953      model: 'Сhamp'
19954    - regex: 'FS530'
19955      model: 'Power Plus XXL'
19956    - regex: 'FS454'
19957      model: 'Nimbus 8'
19958    - regex: 'FS452'
19959      model: 'Nimbus 2'
19960    - regex: 'FS512'
19961      model: 'Nimbus 10'
19962    - regex: 'FS510'
19963      model: 'Nimbus 12'
19964    - regex: 'FS451'
19965      model: 'Nimbus 1'
19966    - regex: 'FS405'
19967      model: 'Stratus 4'
19968    - regex: 'FS408'
19969      model: 'Stratus 8'
19970    - regex: 'FS409'
19971      model: 'Stratus 9'
19972    - regex: 'FS455'
19973      model: 'Nimbus 11'
19974    - regex: 'FS456'
19975      model: 'Nimbus 14'
19976    - regex: 'FS457'
19977      model: 'Nimbus 15'
19978    - regex: 'FS459'
19979      model: 'Nimbus 16'
19980    - regex: 'FS458'
19981      model: 'Stratus 7'
19982    - regex: '(?:Fly_)?IQ237(?:[);/ ]|$)'
19983      model: 'Dynamic'
19984    - regex: '(?:Fly_)?IQ238(?:[);/ ]|$)'
19985      model: 'Jazz'
19986    - regex: '(?:Fly_)?IQ240(?:[);/ ]|$)'
19987      model: 'Whizz'
19988    - regex: '(?:Fly_)?IQ255(?:[);/ ]|$)'
19989      model: 'Pride'
19990    - regex: '(?:Fly_)?IQ270(?: Firebird)?(?:[);/ ]|$)'
19991      model: 'Firebird'
19992    - regex: '(?:Fly_)?IQ275(?:[);/ ]|$)'
19993      model: 'Marathon'
19994    - regex: '(?:Fly_)?IQ285(?: Turbo)?(?:[);/ ]|$)'
19995      model: 'Turbo'
19996    - regex: '(?:Fly_)?IQ430(?:[);/ ]|$)'
19997      model: 'Evoke'
19998    - regex: '(?:Fly_)?IQ431(?:[);/ ]|$)'
19999      model: 'Glory'
20000    - regex: '(?:Fly_)?IQ432(?:[);/ ]|$)'
20001      model: 'Era Nano 1'
20002    - regex: '(?:Fly_)?IQ436(?:[);/ ]|$)'
20003      model: 'Era Nano 3'
20004    - regex: '(?:Fly_)?IQ4490(?:[);/ ]|$)'
20005      model: 'Era Nano 4'
20006    - regex: '(?:Fly_)?IQ434(?:[);/ ]|$)'
20007      model: 'Era Nano 5'
20008    - regex: '(?:Fly_)?IQ4406(?:[);/ ]|$)'
20009      model: 'Era Nano 6'
20010    - regex: '(?:Fly_)?IQ436i(?:[);/ ]|$)'
20011      model: 'Era Nano 9'
20012    - regex: '(?:Fly_)?IQ440(?:[);/ ]|$)'
20013      model: 'Energy'
20014    - regex: '(?:Fly_)?IQ4401(?:[);/ ]|$)'
20015      model: 'Era Energy 2'
20016    - regex: '(?:Fly_)?IQ441(?:[);/ ]|$)'
20017      model: 'Radiance'
20018    - regex: '(?:Fly_)?IQ442 Quad(?:[);/ ]|$)'
20019      model: 'Miracle 2'
20020    - regex: '(?:Fly_)?IQ442(?:[);/ ]|$)'
20021      model: 'Miracle'
20022    - regex: '(?:Fly_)?IQ443(?:[);/ ]|$)'
20023      model: 'Trend'
20024    - regex: '(?:Fly_)?IQ444(?: Quattro)?(?:[);/ ]|$)'
20025      model: 'Diamond 2'
20026    - regex: '(?:Fly_)?IQ445(?:[);/ ]|$)'
20027      model: 'Genius'
20028    - regex: '(?:Fly_)?IQ446(?: Magic)?(?:[);/ ]|$)'
20029      model: 'Magic'
20030    - regex: '(?:Fly_)?IQ447(?:[);/ ]|$)'
20031      model: 'Era Life 1'
20032    - regex: '(?:Fly_)?IQ456(?:[);/ ]|$)'
20033      model: 'Era Life 2'
20034    - regex: '(?:Fly_)?IQ4409 Quad(?:[);/ ]|$)'
20035      model: 'Era Life 4'
20036    - regex: '(?:Fly_)?IQ448(?:[);/ ]|$)'
20037      model: 'Chic'
20038    - regex: '(?:Fly_)?IQ449(?:[);/ ]|$)'
20039      model: 'Pronto'
20040    - regex: '(?:Fly_)?IQ450(?:[);/ ]|$)'
20041      model: 'Horizon'
20042    - regex: '(?:Fly_)?IQ450[ _]Quattro(?:[);/ ]|$)'
20043      model: 'Horizon 2'
20044    - regex: '(?:Fly_)?IQ451(?:[);/ ]|$)'
20045      model: 'Vista'
20046    - regex: '(?:Fly_)?IQ452 Quad(?:[);/ ]|$)'
20047      model: 'Ego Vision 1'
20048    - regex: '(?:Fly_)?IQ454(?:[);/ ]|$)'
20049      model: 'Evo Tech 1'
20050    - regex: '(?:Fly_)?IQ4403(?:[);/ ]|$)'
20051      model: 'Energy 3'
20052    - regex: '(?:Fly_)?IQ4404(?:[);/ ]|$)'
20053      model: 'Spark'
20054    - regex: '(?:Fly_)?IQ4410 Quad(?:[);/ ]|$)'
20055      model: 'Phoenix'
20056    - regex: '(?:Fly_)?IQ4411(?:[);/ ]|$)'
20057      model: 'Energy 2'
20058    - regex: '(?:Fly_)?IQ4412 Quad(?:[);/ ]|$)'
20059      model: 'Coral'
20060    - regex: '(?:Fly_)?IQ4413[ _]Quad(?:[);/ ]|$)'
20061      model: 'Evo Chic 3'
20062    - regex: '(?:Fly_)?IQ4414 Quad(?:[);/ ]|$)'
20063      model: 'Evo Tech 3'
20064    - regex: '(?:Fly_)?IQ4415 Quad(?:[);/ ]|$)'
20065      model: 'Era Style 3'
20066    - regex: '(?:Fly_)?IQ4504 Quad(?:[);/ ]|$)'
20067      model: 'Evo Energy 5'
20068    - regex: '(?:Fly_)?IQ([0-9]+[i]? ?(?:Quad|Firebird|Quattro)?)(?:[);/ ]|$)'
20069      model: 'IQ$1'
20070    - regex: 'Fly[ _\-]?([a-z0-9_]+)/'
20071      model: '$1'
20072      device: 'feature phone'
20073    - regex: 'Flylife[ _\-]?([^/;]+)(?: Build|[;)])'
20074      model: 'Flylife $1'
20075      device: 'tablet'
20076    - regex: 'Fly[ _\-]?([a-z0-9]+)'
20077      model: '$1'
20078    - regex: 'MERIDIAN-([a-z0-9]+)'
20079      model: '$1'
20080
20081# FinePower
20082FinePower:
20083  regex: 'FinePower[_ ]?([AB][1-9]|[CD][1-9])(?:[);/ ]|$)'
20084  device: 'smartphone'
20085  models:
20086    - regex: 'FinePower[_ ]?([AB][1-9])(?:[);/ ]|$)'
20087      model: '$1'
20088      device: 'tablet'
20089    - regex: 'FinePower[_ ]?([CD][1-9])(?:[);/ ]|$)'
20090      model: '$1'
20091
20092# Freetel (freetel.jp)
20093Freetel:
20094  regex: '(?:FTJ17[AC]00|FTJ152[ABCD]|FTU18A00|FT141B|FT142D(?:_LTEXM)?|FT142A?|FTJ161[AB]|FTJ1[56]2E|FTJ162[BD]|FTE161[GE])(?:[);/ ]|$)'
20095  device: 'smartphone'
20096  models:
20097    - regex: 'FTJ152C'
20098      model: 'Samurai Miyabi'
20099    - regex: 'FTJ17A00(?:[);/ ]|$)'
20100      model: 'Rei 2 Dual'
20101    - regex: 'FTJ17C00(?:[);/ ]|$)'
20102      model: 'Priori 5'
20103    - regex: 'FTU18A00(?:[);/ ]|$)'
20104      model: 'Cricket Wave'
20105    - regex: 'FTJ161A'
20106      model: 'Musashi'
20107    - regex: 'FTE161E'
20108      model: 'Ice 2'
20109    - regex: 'FTE161G'
20110      model: 'Ice 2 Plus'
20111    - regex: 'FTJ162E'
20112      model: 'Raijin'
20113    - regex: 'FT141B'
20114      model: 'Nico'
20115    - regex: 'FT142D(?:_LTEXM)?(?:[);/ ]|$)'
20116      model: 'XM'
20117    - regex: 'FT142A?'
20118      model: 'Priori 2'
20119    - regex: 'FTJ152A'
20120      model: 'Priori 3'
20121    - regex: 'FTJ162D'
20122      model: 'Priori 4'
20123    - regex: 'FTJ152B'
20124      model: 'Priori 3S LTE'
20125    - regex: 'FTJ152D'
20126      model: 'Samurai Kiwami'
20127    - regex: 'FTJ162B'
20128      model: 'Samurai Kiwami 2'
20129    - regex: 'FTJ161B'
20130      model: 'Samurai Rei'
20131    - regex: 'FTJ152E'
20132      model: 'Katana 1'
20133
20134# Western Digital
20135Western Digital:
20136  regex: 'Westerndigital|WDSimpleBrowser'
20137  device: 'tv'
20138  models:
20139    - regex: 'Streamer2010'
20140      model: 'Streamer (2010)'
20141
20142# Zeemi
20143Zeemi:
20144  regex: 'ZEEMI[ _-]'
20145  device: 'smartphone'
20146  models:
20147    - regex: 'ZEEMI[ _-]([^/;]+) Build'
20148      model: '$1'
20149    - regex: 'ZEEMI[ _-]([^/;)]+)(?:[);/]|$)'
20150      model: '$1'
20151
20152# Zenek
20153Zenek:
20154  regex: 'Z5007|Z551[679]|Z6001'
20155  device: 'smartphone'
20156  models:
20157    - regex: 'Z5517'
20158      model: 'Leopardo'
20159    - regex: 'Z6001'
20160      model: 'Libelula'
20161    - regex: 'Z5007'
20162      model: 'Oso'
20163    - regex: 'Z5519'
20164      model: 'Pingûino'
20165    - regex: 'Z5516'
20166      model: 'Zebra'
20167
20168# Nubia (www.nubia.com)
20169Nubia:
20170  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|666J|907J))(?:[);/ ]|$)'
20171  device: 'smartphone'
20172  models:
20173    - regex: 'NX669J'
20174      model: 'Red Magic 6'
20175    - regex: 'NX666J'
20176      model: 'Red Magic 6R'
20177    - regex: 'NX619J'
20178      model: 'Red Magic Mars'
20179    - regex: 'NX629J'
20180      model: 'Red Magic 3'
20181    - regex: 'NX40[X2]'
20182      model: 'Z5 Mini'
20183    - regex: 'NX(403[AE]|406E|404H)'
20184      model: 'Z5S Mini'
20185    - regex: 'NX503A'
20186      model: 'Z5S'
20187    - regex: 'NX506J'
20188      model: 'Z7'
20189    - regex: 'NX507J'
20190      model: 'Z7 Mini'
20191    - regex: 'NX505J'
20192      model: 'Z7 Max'
20193    - regex: 'NX508J'
20194      model: 'Z9'
20195    - regex: '(NX5[12]1J|Nubia Z9 mini)'
20196      model: 'Z9 Mini'
20197    - regex: '(NX510J|Nubia Z9 Max)'
20198      model: 'Z9 Max'
20199    - regex: 'NX512J'
20200      model: 'Z9 Max Dual'
20201    - regex: 'NX531J'
20202      model: 'Z11'
20203    - regex: 'NX523J_V1'
20204      model: 'Z11 Max'
20205    - regex: '(?:NX549J|Nubia Z11 mini S)'
20206      model: 'Z11 Mini S'
20207    - regex: '(?:NX529Jq?|Nubia Z11 mini)'
20208      model: 'Z11 Mini'
20209    - regex: 'NX606J'
20210      model: 'Z18'
20211    - regex: 'NX616J'
20212      model: 'Z18S'
20213    - regex: 'NX611J'
20214      model: 'Z18 Mini'
20215    - regex: 'NX551J'
20216      model: 'M2'
20217    - regex: 'NX563J'
20218      model: 'Z17'
20219    - regex: 'NX569[HJ]'
20220      model: 'Z17 Mini'
20221    - regex: 'NX589J'
20222      model: 'Z17 Mini S'
20223    - regex: 'NX591J'
20224      model: 'Z17 Lite'
20225    - regex: 'NX595J'
20226      model: 'Z17S'
20227    - regex: 'NX612J'
20228      model: 'V18'
20229    - regex: 'NX627J'
20230      model: 'Z20'
20231    - regex: 'NX513J'
20232      model: 'My Prague'
20233    - regex: 'NX601J'
20234      model: 'X6'
20235    - regex: 'NX609J'
20236      model: 'Red Magic'
20237    - regex: 'NX659J'
20238      model: 'Red Magic 5G'
20239    - regex: 'NX651J'
20240      model: 'Play'
20241    - regex: 'NX573J'
20242      model: 'M2 Lite'
20243    - regex: 'NX907J'
20244      model: 'M2 Play'
20245    - regex: 'NX541J'
20246      model: 'N1'
20247    - regex: 'NX597J'
20248      model: 'N1 Lite'
20249    - regex: 'NX575J'
20250      model: 'N2'
20251    - regex: 'NX6(?:08|17)J'
20252      model: 'N3'
20253    - regex: 'Nubia[_ ]([^;)/]+)( build|[;)])'
20254      model: '$1'
20255
20256# Rakuten (network.mobile.rakuten.co.jp)
20257Rakuten:
20258  regex: '(?:ZR01|3917JR|P710|C330)(?:[);/ ]|$)'
20259  device: 'smartphone'
20260  models:
20261    - regex: 'ZR01'
20262      model: 'Big'
20263    - regex: '3917JR'
20264      model: 'Big S'
20265    - regex: 'P710'
20266      model: 'Hand'
20267    - regex: 'C330'
20268      model: 'C330 Mini'
20269
20270# ZTE
20271ZTE:
20272  regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:V0820|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|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[ _](A510|A[357] 2019-T|A6 MAX|A0622|X9)|Z3153V|Z836F|Ctyon-A9|602ZT|MO-01[JK]|Z963U|402ZT|P545|P609|dandelion|901ZT|A00[13]ZT|Z-01K|UZTE (?:GRAND V7|V808)|ZTG01|K8[37]CA|VERGATARIO ?5(?:PLUS)?|Axon mini)(?:[);/ ]|$)'
20273  device: 'smartphone'
20274  models:
20275    # explicit smartphone models
20276    - regex: '602ZT(?:[);/ ]|$)'
20277      model: 'Libero 2'
20278    - regex: 'A001ZT(?:[);/ ]|$)'
20279      model: 'Libero 3'
20280    - regex: 'A003ZT(?:[);/ ]|$)'
20281      model: 'Libero 5G'
20282    - regex: '901ZT(?:[);/ ]|$)'
20283      model: 'Libero S10'
20284    - regex: 'ZTG01(?:[);/ ]|$)'
20285      model: 'A1'
20286    - regex: 'ZTE T221(?:[);/ ]|$)'
20287      model: 'Blade AF3'
20288    - regex: 'A7020(?:RU)?(?:[);/ ]|$)'
20289      model: 'Blade A7s (2020)'
20290    - regex: 'A7000(?:[);/ ]|$)'
20291      model: 'Blade A7 (2020)'
20292    - regex: 'A7030'
20293      model: 'Blade A71'
20294    - regex: 'ZTE (?:2050|V1050)(?:RU)?'
20295      model: 'Blade 20 Smart'
20296    - regex: '902ZT(?:[);/ ]|$)'
20297      model: 'Axon 10 Pro 5G'
20298    - regex: 'A2021L?(?:[);/ ]|$)'
20299      model: 'Axon 11 5G'
20300    - regex: 'A2021E?(?:[);/ ]|$)'
20301      model: 'Axon 11'
20302    - regex: 'A2022PG'
20303      model: 'Axon 30 Ultra'
20304    - regex: 'N799D(?:[);/ ]|$)'
20305      model: 'Blade Eg'
20306    - regex: 'Z818L(?:[);/ ]|$)'
20307      model: 'Allstar'
20308    - regex: 'Z3001S(?:[);/ ]|$)'
20309      model: 'Quest Plus'
20310    - regex: 'Ctyon-A9(?:[);/ ]|$)'
20311      model: 'Ctyon A9'
20312    - regex: 'K3DX-V5G(?:[);/ ]|$)'
20313      model: 'V5G'
20314    - regex: '(?:ZTE)?N918St(?:[);/ ]|$)'
20315      model: 'V5S'
20316    - regex: 'N958St(?:[);/ ]|$)'
20317      model: 'V5 Max'
20318    - regex: 'N9101(?:[);/ ]|$)'
20319      model: 'Imperial'
20320    - regex: 'Z963U(?:[);/ ]|$)'
20321      model: 'Imperial Max'
20322    - regex: 'N9120(?:[);/ ]|$)'
20323      model: 'Avid'
20324    - regex: 'N9130(?:[);/ ]|$)'
20325      model: 'Speed'
20326    - regex: 'N9132(?:[);/ ]|$)'
20327      model: 'Prestige'
20328    - regex: 'N9136(?:[);/ ]|$)'
20329      model: 'Prestige 2'
20330    - regex: 'N9137(?:[);/ ]|$)'
20331      model: 'Tempo X'
20332    - regex: 'N9180(?:[);/ ]|$)'
20333      model: 'V5'
20334    - regex: 'N9510(?:[);/ ]|$)'
20335      model: 'Warp 4G'
20336    - regex: 'Z5151V(?:[);/ ]|$)'
20337      model: 'Visible R2'
20338    - regex: 'N9517(?:[);/ ]|$)'
20339      model: 'Blade Force'
20340    - regex: 'Z559DL(?:[);/ ]|$)'
20341      model: 'Blade T2'
20342    - regex: '402ZT(?:[);/ ]|$)'
20343      model: 'Blade Q+'
20344    - regex: 'Blade Q Lux(?:[);/ ]|$)'
20345      model: 'Blade Q Lux'
20346    - regex: 'N9515(?:[);/ ]|$)'
20347      model: 'Warp Sync'
20348    - regex: 'N9519(?:[);/ ]|$)'
20349      model: 'Warp 7'
20350    - regex: 'N9520(?:[);/ ]|$)'
20351      model: 'Boost Max'
20352    - regex: 'N9521(?:[);/ ]|$)'
20353      model: 'Boost Max+'
20354    - regex: 'N9560(?:[);/ ]|$)'
20355      model: 'Max XL'
20356    - regex: 'N9810(?:[);/ ]|$)'
20357      model: 'Vital'
20358    - regex: '[UV]9180(?:[);/ ]|$)'
20359      model: 'V5 Red Bull'
20360    - regex: '[UV]9815(?:[);/ ]|$)'
20361      model: 'Grand Memo LTE'
20362    - regex: 'V779M'
20363      model: 'Joey Jump 2'
20364    - regex: 'V807'
20365      model: 'Blade C'
20366    - regex: 'V809'
20367      model: 'Blade C2'
20368    - regex: 'ZTE[_ ]Blade[_ ](C2|V7)[_ ]Plus'
20369      model: 'Blade $1 Plus'
20370    - regex: 'Blade G Plus'
20371      model: 'Blade G Plus'
20372    - regex: 'ZTE_Blade_III'
20373      model: 'Blade III'
20374    - regex: '(?:ZTE_)?V829'
20375      model: 'Blade G Pro'
20376    - regex: 'V882'
20377      model: 'Lord'
20378    - regex: 'V967S'
20379      model: 'Grand X2'
20380    - regex: 'V970M?|V987'
20381      model: 'Grand X'
20382    - regex: 'Z959(?:[);/ ]|$)'
20383      model: 'Grand X3'
20384    - regex: 'V8000'
20385      model: 'Nova 4'
20386    - regex: 'Z95[67]'
20387      model: 'Grand X4'
20388    - regex: 'Z987'
20389      model: 'Grand X Max+'
20390    - regex: '(?:ZTE_)?Grand[ _]Era'
20391      model: 'Grand Era'
20392    - regex: 'UZTE GRAND V7' # UZTE
20393      model: 'Grand V7'
20394    - regex: 'V788D'
20395      model: 'Kis Plus'
20396    - regex: 'Z331(?:[);/ ]|$)'
20397      model: 'Z331'
20398    - regex: 'N818S(?:[);/ ]|$)'
20399      model: 'N818S'
20400    - regex: 'Z5031O(?:[);/ ]|$)'
20401      model: 'Optus X Spirit 2'
20402    - regex: 'P545(?:[);/ ]|$)'
20403      model: 'Optus X Power 2'
20404    - regex: 'P609(?:[);/ ]|$)'
20405      model: 'Optus X Wave'
20406    - regex: 'Optus X Start(?:[);/ ]|$)'
20407      model: 'Optus X Start'
20408    - regex: 'BA520(?:[);/ ]|$)'
20409      model: 'Blade A520'
20410    - regex: 'Blade (A(0620|310|321|452|460|462|465|475|510|512|52[012]|530|531|602|612|910)|L[12]10|L130|V0730|V0800|V580|V1000)(?:[);/ ]|$)'
20411      model: 'Blade $1'
20412    - regex: 'Blade L2 Plus(?:[);/ ]|$)'
20413      model: 'Blade L2 Plus'
20414    - regex: '(?:ZTE_)?Blade[ _]L2(?:[);/ ]|$)'
20415      model: 'Blade L2'
20416    - regex: 'Blade L3 Plus(?:[);/ ]|$)'
20417      model: 'Blade L3 Plus'
20418    - regex: 'Blade L3 Apex(?:[);/ ]|$)'
20419      model: 'Blade L3 Apex'
20420    - regex: 'Blade L3(?:[);/ ]|$)'
20421      model: 'Blade L3'
20422    - regex: 'ZTE[ _]T610(?:[);/ ]|$)'
20423      model: 'Blade L4'
20424    - regex: 'ZTE[ _]Blade L4 Pro(?:[);/ ]|$)'
20425      model: 'Blade L4 Pro'
20426    - regex: '(?:Blade L5 Plus|BLADE L0510)(?:[);/ ]|$)'
20427      model: 'Blade L5 Plus'
20428    - regex: 'Blade L5(?:[);/ ]|$)'
20429      model: 'Blade L5'
20430    - regex: 'Blade L6(?:[);/ ]|$)'
20431      model: 'Blade L6'
20432    - regex: 'Blade L7A(?:[);/ ]|$)'
20433      model: 'Blade L7A'
20434    - regex: 'Blade L7(?:[);/ ]|$)'
20435      model: 'Blade L7'
20436    - regex: 'Blade L8(?:RU)?(?:[);/ ]|$)'
20437      model: 'Blade L8'
20438    - regex: 'Blade A([357]) (20(?:19|20))'
20439      model: 'Blade A$1 ($2)'
20440    - regex: 'ZTE BV0720(?:[);/ ]|$)'
20441      model: 'Blade A2'
20442    - regex: 'ZTE C880A(?:[);/ ]|$)'
20443      model: 'Blade A1'
20444    - regex: 'Blade A([35]1?) Lite'
20445      model: 'Blade A$1 Lite'
20446    - regex: 'ZTE Blade (A[35]1)'
20447      model: 'Blade $1'
20448    - regex: 'BLADE A0622(?:[);/ ]|$)'
20449      model: 'Blade A6'
20450    - regex: 'BLADE (?:A6 MAX|A0605)(?:[);/ ]|$)'
20451      model: 'Blade A6 Max'
20452    - regex: 'A0622(?:[);/ ]|$)'
20453      model: 'Blade A6 Lite'
20454    - regex: 'Blade S6 Plus(?:[);/ ]|$)'
20455      model: 'Blade S6 Plus'
20456    - regex: 'Blade S6(?:[);/ ]|$)'
20457      model: 'Blade S6'
20458    - regex: 'BLADE A5 PRO(?:[);/ ]|$)'
20459      model: 'Blade A5 Pro'
20460    - regex: 'T920(?:[);/ ]|$)'
20461      model: 'Blade S7'
20462    - regex: 'ZTE[ _]T617(?:[);/ ]|$)'
20463      model: 'Blade D Lux'
20464    - regex: 'Blade L210'
20465      model: 'Blade L210'
20466    - regex: 'BLADE V Ultra(?:[);/ ]|$)'
20467      model: 'Blade V Ultra'
20468    - regex: 'Blade V6 MAX(?:[);/ ]|$)'
20469      model: 'Blade V6 Max'
20470    - regex: 'Blade V6 Plus(?:[);/ ]|$)'
20471      model: 'Blade V6 Plus'
20472    - regex: 'Blade (?:V7 Lite|V0720)(?:[);/ ]|$)'
20473      model: 'Blade V7 Lite'
20474    - regex: 'Blade V([67])(?:[);/ ]|$)'
20475      model: 'Blade V$1'
20476    - regex: 'ZTE Blade V1000|(?:ZTE_)?V1000'
20477      model: 'Blade V10'
20478    - regex: 'Blade X([79])(?:[);/ ]|$)'
20479      model: 'Blade X$1'
20480    - regex: 'Blade (?:V8Q|V0840)(?:[);/ ]|$)'
20481      model: 'Blade V8Q'
20482    - regex: 'Blade V8 SE(?:[);/ ]|$)'
20483      model: 'Blade V8 SE'
20484    - regex: 'BLADE V0920'
20485      model: 'Blade V9 Vita'
20486    - regex: 'ZTE 8030'
20487      model: 'Blade V30 Vita'
20488    - regex: 'ZTE 9030'
20489      model: 'Blade V30'
20490    - regex: 'Blade V(9|10) Vita(?:[);/ ]|$)'
20491      model: 'Blade V$1 Vita'
20492    - regex: 'Blade V([89]|10)(?:[);/ ]|$)'
20493      model: 'Blade V$1'
20494    - regex: 'BLADE V0820(?:[);/ ]|$)'
20495      model: 'Blade V8 Lite'
20496    - regex: 'BLADE V0850(?:[);/ ]|$)'
20497      model: 'Blade V8 Mini'
20498    - regex: '(?:Blade[ _])?(Apex2|G (LTE|Lux)|Vec|A510)'
20499      model: 'Blade $1'
20500    - regex: 'Z768G(?:[);/ ]|$)'
20501      model: 'Midnight'
20502    - regex: 'Z820'
20503      model: 'Obsidian'
20504    - regex: 'Z986U'
20505      model: 'Blade Max 3'
20506    - regex: 'Z6410S'
20507      model: 'Blade Max 2s'
20508    - regex: 'Z610DL'
20509      model: 'Blade Max View'
20510    - regex: 'Z971'
20511      model: 'Blade Spark'
20512    - regex: 'Z978'
20513      model: 'Blade V8 Pro'
20514    - regex: 'Z839'
20515      model: 'Blade Vantage'
20516    - regex: 'Z3153V'
20517      model: 'Blade Vantage 2'
20518    - regex: 'Z930L'
20519      model: 'Unico LTE'
20520    - regex: 'Z965'
20521      model: 'Blade X'
20522    - regex: 'Z6400C'
20523      model: 'Blade X2 Max'
20524    - regex: 'Z981'
20525      model: 'Blade Z Max Pro'
20526    - regex: 'Z982'
20527      model: 'Blade Z Max'
20528    - regex: 'Z983'
20529      model: 'Blade X Max'
20530    - regex: 'Z717[BV]L(?:[);/ ]|$)'
20531      model: 'Citrine LTE'
20532    - regex: 'Z233VL(?:[);/ ]|$)'
20533      model: 'Cymbal-C LTE'
20534    - regex: 'Z233V'
20535      model: 'Cymbal LTE'
20536    - regex: 'Z232TL'
20537      model: 'Cymbal-G LTE'
20538    - regex: 'Z353VL'
20539      model: 'Cymbal-T LTE'
20540    - regex: 'Z718TL'
20541      model: 'Jasper LTE'
20542    - regex: 'KIS II Max'
20543      model: 'Kis II Max'
20544    - regex: 'Kis 3'
20545      model: 'Kis 3'
20546    - regex: '(?:Z798BL|Z799VL)(?:[);/ ]|$)'
20547      model: 'Majesty Pro LTE'
20548    - regex: 'Z899VL'
20549      model: 'Majesty Pro Plus LTE'
20550    - regex: 'Z828TL'
20551      model: 'Midnight Pro LTE'
20552    - regex: '(?:ZTE-)?Z792'
20553      model: 'Fanfare'
20554    - regex: '(?:ZTE-)?Z812'
20555      model: 'Maven'
20556    - regex: 'Z815'
20557      model: 'Fanfare 2'
20558    - regex: 'Z831'
20559      model: 'Maven 2'
20560    - regex: 'Z832'
20561      model: 'Sonata 3'
20562    - regex: 'Z835'
20563      model: 'Maven 3'
20564    - regex: 'Z851(?:[);/ ]|$)'
20565      model: 'Prelude Plus'
20566    - regex: 'Z851M'
20567      model: 'Overture 3'
20568    - regex: 'Z852'
20569      model: 'Fanfare 3'
20570    - regex: 'Z828'
20571      model: 'Avid Plus'
20572    - regex: 'Z855'
20573      model: 'Avid 4'
20574    - regex: 'Z833'
20575      model: 'Avid TRIO'
20576    - regex: '(?:Z836BL|Z837VL|Z836F)(?:[);/ ]|$)'
20577      model: 'ZFive 2 LTE'
20578    - regex: 'Z558VL'
20579      model: 'ZFive C LTE'
20580    - regex: 'Z557BL'
20581      model: 'ZFive G LTE'
20582    - regex: '(?:Z861BL|Z862VL)(?:[);/ ]|$)'
20583      model: 'ZFive L LTE'
20584    - regex: 'Z916BL'
20585      model: 'ZMax Grand LTE'
20586    - regex: 'Z917VL'
20587      model: 'ZMax Champ LTE'
20588    - regex: '(?:Z958|Z955A)(?:[);/ ]|$)'
20589      model: 'ZMax 2'
20590    - regex: 'dandelion(?:[);/ ]|$)'
20591      model: 'ZMax 3'
20592    - regex: 'Z963VL'
20593      model: 'Max Duo LTE'
20594    - regex: 'Z970'
20595      model: 'ZMax Z970'
20596    - regex: 'Z986DL'
20597      model: 'MAX Blue LTE'
20598    - regex: '(?:ZTE[-_])?Z992'
20599      model: 'Avail 2'
20600    - regex: '(?:Z999|Z-01K)(?:[);/ ]|$)'
20601      model: 'Axon M'
20602    - regex: 'B2016|Axon mini'
20603      model: 'Axon Mini'
20604    - regex: 'A2015'
20605      model: 'Axon Tianji'
20606    - regex: 'A2017[GU]?'
20607      model: 'Axon 7'
20608    - regex: 'A2018'
20609      model: 'Axon 7s'
20610    - regex: 'A2019G Pro'
20611      model: 'Axon Pro'
20612    - regex: 'B2017G'
20613      model: 'Axon 7 Mini'
20614    - regex: 'A2020(?:RU|G)? Pro(?:[);/ ]|$)'
20615      model: 'Axon 10 Pro'
20616    - regex: 'Z667T'
20617      model: 'Zinger'
20618    - regex: 'V?975|geek'
20619      model: 'Geek'
20620    - regex: 'Z716BL'
20621      model: 'Citrine LTE'
20622    - regex: 'X500'
20623      model: 'Score'
20624    - regex: 'X501'
20625      model: 'Groove'
20626    - regex: '(?:ZTE-)?G-X991'
20627      model: 'Rio'
20628    - regex: 'F-450'
20629      model: 'Adamant'
20630    - regex: 'Z936L(?:[);/ ]|$)'
20631      model: 'Lever'
20632    - regex: 'MO-01[JK](?:[);/ ]|$)'
20633      model: 'Mono'
20634    - regex: 'V865M(?:[);/ ]|$)'
20635      model: 'V865M'
20636    - regex: 'Z6621O(?:[);/ ]|$)'
20637      model: 'Optus X Vista'
20638    - regex: 'V769M(?:[);/ ]|$)'
20639      model: 'Leo Q2'
20640    - regex: 'VERGATARIO 5(?:[);/ ]|$)'
20641      model: 'Vergatario 5'
20642    - regex: 'VERGATARIO5PLUS(?:[);/ ]|$)'
20643      model: 'Vergatario 5 Plus'
20644    - regex: 'ZTE V5 PRO(?:[);/ ]|$)'
20645      model: 'V5 Pro'
20646    - regex: 'ZTE 9000'
20647      model: 'Blade V2020'
20648
20649    - regex: 'A2121[LE](?:[);/ ]|$)'
20650      device: 'phablet'
20651      model: 'Axon 20 5G'
20652    - regex: 'ZTE 8010'
20653      device: 'phablet'
20654      model: 'Blade V2020 Smart'
20655
20656    # explicit tablet models
20657    - regex: 'K83CA(?:[);/ ]|$)'
20658      device: 'tablet'
20659      model: 'Grand X View 3'
20660    - regex: 'K87CA(?:[);/ ]|$)'
20661      device: 'tablet'
20662      model: 'Grand X View 4'
20663
20664    - regex: 'AxonPhone ([^;/]+) Build'
20665      model: 'AxonPhone $1'
20666    - regex: '([a-z0-9]+)_USA_Cricket'
20667      model: '$1'
20668    - regex: 'ZTE[- ](V98|V96A|V81|V70)(?:[);/ ]|$)'
20669      model: '$1'
20670      device: 'tablet'
20671    - regex: 'ZTE[- ]([a-z0-9\-_ ]+) Build'
20672      model: '$1'
20673    - regex: 'ZTE-(?:G |G-)?([a-z0-9 _]+)'
20674      model: '$1'
20675    - regex: 'U?ZTE[ _]?([a-z0-9]+)'
20676      model: '$1'
20677
20678Zuum:
20679  regex: 'Zuum[ _-]|Android 6.+ UNIQ(?: Build|[);])|(?:ROCKET II|Akus Z|COVET|MAGNO|ONIX S|STEDI|STELLAR(?:[ _](?:Z|PRO|[MP]1))?|GRAVITY [ZM]|AURA X|COVET_PRO_LITE|RONI)(?:[);/ ]|$)'
20680  device: 'smartphone'
20681  models:
20682    - regex: 'Akus Z'
20683      model: 'Akus Z'
20684    - regex: 'COVET_PRO_LITE'
20685      model: 'Covet Pro Lite'
20686    - regex: 'COVET PRO'
20687      model: 'Covet Pro'
20688    - regex: 'COVET( Z)?'
20689      model: 'Covet$1'
20690    - regex: 'MAGNO PLUS'
20691      model: 'Magno Plus'
20692    - regex: 'MAGNO( C1?)?'
20693      model: 'Magno$1'
20694    - regex: 'ONIX S'
20695      model: 'Onix S'
20696    - regex: 'STEDI'
20697      model: 'Stedi'
20698    - regex: 'STELLAR PRO'
20699      model: 'Stellar Pro'
20700    - regex: 'STELLAR PLUS'
20701      model: 'Stellar Plus'
20702    - regex: 'STELLAR ([MP]1|Z)'
20703      model: 'Stellar $1'
20704    - regex: 'STELLAR MINI'
20705      model: 'Stellar Mini'
20706    - regex: 'STELLAR MINI'
20707      model: 'Stellar Mini'
20708    - regex: 'STELLAR'
20709      model: 'Stellar'
20710    - regex: 'GRAVITY ([MZ])'
20711      model: 'Gravity $1'
20712    - regex: 'AURA X'
20713      model: 'Aura X'
20714    - regex: 'RONI'
20715      model: 'Roni'
20716    - regex: 'ROCKET II'
20717      model: 'Rocket II'
20718    - regex: 'Android 6.+ UNIQ(?: Build|[);])'
20719      model: 'Uniq'
20720    - regex: 'Zuum[ _-]([^;/]+) Build'
20721      model: '$1'
20722    - regex: 'Zuum[ _-]?([^;/)]+)(?:[);/ ]|$)'
20723      model: '$1'
20724
20725# Zen
20726Zen:
20727  regex: '(Admire[_ ][^/;]+|Cinemax[^/;)]+)(?:Build|\))|AdmireGlam'
20728  device: 'smartphone'
20729  models:
20730    - regex: 'AdmireGlam(?:[);/ ]|$)'
20731      model: 'Admire Glam'
20732    - regex: '(Admire[_ ][^/;]+|Cinemax[^/;)]+)(?:Build|\))'
20733      model: '$1'
20734
20735# Zync
20736Zync:
20737  regex: 'ZYNC|(Cloud Z5|Z1000|Z18|Z99|Z99[_ ][23]G|Z99|Z900[_ ]Plus|Z909|Z930[+]|Z930)(?:[);/ ]|$)'
20738  device: 'tablet'
20739  models:
20740    - regex: '(Z18| DuZ99al Core|Z99[_ ][23]G|Z99 Dual Core|Z99|Z900[_ ]Plus|Z909|Z930[+]|Z930)'
20741      model: '$1'
20742    - regex: '(Z1000[^/;]+)Build'
20743      model: '$1'
20744    - regex: 'Cloud (Z5)'
20745      model: 'Cloud $1'
20746    - regex: 'ZYNC Cloud[ _]([^;]+)Build'
20747      model: 'Cloud $1'
20748    - regex: 'ZYNC[ _]([^;]+)Build'
20749      model: '$1'
20750
20751# Lemhoov
20752Lemhoov:
20753  regex: 'Lemhoov'
20754  device: 'smartphone'
20755  models:
20756    - regex: 'Lemhoov[ _-]([^/;]+) Build'
20757      model: '$1'
20758
20759# MTC (MTS)
20760MTC:
20761  regex: 'MTC[ _](968|97[82]|970|982[OT]?|1078)|(?:MTC[_ ])?SMART[ _]?(?:Race[2]?|Sprint|Run|Surf[2]?)[ _]4G|MTC975|Smart Bit|Smart_(?:LINE|Light)|MTC[ _]SMART[ _](?:Run|Start_2)|Redbox Mini 5\(MTS\)|MTS TV'
20762  device: 'smartphone'
20763  models:
20764    - regex: 'MTC[ _]?(97[258]|970[H]?|982[OT]?|968)'
20765      model: '$1'
20766    - regex: 'MTC[ _](1078)'
20767      model: '$1'
20768      device: 'tablet'
20769    - regex: 'SMART[ _]Race[ _]4G'
20770      model: 'Smart Race 4G'
20771    - regex: 'SMART[ _]Race2[ _]4G'
20772      model: 'Smart Race 2 4G'
20773    - regex: '(?:MTC_)?SMART[ _]Sprint[ _]4G'
20774      model: 'Smart Sprint 4G'
20775    - regex: '(?:MTC_)?SMART[ _]Start_2'
20776      model: 'Smart Start 2'
20777    - regex: 'Smart_LINE'
20778      model: 'Smart Line'
20779    - regex: 'Smart_Light'
20780      model: 'Smart Light'
20781    - regex: 'Smart Bit'
20782      model: 'Smart Bit'
20783    - regex: 'SMART[ _]?Run(?:[ _]4G)?'
20784      model: 'Smart Run 4G'
20785    - regex: 'SMART[ _]Surf2[ _]4G'
20786      model: 'Smart Surf 2 4G'
20787    - regex: 'SMART[ _]Surf[ _]4G'
20788      model: 'Smart Surf 4G'
20789    - regex: 'Redbox Mini 5\(MTS\)'
20790      device: 'tv'
20791      model: 'Redbox Mini 5'
20792    - regex: 'MTS TV Box 317'
20793      device: 'tv'
20794      model: 'SB-317'
20795
20796# MegaFon
20797MegaFon:
20798  regex: 'MegaFon|MFLoginPh|MegLogPh|(MFLogin[34]T?|MS3B|SP-A5|SP-A20i)(?:[);/ ]|$)'
20799  device: 'smartphone'
20800  models:
20801    - regex: 'MFLoginPh|MegLogPh'
20802      model: 'Login+'
20803    - regex: 'MFLogin4'
20804      model: 'Login 4 LTE'
20805    - regex: 'MFLogin3T|MegaFon Login 3'
20806      model: 'Login 3'
20807      device: 'tablet'
20808    - regex: 'MS3B|Megafon Optima'
20809      model: 'Optima'
20810    - regex: 'SP-A20i'
20811      model: 'Mint'
20812    - regex: '(SP-A5)'
20813      model: '$1'
20814    - regex: 'MegaFon V9+'
20815      device: 'tablet'
20816      model: 'V9 Plus'
20817
20818# Inoi
20819Inoi:
20820  regex: 'INOI'
20821  device: 'smartphone'
20822  models:
20823    - regex: 'inoiPad mini 2\+32 Wi-Fi\+3G'
20824      device: 'tablet'
20825      model: 'Pad Mini 2+32'
20826    - regex: 'inoiPad 2\+32 Wi-Fi\+3G'
20827      device: 'tablet'
20828      model: 'Pad 2+32'
20829    - regex: 'INOI (2|5) Lite (2019|2021)'
20830      model: '$1 Lite ($2)'
20831    - regex: 'INOI[_ ]([13])[_ ]LITE'
20832      model: '$1 Lite'
20833    - regex: 'INOI ([257]) (2019|202[01])(?:[);/ ]|$)'
20834      model: '$1 ($2)'
20835    - regex: 'INOI[_ ]([^);/]+)(?: Build|[;)])'
20836      model: '$1'
20837
20838# Vertex (vertex-digital.ru)
20839Vertex:
20840  regex: '(?:Luck|Luck_L1[02]0_[34]G|Lion_Dual|V709X|TAB X8|Tab [43]G (?:7-2|8-1|10-1)|Pro_P3[01]0_4G|Lion_DC|Baccara|Eagle[ _]4G|ImpressMAX)(?:[);/ ]|$)|Impress[ _]([^;/]+)(?:Build|\))'
20841  device: 'smartphone'
20842  models:
20843    - regex: '(Lion_Dual|Lion_DC|Baccara|Eagle[ _]4G|Luck_L1[02]0_[34]G|Luck)(?:[);/ ]|$)'
20844      model: '$1'
20845    - regex: 'Impress ?MAX(?:[);/ ]|$)'
20846      model: 'Impress Max'
20847    - regex: 'IMPRESS ECLIPSE(?:[);/ ]|$)'
20848      model: 'Impress Eclipse'
20849    - regex: 'Pro_P(3[01]0)_4G(?:[);/ ]|$)'
20850      model: 'Pro P$1 4G'
20851    - regex: 'Impress_Luck[_ ]?4G_NFC(?:[);/ ]|$)'
20852      model: 'Impress Luck 4G NFC'
20853    - regex: '(Impress[ _][a-z]+)([34])G(?:Build|\))'
20854      model: '$1 $2G'
20855    - regex: '(Impress[ _](?:[^;/]+))(?:Build|\))'
20856      model: '$1'
20857    - regex: '(V709X)'
20858      device: 'tablet'
20859      model: '$1'
20860    - regex: 'TAB X8(?:[);/ ]|$)'
20861      device: 'tablet'
20862      model: 'Tab X8'
20863    - regex: 'Tab ([43])G ([78]|10)-([21])'
20864      device: 'tablet'
20865      model: 'Tab $1G $2.$3"'
20866
20867# Starway
20868Starway:
20869  regex: 'Andromeda[ _]S(707|84[05]|850|8)(?:[);/ ]|$)'
20870  device: 'tablet'
20871  model: 'Andromeda S$1'
20872
20873# Savio
20874Savio:
20875  regex: ' (TB-PO1|TB-B01|TB-G01)(?:[);/ ]|$)'
20876  device: 'tv'
20877  model: '$1'
20878
20879# Simbans
20880Simbans:
20881  regex: 'TangoTab|Presto[ )]|Ultimax|Valumax|S72-B|SX2W'
20882  device: 'tablet'
20883  models:
20884    - regex: 'TangoTab'
20885      model: 'TangoTab'
20886    - regex: 'Ultimax'
20887      model: 'Ultimax'
20888    - regex: 'Valumax'
20889      model: 'Valumax'
20890    - regex: 'Presto'
20891      model: 'Presto'
20892    - regex: 'S72-B'
20893      model: 'S72-B'
20894    - regex: 'SX2W'
20895      model: 'SX2W'
20896
20897# MYFON
20898MYFON:
20899  regex: 'MYPAD7s'
20900  device: 'tablet'
20901  model: 'My Pad 7s'
20902
20903# X-TIGI
20904X-TIGI:
20905  regex: 'X[-_]TIGI|Hope7[_ ]Mate|Photo_P15_Lite'
20906  device: 'smartphone'
20907  models:
20908    - regex: 'X-TIGI_JOY10_PRO'
20909      model: 'Joy 10 Pro'
20910      device: 'tablet'
20911    - regex: 'Hope7[_ ]Mate'
20912      model: 'Hope 7 Mate'
20913      device: 'tablet'
20914    - regex: 'X-TIGI_JOY7_MAX'
20915      model: 'Joy 7 Max'
20916      device: 'tablet'
20917    - regex: 'X-TIGI[_ ]V28[_ ]LTE'
20918      model: 'V28 LTE'
20919    - regex: 'X[-_]TIGI[_ ]V19'
20920      model: 'V19'
20921    - regex: 'X-TIGI[_ ]Photo[_ ]P11'
20922      model: 'Photo P11'
20923    - regex: 'Photo_P15_Lite'
20924      model: 'Photo P15 Lite'
20925    - regex: 'X[-_]TIGI[ _-]([^/;)]+)(?: Build|[;)])'
20926      model: '$1'
20927
20928# Xiaolajiao or Shenzhen Peppers (xiaolajiao.com)
20929Xiaolajiao:
20930  regex: '(LA2-(?:L|S[N]?)|HLA Note3|L7620DE|20190416Q|20170608S|20180322D|20190325D|20190718Q)(?:[);/ ]|$)'
20931  device: 'smartphone'
20932  models:
20933    - regex: 'HLA Note3(?:[);/ ]|$)'
20934      model: 'Red Pepper Note 3'
20935    - regex: '(LA2-(?:L|S[N]?))(?:[);/ ]|$)'
20936      model: '$1'
20937    - regex: '(20190416Q|L7620DE)(?:[);/ ]|$)'
20938      model: '$1'
20939    - regex: '20170608S(?:[);/ ]|$)'
20940      model: 'Red Pepper Plus'
20941    - regex: '20180322D(?:[);/ ]|$)'
20942      model: 'E Sports'
20943    - regex: '20190325D(?:[);/ ]|$)'
20944      model: 'Red Pepper 8X Pro'
20945    - regex: '20190718Q(?:[);/ ]|$)'
20946      model: 'Red Pepper 9X'
20947
20948# Ritmix
20949Ritmix:
20950  regex: '(RMD[-_](?:10(?:2[689]|30|5[089])|1121|75[017]|726|85[57]|870)|RMP-(?:450|50[56]|530|600))(?:[);/ ]|$)'
20951  device: 'tablet'
20952  models:
20953    - regex: 'RMD[-_](10(?:2[689]|30|5[089])|1121|75[017]|726|85[57]|870)(?:[);/ ]|$)'
20954      model: 'RMD-$1'
20955    - regex: 'RMP[-_](450|50[56]|530|600)(?:[);/ ]|$)'
20956      model: 'RMP-$1'
20957      device: 'smartphone'
20958
20959# Ross&Moor
20960'Ross&Moor':
20961  regex: 'RMD[-_](974R|600|550)(?:[);/ ]|$)'
20962  device: 'tablet'
20963  model: 'RMD-$1'
20964
20965# R-TV
20966R-TV:
20967  regex: 'R-TV BOX[ _]?(MINI\+|X99|X10 PRO|[RXS]10)'
20968  device: 'tv'
20969  model: 'Box $1'
20970
20971# NEXBOX
20972NEXBOX:
20973  regex: '(MXQ|MXQ-Pro)-NEXBOX|NEXBOX-([^) ]+)'
20974  device: 'tv'
20975  models:
20976    - regex: 'MXQ-Pro-NEXBOX'
20977      model: 'MXQ Pro'
20978    - regex: 'MXQ-NEXBOX'
20979      model: 'MXQ'
20980    - regex: 'NEXBOX-([^) ]+)'
20981      model: '$1'
20982
20983# True
20984'True':
20985  regex: ' TRUE BEYOND TAB 3G|SMART[ _](MAX 4.0 PLUS|4G[ _](?:GEN C [45].[05]|Champion|Speedy 5.0 Plus|Speedy[_ ]5inch|P1))'
20986  device: 'smartphone'
20987  models:
20988    - regex: 'SMART MAX 4.0 PLUS'
20989      model: 'Smart Max 4.0 Plus'
20990    - regex: 'SMART 4G Gen C ([45].[05])'
20991      model: 'Smart 4G Gen C $1"'
20992    - regex: 'SMART 4G Speedy 5.0 Plus'
20993      model: 'Smart 4G Speedy 5.0 Plus'
20994    - regex: 'SMART[ _]4G[_ ]Speedy[_ ]5inch'
20995      model: 'Smart 4G Speedy 5'
20996    - regex: 'SMART[ _]4G[_ ]Champion'
20997      model: 'Smart 4G Champion'
20998    - regex: 'SMART[ _]4G[_ ]P1 Prime'
20999      model: 'Smart 4G P1 Prime'
21000    - regex: 'SMART[ _]4G[_ ]P1'
21001      model: 'Smart 4G P1'
21002    - regex: 'TRUE BEYOND TAB 3G'
21003      model: 'Beyond Tab 3G'
21004
21005Yandex:
21006  regex: '(YNDX-?000SB)(?:[);/ ]|$)'
21007  device: 'smartphone'
21008  model: 'YNDX-000SB'
21009
21010# FORME
21011FORME:
21012  regex: 'FORME[ _-]'
21013  device: 'smartphone'
21014  models:
21015    - regex: 'FORME[ _-]F520(?:[);/ ]|$)'
21016      model: 'Forever'
21017    - regex: 'FORME[ _-](A[35]7|R7S?|P6)(?:[);/ ]|$)'
21018      model: '$1'
21019
21020# Shuttle
21021Shuttle:
21022  regex: '(PNT-704[025])(?:[);/ ]|$)'
21023  device: 'tablet'
21024  model: '$1'
21025
21026# BDF
21027BDF:
21028  regex: '(BDF[- ](?:819|P10|K107H|KT107|MT6753|X20)|K960N_MT(?:6580|6753)(?:_32_N)?)(?:[);/ ]|$)'
21029  device: 'tablet'
21030  models:
21031    - regex: 'BDF[- ](819|P10|K107H|KT107|MT6753|X20)(?:[);/ ]|$)'
21032      model: '$1'
21033    - regex: 'K960N_MT(6580|6753)(_32_N)?(?:[);/ ]|$)'
21034      model: 'BK960N MT$1'
21035
21036# Highscreen
21037Highscreen:
21038  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)(?:[);/ ]|$)'
21039  device: 'smartphone'
21040  models:
21041    - regex: '(Power Ice(?:[ ](?:Max|Evo))?|Power Rage(?: Evo)?|Zera[ _][UFS]|Alpha GTR|Wallet)(?:[);/ ]|$)'
21042      model: '$1'
21043    - regex: 'PowerFivePro(?:[);/ ]|$)'
21044      model: 'Power Five Pro'
21045    - regex: 'PowerFiveMaxLite(?:[);/ ]|$)'
21046      model: 'Power Five Max Lite'
21047    - regex: 'PowerFiveMax2(?:[);/ ]|$)'
21048      model: 'Power Five Max 2'
21049    - regex: 'Power Five Evo(?:[);/ ]|$)'
21050      model: 'Power Five Evo'
21051    - regex: 'Power Five Max(?:[);/ ]|$)'
21052      model: 'Power Five Max'
21053    - regex: 'Power[_ ]?Five(?:[);/ ]|$)'
21054      model: 'Power Five'
21055    - regex: 'Spade(?:[);/ ]|$)'
21056      model: 'Spade'
21057    - regex: 'Spark 2(?:[);/ ]|$)'
21058      model: 'Spark 2'
21059    - regex: 'FestXL-Pro(?:[);/ ]|$)'
21060      model: 'Fest XL Pro'
21061    - regex: 'FestXL(?:[);/ ]|$)'
21062      model: 'Fest XL'
21063    - regex: 'Fest-Pro(?:[);/ ]|$)'
21064      model: 'Fest Pro'
21065    - regex: 'Fest(?:[);/ ]|$)'
21066      model: 'Fest'
21067    - regex: 'PowerFour(?:[);/ ]|$)'
21068      model: 'Power Four'
21069    - regex: 'Pure[_ ]Power(?:[);/ ]|$)'
21070      model: 'Pure Power'
21071    - regex: 'Pure[ _]F(?:[);/ ]|$)'
21072      model: 'Pure F'
21073    - regex: 'Razar_Pro(?:[);/ ]|$)'
21074      model: 'Razar Pro'
21075    - regex: 'Easy[_ ]([SLF]|XL)[_ ]Pro(?:[);/ ]|$)'
21076      model: 'Easy $1 Pro'
21077    - regex: 'Easy[_ ]([SFL]|XL)(?:[);/ ]|$)'
21078      model: 'Easy $1'
21079    - regex: '(?:HIGHSCREEN )?Easy[- ]Power[- ]Pro(?:[);/ ]|$)'
21080      model: 'Easy Power Pro'
21081    - regex: '(?:HIGHSCREEN )?Easy-Power(?:[);/ ]|$)'
21082      model: 'Easy Power'
21083    - regex: 'BOOST II(?:[);/ ]|$)'
21084      model: 'Boost 2'
21085    - regex: 'BOOST IIse(?:[);/ ]|$)'
21086      model: 'Boost 2 SE'
21087    - regex: 'Boost 3 SE(?:[);/ ]|$)'
21088      model: 'Boost 3 SE'
21089    - regex: 'Boost 3 Pro SE(?:[);/ ]|$)'
21090      model: 'Boost 3 Pro SE'
21091    - regex: 'BOOST3(?:[);/ ]|$)'
21092      model: 'Boost 3'
21093    - regex: 'Zera-S-Power(?:[);/ ]|$)'
21094      model: 'Zera S Power'
21095    - regex: 'Tasty(?:[);/ ]|$)'
21096      model: 'Tasty'
21097    - regex: 'VergeM(?:[);/ ]|$)'
21098      model: 'Verge M'
21099    - regex: 'WinWin(?:[);/ ]|$)'
21100      model: 'WinWin'
21101    - regex: 'Expanse(?:[);/ ]|$)'
21102      model: 'Expanse'
21103    - regex: 'Hercules(?:[);/ ]|$)'
21104      model: 'Hercules'
21105    - regex: 'Alpha Rage(?:[);/ ]|$)'
21106      model: 'Alpha Rage'
21107    - regex: 'Ice2(?:[);/ ]|$)'
21108      model: 'Ice 2'
21109    - regex: 'Prime ([LS])(?:[);/ ]|$)'
21110      model: 'Prime $1'
21111
21112# CVTE
21113CVTE:
21114  regex: 'CVTE[_ ](MSD338_(:?1G|512M))(?:[);/ ]|$)'
21115  device: 'tv'
21116  model: '$1'
21117
21118# Globex
21119Globex:
21120  regex: '(GU1011C|GU8012C|GU7013C|GU730C|GU-6012B)(?:[);/ ]|$)'
21121  device: 'tablet'
21122  models:
21123    - regex: 'GU8012C(?:[);/ ]|$)'
21124      model: 'X8'
21125    - regex: 'GU-6012B(?:[);/ ]|$)'
21126      model: 'GU6012B'
21127    - regex: '(GU1011C|GU7013C|GU730C)(?:[);/ ]|$)'
21128      model: '$1'
21129
21130# Atom
21131Atom:
21132  regex: 'ATOM-(108AM|216RK|216AM)(?:[);/ ]|$)'
21133  device: 'tv'
21134  model: '$1'
21135
21136# Qumo
21137Qumo:
21138  regex: 'QUMO[ _]?|(?:Quest[ _]?(?:408|410|45[56]|50[679])|Vega[ _]?78[23]|Sirius[ _]?(?:1001|890))(?:[);/ ]|$)'
21139  device: 'tablet'
21140  models:
21141    - regex: '(?:QUMO[ _]?)?Vega[ _]?(78[23]|8002)(?:[);/ ]|$)'
21142      model: 'Vega $1'
21143    - regex: 'Yooda(?:[);/ ]|$)'
21144      model: 'Yooda'
21145    - regex: 'Sirius[ _]?(1001|890)(?:[);/ ]|$)'
21146      model: 'Sirius $1'
21147    - regex: '(?:QUMO[ _]?)?(Sirius 101-4G 8GB Black|Altair 701 8GB Black|Altair 71 4GB Black|Altair 700[24]|Altair 706|Vega_803i)(?:[);/ ]|$)'
21148      model: '$1'
21149    - regex: '(?:QUMO[ _])?Quest[ _]?(35[34]|40[268]|410|45[2568]|47[46]|50[679]|5[137]0|574|600)(?:[);/ ]|$)'
21150      device: 'smartphone'
21151      model: 'Quest $1'
21152
21153# Qubo (qubomobile.com)
21154Qubo:
21155  regex: '(Cronos|MINERVA(?:_32GB)?)(?:[);/ ]|$)'
21156  device: 'smartphone'
21157  model: '$1'
21158
21159# Umax (umax.cz)
21160Umax:
21161  regex: 'VisionBook[ _]|([78]Qa_3G|VB_10Q_Plus|10A_LTE_eea)(?:[);/ ]|$)'
21162  device: 'tablet'
21163  models:
21164    - regex: '(VisionBook[ _](?:10Qi|7Q[i]?|8Q[ei]?|P70|8Qi_3G)(?:[ _](?:[34]G|Plus|LTE))?)(?:[);/ ]|$)'
21165      model: '$1'
21166    - regex: '([78])Qa_3G(?:[);/ ]|$)'
21167      model: 'VisionBook $1Qa 3G'
21168    - regex: 'VisionBook_10Q_LTE(?:[);/ ]|$)'
21169      model: 'VisionBook 10Q LTE'
21170    - regex: '10A_LTE_eea(?:[);/ ]|$)'
21171      model: 'VisionBook 10A LTE'
21172    - regex: 'VB_10Q_Plus(?:[);/ ]|$)'
21173      model: 'VisionBook 10Q Plus'
21174    - regex: 'VisionBook_P50Plus_LTE(?:[);/ ]|$)'
21175      device: 'smartphone'
21176      model: 'VisionBook P50 Plus LTE'
21177    - regex: '(VisionBook[ _](?:P50 LTE|P55 X2 LTE|P55 LTE(?: Pro)?))(?:[);/ ]|$)'
21178      device: 'smartphone'
21179      model: '$1'
21180
21181# Mann
21182Mann:
21183  regex: '(ZUG 3|ZUG 5S(?: Q)?)(?:[);/ ]|$)'
21184  device: 'smartphone'
21185  model: '$1'
21186
21187# Unihertz (unihertz.com)
21188Unihertz:
21189  regex: '(Titan|Jelly-Pro|Jelly2|Atom_X?L)(?:[);/ ]|$)'
21190  device: 'smartphone'
21191  models:
21192    - regex: '(Jelly)-Pro(?:[);/ ]|$)'
21193      model: '$1 Pro'
21194    - regex: 'Jelly2(?:[);/ ]|$)'
21195      model: 'Jelly 2'
21196    - regex: '(Titan|Atom_X?L)(?:[);/ ]|$)'
21197      model: '$1'
21198
21199# Chuwi
21200Chuwi:
21201  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)|HiBox-hero|HiBook(?: pro)?|Hi[89] ?(?:Air|Pro)|Hi8SE|Vi8 plus|Vi10(?: ?Pro)?)(?:[);/ ]|$)'
21202  device: 'tablet'
21203  models:
21204    - regex: '(CW-Hi8-super)(?:[);/ ]|$)'
21205      model: 'Hi8'
21206    - regex: '(?:CW-)?(Vi10|Hi10|Vi8) plus(?:[);/ ]|$)'
21207      model: '$1 Plus'
21208    - regex: 'CW-(V88)-QUAD(?:[);/ ]|$)'
21209      model: '$1 Quad'
21210    - regex: 'CW-(V9)-DUAL(?:[);/ ]|$)'
21211      model: '$1 Dual'
21212    - regex: 'CW-(V17HD|VX8)-?(3G)(?:[);/ ]|$)'
21213      model: '$1 $2'
21214    - regex: '(?:CW-)?(Hi10) pro(?:[);/ ]|$)'
21215      model: '$1 Pro'
21216    - regex: 'HiBook pro(?:[);/ ]|$)'
21217      model: 'HiBook Pro'
21218    - regex: 'HiBook(?:[);/ ]|$)'
21219      model: 'HiBook'
21220    - regex: 'HiPad X(?:[);/ ]|$)'
21221      model: 'HiPad X'
21222    - regex: 'HiPad Pro(?:[);/ ]|$)'
21223      model: 'HiPad Pro'
21224    - regex: 'Hi([89]) ?Air(?:[);/ ]|$)'
21225      model: 'Hi$1 Air'
21226    - regex: 'Hi8SE(?:[);/ ]|$)'
21227      model: 'Hi8 SE'
21228    - regex: 'Hi([89]) ?pro(?:[);/ ]|$)'
21229      model: 'Hi$1 Pro'
21230    - regex: 'Vi10 Plus(?:[);/ ]|$)'
21231      model: 'Vi10 Plus'
21232    - regex: 'Vi10 ?Pro(?:[);/ ]|$)'
21233      model: 'Vi10 Pro'
21234    - regex: 'Vi10(?:[);/ ]|$)'
21235      model: 'Vi10'
21236
21237
21238    - regex: 'HiBox-hero(?:[);/ ]|$)'
21239      model: 'HiBox Hero'
21240      device: 'desktop'
21241
21242    - regex: 'CW-(Vi[78]|Hi12|V99i?|V88S)(?:[);/ ]|$)'
21243      model: '$1'
21244
21245# Bezkam
21246Bezkam:
21247  regex: 'BEZKAM (BK-RAM2)(?:[);/ ]|$)'
21248  device: 'smartphone'
21249  model: '$1'
21250
21251# NG Optics
21252'NG Optics':
21253  regex: '(NG3128HD)(?:[);/ ]|$)'
21254  device: 'tv'
21255  model: '$1'
21256
21257# KATV1
21258KATV1:
21259  regex: '(KATV-01) PRO(?:[);/ ]|$)'
21260  device: 'tv'
21261  model: '$1 Pro'
21262
21263# Ghong
21264Ghong:
21265  regex: 'GHONG(V10)(?:[);/ ]|$)'
21266  device: 'smartphone'
21267  model: '$1'
21268
21269# Xoro
21270Xoro:
21271  regex: '(?:TelePAD(?:795|731|1032|10A3|7A3)|Era 2X|HMT(?:390Q?|400)|HST 260)(?:[);/ ]|$)'
21272  device: 'tablet'
21273  models:
21274    - regex: 'TelePAD(7|10)A3 4G(?:[);/ ]|$)'
21275      model: 'TelePad $1 A3 4G'
21276    - regex: 'TelePAD(795|731|1032)(?:[);/ ]|$)'
21277      model: 'TelePad $1'
21278
21279    - regex: 'HMT(390Q?|400)(?:[);/ ]|$)'
21280      model: 'HMT $1'
21281      device: 'portable media player'
21282
21283    - regex: 'HST 260(?:[);/ ]|$)'
21284      model: 'HST 260'
21285      device: 'tv'
21286
21287    - regex: '(Era 2X)(?:[);/ ]|$)'
21288      model: '$1'
21289      device: 'smartphone'
21290
21291# Vinga
21292Vinga:
21293  regex: 'VMP-(015-162|021-82|041-162|011-81|025-324|045-664)(?:[);/ ]|$)|VMP023\.'
21294  device: 'tv'
21295  models:
21296    - regex: 'VMP-021-82'
21297      model: '021'
21298    - regex: 'VMP-025-324'
21299      model: '025'
21300    - regex: 'VMP-015-162'
21301      model: '015'
21302    - regex: 'VMP-041-162'
21303      model: '041'
21304    - regex: 'VMP-045-664'
21305      model: '045'
21306    - regex: 'VMP-011-81'
21307      model: '011'
21308    - regex: 'VMP023\.'
21309      model: '023'
21310
21311# Viumee (viumee.com)
21312Viumee:
21313  regex: 'SMART[_ ](EV[56])(?:[);/ ]|$)'
21314  device: 'smartphone'
21315  model: 'Smart $1'
21316
21317# Nuvo
21318Nuvo:
21319  regex: 'Nuvo[_ ](NS35|Blue ND40|Green[_ ]ND[_ ]45)(?:[);/ ]|$)'
21320  device: 'smartphone'
21321  models:
21322    - regex: 'Nuvo[_ ](NS35)(?:[);/ ]|$)'
21323      model: '$1'
21324    - regex: 'Blue (ND40)(?:[);/ ]|$)'
21325      model: '$1'
21326    - regex: 'Green[_ ]ND[_ ]45(?:[);/ ]|$)'
21327      model: 'ND45'
21328
21329# Sunvell
21330Sunvell:
21331  regex: '(?:T95ZPLUS|T95[KU]PRO)(?:[);/ ]|$)'
21332  device: 'tv'
21333  models:
21334    - regex: 'T95ZPLUS'
21335      model: 'T95Z Plus'
21336    - regex: '(T95[KU])PRO'
21337      model: '$1 Pro'
21338
21339# Ugoos
21340Ugoos:
21341  regex: 'UGOOS-(AM[36])(?:[);/ ]|$)'
21342  device: 'tv'
21343  model: '$1'
21344
21345# Yxtel
21346Yxtel:
21347  regex: 'YXTEL_([HU]1|U3)(?:[);/ ]|$)'
21348  device: 'smartphone'
21349  model: '$1'
21350
21351# Proline
21352Proline:
21353  regex: 'Proline_|(?:H10882M-TN|H10888M)(?:[);/ ]|$)'
21354  device: 'tablet'
21355  models:
21356    - regex: 'Proline[_ ]FalconXL'
21357      device: 'smartphone'
21358      model: 'Falcon XL'
21359    - regex: '(H10882M-TN|H10888M)'
21360      model: '$1'
21361# Yota
21362Yota:
21363  regex: '(YD20[16]|YOTA 3[+])(?:[);/ ]|$)'
21364  device: 'smartphone'
21365  models:
21366    - regex: 'YD20[16](?:[);/ ]|$)'
21367      model: 'Phone 2'
21368    - regex: 'YOTA 3[+](?:[);/ ]|$)'
21369      model: 'Phone 3 Plus'
21370
21371# Mystery
21372Mystery:
21373  regex: 'MYSTERY|(MID-(?:123G|72[12]|7[01348]3G|753G|8[23]3G))(?:[);/ ]|$)'
21374  device: 'tablet'
21375  models:
21376    - regex: 'MID-(123G|72[12]|7[01348]3G|753G|8[23]3G)(?:[);/ ]|$)'
21377      model: 'MID-$1'
21378
21379    - regex: 'MYSTERY_TV_(D3155CH31)'
21380      device: 'tv'
21381      model: '$1'
21382
21383# Ritzviva
21384Ritzviva:
21385  regex: '(RITZVIVA[_ ]S500C)(?:[);/ ]|$)'
21386  device: 'smartphone'
21387  model: 'S500C'
21388
21389# DeWalt
21390DeWalt:
21391  regex: 'DeWalt (MD501)(?:[);/ ]|$)'
21392  device: 'smartphone'
21393  model: '$1'
21394
21395# Runbo
21396Runbo:
21397  regex: 'Runbo|F1-TT(?:[);/ ]|$)'
21398  device: 'smartphone'
21399  models:
21400    - regex: 'Runbo[ _-]?(X5-W|F1 Plus|[PF]1-TT|F1-EN|[FH]1|TT|Q5-S|X5-King|X6|Q5)(?:[);/ ]|$)'
21401      model: '$1'
21402    - regex: 'F1-TT'
21403      model: 'F1-TT'
21404
21405    - regex: 'RunboP2'
21406      device: 'tablet'
21407      model: 'P2'
21408
21409# NewsMy
21410NewsMy:
21411  regex: '(CarPad-(?:II|III)-P)(?:[);/ ]|$)'
21412  device: 'car browser'
21413  model: '$1'
21414
21415# Newsday
21416Newsday:
21417  regex: 'Newsday[_ ](E1|A[12])(?:[);/ ]|$)'
21418  device: 'smartphone'
21419  model: '$1'
21420
21421# Daewoo
21422Daewoo:
21423  regex: 'Daewoo|(DTA-07IDRF)(?:[);/ ]|$)'
21424  device: 'tablet'
21425  models:
21426    - regex: '(DTA-07IDRF)(?:[);/ ]|$)'
21427      model: 'Archive 7P'
21428
21429    - regex: 'Daewoo (Android TV 638)(?:[);/ ]|$)'
21430      model: '$1'
21431      device: 'tv'
21432
21433# Vesta
21434Vesta:
21435  regex: 'VESTA32LD86(?:[);/ ]|$)'
21436  device: 'tv'
21437  model: 'SmartT V2.0 32LD86S'
21438
21439# Spectrum
21440Spectrum:
21441  regex: '(CARBONO_5|CUARZO_6|DIAMANTE_5|VULCANO_55)(?:[);/ ]|$)'
21442  device: 'smartphone'
21443  models:
21444    - regex: 'VULCANO_55(?:[);/ ]|$)'
21445      model: 'Vulcano 5.5"'
21446    - regex: 'CARBONO_5(?:[);/ ]|$)'
21447      model: 'Carbono 5.0"'
21448    - regex: 'CUARZO_6(?:[);/ ]|$)'
21449      model: 'Cuarzo 6.0"'
21450    - regex: 'DIAMANTE_5(?:[);/ ]|$)'
21451      model: 'Diamante 5.0"'
21452
21453# Kivi
21454Kivi:
21455  regex: '(?: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|40FR50BR|43UK35G|50FK30G|50UK35G|32HR50GR|55UC30G|32HK30G|40FK30G|32HR50GU|43UK30G|32FR50(?:WR|BU)|32FK3[02]G)(?:_-Ver0[0-9])?(?:[);/ ]|$)'
21456  device: 'tv'
21457  models:
21458    - 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|40FR50BR|43UK35G|50FK30G|50UK35G|32HR50GR|32FR50(?:WR|BU)|32FK3[02]G)(?:[);/ ]|$)'
21459      model: '$1'
21460    - regex: '(55UC30G|40FK30G|43UK30G|32HR50G[RU]|32HK30G|32FK32G)_-Ver0([0-9])(?:[);/ ]|$)'
21461      model: '$1 v$2'
21462
21463# Divisat
21464Divisat:
21465  regex: '(Divisat)(?:[);/ ]|$)'
21466  device: 'tv'
21467  models:
21468    - regex: '(J-Link)(?:[);/ ]|$)'
21469      model: '$1'
21470
21471# DIXON (https://www.dixoninfo.com/)
21472DIXON:
21473  regex: 'DIXON_|(?:ACK1010|KT5512)(?:[);/ ]|$)'
21474  device: 'smartphone'
21475  models:
21476    - regex: '(ACK1010|KT5512)'
21477      model: '$1'
21478    - regex: 'DIXON_XK1_3G(?:[);/ ]|$)'
21479      device: 'feature phone'
21480      model: 'XK1 3G'
21481
21482# Kanji
21483Kanji:
21484  regex: 'KJ-(OB0[23]|YUBI|SMART4K|GOCHI|ALFARK)(?:[);/ ]|$)'
21485  device: 'tablet'
21486  models:
21487    - regex: 'KJ-OB03'
21488      model: 'Cata 7'
21489    - regex: 'KJ-GOCHI'
21490      model: 'Gochi'
21491    - regex: 'KJ-OB02'
21492      model: 'Ailu Max'
21493    - regex: 'KJ-YUBI'
21494      model: 'Yubi 3G'
21495    - regex: 'KJ-ALFARK'
21496      model: 'Alfa'
21497    - regex: 'KJ-SMART4K'
21498      device: 'tv'
21499      model: 'Smart 4K'
21500
21501# Kaiomy
21502Kaiomy:
21503  regex: 'KaiCloud[ ]?(7[48]4|942)(?:[);/ ]|$)'
21504  device: 'tablet'
21505  model: 'KaiCloud $1'
21506
21507# National
21508National:
21509  regex: '(NX-32THS100)(?:[);/ ]|$)'
21510  device: 'tv'
21511  model: '$1'
21512
21513# Vsun
21514Vsun:
21515  regex: '(?:VSUN (?:ILLUSION|RACE|V9)|MARS TOUCH|MARS NOTE|MARS NOCAM|SATURN SELFIE)(?:[);/ ]|$)'
21516  device: 'smartphone'
21517  models:
21518    - regex: 'ILLUSION(?:[);/ ]|$)'
21519      model: 'Illusion'
21520    - regex: 'MARS TOUCH(?:[);/ ]|$)'
21521      model: 'Mars Touch'
21522    - regex: 'MARS NOTE(?:[);/ ]|$)'
21523      model: 'Mars Note'
21524    - regex: 'MARS NOCAM(?:[);/ ]|$)'
21525      model: 'Mars Nocam'
21526    - regex: 'SATURN SELFIE(?:[);/ ]|$)'
21527      model: 'Saturn Selfie'
21528    - regex: 'RACE(?:[);/ ]|$)'
21529      model: 'Race'
21530    - regex: '(V9)(?:[);/ ]|$)'
21531      model: '$1'
21532
21533# Shift Phones
21534Shift Phones:
21535  regex: '(SHIFT6m)(?:[);/ ]|$)'
21536  device: 'smartphone'
21537  model: '$1'
21538
21539# RugGear
21540RugGear:
21541  regex: '(RugGear|RG(?:310|500|65[05]|702|7[13]0|850))(?:[);/ ]|$)'
21542  device: 'smartphone'
21543  models:
21544    - regex: '(RG[0-9]+)(?:[);/ ]|$)'
21545      model: '$1'
21546
21547# Maxcom
21548Maxcom:
21549  regex: '(MS(?:45[036]|505|514)|MS457(?:PLUS)?)(?:[);/ ]|$)'
21550  device: 'smartphone'
21551  models:
21552    - regex: '(MS457)PLUS(?:[);/ ]|$)'
21553      model: '$1 Plus'
21554    - regex: 'MS(45[0367]|505|514)(?:[);/ ]|$)'
21555      model: 'MS$1'
21556
21557# Luna
21558Luna:
21559  regex: '(?:LUNA[ _](?:[VG]55|G[56]0)|TG-L800S)(?:[);/ ]|$)'
21560  device: 'smartphone'
21561  models:
21562    - regex: 'LUNA[ _]([VG]55|G[56]0)(?:[);/ ]|$)'
21563      model: '$1'
21564    - regex: '(TG-L800S)(?:[);/ ]|$)'
21565      model: '$1'
21566
21567# Protruly
21568Protruly:
21569  regex: 'PROTRULY[ _](D[78]|V10S)(?:[);/ ]|$)'
21570  device: 'smartphone'
21571  model: '$1'
21572
21573# JFone
21574JFone:
21575  regex: 'JFone[ _](JS501)(?:[);/ ]|$)'
21576  device: 'smartphone'
21577  model: '$1'
21578
21579# Uhans
21580Uhans:
21581  regex: '(A101S)(?:[);/ ]|$)'
21582  device: 'smartphone'
21583  model: '$1'
21584
21585# Soyes
21586Soyes:
21587  regex: 'SOYES[ _]([67]S|XS)(?:[);/ ]|$)'
21588  device: 'smartphone'
21589  model: '$1'
21590
21591# Zidoo
21592Zidoo:
21593  regex: 'ZIDOO[ _](H6 Pro|X6 Pro|X9S|Z10|X[158]|X20 Pro|Z9S)(?:[);/ ]|$)'
21594  device: 'tv'
21595  model: '$1'
21596
21597# Zfiner
21598Zfiner:
21599  regex: 'ZFINERY900(?:[);/ ]|$)'
21600  device: 'tablet'
21601  model: 'Y900'
21602
21603# iGet
21604iGet:
21605  regex: 'SMART[_ ](G10[12]|S7[02]|G71|G81[H]?)(?:[);/ ]|$)'
21606  device: 'tablet'
21607  model: 'Smart $1'
21608
21609# Phicomm
21610Phicomm:
21611  regex: '(PHICOMM)(?:[);/ ]|$)'
21612  device: 'smartphone'
21613  models:
21614    - regex: 'C630 \(CLUE L\)(?:[);/ ]|$)'
21615      model: 'Clue L'
21616    - regex: 'E653\(ENERGY L\)(?:[);/ ]|$)'
21617      model: 'Energy L'
21618    - regex: 'PHICOMM ENERGY 3\+(?:[);/ ]|$)'
21619      model: 'Energy 3+'
21620    - regex: 'CLUE (2S|M|C230)(?:[);/ ]|$)'
21621      model: 'Clue $1'
21622
21623# Huadoo
21624Huadoo:
21625  regex: 'Huadoo[ _](HG0[46]|HG11|V[34])(?:[);/ ]|$)'
21626  device: 'smartphone'
21627  model: '$1'
21628
21629# Gome
21630Gome:
21631  regex: '(?:GOME[_ ](?:201[678].+|C7_Note(?:_Plus)?|U9|S[17])|Fenmmy_Note)(?:[);/ ]|$)'
21632  device: 'smartphone'
21633  models:
21634    - regex: 'GOME[_ ](?:2018X38A)(?:[);/ ]|$)'
21635      model: 'C72'
21636    - regex: 'GOME[_ ](?:2018X07A)(?:[);/ ]|$)'
21637      model: 'C7'
21638    - regex: 'GOME[_ ](?:2017X05A)(?:[);/ ]|$)'
21639      model: 'C71'
21640    - regex: 'GOME[_ ](?:2017X82A)(?:[);/ ]|$)'
21641      model: 'C51'
21642    - regex: 'GOME[_ ](?:2016G68A)(?:[);/ ]|$)'
21643      model: 'K1'
21644    - regex: 'GOME[_ ](?:2016M25A)(?:[);/ ]|$)'
21645      model: 'U1'
21646    - regex: 'GOME[_ ](?:2017M27A)(?:[);/ ]|$)'
21647      model: 'U7'
21648    - regex: 'GOME[_ ](?:2018M29A)(?:[);/ ]|$)'
21649      model: 'U9'
21650    - regex: 'GOME[_ ](C7_Note(?:_Plus)?|U9|S[17])(?:[);/ ]|$)'
21651      model: '$1'
21652    - regex: '(?:GOME[_ ])?(Fenmmy_Note)(?:[);/ ]|$)'
21653      device: 'phablet'
21654      model: '$1'
21655
21656# Voyo (en.myvoyo.com)
21657Voyo:
21658  regex: '(?:VOYO[_ ](?:A15)|i8-Max|Q101-4G)(?:[);/ ]|$)'
21659  device: 'tablet'
21660  models:
21661    - regex: 'i8-Max(?:[);/ ]|$)'
21662      model: 'i8 Max'
21663    - regex: '(Q101)-4G(?:[);/ ]|$)'
21664      model: '$1 4G'
21665    - regex: 'VOYO[_ ](A15)(?:[);/ ]|$)'
21666      model: '$1'
21667
21668# Ryte (Ryte Mobile)
21669Ryte:
21670  regex: 'RYTE (U55 LTE)(?:[);/ ]|$)'
21671  device: 'smartphone'
21672  model: '$1'
21673
21674# Vontar
21675Vontar:
21676  regex: '(HK1 (?:Max|MINI|PLUS|PRO)|VONTAR[ -](?:Z[58]|V1|KIII|MX-4K|X3))(?:[);/ ]|$)'
21677  device: 'tv'
21678  models:
21679    - regex: 'VONTAR[ -](Z[58]|V1|KIII|MX-4K|X3)(?:[);/ ]|$)'
21680      model: '$1'
21681    - regex: 'HK1 Max(?:[);/ ]|$)'
21682      model: 'HK1 Max'
21683    - regex: 'HK1 MINI(?:[);/ ]|$)'
21684      model: 'HK1 Mini'
21685    - regex: 'HK1 PLUS(?:[);/ ]|$)'
21686      model: 'HK1 Plus'
21687    - regex: 'HK1 PRO(?:[);/ ]|$)'
21688      model: 'HK1 Pro'
21689
21690# Vorke
21691Vorke:
21692  regex: 'VORKE (Z[157]|Z6(?: Plus)?)(?:[);/ ]|$)'
21693  device: 'tv'
21694  model: '$1'
21695
21696# Wigor
21697Wigor:
21698  regex: 'Wigor (V4)(?:[);/ ]|$)'
21699  device: 'smartphone'
21700  model: '$1'
21701
21702# NEXON (nexon.ua)
21703NEXON:
21704  regex: 'NEXON (X[12589])(?:[);/ ]|$)'
21705  device: 'tv'
21706  model: '$1'
21707
21708# ONN (walmart)
21709ONN:
21710  regex: '(ONA19TB00[327]|10000520[6-9]|O8HD|100026191|100011886|100003561|100011885|100015685-A)(?:[);/ ]|$)'
21711  device: 'tablet'
21712  model: '$1'
21713
21714# EXO S.A (exo.com.ar)
21715EXO:
21716  regex: '(?:EXO_)?(Wave_i101G|Wave_i007B?|Wave i101[Hb])(?:[);/ ]|$)'
21717  device: 'tablet'
21718  model: '$1'
21719
21720# Q.Bell (qbell.it)
21721'Q.Bell':
21722  regex: '(QPHONE[_ ](?:10.1|9.[12]|7.1|5.[246])|QTAB10EW)(?:[);/ ]|$)'
21723  device: 'smartphone'
21724  models:
21725    - regex: '(QPHONE[_ ](?:10.1|9.[12]|7.1|5.[246]))(?:[);/ ]|$)'
21726      model: '$1'
21727    - regex: 'QTAB10EW'
21728      device: 'tablet'
21729      model: 'QTAB10EW'
21730
21731# Datawind
21732Datawind:
21733  regex: 'DW-[A-Z0-9]{5}(?:[);/ ]|$)'
21734  device: 'smartphone'
21735  models:
21736    - regex: '(DW-PS3G5)(?:[);/ ]|$)'
21737      model: 'Pocket Surfer 3G5'
21738    - regex: 'DW-UBT7W'
21739      device: 'tablet'
21740      model: 'Ubislate 7W'
21741
21742# Droxio (droxio.es) sub brand 3GO
21743Droxio:
21744  regex: 'DROXIO (C40|A47|B45|KENTIA)(?:[);/ ]|$)'
21745  device: 'smartphone'
21746  model: '$1'
21747
21748# 3GO (www.3go.es)
217493GO:
21750  regex: '(?:Aplay ?[34])(?:[);/ ]|$)'
21751  device: 'smartphone'
21752  models:
21753    - regex: 'Aplay ?([34])'
21754      device: 'tablet'
21755      model: 'Aplay $1'
21756
21757# Goophone
21758Goophone:
21759  regex: 'Goophone[ _]|(?:M(G492|L7[JK]2)CH|MN(4A2|8J2)ZP|MGA92ZP|MKU82ZP|MNGW2CH|MNH02CH|MNRM2CH)[/]A(?:[);/ ]|$)'
21760  device: 'smartphone'
21761  models:
21762    - regex: '(?:MG492CH|MGA92ZP)[/]A(?:[);/ ]|$)'
21763      model: 'I6 Plus'
21764    - regex: 'ML7[JK]2CH[/]A(?:[);/ ]|$)'
21765      model: 'I6'
21766    - regex: 'MKU82ZP[/]A(?:[);/ ]|$)'
21767      model: 'I6S'
21768    - regex: 'MNGW2CH[/]A(?:[);/ ]|$)'
21769      model: 'I6S Plus'
21770    - regex: '(?:MN4A2ZP|MNH02CH)[/]A(?:[);/ ]|$)'
21771      model: 'I7'
21772    - regex: '(?:MN8J2ZP|MNRM2CH)[/]A(?:[);/ ]|$)'
21773      model: 'I7 Plus'
21774    - regex: 'S4 MEGA(?:[);/ ]|$)'
21775      model: 'S4 Mega'
21776    - regex: 'Goophone i([69])(?:[);/ ]|$)'
21777      model: 'I$1'
21778
21779# PocketBook
21780PocketBook:
21781  regex: 'PocketBook[ _/]'
21782  device: 'tablet'
21783  models:
21784    - regex: 'PocketBook SURFpad 3 \(([\d]+).([\d]+)["]?\)(?:[);/ ]|$)'
21785      model: 'Surfpad 3 $1.$2"'
21786    - regex: 'PocketBook/(62[67]|63[12]|740|840)(?:[);/ ]|$)'
21787      model: '$1'
21788
21789# Bitmore
21790Bitmore:
21791  regex: '(?:Mobitab10c-3G|Tab1011Q_II|Colortab[ _]?(10(?:M| II)?|816i))(?:[);/ ]|$)'
21792  device: 'tablet'
21793  models:
21794    - regex: '(Mobitab)(10)c-3G(?:[);/ ]|$)'
21795      model: '$1 $2C 3G'
21796    - regex: 'Tab1011Q_II(?:[);/ ]|$)'
21797      model: 'Tab1011Q II'
21798    - regex: 'Colortab[ _]?(10(?:M| II)?|816i)(?:[);/ ]|$)'
21799      model: 'ColorTab $1'
21800
21801# Kuliao
21802Kuliao:
21803  regex: 'KULIAO (K10)(?:[);/ ]|$)'
21804  device: 'smartphone'
21805  model: '$1'
21806
21807# Sugar
21808Sugar:
21809  regex: 'SUGAR[ _]'
21810  device: 'smartphone'
21811  models:
21812    - regex: 'SUGAR Y([78]) MAX(?:[);/ ]|$)'
21813      model: 'Y$1 Max'
21814    - regex: 'SUGAR F7 Mini(?:[);/ ]|$)'
21815      model: 'F7 Mini'
21816    - regex: 'SUGAR (C[12]1|C1[23]|S11|C11s|[SF]20s?|[YF]11|[YFS]9|C[679]|[FY]7|Y12s|Y1[256]|P1)(?:[);/ ]|$)'
21817      model: '$1'
21818
21819# Subor
21820Subor:
21821  regex: 'SUBOR[ _]'
21822  device: 'smartphone'
21823  models:
21824    - regex: 'SUBOR[ _](S5|2019)(?:[);/ ]|$)'
21825      model: '$1'
21826    - regex: 'SUBOR[_ ]K10PLUS(?:[);/ ]|$)'
21827      model: 'K10 Plus'
21828
21829# Xshitou
21830Xshitou:
21831  regex: 'Xshitou[_ ](P7)(?:[);/ ]|$)'
21832  device: 'smartphone'
21833  model: '$1'
21834
21835# JKL
21836JKL:
21837  regex: 'JKL[_ ](A28)(?:[);/ ]|$)'
21838  device: 'smartphone'
21839  model: '$1'
21840
21841# Gree
21842Gree:
21843  regex: '(G0215D|G0245D|G0335D)(?:[);/ ]|$)'
21844  device: 'smartphone'
21845  model: '$1'
21846
21847# Vodacom
21848Vodacom:
21849  regex: '(?:Vodacom)[ _]|(?:Kicka 5 Plus 4G)(?:[);/ ]|$)'
21850  device: 'tablet'
21851  models:
21852    - regex: 'Kicka 5 Plus 4G'
21853      device: 'smartphone'
21854      model: 'Kicka 5 Plus 4G'
21855    - regex: '(?:Vodacom)[ _](Power Tab 10)(?:[);/ ]|$)'
21856      model: '$1'
21857
21858# VKworld
21859VKworld:
21860  regex: '(?:(?:VK700)-MAX|VK700 Pro|T5SE|VK700X|vk6050|vk6735|vk700)(?:[);/ ]|$)'
21861  device: 'smartphone'
21862  models:
21863    - regex: '(VK700)-MAX(?:[);/ ]|$)'
21864      model: '$1 Max'
21865    - regex: '(VK700) Pro(?:[);/ ]|$)'
21866      model: '$1 Pro'
21867    - regex: 'T5SE(?:[);/ ]|$)'
21868      model: 'T5 SE'
21869    - regex: 'VK(700X|6050|6735|700)(?:[);/ ]|$)'
21870      model: 'VK$1'
21871
21872# Mito (mitomobile.com)
21873Mito:
21874  regex: 'MITO[- _]'
21875  device: 'smartphone'
21876  models:
21877    - regex: 'MITO[- _]3255(?:[);/ ]|$)'
21878      device: 'tv'
21879      model: '3255'
21880    - regex: 'MITO[- _]A37[_ ]Z1plus'
21881      model: 'A37 Z1 Plus'
21882    - regex: 'MITO[- _](A(?:19[_ ][12]GB|37[_ ]Z1|36[_ ]W1|[0-9]+)|311)(?:[);/ ]|$)'
21883      model: '$1'
21884    - regex: 'MITO[- _](T(?:[0-9]+))(?:[);/ ]|$)'
21885      device: 'tablet'
21886      model: '$1'
21887
21888# TWM or TaiwanMobile
21889TWM:
21890  regex: 'Amazing[ _](X[35]s|X[123567]|A5S|A3[025]|A[468]|A4S|A5[057]|P6)(?:[);/ ]|$)'
21891  device: 'smartphone'
21892  models:
21893    - regex: 'Amazing[ _](X[35])s(?:[);/ ]|$)'
21894      model: 'Amazing $1S'
21895    - regex: 'Amazing[ _](A5S|X[123567]|A[468]|A4S|A5[057]|A3[025])(?:[);/ ]|$)'
21896      model: 'Amazing $1'
21897    - regex: 'Amazing[ _](P6)(?:[);/ ]|$)'
21898      device: 'tablet'
21899      model: 'Amazing $1'
21900
21901# TWZ (twz.co.th)
21902TWZ:
21903  regex: 'TWZ[-_ ](?:TabPlay|Y6[08]|Y52|A49|A[59]5|A567|AA8|QQ[12])|TWZQQ1'
21904  device: 'smartphone'
21905  models:
21906    - regex: 'TWZ[_ ]TabPlay[_ ](12[56])'
21907      device: 'tablet'
21908      model: 'TabPlay $1'
21909    - regex: 'TWZ[-_ ]?(Y6[08]|Y52|A49|A[59]5|A567|AA8|QQ[12])'
21910      model: '$1'
21911
21912# Onix
21913Onix:
21914  regex: '(?:ONIX S405|AT101-1116)(?:[);/ ]|$)'
21915  device: 'tablet'
21916  models:
21917    - regex: '(AT101-1116)(?:[);/ ]|$)'
21918      model: '$1'
21919    - regex: '(S405)(?:[);/ ]|$)'
21920      device: 'smartphone'
21921      model: '$1'
21922
21923# Oale
21924Oale:
21925  regex: '(?:Apex([13])|CC1 PRO)(?:[);/ ]|$)'
21926  device: 'smartphone'
21927  models:
21928    - regex: '(CC1) PRO'
21929      model: '$1 Pro'
21930    - regex: 'Apex([13])'
21931      model: 'Apex $1'
21932
21933# Mobo
21934Mobo:
21935  regex: '(?:(?:MOBO[_ ]MB7005|MT7-421HD)|(?:MT7-442D|MT7-411D))(?:[);/ ]|$)'
21936  device: 'tablet'
21937  models:
21938    - regex: '(?:MOBO[_ ])?(MB7005|MT7-421HD|MT7-442D|MT7-411D)(?:[);/ ]|$)'
21939      model: '$1'
21940
21941# Macoox
21942Macoox:
21943  regex: '(MC-X7MINI)(?:[);/ ]|$)'
21944  device: 'smartphone'
21945  model: 'MC-X7 Mini'
21946
21947# Prixton
21948Prixton:
21949  regex: 'PRIXTON |(T7012Q)(?:[);/ ]|$)'
21950  device: 'tablet'
21951  models:
21952    - regex: 'PRIXTON (C18)'
21953      device: 'smartphone'
21954      model: '$1'
21955    - regex: '(T7012Q)(?:[);/ ]|$)'
21956      model: '$1'
21957
21958# Magnus or Magnus Telecom
21959Magnus:
21960  regex: 'Magnus[ _](?:bravoZ[23]0|Infinity_?(?:G8|G11))(?:[);/ ]|$)'
21961  device: 'smartphone'
21962  models:
21963    - regex: 'bravo(Z[23]0)'
21964      model: 'Bravo $1'
21965    - regex: '(?:Magnus[ _])?Infinity_?(G8|G11)'
21966      model: 'Infinity $1'
21967
21968# Newland
21969Newland:
21970  regex: '(?:NLS-MT90)(?:[);/ ]|$)'
21971  device: 'smartphone'
21972  model: 'MT90 Orca'
21973
21974# Orbic
21975Orbic:
21976  regex: '(?:RC555L|RC501L)(?:[);/ ]|$)'
21977  device: 'smartphone'
21978  models:
21979    - regex: 'RC555L(?:[);/ ]|$)'
21980      model: 'Wonder'
21981    - regex: 'RC501L(?:[);/ ]|$)'
21982      model: 'Slim'
21983
21984# RED
21985RED:
21986  regex: '(?:H1A1000)(?:[);/ ]|$)'
21987  device: 'smartphone'
21988  model: 'Hydrogen One'
21989
21990# Contixo
21991Contixo:
21992  regex: 'Contixo|(?:CX-1045 3G|KT995 3G|CX1045)(?:[);/ ]|$)'
21993  device: 'tablet'
21994  models:
21995    - regex: 'CX-?1045(?: 3G)?(?:[);/ ]|$)'
21996      model: 'CX-1045 3G'
21997    - regex: 'CONTIXO GX 1035(?:[);/ ]|$)'
21998      model: 'GX-1035 4G 10.1"'
21999    - regex: 'Contixo GT1160 4G(?:[);/ ]|$)'
22000      model: 'GT1160 4G 10.1"'
22001    - regex: 'B105(?:[);/ ]|$)'
22002      model: 'B105 3G 10.1"'
22003    - regex: 'B108(?:[);/ ]|$)'
22004      model: 'B108 4G 10.1"'
22005    - regex: 'KT107(?: 3G)?(?:[);/ ]|$)'
22006      model: 'KT107 3G 10.1"'
22007    - regex: 'K109(?:[);/ ]|$)'
22008      model: 'KT109 4G 10.1"'
22009    - regex: 'KT715 3G(?:[);/ ]|$)'
22010      model: 'KT715 3G 7.0"'
22011    - regex: 'KT995(?:[);/ ]|$)'
22012      model: 'KT995 3G 10.1"'
22013    - regex: 'KT ?1100GT(?: 4G)?(?:[);/ ]|$)'
22014      model: 'KT1100GT'
22015
22016# E-Ceros
22017'E-Ceros':
22018  regex: '(?:CT9716(?:-B)?)(?:[);/ ]|$)'
22019  device: 'tablet'
22020  models:
22021    - regex: 'CT9716(?:[);/ ]|$)'
22022      model: 'Revolution'
22023    - regex: 'CT9716-B(?:[);/ ]|$)'
22024      model: 'Revolution HD'
22025
22026# How (how.com.br)
22027How:
22028  regex: '(?:HT-705XS|705-G Go|1001-G Go)(?:[);/ ]|$)'
22029  device: 'tablet'
22030  models:
22031    - regex: '(HT-705XS)(?:[);/ ]|$)'
22032      model: '$1'
22033    - regex: '(1001-G Go)(?:[);/ ]|$)'
22034      model: 'HT-1001G Go Kids'
22035    - regex: '(705-G Go)(?:[);/ ]|$)'
22036      model: 'HT-$1'
22037
22038# Multilaser
22039Multilaser:
22040  regex: '(?:Multilaser[ _](?:[FEGH])(?:[_ ](?:Pro|Max|Lite))?|MS50[LGXM]|M7[_-]3G[_-]PLUS|MS5\.V2|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 QUAD CORE|M7s_?Lite|MS50L?_4G|MS60F(?:_PLUS)?)(?:[);/ ]|$)'
22041  device: 'smartphone'
22042  models:
22043    - regex: 'Multilaser[ _]G[_ ]Pro(?:[);/ ]|$)'
22044      model: 'G Pro'
22045    - regex: 'Multilaser[ _]F[_ ]Pro(?:[);/ ]|$)'
22046      model: 'F Pro'
22047    - regex: 'Multilaser[ _]G[_ ]Max(?:[);/ ]|$)'
22048      model: 'G Max'
22049    - regex: 'Multilaser[ _]G(?:[);/ ]|$)'
22050      model: 'G'
22051    - regex: 'Multilaser[ _]E[_ ]Lite(?:[);/ ]|$)'
22052      model: 'E Lite'
22053    - regex: 'Multilaser[ _]([FEH])(?:[);/ ]|$)'
22054      model: '$1'
22055    - regex: 'MS60F_PLUS(?:[);/ ]|$)'
22056      model: 'MS60F Plus'
22057    - regex: '(MS50[LGXSM]|MS45S_A6|MS40[GS]|MS55M|MS60F|MS70|MS60[XZ]|MS45S|MS80X|MS50L?_4G|MS5\.V2)(?:[);/ ]|$)'
22058      model: '$1'
22059    - regex: 'M7[_-]3G[_-]PLUS(?:[);/ ]|$)'
22060      device: 'tablet'
22061      model: 'M7 3G Plus'
22062    - regex: 'M7SQC_PLUS(?:[);/ ]|$)'
22063      device: 'tablet'
22064      model: 'M7SQC Plus'
22065    - regex: 'M7-3G QUAD CORE(?:[);/ ]|$)'
22066      device: 'tablet'
22067      model: 'M7 3G Quad Core'
22068    - regex: 'ML([02]1|12)-M7s[- ]?Quad-?Core(?:[);/ ]|$)'
22069      device: 'tablet'
22070      model: 'ML$1-M7s Quad Core'
22071    - regex: 'M7s_?Lite(?:[);/ ]|$)'
22072      device: 'tablet'
22073      model: 'M7s Lite'
22074    - regex: 'ML01-M7-SD(?:[);/ ]|$)'
22075      device: 'tablet'
22076      model: 'ML01-M7 SD'
22077
22078# Positivo BGH
22079Positivo BGH:
22080  regex: '(?:T1060B|S455|Positivo (?:Twist|Ypy|Mini I)|Twist[ _](?:\(2018\)|2 (?:Fit|Pro)|Mini|Tab|Metal(?: 32GB)?|Max|XL|SE|[23SM]))(?:[);/ ]|$)'
22081  device: 'smartphone'
22082  models:
22083    - regex: 'S455(?:[);/ ]|$)'
22084      model: 'Selfie'
22085    - regex: 'Twist \(2018\)(?:[);/ ]|$)'
22086      model: 'Twist (2018)'
22087    - regex: 'Twist Metal 32GB(?:[);/ ]|$)'
22088      model: 'Twist Metal 32GB'
22089    - regex: 'Twist Metal(?:[);/ ]|$)'
22090      model: 'Twist Metal'
22091    - regex: 'Twist Max(?:[);/ ]|$)'
22092      model: 'Twist Max'
22093    - regex: 'Twist[ _]Mini(?:[);/ ]|$)'
22094      model: 'Twist Mini'
22095    - regex: 'Twist 2 Fit(?:[);/ ]|$)'
22096      model: 'Twist 2 Fit'
22097    - regex: 'Twist 2 Pro(?:[);/ ]|$)'
22098      model: 'Twist 2 Pro'
22099    - regex: 'Twist XL(?:[);/ ]|$)'
22100      model: 'Twist XL'
22101    - regex: 'Twist SE(?:[);/ ]|$)'
22102      model: 'Twist SE'
22103    - regex: '(?:Positivo )?Twist ([23SM])(?:[);/ ]|$)'
22104      model: 'Twist $1'
22105    - regex: '(?:Positivo )Mini I(?:[);/ ]|$)'
22106      model: 'Mini I'
22107
22108    - regex: 'T1060B(?:[);/ ]|$)'
22109      device: 'tablet'
22110      model: 'T1060B'
22111    - regex: 'Positivo Ypy (AB7F|AB10H|L1050E)(?:[);/ ]|$)'
22112      device: 'tablet'
22113      model: 'Ypy $1'
22114    - regex: 'Twist Tab(?:[);/ ]|$)'
22115      device: 'tablet'
22116      model: 'Twist Tab'
22117
22118# Maxtron
22119Maxtron:
22120  regex: 'Maxtron[ _-](V[327]|S[89]|T1)(?:[);/ ]|$)'
22121  device: 'smartphone'
22122  models:
22123    - regex: 'Maxtron[ _-](V[327]|S[89])(?:[);/ ]|$)'
22124      model: '$1'
22125    - regex: 'Maxtron[ _-](T1)(?:[);/ ]|$)'
22126      device: 'tablet'
22127      model: '$1'
22128
22129# Philco (philco.com.br)
22130Philco:
22131  regex: 'PHILCO |(PCS01|PH350B|PTB7R|PTB7PAP_PTB7PAB_PTB7PAR)(?:[);/ ]|$)'
22132  device: 'smartphone'
22133  models:
22134    - regex: '(PCS01|PH350B)(?:[);/ ]|$)'
22135      model: '$1'
22136    - regex: '(PTB7R)(?:[);/ ]|$)'
22137      device: 'tablet'
22138      model: '$1'
22139    - regex: 'PHILCO Android TV(?:[);/ ]|$)'
22140      device: 'tv'
22141      model: ''
22142    - regex: 'PTB7PAP_PTB7PAB_PTB7PAR(?:[);/ ]|$)'
22143      device: 'tablet'
22144      model: 'PTB7PA'
22145
22146# SEMP TCL
22147SEMP TCL:
22148  regex: '(?:GO[35]E|5101J|GO3C(?: Plus)?)(?:[);/ ]|$)'
22149  device: 'smartphone'
22150  models:
22151    - regex: '5101J(?:[);/ ]|$)'
22152      model: 'L9 Plus'
22153    - regex: 'GO3C Plus(?:[);/ ]|$)'
22154      model: 'GO! 3C Plus'
22155    - regex: 'GO3C(?:[);/ ]|$)'
22156      model: 'GO! 3C'
22157    - regex: '(GO[35]E)(?:[);/ ]|$)'
22158      model: '$1'
22159
22160# Newman
22161Newman:
22162  regex: 'Newman[ _](P308|K1)(?:[);/ ]|$)'
22163  device: 'smartphone'
22164  model: '$1'
22165
22166# Swipe
22167Swipe:
22168  regex: '(?:Elite Sense|Elite_VR|Slate2)(?:[);/ ]|$)'
22169  device: 'smartphone'
22170  models:
22171    - regex: '(Elite Sense|Elite_VR)(?:[);/ ]|$)'
22172      model: '$1'
22173    - regex: 'Slate2(?:[);/ ]|$)'
22174      device: 'tablet'
22175      model: 'Slate 2'
22176
22177# Owwo
22178Owwo:
22179  regex: '(?:OWWO[ _]?(?:[1457]S|Q[78])|CARNIVAL B5)(?:[);/ ]|$)'
22180  device: 'smartphone'
22181  models:
22182    - regex: 'OWWO[ _]?([1457]S|Q[78])(?:[);/ ]|$)'
22183      model: '$1'
22184    - regex: 'CARNIVAL B5(?:[);/ ]|$)'
22185      model: 'Carnival B5'
22186
22187# 360 or names Qihoo 360, +360
22188'360':
22189  regex: '(?:180[1379]-A01|1713-A01|1707-A01|1509-A00|1603-A03|1607-A01|1503-A01)(?:[);/ ]|$)'
22190  device: 'smartphone'
22191  models:
22192    - regex: '1807-A01(?:[);/ ]|$)'
22193      model: 'N7'
22194    - regex: '1803-A01(?:[);/ ]|$)'
22195      model: 'N7 Lite'
22196    - regex: '1809-A01(?:[);/ ]|$)'
22197      model: 'N7 Pro'
22198    - regex: '1713-A01(?:[);/ ]|$)'
22199      model: 'N6 Lite'
22200    - regex: '1707-A01(?:[);/ ]|$)'
22201      model: 'N6'
22202    - regex: '1801-A01(?:[);/ ]|$)'
22203      model: 'N6 Pro'
22204    - regex: '1509-A00(?:[);/ ]|$)'
22205      model: 'Q5 Plus'
22206    - regex: '1503-A01(?:[);/ ]|$)'
22207      model: 'N4'
22208    - regex: '1603-A03(?:[);/ ]|$)'
22209      model: 'N4A'
22210    - regex: '1607-A01(?:[);/ ]|$)'
22211      model: 'N5S'
22212
22213# TD Systems
22214TD Systems:
22215  regex: '(K32DLX9HS|K40DLM8FS|K40DLX9FS)(?:[);/ ]|$)'
22216  device: 'tv'
22217  model: '$1'
22218
22219# Ravoz
22220Ravoz:
22221  regex: 'RAVOZ[ _](Z[57] (?:Lite|Pro)|Z[3-7]|R[478])(?:[);/ ]|$)'
22222  device: 'smartphone'
22223  model: '$1'
22224
22225# Tone Mobile (tone.ne.jp)
22226Tone:
22227  regex: 'TONE[ _](e19|m15|e2[01])(?:[);/ ]|$)'
22228  device: 'smartphone'
22229  model: '$1'
22230
22231# AT&T
22232AT&T:
22233  regex: '(?:U304AA|QS5509A|U705AA|U318AA|V350U)(?:[);/ ]|$)'
22234  device: 'smartphone'
22235  models:
22236    - regex: 'U304AA(?:[);/ ]|$)'
22237      model: 'Radiant Core'
22238    - regex: 'U705AA(?:[);/ ]|$)'
22239      model: 'Radiant Max'
22240    - regex: 'QS5509A(?:[);/ ]|$)'
22241      model: 'Axia'
22242    - regex: 'U318AA(?:[);/ ]|$)'
22243      model: 'Calypso'
22244    - regex: 'V350U(?:[);/ ]|$)'
22245      model: 'Maestro Plus'
22246
22247# BIHEE
22248BIHEE:
22249  regex: '(ZBH-)?BIHEE'
22250  device: 'smartphone'
22251  models:
22252    - regex: '(A1[1268]|A[78]\+|A[56])(?:[);/ ]|$)'
22253      model: '$1'
22254
22255# Enot
22256Enot:
22257  regex: 'Enot[ _-](E102|J101)(?:[);/ ]|$)'
22258  device: 'tablet'
22259  model: '$1'
22260
22261# Kooper
22262Kooper:
22263  regex: 'Kooper-mobile-W502(?:[);/ ]|$)'
22264  device: 'smartphone'
22265  model: 'Mobile W502'
22266
22267# Lesia
22268Lesia:
22269  regex: 'ANOVA A5(?:[);/ ]|$)'
22270  device: 'smartphone'
22271  model: 'Anova A5'
22272
22273# Anry
22274Anry:
22275  regex: 'ANRY-(RS10|[SX]20)(?:[);/ ]|$)'
22276  device: 'tablet'
22277  model: '$1'
22278
22279# Tinai
22280Tinai:
22281  regex: 'Tinai (K[12])(?:[);/ ]|$)'
22282  device: 'smartphone'
22283  model: '$1'
22284
22285# Winds (Windsmobile)
22286Winds:
22287  regex: 'NOTE GRACE V(?:[);/ ]|$)'
22288  device: 'smartphone'
22289  model: 'Note Grace V'
22290
22291# Asano
22292Asano:
22293  regex: '32LF7130S(?:[);/ ]|$)'
22294  device: 'tv'
22295  model: '32LF7130S 32.0"'
22296
22297# Phonemax
22298Phonemax:
22299  regex: '(?:PHONEMAX[_ ](?:Saturn(?:[_ ]X)?|Mars|Venus X)|Rocky 2)(?:[);/ ]|$)'
22300  device: 'smartphone'
22301  models:
22302    - regex: 'PHONEMAX[_ ]Saturn[_ ]X(?:[);/ ]|$)'
22303      model: 'Saturn X'
22304    - regex: 'PHONEMAX[_ ]Saturn(?:[);/ ]|$)'
22305      model: 'Saturn'
22306    - regex: 'PHONEMAX[_ ]Mars(?:[);/ ]|$)'
22307      model: 'Mars'
22308    - regex: 'PHONEMAX[_ ]Venus X(?:[);/ ]|$)'
22309      model: 'Venus X'
22310    - regex: 'Rocky 2(?:[);/ ]|$)'
22311      model: 'Rocky 2'
22312
22313# Vipro (Vipro Mobile)
22314Vipro:
22315  regex: 'VIPRO(?:[);/ ]|$)'
22316  device: 'smartphone'
22317  models:
22318    - regex: 'VIPRO PRO2X(?:[);/ ]|$)'
22319      model: 'Pro 2X'
22320    - regex: 'VIPRO PRO[ _-]?([0-9])(?:[);/ ]|$)'
22321      model: 'Pro $1'
22322
22323# OzoneHD
22324OzoneHD:
22325  regex: 'Ozone HD|OzoneHD[ _](T2 WiFi|4K(?: TV)?|Fun)(?:[);/ ]|$)'
22326  device: 'tv'
22327  model: '$1'
22328
22329# KZEN (kzen.me)
22330Kzen:
22331  regex: '(?:Ureki_U1|Victor V1|DART KZ07)(?:[);/ ]|$)'
22332  device: 'smartphone'
22333  models:
22334    - regex: 'Ureki_U1'
22335      model: 'Ureki U1'
22336    - regex: 'Victor V1'
22337      model: 'Victor V1'
22338    - regex: 'DART KZ07'
22339      device: 'tablet'
22340      model: 'Dart KZ07'
22341
22342# MELROSE
22343Melrose:
22344  regex: 'MELROSE[_ ](?:S9\+?|S9P|2019)(?:[);/ ]|$)'
22345  device: 'smartphone'
22346  models:
22347    - regex: 'MELROSE[_ ]S9\+(?:[);/ ]|$)'
22348      model: 'S9 Plus'
22349    - regex: 'MELROSE[_ ](S9|S9P)(?:[);/ ]|$)'
22350      model: '$1'
22351    - regex: 'MELROSE_2019(?:[);/ ]|$)'
22352      model: '2019 Ultra Slim 3.4"'
22353
22354# Crony
22355Crony:
22356  regex: 'CRONY-7021(?:[);/ ]|$)'
22357  device: 'tablet'
22358  model: '7021'
22359
22360# Takara
22361Takara:
22362  regex: '(MID211H)(?:[);/ ]|$)'
22363  device: 'tablet'
22364  model: '$1'
22365
22366# Tronsmart
22367Tronsmart:
22368  regex: '(Orion R68G|Draco AW80|Draco H3|Vega S95_(?:Meta|Pro|Telos))(?:[);/ ]|$)'
22369  device: 'tv'
22370  model: '$1'
22371
22372# Amigoo
22373Amigoo:
22374  regex: 'AMIGOO (R300|R9 Max|M1 Max|X15)(?:[);/ ]|$)'
22375  device: 'smartphone'
22376  model: '$1'
22377
22378# Lumigon
22379Lumigon:
22380  regex: 'Lumigon[ _](T3)(?:[);/ ]|$)'
22381  device: 'smartphone'
22382  model: '$1'
22383
22384# Neomi
22385Neomi:
22386  regex: 'NEO[ ]?(90[689])(?:[);/ ]|$)'
22387  device: 'smartphone'
22388  model: 'Neo $1'
22389
22390# Eltex (eltex-co.ru)
22391Eltex:
22392  regex: '(?:NV5(?:01|10)WAC|NV501|NV510WB)(?:[);/ ]|$)'
22393  device: 'tv'
22394  models:
22395    - regex: 'NV5(01|10)WAC(?:[);/ ]|$)'
22396      model: 'NV-5$1-Wac'
22397    - regex: 'NV501(?:[);/ ]|$)'
22398      model: 'NV-501'
22399    - regex: 'NV510WB(?:[);/ ]|$)'
22400      model: 'NV-510-WB'
22401
22402# Senkatel
22403Senkatel:
22404  regex: 'Senkatel[ _](T1009|T8002|T701[12]|T9702)(?:[);/ ]|$)'
22405  device: 'tablet'
22406  model: '$1'
22407
22408# Bobarry
22409Bobarry:
22410  regex: '(?:K10[ ]?SE)(?:[);/ ]|$)'
22411  device: 'tablet'
22412  model: 'K10 SE'
22413
22414# Wortmann (wortmann.de)
22415Wortmann:
22416  regex: 'TERRA[ _]PAD[ _](100[45])(?:[);/ ]|$)'
22417  device: 'tablet'
22418  model: 'Terra Pad $1'
22419
22420# BB Mobile
22421BB Mobile:
22422  regex: 'bb-mobile|Techno[-_ ](8\.0|9\.7|TQ863Q|X595BT|X800BJ|S700BF|I700AJ|10.1 LTE TQ060X|7.0 LTE TQ763I|I785AP|I101BI)(?:[);/ ]|$)'
22423  device: 'tablet'
22424  models:
22425    - regex: 'Techno[_ ]S700BF(?:[);/ ]|$)'
22426      model: 'Techno 7.0" Pioneer LTE S700BF'
22427    - regex: 'Techno[_ ]10.1 LTE TQ060X(?:[);/ ]|$)'
22428      model: 'Techno 10.0" LTE TQ060X'
22429    - regex: 'Techno[_ ]TQ863Q(?:[);/ ]|$)'
22430      model: 'Techno 8.0" Poplar LTE TQ863Q'
22431    - regex: 'Techno[_ ]I700AJ(?:[);/ ]|$)'
22432      model: 'Techno 7.0" Mozg LTE I700AJ'
22433    - regex: 'Techno[-_ ]I785AP(?:[);/ ]|$)'
22434      model: 'Techno 7.85" Mozg I785AP'
22435    - regex: 'Techno[_ ]X800BJ(?:[);/ ]|$)'
22436      model: 'Techno 8.0" Mozg X800BJ'
22437    - regex: 'Techno[-_ ]I101BI(?:[);/ ]|$)'
22438      model: 'Techno 10.1" Mozg I101BI'
22439    - regex: 'Techno[_ ]7.0 LTE TQ763I(?:[);/ ]|$)'
22440      model: 'Techno 7.0" Kalash LTE TQ763I'
22441    - regex: '(FirstTab TP-17)(?:[);/ ]|$)'
22442      model: '$1'
22443
22444    - regex: 'Techno[_ ](9\.7|8\.0) 3G(?:[);/ ]|$)'
22445      model: 'Techno $1" 3G'
22446
22447    - regex: 'Techno[_ ](?:X595BT)(?:[);/ ]|$)'
22448      device: 'smartphone'
22449      model: 'Techno Spark 3G X595BT'
22450
22451# 2E (2e.ua)
224522E:
22453  regex: '(?:E500A_2019|2E E450 2018)(?:[);/ ]|$)'
22454  device: 'smartphone'
22455  models:
22456    - regex: 'E500A_2019(?:[);/ ]|$)'
22457      model: 'E500A (2019)'
22458    - regex: '2E E450 2018(?:[);/ ]|$)'
22459      model: 'E450 (2018)'
22460
22461# Billion
22462Billion:
22463  regex: 'Capture\+(?:[);/ ]|$)'
22464  device: 'smartphone'
22465  model: 'Capture Plus'
22466
22467# Tele2 (www.tele2.com) mobile operator
22468Tele2:
22469  regex: 'Tele2[ _]'
22470  device: 'smartphone'
22471  models:
22472    - regex: 'Tele2[ _](Mi[dn]i)[ _]1.1(?:[);/ ]|$)'
22473      model: '$1 1.1'
22474    - regex: 'Tele2[ _]Midi[ _]2.0(?:[);/ ]|$)'
22475      model: 'Midi 2.0'
22476    - regex: 'Tele2[ _]((?:Maxi|Midi)(?:[_ ](?:Plus|LTE))?)(?:[);/ ]|$)'
22477      model: '$1'
22478    - regex: 'Tele2[ _](Mi[dn]i)(?:[);/ ]|$)'
22479      model: '$1'
22480
22481# Alfawise
22482Alfawise:
22483  regex: '(?:Alfawise (?:A9)|(?:A95X_R1|Z28Pro))(?:[);/ ]|$)'
22484  device: 'tv'
22485  models:
22486    - regex: '(A95X_R1)(?:[);/ ]|$)'
22487      model: '$1'
22488    - regex: 'Z28Pro(?:[);/ ]|$)'
22489      model: 'Z28 Pro'
22490    - regex: 'Alfawise (A9)'
22491      model: '$1'
22492
22493# Klipad
22494Klipad:
22495  regex: 'KLIPAD_|(?:KL-V905|KL4889|KL9878|7589AN)(?:[);/ ]|$)'
22496  device: 'smartphone'
22497  models:
22498    - regex: '(?:KLIPAD_)?(V355B?|KL600|KL-V905)(?:[);/ ]|$)'
22499      model: '$1'
22500    - regex: '(KL4889|7589AN|KL9878)(?:[);/ ]|$)'
22501      device: 'tablet'
22502      model: '$1'
22503
22504# SQOOL (sqool.fr)
22505SQOOL:
22506  regex: 'SQOOL-V(41?)(?:[);/ ]|$)'
22507  device: 'tablet'
22508  model: 'V$1'
22509
22510# TurboPad (turbopad.ru)
22511TurboPad:
22512  regex: 'Turbopad[-_ ]?(72[34]|80[23]|912|101[456])(?:NEW)?(?:[);/ ]|$)'
22513  device: 'tablet'
22514  model: '$1'
22515
22516# TurboKids sub brand TurboPad (turbokids.ru)
22517TurboKids:
22518  regex: 'Turbokids[-_ ]?(TMNT|3G|S4|Princess)(?:[);/ ]|$)'
22519  device: 'tablet'
22520  model: '$1'
22521
22522# Jinga (jinga.ru)
22523Jinga:
22524  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)(?:[);/ ]|$)'
22525  device: 'smartphone'
22526  models:
22527    - regex: 'Optim4G(?:[);/ ]|$)'
22528      model: 'Optim 4G'
22529    - regex: 'Fresh4G(?:[);/ ]|$)'
22530      model: 'Fresh 4G'
22531    - regex: 'Hotz[_ ]M1(?:[);/ ]|$)'
22532      model: 'Hotz M1'
22533    - regex: 'Hit4G(?:[);/ ]|$)'
22534      model: 'Hit 4G'
22535    - regex: 'PassPlus(?:[);/ ]|$)'
22536      model: 'Pass Plus'
22537    - regex: 'Pass3G(?:[);/ ]|$)'
22538      model: 'Pass 3G'
22539    - regex: 'GoalPlus(?:[);/ ]|$)'
22540      model: 'Goal Plus'
22541    - regex: '(Win|Joy)PRO(?:[);/ ]|$)'
22542      model: '$1 Pro'
22543    - regex: 'Touch4G(?:[);/ ]|$)'
22544      model: 'Touch 4G'
22545    - regex: 'Start3G(?:[);/ ]|$)'
22546      model: 'Start 3G'
22547    - regex: 'StartLTE(?:[);/ ]|$)'
22548      model: 'Start LTE'
22549    - regex: 'Start(?:[);/ ]|$)'
22550      model: 'Start'
22551    - regex: 'PicassoNote(?:[);/ ]|$)'
22552      model: 'Picasso Note'
22553    - regex: 'Jinga Iron(?:[);/ ]|$)'
22554      model: 'Iron'
22555    - regex: 'Fresh(?:[);/ ]|$)'
22556      model: 'Fresh'
22557    - regex: 'Jinga Basco neo(?:[);/ ]|$)'
22558      model: 'Basco Neo'
22559    - regex: 'M500-1(?:[);/ ]|$)'
22560      model: 'Basco M500 3G'
22561    - regex: '(?:Jinga[ _])?Basco[ _](L[13]|L[45]00|XS1|S2)(?:[);/ ]|$)'
22562      model: 'Basco $1'
22563    - regex: 'Jinga Trezor S1 Plus(?:[);/ ]|$)'
22564      model: 'Trezor S1 Plus'
22565    - regex: 'JINGA_IGO_L2(?:[);/ ]|$)'
22566      model: 'IGO L2'
22567    - regex: '(?:JINGA[_ ])?IGO[_ ]([ML]1|L4)(?:[);/ ]|$)'
22568      model: 'IGO $1'
22569    - regex: '(?:JINGA[_ ])?(Neon|A450)(?:[);/ ]|$)'
22570      model: '$1'
22571    - regex: 'Jinga Trezor S1 Plus(?:[);/ ]|$)'
22572      model: 'Trezor S1 Plus'
22573
22574# Twoe
22575Twoe:
22576  regex: '(?:TWOE[-_ ]E450R|F534L|F572L|E500A)(?:[);/ ]|$)'
22577  device: 'smartphone'
22578  models:
22579    - regex: 'TWOE[-_ ](E450R)(?:[);/ ]|$)'
22580      model: '$1'
22581    - regex: '(F534L|F572L|E500A)(?:[);/ ]|$)'
22582      model: '$1'
22583
22584# iTruck
22585iTruck:
22586  regex: 'iTRUCK 7 3G(?:[);/ ]|$)'
22587  device: 'smartphone'
22588  model: '7.0" 3G'
22589
22590# Torex (torex.tools)
22591Torex:
22592  regex: 'TOREX[- ](?:PS12|S18|S27)(?:[);/ ]|$)'
22593  device: 'tablet'
22594  models:
22595    - regex: 'TOREX-(PS12)'
22596      model: '$1'
22597    - regex: 'TOREX[- ](S18|S27)'
22598      device: 'smartphone'
22599      model: '$1'
22600
22601# Doffler
22602Doffler:
22603  regex: '(24DHS54)(?:[);/ ]|$)'
22604  device: 'tv'
22605  model: '$1'
22606
22607# Oyyu
22608Oyyu:
22609  regex: 'OYYUT11(?:[);/ ]|$)'
22610  device: 'tablet'
22611  model: 'T11 3G'
22612
22613# Primux (primux.es)
22614Primux:
22615  regex: 'Primux|SirocoY'
22616  device: 'smartphone'
22617  models:
22618    - regex: 'Primux_ioxphone(?:[);/ ]|$)'
22619      model: 'IOX Phone'
22620    - regex: 'PrimuxDelta6(?:[);/ ]|$)'
22621      model: 'Delta 6'
22622    - regex: 'PrimuxKappa(P50[01])(?:[);/ ]|$)'
22623      model: 'Kappa $1'
22624    - regex: 'PrimuxKappa(?:[);/ ]|$)'
22625      model: 'Kappa'
22626    - regex: 'Primux_Beta2(?:[);/ ]|$)'
22627      model: 'Beta 2'
22628    - regex: 'Primux_?Omega([57])(?:[);/ ]|$)'
22629      model: 'Omega $1'
22630
22631    - regex: 'PrimuxUP(?:[);/ ]|$)'
22632      device: 'tablet'
22633      model: 'UP'
22634    - regex: ' PrimuxZonda4(?:[);/ ]|$)'
22635      device: 'tablet'
22636      model: 'Zonda 4'
22637    - regex: 'Primux_Siroco6(?:[);/ ]|$)'
22638      device: 'tablet'
22639      model: 'Siroco 6'
22640    - regex: 'SirocoY(?:[);/ ]|$)'
22641      device: 'tablet'
22642      model: 'Siroco Y'
22643
22644# iMars
22645iMars:
22646  regex: '(?:IMARS VEGA X7|VIVI_8|MILKY_WAY_M2)(?:[);/ ]|$)'
22647  device: 'smartphone'
22648  models:
22649    - regex: 'IMARS VEGA X7'
22650      model: 'Vega X7'
22651    - regex: 'VIVI_8'
22652      model: 'VIVI 8'
22653    - regex: 'MILKY_WAY_M2'
22654      model: 'Milky Way M2'
22655
22656# Logic (logicmobility.com)
22657Logic:
22658  regex: 'LOGIC[_ ](X[135]|X4M|L5D|X5[AFT]|X60G|L61|X60_PLUS)(:?[_ ]LITE2?)?(?:[);/ ]|$)'
22659  device: 'smartphone'
22660  models:
22661    - regex: 'LOGIC[_ ]X60_PLUS(?:[);/ ]|$)'
22662      model: 'X60 Plus'
22663    - regex: 'LOGIC[_ ](X5|X4M)[_ ]LITE(?:[);/ ]|$)'
22664      model: '$1 Lite'
22665    - regex: 'LOGIC[_ ](X5)[_ ]LITE2(?:[);/ ]|$)'
22666      model: '$1 Lite 2'
22667    - regex: 'LOGIC[_ ](X[13]|X4M|L5D|X5[AFT]|X60G|L61)(?:[);/ ]|$)'
22668      model: '$1'
22669
22670# Cloudpad
22671Cloudpad:
22672  regex: '\+VT(?:107C|Q007C)(?:[);/ ]|$)'
22673  device: 'tablet'
22674  models:
22675    - regex: '\+VT(107C)'
22676      model: '+VT$1'
22677    - regex: '\+VTQ(007C)'
22678      model: '+VTQ$1'
22679
22680# Cloudfone
22681Cloudfone:
22682  regex: 'CloudFone[ _]|(?:Thrill (?:Boost[ ]?(2|3)?|Snap|Access)|Excite Prime 2 Pro|NBA Edition)(?:[);/ ]|$)'
22683  device: 'smartphone'
22684  models:
22685    - regex: 'Thrill Boost 2 Plus(?:[);/ ]|$)'
22686      model: 'Thrill Boost 2 Plus'
22687    - regex: 'Thrill Boost (2|3)(?:[);/ ]|$)'
22688      model: 'Thrill Boost $1'
22689    - regex: 'Thrill Boost(?:[);/ ]|$)'
22690      model: 'Thrill Boost'
22691    - regex: 'Thrill Snap(?:[);/ ]|$)'
22692      model: 'Thrill Snap'
22693    - regex: 'Thrill Access(?:[);/ ]|$)'
22694      model: 'Thrill Access'
22695    - regex: 'Excite Prime 2 Pro(?:[);/ ]|$)'
22696      model: 'Excite Prime 2 Pro'
22697    - regex: 'NBA Edition(?:[);/ ]|$)'
22698      model: 'NBA Edition'
22699    - regex: 'Next(?:[);/ ]|$)'
22700      model: 'Next'
22701
22702# Vsmart
22703Vsmart:
22704  regex: '(?:Joy [123]\+|Joy [34]|Active 1\+|Bee 3|Active 3)(?:[);/ ]|$)'
22705  device: 'smartphone'
22706  models:
22707    - regex: 'Joy ([123])\+(?:[);/ ]|$)'
22708      model: 'Joy $1 Plus'
22709    - regex: 'Joy ([34])(?:[);/ ]|$)'
22710      model: 'Joy $1'
22711    - regex: 'Active 1\+(?:[);/ ]|$)'
22712      model: 'Active 1 Plus'
22713    - regex: 'Bee 3(?:[);/ ]|$)'
22714      model: 'Bee 3'
22715    - regex: 'Active 3(?:[);/ ]|$)'
22716      model: 'Active 3'
22717
22718# MiXzo
22719MiXzo:
22720  regex: '(?:MiXzo[ _])?(?:ME ?10(?:2[35]|30)|MX1037|MX1024|MX10[24]1|MX1397)([ _][34]G)?(?:[);/ ]|$)'
22721  device: 'tablet'
22722  models:
22723    - regex: 'MiXzo[_ ]ME ?(1023|1030)(?:[_ ]([34])G)(?:[);/ ]|$)'
22724      model: 'ME$1 $2G'
22725    - regex: 'MiXzo[_ ]MX1021(?:[_ ]3G)?(?:[);/ ]|$)'
22726      model: 'MX1021 3G'
22727    - regex: '(?:MiXzo[ _])?MX(1037|1041|1024|1397)[ _]4G(?:[);/ ]|$)'
22728      model: 'MX$1 4G'
22729    - regex: 'ME ?1025'
22730      model: 'ME1025 3G'
22731
22732# Openbox
22733Openbox:
22734  regex: '(?:Openbox (?:A[34](?: (?:Pro|Lite))?)|AS_4K_CI(?:_PRO)?)(?:[);/ ]|$)'
22735  device: 'tv'
22736  models:
22737    - regex: 'Openbox (A[34](?: (?:Pro|Lite))?)(?:[);/ ]|$)'
22738      model: '$1'
22739    - regex: 'AS_4K_CI_PRO'
22740      model: 'AS 4K CI Pro'
22741    - regex: 'AS_4K_CI'
22742      model: 'AS 4K CI'
22743
22744# Ziox
22745Ziox:
22746  regex: 'ZIOX[_ ]|(?:Astra Viva 4G|Astra NXT Pro|Duopix F9)(?:[);/ ]|$)'
22747  device: 'smartphone'
22748  models:
22749    - regex: 'ZIOX[_ ]F9[_ ]PRO(?:[);/ ]|$)'
22750      model: 'F9 Pro'
22751    - regex: 'Astra Viva 4G(?:[);/ ]|$)'
22752      model: 'Astra Viva 4G'
22753    - regex: 'Astra NXT Pro(?:[);/ ]|$)'
22754      model: 'Astra NXT Pro'
22755    - regex: 'Duopix F9(?:[);/ ]|$)'
22756      model: 'Duopix F9'
22757
22758# iDroid
22759iDroid:
22760  regex: 'APACHE G6(?:[);/ ]|$)'
22761  device: 'smartphone'
22762  model: 'Apache G6'
22763
22764# Aoson
22765Aoson:
22766  regex: 'aoson(?:R10[1-3]|S[78]|M707TG)(?:[_ ]?Pro)?(?:[);/ ]|$)'
22767  device: 'tablet'
22768  models:
22769    - regex: 'aosonR10([1-3])(?:[);/ ]|$)'
22770      model: 'R10$1 10.1"'
22771    - regex: 'aosonS7_Pro(?:[);/ ]|$)'
22772      model: 'S7 Pro 7.0"'
22773    - regex: 'aosonS7(?:[);/ ]|$)'
22774      model: 'S7 7.0"'
22775    - regex: 'aosonS8Pro(?:[);/ ]|$)'
22776      model: 'S8 Pro 8.0"'
22777    - regex: 'aoson(M707TG)(?:[);/ ]|$)'
22778      model: '$1'
22779
22780# FireFly Mobile
22781FireFly Mobile:
22782  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)(?:[);/ ]|$)'
22783  device: 'smartphone'
22784  models:
22785    - regex: 'AURII[ _]FORCE(?:[);/ ]|$)'
22786      model: 'Aurii Force'
22787    - regex: 'AURII[ _]DELIGHT(?:[);/ ]|$)'
22788      model: 'Aurii Delight'
22789    - regex: 'AURII[ _]DREAM[_ ]MINI(?:[);/ ]|$)'
22790      model: 'Aurii Dream Mini'
22791    - regex: 'AURII[ _]DREAM[_ ]One(?:[);/ ]|$)'
22792      model: 'Aurii Dream One'
22793    - regex: 'AURII[ _]ULTRA(?:[);/ ]|$)'
22794      model: 'Aurii Ultra'
22795    - regex: 'AURII[ _]AMUSE[_ ]3G(?:[);/ ]|$)'
22796      model: 'Aurii Amuse 3G'
22797    - regex: 'AURII[ _]FUSION(?:[);/ ]|$)'
22798      model: 'Aurii Fusion'
22799    - regex: 'AURII[ _]XCITE(?:[);/ ]|$)'
22800      model: 'Aurii xCite'
22801    - regex: 'SECRET_XR(?:[);/ ]|$)'
22802      model: 'Aurii Secret XR'
22803    - regex: 'AURII[ _]((?:Passion|Virtuoso|Secret Lite|F8[_ ]Premium))(?:[);/ ]|$)'
22804      model: 'Aurii $1'
22805    - regex: 'INTENSE POWER(?:[);/ ]|$)'
22806      model: 'Intense Power'
22807    - regex: 'INTENSE_XT(?:[);/ ]|$)'
22808      model: 'Intense XT'
22809    - regex: 'INTENSE_METAL_2(?:[);/ ]|$)'
22810      model: 'Intense Metal 2'
22811    - regex: 'SUPER SWEET(?:[);/ ]|$)'
22812      model: 'Super Sweet'
22813    - regex: 'SWEET MINI(?:[);/ ]|$)'
22814      model: 'Sweet Mini'
22815
22816# FISE (http://www.fise.com.cn/)
22817FISE:
22818  regex: 'Fise_'
22819  device: 'smartphone'
22820  models:
22821    - regex: 'Fise_32433_3G(?:[);/ ]|$)'
22822      device: 'feature phone'
22823      model: 'M32433 3G'
22824
22825# i-Cherry or iCherry
22826i-Cherry:
22827  regex: 'iCherry_?'
22828  device: 'smartphone'
22829  models:
22830    - regex: 'iCherry[ _](C(?:25[1258]|21[16]|110|121|22[0379]|23[03])|X1)(?:[);/ ]|$)'
22831      model: '$1'
22832    - regex: 'iCherry-C256'
22833      device: 'tablet'
22834      model: 'C256 Nano 3G'
22835
22836# NextTab
22837NextTab:
22838  regex: 'TAB (A40[13]0)(?:[);/ ]|$)'
22839  device: 'tablet'
22840  model: '$1'
22841
22842# Time 2
22843Time2:
22844  regex: '(TC1050G)(?:[);/ ]|$)'
22845  device: 'tablet'
22846  model: '$1 10.1"'
22847
22848# Sunstech
22849Sunstech:
22850  regex: '(TAB2323GMQC)(?:[);/ ]|$)'
22851  device: 'tablet'
22852  model: '$1'
22853
22854# Hotwav (www.hotwav.com)
22855Hotwav:
22856  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 (?:X|Max|R60))(?:[);/ ]|$)'
22857  device: 'smartphone'
22858  models:
22859    - regex: 'Cosmos[ _]V8_lite(?:[);/ ]|$)'
22860      model: 'Cosmos V8 Lite'
22861    - regex: 'Hot[_ ]6?(?:[);/ ]|$)'
22862      model: 'Hot 6'
22863    - regex: 'Venus R8 PLUS(?:[);/ ]|$)'
22864      model: 'Venus R8 Plus'
22865    - regex: 'Venus[_ ]X16(?:-1)?(?:[);/ ]|$)'
22866      model: 'Venus X16'
22867    - regex: 'Venus[_ ](X[12]|X1[0245679]|R[236-9]|R1[028])(?:[);/ ]|$)'
22868      model: 'Venus $1'
22869    - regex: 'Symbol R60'
22870      device: 'phablet'
22871      model: 'Symbol R60'
22872    - regex: '(Cosmos[ _](?:V19_Plus|V2[0-3]|U2|V1[359]|V[45689])|Pearl K2|Magic Q8|Magic 5 Plus|Magic (?:[89]|1[13])|Symbol (?:X|Max))(?:-2)?(?:[);/ ]|$)'
22873      model: '$1'
22874
22875# Tetratab
22876Tetratab:
22877  regex: 'CASEBOOK_3(?:[);/ ]|$)'
22878  device: 'tablet'
22879  model: 'Casebook 3'
22880
22881# Dolamee
22882Dolamee:
22883  regex: 'Dolamee[_ -](D[56])(?:[);/ ]|$)'
22884  device: 'tv'
22885  model: '$1'
22886
22887# INVIN
22888Invin:
22889  regex: 'INVIN[ _-]|KM5PRO(?:[);/ ]|$)'
22890  device: 'tv'
22891  models:
22892    - regex: 'INVIN[ _-](X[24]|KM[678])'
22893      model: '$1'
22894    - regex: 'KM5PRO'
22895      model: 'KM5 Pro'
22896
22897# Doopro
22898Doopro:
22899  regex: 'Doopro P3(?:[);/ ]|$)'
22900  device: 'smartphone'
22901  model: 'P3'
22902
22903# IQM
22904IQM:
22905  regex: 'IQM (?:picasso|vivaldi|newton)(?:[);/ ]|$)'
22906  device: 'smartphone'
22907  models:
22908    - regex: 'IQM picasso(?:[);/ ]|$)'
22909      model: 'Picasso'
22910    - regex: 'IQM vivaldi(?:[);/ ]|$)'
22911      model: 'Vivaldi'
22912    - regex: 'IQM newton(?:[);/ ]|$)'
22913      model: 'Newton'
22914
22915# Nos
22916Nos:
22917  regex: 'Nos (?:FIVE|NOVU|NEVA|Roya)(?:[);/ ]|$)'
22918  device: 'smartphone'
22919  models:
22920    - regex: 'NOS FIVE(?:[);/ ]|$)'
22921      model: 'Five'
22922    - regex: 'NOS NOVU III(?:[);/ ]|$)'
22923      model: 'Novu III'
22924    - regex: 'NOS NOVU II(?:[);/ ]|$)'
22925      model: 'Novu II'
22926    - regex: 'NOS NOVU(?:[);/ ]|$)'
22927      model: 'Novu'
22928    - regex: 'NOS NEVA 80(?:[);/ ]|$)'
22929      model: 'Neva 80'
22930    - regex: 'NOS Roya(?:[);/ ]|$)'
22931      model: 'Roya'
22932
22933# Accent (DBM Maroc) (accent.ma)
22934Accent:
22935  regex: '(?:ACCENT[_ ]NEON|FAST73G|PEARL[_ ]A[24567]|TANK_P55|CAMELEON[_ ](?:C[456]|A1)(?:[_ ]PLUS)?|Speed[- ](?:[AXYM]2|X2\+))(?:[);/ ]|$)'
22936  device: 'smartphone'
22937  models:
22938    - regex: 'ACCENT[_ ]NEON(?:[);/ ]|$)'
22939      model: 'Neon'
22940    - regex: 'CAMELEON[_ ]C6[_ ]PLUS(?:[);/ ]|$)'
22941      model: 'Cameleon C6 Plus'
22942    - regex: 'Speed[- ]([AXYM]2)(?:[);/ ]|$)'
22943      model: 'Speed $1'
22944    - regex: 'Speed-X2\+(?:[);/ ]|$)'
22945      model: 'Speed X2 Plus'
22946    - regex: 'CAMELEON[_ ](C[456]|A1)(?:[);/ ]|$)'
22947      model: 'Cameleon $1'
22948    - regex: 'PEARL A4 Lite(?:[);/ ]|$)'
22949      model: 'Pearl A4 Lite'
22950    - regex: 'PEARL[_ ]A([2567])(?:[);/ ]|$)'
22951      model: 'Pearl A$1'
22952    - regex: 'TANK_P55(?:[);/ ]|$)'
22953      model: 'Tank P55'
22954    - regex: 'FAST73G(?:[);/ ]|$)'
22955      device: 'phablet'
22956      model: 'FAST7 3G'
22957
22958# Avenzo (www.avenzo.es)
22959Avenzo:
22960  regex: 'Avenzo(?:[);/ ]|$)'
22961  device: 'smartphone'
22962  models:
22963    - regex: 'MOB4 4G(?:[);/ ]|$)'
22964      model: 'Mob 4 4G'
22965    - regex: 'MOB4PRO 4G(?:[);/ ]|$)'
22966      model: 'Mob 4 Pro 4G'
22967
22968# Beelink (www.bee-link.com)
22969Beelink:
22970  regex: '(?:Beelink (?:G[ST]1|LAKE I|SEA I|A1)|GTKing(?:_AT)?|GT1mini-2|GT1-mini(?:[-_]AT)?)(?:[);/ ]|$)'
22971  device: 'tv'
22972  models:
22973    - regex: 'Beelink (G[ST]1|LAKE I|SEA I|A1)(?:[);/ ]|$)'
22974      model: '$1'
22975    - regex: 'GT1-mini(?:-AT)?(?:[);/ ]|$)'
22976      model: 'GT1 Mini'
22977    - regex: 'GT1mini-2(?:[);/ ]|$)'
22978      model: 'GT1 Mini 2'
22979    - regex: 'GTKing(?:_AT)?(?:[);/ ]|$)'
22980      model: 'GT King'
22981
22982# MAXVI
22983MAXVI:
22984  regex: 'MAXVI[ _](?:MS401)(?:[);/ ]|$)|(?:\w+)?_MAXVI_\w+|MS502[_ ]Orion|MS531'
22985  device: 'smartphone'
22986  models:
22987    - regex: 'MAXVI[ _](MS401)'
22988      model: '$1'
22989    - regex: 'MS531'
22990      model: 'MS531 Vega'
22991    - regex: 'MS502[_ ]Orion'
22992      model: 'MS502 Orion'
22993    - regex: '(?:\w+)?MAXVI_(P11|K10|X[358]00)_\w+'
22994      device: 'feature phone'
22995      model: '$1'
22996
22997# MDC Store (http://mdc.store/ or https://www.facebook.com/mdcmobileuzbekistan/)
22998MDC Store:
22999  regex: '(?:Prime_S|M300 4G|MDC M5)(?:[);/ ]|$)'
23000  device: 'smartphone'
23001  models:
23002    - regex: 'Prime_S(?:[);/ ]|$)'
23003      model: 'Prime S'
23004    - regex: '(M300) 4G(?:[);/ ]|$)'
23005      model: '$1 4G'
23006    - regex: 'MDC M5(?:[);/ ]|$)'
23007      model: 'M5'
23008
23009# meanIT (meanit.hr)
23010meanIT:
23011  regex: 'meanIT[ _](?:C[12]|X10|X[126]|MG430|Q[145])(?:[);/ ]|$)'
23012  device: 'smartphone'
23013  models:
23014    - regex: 'meanIT[ _]Q1 plus(?:[);/ ]|$)'
23015      model: 'Q1 Plus'
23016    - regex: 'meanIT[ _](C[12]|X[126]|MG430|Q[145])(?:[);/ ]|$)'
23017      model: '$1'
23018    - regex: 'meanIT[ _]X10(?:[);/ ]|$)'
23019      device: 'tablet'
23020      model: 'X10'
23021
23022# Kenxinda
23023Kenxinda:
23024  regex: 'Three[_ ]Proofings[_ ]W([5-9])(?:[);/ ]|$)'
23025  device: 'smartphone'
23026  model: 'Three Proofings W$1'
23027
23028# X-BO or XBO
23029X-BO:
23030  regex: 'X[-]?BO (V[78]|V1[01]|V[89]\+)(?:[);/ ]|$)'
23031  device: 'smartphone'
23032  model: '$1'
23033
23034# Xgody
23035Xgody:
23036  regex: 'XGODY|Y19\(EU\)(?:[);/ ]|$)'
23037  device: 'smartphone'
23038  models:
23039    - regex: 'XGODY Y17(?:[);/ ]|$)'
23040      model: 'Y17'
23041    - regex: 'Y19\(EU\)'
23042      model: 'Y19'
23043    - regex: 'XGODY_X96(?:[);/ ]|$)'
23044      model: 'X96'
23045      device: 'tv'
23046
23047
23048# Alcor (alcordigital)
23049Alcor:
23050  regex: '(Access_Q784C)(?:[);/ ]|$)'
23051  device: 'tablet'
23052  model: '$1'
23053
23054# iBrit
23055iBrit:
23056  regex: 'IBRIT_|(?:SI5[12])(?:[);/ ]|$)'
23057  device: 'smartphone'
23058  models:
23059    - regex: 'IBRIT_I([57])(?:[);/ ]|$)'
23060      model: 'I$1'
23061    - regex: 'iBRIT_POWER6(?:[);/ ]|$)'
23062      model: 'Power 6'
23063    - regex: 'iBRIT_Speed Pro(?:[);/ ]|$)'
23064      model: 'Speed Pro'
23065    - regex: 'SI51(?:[);/ ]|$)'
23066      model: 'Speed'
23067    - regex: 'SI52(?:[);/ ]|$)'
23068      model: 'Speed Plus'
23069
23070# Ovvi
23071Ovvi:
23072  regex: 'Jumbo X1'
23073  device: 'smartphone'
23074  model: 'Jumbo X1'
23075
23076# Fero
23077Fero:
23078  regex: 'Fero[_ ]|Royale[_ ](?:[YX]2|A1)'
23079  device: 'smartphone'
23080  models:
23081    - regex: 'Fero_Y1'
23082      model: 'Y1'
23083    - regex: 'Royale Y2 Lite'
23084      model: 'Royale Y2 Lite'
23085    - regex: 'Royale[_ ]([YX]2|A1)'
23086      model: 'Royale $1'
23087    - regex: 'FERO PACE'
23088      model: 'Pace'
23089    - regex: 'Fero[ _](A4001|A450[23]|A5001|L100|Iris|Power|Mega LTE|Vibe)'
23090      model: '$1'
23091
23092# Ruio
23093Ruio:
23094  regex: 'Ruio[ _]'
23095  device: 'smartphone'
23096  models:
23097    - regex: 'Ruio[ _](S4)(?:[);/ ]|$)'
23098      model: '$1'
23099    - regex: 'Ruio[ _](S5)Plus(?:[);/ ]|$)'
23100      model: '$1 Plus'
23101
23102# Transpeed
23103Transpeed:
23104  regex: 'Transpeed_|(?:TR99 MINI\+|TR99)(?:[);/ ]|$)'
23105  device: 'tv'
23106  models:
23107    - regex: 'TR99 MINI\+'
23108      model: 'TR99 Mini Plus'
23109    - regex: '(?:Transpeed_)?(TR99|H616|6K)(?:[);/ ]|$)'
23110      model: '$1'
23111
23112# 8848 (everest 8848, 8848 titanium)
23113'8848':
23114  regex: '8848 (M[3-6])(?:[);/ ]|$)'
23115  device: 'smartphone'
23116  model: '$1'
23117
23118# VVETIME
23119VVETIME:
23120  regex: 'ZYVV1(?:[);/ ]|$)'
23121  device: 'smartphone'
23122  model: 'V1'
23123
23124# A1 (www.a1.by)
23125A1:
23126  regex: '(?:A1 (?:Alpha|Alpha 20\+)|Alpha 20)(?:[);/ ]|$)'
23127  device: 'smartphone'
23128  models:
23129    - regex: 'A1 Alpha 20\+'
23130      model: 'Alpha 20 Plus'  # ZTE Blade V2020
23131    - regex: 'A1 Alpha'
23132      model: 'Alpha'
23133    - regex: 'Alpha 20'
23134      model: 'Alpha 20'
23135
23136# Swisstone
23137Swisstone:
23138  regex: 'swisstone (SD 5[13]0)(?:[);/ ]|$)'
23139  device: 'smartphone'
23140  model: '$1'
23141
23142# P-UP (Peaup Co., Ltd.) (p-up.jp, mode1.jp)
23143P-UP:
23144  regex: 'MD-0[143]P(?:[);/ ]|$)'
23145  device: 'phablet'
23146  models:
23147    - regex: 'MD-04P(?:[);/ ]|$)'
23148      model: 'Mode 1 RR'
23149    - regex: 'MD-03P(?:[);/ ]|$)'
23150      model: 'Mode 1 RS'
23151    - regex: 'MD-01P(?:[);/ ]|$)'
23152      device: 'smartphone'
23153      model: 'Mode 1 MD-01P'
23154
23155# iVooMi
23156iVooMi:
23157  regex: '(?:Innelo_1|iV 505|Me 1\+)(?:[);/ ]|$)'
23158  device: 'smartphone'
23159  models:
23160    - regex: 'Innelo_1'
23161      model: 'Innelo 1'
23162    - regex: 'iV 505'
23163      model: 'Me 1'
23164    - regex: 'Me 1\+'
23165      model: 'Me 1+'
23166
23167# Pixelphone
23168Pixelphone:
23169  regex: 'Pixelphone S1(?:[);/ ]|$)'
23170  device: 'smartphone'
23171  model: 'S1'
23172
23173# Pixela
23174Pixela:
23175  regex: 'Infineum[_ ](Z4?5)(?:[);/ ]|$)'
23176  device: 'smartphone'
23177  model: 'Infineum $1'
23178
23179# Iris
23180Iris:
23181  regex: '(?:Vox[_ ](?:[45]S|Alpha|POP|STEEL Plus|Energy|FORTIS|VERO)|IS2_?Plus|IS2S|Next_P_PRO|IRS002-16|X1 mini)(?:[);/ ]|$)'
23182  device: 'smartphone'
23183  models:
23184    - regex: 'Vox[_ ]([45])S'
23185      model: 'Vox $1S'
23186    - regex: 'VOX[_ ]FORTIS'
23187      model: 'Vox Fortis'
23188    - regex: 'VOX[_ ]VERO'
23189      model: 'Vox Vero'
23190    - regex: 'VOX Alpha Plus'
23191      model: 'Vox Alpha Plus'
23192    - regex: 'VOX STEEL Plus'
23193      model: 'Vox Steel Plus'
23194    - regex: 'VOX Alpha'
23195      model: 'Vox Alpha'
23196    - regex: 'VOX Energy'
23197      model: 'Vox Energy'
23198    - regex: 'VOX POP plus'
23199      model: 'Vox Pop Plus'
23200    - regex: 'VOX POP Pro'
23201      model: 'Vox Pop Pro'
23202    - regex: 'Next_P_PRO'
23203      model: 'Next P Pro'
23204    - regex: 'IS2_?Plus'
23205      model: 'IS2 Plus'
23206    - regex: 'IRS002-16'
23207      model: 'I-S6'
23208    - regex: 'IS2S'
23209      model: 'IS2S'
23210    - regex: 'X1 mini'
23211      model: 'X1 Mini'
23212
23213# Fonos
23214Fonos:
23215  regex: 'Fonos-(O1)(?:[);/ ]|$)'
23216  device: 'smartphone'
23217  model: '$1'
23218
23219# Xtouch
23220Xtouch:
23221  regex: 'Xtouch[ _](X10|A5)(?:[);/ ]|$)'
23222  device: 'smartphone'
23223  model: '$1'
23224
23225# Conquest
23226Conquest:
23227  regex: 'Conquest[-_](?:S(?:[68]|1[0126])|F2)(?:[);/ ]|$)'
23228  device: 'smartphone'
23229  models:
23230    - regex: 'Conquest[-_]S([68]|1[0126])'
23231      model: 'S$1'
23232    - regex: 'Conquest-F2'
23233      model: 'F2'
23234
23235# Zatec
23236Zatec:
23237  regex: 'ZATEC[_ ]|(?:[ ]WIND|ZPLAY1_2018|Zpower_(?:Plus|2018))(?:[);/ ]|$)'
23238  device: 'smartphone'
23239  models:
23240    - regex: 'ZATEC[_ ]GRAVITY(?:[);/ ]|$)'
23241      model: 'Gravity'
23242    - regex: '[ ]WIND(?:[);/ ]|$)'
23243      model: 'Wind'
23244    - regex: 'ZPLAY1_2018'
23245      model: 'Zplay (2018)'
23246    - regex: 'Zpower_2018'
23247      model: 'Zpower (2018)'
23248    - regex: 'Zpower_Plus'
23249      model: 'Zpower Plus'
23250
23251# Selenga
23252Selenga:
23253  regex: 'Selenga[ _](A[134])(?:[);/ ]|$)'
23254  device: 'tv'
23255  model: '$1'
23256
23257# Starlight
23258Starlight:
23259  regex: 'Starlight|(?:My_Star_X|RIO STAR|C_Note_Pro|Star_Mix_2)(?:[);/ ]|$)'
23260  device: 'smartphone'
23261  models:
23262    - regex: 'My_Star_X'
23263      model: 'My Star X'
23264    - regex: 'RIO STAR'
23265      model: 'Rio Star'
23266    - regex: 'C_Note_Pro'
23267      model: 'C Note Pro'
23268    - regex: 'Star_Mix_2'
23269      model: 'Star Mix 2'
23270    - regex: 'Starlight_ROME_X'
23271      model: 'Rome X'
23272
23273# GEOFOX
23274GEOFOX:
23275  regex: 'GEOFOX[_](MID743)(?:[);/ ]|$)'
23276  device: 'tablet'
23277  model: '$1'
23278
23279# Tinmo
23280Tinmo:
23281  regex: 'TiNMO[- _](A11|K3)(?:[);/ ]|$)'
23282  device: 'smartphone'
23283  model: '$1'
23284
23285# Matrix
23286Matrix:
23287  regex: '(7116-A5|818 3G)(?:[);/ ]|$)'
23288  device: 'tablet'
23289  model: '$1'
23290
23291# Verico
23292Verico:
23293  regex: '(RP-UDM0[12]A|RP-UDP05A|JO-UQM10A)(?:[);/ ]|$)'
23294  device: 'tablet'
23295  model: 'Uni Pad $1'
23296
23297# TTEC (ttec.com.tr)
23298TTEC:
23299  regex: '(Magictab (?:9GX|7GE|718))(?:[);/ ]|$)'
23300  device: 'tablet'
23301  model: '$1'
23302
23303# eSTAR
23304eSTAR:
23305  regex: 'eSTAR[_ ](?:Grand|GO\!?|Zoom Quad|Gemini|MINI[_ ]3G|BEAUTY|MOON)'
23306  device: 'tablet'
23307  models:
23308    - regex: 'eSTAR (Grand|GO\!?) (HD Intel|IPS Intel|IPS|HD|Intel) Quad Core 3G'
23309      model: '$1 $2 Quad Core 3G'
23310    - regex: 'eSTAR (Zoom Quad|Gemini|GO)'
23311      model: '$1'
23312    - regex: 'eSTAR GRAND HD quad core( [34]G)?'
23313      model: 'Grand HD Quad Core$1'
23314    - regex: 'eSTAR GRAND'
23315      model: 'Grand'
23316    - regex: 'eSTAR BEAUTY HD Quad core'
23317      model: 'Beauty HD Quad Core'
23318    - regex: 'eSTAR MOON HD Quad core'
23319      model: 'Moon HD Quad Core 3G'
23320    - regex: 'eSTAR BEAUTY 2 HD Quad core'
23321      model: 'Beauty 2 HD Quad Core'
23322    - regex: 'eSTAR[_ ]MINI[_ ]3G'
23323      model: 'Mini 3G'
23324
23325# Hometech (hometech.com.tr)
23326Hometech:
23327  regex: '(?:Ideal (?:10S|Tab [79])|ALFA(?:10TB|7LM)|ALFA[_ ](?:10RC|10TM?|10MB|7RS|[78]RC|7M)|HT[ _](?:7RT|8MZ))(?:[);/ ]|$)'
23328  device: 'tablet'
23329  models:
23330    - regex: '(Ideal (?:10S|Tab 9))(?:[);/ ]|$)'
23331      model: '$1'
23332    - regex: 'ALFA[_ ]?(10RC|10T[BM]?|7RS|[78]RC|7L?M|10MB)(?:[);/ ]|$)'
23333      model: 'ALFA $1'
23334    - regex: 'Ideal Tab 7 Ips( 3G)?'
23335      model: 'Ideal Tab 7 IPS$1'
23336    - regex: 'HT[ _](7RT|8MZ)(?:[);/ ]|$)'
23337      model: 'HT $1'
23338
23339# ExMobile (www.exmobile.my)
23340ExMobile:
23341  regex: 'EX(29|45)i(?:[);/ ]|$)'
23342  device: 'smartphone'
23343  model: 'EX $1i'
23344
23345# Exmart Mobile (exmartmobile.com)
23346Exmart:
23347  regex: 'Exmart[ _](K1)(?:[);/ ]|$)'
23348  device: 'smartphone'
23349  model: '$1'
23350
23351# Hipstreet (hipstreet.com)
23352Hipstreet:
23353  regex: '10DTB12(?:[);/ ]|$)'
23354  device: 'tablet'
23355  model: 'Phoenix'
23356
23357# Navitech
23358Navitech:
23359  regex: '(NeoTab)[ _-]((?:S1[23]0|S125|H85|H11[05]|KID741|S9700))(?:[);/ ]|$)'
23360  device: 'tablet'
23361  model: '$1 $2'
23362
23363# NorthTech (north-tech.us)
23364NorthTech:
23365  regex: '(NT-TP10)(?:[);/ ]|$)'
23366  device: 'tablet'
23367  model: 'TouchPad 10.0"'
23368
23369# UNIWA
23370UNIWA:
23371  regex: 'UNIWA[ _](X5|F40)(?:[);/ ]|$)'
23372  device: 'smartphone'
23373  model: '$1'
23374
23375# ANDOWL (www.andowlph.com)
23376Andowl:
23377  regex: 'ANDOWL-(Q[45])(?:[);/ ]|$)|Andowl'
23378  device: 'tv'
23379  model: '$1'
23380
23381# Silelis (silelis.com)
23382Silelis:
23383  regex: 'Silelis[ _](T-1)(?:[);/ ]|$)'
23384  device: 'tv'
23385  model: '$1'
23386
23387# Bluedot (bluedot.co.jp)
23388Bluedot:
23389  regex: 'BLUEDOT[_ ]|(?:BNT-71)(?:[);/ ]|$)'
23390  device: 'tablet'
23391  models:
23392    - regex: '(?:BLUEDOT[_ ])?(BNP-500)(?:[);/ ]|$)'
23393      device: 'smartphone'
23394      model: '$1'
23395    - regex: '(BNT-71)(?:[);/ ]|$)'
23396      model: '$1'
23397
23398# Planet Computers
23399Planet Computers:
23400  regex: '(Cosmo_Communicator)(?:[);/ ]|$)'
23401  device: 'tablet'
23402  model: '$1'
23403
23404# Reach
23405Reach:
23406  regex: '(Allure[_ ](?:Ultra(?:[_]Curve)?|Secure|Admire|Rise))(?:[);/ ]|$)'
23407  device: 'smartphone'
23408  model: '$1'
23409
23410# MobiWire
23411MobiWire:
23412  regex: '(?:Kiona|KANUNA|Halona|Kicka[_ ][45][ _]Plus|Kohana|Kosumi|KWANITA|Lonan|Hotah|Kicka 5|Kiona)(?:[);/ ]|$)'
23413  device: 'smartphone'
23414  models:
23415    - regex: 'KANUNA'
23416      model: 'Kanuna'
23417    - regex: 'KWANITA'
23418      model: 'Kwanita'
23419    - regex: '(Kiona|Kicka[_ ][45][ _]Plus|Kohana|Kosumi|Lonan|Halona|Hotah|Kicka 5|Kiona)(?:[);/ ]|$)'
23420      model: '$1'
23421
23422# Hezire
23423Hezire:
23424  regex: '(HTB801)(?:[);/ ]|$)'
23425  device: 'tablet'
23426  model: '$1'
23427
23428# Hurricane (hurricanemobile.com)
23429Hurricane:
23430  regex: 'Hurricane[ _]|(?:Flame_Plus|Glaze|Cobra|Ridge Plus|Rush Plus|DZIRE|Android 7.+ Beam|Vulcan)(?:[);/ ]|$)'
23431  device: 'smartphone'
23432  models:
23433    - regex: 'Hurricane[ _]IGNITE'
23434      model: 'Ignite'
23435    - regex: 'Hurricane[ _]Bolt'
23436      model: 'Bolt'
23437    - regex: 'Hurricane[ _]VORTEX'
23438      model: 'Vortex'
23439    - regex: 'Hurricane[ _]GIGA'
23440      model: 'Giga'
23441    - regex: 'Glaze'
23442      model: 'Glaze'
23443    - regex: 'Cobra'
23444      model: 'Cobra'
23445    - regex: 'DZIRE'
23446      model: 'Dzire'
23447    - regex: 'Beam'
23448      model: 'Beam'
23449    - regex: 'Vulcan'
23450      model: 'Vulcan'
23451    - regex: 'Flame_Plus'
23452      model: 'Flame Plus'
23453    - regex: 'Ridge Plus'
23454      model: 'Ridge Plus'
23455    - regex: 'Rush Plus'
23456      model: 'Rush Plus'
23457
23458# iSwag (iswagmobile.com)
23459iSWAG:
23460  regex: 'ISWAG[ _]'
23461  device: 'smartphone'
23462  models:
23463    - regex: 'ISWAG[_ ]VIPER'
23464      model: 'Viper'
23465    - regex: 'iSWAG[_ ]Lynx'
23466      model: 'Lynx'
23467    - regex: 'iSWAG[_ ]MANTRA'
23468      model: 'Mantra'
23469    - regex: 'iSWAG[_ ]MEGA'
23470      model: 'Mega'
23471    - regex: 'iSWAG[_ ]NEMESIS'
23472      model: 'Nemesis'
23473
23474# Reeder (reeder.com.tr)
23475Reeder:
23476  regex: '(?:reeder[_ ](?:3G_Tablet|A7iC|A[78]i[_ ]Quad|A8i Q2|M8 Plus|[TM]8|M10 Plus|P11SE)|P12Curve|P13_Blue_Plus|P13_Blue_Ma(?:ks|x)|P13_Blue)(?:[);/ ]|$)'
23477  device: 'tablet'
23478  models:
23479    - regex: 'reeder[_ ](3G_Tablet|A7iC|A[78]i[_ ]Quad|A8i Q2|M8 Plus|[TM]8|M10 Plus|P11SE)(?:[);/ ]|$)'
23480      model: '$1'
23481    - regex: 'P12Curve'
23482      device: 'smartphone'
23483      model: 'P12 Curve'
23484    - regex: 'P13_Blue_Maks'
23485      device: 'smartphone'
23486      model: 'P13 Blue Maks'
23487    - regex: 'P13_Blue_Max'
23488      device: 'smartphone'
23489      model: 'P13 Blue Max'
23490    - regex: 'P13_Blue_Plus'
23491      device: 'smartphone'
23492      model: 'P13 Blue Plus'
23493    - regex: 'P13_Blue'
23494      device: 'smartphone'
23495      model: 'P13 Blue'
23496
23497
23498# ELARI (elari.net)
23499ELARI:
23500  regex: 'KidPhone4G(?:[);/ ]|$)'
23501  device: 'wearable'
23502  model: 'KidPhone 4G'
23503
23504# Epik One or EPIKONE (epikmobile.com)
23505'Epik One':
23506  regex: '(K501 Plus|[ ]K5(?:0[0-4]|1[01]|03T|3[456]|4[05]|73)|[ ]K60[01]|[ ]X507T|[ ]K40[56]|[ ]T700)(?:[);/ ]|$)'
23507  device: 'smartphone'
23508  models:
23509    - regex: 'K501 Plus'
23510      model: 'Leo Plus'
23511    - regex: 'K501'
23512      model: 'Leo'
23513    - regex: 'K500'
23514      model: 'Omega Lite'
23515    - regex: 'K502'
23516      model: 'Omega'
23517    - regex: 'K503T'
23518      model: 'Leo Turbo'
23519    - regex: 'K503'
23520      model: 'Leo Max'
23521    - regex: 'K504'
23522      model: 'Titan 3G'
23523    - regex: 'X507T'
23524      model: 'Titan II'
23525    - regex: 'K510'
23526      model: 'Bolt'
23527    - regex: 'K511'
23528      model: 'Bolt Pro'
23529    - regex: 'K534'
23530      model: 'Hada'
23531    - regex: 'K535'
23532      model: 'Hada Turbo'
23533    - regex: 'K545'
23534      model: 'Rocket'
23535    - regex: 'K536'
23536      model: 'Royal'
23537    - regex: 'K540'
23538      model: 'Excalibur'
23539    - regex: 'K573'
23540      model: 'Panther'
23541    - regex: 'K600'
23542      model: 'Jupiter'
23543    - regex: 'K601'
23544      model: 'Jupiter One'
23545    - regex: 'K406'
23546      model: 'Pebble Plus'
23547    - regex: 'K405'
23548      model: 'Pebble II'
23549    - regex: 'T700'
23550      model: 'Palette'
23551      device: 'tablet'
23552
23553# Altice
23554Altice:
23555  regex: 'Altice[ _](S62|S31|S43)(?:[);/ ]|$)'
23556  device: 'smartphone'
23557  model: '$1'
23558
23559# Kult
23560Kult:
23561  regex: '(Ambition|Beyond)(?:[);/ ]|$)'
23562  device: 'smartphone'
23563  model: '$1'
23564
23565# Beyond
23566Beyond:
23567  regex: 'SURVE(10|[26-8]|[12] PRO)(?:[);/ ]|$)'
23568  device: 'smartphone'
23569  models:
23570    - regex: 'SURVE([12]) PRO'
23571      model: 'Surve $1 Pro'
23572    - regex: 'SURVE(10|[26-8])'
23573      model: 'Surve $1'
23574
23575# BioRugged (biorugged.com)
23576BioRugged:
23577  regex: '(?:BioWolf 8-F30|BIOWOLF8F30|Ruggbo 20 Lite)(?:[);/ ]|$)'
23578  device: 'tablet'
23579  models:
23580    - regex: 'BioWolf 8-F30|BIOWOLF8F30'
23581      model: 'BioWolf 8-F30'
23582    - regex: 'Ruggbo 20 Lite'
23583      model: 'Ruggbo 20 Lite'
23584
23585# VAIO (vaio.com)
23586VAIO:
23587  regex: '(?:VPA051|VA-10J)(?:[);/ ]|$)'
23588  device: 'smartphone'
23589  models:
23590    - regex: 'VPA051'
23591      model: 'Phone A'
23592    - regex: '(VA-10J)'
23593      model: '$1'
23594
23595# Spark (https://www.spark.co.nz/)
23596Spark:
23597  regex: 'Spark Plus 3(?:[);/ ]|$)'
23598  device: 'smartphone'
23599  models:
23600    - regex: 'Plus 3'
23601      model: 'Plus 3'
23602
23603# SPC or SPC Universe or SPC Mobile (spc.es)
23604SPC:
23605  regex: '(?:Gravity Max|GRAVITY_OCTACORE|SPC SMART LITE|SPC_ALIEN(?:_STICK)?|SPC Glow9.7)(?:[);/ ]|$)'
23606  device: 'tablet'
23607  models:
23608    - regex: 'GRAVITY_OCTACORE'
23609      model: 'Gravity OctaCore'
23610    - regex: 'Gravity Max'
23611      model: 'Gravity Max'
23612    - regex: 'SPC Glow9.7'
23613      model: 'Glow 9.7"'
23614
23615    - regex: 'SPC SMART LITE'
23616      device: 'smartphone'
23617      model: 'Smart Lite'
23618
23619    - regex: 'SPC_ALIEN_STICK'
23620      device: 'tv'
23621      model: 'Alien Stick'
23622    - regex: 'SPC_ALIEN'
23623      device: 'tv'
23624      model: 'Alien'
23625
23626# Winmax (winmaxmobile.com)
23627Winmax:
23628  regex: 'Winmax[ _](?:XC14|XC[46]|TX30)(?:[);/ ]|$)|MAUI.+Winmax_BD45'
23629  device: 'smartphone'
23630  models:
23631    - regex: 'Winmax[ _](XC14|XC[46])(?:[);/ ]|$)'
23632      model: '$1'
23633    - regex: 'Winmax[ _](TX30)(?:[);/ ]|$)'
23634      device: 'tablet'
23635      model: '$1'
23636    - regex: 'MAUI.+Winmax_(BD45)'
23637      device: 'feature phone'
23638      model: '$1'
23639
23640# Zebra (zebra.com)
23641Zebra:
23642  regex: ' (TC5[16]|TC2[05]|TC75|TC7[05]x|TC700H)(?:[);/ ]|$)'
23643  device: 'smartphone'
23644  model: '$1'
23645
23646# Thuraya (thuraya.com)
23647Thuraya:
23648  regex: 'Thuraya[ _](X5-Touch)(?:[);/ ]|$)'
23649  device: 'smartphone'
23650  model: '$1'
23651
23652# Bkav (bkav.com)
23653Bkav:
23654  regex: 'Bphone[ _](B111[45]|B2017)(?:[);/ ]|$)'
23655  device: 'smartphone'
23656  model: 'Bphone $1'
23657
23658# Brandt
23659Brandt:
23660  regex: '(BPRIME|BSTAR\+?|BPRIMES|B-ONE)(?:[);/ ]|$)'
23661  device: 'smartphone'
23662  model: '$1'
23663
23664# Bigben
23665Bigben:
23666  regex: 'GAMETAB-ONE(?:[);/ ]|$)'
23667  device: 'tablet'
23668  model: 'GameTab-One'
23669
23670# smartec (smartec.tn)
23671SMARTEC:
23672  regex: '(Atractivo)(?:[);/ ]|$)'
23673  device: 'smartphone'
23674  model: '$1'
23675
23676# Asanzo (asanzo.vn)
23677Asanzo:
23678  regex: 'ASANZO[ _](?:A2|S[23]|[SZ]5|S3_PLUS)(?:[);/ ]|$)'
23679  device: 'smartphone'
23680  models:
23681    - regex: 'ASANZO[ _]S3[ _]PLUS'
23682      model: 'S3 Plus'
23683    - regex: 'ASANZO[ _](A2|S[23]|[SZ]5)(?:[);/ ]|$)'
23684      model: '$1'
23685
23686# Artizlee
23687Artizlee:
23688  regex: 'Artizlee[ _]S9|ATL-(?:16|21(?:PLUS|[XT])?|31|26)(?:[);/ ]|$)'
23689  device: 'tablet'
23690  models:
23691    - regex: 'ATL-21PLUS(?:[);/ ]|$)'
23692      model: 'ATL-21 Plus'
23693    - regex: '(ATL-(?:16|21[XT]?|31|26))(?:[);/ ]|$)'
23694      model: '$1'
23695    - regex: 'Artizlee[ _]S9'
23696      device: 'smartphone'
23697      model: 'S9'
23698
23699# Mintt (www.mintt.co)
23700Mintt:
23701  regex: '(?:Coolmintt(?:A3|M2)?|Ultramintt(?:S2)?|FRESHMINTT(?:A7|A10)?)(?:[);/ ]|$)'
23702  device: 'smartphone'
23703  models:
23704    - regex: 'Coolmintt ?([PM]1|P3|A3|M2)(?:[);/ ]|$)'
23705      model: 'CoolMintt $1'
23706    - regex: 'Ultramintt ?([SR]1|S2|A5)(?:[);/ ]|$)'
23707      model: 'UltraMintt $1'
23708    - regex: 'FRESHMINTT ?(A7|A10)(?:[);/ ]|$)'
23709      device: 'tablet'
23710      model: 'FreshMintt $1'
23711
23712# Premio
23713Premio:
23714  regex: '(?:AXE_II|186HS2080531|186HS1050531|186HS1050232|186FT1080231|185FT5050231|PREMIO[ _](?:S50|P420|P451))(?:[);/ ]|$)'
23715  device: 'smartphone'
23716  models:
23717    - regex: '186HS2080531'
23718      model: 'X1'
23719    - regex: 'AXE_II'
23720      model: 'Axe II'
23721    - regex: '186HS1050531'
23722      model: 'P541'
23723    - regex: '185FT5050231'
23724      model: 'P511'
23725    - regex: '186FT1080231'
23726      model: 'P571'
23727    - regex: '186HS1050232'
23728      model: 'P630'
23729    - regex: 'PREMIO[ _](S50|P420|P451)(?:[);/ ]|$)'
23730      model: '$1'
23731
23732# Trifone
23733Trifone:
23734  regex: 'Passion[-_](?:1S|PRO|PLUS)(?:[);/ ]|$)'
23735  device: 'smartphone'
23736  models:
23737    - regex: 'Passion-1S'
23738      model: 'Passion 1S'
23739    - regex: 'Passion-Plus'
23740      model: 'Passion Plus'
23741    - regex: 'Passion_Pro'
23742      model: 'Passion Pro'
23743
23744# Bluewave
23745Bluewave:
23746  regex: '(?:33GT HD|WV8R-M|WV8R[_-]N)(?:[);/ ]|$)'
23747  device: 'tablet'
23748  models:
23749    - regex: '33GT HD'
23750      model: 'Wave 8 HD+'
23751    - regex: 'WV8R-M'
23752      model: 'Wave 8 Red Marshmallow'
23753    - regex: 'WV8R[_-]N'
23754      model: 'Wave 8 Red Nougat'
23755
23756# Siragon (siragon.com)
23757Siragon:
23758  regex: 'Siragon|(?:SP-(?:5250|5400|5050))(?:[);/ ]|$)'
23759  device: 'smartphone'
23760  models:
23761    - regex: '(?:Siragon[_ ])?(SP-(?:5[12]50|5400|5050))'
23762      model: '$1'
23763
23764# Poppox
23765Poppox:
23766  regex: 'Poppox P3'
23767  device: 'smartphone'
23768  model: 'P3'
23769
23770# Zentality (zentalityinfo.com)
23771Zentality:
23772  regex: 'C-723ULTRA(?:[);/ ]|$)'
23773  device: 'tablet'
23774  model: 'C-723 Ultra'
23775
23776# Black Bear
23777'Black Bear':
23778  regex: '(B6 Master|B6 Note X)(?:[);/ ]|$)'
23779  device: 'smartphone'
23780  model: '$1'
23781
23782# Fortis
23783Fortis:
23784  regex: '(Apollo 5 Neo)(?:[);/ ]|$)'
23785  device: 'smartphone'
23786  model: '$1'
23787
23788# OpelMobile (opelmobile.com.au)
23789OpelMobile:
23790  regex: ' OpelMobile_(SmartJX)(?:[);/ ]|$)'
23791  device: 'smartphone'
23792  model: '$1'
23793
23794# NuAns
23795NuAns:
23796  regex: 'NEO \[Reloaded\](?:[);/ ]|$)'
23797  device: 'smartphone'
23798  model: 'NEO Reloaded'
23799
23800# Koolnee (sub brand from Koobee)
23801Koolnee:
23802  regex: '(K1 Trio)(?:[);/ ]|$)'
23803  device: 'smartphone'
23804  model: '$1'
23805
23806# Sansui (sansui-global.com)
23807Sansui:
23808  regex: 'Sansui[_ ]'
23809  device: 'smartphone'
23810  models:
23811    - regex: 'Sansui[_ ](Switch|Play|Fun|SA4[01]|U4[56]|U3[02]|Nova)(?:[);/ ]|$)'
23812      model: '$1'
23813
23814# Sico (sico.com.eg)
23815Sico:
23816  regex: 'SICO[_ ](?:PLUS|e1002)|(?:Express3-Max|SSR3-1-51-5M|SSD-1-53-13M|Mega2|Express3)(?:[);/ ]|$)'
23817  device: 'smartphone'
23818  models:
23819    - regex: 'SICO[_ ]PLUS2'
23820      model: 'Plus 2'
23821    - regex: 'SICO[_ ]PLUS'
23822      model: 'Plus'
23823    - regex: 'Mega2'
23824      model: 'Mega 2'
23825    - regex: 'SSR3-1-51-5M'
23826      model: 'Pro 3'
23827    - regex: 'SSD-1-53-13M'
23828      model: 'Diamond'
23829    - regex: 'SICO[_ ]e1002'
23830      device: 'tablet'
23831      model: 'E1002'
23832    - regex: 'Express3-Max'
23833      device: 'tablet'
23834      model: 'Express 3 Max'
23835    - regex: 'Express3'
23836      device: 'tablet'
23837      model: 'Express 3'
23838
23839# Smadl (smadlethiopia.com)
23840Smadl:
23841  regex: 'Android.+(?:Safari)(?!/[\d.]+)(?: Build|\) AppleWebKit)|SMADL[ _]'
23842  device: 'smartphone'
23843  models:
23844    - regex: 'Android.+(?:Safari)(?!/[\d.]+)(?: Build|\) AppleWebKit)'
23845      model: 'Safari'
23846    - regex: 'SMADL[ _]Matri([2X])'
23847      model: 'Matri $1'
23848
23849# EXCEED (exceedmobiles.com)
23850EXCEED:
23851  regex: '(EX7SL?4|EX10S4)(?:[);/ ]|$)'
23852  device: 'tablet'
23853  model: '$1'
23854
23855# Tymes
23856Tymes:
23857  regex: 'Tymes[ _](V5)(?:[);/ ]|$)'
23858  device: 'smartphone'
23859  model: '$1'
23860
23861# Solone
23862Solone:
23863  regex: 'SOLONE|(?:E1457|W145[02])(?:[);/ ]|$)'
23864  device: 'smartphone'
23865  models:
23866    - regex: 'E1457'
23867      model: 'Earth Iron E1457'
23868    - regex: 'W1450'
23869      model: 'Wind Breeze W1450'
23870    - regex: 'W1452'
23871      model: 'Wind Air W1452'
23872    - regex: 'SOLONE A47'
23873      model: 'SL-A47'
23874    - regex: 'SOLONE[ _]Elite[ _]L5501'
23875      model: 'Elite L5501'
23876    - regex: 'SOLONE[ _]SUMO[_ ]S5001'
23877      model: 'Sumo S5001'
23878    - regex: 'SOLONE[ _](SL-K40|S5002)(?:[);/ ]|$)'
23879      model: '$1'
23880
23881# Far Eas Tone (Fareastone)
23882FarEasTone:
23883  regex: 'Smart ?(601|550|50[59])(?:[);/ ]|$)'
23884  device: 'smartphone'
23885  model: 'Smart $1'
23886
23887# Smailo
23888Smailo:
23889  regex: 'Smailo_(2GO)(?:[);/ ]|$)'
23890  device: 'tablet'
23891  model: '$1'
23892
23893# Colors or ColorsMobile (www.colors-mobile.com)
23894Colors:
23895  regex: '(?:Colors[ _](S(?:[19]|11)|P70|P[456]5|P32|E15|P50 Plus)|Pride_1A|P52_Pride5C|P90_Pride5X)(?:[);/ ]|$)'
23896  device: 'smartphone'
23897  models:
23898    - regex: 'Pride_1A(?:[);/ ]|$)'
23899      model: 'Pride 1A'
23900    - regex: 'P52_Pride5C(?:[);/ ]|$)'
23901      model: 'Pride 5C'
23902    - regex: 'P90_Pride5X(?:[);/ ]|$)'
23903      model: 'Pride 5X'
23904    - regex: 'Colors[ _](S(?:[19]|11)|P70|E15|P[456]5|P32|P50 Plus)(?:[);/ ]|$)'
23905      model: '$1'
23906
23907# Honeywell
23908Honeywell:
23909  regex: '(EDA50K?|EDA70|EDA51)(?:[);/ ]|$)'
23910  device: 'smartphone'
23911  model: 'ScanPal $1'
23912
23913# Electroneum (electroneum.com)
23914Electroneum:
23915  regex: 'electroneum(M1)(?:[);/ ]|$)'
23916  device: 'smartphone'
23917  model: '$1'
23918
23919# High Q or HighQ
23920'High Q':
23921  regex: '(ELT070[46]H|ELT0802H)(?:[);/ ]|$)'
23922  device: 'tablet'
23923  model: '$1'
23924
23925# Pluzz
23926Pluzz:
23927  regex: 'Pluzz[_-](Z552|PL5[05]10|PL4010|PL501[46]|Elite_Dual)(?:[);/ ]|$)'
23928  device: 'smartphone'
23929  model: '$1'
23930
23931# IKU Mobile (iku-mobile.com)
23932'IKU Mobile':
23933  regex: '(?:IKU[_ ](?:T[123]|K3|i[34]|T[_ ]MAX)|Powerful_K55i|Curvy C50L)(?:[);/ ]|$)'
23934  device: 'smartphone'
23935  models:
23936    - regex: '(Powerful_K55i|Curvy C50L)(?:[);/ ]|$)'
23937      model: '$1'
23938    - regex: 'IKU[_ ](K3|i[34])(?:[);/ ]|$)'
23939      model: '$1'
23940    - regex: 'IKU[_ ](T[123])(?:[);/ ]|$)'
23941      device: 'tablet'
23942      model: '$1'
23943    - regex: 'IKU[_ ]T[_ ]Max(?:[);/ ]|$)'
23944      device: 'tablet'
23945      model: 'T Max'
23946
23947# IKI Mobile (ikimobile.com)
23948IKI Mobile:
23949  regex: '(?:GO5_55|BLESS_GO55|BLESSPLUS|KF4Go|KF5bless)(?:[);/ ]|$)'
23950  device: 'smartphone'
23951  models:
23952    - regex: 'GO5_55'
23953      model: 'Go 5.5"'
23954    - regex: 'BLESS_GO55'
23955      model: 'Bless Go 5.5"'
23956    - regex: 'BLESSPLUS'
23957      model: 'Bless Plus'
23958    - regex: '(KF4Go|KF5bless)'
23959      model: '$1'
23960
23961# CG Mobile
23962'CG Mobile':
23963  regex: '(?:CG_OMEGA6|Omega (?:[38])|CG_EON_Blaze_Pro|CG\|EON Blaze GOLD)(?:[);/ ]|$)'
23964  device: 'smartphone'
23965  models:
23966    - regex: 'Omega ([38])(?:[);/ ]|$)'
23967      model: 'Omega $1'
23968    - regex: 'CG_OMEGA6(?:[);/ ]|$)'
23969      model: 'Omega 6'
23970    - regex: 'CG_EON_Blaze_Pro(?:[);/ ]|$)'
23971      model: 'EON Blaze Pro'
23972    - regex: 'CG\|EON Blaze GOLD(?:[);/ ]|$)'
23973      model: 'EON Blaze Gold'
23974
23975# IUNI
23976IUNI:
23977  regex: 'IUNI[ _]'
23978  device: 'smartphone'
23979  models:
23980    - regex: 'IUNI[ _](U3|i1|N1)'
23981      model: '$1'
23982
23983# (zhnkmobile.com)
23984'ZH&K':
23985  regex: '(?:ODYSSEY O2|ODYSSEY RANGE)(?:[);/ ]|$)'
23986  device: 'smartphone'
23987  models:
23988    - regex: 'ODYSSEY O2'
23989      model: 'Odyssey O2'
23990    - regex: 'ODYSSEY RANGE'
23991      model: 'Odyssey Range'
23992
23993# Ordissimo (ordissimo.fr)
23994Ordissimo:
23995  regex: '(LeNumero1)(?:[);/ ]|$)'
23996  device: 'smartphone'
23997  model: '$1'
23998
23999# Necnot (necnontrade.com)
24000Necnot:
24001  regex: '(M002[DGQK]-2|M002N|M002N-3T|M002W-2T|6M-3T)(?:[);/ ]|$)'
24002  device: 'tablet'
24003  model: '$1'
24004
24005# Einstein
24006Einstein:
24007  regex: 'Einstein(T3)(?:[);/ ]|$)'
24008  device: 'tablet'
24009  model: '$1'
24010
24011# AfriOne (afrione.com)
24012AfriOne:
24013  regex: '(CYGNUSX?|Gravity Z2|ChampionPro)(?:[);/ ]|$)'
24014  device: 'phablet'
24015  models:
24016    - regex: 'CYGNUSX(?:[);/ ]|$)'
24017      model: 'Cygnus X'
24018    - regex: 'CYGNUS(?:[);/ ]|$)'
24019      model: 'Cygnus'
24020
24021    - regex: 'Gravity Z2(?:[);/ ]|$)'
24022      device: 'smartphone'
24023      model: 'Gravity Z2'
24024    - regex: 'ChampionPro(?:[);/ ]|$)'
24025      device: 'smartphone'
24026      model: 'Champion Pro'
24027
24028# Connex (connexdevices.co.za)
24029Connex:
24030  regex: '(CTAB1044hn|CTAB-1044)(?:[);/ ]|$)'
24031  device: 'tablet'
24032  model: '$1'
24033
24034# Connectce
24035Connectce:
24036  regex: '(?:CP6001A)(?:[);/ ]|$)'
24037  device: 'smartphone'
24038  model: 'Connect Core 6'
24039
24040# Clementoni
24041Clementoni:
24042  regex: '(?:CLEMPAD[_ ](?:6_XL|HR_Plus|HR|[68]|7_S|201[89])|ClemPhone_7|MFC_(?:2018|8))(?:[);/ ]|$)'
24043  device: 'tablet'
24044  models:
24045    - regex: 'CLEMPAD_(201[89])'
24046      model: 'Clempad ($1)'
24047    - regex: 'MFC_2018'
24048      model: 'Clempad (2018)'
24049    - regex: 'MFC_8'
24050      model: 'Clempad 8'
24051    - regex: 'CLEMPAD_7_S'
24052      model: 'Clempad 7S'
24053    - regex: 'Clempad[_ ](6_XL|HR_Plus|HR|[68])'
24054      model: 'Clempad $1'
24055    - regex: 'ClemPhone[ _](7)'
24056      device: 'smartphone'
24057      model: 'Clemphone $1'
24058
24059# Cell-C
24060Cell-C:
24061  regex: 'Cell_?C_'
24062  device: 'smartphone'
24063  models:
24064    - regex: 'Cell_C_(Summit_Plus|Fame|Evolve)(?:[);/ ]|$)'
24065      model: '$1'
24066    - regex: 'CELLC_Evolve'
24067      device: 'tablet'
24068      model: 'Evolve'
24069
24070# VC
24071VC:
24072  regex: '(?:Camellia_II|Cactus II|Maple III|Maple-II|Cactus-Pro|LavenderII|Jasmine-II)(?:[);/ ]|$)'
24073  device: 'smartphone'
24074  models:
24075    - regex: '(Camellia_II|Cactus II|Maple III)(?:[);/ ]|$)'
24076      model: '$1'
24077    - regex: 'Cactus-Pro'
24078      model: 'Cactus Pro'
24079    - regex: '(Maple|Jasmine|Lavender)-?II(?:[);/ ]|$)'
24080      model: '$1 II'
24081
24082# CellAllure (cellallure.com)
24083CellAllure:
24084  regex: '(?:Cool_Extreme_2|Earn|Fashion2Plus|Fashion[ _]C|Cool Duo|CHIC_X1)(?:[);/ ]|$)'
24085  device: 'smartphone'
24086  models:
24087    - regex: '(Cool_Extreme_2|Earn|Fashion[ _]C|Cool Duo)(?:[);/ ]|$)'
24088      model: '$1'
24089    - regex: 'Fashion2Plus'
24090      model: 'Fashion 2 Plus'
24091    - regex: 'CHIC_X1'
24092      model: 'Chic X1'
24093
24094# Eagle (eagleuhd.com)
24095Eagle:
24096  regex: 'Eagle[ _](Classic Pro|Elite|Gold)(?:[);/ ]|$)'
24097  device: 'tv'
24098  model: '$1'
24099
24100# Invens
24101Invens:
24102  regex: '(Fighter|Eager|Royal R[1-8])(?: Build|[;)])'
24103  device: 'smartphone'
24104  model: '$1'
24105
24106# Chico Mobile (chicomobile.ph)
24107Chico Mobile:
24108  regex: '(?:ALTO (?:Bombo|classic|Estrella|JUEGO|SUBIR|[235])|FUEGO MAX|OJOS[ _](?:CAMBIO|NUBE|[68i]|ORO))(?:[);/ ]|$)'
24109  device: 'smartphone'
24110  models:
24111    - regex: 'ALTO Bombo'
24112      model: 'Alto Bombo'
24113    - regex: 'ALTO classic'
24114      model: 'Alto Classic'
24115    - regex: 'ALTO Estrella'
24116      model: 'Alto Estrella'
24117    - regex: 'ALTO JUEGO'
24118      model: 'Alto Juego'
24119    - regex: 'ALTO SUBIR'
24120      model: 'Alto Subir'
24121    - regex: 'ALTO ([235])'
24122      model: 'Alto $1'
24123    - regex: 'OJOS[ _]([68i])'
24124      model: 'Ojos $1'
24125    - regex: 'OJOS NUBE'
24126      model: 'Ojos Nube'
24127    - regex: 'OJOS CAMBIO'
24128      model: 'Ojos Cambio'
24129    - regex: 'OJOS ORO'
24130      model: 'Ojos Oro'
24131
24132    - regex: 'FUEGO MAX'
24133      device: 'tablet'
24134      model: 'Fuego Max'
24135
24136# Claresta
24137Claresta:
24138  regex: 'Claresta[ _]|(?:AirPhoneS[56]|AirPhone K6)(?:[);/ ]|$)'
24139  device: 'smartphone'
24140  models:
24141    - regex: 'AirPhone ?(S[56]|K6)'
24142      model: 'AirPhone $1'
24143    - regex: 'Claresta (F3) PRO'
24144      model: '$1 Pro'
24145    - regex: 'Claresta[ _](F4)'
24146      model: '$1'
24147
24148# Camfone (camfonemobile.com)
24149Camfone:
24150  regex: '(?:Camfone (?:SE)|Hero[_ ](?:H5\+|SE2|H9|(?:H7|XR)_Plus|SX|1[123]|SE3[ _]Max)|Honey (?:Y1|Y2s))(?:[);/ ]|$)'
24151  device: 'smartphone'
24152  models:
24153    - regex: '(Hero[_ ](?:H5\+|SE2|H9|(?:H7|XR)_Plus|SX|1[123]|SE3[ _]Max)|Honey (?:Y1|Y2s))(?:[);/ ]|$)'
24154      model: '$1'
24155    - regex: 'Camfone (SE)(?:[);/ ]|$)'
24156      model: '$1'
24157
24158# Bellphone
24159Bellphone:
24160  regex: 'Bp100 X-Plus(?:[);/ ]|$)'
24161  device: 'smartphone'
24162  model: 'BP 100 X-Plus'
24163
24164# Gini
24165Gini:
24166  regex: 'Gini[ _]'
24167  device: 'smartphone'
24168  models:
24169    - regex: 'Gini[ _]W(7)'
24170      model: 'W$1'
24171    - regex: 'Gini[ _]n(8)'
24172      model: 'N$1'
24173    - regex: 'Gini[ _]s5Pro'
24174      model: 'S5 Pro'
24175    - regex: 'Gini[ _]Tab[ _](V[78])'
24176      device: 'tablet'
24177      model: 'Tab $1'
24178
24179
24180# MIVO (mivo.com.my)
24181MIVO:
24182  regex: '(Caryota [1245789]|Jazz J[13] 2018)(?:[);/ ]|$)'
24183  device: 'smartphone'
24184  models:
24185    - regex: '(Caryota [1245789])(?:[);/ ]|$)'
24186      model: '$1'
24187    - regex: 'Jazz (J[13]) 2018'
24188      model: 'Jazz $1 (2018)'
24189
24190# Jesy (en.jesy.com)
24191Jesy:
24192  regex: 'Jesy_(J7)'
24193  device: 'smartphone'
24194  model: '$1'
24195
24196# Teknosa or Tekno S.A
24197Teknosa:
24198  regex: 'Preo[ _]'
24199  device: 'smartphone'
24200  models:
24201    - regex: 'Preo Teknosa P1'
24202      model: 'Preo P1'
24203    - regex: 'Preo[ _]P([23])'
24204      model: 'Preo P$1'
24205
24206# Hyve
24207Hyve:
24208  regex: '(?:Pryme 01|ST01)(?:[);/ ]|$)'
24209  device: 'smartphone'
24210  models:
24211    - regex: 'Pryme 01'
24212      model: 'Pryme 01'
24213    - regex: 'ST01'
24214      model: 'Storm ST01'
24215
24216# EWIS
24217EWIS:
24218  regex: 'OCTA T720Q(?:[);/ ]|$)'
24219  device: 'tablet'
24220  model: 'Octa T720Q'
24221
24222# Leader Phone or LP (lp.tn)
24223Leader Phone:
24224  regex: '(Vyper|N-5[07]|N-45|LP DAISY|LP_VEYRON|LP_PRADO)(?:[);/ ]|$)'
24225  device: 'smartphone'
24226  models:
24227    - regex: 'N-45 light'
24228      model: 'N-45 Light'
24229    - regex: 'Vyper PRO'
24230      model: 'Vyper Pro'
24231    - regex: 'LP DAISY'
24232      model: 'Daisy'
24233    - regex: 'LP_VEYRON'
24234      model: 'Veyron'
24235    - regex: 'LP_PRADO'
24236      model: 'Prado'
24237    - regex: '(Vyper|N-5[07]|N-45)(?:[);/ ]|$)'
24238      model: '$1'
24239
24240# Cavion (cavion.pl)
24241Cavion:
24242  regex: '(?:Cavion[_ ](?:Solid[_ ]4[\._]5|Base[ _](?:7|7_3G_Silver|5[._]0|10|7.2 Quad)|10_3GRQ)|Cavion7.1quad)(?:[);/ ]|$)'
24243  device: 'smartphone'
24244  models:
24245    - regex: 'Cavion[_ ]Solid[_ ]4[._]5'
24246      model: 'Solid 4.5"'
24247    - regex: 'Cavion[ _]BASE[ _]5[._]0'
24248      model: 'Base 5.0"'
24249    - regex: 'CAVION_10_3GRQ'
24250      device: 'tablet'
24251      model: 'Base 10 3GR Quad'
24252    - regex: 'Cavion(?:7.1quad)'
24253      device: 'tablet'
24254      model: 'Base 7.1" Quad'
24255    - regex: 'Cavion Base 7.2 Quad'
24256      device: 'tablet'
24257      model: 'Base 7.2" Quad'
24258    - regex: 'Cavion Base 10'
24259      device: 'tablet'
24260      model: 'Base 10'
24261    - regex: 'Cavion Base 7 Dual'
24262      device: 'tablet'
24263      model: 'Base 7.0" Dual'
24264    - regex: 'Cavion Base 7 Quad'
24265      device: 'tablet'
24266      model: 'Base 7.0" Quad'
24267    - regex: 'Cavion_Base_7_3G_Silver'
24268      device: 'tablet'
24269      model: 'Base 7.0" 3G Silver'
24270
24271# GLX or JLX
24272GLX:
24273  regex: 'GLX (?:Aria|Dorna|Taban|Shine|Spark|ASA)(?:[);/ ]|$)'
24274  device: 'smartphone'
24275  models:
24276    - regex: 'GLX ASA'
24277      model: 'Asa'
24278    - regex: 'GLX (Aria|Taban|Shine|Spark)(?:[);/ ]|$)'
24279      model: '$1'
24280    - regex: 'GLX (Dorna)(?:[);/ ]|$)'
24281      device: 'tablet'
24282      model: '$1'
24283
24284# Seeken (seekenmobile.com)
24285Seeken:
24286  regex: 'Seeken[ _-]'
24287  device: 'smartphone'
24288  models:
24289    - regex: 'Seeken[_ -](SG1|SJ1)'
24290      model: '$1'
24291    - regex: 'Seeken[_ -](ST-101)'
24292      device: 'tablet'
24293      model: '$1'
24294
24295# Jivi Mobiles (jivi.in)
24296Jivi:
24297  regex: '(?:Revolution TnT3|Xtreme_(?:[37]|3x)|Xtreme (?:XT84|XT309 Plus|1))(?:[);/ ]|$)'
24298  device: 'smartphone'
24299  models:
24300    - regex: 'Revolution (TnT3)'
24301      model: 'Revolution $1'
24302    - regex: 'Xtreme (XT84)'
24303      model: 'Xtreme Klick $1'
24304    - regex: 'Xtreme (XT309) Plus'
24305      model: 'Xtreme View Pro $1Plus'
24306    - regex: 'Xtreme[ _]([137]|3x)(?:[);/ ]|$)'
24307      model: 'Xtreme $1'
24308
24309# Winnovo (www.mywinnovo.com)
24310Winnovo:
24311  regex: 'Winnovo[ _]|(?:T10LTE)(?:[);/ ]|$)'
24312  device: 'tablet'
24313  models:
24314    - regex: 'T10LTE(?:[);/ ]|$)'
24315      model: 'T10 LTE'
24316    - regex: 'Winnovo[ _](M866|M798|VTab|750[PK])(?:[);/ ]|$)'
24317      model: '$1'
24318    - regex: 'Winnovo[ _](K5[46]|K43)[a-z]{2}'
24319      device: 'smartphone'
24320      model: '$1'
24321
24322
24323# WE or WM Mobile or AAMRA WE
24324WE:
24325  regex: 'WE (A[15]0|B3|F[12]0|E[12]|L[3469]|R[34]|V[34]|S1|X[13]|T1)(?:[);/ ]|$)'
24326  device: 'smartphone'
24327  model: '$1'
24328
24329# Trio or triomobiles (http://triomobiles.com/products.html)
24330Trio:
24331  regex: 'Trio V51 DT(?:[);/ ]|$)'
24332  device: 'smartphone'
24333  model: 'V51DT'
24334
24335# Seuic (en.seuic.com)
24336Seuic:
24337  regex: '(AUTOID9N)(?:[);/ ]|$)'
24338  device: 'smartphone'
24339  model: '$1'
24340
24341# Centric
24342Centric:
24343  regex: '(?:Centric[- ]CM(?:5001|33[23]1|3321Plus)|CM4331)(?:[);/ ]|$)'
24344  device: 'smartphone'
24345  models:
24346    - regex: '(?:Centric[- ])?CM5001'
24347      model: 'A1'
24348    - regex: '(?:Centric[- ])?CM3321Plus'
24349      model: 'P1 Plus'
24350    - regex: '(?:Centric[- ])?CM3321'
24351      model: 'P1'
24352    - regex: '(?:Centric[- ])?CM3331'
24353      model: 'L3'
24354    - regex: '(?:Centric[- ])?CM4331'
24355      model: 'G1'
24356
24357# Kata mobile (secure.katadigital.com)
24358Kata:
24359  regex: 'Kata[ _-]'
24360  device: 'smartphone'
24361  models:
24362    - regex: 'Kata[ _-](C3|L1|M3s|M4|V[56])(?:[);/ ]|$)'
24363      model: '$1'
24364    - regex: 'Kata[ _-]i5-\w'
24365      model: 'I5'
24366    - regex: 'Kata-(T5)(?:[);/ ]|$)'
24367      device: 'tablet'
24368      model: '$1'
24369    - regex: 'Kata-Tmini4(?:[);/ ]|$)'
24370      device: 'tablet'
24371      model: 'T Mini 4'
24372    - regex: 'Kata Box 2(?:[);/ ]|$)'
24373      device: 'tv'
24374      model: 'Box 2'
24375
24376
24377# Hardkernel (www.hardkernel.com)
24378Hardkernel:
24379  regex: 'ODROID[-]?(C2|U2|XU[34])(?:[);/ ]|$)'
24380  device: 'peripheral'
24381  model: 'ODROID $1'
24382
24383# Wiseasy (wiseasy.com)
24384Wiseasy:
24385  regex: 'WISENET5(?:[);/ ]|$)'
24386  device: 'peripheral'
24387  model: 'WISENET5'
24388
24389# Shtrikh-M
24390Shtrikh-M:
24391  regex: 'SHTRIH-SMARTPOS-F2(?:[);/ ]|$)'
24392  device: 'peripheral'
24393  model: 'Smartpos F2'
24394
24395# BBK (bbk.ru)
24396BBK:
24397  regex: '([65]5|4[03]|3[29]|28)LEX[-_](81(?:27|39|45|58|61)|71(?:[23]7|4[345]|5[45]|6[368]|[57]8))[_/]([FU]?TS2C)(?:[);/ ]|$)'
24398  device: 'tv'
24399  model: '$1LEX-$2/$3'
24400
24401# 4ife
244024ife:
24403  regex: '4ife (4K Smart TV Box)(?:[);/ ]|$)'
24404  device: 'tv'
24405  model: '$1'
24406
24407# Westpoint
24408Westpoint:
24409  regex: 'WESTPOINT[;,]'
24410  device: 'tv'
24411  models:
24412    - regex: '(TETS-4919SM)'
24413      model: '$1'
24414
24415# Wintouch (http://www.wintouch.ae/)
24416Wintouch:
24417  regex: 'Q93S'
24418  device: 'tablet'
24419  model: 'Q93S'
24420
24421# Aiuto
24422Aiuto:
24423  regex: '(AT702)(?:[);/ ]|$)'
24424  device: 'tablet'
24425  model: '$1'
24426
24427# Seatel
24428Seatel:
24429  regex: 'Seatel'
24430  device: 'smartphone'
24431  models:
24432    - regex: 'Seatel[ _](L2|V8[AE]|T[5-8]|R6|V[89])(?:[);/ ]|$)'
24433      model: '$1'
24434
24435# Ditecma (ditecma.com)
24436Ditecma:
24437  regex: '(M1092R(?:-[12]|V[45])?)(?:[);/ ]|$)'
24438  device: 'tablet'
24439  model: '$1'
24440
24441# Datamini (datamini.co.in)
24442Datamini:
24443  regex: '(K908H4G)(?:[);/ ]|$)'
24444  device: 'tablet'
24445  model: '$1'
24446
24447# 3GNET (3gnet.com.tw)
244483GNET:
24449  regex: '(?<!NetType/)3GNET[ _]'
24450  device: 'smartphone'
24451  models:
24452    - regex: '3GNET[ _](U8|T800|U6s)(?:[);/ ]|$)'
24453      model: '$1'
24454    - regex: '3GNET[ _]T ?900'
24455      model: 'T900'
24456
24457# Yoka TV
24458'Yoka TV':
24459  regex: 'KB2 PRO(?:[);/ ]|$)'
24460  device: 'tv'
24461  model: 'KB2 Pro'
24462
24463# Formuler (formuler.tv)
24464Formuler:
24465  regex: 'Formuler[ _]'
24466  device: 'tv'
24467  models:
24468    - regex: 'Formuler[ _](Z8(?: Pro)?)(?:[);/ ]|$)'
24469      model: '$1'
24470
24471# Malata
24472Malata:
24473  regex: '(?:Build/)?Malata[ _]?([a-z0-9]+)(?:[);/ ]|$)'
24474  device: 'smartphone'
24475  model: '$1'
24476
24477# IT
24478IT:
24479  regex: 'IT-(?:1101S?|1101-QUAD)(?:[);/ ]|$)'
24480  device: 'tablet'
24481  models:
24482    - regex: 'IT-1101-QUAD'
24483      model: '1101 Quad'
24484    - regex: 'IT-(1101S?)'
24485      model: '$1'
24486
24487# Navcity (www.navcity.com.br)
24488Navcity:
24489  regex: 'NP-752Go(?:[);/ ]|$)'
24490  device: 'smartphone'
24491  models:
24492    - regex: 'NP-752Go'
24493      model: 'NP-752 Go'
24494
24495# Jeka
24496Jeka:
24497  regex: '(?:JK(?:960|[71]03) 3G|JK702|JK101|JK[17]00 v2.0)(?:[);/ ]|$)'
24498  device: 'tablet'
24499  models:
24500    - regex: 'JK(960|[71]03) 3G(?:[);/ ]|$)'
24501      model: 'JK $1 3G'
24502    - regex: 'JK(702|[17]00 v2.0|101)(?:[);/ ]|$)'
24503      model: 'JK $1'
24504
24505# Jiake
24506Jiake:
24507  regex: 'JK-?(760)(?:[);/ ]|$)'
24508  device: 'smartphone'
24509  model: 'JK-$1'
24510
24511# iQ&T (iqandt.com)
24512'iQ&T':
24513  regex: '(IFoo (?:U200|H55))(?:[);/ ]|$)'
24514  device: 'smartphone'
24515  model: '$1'
24516
24517# Mantra (mantratec.com)
24518Mantra:
24519  regex: '(MFSTAB(?:_74G)?)(?:[);/ ]|$)'
24520  device: 'peripheral'
24521  model: '$1'
24522
24523# Datalogic (datalogic.com)
24524Datalogic:
24525  regex: '(?:MEMOR 10)(?:[);/ ]|$)'
24526  device: 'smartphone'
24527  model: 'Memor 10'
24528
24529# Naomi Phone
24530Naomi Phone:
24531  regex: 'NAOMIPHONE Ambar(?:[);/ ]|$)'
24532  device: 'smartphone'
24533  model: 'Ambar'
24534
24535# Navitel (navitel.ru)
24536Navitel:
24537  regex: 'NAVITEL[ _]|(?:T737PRO)(?:[);/ ]|$)'
24538  device: 'tablet'
24539  models:
24540    - regex: 'NAVITEL[ _](T70[07]) 3G(?:[);/ ]|$)'
24541      model: '$1 3G'
24542    - regex: 'NAVITEL[ _](T757)LTE(?:[);/ ]|$)'
24543      model: '$1 LTE'
24544    - regex: 'NAVITEL[ _](A73[0157]|A650)(?:[);/ ]|$)'
24545      model: '$1'
24546    - regex: 'T737PRO(?:[);/ ]|$)'
24547      model: 'T737 Pro'
24548    - regex: 'RE900 Full HD(?:[);/ ]|$)'  # combo device table/navigator and camera
24549      model: 'RE900 Full HD'
24550
24551# Linnex (www.linnex.com)
24552Linnex:
24553  regex: 'LI(22)(?:[);/ ]|$)'
24554  device: 'smartphone'
24555  model: 'Li $1'
24556
24557# Smartab
24558Smartab:
24559  regex: '(ST1009)(?:[);/ ]|$)'
24560  device: 'tablet'
24561  model: '$1'
24562
24563# SuperTab (supertab-dz.com)
24564SuperTab:
24565  regex: 'SuperTab(A10|K7|S7G)(?:[);/ ]|$)'
24566  device: 'tablet'
24567  model: '$1'
24568
24569# Suzuki (suzukitech.com)
24570Suzuki:
24571  regex: 'SUZUKI[ _]|(?:ECOPAD7|SUMOPad10)(?:[);/ ]|$)'
24572  device: 'tablet'
24573  models:
24574    - regex: 'SUMOPAD(8100|10)(?:[);/ ]|$)'
24575      model: 'SumoPad $1'
24576    - regex: 'ECOPAD7'
24577      model: 'ECOPad 7'
24578
24579# philips
24580Philips:
24581  regex: 'Philips|NETTV/|Xenium S[25]66|(?:PI3210G|TPM1[79]1E|70PUH6774_96|QM16[134]E|TLE(?:821L|722G)|AND1E|S397|W5510|S410J)(?:[);/ ]|$)'
24582  device: 'smartphone'
24583  models:
24584    - regex: '(?:Philips[_ ])?Xenium[ _](S[25]66|V787)(?:[);/ ]|$)'
24585      model: 'Xenium $1'
24586    - regex: '(?:Philips[_ ])?(X818|X588)(?:[);/ ]|$)'
24587      model: 'Xenium $1'
24588    - regex: '(?:Philips[_ ])?(S397|W5510)(?:[);/ ]|$)'
24589      model: '$1'
24590    - regex: 'AND1E(?: TV)?(?:[);/ ]|$)'
24591      model: 'Android TV'
24592      device: 'tv'
24593    - regex: '(PI3210G)'
24594      model: '$1'
24595      device: 'tablet'
24596    - regex: '(TPM1[79]1E)' # Smart Tv 2018/2019
24597      model: '$1'
24598      device: 'tv'
24599    - regex: '(QM16[134]E)'
24600      model: '$1'
24601      device: 'tv'
24602    - regex: '(70PUH6774)_96'
24603      model: '$1/96 4K UHD'
24604      device: 'tv'
24605    - regex: '(TLE821L)(?:[);/ ]|$)'
24606      model: '$1 4G LTE'
24607      device: 'tablet'
24608    - regex: '(TLE722G)(?:[);/ ]|$)'
24609      model: '$1'
24610      device: 'tablet'
24611    - regex: '(?:S410J)(?:[);/ ]|$)'
24612      model: 'M9 Pro'
24613      device: 'tablet'
24614    - regex: 'Philips, BDP([0-9]{4})'
24615      model: 'Blu-ray Player (BDP$1)'
24616      device: 'tv'
24617    - regex: 'Philips, ([a-z0-9-]+)'
24618      model: '$1'
24619      device: 'tv'
24620    - regex: '(NETTV/[0-9\.]{5})'
24621      model: 'NetTV Series'
24622      device: 'tv'
24623    - regex: 'Philips-FISIO ([a-z0-9]+)'
24624      model: 'Fisio $1'
24625    - regex: 'Philips[ _-]?([a-z0-9\-@]+)'
24626      model: '$1'
24627
24628# INCAR
24629INCAR:
24630  regex: '(KZCAR)(?:[);/ ]|$)'
24631  device: 'car browser'
24632  model: '$1'
24633
24634# FaRao Pro (www.faraopro.jp)
24635FaRao Pro:
24636  regex: '(FTRW100)(?:[);/ ]|$)'
24637  device: 'tablet'
24638  model: '$1'
24639
24640# Nabi
24641Nabi:
24642  regex: '(?:DMTAB-(?:IN08A|NV08B|NV2[04]A)|NBTY07SMKG|NBFP07PMKG|SNB02-NV7A|NABI2-NV7A)(?:[);/ ]|$)'
24643  device: 'tablet'
24644  models:
24645    - regex: 'DMTAB-(?:IN08A|NV08B)'
24646      model: 'Dream Tab HD 8.0"'
24647    - regex: 'DMTAB-NV(2[04])A'
24648      model: 'Big Tab HD $1.0"'
24649    - regex: 'NBTY07SMKG'
24650      model: 'Barbie Tab 7.0"'
24651    - regex: 'NBFP07PMKG'
24652      model: 'Fisher Price Learning Tab 7.0"'
24653    - regex: 'SNB02-NV7A'
24654      model: '2S Tab'
24655    - regex: 'NABI2-NV7A'
24656      model: '2 Tab'
24657
24658# StrawBerry
24659StrawBerry:
24660  regex: 'StrawBerry[ _]'
24661  device: 'smartphone'
24662  models:
24663    - regex: 'StrawBerry[ _](SX|QX15)(?:[);/ ]|$)'
24664      model: '$1'
24665
24666# STRONG (https://www.strong.tv/)
24667STRONG:
24668  regex: 'LEAP-S1'
24669  device: 'tv'
24670  models:
24671    - regex: 'LEAP-S1'
24672      model: 'LEAP-S1'
24673
24674# Gresso
24675Gresso:
24676  regex: 'Gresso[ _]|(?:REGAL R2)(?:[);/ ]|$)'
24677  device: 'smartphone'
24678  models:
24679    - regex: 'REGAL R2'
24680      model: 'Regal R2'
24681    - regex: 'Gresso[ _]Regal(?:[);/ ]|$)'
24682      model: 'Regal'
24683
24684
24685# Pendoo  (pendoo.tv)
24686Pendoo:
24687  regex: 'Pendoo|A5X MAX(?:[\.-]\w+)?\.01\.d4'
24688  device: 'tv'
24689  models:
24690    - regex: 'Pendoo ?(T95Z|X10) PLUS'
24691      model: '$1 Plus'
24692    - regex: 'Pendoo ?X8PRO+'
24693      model: 'X8 Pro+'
24694    - regex: 'Pendoo[ \.]?(X9[29])'
24695      model: '$1'
24696    - regex: 'pendoo mini'
24697      model: 'Mini'
24698    - regex: 'A5X MAX(?:[\.-]\w+)?\.01\.d4'
24699      model: 'A5X Max'
24700
24701# PiPO (pipo.com)
24702PiPO:
24703  regex: 'Pipo[_ ]|PipoM9Pro'
24704  device: 'tablet'
24705  models:
24706    - regex: 'Pipo[_ ]([TP]9)'
24707      model: '$1'
24708    - regex: 'PipoM9Pro'
24709      model: 'M9 Pro'
24710    - regex: 'PIPO[_ ](X10|X9S)'  # combo device tv/tablet/pc
24711      device: 'tv'
24712      model: '$1'
24713
24714# Engel or Engel Axil (www.engelaxil.com)
24715Engel:
24716  regex: '(EN1007Q)plus(?:[);/ ]|$)'
24717  device: 'tv'
24718  model: '$1 Plus'
24719
24720# Genesis
24721Genesis:
24722  regex: '(SK-Mtek GT730[15])(?:[);/ ]|$)'
24723  device: 'tablet'
24724  model: '$1'
24725
24726# InfoKit
24727InfoKit:
24728  regex: '(TVB-906X)(?:[);/ ]|$)'
24729  device: 'tv'
24730  model: '$1'
24731
24732# Blloc (blloc.com)
24733Blloc:
24734  regex: '(Zero18)(?:[);/ ]|$)'
24735  device: 'smartphone'
24736  model: '$1'
24737
24738# Huskee
24739Huskee:
24740  regex: 'VULKANO(?:[);/ ]|$)'
24741  device: 'smartphone'
24742  model: 'Vulkano'
24743
24744# SOLE
24745SOLE:
24746  regex: 'SOLE[_ ]POP[_ ]S([45]0)(?:[);/ ]|$)'
24747  device: 'smartphone'
24748  model: 'Pop S$1'
24749
24750# SOLO
24751SOLO:
24752  regex: 'SOLO[_ ](Aspire(?: M)?)(?:[);/ ]|$)'
24753  device: 'smartphone'
24754  model: '$1'
24755
24756# OINOM
24757OINOM:
24758  regex: 'OINOM[_ ](V9D|V7H|V[679])(?:[);/ ]|$)'
24759  device: 'smartphone'
24760  model: '$1'
24761
24762# Singtech (singtech.asia)
24763Singtech:
24764  regex: 'Singtech|(?:Sapphire[_ ](?:H50S|H7S?|H90)|Infinity_I(?:1|_Mix))(?:[);/ ]|$)'
24765  device: 'smartphone'
24766  models:
24767    - regex: 'Sapphire[_ ](H50S|H7S?|H90)(?:[);/ ]|$)'
24768      model: 'Sapphire $1'
24769    - regex: 'Singtech[ _](Q2|S1)(?:[);/ ]|$)'
24770      model: '$1'
24771    - regex: 'Infinity_I1(?:[);/ ]|$)'
24772      model: 'Infinity I1'
24773    - regex: 'Infinity_I_Mix(?:[);/ ]|$)'
24774      model: 'Infinity I Mix'
24775
24776# Sunny
24777Sunny:
24778  regex: '(?:SS4G9 Mira|SS4G7 Sole|SS4G1 Luna|SS4G8 Nora|SS4G6 Lola|SN7014S?)(?:[);/ ]|$)'
24779  device: 'smartphone'
24780  models:
24781    - regex: '(SS4G9 Mira|SS4G7 Sole|SS4G1 Luna|SS4G8 Nora|SS4G6 Lola)(?:[);/ ]|$)'
24782      model: '$1'
24783    - regex: '(SN7014S?)(?:[);/ ]|$)'
24784      device: 'tablet'
24785      model: '$1'
24786
24787# TEENO sub brand GOWN(HK)
24788TEENO:
24789  regex: 'TEENO'
24790  device: 'smartphone'
24791  models:
24792    - regex: 'TEENO[_ ](S9|A1|S11)(?:[);/ ]|$)'
24793      model: '$1'
24794
24795# v-mobile or Vmobile - sub brand GOWN(HK)
24796v-mobile:
24797  regex: 'Vmobile[ _]'
24798  device: 'smartphone'
24799  models:
24800    - regex: 'Vmobile[ _](J7)(?:[);/ ]|$)'
24801      model: '$1'
24802    - regex: 'Vmobile XS Pro(?:[);/ ]|$)'
24803      model: 'XS Pro'
24804
24805# OASYS (oasys.co)
24806OASYS:
24807  regex: '(TEG9300)(?:[);/ ]|$)'
24808  device: 'peripheral'
24809  model: '$1'
24810
24811# Aspera (asperamobile.com)
24812Aspera:
24813  regex: 'ASPERA|(?:Wren)(?:[);/ ]|$)'
24814  device: 'smartphone'
24815  models:
24816    - regex: 'ASPERA[ _](R5h|RT3|A4[02]|A50)(?:[);/ ]|$)'
24817      model: '$1'
24818    - regex: 'Wren(?:[);/ ]|$)'
24819      model: 'Wren'
24820
24821# Vision Touch
24822Vision Touch:
24823  regex: 'Vision ?Touch'
24824  device: 'smartphone'
24825  models:
24826    - regex: 'VisionTouchLife'
24827      model: 'Life'
24828    - regex: 'Inspire'
24829      model: 'Inspire'
24830
24831NOBUX:
24832  regex: 'SMART_VOLT_NX5(?:[);/ ]|$)'
24833  device: 'smartphone'
24834  model: 'Smart Volt NX5'
24835
24836# Hitech or Hitech Mobile (hitech-mobiles.com)
24837Hitech:
24838  regex: '(Amaze[ _](?:S2_4G|S[56] 4G|S1|S[56](?: Plus)?))(?:[);/ ]|$)'
24839  device: 'smartphone'
24840  model: '$1'
24841
24842# F150 (sub brand Oukitel)
24843F150:
24844  regex: '(?:Bison2021|B2021|R2022)(?:[);/ ]|$)'
24845  device: 'smartphone'
24846  models:
24847    - regex: '(R2022)(?:[);/ ]|$)'
24848      model: '$1'
24849    - regex: '(?:Bison2021|B2021)(?:[);/ ]|$)'
24850      model: 'B2021'
24851
24852# BilimLang (bilimlang.com)
24853BilimLand:
24854  regex: 'BilimBook mini(?:[);/ ]|$)'
24855  device: 'desktop'
24856  model: 'BilimBook Mini'
24857
24858# Greentel (greentelmobile.com)
24859Greentel:
24860  regex: 'X1_Light_Lte(?:[);/ ]|$)'
24861  device: 'smartphone'
24862  models:
24863    - regex: 'X1_Light_Lte'
24864      model: 'X1 Light LTE'
24865
24866# Gretel:
24867Gretel:
24868  regex: 'Gretel|(?:GT6000)(?:[);/ ]|$)'
24869  device: 'smartphone'
24870  models:
24871    - regex: '(GT6000)'
24872      model: '$1'
24873    - regex: 'Gretel; (A[67])'
24874      model: '$1'
24875
24876# Kyowon
24877Kyowon:
24878  regex: '(KA-E410W)(?:[);/ ]|$)'
24879  device: 'tablet'
24880  model: '$1'
24881
24882# LT Mobile or LT Electronics (lt-smartphone.com)
24883LT Mobile:
24884  regex: 'LT[ _-](?:NOTE 10[SM]|C3100|S10[ _]Lite)'
24885  device: 'smartphone'
24886  models:
24887    - regex: 'LT[- ]NOTE (10[SM])'
24888      model: 'Note $1'
24889    - regex: 'LT C3100'
24890      model: 'P9'
24891    - regex: 'LT[ _]S10[ _]Lite'
24892      model: 'S10 Lite'
24893
24894# ONYX BOOX (onyx-boox.ru)
24895ONYX BOOX:
24896  regex: 'KON_TIKI(2)?(?:[);/ ]|$)'
24897  device: 'tablet'
24898  model: 'Kon Tiki $1'
24899
24900# AIRON (airon.ua)
24901AIRON:
24902  regex: 'AIRBOOK PRO 8S(?:[);/ ]|$)'
24903  device: 'tablet'
24904  model: 'AirBook Pro 8S'
24905
24906
24907# GFive or G'Five (www.gfivepakistan.com)
24908GFive:
24909  regex: '(?:PRESIDENT_GOLD_(9|10)|President Gpower 1)(?:[);/ ]|$)'
24910  device: 'smartphone'
24911  models:
24912    - regex: 'PRESIDENT_GOLD_(9|10)'
24913      model: 'President Gold $1'
24914    - regex: 'President Gpower 1'
24915      model: 'President GPower 1'
24916
24917# KINGZONE or KING ZONE
24918KINGZONE:
24919  regex: 'KINGZONE_|K1[_ ]turbo'
24920  device: 'smartphone'
24921  models:
24922    - regex: 'KINGZONE_(N5)(?:[);/ ]|$)'
24923      model: '$1'
24924    - regex: 'K1[_ ]turbo'
24925      model: 'K1 Turbo'
24926
24927# MTech
24928M-Tech:
24929  regex: '(?:EROS 4G|MTECH ACE9)(?:[);/ ]|$)'
24930  device: 'smartphone'
24931  models:
24932    - regex: 'EROS 4G'
24933      model: 'Eros 4G'
24934    - regex: 'ACE9'
24935      model: 'Ace 9'
24936
24937# Fantec Boogy
24938Fantec:
24939  regex: 'FAN-M300H(?:[);/ ]|$)'
24940  device: 'smartphone'
24941  model: 'M300H'
24942
24943# AURIS Mobile (en.aurismobile.com.tr)
24944AURIS:
24945  regex: '(TB-703G)(?:[);/ ]|$)'
24946  device: 'tablet'
24947  model: '$1'
24948
24949# YUHO Mobile
24950YUHO:
24951  regex: 'YUHO_|(?:Netra(?:[_ ](?:Plus|Lite))?)(?:[);/ ]|$)'
24952  device: 'smartphone'
24953  models:
24954    - regex: 'YUHO_(O2|H2|Y[123])_PRO'
24955      model: '$1 Pro'
24956    - regex: 'YUHO_Vast_Plus'
24957      model: 'Vast Plus'
24958    - regex: 'YUHO_Y1_ACE'
24959      model: 'Y1 Ace'
24960    - regex: 'YUHO_Y1_STAR'
24961      model: 'Y1 Star'
24962    - regex: 'YUHO_O1_LITE'
24963      model: 'O1 Lite'
24964    - regex: '(?:YUHO_)?(Vast2?|O[12]|Y2|Netra(?:[_ ](?:Plus|Lite))?)(?:[);/ ]|$)'
24965      model: '$1'
24966
24967# F2 Mobile OR 2F Mobile (f2mexico.com)
24968F2 Mobile:
24969  regex: '(?:Z8PLUS|Z8POCKET|LT5216|F80s_plus|C8Finger|F80 PIABELLA)(?:[);/ ]|$)'
24970  device: 'smartphone'
24971  models:
24972    - regex: 'Z8PLUS'
24973      model: 'Z8 Plus'
24974    - regex: 'Z8POCKET'
24975      model: 'Z8 Pocket'
24976    - regex: 'F80s_plus'
24977      model: 'F80s Plus'
24978    - regex: 'F80 PIABELLA'
24979      model: 'F80 Piabella'
24980    - regex: '(LT5216)'
24981      model: '$1'
24982    - regex: 'C8Finger'
24983      model: 'C8 Finger'
24984
24985# Zaith
24986Zaith:
24987  regex: '(Z3211G)(?:[);/ ]|$)'
24988  device: 'tablet'
24989  model: '$1'
24990
24991# Spectralink (spectralink.com)
24992Spectralink:
24993  regex: '(Versity 9640)(?:[);/ ]|$)'
24994  device: 'smartphone'
24995  model: '$1'
24996
24997# Vega
24998Vega:
24999  regex: 'Vega (Q7128)(?:[);/ ]|$)'
25000  device: 'tablet'
25001  model: '$1'
25002
25003# Bleck (www.bleck.com.mx)
25004Bleck:
25005  regex: '(?:BE_(xl|se|o2|fr|et|dg)|BL-919845)(?:[);/ ]|$)'
25006  device: 'smartphone'
25007  models:
25008    - regex: 'BE_(xl|se|o2|fr|et|dg)(?:[);/ ]|$)'
25009      model: 'BE $1'
25010    - regex: 'BL-919845'
25011      device: 'tablet'
25012      model: 'BE clever 7.0"'
25013
25014# BS Mobile
25015BS Mobile:
25016  regex: '(?:RUNE III?)(?:[);/ ]|$)'
25017  device: 'smartphone'
25018  models:
25019    - regex: 'RUNE (III?)(?:[);/ ]|$)'
25020      model: 'Rune $1'
25021
25022# RoyQueen
25023RoyQueen:
25024  regex: 'RQ (Regal R8)(?:[);/ ]|$)'
25025  device: 'smartphone'
25026  model: '$1'
25027
25028# Revo or RevoPhone or RevoPad (revophone.com)
25029Revo:
25030  regex: 'Revo[_ ](?:Youplus|555)|RevoYou'
25031  device: 'smartphone'
25032  models:
25033    - regex: 'Revo_Youplus'
25034      model: 'You Plus'
25035    - regex: 'Revo[ _]?(You|555)'
25036      model: '$1'
25037
25038# Axioo
25039Axioo:
25040  regex: 'PICOp(?:hone|ad)_'
25041  device: 'smartphone'
25042  models:
25043    - regex: 'PICOphone_(L1|M4N|M4P_M3|M4U_M2_M)'
25044      model: 'PicoPhone $1'
25045    - regex: 'PICOphone_M2'
25046      model: 'PicoPhone M2 M'
25047    - regex: 'PICOpad_(7H_7)_3G'
25048      device: 'tablet'
25049      model: 'PicoPad $1 3G'
25050
25051# Pico (pico-interactive.com)
25052Pico:
25053  regex: 'Pico (G2 4K)(?:[);/ ]|$)'
25054  device: 'wearable'
25055  model: '$1'
25056
25057# STG Telecom (stgtelecom.com)
25058STG Telecom:
25059  regex: 'STG[ _](A[12] Pro|[AS]1|X[1-3]|S[1-3]0|B10)(?:[);/ ]|$)'
25060  device: 'smartphone'
25061  model: '$1'
25062
25063# Rivo
25064Rivo:
25065  regex: 'PHANTOM (?:PZ|RX)|RHYTHM RX'
25066  device: 'smartphone'
25067  models:
25068    - regex: 'PHANTOM PZ ?(2[05]|[13]5|4|18)(?:[);/ ]|$)'
25069      model: 'Phantom PZ$1'
25070    - regex: 'PHANTOM RX ?(298|387)(?:[);/ ]|$)'
25071      model: 'Phantom RX$1'
25072    - regex: 'RHYTHM RX ?([15-9]0|[467]5|[12]80|150|[14]00)(?:[);/ ]|$)'
25073      model: 'Rhythm RX$1'
25074
25075# Four Mobile or 4mobile
25076Four Mobile:
25077  regex: 'Four[ _]?(S600|S300I|S185|K500|S61)(?:[);/ ]|$)'
25078  device: 'smartphone'
25079  models:
25080    - regex: 'Four[ _]?(S600|S300I|K500)'
25081      model: '$1'
25082    - regex: 'Four[ _]?S185'
25083      model: 'S185 Sky 2'
25084    - regex: 'Four[ _]?S61'
25085      model: 'S61 Eco 2'
25086
25087# Seven Mobile or 7mobile (www.7mobileafrica.com)
250887 Mobile:
25089  regex: '(SWEGUE|DRENA)(?:[);/ ]|$)'
25090  device: 'smartphone'
25091  models:
25092    - regex: 'Swegue'
25093      model: 'Swegue'
25094    - regex: 'DRENA'
25095      model: 'Drena'
25096
25097# UZ Mobile or Telecom Device Pro (idevice.uz)
25098UZ Mobile:
25099  regex: 'Uzbekistan(?:[);/ ]|$)'
25100  device: 'smartphone'
25101  model: 'Uzbekistan'
25102
25103# KREZ
25104KREZ:
25105  regex: 'KREZ[_ ]'
25106  device: 'smartphone'
25107  models:
25108    - regex: 'KREZ[_ ](SL502)(?:[);/ ]|$)'
25109      model: '$1'
25110    - regex: 'KREZ[_ ](TM100[12]S8)(?:[);/ ]|$)'
25111      device: 'tablet'
25112      model: '$1 3G'
25113
25114# Kurio or KD Interactive (www.group-kd.com, kdplanet.com)
25115Kurio:
25116  regex: 'Kurio'
25117  device: 'tablet'
25118  models:
25119    - regex: 'Kurio[_ ]?(10S|7S)(?:[);/ ]|$)'
25120      model: '$1'
25121    - regex: 'Kurio[_ ]?Phone(?:[);/ ]|$)'
25122      device: 'smartphone'
25123      model: 'Phone C14500'
25124
25125# Inch
25126Inch:
25127  regex: 'Inch (?:Regulus (?:7.85|II)|Avior 3)(?:[);/ ]|$)'
25128  device: 'tablet'
25129  models:
25130    - regex: '(Regulus 7.85)'
25131      model: '$1"'
25132    - regex: '(Regulus II|Avior 3)'
25133      model: '$1'
25134
25135# UTime
25136UTime:
25137  regex: 'UTIME[ _](U6|G7|U100|[TX]1|FX)(?:[);/ ]|$)'
25138  device: 'smartphone'
25139  model: '$1'
25140
25141# L-Max or LMAX (lmax-mobile.com)
25142L-Max:
25143  regex: '(?:Sapphire 8|Sapphire[76]|Mega plus[23])(?:[);/ ]|$)'
25144  device: 'smartphone'
25145  models:
25146    - regex: 'Mega plus([23])'
25147      model: 'Mega Plus $1'
25148    - regex: 'Sapphire ?([678])'
25149      model: 'Sapphire $1'
25150
25151# Astro (astro.ua)
25152Astro:
25153  regex: 'Astro[- ](S451|S501)(?:[);/ ]|$)'
25154  device: 'smartphone'
25155  model: '$1'
25156
25157# WIWA (www.wiwa.info.pl)
25158WIWA:
25159  regex: 'WIWA DREAM PLAYER(?:[);/ ]|$)'
25160  device: 'tv'
25161  model: 'Dream Player TV'
25162
25163# FMT OR Future Mobile Technology
25164FMT:
25165  regex: '(?:16M4HI105024|FMT-NM7058-02|176HS1050(?:232|531)|175WT1050231|175HS1050231|175FT1050241)(?:[);/ ]|$)'
25166  device: 'smartphone'
25167  models:
25168    - regex: '16M4HI105024'
25169      model: 'Netsurfer Storm'
25170    - regex: 'FMT-NM7058-02'
25171      model: 'Flash'
25172    - regex: '176HS1050531'
25173      model: 'Falcon'
25174    - regex: '176HS1050232'
25175      model: 'B52'
25176    - regex: '175WT1050231'
25177      model: 'Eagle'
25178    - regex: '175HS1050231'
25179      model: 'Tomcat'
25180    - regex: '175FT1050241'
25181      model: 'Viper'
25182
25183# mPhone
25184mPhone:
25185  regex: 'mPhone ?([68]|7 Plus|7s)(?:[);/ ]|$)'
25186  device: 'smartphone'
25187  model: '$1'
25188
25189# Cobalt
25190Cobalt:
25191  regex: 'Cobalt[ _-](?:SM|T)'
25192  device: 'smartphone'
25193  models:
25194    - regex: 'Cobalt[ _-]SM_(55?|6)'
25195      model: 'SM$1'
25196    - regex: 'Cobalt[ _-]T((?:7|10))[ _]3G'
25197      device: 'tablet'
25198      model: 'T$1 3G'
25199    - regex: 'Cobalt[ _-]T((?:7|10))[ _]wifi'
25200      device: 'tablet'
25201      model: 'T$1 WiFi'
25202
25203# New Balance or NB
25204New Balance:
25205  regex: 'NB (RunIQ)(?:[);/ ]|$)'
25206  device: 'wearable'
25207  model: '$1'
25208
25209# AOYODKG
25210AOYODKG:
25211  regex: 'AOYODKG'
25212  device: 'tablet'
25213  models:
25214    - regex: 'AOYODKG[_ ](A38)(?:[);/ ]|$)'
25215      model: '$1'
25216
25217# Xtratech (xtratech.com)
25218Xtratech:
25219  regex: '(BRIO[_ ]X31)(?:[);/ ]|$)'
25220  device: 'smartphone'
25221  model: '$1'
25222
25223# XGIMI (www.xgimi.com)
25224XGIMI:
25225  regex: 'XGIMI TV(?:[);/ ]|$)'
25226  device: 'peripheral'
25227  model: '$1'
25228
25229# Raspberry (raspberrypi.org)
25230Raspberry:
25231  regex: 'Raspberry (Pi [0-9]+)(?:[);/ ]|$)'
25232  device: 'peripheral'
25233  model: '$1'
25234
25235# Tambo
25236Tambo:
25237  regex: '(TA-(?:2[_ ](?:3G|Pro)|5[05][_ ]Power|[1-4]|[1246]0))(?:[);/ ]|$)'
25238  device: 'smartphone'
25239  model: '$1'
25240
25241# Smotreshka
25242Smotreshka:
25243  regex: 'Smotreshka Box (115NA|413NA|213a?)(?:[);/ ]|$)'
25244  device: 'tv'
25245  model: '$1'
25246
25247# Gooweel (gooweel.com)
25248Gooweel:
25249  regex: 'Gooweel| M5 Pro(?:[);/ ]|$)'
25250  device: 'smartphone'
25251  models:
25252    - regex: 'Gooweel; (S7);'
25253      model: '$1'
25254    - regex: 'M5 Pro'
25255      model: 'M5 Pro'
25256
25257# Vargo or Ivargo
25258Vargo:
25259  regex: 'Vargo[; _]|(?:V210101)(?:[);/ ]|$)'
25260  device: 'smartphone'
25261  models:
25262    - regex: '(V210101)(?:[);/ ]|$)'
25263      model: '$1'
25264
25265# Elekta (elektagulf.com)
25266Elekta:
25267  regex: 'ELED-(?:4[238]S[AM]{2}RT|5[05](?:CV_)?SMART_UHD|32SMART)(?:[);/ ]|$)'
25268  device: 'tv'
25269  models:
25270    - regex: 'ELED-(4[238])S[AM]{2}RT(?:[);/ ]|$)'
25271      model: '$1" FHD LED Smart TV'
25272    - regex: 'ELED-55CV_SMART_UHD(?:[);/ ]|$)'
25273      model: '55" UHD Curved LED Smart TV'
25274    - regex: 'ELED-(50)SMART_UHD(?:[);/ ]|$)'
25275      model: '$1" UHD LED Smart TV'
25276    - regex: 'ELED-(32)SMART(?:[);/ ]|$)'
25277      model: '$1" HD LED Smart TV'
25278
25279# YASIN (yasintv.kz)
25280YASIN:
25281  regex: 'YASIN Android TV(?:[);/ ]|$)'
25282  device: 'tv'
25283  model: ''
25284
25285# Blow
25286Blow:
25287  regex: 'LaserTAB10(?:[);/ ]|$)'
25288  device: 'tablet'
25289  model: 'Laser Tab 10'
25290
25291# FNF
25292FNF:
25293  regex: 'ifive(?:[_ ]mini[_ ][43]G?S|X2|Mini3|3| Air)(?:[);/ ]|$)'
25294  device: 'tablet'
25295  models:
25296    - regex: 'ifive[_ ]mini[_ ]([43]G?S)'
25297      model: 'iFive Mini $1'
25298    - regex: 'ifive(X2|3)'
25299      model: 'iFive $1'
25300    - regex: 'ifiveMini3'
25301      model: 'iFive Mini 3'
25302    - regex: 'ifive Air'
25303      model: 'iFive Air'
25304
25305# iMan
25306iMan:
25307  regex: '(i5800C|i6800)(?:[);/ ]|$)'
25308  device: 'smartphone'
25309  model: '$1'
25310
25311# Vava
25312VAVA:
25313  regex: 'VAVA[ _](X3)(?:[);/ ]|$)'
25314  device: 'smartphone'
25315  model: '$1'
25316
25317# ivvi
25318ivvi:
25319  regex: 'ivvi[ _](F1S|F2C|V1M-S|V2|i1-S)(?:[);/ ]|$)'
25320  device: 'smartphone'
25321  model: '$1'
25322
25323# Dragon Touch (dragontouch.com)
25324Dragon Touch:
25325  regex: '(Notepad[_ ](?:K10|102))(?:[);/ ]|$)'
25326  device: 'tablet'
25327  model: '$1'
25328
25329# AOpen
25330AOpen:
25331  regex: '(WT(?:22|19)M-FI)(?:[);/ ]|$)'
25332  device: 'smart display'
25333  model: 'eTILE $1'
25334
25335# AG or AG Mobile
25336AG Mobile:
25337  regex: '(Hashtag|Shine|Chacer)(?:[);/ ]|$)'
25338  device: 'smartphone'
25339  model: '$1'
25340
25341# DIGIFORS (digifors.ru)
25342DIGIFORS:
25343  regex: 'DIGIFORS (400)(?:[);/ ]|$)'
25344  device: 'tv'
25345  model: 'Smart $1'
25346
25347# VIWA
25348VIWA:
25349  regex: '(?:LIGHT MINI|VIWA A5\+|LIGHT PLUS)(?:[);/ ]|$)'
25350  device: 'smartphone'
25351  models:
25352    - regex: 'LIGHT MINI'
25353      model: 'Light Mini'
25354    - regex: 'LIGHT PLUS'
25355      model: 'Light Plus'
25356    - regex: 'VIWA A5\+'
25357      model: 'Light A5 Plus'
25358
25359# M-Horse (www.mhorse.com)
25360M-Horse:
25361  regex: 'M-HORSE|(?:Pure (?:3|2A?)|Pure ?1)(?:[);/ ]|$)'
25362  device: 'smartphone'
25363  models:
25364    - regex: 'Pure ?([13]|2A?)(?:[);/ ]|$)'
25365      model: 'Pure $1'
25366
25367# ProVision (www.provision.co.ir/en)
25368ProVision:
25369  regex: 'ProVision (S1)(?:[);/ ]|$)'
25370  device: 'tv'
25371  model: '$1'
25372
25373# 'Sirin labs (sirinlabs.com)
25374Sirin labs:
25375  regex: '(?:FINNEY U1)(?:[);/ ]|$)'
25376  device: 'smartphone'
25377  model: 'Finney U1'
25378
25379# Perfeo (perfeo.ru)
25380Perfeo:
25381  regex: 'Perfeo'
25382  device: 'tv'
25383  models:
25384    - regex: 'Perfeo_PF_A4551'
25385      model: 'CHRONO'
25386
25387# CGV (www.cgv.fr)
25388CGV:
25389  regex: 'CGV_(Ultimate T8)'
25390  device: 'smartphone'
25391  model: '$1'
25392
25393# Telia (telia.se or telia.com)
25394Telia:
25395  regex: 'Telia box'
25396  device: 'tv'
25397  model: 'Box'
25398
25399# Canal Digital
25400Canal Digital:
25401  regex: 'S70CDS(?:[);/ ]|$)'
25402  device: 'tv'
25403  model: 'OnePlace'
25404
25405# ZIFRO
25406ZIFRO:
25407  regex: 'ZIFRO|(?:ZT-97003G)(?:[);/ ]|$)'
25408  device: 'tablet'
25409  models:
25410    - regex: '(ZT-9700)3G'
25411      model: '$1 3G'
25412
25413# SmartBook
25414SmartBook:
25415  regex: 'SMARTBOOK S'
25416  device: 'tablet'
25417  models:
25418    - regex: 'SMARTBOOK SB ?13'
25419      model: 'SB13'
25420    - regex: 'SMARTBOOK (S9Q9)'
25421      model: '$1'
25422
25423# Kiowa
25424Kiowa:
25425  regex: '(?:[AS]5|X4)_CRISTAL(?:[);/ ]|$)'
25426  device: 'smartphone'
25427  models:
25428    - regex: '(X4|[AS]5)_CRISTAL'
25429      model: '$1 Cristal'
25430
25431# Sprint
25432Sprint:
25433  regex: 'AQT(100|8[02])(?:[);/ ]|$)'
25434  device: 'tablet'
25435  model: 'AQT$1'
25436
25437# Bundy Mobile (bundy-mobile.fr)
25438Bundy:
25439  regex: '(?:BTOUCH7_PLUS|SWEET 5\+ 2019|SWEET ?[56]\+)(?:[);/ ]|$)'
25440  device: 'smartphone'
25441  models:
25442    - regex: 'SWEET 5\+ 2019'
25443      model: 'Sweet 5 Plus (2019)'
25444    - regex: 'SWEET ?([65])\+'
25445      model: 'Sweet $1 Plus'
25446    - regex: 'BTOUCH7_PLUS'
25447      device: 'tablet'
25448      model: 'B-Touch 7 Plus'
25449
25450# Covia (covia.net)
25451Covia:
25452  regex: '(CP-J55a|CP-J55aW|CP-J55aX)(?:[);/ ]|$)'
25453  device: 'smartphone'
25454  model: '$1'
25455
25456# Smart (smartgsmphone.com)
25457Smart:
25458  regex: '(Coral 4)(?:[);/ ]|$)'
25459  device: 'smartphone'
25460  model: '$1'
25461
25462# Stylo
25463Stylo:
25464  regex: 'STYLO|(?:CPE91|S57_A[ZL]URE|Ithemba|S56 MIST|S55 Nova|S40_VISTA|S64_ALPHA|S53_STARK|S40_LIFE|LIFE_2|S49[_ ](?:MONO|POISE|ECO))(?:[);/ ]|$)'
25465  device: 'smartphone'
25466  models:
25467    - regex: 'STYLO[ _](F1)'
25468      model: '$1'
25469    - regex: 'STYLO[ _]S9[_ ]TOPAZ'
25470      model: 'S9 Topaz'
25471    - regex: 'SV61 VECTOR\+'
25472      model: 'SV61 Vector Plus'
25473    - regex: 'SM61 MAGIC\+'
25474      model: 'SM61 Magic Plus'
25475    - regex: 'S57_AZURE'
25476      model: 'S57 Azure'
25477    - regex: 'S57_ALURE'
25478      model: 'S57 Alure'
25479    - regex: 'S56 MIST'
25480      model: 'S56 Mist'
25481    - regex: 'CPE91'
25482      model: 'S54 Zen'
25483    - regex: 'S55 Nova'
25484      model: 'S55 Nova'
25485    - regex: 'S40_VISTA'
25486      model: 'S40 Vista'
25487    - regex: 'Ithemba'
25488      model: 'Ithemba'
25489    - regex: 'S53_STARK'
25490      model: 'S53 Stark'
25491    - regex: 'S40_LIFE'
25492      model: 'S40 Life'
25493    - regex: 'LIFE_2'
25494      model: 'Life 2'
25495    - regex: 'S49[_ ]POISE'
25496      model: 'S49 Poise'
25497    - regex: 'S49[_ ]MONO'
25498      model: 'S49 Mono'
25499    - regex: 'S49[_ ]ECO'
25500      model: 'S49 Eco'
25501    - regex: 'S64_ALPHA'
25502      model: 'S64 Alpha'
25503
25504# galaxy innovations or GI  (www.galaxy-innovations.ru)
25505Galaxy Innovations:
25506  regex: 'GI UNI2(?:[);/ ]|$)'
25507  device: 'tv'
25508  model: 'Uni 2'
25509
25510# Benzo
25511Benzo:
25512  regex: '(Class S300 LTE)(?:[);/ ]|$)'
25513  device: 'smartphone'
25514  model: '$1'
25515
25516# Vexia (www.vexia.eu)
25517Vexia:
25518  regex: '(Zippers Tab 10i 3G)'
25519  device: 'tablet'
25520  model: '$1'
25521
25522# HiMax (himaxmobilebd.com)
25523HiMax:
25524  regex: ' HIMAX[_ ]'
25525  device: 'smartphone'
25526  models:
25527    - regex: 'POLYMER( X)?'
25528      model: 'Polymer$1'
25529    - regex: 'HIMAX[_ ]PURE[_ ]3S'
25530      model: 'Pure 3S'
25531
25532# Packard Bell (sub brand Acer www.packardbell.com)
25533Packard Bell:
25534  regex: '(PB1009|M10[45]00|M7500|M7600-D|DAYTONA-G12)(?:[);/ ]|$)'
25535  device: 'tablet'
25536  models:
25537    - regex: 'DAYTONA-G12'
25538      device: 'smartphone'
25539      model: 'Daytona G12'
25540    - regex: '(PB1009|M10[45]00|M7500|M7600-D)(?:[);/ ]|$)'
25541      model: '$1'
25542
25543# Qnet Mobile (qnetmobile.com)
25544Qnet Mobile:
25545  regex: ' Passion[ _]P|Hynex plus|Stark K1|Hynex H[356]|Levin V[12]'
25546  device: 'smartphone'
25547  models:
25548    - regex: 'Passion[ _](P[0-9]+)'
25549      model: 'Passion $1'
25550    - regex: 'Hynex plus( 2)?'
25551      model: 'Hynex Plus$1'
25552    - regex: 'Stark K1'
25553      model: 'Stark K1'
25554    - regex: 'Hynex (H[356])\+'
25555      model: 'Hynex $1 Plus'
25556    - regex: 'Hynex (H[35])'
25557      model: 'Hynex $1'
25558    - regex: 'Levin (V[12])'
25559      model: 'Levin $1'
25560
25561# Bluebird (www.bluebirdcorp.com)
25562Bluebird:
25563  regex: '(VF550)(?:[);/ ]|$)'
25564  device: 'smartphone'
25565  model: '$1'
25566
25567# Mara or MaraPhones (maraphones.com)
25568Mara:
25569  regex: 'Mara(?: Phones)?[ _](Z1?|X1|S)(?:[);/ ]|$)'
25570  device: 'smartphone'
25571  model: '$1'
25572
25573# BMAX (www.bmaxit.com)
25574BMAX:
25575  regex: 'I10_EEA(?:[);/ ]|$)'
25576  device: 'tablet'
25577  model: 'MaxPad I10'
25578
25579# Geotex (geotex.tv)
25580Geotex:
25581  regex: '(GTX-R10i Pro)(?:[);/ ]|$)'
25582  device: 'tv'
25583  model: '$1'
25584
25585# DING DING
25586DING DING:
25587  regex: 'DINGDING[ _-](SK\d)(?:[);/ ]|$)'
25588  device: 'smartphone'
25589  model: '$1'
25590
25591# Trident (www.trident.com.tr)
25592Trident:
25593  regex: '(A23 Max)(?:[);/ ]|$)'
25594  device: 'smartphone'
25595  model: '$1'
25596
25597# OKSI
25598OKSI:
25599  regex: '(GEN-10)(?:[);/ ]|$)'
25600  device: 'tablet'
25601  model: '$1'
25602
25603# Taiga System or TaigaPhone (taigaphone.ru)
25604Taiga System:
25605  regex: '(?:TP_1_3000)(?:[);/ ]|$)'
25606  device: 'smartphone'
25607  model: 'TaigaPhone 1'
25608
25609# Glofiish (glofiish.ua)
25610Glofiish:
25611  regex: '(?:Gpad_U)(?:[);/ ]|$)'
25612  device: 'smartphone'
25613  model: 'G Pad U'
25614
25615# Polar (polar.ru)
25616Polar:
25617  regex: 'Polar[_ ](P24L51T2CSM)(?:[);/ ]|$)'
25618  device: 'tv'
25619  model: '$1'
25620
25621# MyGica (www.mygica.com)
25622MyGica:
25623  regex: 'MyGica[_ ]'
25624  device: 'tv'
25625  models:
25626    - regex: 'HDR (Quad Core|Smart TV) Box'
25627      model: 'HDR $1 Box'
25628    - regex: 'Quad core Enjoy tv box'
25629      model: 'Quad Core Enjoy TV Box'
25630    - regex: 'ATV(19[60]0|495 Pro 16G)'
25631      model: 'ATV$1'
25632
25633# Devices with undectable brand, but detectable model
25634Unknown:
25635  regex: 'WebTV/(\d+\.\d+)|(?:M10 Ultra)(?:[);/ ]|$)'
25636  device: 'smartphone'
25637  models:
25638    - regex: 'WebTV/(\d+\.\d+)'
25639      device: 'tv'
25640      model: 'Web TV'
25641    - regex: 'M10 Ultra(?:[);/ ]|$)'
25642      device: 'phablet'
25643      model: 'M10 Ultra' # clone xiaomi m10 ultra
25644