device_detector 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +5 -4
  3. data/CHANGELOG.md +4 -4
  4. data/README.md +6 -8
  5. data/lib/device_detector.rb +2 -2
  6. data/lib/device_detector/version.rb +1 -1
  7. data/regexes/bots.yml +461 -10
  8. data/regexes/client/browser_engine.yml +4 -1
  9. data/regexes/client/browsers.yml +167 -17
  10. data/regexes/client/feed_readers.yml +30 -0
  11. data/regexes/client/libraries.yml +38 -0
  12. data/regexes/client/mediaplayers.yml +4 -0
  13. data/regexes/client/mobile_apps.yml +82 -1
  14. data/regexes/client/pim.yml +4 -0
  15. data/regexes/device/mobiles.yml +1761 -138
  16. data/regexes/device/portable_media_player.yml +2 -4
  17. data/regexes/device/televisions.yml +16 -2
  18. data/regexes/oss.yml +25 -4
  19. data/spec/device_detector/detector_fixtures_spec.rb +51 -11
  20. data/spec/device_detector_spec.rb +20 -0
  21. data/spec/fixtures/client/browser.yml +446 -11
  22. data/spec/fixtures/client/feed_reader.yml +25 -1
  23. data/spec/fixtures/client/library.yml +55 -1
  24. data/spec/fixtures/client/mediaplayer.yml +6 -0
  25. data/spec/fixtures/client/mobile_app.yml +81 -1
  26. data/spec/fixtures/client/pim.yml +7 -1
  27. data/spec/fixtures/detector/bots.yml +668 -108
  28. data/spec/fixtures/detector/camera.yml +14 -8
  29. data/spec/fixtures/detector/car_browser.yml +4 -3
  30. data/spec/fixtures/detector/console.yml +38 -24
  31. data/spec/fixtures/detector/desktop.yml +981 -687
  32. data/spec/fixtures/detector/feature_phone.yml +82 -41
  33. data/spec/fixtures/detector/feed_reader.yml +37 -0
  34. data/spec/fixtures/detector/mobile_apps.yml +257 -0
  35. data/spec/fixtures/detector/phablet.yml +569 -163
  36. data/spec/fixtures/detector/portable_media_player.yml +24 -16
  37. data/spec/fixtures/detector/smart_display.yml +8 -5
  38. data/spec/fixtures/detector/smartphone-1.yml +4698 -4235
  39. data/spec/fixtures/detector/smartphone-2.yml +4804 -4256
  40. data/spec/fixtures/detector/smartphone-3.yml +5060 -4603
  41. data/spec/fixtures/detector/smartphone-4.yml +6803 -2637
  42. data/spec/fixtures/detector/smartphone-5.yml +7044 -0
  43. data/spec/fixtures/detector/smartphone.yml +4380 -3904
  44. data/spec/fixtures/detector/tablet-1.yml +4530 -4036
  45. data/spec/fixtures/detector/tablet-2.yml +4875 -25
  46. data/spec/fixtures/detector/tablet.yml +3266 -2764
  47. data/spec/fixtures/detector/tv.yml +563 -206
  48. data/spec/fixtures/detector/unknown.yml +1033 -863
  49. data/spec/fixtures/parser/oss.yml +114 -2
  50. data/spec/fixtures/parser/vendorfragments.yml +2 -2
  51. metadata +5 -3
@@ -39,4 +39,8 @@
39
39
 
40
40
  - regex: 'The Bat!(?: Voyager)?(?:[/ ](\d+[\.\d]+))?'
41
41
  name: 'The Bat!'
42
+ version: '$1'
43
+
44
+ - regex: 'DAVdroid(?:/(\d+[\.\d]+))?'
45
+ name: 'DAVdroid'
42
46
  version: '$1'
@@ -81,9 +81,15 @@ HTC:
81
81
 
82
82
  - regex: 'NexusHD2' # custom rom for hd2
83
83
  model: 'HD2'
84
- - regex: 'HTC[ _\-]((?:Flyer|P715a).*) Build'
84
+ - regex: 'HTC[ _\-]P715a'
85
85
  device: 'tablet'
86
- model: '$1'
86
+ model: 'P715a'
87
+ - regex: 'HTC[ _\-]Flyer Build'
88
+ device: 'tablet'
89
+ model: 'Flyer'
90
+ - regex: 'HTC[ _\-]Flyer[ _\-]([\w]{1,5})'
91
+ device: 'tablet'
92
+ model: 'Flyer $1'
87
93
  - regex: 'HTC[ _\-]One[ _\-]max[);/ ]'
88
94
  device: 'phablet'
89
95
  model: 'One max'
@@ -115,14 +121,44 @@ HTC:
115
121
  - regex: '(One M8)'
116
122
  model: '$1'
117
123
 
124
+ # microsoft
125
+ Microsoft:
126
+ regex: 'KIN\.(One|Two)|RM-(?:1031|106[57]|109[02]|1099|1109|1114|1127|1141|1154)|Microsoft; Lumia'
127
+ device: 'smartphone'
128
+ models:
129
+ - regex: 'KIN\.(One|Two)'
130
+ device: 'feature phone'
131
+ model: 'Kin $1'
132
+
133
+ - regex: 'RM-1031'
134
+ model: 'Lumia 532'
135
+ - regex: 'RM-106[57]'
136
+ model: 'Lumia 640 XL'
137
+ - regex: 'RM-109[02]'
138
+ model: 'Lumia 535'
139
+ - regex: 'RM-1099'
140
+ model: 'Lumia 430'
141
+ - regex: 'RM-1109'
142
+ model: 'Lumia 640'
143
+ - regex: 'RM-1114'
144
+ model: 'Lumia 435'
145
+ - regex: 'RM-1127'
146
+ model: 'Lumia 550'
147
+ - regex: 'RM-1141'
148
+ model: 'Lumia 540'
149
+ - regex: 'RM-1154'
150
+ model: 'Lumia 650'
151
+
152
+ - regex: 'Microsoft; Lumia ([^;/)]+)[;/)]'
153
+ model: 'Lumia $1'
154
+
118
155
  # NOKIA
119
156
  Nokia:
120
- regex: 'Nokia|Lumia|Maemo RX|portalmmm/2\.0 N7|portalmmm/2\.0 NK|nok[0-9]+|Symbian.*\s([a-z0-9]+)$|RX-51 N900'
157
+ regex: 'Nokia|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} Build'
121
158
  device: 'smartphone'
122
159
  models:
123
160
  - regex: 'RX-51 N900'
124
161
  model: 'N900'
125
- device: 'tablet'
126
162
  - regex: 'Nokia(N[0-9]+)'
127
163
  model: '$1'
128
164
  - regex: 'Nokia-([a-z0-9]+)'
@@ -152,6 +188,18 @@ Nokia:
152
188
  device: 'feature phone'
153
189
  model: '$1'
154
190
 
191
+ # Nokia branded phones by HMD Global
192
+ - regex: 'TA-10(07|23|29|35)'
193
+ model: '2'
194
+ - regex: 'TA-10(20|28|32|38)'
195
+ model: '3'
196
+ - regex: 'TA-10(24|27|44|53)'
197
+ model: '5'
198
+ - regex: 'TA-10(00|03|21|25|33|39)'
199
+ model: '6'
200
+ - regex: 'TA-10(04|12)'
201
+ model: '8'
202
+
155
203
  # CnM
156
204
  CnM:
157
205
  regex: 'CnM'
@@ -162,9 +210,13 @@ CnM:
162
210
 
163
211
  # RIM/BlackBerry
164
212
  RIM:
165
- regex: 'BB10;|BlackBerry|rim[0-9]+|PlayBook'
213
+ regex: 'BB10;|BlackBerry|rim[0-9]+|PlayBook|STV100-4|STH100-2'
166
214
  device: 'smartphone'
167
215
  models:
216
+ - regex: 'STV100-4'
217
+ model: 'BlackBerry Priv'
218
+ - regex: 'STH100-2'
219
+ model: 'BlackBerry DTEK50'
168
220
  - regex: 'BB10; ([a-z0-9\- ]+)\)'
169
221
  model: 'BlackBerry $1'
170
222
  - regex: 'PlayBook.+RIM Tablet OS'
@@ -195,9 +247,12 @@ Palm:
195
247
 
196
248
  # HP
197
249
  HP:
198
- regex: 'TouchPad/\d+\.\d+|hp-tablet|HP ?iPAQ|webOS.*P160U|HP Slate|HP [78]|Compaq [7|8]'
250
+ regex: 'TouchPad/\d+\.\d+|hp-tablet|HP ?iPAQ|webOS.*P160U|HP Slate|HP [78]|Compaq [7|8]|HP; [^;/)]+'
199
251
  device: 'smartphone'
200
252
  models:
253
+ - regex: 'HP Slate 6 Voice Tab'
254
+ model: 'Slate 6 VoiceTab'
255
+ device: 'phablet'
201
256
  - regex: 'HP ([78][^/;]*) Build'
202
257
  model: 'Slate $1'
203
258
  device: 'tablet'
@@ -213,6 +268,8 @@ HP:
213
268
  - regex: 'TouchPad/(\d+\.\d+)|hp-tablet'
214
269
  model: 'TouchPad'
215
270
  device: 'tablet'
271
+ - regex: 'HP; ([^;/)]+)'
272
+ model: '$1'
216
273
  - regex: 'HP(?: )?iPAQ(?: )?([a-z0-9]+)'
217
274
  model: 'iPAQ $1'
218
275
  - regex: 'webOS.*(P160U)'
@@ -259,6 +316,30 @@ Apple:
259
316
  - regex: '(?:Apple-)?iPh(?:one)?7[C,]2'
260
317
  model: 'iPhone 6'
261
318
  device: 'smartphone'
319
+ - regex: '(?:Apple-)?iPh(?:one)?8[C,]1'
320
+ model: 'iPhone 6s'
321
+ device: 'smartphone'
322
+ - regex: '(?:Apple-)?iPh(?:one)?8[C,]2'
323
+ model: 'iPhone 6s Plus'
324
+ device: 'phablet'
325
+ - regex: '(?:Apple-)?iPh(?:one)?8[C,]4'
326
+ model: 'iPhone SE'
327
+ device: 'smartphone'
328
+ - regex: '(?:Apple-)?iPh(?:one)?9[C,][13]'
329
+ model: 'iPhone 7'
330
+ device: 'smartphone'
331
+ - regex: '(?:Apple-)?iPh(?:one)?9[C,][24]'
332
+ model: 'iPhone 7 Plus'
333
+ device: 'phablet'
334
+ - regex: '(?:Apple-)?iPh(?:one)?10[C,][14]'
335
+ model: 'iPhone 8'
336
+ device: 'smartphone'
337
+ - regex: '(?:Apple-)?iPh(?:one)?10[C,][25]'
338
+ model: 'iPhone 8 Plus'
339
+ device: 'phablet'
340
+ - regex: '(?:Apple-)?iPh(?:one)?10[C,][36]'
341
+ model: 'iPhone X'
342
+ device: 'phablet'
262
343
 
263
344
  # specific tablet devices
264
345
  - regex: '(?:Apple-)?iPad1[C,]1'
@@ -285,9 +366,24 @@ Apple:
285
366
  - regex: '(?:Apple-)?iPad4[C,][789]'
286
367
  model: 'iPad Mini 3'
287
368
  device: 'tablet'
369
+ - regex: '(?:Apple-)?iPad5[C,][12]'
370
+ model: 'iPad Mini 4'
371
+ device: 'tablet'
288
372
  - regex: '(?:Apple-)?iPad5[C,][34]'
289
373
  model: 'iPad Air 2'
290
374
  device: 'tablet'
375
+ - regex: '(?:Apple-)?iPad6[C,][34]'
376
+ model: 'iPad Pro 9.7'
377
+ device: 'tablet'
378
+ - regex: '(?:Apple-)?iPad6[C,][78]'
379
+ model: 'iPad Pro 12.9'
380
+ device: 'tablet'
381
+ - regex: '(?:Apple-)?iPad7[C,][12]'
382
+ model: 'iPad Pro 2 12.9'
383
+ device: 'tablet'
384
+ - regex: '(?:Apple-)?iPad7[C,][34]'
385
+ model: 'iPad Pro 10.5'
386
+ device: 'tablet'
291
387
 
292
388
  - regex: '(?:iTunes-)?AppleTV'
293
389
  model: 'Apple TV'
@@ -301,7 +397,7 @@ Apple:
301
397
 
302
398
  # micromax
303
399
  MicroMax:
304
- regex: 'MicroMax[ \-\_]?[a-z0-9]+'
400
+ regex: '(MicroMax[ \-\_]?[a-z0-9]+|Q327)'
305
401
  device: 'smartphone'
306
402
  models:
307
403
  - regex: 'MicroMax(?:[ \-\_])?(P[a-z0-9]+)'
@@ -309,6 +405,8 @@ MicroMax:
309
405
  device: 'tablet'
310
406
  - regex: 'MicroMax(?:[ \-\_])?([a-z0-9]+)'
311
407
  model: '$1'
408
+ - regex: 'Q327'
409
+ model: 'Bolt'
312
410
 
313
411
  # 3Q
314
412
  3Q:
@@ -316,9 +414,38 @@ MicroMax:
316
414
  device: 'tablet'
317
415
  model: '$1'
318
416
 
417
+ # 4Good
418
+ 4Good:
419
+ regex: '4Good[ _]|(?:4Good)?(S450m [43]G|S555m 4G|S501m 3G|T700i_3G|Light A103)'
420
+ device: 'smartphone'
421
+ models:
422
+ - regex: 'T700i_3G'
423
+ model: 'T700i 3G'
424
+ device: 'tablet'
425
+ - regex: '(S(?:450m|555m|501m)[_ ][43]G|Light A103)'
426
+ model: '$1'
427
+ - regex: '4Good[ _]([^;/]+) Build'
428
+ model: '$1'
429
+ - regex: '4Good[ _]([^);/ ]+)'
430
+ model: '$1'
431
+
432
+ # Bravis
433
+ Bravis:
434
+ regex: 'Bravis|A501 Bright|NB(?:10[56]|751|7[145])|NP101'
435
+ device: 'smartphone'
436
+ models:
437
+ - regex: 'A501 Bright'
438
+ model: 'A501 Bright'
439
+ - regex: 'Bravis[_ ]([^;\)]+) Build'
440
+ model: '$1'
441
+ - regex: '(NB(?:10[156]|751|7[145])|NP101)'
442
+ model: '$1'
443
+ device: 'tablet'
444
+
445
+
319
446
  # Acer
320
447
  Acer:
321
- regex: 'acer|a(?:101|110|200|210|211|500|501|510|511|700|701)[);/ ]|Android.*V3[67]0[);/ ]|Android.*Z1[23456]0 Build|Android.*Z500 Build|A1-830|A1-81[01]|A3-A[12][01]|B1-7[1235][01]|B1-810|B1-A71|E39 Build|S5[12]0 Build|DA[0-9]+HQ?L[);/ ]'
448
+ regex: 'acer|(?<!ZTE BLADE )a(?:101|110|200|210|211|500|501|510|511|700|701)[);/ ]|Android.*V3[67]0[);/ ]|Android.*Z1[23456]0 Build|Android.*Z5\d{2} Build|Android.*T0[234678] Build|A1-830|A1-81[01]|A3-A[1234][01]|B1-7[1235678][01]|B1-7[23]3|B1-8[1235]0|B1-A71|B3-A[12]0|B3-A3[02]|E39 Build|S5[12]0 Build|DA[0-9]+HQ?L[);/ ]'
322
449
  device: 'smartphone'
323
450
  models:
324
451
  # smart displays
@@ -342,9 +469,24 @@ Acer:
342
469
  - regex: 'A3-A[12][01]'
343
470
  model: 'Iconia A3'
344
471
  device: 'tablet'
345
- - regex: 'B1-7[1235][01]|B1-810|B1-A71'
472
+ - regex: 'A3-A[34]0'
473
+ model: 'Iconia Tab 10'
474
+ device: 'tablet'
475
+ - regex: 'B1-7[1235][01]|B1-A71'
346
476
  model: 'Iconia B1'
347
477
  device: 'tablet'
478
+ - regex: 'B1-7[23]3'
479
+ model: 'Iconia Talk 7'
480
+ device: 'tablet'
481
+ - regex: 'B1-7[678]0'
482
+ model: 'Iconia One 7'
483
+ device: 'tablet'
484
+ - regex: 'B1-8[1235]0'
485
+ model: 'Iconia One 8'
486
+ device: 'tablet'
487
+ - regex: 'B3-A[12]0|B3-A3[02]'
488
+ model: 'Iconia One 10'
489
+ device: 'tablet'
348
490
 
349
491
  # explicit smartphone models
350
492
  - regex: 'E39 Build'
@@ -361,8 +503,20 @@ Acer:
361
503
  model: 'Liquid Z$1'
362
504
  - regex: 'Android.*Z160 Build'
363
505
  model: 'Liquid Z4'
364
- - regex: 'Android.*Z500 Build'
365
- model: 'Liquid Z500'
506
+ - regex: 'Android.*Z(5\d{2}) Build'
507
+ model: 'Liquid Z$1'
508
+ - regex: 'Android.*T02 Build'
509
+ model: 'Liquid Z530'
510
+ - regex: 'Android.*T03 Build'
511
+ model: 'Liquid Z630'
512
+ - regex: 'Android.*T04 Build'
513
+ model: 'Liquid Z630S'
514
+ - regex: 'Android.*T06 Build'
515
+ model: 'Liquid Zest'
516
+ - regex: 'Android.*T07 Build'
517
+ model: 'Liquid Zest 4G'
518
+ - regex: 'Android.*T08 Build'
519
+ model: 'Liquid Zest Plus'
366
520
  - regex: 'Acer; ?([^;\)]+)'
367
521
  model: '$1'
368
522
  - regex: 'Acer[ _\-]?([^;\)]+) Build'
@@ -381,9 +535,42 @@ Airness:
381
535
 
382
536
  # Alcatel
383
537
  Alcatel:
384
- regex: 'Alcatel|Alc[a-z0-9]+|One[ _]?Touch'
385
- device: 'smartphone'
386
- models:
538
+ regex: 'Alcatel|Alc[a-z0-9]+|One[ _]?Touch|(?:6036Y|6039H|50[16]5X|9005X|I213|5015D|5045D|5051X|6050[AFY]|6055K|8050D|4013M|I216X)[);/ ]'
539
+ device: 'smartphone'
540
+ models:
541
+ - regex: '50[16]5X[);/ ]'
542
+ model: 'One Touch Pop 3'
543
+ - regex: '5015D[);/ ]'
544
+ model: 'One Touch Pop 3 Dual SIM'
545
+ - regex: '5051X[);/ ]'
546
+ model: 'One Touch Pop 4'
547
+ - regex: '6036Y[);/ ]'
548
+ model: 'One Touch Idol 2 mini'
549
+ - regex: '6050[AFY][);/ ]'
550
+ model: 'One Touch Idol 2S'
551
+ - regex: '6039H[);/ ]'
552
+ model: 'One Touch Idol 3'
553
+ - regex: '6055K[);/ ]'
554
+ model: 'One Touch Idol 4'
555
+ - regex: 'I213[);/ ]'
556
+ model: 'One Touch Pixi 7'
557
+ device: 'tablet'
558
+ - regex: '8050D[);/ ]'
559
+ model: 'One Touch Pixi 4'
560
+ - regex: '5045D[);/ ]'
561
+ model: 'One Touch Pixi 4 5"'
562
+ - regex: 'I216X[);/ ]'
563
+ model: 'One Touch Pixi 7'
564
+ device: 'tablet'
565
+ - regex: '9005X[);/ ]'
566
+ model: 'One Touch Pixi 8'
567
+ device: 'tablet'
568
+ - regex: 'P320X'
569
+ model: 'One Touch POP 8'
570
+ device: 'tablet'
571
+ - regex: 'P310X'
572
+ model: 'One Touch POP 7'
573
+ device: 'tablet'
387
574
  - regex: '(?:Alcatel[ _])?One[ _]?Touch[ _]((?:T[0-9]+|TAB[^/;]+|EVO[78](?:HD)?)) Build'
388
575
  device: 'tablet'
389
576
  model: 'One Touch $1'
@@ -401,12 +588,36 @@ Alcatel:
401
588
  model: '$1'
402
589
  - regex: 'Alc([a-z0-9]+)'
403
590
  model: '$1'
591
+ - regex: '4013M'
592
+ model: 'One Touch Pixi 3'
404
593
 
405
594
  # Allview
406
595
  Allview:
407
- regex: 'Allview'
408
- device: 'smartphone'
409
- models:
596
+ regex: 'Allview|P[567]_Lite(?:_TM)?|P5_Energy|P6_Energy_(?:Lite|Mini)|X2_Soul_Xtreme|A5_(?:Easy|Ready|Quad_Plus_TM)|A6_Duo|A[89]_Lite'
597
+ device: 'smartphone'
598
+ models:
599
+ - regex: 'P([567])_Lite(?:_TM)?'
600
+ model: 'P$1 Lite'
601
+ - regex: 'P5_Energy'
602
+ model: 'P5 Energy'
603
+ - regex: 'P6_Energy_Lite'
604
+ model: 'P6 Energy Lite'
605
+ - regex: 'P6_Energy_mini'
606
+ model: 'P6 Energy Mini'
607
+ - regex: 'X2_Soul_Xtreme'
608
+ model: 'X2 Soul Xtreme'
609
+ - regex: 'A5_Easy'
610
+ model: 'A5 Easy'
611
+ - regex: 'A5_Ready'
612
+ model: 'A5 Ready'
613
+ - regex: 'A5_Quad_Plus_TM'
614
+ model: 'A5 Quad Plus'
615
+ - regex: 'A6_Duo'
616
+ model: 'A6 Duo'
617
+ - regex: 'A8_Lite'
618
+ model: 'A8 Lite'
619
+ - regex: 'A9_Lite'
620
+ model: 'A9 Lite'
410
621
  - regex: 'Allview[ _-]([^;/]+) Build'
411
622
  model: '$1'
412
623
  - regex: 'Allview[ _-]([^;/]+)[;/)]'
@@ -557,7 +768,7 @@ Garmin-Asus:
557
768
 
558
769
  # Asus
559
770
  Asus:
560
- regex: 'Asus|Transformer|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|Z00D)[);/ ]'
771
+ regex: 'Asus|Transformer|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|Z00D|Z00YD)[);/ ]'
561
772
  device: 'smartphone'
562
773
  models:
563
774
  # explicit tablet models
@@ -576,7 +787,7 @@ Asus:
576
787
  - regex: 'ME301T[);/ ]'
577
788
  model: 'MeMO Pad Smart 10'
578
789
  device: 'tablet'
579
- - regex: 'K01[3A][);/ ]'
790
+ - regex: '(?:K01[3A]|K007|K00R)[);/ ]'
580
791
  model: 'MeMO Pad 7'
581
792
  device: 'tablet'
582
793
  - regex: 'K01E[);/ ]'
@@ -633,13 +844,16 @@ Asus:
633
844
  model: 'Fonepad 8'
634
845
  device: 'phablet'
635
846
 
636
-
637
847
  # explicit smartphone models
638
848
  - regex: '(?:ASUS_)?Z007'
639
849
  model: 'ZenFone C'
640
850
  - regex: '(?:ASUS_)?(?:Z00D|Z008D|Z00AD[AB]?)'
641
851
  model: 'ZenFone 2'
642
- - regex: '(?:ASUS_)?T00[IQ]'
852
+ - regex: '(?:ASUS_)(Z00YD)'
853
+ model: '$1'
854
+ - regex: '(?:ASUS_)?Z00[ERL]D'
855
+ model: 'ZenFone 2 Laser'
856
+ - regex: '(?:ASUS_)?T00[IQ1]'
643
857
  model: 'ZenFone 4'
644
858
  - regex: '(?:ASUS_)?T00[JF]'
645
859
  model: 'ZenFone 5'
@@ -649,6 +863,20 @@ Asus:
649
863
  model: 'ZenFone 5 Lite'
650
864
  - regex: '(?:ASUS_)?(?:T00G|Z002)'
651
865
  model: 'ZenFone 6'
866
+ - regex: '(?:ASUS_)?Z010D'
867
+ model: 'ZenFone Max'
868
+ - regex: '(?:ASUS_)?X014D'
869
+ model: 'ZenFone Go Plus'
870
+ - regex: '(?:ASUS_)?(Z00[SV]D|X009[DB][DA])'
871
+ model: 'ZenFone Go'
872
+ - regex: '(?:ASUS_)?X013D'
873
+ model: 'ZenFone Go Life'
874
+ - regex: '(?:ASUS_)?(X008)'
875
+ model: 'ZenFone 3 Pegasus'
876
+ - regex: '(?:ASUS_)?Z00UD'
877
+ model: 'ZenFone Selfie'
878
+ - regex: '(?:ASUS_)?(Z017DA|ZE520KL)'
879
+ model: 'ZenFone 3'
652
880
 
653
881
  # general detections
654
882
  - regex: 'Asus(?:-|;)?([a-z0-9]+)'
@@ -686,6 +914,16 @@ Avvio:
686
914
  - regex: 'Avvio[ _]([a-z0-9\-]+)'
687
915
  model: '$1'
688
916
 
917
+ # Azumi Mobile
918
+ "Azumi Mobile":
919
+ regex: 'Azumi[_ ]'
920
+ device: 'smartphone'
921
+ models:
922
+ - regex: 'Azumi[_ ]([^/;]+) Build'
923
+ model: '$1'
924
+ - regex: 'Azumi[_ ]([a-z0-9_]+)'
925
+ model: '$1'
926
+
689
927
  #Barnes & Noble
690
928
  'Barnes & Noble':
691
929
  regex: 'Nook|BN[TR]V[0-9]+'
@@ -698,11 +936,39 @@ Avvio:
698
936
  - regex: '(BN[TR]V[0-9]+)'
699
937
  model: 'Nook $1'
700
938
 
939
+ # BGH
940
+ BGH:
941
+ regex: '(?<!Positivo )BGH ([^/;]+) Build'
942
+ device: 'smartphone'
943
+ model: '$1'
944
+
945
+ # Bitel
946
+ Bitel:
947
+ regex: 'Bitel[ _-]([^/;]+) Build'
948
+ device: 'smartphone'
949
+ model: '$1'
950
+
701
951
  # Blu
702
952
  Blu:
703
- regex: 'blu ([^/;]+) Build'
953
+ regex: '(?:blu|Dash)[ _]([^/;]+) Build'
704
954
  device: 'smartphone'
705
- model: '$1'
955
+ models:
956
+ - regex: 'DASH[ _]([^/;]+) Build'
957
+ model: 'Dash $1'
958
+ - regex: 'blu[ _]([^/;]+) Build'
959
+ model: '$1'
960
+
961
+ # Blackview
962
+ Blackview:
963
+ regex: '(BV[2567]000(?:[ _](?:PRO))?|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550)[ _]Build'
964
+ device: 'smartphone'
965
+ models:
966
+ - regex: '(BV[2567]000(?:[ _](?:PRO))?)[ _]Build'
967
+ model: '$1'
968
+ - regex: 'omega[ _]pro'
969
+ model: 'Omega Pro'
970
+ - regex: '(Alife[ _][PS]1|DM550|Heatwave)'
971
+ model: '$1'
706
972
 
707
973
  # Boway
708
974
  Boway:
@@ -785,11 +1051,35 @@ BenQ:
785
1051
  device: 'feature phone'
786
1052
  model: '$1'
787
1053
 
1054
+ # Blaupunkt
1055
+ Blaupunkt:
1056
+ regex: 'Atlantis[_ ](?:1001A|1010A|A10\.G402)|Discovery[_ ](?:111C|1000C|1001A?)|Endeavour[_ ](?:785|101[GLM]|1000|1001|101[03]|1100)|Polaris[_ ]803'
1057
+ device: 'tablet'
1058
+ models:
1059
+ - regex: 'Discovery[_ ]111C'
1060
+ model: 'Discovery 111C'
1061
+ - regex: 'Discovery[_ ]1000C'
1062
+ model: 'Discovery 1000C'
1063
+ - regex: 'Discovery[_ ]1001A'
1064
+ model: 'Discovery 1001A'
1065
+ - regex: 'Discovery[_ ]1001'
1066
+ model: 'Discovery 1001'
1067
+ - regex: 'Endeavour[_ ](101[GLM]|785|100[01]|101[03]|1100)'
1068
+ model: 'Endeavour $1'
1069
+ - regex: 'Polaris[_ ](803)'
1070
+ model: 'Polaris $1'
1071
+ - regex: 'Atlantis[_ ](1001A|1010A|A10\.G402)'
1072
+ model: 'Atlantis $1'
1073
+
788
1074
  # Bmobile
789
1075
  Bmobile:
790
- regex: 'Bmobile_([a-z0-9]+)'
1076
+ regex: 'Bmobile[_ ]'
791
1077
  device: 'smartphone'
792
- model: '$1'
1078
+ models:
1079
+ - regex: 'Bmobile[_ ]([^/;]+) Build'
1080
+ model: '$1'
1081
+ - regex: 'Bmobile[_ ]([a-z0-9]+)'
1082
+ model: '$1'
793
1083
 
794
1084
  # bq
795
1085
  bq:
@@ -843,9 +1133,12 @@ Casio:
843
1133
 
844
1134
  # Cat
845
1135
  Cat:
846
- regex: 'Cat ?(tablet|stargate|nova)'
1136
+ regex: 'Cat ?(tablet|stargate|nova)|B15Q'
847
1137
  device: 'tablet'
848
1138
  models:
1139
+ - regex: 'B15Q'
1140
+ model: 'B15Q'
1141
+ device: 'smartphone'
849
1142
  - regex: 'Cat ?(?:tablet)? ?((?:Galactica|Nova|StarGate|PHOENIX)[^/;]*) Build'
850
1143
  model: '$1'
851
1144
  - regex: 'Cat ?tablet'
@@ -900,6 +1193,12 @@ Changhong:
900
1193
  model: '$1'
901
1194
  device: 'tablet'
902
1195
 
1196
+ # China Mobile
1197
+ 'China Mobile':
1198
+ regex: '(M812C|1501_M02|9930i|A1303|A309W) Build'
1199
+ device: 'smartphone'
1200
+ model: '$1'
1201
+
903
1202
  # Compal
904
1203
  Compal:
905
1204
  regex: 'Compal-[a-z0-9]+'
@@ -920,15 +1219,88 @@ ConCorde:
920
1219
  - regex: 'ConCorde ([^/;]+) Build'
921
1220
  model: '$1'
922
1221
 
1222
+ # Condor
1223
+ Condor:
1224
+ regex: '(?:PGN\-?[456][012][0-9]|PHS\-601)[;/) ]|CTAB[^/;]+ Build'
1225
+ device: 'smartphone'
1226
+ models:
1227
+ - regex: 'CTAB([^/;]+) Build'
1228
+ device: 'tablet'
1229
+ model: 'CTAB $1'
1230
+
1231
+ - regex: 'PHS\-601'
1232
+ model: 'C8'
1233
+ - regex: 'PGN\-?403'
1234
+ model: 'C4+ Noir'
1235
+ - regex: 'PGN\-?404'
1236
+ model: 'C7 Mini'
1237
+ - regex: 'PGN\-?409'
1238
+ model: 'Plume P4'
1239
+ - regex: 'PGN\-?504'
1240
+ model: 'C5'
1241
+ - regex: 'PGN\-?505'
1242
+ model: 'C8S'
1243
+ - regex: 'PGN\-?506'
1244
+ model: 'C7'
1245
+ - regex: 'PGN\-?507'
1246
+ model: 'Allure A9'
1247
+ - regex: 'PGN\-?508'
1248
+ model: 'C6+'
1249
+ - regex: 'PGN\-?509'
1250
+ model: 'C6 Pro'
1251
+ - regex: 'PGN\-?511'
1252
+ model: 'Allure A9 Plus'
1253
+ - regex: 'PGN\-?513'
1254
+ model: 'Griffe G4'
1255
+ - regex: 'PGN\-?514'
1256
+ model: 'Plume P7'
1257
+ - regex: 'PGN\-?515'
1258
+ model: 'Plume P4 Pro'
1259
+ - regex: 'PGN\-?516'
1260
+ model: 'Plume P5'
1261
+ - regex: 'PGN\-?51[78]'
1262
+ model: 'Plume P6'
1263
+ - regex: 'PGN\-?521'
1264
+ model: 'Griffe G4 Plus'
1265
+ - regex: 'PGN\-?522'
1266
+ model: 'P6 Plus'
1267
+ - regex: 'PGN\-?523'
1268
+ model: 'P7 Plus'
1269
+ - regex: 'PGN\-?527'
1270
+ model: 'Plume P4 Plus'
1271
+ - regex: 'PGN\-?528'
1272
+ model: 'Plume P6 Pro Lte'
1273
+ - regex: 'PGN\-?605'
1274
+ model: 'Plume P8'
1275
+ - regex: 'PGN\-?606'
1276
+ model: 'Allure A55'
1277
+ - regex: 'PGN\-?607'
1278
+ model: 'Allure A100'
1279
+ - regex: 'PGN\-?608'
1280
+ model: 'Allure A55 Slim'
1281
+ - regex: 'PGN\-?609'
1282
+ model: 'Allure A100 Lite'
1283
+ - regex: 'PGN\-?610'
1284
+ model: 'Plume P8 Lite'
1285
+ - regex: 'PGN\-?611'
1286
+ model: 'Allure A8'
1287
+ - regex: 'PGN\-?612'
1288
+ model: 'Allure A8 Plus'
1289
+ - regex: 'PGN\-?613'
1290
+ model: 'Allure A55 Plus'
1291
+
1292
+ - regex: 'PGN\-?([0-9]{3})'
1293
+ model: 'PGN-$1'
1294
+
923
1295
  # Coolpad
924
1296
  Coolpad:
925
- regex: '(?:YL-)?Coolpad|8190Q[ ;/\)]|8295 Build'
1297
+ regex: '(?:YL-)?Coolpad|8190Q[ ;/\)]|(8295|5860S) Build'
926
1298
  device: 'smartphone'
927
1299
  models:
928
1300
  - regex: '8190Q[ ;/\)]'
929
1301
  model: '8190Q'
930
- - regex: '8295 Build'
931
- model: '8295'
1302
+ - regex: '(5860S|8295) Build'
1303
+ model: '$1'
932
1304
  - regex: '(?:YL-)?Coolpad[ _\-]?([^/;]+) Build'
933
1305
  model: '$1'
934
1306
  - regex: '(?:YL-)?Coolpad[ _\-]?([a-z0-9\-]+)'
@@ -948,15 +1320,21 @@ Cricket:
948
1320
 
949
1321
  # Crosscall
950
1322
  Crosscall:
951
- regex: 'Crosscall'
1323
+ regex: 'Crosscall|ODYSSEY_Plus|Odyssey S1|Trekker-[MSX][123]'
952
1324
  device: 'smartphone'
953
1325
  models:
954
1326
  - regex: 'Crosscall ([^;/]+) Build'
955
1327
  model: '$1'
1328
+ - regex: 'ODYSSEY_Plus'
1329
+ model: 'ODYSSEY+'
1330
+ - regex: 'Odyssey S1'
1331
+ model: 'ODYSSEY S1'
1332
+ - regex: 'Trekker-([MSX][123](?: Core)?)'
1333
+ model: 'Trekker-$1'
956
1334
 
957
1335
  # Cube
958
1336
  Cube:
959
- regex: 'Cube|(U[0-9]+GT|K8GT)'
1337
+ regex: '(<!myPhone ?)Cube|(U[0-9]+GT|K8GT)'
960
1338
  device: 'tablet'
961
1339
  models:
962
1340
  - regex: 'U27GT'
@@ -983,6 +1361,16 @@ CUBOT:
983
1361
  - regex: '([^;/]+) Build/CUBOT'
984
1362
  model: '$1'
985
1363
 
1364
+ # Cyrus
1365
+ Cyrus:
1366
+ regex: 'Cyrus[ _-]'
1367
+ device: 'smartphone'
1368
+ models:
1369
+ - regex: 'Cyrus[ _-]?([^;/)]+) Build'
1370
+ model: '$1'
1371
+ - regex: 'Cyrus[ _-]?([^;/)]+)[);/ ]'
1372
+ model: '$1'
1373
+
986
1374
  # Datang
987
1375
  Datang:
988
1376
  regex: 'DATANG'
@@ -1007,7 +1395,7 @@ Denver:
1007
1395
 
1008
1396
  # Dell
1009
1397
  Dell:
1010
- regex: 'Dell|Venue|XCD35'
1398
+ regex: 'Dell[^a-z]|Venue|XCD35'
1011
1399
  device: 'smartphone'
1012
1400
  models:
1013
1401
  - regex: 'XCD35'
@@ -1033,6 +1421,28 @@ Desay:
1033
1421
  - regex: 'Desay[ _-]?([^;/)]+)[);/ ]'
1034
1422
  model: '$1'
1035
1423
 
1424
+ # DEXP
1425
+ DEXP:
1426
+ regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/]+) Build|H135[ _]Build'
1427
+ device: 'smartphone'
1428
+ models:
1429
+
1430
+ - regex: 'Ixion[_ ]([^;/]+) Build'
1431
+ model: 'Ixion $1'
1432
+
1433
+ - regex: 'Ursus ([^;/]+) Build'
1434
+ model: 'Ursus $1'
1435
+ device: 'tablet'
1436
+
1437
+ - regex: 'H135[ _]Build'
1438
+ model: 'Atlas'
1439
+ device: 'desktop'
1440
+
1441
+ - regex: 'DEXP[ _]([^;/]+) Build'
1442
+ model: '$1'
1443
+ - regex: 'DEXP[ _]([^);/]+)[);/ ]'
1444
+ model: '$1'
1445
+
1036
1446
  # Dbtel
1037
1447
  Dbtel:
1038
1448
  regex: 'DBTEL(?:[\-/])?([a-z0-9]+)'
@@ -1045,6 +1455,72 @@ Dicam:
1045
1455
  device: 'feature phone'
1046
1456
  model: '$1'
1047
1457
 
1458
+ # Digma
1459
+ Digma:
1460
+ regex: 'Digma[_ ]([^;/]+) Build|HIT HT707[10]MG|CITI 1902 3G|(CITI (?:[A-Z0-9]+) 3G) C[ST]500[67]PG|iDrQ10 3G|iDxD8 3G|iDnD7|HIT 4G HT7074ML|IDX5|(iDx10|iDx7)|MVM900H(?:WZ|C)|MVM908HCZ|iDxD10 3G|(iDxD[45]|iDxQ5)|iDxD7[_ ]3G|PS604M|PT452E|Linx A400 3G LT4001PG|Linx C500 3G LT5001PG|Linx PS474S|NS6902QL|NS9797MG|((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)'
1461
+ device: 'smartphone'
1462
+ models:
1463
+ - regex: 'HIT HT707[10]MG'
1464
+ model: 'HIT 3G'
1465
+ device: 'tablet'
1466
+ - regex: 'iDx5'
1467
+ model: 'iDx5'
1468
+ - regex: 'iDxD10 3G'
1469
+ model: 'iDxD10 3G'
1470
+ device: 'tablet'
1471
+ - regex: '(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)'
1472
+ model: '$1'
1473
+ - regex: 'PS604M'
1474
+ model: 'Linx 6.0'
1475
+ - regex: '(Linx A400 3G) LT4001PG'
1476
+ model: '$1'
1477
+ - regex: '(Linx C500 3G) LT5001PG'
1478
+ model: '$1'
1479
+ - regex: '(Linx PS474S)'
1480
+ model: '$1'
1481
+ - regex: 'PT452E'
1482
+ model: 'Linx 4.5'
1483
+ - regex: 'MVM900H(?:WZ|C)'
1484
+ model: 'iDx8'
1485
+ device: 'tablet'
1486
+ - regex: 'MVM908HCZ'
1487
+ model: 'iDx9'
1488
+ device: 'tablet'
1489
+ - regex: '(iDxD7[_ ]3G)'
1490
+ model: '$1'
1491
+ device: 'tablet'
1492
+ - regex: '(iDx10|iDx7)'
1493
+ model: '$1'
1494
+ - regex: '(iDxD[45]|iDxQ5)'
1495
+ model: '$1'
1496
+ - regex: 'HIT 4G HT7074ML'
1497
+ model: 'HIT 4G'
1498
+ device: 'tablet'
1499
+ - regex: '(CITI 1902 3G)'
1500
+ model: '$1'
1501
+ device: 'tablet'
1502
+ - regex: '(CITI (?:[A-Z0-9]+) 3G) C[ST]500[67]PG'
1503
+ model: '$1'
1504
+ device: 'tablet'
1505
+ - regex: 'iDxD8 3G'
1506
+ model: 'D-Plane2 8'
1507
+ device: 'tablet'
1508
+ - regex: '(iDrQ10 3G|iDnD7)'
1509
+ model: '$1'
1510
+ device: 'tablet'
1511
+ - regex: 'NS6902QL'
1512
+ model: 'Platina 7.2 4G'
1513
+ device: 'tablet'
1514
+ - regex: 'NS9797MG'
1515
+ model: 'Platina 7.2 3G'
1516
+ device: 'tablet'
1517
+ - regex: '((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)'
1518
+ model: '$1'
1519
+ device: 'tablet'
1520
+ - regex: 'Digma[_ ]([^;/]+) Build'
1521
+ model: '$1'
1522
+ device: 'tablet'
1523
+
1048
1524
  # DoCoMo
1049
1525
  DoCoMo:
1050
1526
  regex: 'DoCoMo|\;FOMA|KGT/1\.0'
@@ -1059,10 +1535,10 @@ DoCoMo:
1059
1535
 
1060
1536
  # Doogee
1061
1537
  Doogee:
1062
- regex: 'DOOGEE[ _-]|((?:BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS))[ -](DG[0-9]+C?)[);/ ]'
1538
+ regex: 'DOOGEE[ _-]|((?:BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?))[ -_](DG[0-9]+C?)[);/ ]'
1063
1539
  device: 'smartphone'
1064
1540
  models:
1065
- - regex: '(?:DOOGEE[ _-])?((?:BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS))[ -](DG[0-9]+C?)[);/ ]'
1541
+ - regex: '(?:DOOGEE[ _-])?((?:BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?))[ -_](DG[0-9]+C?)[);/ ]'
1066
1542
  model: '$1 $2'
1067
1543
  - regex: 'DOOGEE[ _-]([^);/]+) Build'
1068
1544
  model: '$1'
@@ -1085,6 +1561,16 @@ Dopod:
1085
1561
  device: 'feature phone'
1086
1562
  model: '$1'
1087
1563
 
1564
+ # Doro
1565
+ Doro:
1566
+ regex: 'Doro'
1567
+ device: 'smartphone'
1568
+ models:
1569
+ - regex: 'Doro[ _-]?([^;/)]+) Build'
1570
+ model: '$1'
1571
+ - regex: 'Doro[ _-]([0-9a-z]+)'
1572
+ model: '$1'
1573
+
1088
1574
  # Dune HD
1089
1575
  'Dune HD':
1090
1576
  regex: 'DuneHD'
@@ -1156,9 +1642,19 @@ ECS:
1156
1642
 
1157
1643
  # Elephone
1158
1644
  Elephone:
1159
- regex: 'Elephone[ _\-]([^/;]+) Build'
1645
+ regex: 'Elephone[ _\-]([^/;]+) Build|P6000( ?Pro| ?Plus|\+| ?02)? Build'
1160
1646
  device: 'smartphone'
1161
- model: '$1'
1647
+ models:
1648
+ - regex: 'Elephone[ _\-]([^/;]+) Build'
1649
+ model: '$1'
1650
+ - regex: 'P6000 Build'
1651
+ model: 'P6000'
1652
+ - regex: 'P6000(\+| ?Plus) Build'
1653
+ model: 'P6000 Plus'
1654
+ - regex: 'P6000 02 Build'
1655
+ model: 'P6000 02'
1656
+ - regex: 'P6000 ?Pro Build'
1657
+ model: 'P6000 Pro'
1162
1658
 
1163
1659
  # Energy Sistem
1164
1660
  'Energy Sistem':
@@ -1188,9 +1684,15 @@ Rikomagic:
1188
1684
  device: 'tv'
1189
1685
  model: 'MK$1'
1190
1686
 
1687
+ # Senseit
1688
+ Senseit:
1689
+ regex: 'SENSEIT[ _]?([^;/)]+) Build'
1690
+ device: 'smartphone'
1691
+ model: '$1'
1692
+
1191
1693
  # Sony & Sony Ericsson (combined as they are mixed up)
1192
1694
  Sony:
1193
- regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|C1[569]0[45]|C2[01]0[45]|C2305|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5322|D5503|D58[03]3|D65(?:0[23]|43)|D66[05]3|E2303|E58[02]3|E6553|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]*[0-9]*(?: Build|\))|X?L39H|XM50[ht]|W960|portalmmm/2\.0 K|S3[69]h|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[345]D|[234]E|[12]C|[1235]F|[12]G)|R800[aix]|LiveWithWalkman'
1695
+ regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|C1[569]0[45]|C2[01]0[45]|C2305|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5322|D5503|D58[03]3|D65(?:0[23]|43)|D66[035]3|E210[45]|E2115|E5506|E2033|E2[03]03|E23[36]3|E2306|E2312|E2353|E53[03]3|E55[36]3|E56[46305][36]|E58[02]3|E65[35]3|E66[0358]3|E68[358]3|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3423|G823[12]|G8[14]4[12]|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]*[0-9]*(?: Build|\))|X?L39H|XM50[ht]|W960|portalmmm/2\.0 K|S3[69]h|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[345]D|[234]E|[12]C|[1235]F|[12]G)|R800[aix]|LiveWithWalkman'
1194
1696
  device: 'smartphone'
1195
1697
  models:
1196
1698
  # SONY ERICSSON: explicit smartphone models
@@ -1355,6 +1857,10 @@ Sony:
1355
1857
  model: 'Xperia E'
1356
1858
  - regex: '(?:Sony(?:Ericsson)?)?C160[45]'
1357
1859
  model: 'Xperia E Dual'
1860
+ - regex: '(?:Sony(?:Ericsson)?)?(?:E210[45]|E2115)'
1861
+ model: 'Xperia E4'
1862
+ - regex: '(?:Sony(?:Ericsson)?)?E2003'
1863
+ model: 'Xperia E4G'
1358
1864
  - regex: '(?:Sony(?:Ericsson)?)?C190[45]'
1359
1865
  model: 'Xperia M'
1360
1866
  - regex: '(?:Sony(?:Ericsson)?)?C200[45]'
@@ -1384,21 +1890,37 @@ Sony:
1384
1890
  model: 'Xperia E3'
1385
1891
  - regex: '(?:Sony(?:Ericsson)?)?D2212'
1386
1892
  model: 'Xperia E3 Dual'
1893
+ - regex: '(?:Sony(?:Ericsson)?)?E2033'
1894
+ model: 'Xperia E4g Dual'
1387
1895
  - regex: '(?:Sony(?:Ericsson)?)?D2302'
1388
1896
  model: 'Xperia M2 Dual'
1389
1897
  - regex: '(?:Sony(?:Ericsson)?)?D230[356]'
1390
1898
  model: 'Xperia M2'
1391
1899
  - regex: '(?:Sony(?:Ericsson)?)?D240[36]'
1392
1900
  model: 'Xperia M2 Aqua'
1393
- - regex: '(?:Sony(?:Ericsson)?)?E2303'
1901
+ - regex: '(?:Sony(?:Ericsson)?)?(?:E230[36]|E23[35]3)'
1394
1902
  model: 'Xperia M4 Aqua'
1903
+ - regex: '(?:Sony(?:Ericsson)?)?(?:E2312|E2363)'
1904
+ model: 'Xperia M4 Aqua Dual'
1905
+ - regex: '(?:Sony(?:Ericsson)?)?E56[05][36]'
1906
+ model: 'Xperia M5'
1907
+ - regex: '(?:Sony(?:Ericsson)?)?E56[436]3'
1908
+ model: 'Xperia M5 Dual'
1395
1909
  - regex: '(?:Sony(?:Ericsson)?)?D2502'
1396
1910
  model: 'Xperia C3 Dual'
1397
1911
  - regex: '(?:Sony(?:Ericsson)?)?D2533'
1398
1912
  model: 'Xperia C3'
1913
+ - regex: '(?:Sony(?:Ericsson)?)?E5303'
1914
+ model: 'Xperia C4'
1915
+ - regex: '(?:Sony(?:Ericsson)?)?E53[03]3'
1916
+ model: 'Xperia C4 Dual'
1917
+ - regex: '(?:Sony(?:Ericsson)?)?E5506'
1918
+ model: 'Xperia C5 Ultra'
1919
+ - regex: '(?:Sony(?:Ericsson)?)?E55[36]3'
1920
+ model: 'Xperia C5 Ultra Dual'
1399
1921
  - regex: '(?:Sony(?:Ericsson)?)?D510[236]'
1400
1922
  model: 'Xperia T3'
1401
- - regex: '(?:Sony(?:Ericsson)?)?D530[36]|XM50[ht]'
1923
+ - regex: '(?:Sony(?:Ericsson)?)?(?:D530[36]|XM50[ht])'
1402
1924
  model: 'Xperia T2 Ultra'
1403
1925
  device: 'phablet'
1404
1926
  - regex: '(?:Sony(?:Ericsson)?)?D5322'
@@ -1412,16 +1934,64 @@ Sony:
1412
1934
  model: 'Xperia Z2'
1413
1935
  - regex: '(?:Sony(?:Ericsson)?)?(?:D66[05]3|SO-01G)'
1414
1936
  model: 'Xperia Z3'
1415
- - regex: '(?:Sony(?:Ericsson)?)?(?:E6553)'
1937
+ - regex: '(?:Sony(?:Ericsson)?)?(?:D6633)'
1938
+ model: 'Xperia Z3 Dual'
1939
+ - regex: '(?:Sony(?:Ericsson)?)?(?:E65[35]3)'
1416
1940
  model: 'Xperia Z3+'
1417
1941
  - regex: '(?:Sony(?:Ericsson)?)?(?:E58[02]3)'
1418
1942
  model: 'Xperia Z5 Compact'
1943
+ - regex: '(?:Sony(?:Ericsson)?)?E66[05]3'
1944
+ model: 'Xperia Z5'
1945
+ - regex: '(?:Sony(?:Ericsson)?)?E66[38]3'
1946
+ model: 'Xperia Z5 Dual'
1947
+ - regex: '(?:Sony(?:Ericsson)?)?E68[58]3'
1948
+ model: 'Xperia Z5 Premium'
1949
+ - regex: '(?:Sony(?:Ericsson)?)?E6833'
1950
+ model: 'Xperia Z5 Premium Dual'
1951
+ - regex: '(?:Sony(?:Ericsson)?)?F311[135]'
1952
+ model: 'Xperia XA'
1953
+ - regex: '(?:Sony(?:Ericsson)?)?F311[26]'
1954
+ model: 'Xperia XA Dual'
1955
+ - regex: '(?:Sony(?:Ericsson)?)?F321[135]'
1956
+ model: 'Xperia XA Ultra'
1957
+ - regex: '(?:Sony(?:Ericsson)?)?F321[26]'
1958
+ model: 'Xperia XA Ultra Dual'
1959
+ - regex: '(?:Sony(?:Ericsson)?)?F833[12]'
1960
+ model: 'Xperia XZ'
1961
+ - regex: '(?:Sony(?:Ericsson)?)?G8441'
1962
+ model: 'Xperia XZ1 Compact'
1963
+ - regex: '(?:Sony(?:Ericsson)?)?F331[13]'
1964
+ model: 'Xperia E5'
1965
+ - regex: '(?:Sony(?:Ericsson)?)?G312[135]|G311[26]'
1966
+ model: 'Xperia XA1'
1967
+ - regex: '(?:Sony(?:Ericsson)?)?G3412|G3423'
1968
+ model: 'Xperia XA1 Plus'
1969
+ - regex: '(?:Sony(?:Ericsson)?)?G322[136]|G3212'
1970
+ model: 'Xperia XA1 Ultra'
1971
+ - regex: '(?:Sony(?:Ericsson)?)?G823[12]'
1972
+ model: 'Xperia XZs'
1973
+ - regex: '(?:Sony(?:Ericsson)?)?G814[12]'
1974
+ model: 'Xperia XZ Premium'
1975
+ - regex: '(?:Sony(?:Ericsson)?)?G331[13]'
1976
+ model: 'Xperia L1'
1977
+ - regex: '(?:Sony(?:Ericsson)?)?G3312'
1978
+ model: 'Xperia L1 Dual'
1419
1979
  - regex: '(?:Sony(?:Ericsson)?)?SO-04E'
1420
1980
  model: 'Xperia A'
1421
1981
  - regex: '(?:Sony(?:Ericsson)?)?SO-04D'
1422
1982
  model: 'Xperia GX'
1423
1983
  - regex: '(?:Sony(?:Ericsson)?)?SO-05D'
1424
1984
  model: 'Xperia SX'
1985
+ - regex: '(?:Sony(?:Ericsson)?)?F5121'
1986
+ model: 'Xperia X'
1987
+ - regex: '(?:Sony(?:Ericsson)?)?F5122'
1988
+ model: 'Xperia X Dual'
1989
+ - regex: '(?:Sony(?:Ericsson)?)?F5321'
1990
+ model: 'Xperia X Compact'
1991
+ - regex: '(?:Sony(?:Ericsson)?)?F8131'
1992
+ model: 'Xperia X Performance'
1993
+ - regex: '(?:Sony(?:Ericsson)?)?F8132'
1994
+ model: 'Xperia X Performance Dual'
1425
1995
 
1426
1996
  # SONY: explicit tablet models
1427
1997
  - regex: 'SGP(?:311|312|321)[);/ ]|SO-03E'
@@ -1521,6 +2091,57 @@ Evertek:
1521
2091
  - regex: '(Ever(?:Glory|Shine|Miracle|Mellow|Classic|Trendy|Fancy|Vivid|Slim|Glow|Magic|Smart|Star)[^/;]*) Build'
1522
2092
  model: '$1'
1523
2093
 
2094
+ # Evolveo
2095
+ Evolveo:
2096
+ regex: 'EVOLVEO[ _]([^;/]*) Build'
2097
+ device: 'smartphone'
2098
+ models:
2099
+ - regex: 'Smart TV ([^;/]*) Build'
2100
+ device: 'tv'
2101
+ model: 'Smart TV $1'
2102
+ - regex: 'EVOLVEO[ _]([^;/]*) Build'
2103
+ model: '$1'
2104
+
2105
+ # Explay
2106
+ Explay:
2107
+ regex: 'Explay|ActiveD[ _]|Atlant |Informer[ _][0-9]+|CinemaTV 3G|Surfer[ _][0-9\.]|sQuad[ _][0-9\.]|Onliner[1-3]|RioPlay'
2108
+ device: 'tablet'
2109
+ models:
2110
+ - regex: 'ActiveD[ _]7.4[ _]3G'
2111
+ model: 'ActiveD 7.4 3G'
2112
+ - regex: 'ActiveD[ _]8.2[ _]3G'
2113
+ model: 'ActiveD 8.2 3G'
2114
+ - regex: 'CinemaTV[ _]3G'
2115
+ model: 'CinemaTV 3G'
2116
+ - regex: 'Informer[ _]([0-9]+(?:[ _]3G)?)'
2117
+ model: 'Informer $1'
2118
+ - regex: 'Surfer[ _]([0-9\.]+(?:[ _]3G)?)'
2119
+ model: 'Surfer $1'
2120
+ - regex: 'sQuad[ _]([0-9\.]+(?:[ _]3G)?)'
2121
+ model: 'sQuad $1'
2122
+ - regex: 'Onliner([1-3])'
2123
+ model: 'Onliner $1'
2124
+ - regex: 'Atlant[;/) ]'
2125
+ device: 'smartphone'
2126
+ model: 'Atlant'
2127
+ - regex: 'Explay[ _-]([^;/]+) Build'
2128
+ model: '$1'
2129
+ - regex: 'Explay[ _-]([^;/]+)[;/)]'
2130
+ model: '$1'
2131
+ - regex: '(RioPlay)[;/) ]'
2132
+ device: 'smartphone'
2133
+ model: 'Rio Play'
2134
+
2135
+ # EKO
2136
+ EKO:
2137
+ regex: 'EKO'
2138
+ device: 'smartphone'
2139
+ models:
2140
+ - regex: 'EKO[ _-]?([^;/)]+) Build'
2141
+ model: '$1'
2142
+ - regex: 'EKO[ _-]?([^;/)]+)[);/ ]'
2143
+ model: '$1'
2144
+
1524
2145
  # Ezze
1525
2146
  Ezze:
1526
2147
  regex: 'EZZE-|EZ[a-z0-9]+'
@@ -1554,7 +2175,7 @@ Fairphone:
1554
2175
 
1555
2176
  # Fujitsu
1556
2177
  Fujitsu:
1557
- regex: 'F-01F|F-02[EF]|F-05[DE]|F-06E|F-08D|F-09E'
2178
+ regex: 'F-01F|F-02[EF]|F-05[DE]|F-06E|F-08D|F-09E|M532[);/ ]'
1558
2179
  device: 'smartphone'
1559
2180
  models:
1560
2181
  - regex: 'F-01F'
@@ -1578,6 +2199,9 @@ Fujitsu:
1578
2199
  - regex: 'F-05E'
1579
2200
  model: 'Arrows Tab F-05E'
1580
2201
  device: 'tablet'
2202
+ - regex: 'M532[);/ ]'
2203
+ model: 'Stylistic'
2204
+ device: 'tablet'
1581
2205
 
1582
2206
  # Gemini
1583
2207
  Gemini:
@@ -1638,10 +2262,22 @@ Vizio:
1638
2262
 
1639
2263
  # GOCLEVER
1640
2264
  GOCLEVER:
1641
- regex: 'GOCLEVER|QUANTUM|ARIES|INSIGNIA'
2265
+ regex: 'GOCLEVER|QUANTUM|ARIES|INSIGNIA|ORION_|ELIPSO'
1642
2266
  device: 'smartphone'
1643
2267
  models:
1644
- - regex: '((?:QUANTUM|ARIES|INSIGNIA)[ _-]?[^;/]+) Build'
2268
+ - regex: 'QUANTUM_(1010N|1010M|900)'
2269
+ model: 'QUANTUM $1'
2270
+ device: 'tablet'
2271
+ - regex: 'INSIGNIA_785_PRO'
2272
+ model: 'INSIGNIA 785 PRO'
2273
+ device: 'tablet'
2274
+ - regex: '(ORION|ARIES|ELIPSO)[_ ](71|101|102)'
2275
+ model: '$1 $2'
2276
+ device: 'tablet'
2277
+ - regex: 'TQ700N'
2278
+ model: 'QUANTUM 700N'
2279
+ device: 'tablet'
2280
+ - regex: '((?:QUANTUM|ARIES|INSIGNIA|ORION|ELIPSO)[ _-]?[^;/]+) Build'
1645
2281
  model: '$1'
1646
2282
  - regex: 'GOCLEVER[ _-]TAB[ _-]?([^;/]+) Build'
1647
2283
  model: 'TAB $1'
@@ -1659,6 +2295,7 @@ GOCLEVER:
1659
2295
  - regex: 'GOCLEVER[ _-]?([^;/)]+)[;/)]'
1660
2296
  model: '$1'
1661
2297
 
2298
+
1662
2299
  # Goly
1663
2300
  Goly:
1664
2301
  regex: 'Goly[ _-]'
@@ -1671,7 +2308,7 @@ Goly:
1671
2308
 
1672
2309
  # Google
1673
2310
  Google:
1674
- regex: 'Nexus|GoogleTV|Glass|CrKey[^a-z0-9]'
2311
+ regex: 'Nexus|GoogleTV|Glass|CrKey[^a-z0-9]|Pixel Build|Pixel (?:XL|C|2|2 XL) Build'
1675
2312
  device: 'smartphone'
1676
2313
  models:
1677
2314
  - regex: 'Glass'
@@ -1692,6 +2329,17 @@ Google:
1692
2329
  - regex: 'GoogleTV'
1693
2330
  device: 'tv'
1694
2331
  model: 'GoogleTV'
2332
+ - regex: 'Pixel Build'
2333
+ model: 'Pixel'
2334
+ - regex: 'Pixel XL'
2335
+ model: 'Pixel XL'
2336
+ - regex: 'Pixel 2 XL'
2337
+ model: 'Pixel 2 XL'
2338
+ - regex: 'Pixel 2'
2339
+ model: 'Pixel 2'
2340
+ - regex: 'Pixel C'
2341
+ device: 'tablet'
2342
+ model: 'Pixel C'
1695
2343
 
1696
2344
  # Gradiente
1697
2345
  Gradiente:
@@ -1745,7 +2393,7 @@ Hasee:
1745
2393
 
1746
2394
  # Hisense
1747
2395
  Hisense:
1748
- regex: '(?:HS-)?Hisense ([^;/]+) Build|Hisense [^);/]+|HS-(?:U|EG?|I|T|X)[0-9]+[a-z0-9\-]*|E270BSA|M470BS[AE]|E2281'
2396
+ regex: '(?:HS-)?Hisense ([^;/]+) Build|Hisense [^);/]+|HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\-]*|E270BSA|M470BS[AE]|E2281|EG680'
1749
2397
  device: 'smartphone'
1750
2398
  models:
1751
2399
  # explicit tablet models
@@ -1758,8 +2406,10 @@ Hisense:
1758
2406
  - regex: 'E2281'
1759
2407
  device: 'tablet'
1760
2408
  model: 'Sero 8'
2409
+ - regex: 'EG680'
2410
+ model: 'Smartfren Andromax Z'
1761
2411
 
1762
- - regex: '(HS-(?:U|EG?|I|T|X)[0-9]+[a-z0-9\-]*)'
2412
+ - regex: '(HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\-]*)'
1763
2413
  model: '$1'
1764
2414
  - regex: '(?:HS-)?Hisense ([^;/]+) Build'
1765
2415
  model: '$1'
@@ -1772,6 +2422,16 @@ Hi-Level:
1772
2422
  device: 'tablet'
1773
2423
  model: 'HLV-T$1'
1774
2424
 
2425
+ # Homtom
2426
+ Homtom:
2427
+ regex: 'Homtom|(?:HT[0-9]{1,2})(?: ?Pro)? Build'
2428
+ device: 'smartphone'
2429
+ models:
2430
+ - regex: '(HT[0-9]{1,2}(?: ?Pro)?) Build'
2431
+ model: '$1'
2432
+ - regex: 'Homtom ([^;/]+) Build'
2433
+ model: '$1'
2434
+
1775
2435
  # Hosin
1776
2436
  Hosin:
1777
2437
  regex: 'HOSIN[ _-]'
@@ -1784,7 +2444,7 @@ Hosin:
1784
2444
 
1785
2445
  # Huawei
1786
2446
  Huawei:
1787
- regex: '(HW-)?(?:Huawei|Ideos|Honor[ _]|(?:H60-L(?:01|02|03|04|11|12)|H30-(?:C00|L01M?|L02|U10|T00|T10)|G621-TL00M?|PLK-(?:AL10|CL00|TL00|TL01H?|UL00|L01)|SCL-(?:AL00|CL00|TL00H?)|CH(?:E2?|M)-[CUT]L00[HM]?|CHE1-CL[12]0|CHE2-L11|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))[);/ ])'
2447
+ regex: '(HW-)?(?:Huawei|Ideos|Honor[ _]|(?:H60-L(?:01|02|03|04|11|12)|H30-(?:C00|L01M?|L02|U10|T00|T10)|G621-TL00M?|PLK-(?:AL10|CL00|TL00|TL01H?|UL00|L01)|SCL-(?:AL00|CL00|TL00H?|L01)|CH(?:E2?|M)-[CUT]L00[HM]?|CHE1-CL[12]0|CHE2-L11|CHM-U01|KIW-L21|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508)|NEM-L[52][21]|PLE-70[13]L|BLN-(?:L2[124]|AL10)|BND-(?:AL10|L21)|PRA-L[AX]1|PRA-AL00X|RNE-L22)[);/ ])|Bucare Y330-U05'
1788
2448
  device: 'smartphone'
1789
2449
  models:
1790
2450
  - regex: 'U(8230|8661|8667)[);/ ]'
@@ -1817,10 +2477,55 @@ Huawei:
1817
2477
  model: 'Honor 3C'
1818
2478
  - regex: '(?:Honor_|HW-)?SCL-(?:AL00|CL00|TL00H?)(?:_TD)?[);/ ]'
1819
2479
  model: 'Honor 4A'
2480
+ - regex: '(?:Honor_|HW-)?KIW-L21(?:_TD)?[);/ ]'
2481
+ model: 'Honor 5X'
2482
+ - regex: '(?:Honor_|HW-)?CHM-U01(?:_TD)?[);/ ]'
2483
+ model: 'Honor 4C'
1820
2484
  - regex: '(?:Honor_|HW-)?H60-L(?:01|02|03|04|11|12)(?:_TD)?[);/ ]'
1821
2485
  model: 'Honor 6'
2486
+ - regex: '(?:Honor_|HW-)?SCL-L01(?:_TD)?[);/ ]'
2487
+ model: 'Honor Y6'
1822
2488
  - regex: '(?:Honor_|HW-)?PLK-(?:AL10|CL00|TL00|TL01H?|UL00|L01)[);/ ]'
1823
2489
  model: 'Honor 7'
2490
+ - regex: '(?:Honor_|HW-)?NEM-L51[);/ ]'
2491
+ model: 'Honor 5C'
2492
+ - regex: '(?:Honor_|HW-)?NEM-L22[);/ ]'
2493
+ model: 'Honor 5C Dual SIM'
2494
+ - regex: '(?:Honor_|HW-)?NEM-L21[);/ ]'
2495
+ model: 'Honor 7 Lite'
2496
+ - regex: '(?:HONOR[ _]?)?BLN-(?:L2[124]|AL10)'
2497
+ model: 'Honor 6X'
2498
+ - regex: '(?:HONOR[ _]?)?BND-(?:AL10|L21)'
2499
+ model: 'Honor 7X'
2500
+ - regex: 'PRA-AL00X'
2501
+ model: 'Honor 8 Lite'
2502
+ - regex: 'GRA-L09'
2503
+ model: 'P8'
2504
+ - regex: 'ALE-L(02|21|23)'
2505
+ model: 'P8 Lite (2015)'
2506
+ - regex: 'PRA-L[AX]1'
2507
+ model: 'P8 Lite (2017)'
2508
+ - regex: 'RNE-L22'
2509
+ model: 'Nova 2I'
2510
+ - regex: 'EVA-L09'
2511
+ model: 'P9'
2512
+ - regex: 'VTR-L09'
2513
+ model: 'P10'
2514
+ - regex: 'CAM-L21'
2515
+ model: 'Y6II'
2516
+ - regex: 'MHA-L[02]9'
2517
+ model: 'Mate 9'
2518
+ - regex: 'Bucare Y330-U05'
2519
+ model: 'Y330-U05'
2520
+ - regex: 'T1-A21w'
2521
+ device: 'tablet'
2522
+ model: 'Honor Tablet Note'
2523
+ - regex: 'PLE-70[13]L'
2524
+ device: 'tablet'
2525
+ model: 'MediaPad T2 7.0 Pro'
2526
+ - regex: 'T1-A21L'
2527
+ device: 'tablet'
2528
+ model: 'MediaPad T1 10'
1824
2529
  - regex: '(MediaPad[^/;]*) Build'
1825
2530
  device: 'tablet'
1826
2531
  model: '$1'
@@ -1892,6 +2597,82 @@ iBerry:
1892
2597
  - regex: 'AUXUS ([^/;]+) Build'
1893
2598
  model: '$1'
1894
2599
 
2600
+ # IconBIT
2601
+ IconBIT:
2602
+ regex: 'NT-3506M'
2603
+ device: 'smartphone'
2604
+ models:
2605
+ - regex: 'NT-3506M'
2606
+ model: 'NetTAB Mercury Quad FHD'
2607
+
2608
+ # LYF
2609
+ LYF:
2610
+ regex: '(LYF[ _])?LS-[45][0-9]{3}'
2611
+ device: 'smartphone'
2612
+ models:
2613
+ - regex: 'LS-4004'
2614
+ model: 'Flame 2'
2615
+ - regex: 'LS-5501'
2616
+ model: 'Earth 1'
2617
+ - regex: 'LS-5021'
2618
+ model: 'Earth 2'
2619
+ - regex: 'LS-5505'
2620
+ model: 'Water F1'
2621
+ - regex: 'LS-4503'
2622
+ model: 'Flame LS-4503'
2623
+ - regex: 'LS-4001'
2624
+ model: 'Flame 3'
2625
+ - regex: 'LS-4003'
2626
+ model: 'Flame 4'
2627
+ - regex: 'LS-4002'
2628
+ model: 'Flame 5'
2629
+ - regex: 'LS-4005'
2630
+ model: 'Flame 6'
2631
+ - regex: '(LYF[ _])?LS-4006'
2632
+ model: 'Flame 7'
2633
+ - regex: 'LS-4008'
2634
+ model: 'Flame 7S'
2635
+ - regex: 'LS-4505'
2636
+ model: 'Flame 8'
2637
+ - regex: 'LS-5002'
2638
+ model: 'Water 1'
2639
+ - regex: 'LS-5005'
2640
+ model: 'Water 4'
2641
+ - regex: 'LS-5006'
2642
+ model: 'Water 6'
2643
+ - regex: 'LS-5008'
2644
+ model: 'Water 2'
2645
+ - regex: 'LS-5009'
2646
+ model: 'Wind 6'
2647
+ - regex: 'LS-5013'
2648
+ model: 'Wind 5'
2649
+ - regex: 'LS-5014'
2650
+ model: 'Wind 4'
2651
+ - regex: 'LS-5010'
2652
+ model: 'Wind 1'
2653
+ - regex: 'LS-5015'
2654
+ model: 'Water 8'
2655
+ - regex: 'LS-5016'
2656
+ model: 'Wind 7'
2657
+ - regex: 'LS-5504'
2658
+ model: 'Water 7'
2659
+ - regex: 'LS-5017'
2660
+ model: 'Water 11'
2661
+ - regex: 'LS-5018'
2662
+ model: 'Wind 4S'
2663
+ - regex: 'LS-5020'
2664
+ model: 'Water 10'
2665
+ - regex: 'LS-5201'
2666
+ model: 'Water F1S'
2667
+ - regex: 'LS-5502'
2668
+ model: 'Wind 3'
2669
+ - regex: 'LS-5503'
2670
+ model: 'Water 3'
2671
+ - regex: 'LS-5506'
2672
+ model: 'Water 9'
2673
+ - regex: 'LS-6001'
2674
+ model: 'Wind 2'
2675
+
1895
2676
  # iNew
1896
2677
  iNew:
1897
2678
  regex: 'iNew|(?:V7A|V3 Plus|V3-?E|V3C)(?: Build|[;/\)])'
@@ -2014,7 +2795,15 @@ iTel:
2014
2795
  - regex: 'iTel_([a-z0-9\-_]*)'
2015
2796
  model: '$1'
2016
2797
 
2017
- #Jiayu
2798
+ # JAY-Tech
2799
+ JAY-Tech:
2800
+ regex: 'TPC-[A-Z0-9]+'
2801
+ device: 'tablet'
2802
+ models:
2803
+ - regex: 'TPC-([A-Z0-9]+)'
2804
+ model: 'Tablet PC $1'
2805
+
2806
+ # Jiayu
2018
2807
  Jiayu:
2019
2808
  regex: '(JY-[a-z0-9]+)[);/ ]'
2020
2809
  device: 'smartphone'
@@ -2038,6 +2827,28 @@ Kazam:
2038
2827
  - regex: 'Kazam ([^;/]+) Build'
2039
2828
  model: '$1'
2040
2829
 
2830
+ # Kiano
2831
+ Kiano:
2832
+ regex: 'Kiano|Elegance_5_0|CORE 10.1 DUAL 3G|Intelect ?(7|8|10)|Slim ?Tab ?\d+(?:[_ ]3GR?)?[);/ ]|Cavion[_ ]'
2833
+ device: 'smartphone'
2834
+ models:
2835
+ - regex: 'Slim ?Tab ?(\d+)(?:[_ ]3GR?)?'
2836
+ model: 'Slim Tab $1'
2837
+ device: 'tablet'
2838
+ - regex: 'Cavion[_ ](?:Base[_ ])?(\d+)'
2839
+ model: 'Cavion Base $1'
2840
+ device: 'tablet'
2841
+ - regex: 'CORE 10.1 DUAL 3G'
2842
+ model: 'CORE 10.1 DUAL 3G'
2843
+ device: 'tablet'
2844
+ - regex: 'Elegance_5_0'
2845
+ model: 'Elegance 5.0'
2846
+ - regex: '(Kiano)?(Intelect|Elegance) ?(7|8|10)?'
2847
+ model: '$2 $3'
2848
+ device: 'tablet'
2849
+ - regex: 'Kiano[ _]([^;/]+) Build'
2850
+ model: '$1'
2851
+
2041
2852
  # Kingsun
2042
2853
  Kingsun:
2043
2854
  regex: 'Kingsun[ _-]'
@@ -2149,17 +2960,37 @@ Kyocera:
2149
2960
 
2150
2961
  # Lava
2151
2962
  Lava:
2152
- regex: 'iris[ _]?([^/;]+)(?:\)| Build)'
2963
+ regex: 'Lava |iris[ _]?([^/;]+)(?:\)| Build)'
2153
2964
  device: 'smartphone'
2154
2965
  models:
2155
2966
  - regex: 'iris[ _]?([^/;]+)(?:\)| Build)'
2156
2967
  model: 'Iris $1'
2968
+ - regex: 'Lava[ _]?([^/;]+)(?:/| Build)'
2969
+ model: '$1'
2970
+
2971
+ # Landvo
2972
+ Landvo:
2973
+ regex: 'XM[123]00|(?<!Blade )S6 Build'
2974
+ device: 'smartphone'
2975
+ models:
2976
+ - regex: 'S6 Build'
2977
+ model: 'S6'
2978
+ - regex: 'XM([123])00([^/;]*) Build'
2979
+ model: 'XM$100$2'
2157
2980
 
2158
2981
  # lanix
2159
2982
  Lanix:
2160
- regex: 'LANIX-([a-z0-9]+)'
2983
+ regex: 'LANIX-([a-z0-9]+)|ILIUM[ _]([^;/]+) Build'
2161
2984
  device: 'feature phone'
2162
- model: '$1'
2985
+ models:
2986
+ - regex: 'ILIUM[ _]PAD[ _]([^;/]+) Build'
2987
+ model: 'Ilium Pad $1'
2988
+ device: 'tablet'
2989
+ - regex: 'ILIUM[ _]([^;/]+) Build'
2990
+ model: 'Ilium $1'
2991
+ device: 'smartphone'
2992
+ - regex: 'LANIX-([a-z0-9]+)'
2993
+ model: '$1'
2163
2994
 
2164
2995
  # lct
2165
2996
  LCT:
@@ -2181,6 +3012,24 @@ LCT:
2181
3012
  - regex: 'Le ?Pan ?([^;/]+) Build'
2182
3013
  model: '$1'
2183
3014
 
3015
+ # LeEco
3016
+ LeEco:
3017
+ regex: 'LeEco|Le ?X[0-9][^;/]+|Le Max|Le [12]'
3018
+ device: 'smartphone'
3019
+ models:
3020
+ - regex: 'Le ?X([^;/]+) Build'
3021
+ model: 'Le X$1'
3022
+ - regex: 'Le ?X([^ ;/]+)'
3023
+ model: 'Le X$1'
3024
+ - regex: 'Le ?([12][^;/]+) Build'
3025
+ model: 'Le $1'
3026
+ - regex: 'Le Max([^;/]*) Build'
3027
+ model: 'Le Max$1'
3028
+ - regex: 'Le Max([^ ;/]*)'
3029
+ model: 'Le Max$1'
3030
+ - regex: 'LeEco ([^;/]+) Build'
3031
+ model: '$1'
3032
+
2184
3033
  # lenco
2185
3034
  Lenco:
2186
3035
  regex: 'Lenco ([^/;]*) Build'
@@ -2189,10 +3038,47 @@ Lenco:
2189
3038
 
2190
3039
  # lenovo
2191
3040
  Lenovo:
2192
- regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet'
3041
+ regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|YT3-X50L|ZUK[ -_]'
2193
3042
  device: 'smartphone'
2194
3043
  models:
2195
- - regex: 'Lenovo (B[0-9]+[^/;]*) Build'
3044
+ - regex: 'Lenovo ?G780'
3045
+ model: 'G780'
3046
+ device: 'desktop'
3047
+ - regex: 'Lenovo ?A3500-FL'
3048
+ model: 'IdeaTab A7-40'
3049
+ device: 'tablet'
3050
+ - regex: 'Lenovo ?A3500-(H|HV|F)'
3051
+ model: 'IdeaTab A7-50'
3052
+ device: 'tablet'
3053
+ - regex: 'Lenovo ?A5500-[HF]'
3054
+ model: 'IdeaTab A8-50'
3055
+ device: 'tablet'
3056
+ - regex: 'Lenovo ?A7600-[HF]'
3057
+ model: 'IdeaTab A10-70'
3058
+ device: 'tablet'
3059
+ - regex: 'TB2-X30[FL]'
3060
+ model: 'Tab 2 A10-30'
3061
+ device: 'tablet'
3062
+ - regex: 'YT3-X50[FL]'
3063
+ model: 'Yoga Tab 3'
3064
+ device: 'tablet'
3065
+ - regex: 'TB3-710[IF]'
3066
+ model: 'TAB3 7 Essential'
3067
+ device: 'tablet'
3068
+ - regex: 'Lenovo ?B8000(-[FH])?'
3069
+ model: 'Yoga Tablet 10'
3070
+ device: 'tablet'
3071
+ - regex: 'Lenovo ?B6000(-[FH])?'
3072
+ model: 'Yoga Tablet 8'
3073
+ device: 'tablet'
3074
+ - regex: 'YT3-X90(L|F|X)'
3075
+ model: 'Yoga 3 Pro'
3076
+ device: 'tablet'
3077
+ - regex: 'YT3-850[FL]'
3078
+ model: 'Yoga Tab 3 8'
3079
+ device: 'tablet'
3080
+
3081
+ - regex: 'Lenovo ([ASB][0-9]{4})[A-Z]?\-[EHF]'
2196
3082
  model: 'IdeaTab $1'
2197
3083
  device: 'tablet'
2198
3084
  - regex: 'ThinkPadTablet_(A[0-9]{3})_'
@@ -2204,15 +3090,67 @@ Lenovo:
2204
3090
  - regex: 'IdeaPad ?([^;/]*) Build'
2205
3091
  model: 'IdeaPad $1'
2206
3092
  device: 'tablet'
2207
- - regex: 'Lenovo ([^/;]*) Build'
2208
- model: '$1'
3093
+ - regex: 'Lenovo TAB ?([^/;]*) Build'
3094
+ model: 'TAB $1'
3095
+ device: 'tablet'
3096
+ - regex: 'Lenovo ?A3300-(?:GV|H)'
3097
+ model: 'TAB 2 A7-30'
3098
+ device: 'tablet'
3099
+ - regex: 'Tab2A([0-9]-[0-9]{2}[a-z]?)'
3100
+ model: 'TAB 2 A$1'
3101
+ device: 'tablet'
2209
3102
  - regex: 'IdeaTab[ \-_]?([a-z0-9]+)'
2210
3103
  model: 'IdeaTab $1'
2211
3104
  device: 'tablet'
2212
3105
  - regex: 'Yoga Tablet([^;/]+) Build'
2213
3106
  model: 'Yoga Tablet$1'
2214
3107
  device: 'tablet'
2215
- - regex: '(?:LNV-|Lenovo-)?Lenovo[ \-_]([a-z0-9_+\-]+)'
3108
+ - regex: 'Lenovo TB\-X704F Build/NMF26F'
3109
+ model: 'Tab 4 10 Plus'
3110
+ device: 'tablet'
3111
+ - regex: 'Lenovo (TB[0-9]?\-[a-z0-9\-]+) Build'
3112
+ model: '$1'
3113
+ device: 'tablet'
3114
+ - regex: 'ZUK[ -_]([^/;]*) Build'
3115
+ model: 'ZUK $1'
3116
+ - regex: 'Lenovo ([^/;]*) Build'
3117
+ model: '$1'
3118
+ - regex: '(?:LNV-|Lenovo-)?Lenovo[ \-_]?([a-z0-9_+\-]+)'
3119
+ model: '$1'
3120
+
3121
+ # Lexand
3122
+ Lexand:
3123
+ regex: '(?:SC7 PRO HD|S5A[1-4]|S4A[1-5]|S6A1|A811|A802)[);/ ]|Lexand ([^;/]+) Build'
3124
+ device: 'smartphone'
3125
+ models:
3126
+ - regex: 'A(811|802)'
3127
+ device: 'tablet'
3128
+ model: 'A$1'
3129
+
3130
+ - regex: 'S4A1'
3131
+ model: 'Vega'
3132
+ - regex: 'S4A2'
3133
+ model: 'Irida'
3134
+ - regex: 'S4A3'
3135
+ model: 'Pallada'
3136
+ - regex: 'S4A5'
3137
+ model: 'Oxygen'
3138
+ - regex: 'S4A4 NEON'
3139
+ model: 'S4A4 Neon'
3140
+ - regex: 'S5A1'
3141
+ model: 'Callisto'
3142
+ - regex: 'S5A2'
3143
+ model: 'Overon'
3144
+ - regex: 'S5A3'
3145
+ model: 'Capella'
3146
+ - regex: 'S5A4'
3147
+ model: 'Argon'
3148
+ - regex: 'S6A1'
3149
+ model: 'Antares'
3150
+ - regex: 'SC7 PRO HD'
3151
+ model: 'SC7 PRO HD'
3152
+
3153
+ - regex: 'Lexand ([^;/]+) Build'
2216
3154
  model: '$1'
2217
3155
 
2218
3156
  # lexibook
@@ -2271,9 +3209,11 @@ Lexibook:
2271
3209
 
2272
3210
  # lg
2273
3211
  LG:
2274
- regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713)[);/ ]|NetCast'
3212
+ regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713)[);/ ]|NetCast|VS995'
2275
3213
  device: 'smartphone'
2276
3214
  models:
3215
+ - regex: 'LG-D855'
3216
+ model: 'G3'
2277
3217
  - regex: 'P713'
2278
3218
  model: 'Optimus L7II'
2279
3219
  - regex: 'L-01D'
@@ -2283,6 +3223,19 @@ LG:
2283
3223
  - regex: 'L-07C'
2284
3224
  model: 'Optimus Bright L-07C'
2285
3225
 
3226
+ - regex: 'LG-V490'
3227
+ model: 'G Pad 8.0'
3228
+ device: 'tablet'
3229
+ - regex: 'LG-V500'
3230
+ model: 'G Pad 8.3'
3231
+ device: 'tablet'
3232
+ - regex: 'LG-V700'
3233
+ model: 'G Pad 10.1'
3234
+ device: 'tablet'
3235
+ - regex: 'LG-V935'
3236
+ model: 'G Pad II 10.1'
3237
+ device: 'tablet'
3238
+
2286
3239
  - regex: 'webOS.TV'
2287
3240
  device: 'tv'
2288
3241
  model: 'WebOS TV'
@@ -2306,6 +3259,8 @@ LG:
2306
3259
  model: '$1'
2307
3260
  - regex: '(VX[0-9]+)'
2308
3261
  model: '$1'
3262
+ - regex: 'VS995'
3263
+ model: 'V20'
2309
3264
 
2310
3265
  # Lingwin
2311
3266
  Lingwin:
@@ -2319,15 +3274,25 @@ Lingwin:
2319
3274
 
2320
3275
  # Logicom
2321
3276
  Logicom:
2322
- regex: '(TAB950|TAB1062|E731|E812|E912|E1031)[);/ ]'
3277
+ regex: '(TAB950|TAB1062|E731|E812|E912|E1031|POWER BOT|(?:B|C|M|ID|VR) ?BOT ?(?:TAB )?([0-9]+\+?)(?:PLUS)?|KT712A_4\.4|L-?IXIR[0-9]*|L-ITE|L-?EMENT)[_);/ ]'
2323
3278
  device: 'tablet'
2324
- model: '$1'
2325
-
2326
- # microsoft
2327
- Microsoft:
2328
- regex: 'KIN\.(One|Two)'
2329
- device: 'feature phone'
2330
- model: 'Kin $1'
3279
+ models:
3280
+ - regex: 'KT712A_4.4'
3281
+ model: 'L-ixir Tab 701'
3282
+ - regex: 'LIXIR1041'
3283
+ model: 'L-ixir Tab 1041'
3284
+ - regex: 'L-?IXIR TAB ([^;/]+) Build'
3285
+ model: 'L-ixir Tab $1'
3286
+ - regex: 'L-ITE[ _]([^;/]+) Build'
3287
+ model: 'L-ite Tab $1'
3288
+ - regex: 'L-?EMENT[ _](?:TAB)?([^;/]+) Build'
3289
+ model: 'L-ement Tab $1'
3290
+ - regex: '(TAB950|TAB1062|E731|E812|E912|E1031)[);/ ]'
3291
+ model: '$1'
3292
+ - regex: 'POWER BOT'
3293
+ model: 'POWER BOT'
3294
+ - regex: '((?:B|C|M|ID|VR)) ?BOT ?((?:TAB )?([0-9]+\+?)(?:PLUS)?)'
3295
+ model: '$1 BOT $2'
2331
3296
 
2332
3297
  # Konka
2333
3298
  Konka:
@@ -2348,6 +3313,22 @@ Konka:
2348
3313
  device: 'feature phone'
2349
3314
  model: '$1'
2350
3315
 
3316
+ # Konrow
3317
+ Konrow:
3318
+ regex: '(?:BIGCOOL|COOLFIVE|COOL-K|Just5|Link5)[);/ ]'
3319
+ device: 'smartphone'
3320
+ models:
3321
+ - regex: 'BIGCOOL[);/ ]'
3322
+ model: 'BigCool'
3323
+ - regex: 'COOL-K[);/ ]'
3324
+ model: 'Cool-K'
3325
+ - regex: 'COOLFIVE[);/ ]'
3326
+ model: 'Cool Five'
3327
+ - regex: 'Just5[);/ ]'
3328
+ model: 'Just 5'
3329
+ - regex: 'Link5[);/ ]'
3330
+ model: 'Link 5'
3331
+
2351
3332
  # Karbonn
2352
3333
  Karbonn:
2353
3334
  regex: '(?:Browser-)?Karbonn'
@@ -2422,7 +3403,7 @@ Majestic:
2422
3403
 
2423
3404
  # Manta Multimedia
2424
3405
  Manta Multimedia:
2425
- regex: '(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|1001|1002|1003|1004(?: 3G)?|1005|7802|9701|9702))[);/ ]'
3406
+ 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))[);/ ]'
2426
3407
  device: 'tablet'
2427
3408
  model: '$1'
2428
3409
 
@@ -2528,12 +3509,17 @@ Mediacom:
2528
3509
 
2529
3510
  # Medion
2530
3511
  Medion:
2531
- regex: 'Medion|(?:MD_)?LIFETAB'
3512
+ regex: 'Medion|(?:MD_)?LIFETAB|X5001[);/ ]|[SPX]10[0-9]{2}X[);/ ]'
2532
3513
  device: 'smartphone'
2533
3514
  models:
2534
3515
  - regex: '(?:MD_)?LIFETAB_([a-z0-9]+)'
2535
3516
  device: 'tablet'
2536
3517
  model: 'Lifetab $1'
3518
+ - regex: 'X5001'
3519
+ model: 'Life X5001'
3520
+ - regex: '([SPX]10[0-9]{2}X)[);/ ]'
3521
+ model: 'Lifetab $1'
3522
+ device: 'tablet'
2537
3523
  - regex: 'Medion(?: Smartphone)? ([^/;]+) Build'
2538
3524
  model: '$1'
2539
3525
 
@@ -2549,17 +3535,19 @@ MEEG:
2549
3535
 
2550
3536
  # Meizu
2551
3537
  Meizu:
2552
- regex: '(M04[05]|M35[1356]|MX[ -]?[234](?: Pro)?|(?:MZ-)?m[12] note|(?:MZ-)?M57[18]C)[);/ ]'
3538
+ regex: 'Meizu|MZ-[a-z]|(M04[05]|M35[1356]|MX[ -]?[2345](?: Pro)?|(?:MZ-)?m[1-6] note|M57[18]C|M3S)[);/ ]'
2553
3539
  device: 'smartphone'
2554
3540
  models:
2555
3541
  - regex: '(?:MZ-)?M571C'
2556
3542
  device: 'phablet'
2557
3543
  model: 'M2 Note'
2558
- - regex: '(?:MZ-)?m(1|2) note[);/ ]'
3544
+ - regex: '(?:MZ-)?m([1-6]) note[);/ ]'
2559
3545
  device: 'phablet'
2560
3546
  model: 'M$1 Note'
2561
3547
  - regex: '(?:MZ-)?M578C'
2562
3548
  model: 'M2'
3549
+ - regex: 'M3S'
3550
+ model: 'M3S'
2563
3551
  - regex: '(M04[05]|MX[ -]?2)[);/ ]'
2564
3552
  model: 'MX2'
2565
3553
  - regex: '(M35[1356]|MX[ -]?3)[);/ ]'
@@ -2568,6 +3556,14 @@ Meizu:
2568
3556
  model: 'MX4 Pro'
2569
3557
  - regex: 'MX[ -]?4[);/ ]'
2570
3558
  model: 'MX4'
3559
+ - regex: 'MX[ -]?5[);/ ]'
3560
+ model: 'MX5'
3561
+ - regex: '(?:MZ-)?Meizu[_ ]([^/;]+) Build'
3562
+ model: '$1'
3563
+ - regex: '(?:MZ-)?Meizu[_ ]([a-z0-9_]+)'
3564
+ model: '$1'
3565
+ - regex: 'MZ-([^/;]+) Build'
3566
+ model: '$1'
2571
3567
 
2572
3568
  # Memup
2573
3569
  Memup:
@@ -2615,6 +3611,16 @@ Mitsubishi:
2615
3611
  - regex: 'portalmmm/[12]\.0 (M[a-z0-9]+)'
2616
3612
  model: '$1'
2617
3613
 
3614
+ # MIXC
3615
+ MIXC:
3616
+ regex: '(M35|M20|G7106|G7108)[ );/]'
3617
+ device: 'smartphone'
3618
+ models:
3619
+ - regex: '(M[0-9]{1,2})[ );/]'
3620
+ model: '$1'
3621
+ - regex: '(G[0-9]{4})[ );/]'
3622
+ model: '$1'
3623
+
2618
3624
  # MSI
2619
3625
  MSI:
2620
3626
  regex: 'Primo ?(?:91|76)|Enjoy 7 Plus'
@@ -2640,10 +3646,27 @@ MLLED:
2640
3646
 
2641
3647
  # Mobistel
2642
3648
  Mobistel:
2643
- regex: '(Cynus [^/;]+) Build'
3649
+ regex: '(Cynus[ _][^/;]+) Build'
2644
3650
  device: 'smartphone'
2645
3651
  model: '$1'
2646
3652
 
3653
+ # Modecom
3654
+ Modecom:
3655
+ regex: 'Modecom|Free(?:Way )?Tab|xino z[\d]+ x[\d]+'
3656
+ device: 'tablet'
3657
+ models:
3658
+ - regex: 'xino Z([\d]+) X([\d]+)'
3659
+ model: 'Xino Z$1 X$2'
3660
+ device: 'smartphone'
3661
+
3662
+ - regex: 'FreeTab[ _\-]?([^/;]+)? Build'
3663
+ model: 'FreeTab $1'
3664
+ - regex: 'FreeTab[ _\-]?((?!Build)[^);/ ]+)?'
3665
+ model: 'FreeTab $1'
3666
+ - regex: 'FreeWay Tab[ _\-]?([^/;]+) Build'
3667
+ model: 'FreeWay Tab $1'
3668
+ - regex: 'FreeWay Tab[ _\-]?((?!Build)[^);/ ]+)'
3669
+ model: 'FreeWay Tab $1'
2647
3670
 
2648
3671
  # Mofut
2649
3672
  Mofut:
@@ -2657,7 +3680,7 @@ Mofut:
2657
3680
 
2658
3681
  # motorola
2659
3682
  Motorola:
2660
- regex: 'MOT|(?<!AN)DROID ?(?:Build|[a-z0-9]+)|portalmmm/2.0 (?:E378i|L6|L7|v3)|XOOM [^;/]*Build|(?:XT|MZ|MB|ME)[0-9]{3,4}[a-z]?(?:\(Defy\))?(?: Build|\))'
3683
+ regex: 'MOT|(?<!AN)DROID ?(?:Build|[a-z0-9]+)|portalmmm/2.0 (?:E378i|L6|L7|v3)|XOOM [^;/]*Build|(?:XT|MZ|MB|ME)[0-9]{3,4}[a-z]?(?:\(Defy\)|-0[1-3])?(?: Build|\))'
2661
3684
  device: 'smartphone'
2662
3685
  models:
2663
3686
  # Explicit feature phone models
@@ -2666,6 +3689,8 @@ Motorola:
2666
3689
  device: 'feature phone'
2667
3690
 
2668
3691
  # Explicit smartphone models
3692
+ - regex: 'Moto G'
3693
+ model: 'Moto G'
2669
3694
  - regex: '(?:MOT-|Motorola-)?XT300'
2670
3695
  model: 'Spice'
2671
3696
  - regex: '(?:MOT-|Motorola-)?XT30[35]'
@@ -2740,6 +3765,8 @@ Motorola:
2740
3765
  model: 'Moto X'
2741
3766
  - regex: '(?:MOT-|Motorola-)?XT1080'
2742
3767
  model: 'Droid Ultra'
3768
+ - regex: '(?:MOT-|Motorola-)?XT1635(?:-0[1-3])?'
3769
+ model: 'Moto Z Play'
2743
3770
 
2744
3771
  - regex: 'Motorola[ _\-]([a-z0-9]+)'
2745
3772
  model: '$1'
@@ -2766,13 +3793,21 @@ Motorola:
2766
3793
 
2767
3794
  # myphone
2768
3795
  MyPhone:
2769
- regex: '(?:MyPhone|MyPad) [^;/]+ Build'
3796
+ regex: '(?:MyPhone|MyPad|MyTab)[ _][^;/]+ Build|Cube_LTE|myTab10II'
2770
3797
  device: 'smartphone'
2771
3798
  models:
2772
- - regex: 'MyPad ([^;/]+) Build'
3799
+ - regex: 'MyPad[ _]([^;/]+) Build'
2773
3800
  model: 'MyPad $1'
2774
3801
  device: 'tablet'
2775
- - regex: 'MyPhone ([^;/]+) Build'
3802
+ - regex: 'MyTab[ _]([^;/]+) Build'
3803
+ model: 'MyTab $1'
3804
+ device: 'tablet'
3805
+ - regex: 'myTab10II'
3806
+ model: 'MyTab 10 II'
3807
+ device: 'tablet'
3808
+ - regex: 'Cube_LTE'
3809
+ model: 'Cube LTE'
3810
+ - regex: 'MyPhone[ _]([^;/]+) Build'
2776
3811
  model: '$1'
2777
3812
 
2778
3813
  # M.T.T.
@@ -2798,6 +3833,16 @@ NEC:
2798
3833
  - regex: '(?:portalmmm|o2imode)/2\.0[ ,](N[a-z0-9]+)'
2799
3834
  model: '$1'
2800
3835
 
3836
+ # Neffos
3837
+ Neffos:
3838
+ regex: 'Neffos'
3839
+ device: 'smartphone'
3840
+ models:
3841
+ - regex: 'Neffos ([^/;]+) Build'
3842
+ model: '$1'
3843
+ - regex: 'Neffos ([^/;]+)/'
3844
+ model: '$1'
3845
+
2801
3846
  # newgen
2802
3847
  Newgen:
2803
3848
  regex: 'NEWGEN\-([a-z0-9]+)'
@@ -2867,6 +3912,16 @@ Noain:
2867
3912
  - regex: 'NOAIN[ _-]([^;/)]+)[;/)]'
2868
3913
  model: '$1'
2869
3914
 
3915
+ # Noblex
3916
+ Noblex:
3917
+ regex: 'Noblex|NBX-'
3918
+ device: 'smartphone'
3919
+ models:
3920
+ - regex: '(?:Noblex|NBX)[ _-]([^;/]+) Build'
3921
+ model: '$1'
3922
+ - regex: '(?:Noblex|NBX)[ _-]([^;/)]+)[;/)]'
3923
+ model: '$1'
3924
+
2870
3925
  # Nomi
2871
3926
  Nomi:
2872
3927
  regex: 'Nomi[ _-]'
@@ -2877,6 +3932,23 @@ Nomi:
2877
3932
  - regex: 'Nomi[ _-]([^;/)]+)[;/)]'
2878
3933
  model: '$1'
2879
3934
 
3935
+ # Nous
3936
+ Nous:
3937
+ regex: 'NS([356]|500[346]|5511) Build'
3938
+ device: 'smartphone'
3939
+ models:
3940
+ - regex: '(NS[0-9]{1,4}) Build'
3941
+ model: '$1'
3942
+
3943
+ # Nvidia
3944
+ Nvidia:
3945
+ regex: '(SHIELD Tablet K1) Build'
3946
+ device: 'tablet'
3947
+ models:
3948
+ - regex: '(SHIELD Tablet K1) Build'
3949
+ model: '$1'
3950
+
3951
+
2880
3952
  # o2
2881
3953
  O2:
2882
3954
  regex: 'Xda|O2[ \-]|COCOON'
@@ -2891,6 +3963,58 @@ O2:
2891
3963
  - regex: 'O2-([a-z0-9]+)'
2892
3964
  model: '$1'
2893
3965
 
3966
+ # Odys
3967
+ Odys:
3968
+ 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]'
3969
+ device: 'tablet'
3970
+ models:
3971
+ - regex: 'XELIOPHONETAB3'
3972
+ model: 'Xelio Phonetab 3'
3973
+ - regex: 'XELIO_NEXT_10_PLUS_3G'
3974
+ model: 'Xelio Next 10 Plus 3G'
3975
+ - regex: 'XELIO_PHONE_TAB7_3G'
3976
+ model: 'Xelio Phonetab 7 3G'
3977
+ - regex: 'XELIO10EXTREME'
3978
+ model: 'Xelio 10 Xtreme'
3979
+ - regex: 'XELIO10_PLUS_3G'
3980
+ model: 'Xelio 10 Plus 3G'
3981
+ - regex: 'ELEMENT10_PLUS_3G'
3982
+ model: 'Element 10 Plus 3G'
3983
+ - regex: 'CONNECT8PLUS'
3984
+ model: 'Connect 8 Plus'
3985
+ - regex: 'CONNECT7PRO'
3986
+ model: 'Connect 7 Pro'
3987
+ - regex: 'MAVEN_?10_PRO_PLUS_3G'
3988
+ model: 'Maven 10 Pro Plus 3G'
3989
+ - regex: 'MAVEN_?10_?PLUS'
3990
+ model: 'Maven 10 Plus'
3991
+ - regex: 'MAVEN_?10_?PRO'
3992
+ model: 'Maven 10 Pro'
3993
+ - regex: 'MAVEN_?10_?HD'
3994
+ model: 'Maven 10 HD'
3995
+ - regex: 'RAPID_?7_?LTE'
3996
+ model: 'Rapid 7 LTE'
3997
+ - regex: 'RAPID_?10_?LTE'
3998
+ model: 'Rapid 10 LTE'
3999
+ - regex: 'TAO_X10'
4000
+ model: 'Tao X10'
4001
+ - regex: 'SPACE10_PLUS_3G'
4002
+ model: 'Space 10 Plus 3G'
4003
+ - regex: 'SPACE10_PRO_3G'
4004
+ model: 'Space 10 Pro 3G'
4005
+ - regex: 'THOR_?10 Build'
4006
+ model: 'Thor 10'
4007
+ - regex: 'THOR_?10_PLUS_3G'
4008
+ model: 'Thor 10 Plus 3G'
4009
+ - regex: 'IEOS[ _]([^/;]+) Build'
4010
+ model: 'Ieos $1'
4011
+ - regex: '(?:ODYS[ _-])?NOON Build'
4012
+ model: 'Noon'
4013
+ - regex: '(?:ODYS[ _-])?NOON_PRO Build'
4014
+ model: 'Noon Pro'
4015
+ - regex: 'Odys[ _-]([^/;]+) Build'
4016
+ model: '$1'
4017
+
2894
4018
  # onda
2895
4019
  Onda:
2896
4020
  regex: 'Onda'
@@ -2906,9 +4030,29 @@ Onda:
2906
4030
  - regex: 'Onda ([a-z0-9]+)'
2907
4031
  model: '$1'
2908
4032
 
4033
+ # OnePlus
4034
+ OnePlus:
4035
+ regex: '(?:du_)?ONEPLUS|(?:A0001|A2001|A2003|A2005|A3003|A3000|A3010|A5000|E1003) Build'
4036
+ device: 'smartphone'
4037
+ models:
4038
+ - regex: 'A0001'
4039
+ model: 'One'
4040
+ - regex: 'A2001|A2003|A2005'
4041
+ model: '2'
4042
+ - regex: 'E1003'
4043
+ model: 'X'
4044
+ - regex: 'A3003|A3000'
4045
+ model: '3'
4046
+ - regex: 'A3010'
4047
+ model: '3T'
4048
+ - regex: 'A5000'
4049
+ model: '5'
4050
+ - regex: '(?:du_)?ONEPLUS ?([^;/]+) Build'
4051
+ model: '$1'
4052
+
2909
4053
  # oppo
2910
4054
  OPPO:
2911
- regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|(?:X90[07][067]|U707T?|X909T?|R(?:10[01]1|2001|201[07]|6007|7005|7007|80[13579]|81[13579]|82[01379]|83[013]|800[067]|8015|810[679]|811[13]|820[057])[KLSTW]?)|N520[79]|N5117[);/ ]'
4055
+ regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|(?:X90[07][0679]|U707T?|X909T?|R(?:10[01]1|2001|201[07]|6007|7005|7007|80[13579]|81[13579]|82[01379]|83[013]|800[067]|8015|810[679]|811[13]|820[057])[KLSTW]?)|N520[79]|N5117|A37f[);/ ]|CPH[0-9]{4}'
2912
4056
  device: 'smartphone'
2913
4057
  models:
2914
4058
  - regex: '(?:OPPO[ _]?)?U707T?[);/ ]'
@@ -2919,6 +4063,8 @@ OPPO:
2919
4063
  model: 'Find 7'
2920
4064
  - regex: '(?:OPPO[ _]?)?X900[067][);/ ]'
2921
4065
  model: 'Find 7a'
4066
+ - regex: '(?:OPPO[ _]?)?X9009[);/ ]'
4067
+ model: 'F1 Plus'
2922
4068
  - regex: '(?:OPPO[ _]?)?R8006[);/ ]'
2923
4069
  model: 'R1L'
2924
4070
  - regex: '(?:OPPO[ _]?)?R800[07][);/ ]'
@@ -2947,6 +4093,32 @@ OPPO:
2947
4093
  model: 'N3'
2948
4094
  - regex: '(?:OPPO[ _]?)?N5117[);/ ]'
2949
4095
  model: 'N1 Mini'
4096
+ - regex: '(?:OPPO[ _]?)?CPH1609[);/ ]'
4097
+ model: 'F3'
4098
+ - regex: '(?:OPPO[ _]?)?CPH1707[);/ ]'
4099
+ model: 'R11'
4100
+ - regex: '(?:OPPO[ _]?)?CPH1715[);/ ]'
4101
+ model: 'A77'
4102
+ - regex: '(?:OPPO[ _]?)?CPH1717[);/ ]'
4103
+ model: 'A71'
4104
+ - regex: '(?:OPPO[ _]?)?CPH1719[);/ ]'
4105
+ model: 'R11s'
4106
+ - regex: '(?:OPPO[ _]?)?CPH1721[);/ ]'
4107
+ model: 'R11s Plus'
4108
+ - regex: '(?:OPPO[ _]?)?CPH172[37][);/ ]'
4109
+ model: 'F5'
4110
+ - regex: '(?:OPPO[ _]?)?CPH1725[);/ ]'
4111
+ model: 'F5 Youth'
4112
+ - regex: '(?:OPPO[ _]?)?CPH1607[);/ ]'
4113
+ model: 'R9s'
4114
+ - regex: '(?:OPPO[ _]?)?CPH1611[);/ ]'
4115
+ model: 'R9s Plus'
4116
+ - regex: '(?:OPPO[ _]?)?CPH1613[);/ ]'
4117
+ model: 'F3 Plus'
4118
+ - regex: '(?:OPPO[ _]?)?CPH1701[);/ ]'
4119
+ model: 'A57'
4120
+ - regex: 'A37f'
4121
+ model: 'A37f'
2950
4122
 
2951
4123
  - regex: 'N1T?[);/ ]'
2952
4124
  model: 'N1T'
@@ -2974,16 +4146,22 @@ Opsson:
2974
4146
 
2975
4147
  # orange
2976
4148
  Orange:
2977
- regex: 'SPV[ \-]?([a-z0-9]+)|Orange ([^/;]+) Build|SC/IHD92'
4149
+ regex: 'SPV[ \-]?([a-z0-9]+)|Orange ([^/;]+) Build|SC/IHD92|FunTab ([^/;]+) Build'
2978
4150
  device: 'smartphone'
2979
4151
  models:
4152
+ - regex: 'SC/IHD92'
4153
+ model: 'Livebox Play'
4154
+ device: 'tv' # set top box
4155
+ - regex: 'Sego'
4156
+ model: 'Sego'
4157
+ device: 'tablet'
4158
+ - regex: 'FunTab ([^/;]+) Build'
4159
+ model: 'FunTab $1'
4160
+ device: 'tablet'
2980
4161
  - regex: 'Orange ([^/;]+) Build'
2981
4162
  model: '$1'
2982
4163
  - regex: 'SPV[ \-]?([a-z0-9]+)'
2983
4164
  model: 'SPV $1'
2984
- - regex: 'SC/IHD92'
2985
- model: 'Livebox Play'
2986
- device: 'tv' # set top box
2987
4165
 
2988
4166
  # Ouki
2989
4167
  Ouki:
@@ -3001,14 +4179,21 @@ Ouki:
3001
4179
 
3002
4180
  # Overmax
3003
4181
  Overmax:
3004
- regex: 'OV-[a-z]+(?:[^;/]*) Build'
4182
+ regex: 'OV-[a-z]+(?:[^;(/]*)[();/ ]|Qualcore 1010'
3005
4183
  device: 'tablet'
3006
4184
  models:
3007
- - regex: 'OV-Vertis-([^;/]+) Build'
3008
- model: 'OV-Vertis-$1'
4185
+ - regex: 'OV-V10'
4186
+ model: 'Vertis Yard'
3009
4187
  device: 'smartphone'
4188
+ - regex: 'OV-Vertis[ _-]([^;/]+) Build'
4189
+ model: 'Vertis $1'
4190
+ device: 'smartphone'
4191
+
4192
+ - regex: 'Qualcore 1010'
4193
+ model: 'Qualcore 1010'
4194
+ device: 'tablet'
3010
4195
 
3011
- - regex: '(OV-[a-z]+(?:[^;/]*)) Build'
4196
+ - regex: '(OV-[a-z]+(?:[^;(/]*))(?<!Build)[();/ ]'
3012
4197
  model: '$1'
3013
4198
 
3014
4199
  # Oysters
@@ -3024,9 +4209,13 @@ Oysters:
3024
4209
 
3025
4210
  # panasonic
3026
4211
  Panasonic:
3027
- regex: 'Panasonic|PANATV[0-9]+|Viera/|P902i[);/ ]'
4212
+ regex: 'Panasonic|PANATV[0-9]+|Viera/|P902i[);/ ]|Eluga[ _]'
3028
4213
  device: 'smartphone'
3029
4214
  models:
4215
+ - regex: 'Eluga[ _-]([^;/]+) Build'
4216
+ model: 'Eluga $1'
4217
+ - regex: 'Eluga[ _-]([^;/]+)[;/)]'
4218
+ model: 'Eluga $1'
3030
4219
  - regex: 'P902i[);/ ]'
3031
4220
  device: 'feature phone'
3032
4221
  model: 'P902i'
@@ -3036,19 +4225,42 @@ Panasonic:
3036
4225
  - regex: 'PANATV[0-9]+|Viera/'
3037
4226
  device: 'tv'
3038
4227
  model: 'Smart TV'
3039
- - regex: 'Panasonic[ \-]?([a-z0-9]+)'
4228
+ - regex: 'Panasonic[ _\-]?([a-z0-9]+)'
3040
4229
  model: '$1'
3041
4230
  - regex: 'portalmmm/2.0 (P[a-z0-9]+)'
3042
4231
  model: '$1'
3043
4232
 
4233
+ # Pentagram
4234
+ Pentagram:
4235
+ regex: 'Pentagram|Quadra|Monster X5'
4236
+ device: 'tablet'
4237
+ models:
4238
+ - regex: '(?:PENTAGRAM[_ ])?EON[_ ]PRIX'
4239
+ model: 'Eon Prix'
4240
+ - regex: 'Quadra 7( UltraSlim)?'
4241
+ model: 'Quadra 7 UltraSlim'
4242
+ - regex: 'Monster X5?'
4243
+ model: 'Monster X5'
4244
+ device: 'smartphone'
4245
+ - regex: 'Quadra ?([^);/]*) Build'
4246
+ model: 'Quadra $1'
4247
+ - regex: 'Pentagram ?TAB ?([^);/]*) Build'
4248
+ model: 'Tab $1'
4249
+ - regex: 'Pentagram ?([^);/]*) Build'
4250
+ model: '$1'
4251
+ device: 'smartphone'
4252
+
3044
4253
  # philips
3045
4254
  Philips:
3046
- regex: 'Philips|AND1E[);/ ]|NETTV/'
4255
+ regex: 'Philips|AND1E[);/ ]|NETTV/|PI3210G'
3047
4256
  device: 'smartphone'
3048
4257
  models:
3049
4258
  - regex: 'AND1E(?: TV)?[);/ ]'
3050
4259
  model: 'Android TV'
3051
4260
  device: 'tv'
4261
+ - regex: '(PI3210G)'
4262
+ model: '$1'
4263
+ device: 'tablet'
3052
4264
  - regex: 'Philips, BDP([0-9]{4})'
3053
4265
  model: 'Blu-ray Player (BDP$1)'
3054
4266
  device: 'tv'
@@ -3057,9 +4269,7 @@ Philips:
3057
4269
  device: 'tv'
3058
4270
  - regex: 'Philips-FISIO ([a-z0-9]+)'
3059
4271
  model: 'Fisio $1'
3060
- - regex: 'Philips[ ]?([a-z0-9]+)'
3061
- model: '$1'
3062
- - regex: 'Philips-([a-z0-9\-@]+)'
4272
+ - regex: 'Philips[ _-]?([a-z0-9\-@]+)'
3063
4273
  model: '$1'
3064
4274
 
3065
4275
  # phoneOne
@@ -3138,6 +4348,12 @@ Pomp:
3138
4348
  - regex: 'POMP[ _-]([^;/)]+)[;/)]'
3139
4349
  model: '$1'
3140
4350
 
4351
+ # PPTV
4352
+ PPTV:
4353
+ regex: '(KING 7S?)'
4354
+ device: 'smartphone'
4355
+ model: '$1'
4356
+
3141
4357
  # ProScan
3142
4358
  ProScan:
3143
4359
  regex: 'PLT([^;/]+) Build'
@@ -3188,7 +4404,7 @@ Siemens:
3188
4404
 
3189
4405
  # Samsung
3190
4406
  Samsung:
3191
- regex: 'SAMSUNG|Maple |SC-(?:02C|04E|01F)|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|vollo Vi86[);/ ]|(?:OTV-)?SMT-E5015|ISW11SC'
4407
+ regex: 'SAMSUNG|Maple |SC-(?:02[CH]|04E|01F)|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|vollo Vi86[);/ ]|(?:OTV-)?SMT-E5015|ISW11SC'
3192
4408
  device: 'smartphone'
3193
4409
  models:
3194
4410
  # explicit tv models
@@ -3305,9 +4521,12 @@ Samsung:
3305
4521
  - regex: '(?:SAMSUNG-)?SM-T315'
3306
4522
  device: 'tablet'
3307
4523
  model: 'GALAXY Tab 3 8.0" LTE'
4524
+ - regex: '(?:SAMSUNG-)?SM-T330'
4525
+ device: 'tablet'
4526
+ model: 'GALAXY Tab 4 8.0" WiFi'
3308
4527
  - regex: '(?:SAMSUNG-)?SM-T335'
3309
4528
  device: 'tablet'
3310
- model: 'GALAXY Tab 8.0" LTE'
4529
+ model: 'GALAXY Tab 4 8.0" LTE'
3311
4530
  - regex: '(?:SAMSUNG-)?SM-T520'
3312
4531
  device: 'tablet'
3313
4532
  model: 'GALAXY TabPRO 10.1" WiFi'
@@ -3338,9 +4557,27 @@ Samsung:
3338
4557
  - regex: '(?:SAMSUNG-)?SM-T805'
3339
4558
  device: 'tablet'
3340
4559
  model: 'GALAXY Tab S 10.5" LTE'
4560
+ - regex: '(?:SAMSUNG-)?SM-T813'
4561
+ device: 'tablet'
4562
+ model: 'GALAXY Tab S2 9.7" WiFi'
4563
+ - regex: '(?:SAMSUNG-)?SM-T815'
4564
+ device: 'tablet'
4565
+ model: 'GALAXY Tab S2 9.7" LTE'
3341
4566
  - regex: '(?:SAMSUNG-)?SM-T900'
3342
4567
  device: 'tablet'
3343
4568
  model: 'GALAXY TabPRO 12.2" WiFi'
4569
+ - regex: '(?:SAMSUNG-)?SM-T550'
4570
+ device: 'tablet'
4571
+ model: 'GALAXY Tab A 9.7" WiFi'
4572
+ - regex: '(?:SAMSUNG-)?SM-T555'
4573
+ device: 'tablet'
4574
+ model: 'GALAXY Tab A 9.7" LTE'
4575
+ - regex: '(?:SAMSUNG-)?SM-T580'
4576
+ device: 'tablet'
4577
+ model: 'GALAXY Tab A 10.1" WiFi (2016)'
4578
+ - regex: '(?:SAMSUNG-)?SM-T560'
4579
+ device: 'tablet'
4580
+ model: 'GALAXY Tab E 9.6"'
3344
4581
 
3345
4582
  # explicit smartphone models
3346
4583
  - regex: '(?:SAMSUNG-)?GT-B5330'
@@ -3399,6 +4636,8 @@ Samsung:
3399
4636
  model: 'GALAXY S II Plus'
3400
4637
  - regex: '(?:SAMSUNG-)?(?:GT-I919[05]|SCH-I435)'
3401
4638
  model: 'GALAXY S4 mini'
4639
+ - regex: '(?:SAMSUNG-)?GT-I9515'
4640
+ model: 'GALAXY S4 Value Edition'
3402
4641
  - regex: '(?:SAMSUNG-)?GT-I9295'
3403
4642
  model: 'GALAXY S4 ACTIVE'
3404
4643
  - regex: '(?:SAMSUNG-)?(?:GT-I9300|SCH-I535|SCH-L710)'
@@ -3441,6 +4680,24 @@ Samsung:
3441
4680
  model: 'GALAXY DUOS 2'
3442
4681
  - regex: '(?:SAMSUNG-)?GT-S7710'
3443
4682
  model: 'GALAXY Xcover 2'
4683
+ - regex: '(?:SAMSUNG-)?GT-S8500'
4684
+ model: 'Wave'
4685
+ - regex: '(?:SAMSUNG-)?GT-S8530'
4686
+ model: 'Wave II'
4687
+ - regex: '(?:SAMSUNG-)?GT-S8600'
4688
+ model: 'Wave 3'
4689
+ - regex: '(?:SAMSUNG-)?GT-S5380'
4690
+ model: 'Wave Y'
4691
+ - regex: '(?:SAMSUNG-)?GT-S7250'
4692
+ model: 'Wave M'
4693
+ - regex: '(?:SAMSUNG-)?GT-S5250'
4694
+ model: 'Wave 525'
4695
+ - regex: '(?:SAMSUNG-)?GT-S5330'
4696
+ model: 'Wave 533'
4697
+ - regex: '(?:SAMSUNG-)?GT-S5780'
4698
+ model: 'Wave 578'
4699
+ - regex: '(?:SAMSUNG-)?GT-S7230'
4700
+ model: 'Wave 723'
3444
4701
  - regex: '(?:SAMSUNG-)?SM-C101'
3445
4702
  model: 'GALAXY S4 zoom'
3446
4703
  - regex: '(?:SAMSUNG-)?SM-C115'
@@ -3451,12 +4708,34 @@ Samsung:
3451
4708
  model: 'GALAXY CORE LTE'
3452
4709
  - regex: '(?:SAMSUNG-)?SM-G3815'
3453
4710
  model: 'GALAXY EXPRESS II'
4711
+ - regex: '(?:SAMSUNG-)?SM-G388F'
4712
+ model: 'GALAXY Xcover 3'
4713
+ - regex: '(?:SAMSUNG-)?SM-G390F'
4714
+ model: 'GALAXY Xcover 4'
3454
4715
  - regex: '(?:SAMSUNG-)?SM-G800'
3455
4716
  model: 'GALAXY S5 mini'
3456
4717
  - regex: '(?:SAMSUNG-)?SM-G9009D'
3457
4718
  model: 'GALAXY S5 Dual-SIM'
3458
4719
  - regex: '(?:SAMSUNG-)?SM-G900|GALAXY-S5'
3459
4720
  model: 'GALAXY S5'
4721
+ - regex: '(?:SAMSUNG-)?SM-G901F'
4722
+ model: 'GALAXY S5 LTE+'
4723
+ - regex: '(?:SAMSUNG-)?SM-G903F'
4724
+ model: 'GALAXY S5 Neo'
4725
+ - regex: '(?:SAMSUNG-)?SM-G920F'
4726
+ model: 'GALAXY S6'
4727
+ - regex: '(?:SAMSUNG-)?SM-G925F'
4728
+ model: 'GALAXY S6 edge'
4729
+ - regex: '(?:SAMSUNG-)?SM-G928F'
4730
+ model: 'GALAXY S6 edge+'
4731
+ - regex: '(?:SAMSUNG-)?SM-G930F'
4732
+ model: 'GALAXY S7'
4733
+ - regex: '(?:SAMSUNG-)?SM-G935F|SC-02H'
4734
+ model: 'GALAXY S7 edge'
4735
+ - regex: '(?:SAMSUNG-)?SM-G950F'
4736
+ model: 'GALAXY S8'
4737
+ - regex: '(?:SAMSUNG-)?SM-G955F'
4738
+ model: 'GALAXY S8+'
3460
4739
  - regex: '(?:SAMSUNG-)?SCH-I200'
3461
4740
  model: 'GALAXY Stellar'
3462
4741
  - regex: '(?:SAMSUNG-)?SCH-I829'
@@ -3467,6 +4746,28 @@ Samsung:
3467
4746
  model: 'GALAXY Centura'
3468
4747
  - regex: 'vollo Vi86[);/ ]'
3469
4748
  model: 'Vollo Vi86'
4749
+ - regex: '(?:SAMSUNG-)?SM-A300FU'
4750
+ model: 'GALAXY A3 (2015)'
4751
+ - regex: '(?:SAMSUNG-)?SM-A310F'
4752
+ model: 'GALAXY A3 (2016)'
4753
+ - regex: '(?:SAMSUNG-)?SM-A320FL'
4754
+ model: 'GALAXY A3 (2017)'
4755
+ - regex: '(?:SAMSUNG-)?SM-A500FU'
4756
+ model: 'GALAXY A5 (2015)'
4757
+ - regex: '(?:SAMSUNG-)?SM-A510F'
4758
+ model: 'GALAXY A5 (2016)'
4759
+ - regex: '(?:SAMSUNG-)?SM-A520F'
4760
+ model: 'GALAXY A5 (2017)'
4761
+ - regex: '(?:SAMSUNG-)?GT-I9301I'
4762
+ model: 'GALAXY S III Neo'
4763
+ - regex: '(?:SAMSUNG-)?SM-J320FN?'
4764
+ model: 'GALAXY J3 (2016)'
4765
+ - regex: '(?:SAMSUNG-)?SM-J500FN'
4766
+ model: 'GALAXY J5 (2015)'
4767
+ - regex: '(?:SAMSUNG-)?SM-J510FN'
4768
+ model: 'GALAXY J5 (2016)'
4769
+ - regex: '(?:SAMSUNG-)?SM-G850F'
4770
+ model: 'GALAXY Alpha'
3470
4771
 
3471
4772
  # explicit phablet models
3472
4773
  - regex: '(?:SAMSUNG-)?GT-I9060'
@@ -3511,12 +4812,24 @@ Samsung:
3511
4812
  - regex: '(?:SAMSUNG-)?SM-N915'
3512
4813
  model: 'GALAXY Note 4 Edge'
3513
4814
  device: 'phablet'
4815
+ - regex: '(?:SAMSUNG-)?SM-N920[0CIST]'
4816
+ model: 'GALAXY Note 5'
4817
+ device: 'phablet'
4818
+ - regex: '(?:SAMSUNG-)?SM-N9208'
4819
+ model: 'GALAXY Note 5 Duos'
4820
+ device: 'phablet'
3514
4821
  - regex: '(?:SAMSUNG-)?GT-I915[028]'
3515
4822
  model: 'GALAXY Mega 5.8'
3516
4823
  device: 'phablet'
3517
4824
  - regex: '(?:SAMSUNG-)?GT-I920[05]'
3518
4825
  model: 'GALAXY Mega 6.3'
3519
4826
  device: 'phablet'
4827
+ - regex: '(?:SAMSUNG-)?SM-N930F'
4828
+ model: 'GALAXY Note 7'
4829
+ device: 'phablet'
4830
+ - regex: '(?:SAMSUNG[- ])?SM-N950'
4831
+ model: 'GALAXY Note 8'
4832
+ device: 'phablet'
3520
4833
 
3521
4834
  # explicit feature phones
3522
4835
  - regex: '(?:SAMSUNG-)?GT-E2152'
@@ -3645,6 +4958,34 @@ Smartfren:
3645
4958
  model: '$1'
3646
4959
  device: 'tablet'
3647
4960
 
4961
+ # Smartisan
4962
+ Smartisan:
4963
+ regex: 'SM(?:70[15]|801|901|919)|OD10[35]|YQ60[1357][ /;\)]'
4964
+ device: 'smartphone'
4965
+ models:
4966
+ - regex: 'SM70[15]'
4967
+ model: 'T1'
4968
+ - regex: 'SM801'
4969
+ model: 'T2'
4970
+ - regex: 'SM901'
4971
+ model: 'M1'
4972
+ - regex: 'SM919'
4973
+ model: 'M1L'
4974
+ - regex: 'YQ60[1357]'
4975
+ model: 'U1'
4976
+ - regex: 'OD10[35]'
4977
+ model: 'Pro'
4978
+
4979
+ # STK
4980
+ STK:
4981
+ regex: 'STK[_ ]'
4982
+ device: 'smartphone'
4983
+ models:
4984
+ - regex: 'STK[_ ]([^/;]+) Build'
4985
+ model: '$1'
4986
+ - regex: 'STK[_ ]([a-z0-9]+)'
4987
+ model: '$1'
4988
+
3648
4989
  # Stonex
3649
4990
  Stonex:
3650
4991
  regex: 'STX[ -]([^;/]+)'
@@ -3661,6 +5002,15 @@ SuperSonic:
3661
5002
  device: 'tablet'
3662
5003
  model: '$1'
3663
5004
 
5005
+ # Supra
5006
+ Supra:
5007
+ regex: 'SUPRA ([^;/]+) Build'
5008
+ device: 'smartphone'
5009
+ models:
5010
+ - regex: 'SUPRA ([^;/]+) Build'
5011
+ device: 'tablet'
5012
+ model: '$1'
5013
+
3664
5014
  # Sumvision
3665
5015
  Sumvision:
3666
5016
  regex: '(Cyclone [^/;]+) Build'
@@ -3783,12 +5133,17 @@ Positivo:
3783
5133
 
3784
5134
  # Prestigio
3785
5135
  Prestigio:
3786
- regex: '(?:PMP|PAP)[0-9]+[a-z0-9_]+[);/ ]'
5136
+ regex: '(?:PMP|PAP|PMT|PSP)[0-9]+[a-z0-9_]+[);/ ]'
3787
5137
  device: 'tablet'
3788
5138
  models:
3789
- - regex: '(PMP[0-9]+[a-z0-9_]+)[);/ ]'
5139
+ - regex: 'PMT3277_3G'
5140
+ model: 'MultiPad Ranger 7.0 3G'
5141
+ - regex: 'PMT3287_3G'
5142
+ model: 'MultiPad Ranger 8.0 3G'
5143
+
5144
+ - regex: '(PM[PT][0-9]+[a-z0-9_]+)[);/ ]'
3790
5145
  model: '$1'
3791
- - regex: '(PAP[0-9]+[a-z0-9_]+(?: DUO)?)[);/ ]'
5146
+ - regex: '((?:PAP|PSP)[0-9]+[a-z0-9_]+(?: DUO)?)[);/ ]'
3792
5147
  model: '$1'
3793
5148
  device: 'smartphone'
3794
5149
 
@@ -3886,10 +5241,12 @@ Spice:
3886
5241
 
3887
5242
  # Sharp
3888
5243
  Sharp:
3889
- regex: 'SHARP|SBM|SH-?[0-9]+[a-z]?[);/ ]|AQUOS'
5244
+ regex: 'SHARP|SBM|SH-?[0-9]+[a-z]?[);/ ]|AQUOS|506SH'
3890
5245
  device: 'smartphone'
3891
5246
  models:
3892
5247
  # explicit smartphone models
5248
+ - regex: '506SH'
5249
+ model: 'Aquos Xx3'
3893
5250
  - regex: 'SH-02E'
3894
5251
  model: 'Aquos Phone Zeta'
3895
5252
  - regex: 'SH06D'
@@ -3938,7 +5295,7 @@ Star:
3938
5295
 
3939
5296
  # Kindle
3940
5297
  Amazon:
3941
- regex: 'KF(?:OT|TT|JWI|JWA|SOWI|A[PRS]WI|THWI|SAW[IA])[);/ ]|Kindle|Silk/\d+\.\d+|Amazon (?:Tate|Jem)|AFT[BM]|SD4930UR'
5298
+ regex: 'KF(?:OT|TT|JWI|JWA|[DFS]OWI|A[PRSU]WI|T[BH]WI|SAW[IA]|GIWI)[);/ ]|Kindle|Silk/\d+\.\d+|Amazon (?:Tate|Jem)|AFT[BM]|SD4930UR'
3942
5299
  device: 'tablet'
3943
5300
  models:
3944
5301
  - regex: 'AFTB'
@@ -3947,6 +5304,8 @@ Amazon:
3947
5304
  - regex: 'AFTM'
3948
5305
  model: 'Fire TV stick'
3949
5306
  device: 'tv'
5307
+ - regex: 'KFFOWI[);/ ]'
5308
+ model: 'Fire 7"'
3950
5309
  - regex: 'KFTT[);/ ]'
3951
5310
  model: 'Kindle Fire HD'
3952
5311
  - regex: 'KFJWI[);/ ]|Amazon Jem'
@@ -3967,10 +5326,18 @@ Amazon:
3967
5326
  model: 'Fire HD 6'
3968
5327
  - regex: 'KFASWI[);/ ]'
3969
5328
  model: 'Fire HD 7'
5329
+ - regex: 'KFAUWI[);/ ]'
5330
+ model: 'Fire HD 7 2017'
5331
+ - regex: 'KFGIWI[);/ ]'
5332
+ model: 'Fire HD 8 2016'
5333
+ - regex: 'KFDOWI[);/ ]'
5334
+ model: 'Fire HD 8 2017'
3970
5335
  - regex: 'KFSAWI[);/ ]'
3971
5336
  model: 'Fire HDX 8.9'
3972
5337
  - regex: 'KFSAWA[);/ ]'
3973
5338
  model: 'Fire HDX 8.9 4G'
5339
+ - regex: 'KFTBWI[);/ ]'
5340
+ model: 'Fire HD 10'
3974
5341
  - regex: 'SD4930UR'
3975
5342
  model: 'Fire Phone'
3976
5343
  device: 'smartphone'
@@ -4003,15 +5370,35 @@ T-Mobile:
4003
5370
  - regex: 'T-Mobile[ _]([a-z0-9_ ]+)'
4004
5371
  model: '$1'
4005
5372
 
5373
+ # TB Touch
5374
+ 'TB Touch':
5375
+ regex: 'Ignis [89]'
5376
+ device: 'tablet'
5377
+ models:
5378
+ - regex: 'Ignis ([89])'
5379
+ model: 'Ignis $1'
5380
+
4006
5381
  # Tcl
4007
5382
  TCL:
4008
- regex: 'TCL[ -][a-z0-9]+|TCL[_ -][^;/]+ Build'
5383
+ regex: 'TCL[ -][a-z0-9]+|(TCL[_ -][^;/]+|7040N) Build'
4009
5384
  device: 'smartphone'
4010
5385
  models:
4011
5386
  - regex: 'TCL[_ -]([^;/]+) Build'
4012
5387
  model: '$1'
4013
5388
  - regex: 'TCL[ -]([a-z0-9]+)'
4014
5389
  model: '$1'
5390
+ - regex: '(7040N)'
5391
+ model: '$1'
5392
+
5393
+ # Teclast
5394
+ Teclast:
5395
+ regex: 'Teclast|Tbook'
5396
+ device: 'tablet'
5397
+ models:
5398
+ - regex: 'Tbook[_ -]([^;/]+) Build'
5399
+ model: 'Tbook $1'
5400
+ - regex: 'Teclast[_ -]([^;/]+) Build'
5401
+ model: '$1'
4015
5402
 
4016
5403
  # Tecno Mobile
4017
5404
  Tecno Mobile:
@@ -4025,9 +5412,13 @@ Tecno Mobile:
4025
5412
 
4026
5413
  # Tesco
4027
5414
  Tesco:
4028
- regex: 'Hudl ([^/;]+) Build'
5415
+ regex: 'Hudl ([^/;]+) Build|W032i-C3[);/ ]'
4029
5416
  device: 'tablet'
4030
- model: 'Hudl $1'
5417
+ models:
5418
+ - regex: 'Hudl ([^/;]+) Build'
5419
+ model: 'Hudl $1'
5420
+ - regex: 'W032i-C3[);/ ]'
5421
+ model: 'Op3n Dott'
4031
5422
 
4032
5423
  # teXet
4033
5424
  teXet:
@@ -4087,6 +5478,14 @@ Toplux:
4087
5478
  device: 'feature phone'
4088
5479
  model: '$1'
4089
5480
 
5481
+ # TrekStor
5482
+ TrekStor:
5483
+ regex: 'TrekStor ([^/;]+) Build'
5484
+ device: 'tablet'
5485
+ models:
5486
+ - regex: 'TrekStor ([^/;]+) Build'
5487
+ model: '$1'
5488
+
4090
5489
  # Trevi
4091
5490
  Trevi:
4092
5491
  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'
@@ -4146,6 +5545,44 @@ UTStarcom:
4146
5545
  device: 'feature phone'
4147
5546
  model: '$1'
4148
5547
 
5548
+ # Ulefone
5549
+ Ulefone:
5550
+ regex: 'Ulefone|(Armor(?:[ _]2)?|U00[78][ _]Pro|Be[ _]X|Be[ _]Touch(?:[ _][23])?|Be[ _](?:One|Pure)(?:[ _]Lite)?) Build'
5551
+ device: 'smartphone'
5552
+ models:
5553
+ - regex: 'Be[ _]Touch([ _][23])?'
5554
+ model: 'Be Touch$1'
5555
+ - regex: 'Be[ _]Pure[ _]Lite'
5556
+ model: 'Be Pure Lite'
5557
+ - regex: 'Be[ _]Pure'
5558
+ model: 'Be Pure'
5559
+ - regex: 'Be[ _]One[ _]Lite'
5560
+ model: 'Be One Lite'
5561
+ - regex: 'Be[ _]One'
5562
+ model: 'Be One'
5563
+ - regex: 'Be[ _]X'
5564
+ model: 'Be X'
5565
+ - regex: 'U007 Pro'
5566
+ model: 'U007 Pro'
5567
+ - regex: 'U008 Pro'
5568
+ model: 'U008 Pro'
5569
+ - regex: 'Armor[ _]2 Build'
5570
+ model: 'Armor 2'
5571
+ - regex: 'Armor Build'
5572
+ model: 'Armor'
5573
+ - regex: 'Ulefone[ _-]?([^;/]+) Build'
5574
+ model: '$1'
5575
+ - regex: 'Ulefone[ _-]?([^;/)]+)[;/)]'
5576
+ model: '$1'
5577
+
5578
+ # UMIDIGI
5579
+ UMIDIGI:
5580
+ regex: 'UMI(?:DIGI)?[ _]'
5581
+ device: 'smartphone'
5582
+ models:
5583
+ - regex: 'UMI(?:DIGI)?[ _]([^/;]+) Build'
5584
+ model: '$1'
5585
+
4149
5586
  # Uniscope
4150
5587
  Uniscope:
4151
5588
  regex: 'Uniscope'
@@ -4169,6 +5606,9 @@ ViewSonic:
4169
5606
  regex: 'ViewSonic|VSD[0-9]+[);/ ]|ViewPad|ViewPhone'
4170
5607
  device: 'smart display'
4171
5608
  models:
5609
+ - regex: '(?:ViewSonic-)?V500[);/ ]'
5610
+ model: 'V500'
5611
+ device: 'smartphone'
4172
5612
  - regex: '(?:ViewSonic-)?ViewPhone ?([^;/]+) Build'
4173
5613
  model: 'ViewPhone $1'
4174
5614
  device: 'smartphone'
@@ -4202,6 +5642,14 @@ Vertu:
4202
5642
  device: 'feature phone'
4203
5643
  model: '$1'
4204
5644
 
5645
+ # Verykool
5646
+ Verykool:
5647
+ regex: 'verykool'
5648
+ device: 'smartphone'
5649
+ models:
5650
+ - regex: 'verykool[ _]?([^/;]+) Build'
5651
+ model: '$1'
5652
+
4205
5653
  # Videocon
4206
5654
  Videocon:
4207
5655
  regex: 'Videocon[_ \-]|VT75C'
@@ -4214,9 +5662,27 @@ Videocon:
4214
5662
 
4215
5663
  # Vodafone
4216
5664
  Vodafone:
4217
- regex: 'Vodafone[ _-]|Smart ?Tab ?(?:III? ?)?(?:|4G|7|10)[);/ -]|VodafoneSmartChat'
4218
- device: 'smartphone'
4219
- models:
5665
+ regex: 'Vodafone[ _-]|Smart ?Tab ?(?:III? ?)?(?:|4G|7|10)[);/ -]|VodafoneSmartChat|VFD[ _][0-9]+[;/) ]'
5666
+ device: 'smartphone'
5667
+ models:
5668
+ - regex: 'VFD 100'
5669
+ model: 'Smart Mini'
5670
+ - regex: 'VFD 200'
5671
+ model: 'Smart First 7'
5672
+ - regex: 'VFD 300'
5673
+ model: 'Smart Mini 7'
5674
+ - regex: 'VFD 50[02]'
5675
+ model: 'Smart Turbo 7'
5676
+ - regex: 'VFD 51[013]'
5677
+ model: 'Smart E8'
5678
+ - regex: 'VFD 600'
5679
+ model: 'Smart Prime 7'
5680
+ - regex: 'VFD 610'
5681
+ model: 'Smart N8'
5682
+ - regex: 'VFD 700'
5683
+ model: 'Smart Ultra 7'
5684
+ - regex: 'VFD 900'
5685
+ model: 'Smart Platinum 7'
4220
5686
  - regex: 'Vodafone[ _]875[);/ ]'
4221
5687
  model: 'Smart Mini' # Alcatel
4222
5688
  - regex: 'Vodafone[ _]975N?[);/ ]'
@@ -4231,6 +5697,15 @@ Vodafone:
4231
5697
  model: 'Smart Chat'
4232
5698
 
4233
5699
  # explicit table models
5700
+ - regex: 'VFD 1100'
5701
+ device: 'tablet'
5702
+ model: 'Tab Mini 7'
5703
+ - regex: 'VFD 1300'
5704
+ device: 'tablet'
5705
+ model: 'Smart Tab N8'
5706
+ - regex: 'VFD 1400'
5707
+ device: 'tablet'
5708
+ model: 'Tab Prime 7'
4234
5709
  - regex: 'Smart ?Tab ?3G'
4235
5710
  device: 'tablet'
4236
5711
  model: 'Smart Tab 3G'
@@ -4256,6 +5731,8 @@ Vodafone:
4256
5731
  model: 'Smart Tab III 10' # Lenovo
4257
5732
  device: 'tablet'
4258
5733
 
5734
+ - regex: 'VFD[ _]([0-9]+)[;/) ]'
5735
+ model: 'VFD $1'
4259
5736
  - regex: 'Vodafone[ _-]([^;/]+) Build'
4260
5737
  model: '$1'
4261
5738
  - regex: 'Vodafone[ _-]([a-z0-9_-]+)'
@@ -4325,16 +5802,16 @@ Wexler:
4325
5802
 
4326
5803
  # Wiko
4327
5804
  Wiko:
4328
- regex: '(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink.*|Highway.*|Iggy|Stairway|Rainbow|Darkside|Darkmoon|Darkfull|Darknight|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom|Getaway|Goa|Kite|Lenny|Slide|Sunset|Wax|Ridge(?: Fab)?)(?: 4G)? Build'
5805
+ regex: '(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink([^/;]*)|Highway([^/;]*)|Iggy|Stairway|Rainbow ?(Jam|Lite|Up)?|Darkside|Darkmoon|Darkfull|Darknight|Freddy|Jerry[2]?|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom|Getaway|Goa|Kite|Lenny[234]?(?: Plus)?|Slide|Sunset2?|Sunny[2]?(?: Plus)?|Tommy[2]?|PULP|Wax|Ridge(?: Fab)?)(?: 4G)? Build'
4329
5806
  device: 'smartphone'
4330
5807
  models:
4331
5808
  - regex: '(?:WIKO-)?CINK_([a-z0-9_]+)'
4332
5809
  model: 'Cink $1'
4333
- - regex: '(?:Wiko-)?Cink(.*) Build'
5810
+ - regex: '(?:Wiko-)?Cink([^/;]*) Build'
4334
5811
  model: 'Cink$1'
4335
5812
  - regex: '(?:WIKO-)?HIGHWAY_([a-z0-9_]+)'
4336
5813
  model: 'Highway $1'
4337
- - regex: '(?:Wiko-)?Highway(.*) Build'
5814
+ - regex: '(?:Wiko-)?Highway([^/;]*) Build'
4338
5815
  model: 'Highway$1'
4339
5816
  - regex: '(?:WIKO-)?Iggy Build'
4340
5817
  model: 'Iggy'
@@ -4348,8 +5825,8 @@ Wiko:
4348
5825
  model: 'Ridge 4G'
4349
5826
  - regex: '(?:WIKO-)?Rainbow Build'
4350
5827
  model: 'Rainbow'
4351
- - regex: '(?:WIKO-)?Rainbow 4G Build'
4352
- model: 'Rainbow 4G'
5828
+ - regex: '(?:WIKO-)?Rainbow ([^/;]+) Build'
5829
+ model: 'Rainbow $1'
4353
5830
  - regex: '(?:WIKO-)?Darkside Build'
4354
5831
  model: 'Darkside'
4355
5832
  - regex: '(?:WIKO-)?Darkmoon Build'
@@ -4370,20 +5847,58 @@ Wiko:
4370
5847
  model: 'Bloom'
4371
5848
  - regex: '(?:WIKO-)?JIMMY Build'
4372
5849
  model: 'Jimmy'
5850
+ - regex: '(?:WIKO-)?Jerry Build'
5851
+ model: 'Jerry'
5852
+ - regex: '(?:WIKO-)?Jerry2 Build'
5853
+ model: 'Jerry 2'
4373
5854
  - regex: '(?:WIKO-)?Getaway Build'
4374
5855
  model: 'Getaway'
4375
5856
  - regex: '(?:WIKO-)?Goa Build'
4376
5857
  model: 'Goa'
5858
+ - regex: '(?:WIKO-)?Freddy Build'
5859
+ model: 'Freddy'
4377
5860
  - regex: '(?:WIKO-)?Kite Build'
4378
5861
  model: 'Kite'
4379
5862
  - regex: '(?:WIKO-)?Lenny Build'
4380
5863
  model: 'Lenny'
5864
+ - regex: '(?:WIKO-)?Lenny[ -_]?2 Build'
5865
+ model: 'Lenny 2'
5866
+ - regex: '(?:WIKO-)?Lenny[ -_]?3 Build'
5867
+ model: 'Lenny 3'
5868
+ - regex: '(?:WIKO-)?Lenny[ -_]?4 Build'
5869
+ model: 'Lenny 4'
5870
+ - regex: '(?:WIKO-)?Lenny[ -_]?4 Plus Build'
5871
+ model: 'Lenny 4 Plus'
4381
5872
  - regex: '(?:WIKO-)?Slide Build'
4382
5873
  model: 'Slide'
4383
5874
  - regex: '(?:WIKO-)?Sunset Build'
4384
5875
  model: 'Sunset'
5876
+ - regex: '(?:WIKO-)?Sunset2 Build'
5877
+ model: 'Sunset 2'
5878
+ - regex: '(?:WIKO-)?Sunny Build'
5879
+ model: 'Sunny'
5880
+ - regex: '(?:WIKO-)?Sunny2 Build'
5881
+ model: 'Sunny 2'
5882
+ - regex: '(?:WIKO-)?Sunny2 Plus Build'
5883
+ model: 'Sunny 2 Plus'
5884
+ - regex: '(?:WIKO-)?Tommy Build'
5885
+ model: 'Tommy'
5886
+ - regex: '(?:WIKO-)?Tommy2 Build'
5887
+ model: 'Tommy 2'
4385
5888
  - regex: '(?:WIKO-)?Wax Build'
4386
5889
  model: 'Wax'
5890
+ - regex: '(?:WIKO-)?Pulp Build'
5891
+ model: 'Pulp'
5892
+
5893
+ # Wileyfox
5894
+ Wileyfox:
5895
+ regex: '(?:Wileyfox [^/]+)|Swift([^/]+) Build'
5896
+ device: 'smartphone'
5897
+ models:
5898
+ - regex: 'Wileyfox ([^/]+) Build'
5899
+ model: '$1'
5900
+ - regex: 'Swift ([^/]+) Build'
5901
+ model: 'Swift $1'
4387
5902
 
4388
5903
  # Wolder
4389
5904
  Wolder:
@@ -4396,6 +5911,12 @@ Wolder:
4396
5911
  device: 'tablet'
4397
5912
  model: 'miTab $1'
4398
5913
 
5914
+ # Wolfgang
5915
+ Wolfgang:
5916
+ regex: 'AT[ _-]AS([0-9A-Z]+)[);/ ]'
5917
+ device: 'smartphone'
5918
+ model: 'AT-AS$1'
5919
+
4399
5920
  # Wonu
4400
5921
  Wonu:
4401
5922
  regex: 'Wonu ([a-z0-9]+)'
@@ -4404,13 +5925,13 @@ Wonu:
4404
5925
 
4405
5926
  # Woxter
4406
5927
  Woxter:
4407
- regex: 'Woxter ([^/;]+) Build'
5928
+ regex: 'Woxter[ _]([^/;]+) Build'
4408
5929
  device: 'tablet'
4409
5930
  model: '$1'
4410
5931
 
4411
5932
  #Xiaomi
4412
5933
  Xiaomi:
4413
- regex: 'Xiaomi|(MI [a-z0-9]+|MI-One[ _]?[a-z0-9]+)[);/ ]|HM ([^/;]+) Build|(2014501|2014011|201481[13]|201302[23]|2013061) Build|Redmi'
5934
+ regex: 'Xiaomi|(MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+)[);/ ]|HM ([^/;]+) (?:Build|MIUI)|(2014501|2014011|201481[13]|201302[23]|2013061) Build|Redmi'
4414
5935
  device: 'smartphone'
4415
5936
  models:
4416
5937
  # specific smartphone models
@@ -4424,23 +5945,25 @@ Xiaomi:
4424
5945
  model: 'Hongmi'
4425
5946
  - regex: 'Xiaomi_2013061|2013061 Build'
4426
5947
  model: 'MI 3'
5948
+ - regex: 'Mi-4c[);/ ]'
5949
+ model: 'MI 4C'
4427
5950
 
4428
- - regex: 'Redmi Note ([^;/]+)? Build'
5951
+ - regex: 'Redmi Note ([^;/]+)? .+?\)'
4429
5952
  model: 'Redmi Note $1'
4430
5953
  device: 'phablet'
4431
- - regex: 'Redmi ([^;/]+)? Build'
5954
+ - regex: 'Redmi ([^;/]+)? .+?\)'
4432
5955
  model: 'Redmi $1'
4433
- - regex: 'MI Note ([^;/]+)? Build'
5956
+ - regex: 'MI Note ([^;/]+)? .+?\)'
4434
5957
  model: 'MI Note $1'
4435
5958
  device: 'phablet'
4436
5959
  - regex: '(MI(?:-One)?[ _](?:[^;/]*))Build'
4437
5960
  model: '$1'
4438
5961
  - regex: '(MI [a-z0-9]+|MI-One[ _]?[a-z0-9]+)[);/ ]'
4439
5962
  model: '$1'
4440
- - regex: 'HM Note ([^/;]+) Build'
5963
+ - regex: 'HM Note ([^/;]+) (?:Build|MIUI)'
4441
5964
  device: 'phablet'
4442
5965
  model: 'HM Note $1'
4443
- - regex: 'HM ([^/;]+) Build'
5966
+ - regex: 'HM ([^/;]+) (?:Build|MIUI)'
4444
5967
  model: 'HM $1'
4445
5968
 
4446
5969
  # Xolo
@@ -4532,7 +6055,7 @@ Zonda:
4532
6055
 
4533
6056
  # Toshiba
4534
6057
  Toshiba:
4535
- regex: 'Toshiba|TSBNetTV/|portalmmm/[12].0 TS|T-01C|T-0[12]D|IS04|IS11T|AT1S0|AT300SE|AT(100|200|270|300|330|374|400|470|500|503|570|703|830)'
6058
+ regex: 'Toshiba|TSBNetTV/|portalmmm/[12].0 TS|T-01C|T-0[12]D|IS04|IS11T|AT1S0|AT300SE|AT(10-A|10[PL]E-A|100|200|270|300|330|374|400|470|500|503|570|703|830)'
4536
6059
  device: 'smartphone'
4537
6060
  models:
4538
6061
  # explicit smartphone models
@@ -4560,6 +6083,12 @@ Toshiba:
4560
6083
  - regex: 'AT(100|200|270|300|330|374|400|470|500|503|570|703|830)'
4561
6084
  model: 'Regza AT$1'
4562
6085
  device: 'tablet'
6086
+ - regex: 'AT10([PL])E-A'
6087
+ model: 'Excite AT10$1-A'
6088
+ device: 'tablet'
6089
+ - regex: 'AT10-A'
6090
+ model: 'Excite AT10-A'
6091
+ device: 'tablet'
4563
6092
 
4564
6093
  - regex: 'TSBNetTV/'
4565
6094
  device: 'tv'
@@ -4573,7 +6102,7 @@ Toshiba:
4573
6102
 
4574
6103
  # Fly
4575
6104
  Fly:
4576
- regex: 'Fly(?!Flow|touch)|MERIDIAN-|(?:IQ[0-9]{3,})[ _]?(?:Quad|Firebird|Quattro|Turbo|Magic)?(?: Build|[;/\)])'
6105
+ regex: 'Fly(?!Flow|touch)|FS50[1-9]|FS511|FS551|FS40[1-7]|FS452|FS451|FS454|4FS06|MERIDIAN-|(?:IQ[0-9]{3,})[ _]?(?:Quad|Firebird|Quattro|Turbo|Magic)?(?: Build|[;/\)])'
4577
6106
  device: 'smartphone'
4578
6107
  models:
4579
6108
  - regex: '(?:Fly_)?IQ310(?: Build|[;/\)])'
@@ -4582,6 +6111,44 @@ Fly:
4582
6111
 
4583
6112
  - regex: '(?:Fly_)?IQ236(?: Build|[;/\)])'
4584
6113
  model: 'Victory'
6114
+ - regex: 'FS506'
6115
+ model: 'Cirrus 3'
6116
+ - regex: 'FS403'
6117
+ model: 'Cumulus 1'
6118
+ - regex: 'FS508'
6119
+ model: 'Cirrus 6'
6120
+ - regex: 'FS511'
6121
+ model: 'Cirrus 7'
6122
+ - regex: 'FS509'
6123
+ model: 'Nimbus 9'
6124
+ - regex: 'FS406'
6125
+ model: 'Stratus 5'
6126
+ - regex: 'FS404'
6127
+ model: 'Stratus 3'
6128
+ - regex: 'FS504'
6129
+ model: 'Cirrus 2'
6130
+ - regex: 'FS407'
6131
+ model: 'Stratus 6'
6132
+ - regex: 'FS401'
6133
+ model: 'Stratus 1'
6134
+ - regex: 'FS402'
6135
+ model: 'Stratus 2'
6136
+ - regex: 'FS501'
6137
+ model: 'Nimbus 3'
6138
+ - regex: 'FS502'
6139
+ model: 'Cirrus 1'
6140
+ - regex: 'FS505'
6141
+ model: 'Nimbus 7'
6142
+ - regex: 'FS551'
6143
+ model: 'Nimbus 4'
6144
+ - regex: 'FS454'
6145
+ model: 'Nimbus 8'
6146
+ - regex: 'FS452'
6147
+ model: 'Nimbus 2'
6148
+ - regex: 'FS451'
6149
+ model: 'Nimbus 1'
6150
+ - regex: 'FS405'
6151
+ model: 'Stratus 4'
4585
6152
  - regex: '(?:Fly_)?IQ237(?: Build|[;/\)])'
4586
6153
  model: 'Dynamic'
4587
6154
  - regex: '(?:Fly_)?IQ238(?: Build|[;/\)])'
@@ -4652,6 +6219,8 @@ Fly:
4652
6219
  model: 'Energy 2'
4653
6220
  - regex: '(?:Fly_)?IQ4412 Quad(?: Build|[;/\)])'
4654
6221
  model: 'Coral'
6222
+ - regex: '(?:Fly_)?IQ4413[ _]Quad(?: Build|[;/\)])'
6223
+ model: 'Evo Chic 3'
4655
6224
  - regex: '(?:Fly_)?IQ4414 Quad(?: Build|[;/\)])'
4656
6225
  model: 'Evo Tech 3'
4657
6226
  - regex: '(?:Fly_)?IQ4415 Quad(?: Build|[;/\)])'
@@ -4673,11 +6242,31 @@ Fly:
4673
6242
  - regex: 'MERIDIAN-([a-z0-9]+)'
4674
6243
  model: '$1'
4675
6244
 
4676
- # Devices with undectable brand, but detectable model
4677
- Unknown:
4678
- regex: 'WebTV/(\d+\.\d+)'
4679
- device: 'tv'
4680
- model: 'Web TV'
6245
+ # Freetel
6246
+ Freetel:
6247
+ regex: '(FTJ152[ABCD]|FT141B|FT142D_LTEXM|FT142A?|FTJ161B|FTJ152E|FTJ162D) Build'
6248
+ device: 'smartphone'
6249
+ models:
6250
+ - regex: 'FTJ152C'
6251
+ model: 'Samurai Miyabi'
6252
+ - regex: 'FT141B'
6253
+ model: 'Nico'
6254
+ - regex: 'FT142D_LTEXM'
6255
+ model: 'XM'
6256
+ - regex: 'FT142A?'
6257
+ model: 'Priori 2'
6258
+ - regex: 'FTJ152A'
6259
+ model: 'Priori 3'
6260
+ - regex: 'FTJ162D'
6261
+ model: 'Priori 4'
6262
+ - regex: 'FTJ152B'
6263
+ model: 'Priori 3S LTE'
6264
+ - regex: 'FTJ152D'
6265
+ model: 'Samurai Kiwami'
6266
+ - regex: 'FTJ161B'
6267
+ model: 'Samurai Rei'
6268
+ - regex: 'FTJ152E'
6269
+ model: 'Katana 1'
4681
6270
 
4682
6271
  # Zeemi
4683
6272
  Zeemi:
@@ -4697,7 +6286,7 @@ Zopo:
4697
6286
 
4698
6287
  # ZTE
4699
6288
  ZTE:
4700
- regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade S6|N9[15]8St|NX(?:403A|40[X2]|507J|503A|505J|506J|508J|510J|511J|513J|601J)|Z331|N9510|N9180|N9101|N9515|N952[01]|N9810|N799D|[UV]9180|[UV]9815|Z768G)[);/ ]'
6289
+ regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:L[2357]|S6|V[678]|X7|A520)|N9[15]8St|NX(?:403A|40[X2]|507J|503A|505J|506J|508J|510J|511J|513J|529J|531J|549J|601J)|Z331|N9510|N9180|N9101|NX406E|N9515|N952[01]|N9810|N799D|[UV]9180|[UV]9815|Z768G|Z820|Z981|A460)[);/ ]'
4701
6290
  device: 'smartphone'
4702
6291
  models:
4703
6292
  # explicit smartphone models
@@ -4739,6 +6328,12 @@ ZTE:
4739
6328
  model: 'Nubia Z9 mini'
4740
6329
  - regex: 'NX510J[);/ ]'
4741
6330
  model: 'Nubia Z9 max'
6331
+ - regex: 'NX531J[);/ ]'
6332
+ model: 'Nubia Z11'
6333
+ - regex: 'NX529J[);/ ]'
6334
+ model: 'Nubia Z11 mini'
6335
+ - regex: 'NX549J[);/ ]'
6336
+ model: 'Nubia Z11 mini S'
4742
6337
  - regex: 'NX513J[);/ ]'
4743
6338
  model: 'Nubia My Prague'
4744
6339
  - regex: 'NX601J[);/ ]'
@@ -4749,10 +6344,44 @@ ZTE:
4749
6344
  model: 'Grand Memo'
4750
6345
  - regex: 'Z331[);/ ]'
4751
6346
  model: 'Z331'
6347
+ - regex: 'Blade A520[);/ ]'
6348
+ model: 'Blade A520'
6349
+ - regex: 'Blade L2 Plus[);/ ]'
6350
+ model: 'Blade L2 Plus'
6351
+ - regex: 'Blade L2[);/ ]'
6352
+ model: 'Blade L2'
6353
+ - regex: 'Blade L3 Plus[);/ ]'
6354
+ model: 'Blade L3 Plus'
6355
+ - regex: 'Blade L3[);/ ]'
6356
+ model: 'Blade L3'
6357
+ - regex: 'Blade L5[);/ ]'
6358
+ model: 'Blade L5'
4752
6359
  - regex: 'Blade S6[);/ ]'
4753
6360
  model: 'Blade S6'
6361
+ - regex: 'Blade V6 MAX[);/ ]'
6362
+ model: 'Blade V6 Max'
6363
+ - regex: 'Blade V6 Plus[);/ ]'
6364
+ model: 'Blade V6 Plus'
6365
+ - regex: 'Blade V6[);/ ]'
6366
+ model: 'Blade V6'
6367
+ - regex: 'Blade L7[);/ ]'
6368
+ model: 'Blade L7'
6369
+ - regex: 'Blade V7[);/ ]'
6370
+ model: 'Blade V7'
6371
+ - regex: 'Blade X7[);/ ]'
6372
+ model: 'Blade X7'
6373
+ - regex: 'Blade V8 SE[);/ ]'
6374
+ model: 'Blade V8 SE'
4754
6375
  - regex: 'Z768G[);/ ]'
4755
6376
  model: 'Midnight'
6377
+ - regex: 'Z820[);/ ]'
6378
+ model: 'Obsidian'
6379
+ - regex: 'Z981[);/ ]'
6380
+ model: 'ZMAX Pro'
6381
+ - regex: 'Blade (A460)'
6382
+ model: 'Blade $1'
6383
+ - regex: 'NX406E[);/ ]'
6384
+ model: 'Nubia Z5S'
4756
6385
 
4757
6386
  - regex: 'AxonPhone ([^;/]+) Build'
4758
6387
  model: 'AxonPhone $1'
@@ -4767,21 +6396,15 @@ ZTE:
4767
6396
  model: '$1'
4768
6397
  - regex: 'ZTE[ _]([a-z0-9]+)'
4769
6398
  model: '$1'
6399
+ # Zen'
6400
+ Zen:
6401
+ regex: '(Admire[_ ][^/;]+|Cinemax[^/;)]+)(?:Build|\) U)'
6402
+ device: 'smartphone'
6403
+ model: '$1'
4770
6404
 
4771
- # Symbian to Nokia ??
4772
- # Change name from Nokia to other to not change above Nokia element
4773
- #Nokia:
4774
- # regex: 'Symbian'
4775
- # device: 'feature phone'
6405
+ # Devices with undectable brand, but detectable model
6406
+ Unknown:
6407
+ regex: 'WebTV/(\d+\.\d+)'
6408
+ device: 'tv'
6409
+ model: 'Web TV'
4776
6410
 
4777
- # OnePlus
4778
- OnePlus:
4779
- regex: '(?:A0001|A2005|E1003) Build'
4780
- device: 'smartphone'
4781
- models:
4782
- - regex: 'A0001'
4783
- model: 'One'
4784
- - regex: 'A2005'
4785
- model: 'Two'
4786
- - regex: 'E1003'
4787
- model: 'X'