device_detector 1.1.2 → 1.1.3

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.
data/regexes/oss.yml CHANGED
@@ -5,6 +5,263 @@
5
5
  # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
6
  ###############
7
7
 
8
+ ##########
9
+ # WoPhone
10
+ ##########
11
+ - regex: 'WoPhone(?:/(\d+[\.\d]+))?'
12
+ name: 'WoPhone'
13
+ version: '$1'
14
+
15
+ ##########
16
+ # KIN OS (https://en.wikipedia.org/wiki/Microsoft_Kin)
17
+ ##########
18
+ - regex: 'KIN\.(?:One|Two) (\d+[\.\d]+)'
19
+ name: 'KIN OS'
20
+ version: '$1'
21
+
22
+ ##########
23
+ # Star-Blade OS
24
+ ##########
25
+ - regex: 'Star-Blade OS'
26
+ name: 'Star-Blade OS'
27
+ version: ''
28
+
29
+ ##########
30
+ # Qtopia (https://en.wikipedia.org/wiki/Qt_Extended)
31
+ ##########
32
+ - regex: 'Qtopia/(\d+[\.\d]+)'
33
+ name: 'Qtopia'
34
+ version: '$1'
35
+
36
+ ##########
37
+ # OpenVMS (https://vmssoftware.com/)
38
+ ##########
39
+ - regex: 'OpenVMS V(\d+[\.\d]+)'
40
+ name: 'OpenVMS'
41
+ version: '$1'
42
+
43
+ ##########
44
+ # AROS (https://aros.sourceforge.io/)
45
+ ##########
46
+ - regex: 'AROS'
47
+ name: 'AROS'
48
+ version: ''
49
+
50
+ ##########
51
+ # NeXTSTEP
52
+ ##########
53
+ - regex: '\(NEXT\)'
54
+ name: 'NeXTSTEP'
55
+ version: ''
56
+
57
+ ##########
58
+ # NEWS-OS (https://en.wikipedia.org/wiki/Sony_NEWS)
59
+ ##########
60
+ - regex: 'NEWS-OS (\d+[\.\d]+)'
61
+ name: 'NEWS-OS'
62
+ version: '$1'
63
+
64
+ ##########
65
+ # ULTRIX (https://en.wikipedia.org/wiki/Ultrix)
66
+ ##########
67
+ - regex: 'ULTRIX (\d+[\.\d]+)'
68
+ name: 'ULTRIX'
69
+ version: '$1'
70
+
71
+ ##########
72
+ # Turbolinux (http://www.turbolinux.com/)
73
+ ##########
74
+ - regex: 'Turbolinux/(\d+[\.\d]+)'
75
+ name: 'Turbolinux'
76
+ version: '$1'
77
+
78
+ ##########
79
+ # Joli OS (https://www.jolicloud.com/products/)
80
+ ##########
81
+ - regex: 'Joli OS/(\d+[\.\d]+)'
82
+ name: 'Joli OS'
83
+ version: '$1'
84
+
85
+ ##########
86
+ # GENIX
87
+ ##########
88
+ - regex: 'GENIX (\d+[\.\d]+)'
89
+ name: 'GENIX'
90
+ version: '$1'
91
+
92
+ ##########
93
+ # gNewSense (http://www.gnewsense.org)
94
+ ##########
95
+ - regex: 'gNewSense/.*\((\d+[\.\d]+)'
96
+ name: 'gNewSense'
97
+ version: '$1'
98
+
99
+ ##########
100
+ # GEOS
101
+ ##########
102
+ - regex: 'Geos (\d+[\.\d]+)'
103
+ name: 'GEOS'
104
+ version: '$1'
105
+
106
+ ##########
107
+ # Motorola EZX
108
+ ##########
109
+ - regex: 'MOT-.*LinuxOS/'
110
+ name: 'Motorola EZX'
111
+ version: ''
112
+
113
+ ##########
114
+ # Baidu Yi (https://en.wikipedia.org/wiki/Baidu_Yi)
115
+ ##########
116
+ - regex: 'Baidu Yi'
117
+ name: 'Baidu Yi'
118
+ version: ''
119
+
120
+ ##########
121
+ # Red Star (https://en.wikipedia.org/wiki/Red_Star_OS)
122
+ ##########
123
+ - regex: '붉은별|Fedora/(?:\d+\.[\d.-]+)\.rs(\d+(?:[_.]\d+)*)'
124
+ name: 'Red Star'
125
+ version: '$1'
126
+
127
+ ##########
128
+ # Proxmox VE (https://pve.proxmox.com/wiki/Main_Page)
129
+ ##########
130
+ - regex: 'Linux/(?:\d+\.[\d.-]+)-(?:pve|v(\d)\+)'
131
+ name: 'Proxmox VE'
132
+ version: '$1'
133
+
134
+ ##########
135
+ # OpenVZ (https://openvz.org/)
136
+ ##########
137
+ - regex: 'Linux/(?:\d+\.[\d.-]+)-(?:\d+[\.\d]+)stab(?:\d+[\.\d]+)'
138
+ name: 'OpenVZ'
139
+ version: ''
140
+
141
+ # Rocky Linux (https://rockylinux.org/)
142
+ ##########
143
+ - regex: 'rocky/(\d+[\.\d]+)'
144
+ name: 'Rocky Linux'
145
+ version: '$1'
146
+
147
+ ##########
148
+ # Clear Linux OS (https://www.clearlinux.org/)
149
+ ##########
150
+ - regex: 'clear-linux-os/(\d+[\.\d]+)'
151
+ name: 'Clear Linux OS'
152
+ version: '$1'
153
+
154
+ ##########
155
+ # Alpine Linux (https://www.alpinelinux.org/)
156
+ ##########
157
+ - regex: 'alpine/(\d+[\.\d]+)'
158
+ name: 'Alpine Linux'
159
+ version: '$1'
160
+
161
+ ##########
162
+ # Scientific Linux (https://scientificlinux.org/)
163
+ ##########
164
+ - regex: 'scientific/(\d+[\.\d]+)'
165
+ name: 'Scientific Linux'
166
+ version: '$1'
167
+
168
+ ##########
169
+ # EulerOS (https://developer.huaweicloud.com/intl/en-us/euleros/index.html)
170
+ ##########
171
+ - regex: 'eulerosv(\d)r(\d+)'
172
+ name: 'EulerOS'
173
+ version: '$1.$2'
174
+
175
+ ##########
176
+ # Loongnix (https://www.loongson.cn/EN/system/loongnix)
177
+ ##########
178
+ - regex: 'loongnix-server/(\d+[\.\d]+)'
179
+ name: 'Loongnix'
180
+ version: '$1'
181
+
182
+ - regex: 'Linux/(?:\d+\.[\d.-]+)\.lns(\d+(?:[_.]\d+)*)\.loongarch64'
183
+ name: 'Loongnix'
184
+ version: '$1'
185
+
186
+ ##########
187
+ # AOSC OS (https://aosc.io/)
188
+ ##########
189
+ - regex: 'AOSC OS'
190
+ name: 'AOSC OS'
191
+ version: ''
192
+
193
+ ##########
194
+ # SerenityOS (https://github.com/SerenityOS/serenity)
195
+ ##########
196
+ - regex: 'SerenityOS|Ladybird/'
197
+ name: 'SerenityOS'
198
+ version: ''
199
+
200
+ ##########
201
+ # HELIX OS (https://www.pegasusintelligence.com/communication-security/)
202
+ ##########
203
+ - regex: 'Helix Phone'
204
+ name: 'HELIX OS'
205
+ version: ''
206
+
207
+ ##########
208
+ # Armadillo OS (https://github.com/pacificresearchalliance/kernel_google_crosshatch)
209
+ ##########
210
+ - regex: 'Armadillo'
211
+ name: 'Armadillo OS'
212
+ version: ''
213
+
214
+ # Webian (https://www.webian.org/)
215
+ ##########
216
+ - regex: 'Webian'
217
+ name: 'Webian'
218
+ version: ''
219
+
220
+ ##########
221
+ # Liri OS (https://liri.io/ | https://github.com/lirios)
222
+ ##########
223
+ - regex: 'Linux.*Liri/'
224
+ name: 'Liri OS'
225
+ version: ''
226
+
227
+ ##########
228
+ # FRITZ!OS (https://en.avm.de/products/fritzos/)
229
+ ##########
230
+ - regex: 'FRITZ!OS(?:/0(\d+[\.\d]+))?'
231
+ name: 'FRITZ!OS'
232
+ version: '$1'
233
+
234
+ ##########
235
+ # UOS (https://www.chinauos.com/)
236
+ ##########
237
+ - regex: 'UOS$'
238
+ name: 'UOS'
239
+ version: ''
240
+
241
+ ##########
242
+ # Raspbian (https://www.raspbian.org/)
243
+ ##########
244
+ - regex: 'Raspbian/(\d+[\.\d]+)'
245
+ name: 'Raspbian'
246
+ version: '$1'
247
+
248
+ ##########
249
+ # Raspberry Pi OS (https://www.raspberrypi.com/software/)
250
+ ##########
251
+ - regex: 'Raspbian'
252
+ name: 'Raspberry Pi OS'
253
+ version: ''
254
+
255
+ ##########
256
+ # BrightSignOS (https://www.brightsign.biz/ecosystem/brightsign-os/)
257
+ ##########
258
+ - regex: 'BrightSign/(?:[A-Z0-9]+)/(\d+[\.\d]+)'
259
+ name: 'BrightSignOS'
260
+ version: '$1'
261
+ - regex: 'BrightSign/(\d+[\.\d]+)'
262
+ name: 'BrightSignOS'
263
+ version: '$1'
264
+
8
265
  ##########
9
266
  # LuneOS (https://www.webos-ports.org/)
10
267
  ##########
@@ -56,7 +313,7 @@
56
313
  ##########
57
314
  # RouterOS (https://help.mikrotik.com/docs/display/ROS/RouterOS)
58
315
  ##########
59
- - regex: 'Mikrotik/(\d).x'
316
+ - regex: 'Mikrotik/(\d)\.x'
60
317
  name: 'RouterOS'
61
318
  version: '$1'
62
319
 
@@ -91,7 +348,7 @@
91
348
  ##########
92
349
  # Amazon Linux (https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html)
93
350
  ##########
94
- - regex: '.+.amzn(\d).x86_64'
351
+ - regex: '.+.amzn(\d)(?:int)?.x86_64'
95
352
  name: 'Amazon Linux'
96
353
  version: '$1'
97
354
 
@@ -119,7 +376,7 @@
119
376
  ##########
120
377
  # KreaTV
121
378
  ##########
122
- - regex: 'KreaTV/0.0.0.0'
379
+ - regex: 'KreaTV/0\.0\.0\.0'
123
380
  name: 'KreaTV'
124
381
  version: ''
125
382
 
@@ -165,6 +422,14 @@
165
422
  name: 'Whale OS'
166
423
  version: '$1'
167
424
 
425
+ - regex: 'Zeasn/.*TBrowser/2\.0' # https://partner.zeasn.com/partnerportal/WhaleVersion1/index.jhtml
426
+ name: 'Whale OS'
427
+ version: '1'
428
+
429
+ - regex: 'Zeasn/'
430
+ name: 'Whale OS'
431
+ version: ''
432
+
168
433
  ##########
169
434
  # Tizen
170
435
  ##########
@@ -202,18 +467,18 @@
202
467
  name: 'Windows Mobile'
203
468
  version: '$1'
204
469
 
205
- - regex: 'Windows NT 6.2; ARM;'
470
+ - regex: 'Windows NT 6\.2; ARM;'
206
471
  name: 'Windows RT'
207
472
  version: ''
208
473
 
209
- - regex: 'Windows NT 6.3; ARM;'
474
+ - regex: 'Windows NT 6\.3; ARM;'
210
475
  name: 'Windows RT'
211
476
  version: '8.1'
212
477
 
213
478
  ##########
214
479
  # Windows IoT
215
480
  ##########
216
- - regex: 'Windows IoT 10.0'
481
+ - regex: 'Windows IoT 10\.0'
217
482
  name: 'Windows IoT'
218
483
  version: '10'
219
484
 
@@ -250,24 +515,43 @@
250
515
  name: 'MocorDroid'
251
516
  version: '$1'
252
517
 
518
+ - regex: 'FydeOS'
519
+ name: 'FydeOS'
520
+ version: ''
521
+
522
+ ##########
523
+ # Fire OS (https://developer.amazon.com/docs/fire-tv/fire-os-overview.html)
524
+ ##########
253
525
  - regex: 'Fire OS(?:/(\d+[\.\d]*))?'
254
526
  name: 'Fire OS'
255
527
  version: '$1'
256
528
 
257
- - regex: '.+FIRETVSTICK2018'
529
+ - regex: '(?:Andr[o0]id (\d([\d.])*);? |Amazon;|smarttv_)AFT|AEO[ACBHKT]|KF[ADFGJKMORSTQ]|.*FIRETVSTICK2018'
258
530
  name: 'Fire OS'
259
- version: '6'
260
-
261
- - regex: 'AFTSO001'
262
- name: 'Fire OS'
263
- version: '7'
531
+ versions:
532
+ - regex: 'Andr[o0]id 1[01].+ (?:AFT|KF[ADFGJKMORSTQ])'
533
+ version: '8'
534
+ - regex: 'Andr[o0]id 9.+ (?:AEO[AHT]|AFT|KF[ADFGJKMORSTQ])|AFTSO001'
535
+ version: '7'
536
+ - regex: 'Andr[o0]id 7|.+FIRETVSTICK2018'
537
+ version: '6'
538
+ - regex: 'Andr[o0]id 5\.1'
539
+ version: '5'
540
+ - regex: 'Andr[o0]id 4\.4\.3'
541
+ version: '4.5.1'
542
+ - regex: 'Andr[o0]id 4\.4\.2'
543
+ version: '4'
544
+ - regex: 'Andr[o0]id 4\.2\.2'
545
+ version: '3'
546
+ - regex: 'Andr[o0]id 4\.0\.[34]'
547
+ version: '3'
548
+ - regex: 'Andr[o0]id 4\.0'
549
+ version: '2'
550
+ - regex: 'Andr[o0]id 2\.3\.3'
551
+ version: '1'
264
552
 
265
- - regex: 'Andr0id 9.+AFTdev'
553
+ - regex: 'cordova-amazon-fireos'
266
554
  name: 'Fire OS'
267
- version: '7'
268
-
269
- - regex: 'FydeOS'
270
- name: 'FydeOS'
271
555
  version: ''
272
556
 
273
557
  ##########
@@ -280,9 +564,49 @@
280
564
  ##########
281
565
  # Lineage OS
282
566
  ##########
283
- - regex: 'lineage_\w+'
567
+ - regex: 'Lineage_(\d+[\.\d]*)'
284
568
  name: 'Lineage OS'
285
- version: ''
569
+ version: '$1'
570
+
571
+ - regex: '(?:Android (\d([\d.])*);? )?lineage_\w+'
572
+ name: 'Lineage OS'
573
+ versions:
574
+ - regex: 'Android 14'
575
+ version: '21'
576
+ - regex: 'Android 13'
577
+ version: '20.0'
578
+ - regex: 'Android 12\.1'
579
+ version: '19.1'
580
+ - regex: 'Android 12'
581
+ version: '19.0'
582
+ - regex: 'Android 11'
583
+ version: '18.0'
584
+ - regex: 'Android 10'
585
+ version: '17.0'
586
+ - regex: 'Android 9'
587
+ version: '16.0'
588
+ - regex: 'Android 8\.1'
589
+ version: '15.1'
590
+ - regex: 'Android 8'
591
+ version: '15.0'
592
+ - regex: 'Android 7\.1'
593
+ version: '14.1'
594
+ - regex: 'Android 7'
595
+ version: '14.0'
596
+ - regex: 'Android 6'
597
+ version: '13.0'
598
+ - regex: 'Android 5\.1'
599
+ version: '12.1'
600
+ - regex: 'Android 5'
601
+ version: '12.0'
602
+ - regex: 'Android 4\.4'
603
+ version: '11.0'
604
+ - regex: 'Android 4\.3'
605
+ version: '10.2'
606
+ - regex: 'Android 4\.2'
607
+ version: '10.1'
608
+ - regex: 'Android 4'
609
+ version: '9.1.0'
286
610
 
287
611
  #########
288
612
  # Resurrection Remix OS (https://resurrectionremix.com/)
@@ -314,10 +638,24 @@
314
638
  ##########
315
639
  # Wear OS (https://wearos.google.com/)
316
640
  ##########
317
- - regex: 'Chrome/(\d+\.[.\d]+) Odd/|SM-R(?:8[6-9]|9)'
641
+ - regex: 'Chrome/(\d+\.[.\d]+) Odd/|SM-R(?:8[6-9]|9)|LEM14'
318
642
  name: 'Wear OS'
319
643
  version: ''
320
644
 
645
+ ##########
646
+ # SeewoOS
647
+ ##########
648
+ - regex: 'SeewoOS x86_64 (\d+[\.\d]+)'
649
+ name: 'SeewoOS'
650
+ version: '$1'
651
+
652
+ ##########
653
+ # ChromeOS
654
+ ##########
655
+ - regex: 'CrOS [a-z0-9_]+ (\d+[\.\d]+)|Chromebook'
656
+ name: 'Chrome OS'
657
+ version: '$1'
658
+
321
659
  ##########
322
660
  # Android TV (https://android.com/tv/)
323
661
  ##########
@@ -325,60 +663,66 @@
325
663
  name: 'Android TV'
326
664
  version: '$1'
327
665
 
328
- - regex: 'Android[; ](\d+[\.\d]*).+(?:(?:Android( UHD)?|AT&T|Google) TV|AOSP on r33a0|BRAVIA)'
666
+ - regex: 'Android[; ](\d+[\.\d]*).+(?:(?:Android(?: UHD)?|AT&T|Google|Smart)[ _]?TV|AOSP on r33a0|BRAVIA|wv-atv)'
329
667
  name: 'Android TV'
330
668
  version: '$1'
331
669
 
332
- - regex: 'Windows.+Andr0id TV|.+K_?Android_?TV_'
670
+ - regex: 'Windows.+Andr0id TV|.+(?:K_?Android_?TV_|AndroidTV|GoogleTV_)'
333
671
  name: 'Android TV'
334
672
  version: ''
335
673
 
336
674
  ##########
337
675
  # Android SDK Level Api
338
676
  ##########
339
- - regex: '(?:Android API \d+|\d+/tclwebkit(?:\d+[\.\d]*))'
677
+ - regex: '(?:Android API \d+|\d+/tclwebkit(?:\d+[\.\d]*)|(?:(?<!\d )Android/\d{2}|(?<!; |\d{4}/)Android (?!1[0-5])\d{2})(?![^ ]))'
340
678
  name: 'Android'
341
679
  versions:
342
- - regex: '(?:Android API 34|34/tclwebkit)'
680
+ - regex: '(?:Android API 35|35/tclwebkit|Android[ /]35)'
681
+ version: '15'
682
+ - regex: '(?:Android API 34|34/tclwebkit|Android[ /]34)'
343
683
  version: '14'
344
- - regex: '(?:Android API 33|33/tclwebkit)'
684
+ - regex: '(?:Android API 33|33/tclwebkit|Android[ /]33)'
345
685
  version: '13'
346
- - regex: '(?:Android API 32|32/tclwebkit)'
686
+ - regex: '(?:Android API 32|32/tclwebkit|Android[ /]32)'
347
687
  version: '12.1'
348
- - regex: '(?:Android API 31|31/tclwebkit)'
688
+ - regex: '(?:Android API 31|31/tclwebkit|Android[ /]31)'
349
689
  version: '12'
350
- - regex: '(?:Android API 30|30/tclwebkit)'
690
+ - regex: '(?:Android API 30|30/tclwebkit|Android[ /]30)'
351
691
  version: '11'
352
- - regex: '(?:Android API 29|29/tclwebkit)'
692
+ - regex: '(?:Android API 29|29/tclwebkit|Android[ /]29)'
353
693
  version: '10'
354
- - regex: '(?:Android API 28|28/tclwebkit)'
694
+ - regex: '(?:Android API 28|28/tclwebkit|Android[ /]28)'
355
695
  version: '9'
356
- - regex: '(?:Android API 27|27/tclwebkit)'
696
+ - regex: '(?:Android API 27|27/tclwebkit|Android[ /]27)'
357
697
  version: '8.1'
358
- - regex: '(?:Android API 26|26/tclwebkit)'
698
+ - regex: '(?:Android API 26|26/tclwebkit|Android[ /]26)'
359
699
  version: '8'
360
- - regex: '(?:Android API 25|25/tclwebkit)'
700
+ - regex: '(?:Android API 25|25/tclwebkit|Android[ /]25)'
361
701
  version: '7.1'
362
- - regex: '(?:Android API 24|24/tclwebkit)'
702
+ - regex: '(?:Android API 24|24/tclwebkit|Android[ /]24)'
363
703
  version: '7'
364
- - regex: '(?:Android API 23|23/tclwebkit)'
704
+ - regex: '(?:Android API 23|23/tclwebkit|Android[ /]23)'
365
705
  version: '6'
366
- - regex: '(?:Android API 22|22/tclwebkit)'
706
+ - regex: '(?:Android API 22|22/tclwebkit|Android[ /]22)'
367
707
  version: '5.1'
368
- - regex: '21/tclwebkit'
708
+ - regex: '(?:21/tclwebkit|Android[ /]21)'
369
709
  version: '5'
370
710
  - regex: '(?:20|19)/tclwebkit'
371
711
  version: '4.4'
372
- - regex: '18/tclwebkit'
712
+ - regex: 'Android[ /](?:20|19)'
713
+ version: '4.4'
714
+ - regex: '(?:18/tclwebkit|Android[ /]18)'
373
715
  version: '4.3'
374
- - regex: '17/tclwebkit'
716
+ - regex: '(?:17/tclwebkit|Android[ /]17)'
375
717
  version: '4.2'
376
- - regex: '16/tclwebkit'
718
+ - regex: '(?:16/tclwebkit|Android[ /]16)'
377
719
  version: '4.2'
378
720
  - regex: '15/tclwebkit'
379
721
  version: '4.0.3'
380
722
  - regex: '15/tclwebkit'
381
723
  version: '4.0.1'
724
+ - regex: 'Android[ /]15'
725
+ version: '4'
382
726
 
383
727
  ##########
384
728
  # Android
@@ -391,11 +735,11 @@
391
735
  name: 'Android'
392
736
  version: ''
393
737
 
394
- - regex: '(?:Android OS|OMDroid)[ /](\d+[\.\d]*)'
738
+ - regex: '(?:Android OS|OMDroid|sdk_gphone64_arm64-userdebug)[ /](\d+[\.\d]*)'
395
739
  name: 'Android'
396
740
  version: '$1'
397
741
 
398
- - regex: 'Pinterest for Android/.*; (\d(?:[\d\.]*))\)$'
742
+ - regex: 'Pinterest for Android(?: Tablet)?/.*; (\d(?:[\d\.]*))\)$'
399
743
  name: 'Android'
400
744
  version: '$1'
401
745
 
@@ -407,7 +751,7 @@
407
751
  name: 'Android'
408
752
  version: '$1'
409
753
 
410
- - regex: '(?:(?:Orca-)?(?<!like |/|RadioPublic |Anghami )Android|Adr|AOSP)[ /]?(?:[a-z]+ )?(\d+[\.\d]*)'
754
+ - regex: '(?:(?:Orca-)?(?<!like |/|RadioPublic |Anghami |Callpod Keeper for )Android|Adr|AOSP)[ /]?(?:[a-z]+ )?(\d+[\.\d]*)'
411
755
  name: 'Android'
412
756
  version: '$1'
413
757
 
@@ -415,7 +759,7 @@
415
759
  name: 'Android'
416
760
  version: '$1'
417
761
 
418
- - regex: 'Android ?(?:jelly bean|Kit Kat|S.O. Ginger Bread|The FireCyano|:) (\d+[\.\d]*)'
762
+ - regex: 'Android ?(?:jelly bean|Kit Kat|S\.O\. Ginger Bread|The FireCyano|:) (\d+[\.\d]*)'
419
763
  name: 'Android'
420
764
  version: '$1'
421
765
 
@@ -423,15 +767,19 @@
423
767
  name: 'Android'
424
768
  version: '$1'
425
769
 
426
- - regex: ' Adr |DDG-Android|(?<!like )Android|Silk-Accelerated=[a-z]{4,5}'
770
+ - regex: '(?:TwitterAndroid).*[ /](?:[a-z]+ )?(\d+[\.\d]*)'
427
771
  name: 'Android'
428
- version: ''
772
+ version: '$1'
429
773
 
430
- - regex: '(?:TwitterAndroid).*[ /](?:[a-z]+ )?(\d+[\.\d]*)'
774
+ - regex: '\(Android:.*\); API (\d+[\.\d]*)'
431
775
  name: 'Android'
432
776
  version: '$1'
433
777
 
434
- - regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe|Sonos/.+\(ACR_|Linux x86_64; Quest'
778
+ - regex: ' Adr |.*(?<!like |/ )Android|Silk-Accelerated=[a-z]{4,5}'
779
+ name: 'Android'
780
+ version: ''
781
+
782
+ - regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|okhttp|Podcatcher Deluxe|Sonos/.+\(ACR_|Linux x86_64; Quest|.*WhatsApp/.*A$'
435
783
  name: 'Android'
436
784
  version: ''
437
785
 
@@ -465,7 +813,7 @@
465
813
  ##########
466
814
  # ThreadX
467
815
  ##########
468
- - regex: 'ThreadX(?:/(\d+[\.\d]*))?'
816
+ - regex: 'ThreadX(?:_OS)?(?:/(\d+[\.\d]*))?'
469
817
  name: 'ThreadX'
470
818
  version: '$1'
471
819
 
@@ -596,10 +944,26 @@
596
944
  name: 'VectorLinux'
597
945
  version: '$1'
598
946
 
947
+ - regex: 'sles/(\d+[\.\d]+)'
948
+ name: 'SUSE'
949
+ version: '$1'
950
+
951
+ - regex: '(?:rhel|Red Hat Enterprise Linux Server)/(\d+[\.\d]+)'
952
+ name: 'Red Hat'
953
+ version: '$1'
954
+
955
+ - regex: '.+redhat-linux-gnu|rhel|Red Hat Enterprise Linux Server'
956
+ name: 'Red Hat'
957
+ version: ''
958
+
599
959
  - regex: 'CentOS Stream (\d)'
600
960
  name: 'CentOS Stream'
601
961
  version: '$1'
602
962
 
963
+ - regex: 'centos(?: Linux)?/(\d+[\.\d]+) '
964
+ name: 'CentOS'
965
+ version: '$1'
966
+
603
967
  - regex: '.+.el(\d+(?:[_\.]\d+)*).(?:centos|x86_64)'
604
968
  name: 'CentOS'
605
969
  version: '$1'
@@ -624,6 +988,34 @@
624
988
  name: 'ZorinOS'
625
989
  version: '$1'
626
990
 
991
+ - regex: 'Ubuntu[-/]hardy'
992
+ name: 'Ubuntu'
993
+ version: '8.04'
994
+
995
+ - regex: 'debian/stretch'
996
+ name: 'Debian'
997
+ version: '9.13'
998
+
999
+ - regex: 'Ubuntu[-/]feisty'
1000
+ name: 'Ubuntu'
1001
+ version: '7.04'
1002
+
1003
+ - regex: 'Ubuntu[-/]edgy'
1004
+ name: 'Ubuntu'
1005
+ version: '6.10'
1006
+
1007
+ - regex: 'Ubuntu[-/]dapper'
1008
+ name: 'Ubuntu'
1009
+ version: '6.06'
1010
+
1011
+ - regex: 'Ubuntu[-/]breezy'
1012
+ name: 'Ubuntu'
1013
+ version: '5.10'
1014
+
1015
+ - regex: 'Ubuntu[ /](\d+[\.\d]+)'
1016
+ name: 'Ubuntu'
1017
+ version: '$1'
1018
+
627
1019
  - regex: 'Linux; .*((?:Debian|Knoppix|Mint|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack))[ /](\d+[\.\d]+)'
628
1020
  name: '$1'
629
1021
  version: '$2'
@@ -632,14 +1024,10 @@
632
1024
  name: 'Deepin'
633
1025
  version: '$1'
634
1026
 
635
- - regex: '(Debian|Knoppix|Mint(?! Browser)|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack|Freebox)(?:(?: Enterprise)? Linux)?(?:[ /\-](\d+[\.\d]+))?'
1027
+ - regex: '(Debian|Knoppix|Mint(?! Browser)|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack|Freebox|ASPLinux)(?:(?: Enterprise)? Linux)?(?:[ /\-](\d+[\.\d]+))?'
636
1028
  name: '$1'
637
1029
  version: '$2'
638
1030
 
639
- - regex: '.+redhat-linux-gnu'
640
- name: 'Red Hat'
641
- version: ''
642
-
643
1031
  - regex: 'OS ROSA; Linux'
644
1032
  name: 'Rosa'
645
1033
  version: ''
@@ -695,7 +1083,7 @@
695
1083
  name: 'Windows'
696
1084
  version: '$1'
697
1085
 
698
- - regex: 'mingw32|winhttp'
1086
+ - regex: 'mingw32|winhttp|WhatsApp/.*W$'
699
1087
  name: 'Windows'
700
1088
  version: ''
701
1089
 
@@ -703,59 +1091,71 @@
703
1091
  name: 'Windows'
704
1092
  version: '$1'
705
1093
 
706
- - regex: 'CYGWIN_NT-10.0|Windows NT 10.0|Windows 10'
1094
+ - regex: 'CYGWIN_NT-10\.0|Windows NT 10\.0|Windows[ /]10'
707
1095
  name: 'Windows'
708
1096
  version: '10'
709
1097
 
710
- - regex: 'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10|win10'
1098
+ - regex: 'CYGWIN_NT-6\.4|Windows NT 6\.4|Windows 10|win10'
711
1099
  name: 'Windows'
712
1100
  version: '10'
713
1101
 
714
- - regex: 'CYGWIN_NT-6.3|Windows NT 6.3|Windows 8.1'
1102
+ - regex: 'Windows/2012ServerR2'
1103
+ name: 'Windows'
1104
+ version: 'Server 2012 R2'
1105
+
1106
+ - regex: 'CYGWIN_NT-6\.3|Windows NT 6\.3|Windows[ /]8\.1'
715
1107
  name: 'Windows'
716
1108
  version: '8.1'
717
1109
 
718
- - regex: 'CYGWIN_NT-6.2|Windows NT 6.2|Windows 8'
1110
+ - regex: 'Windows/2012Server'
1111
+ name: 'Windows'
1112
+ version: 'Server 2012'
1113
+
1114
+ - regex: 'CYGWIN_NT-6\.2|Windows NT 6\.2|Windows 8|post2008Server'
719
1115
  name: 'Windows'
720
1116
  version: '8'
721
1117
 
722
- - regex: 'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7|win7|Windows \(6.1'
1118
+ - regex: 'Windows/2008ServerR2'
1119
+ name: 'Windows'
1120
+ version: 'Server 2008 R2'
1121
+
1122
+ - regex: 'CYGWIN_NT-6\.1|Windows NT 6\.1|Windows[ /]7|win7|Windows \(6\.1'
723
1123
  name: 'Windows'
724
1124
  version: '7'
725
1125
 
726
- - regex: 'CYGWIN_NT-6.0|Windows NT 6.0|Windows Vista'
1126
+ - regex: 'CYGWIN_NT-6\.0|Windows NT 6\.0|Windows Vista'
727
1127
  name: 'Windows'
728
1128
  version: 'Vista'
729
1129
 
730
- - regex: 'CYGWIN_NT-5.2|Windows NT 5.2|Windows Server 2003 / XP x64'
1130
+ - regex: 'CYGWIN_NT-5\.2|Windows NT 5\.2|Windows Server 2003 / XP x64|Windows/2003Server'
731
1131
  name: 'Windows'
732
1132
  version: 'Server 2003'
733
1133
 
734
- - regex: 'CYGWIN_NT-5.1|Windows NT 5.1|Windows XP'
1134
+ - regex: 'CYGWIN_NT-5\.1|Windows NT 5\.1|Windows XP'
735
1135
  name: 'Windows'
736
1136
  version: 'XP'
737
1137
 
738
- - regex: 'CYGWIN_NT-5.0|Windows NT 5.0|Windows 2000'
1138
+ - regex: 'CYGWIN_NT-5\.0|Windows NT 5\.0|Windows 2000'
739
1139
  name: 'Windows'
740
1140
  version: '2000'
741
1141
 
742
- - regex: 'CYGWIN_NT-4.0|Windows NT 4.0|WinNT|Windows NT'
1142
+ - regex: 'CYGWIN_NT-4\.0|Windows NT 4\.0|WinNT|Windows NT'
743
1143
  name: 'Windows'
744
1144
  version: 'NT'
745
1145
 
746
- - regex: 'CYGWIN_ME-4.90|Win 9x 4.90|Windows ME'
1146
+ - regex: 'CYGWIN_ME-4\.90|Win 9x 4\.90|Windows ME'
747
1147
  name: 'Windows'
748
1148
  version: 'ME'
749
1149
 
750
- - regex: 'CYGWIN_98-4.10|Win98|Windows 98'
1150
+ - regex: 'CYGWIN_98-4\.10|Win98|Windows 98'
751
1151
  name: 'Windows'
752
1152
  version: '98'
753
1153
 
754
- - regex: 'CYGWIN_95-4.0|Win32|Win95|Windows 95|Windows_95'
1154
+ - regex: 'CYGWIN_95-4\.0|Win32|Win95|Windows 95|Windows_95'
755
1155
  name: 'Windows'
756
1156
  version: '95'
757
1157
 
758
- - regex: 'Windows 3.1'
1158
+ - regex: 'Windows 3\.1'
759
1159
  name: 'Windows'
760
1160
  version: '3.1'
761
1161
 
@@ -777,15 +1177,23 @@
777
1177
  ##########
778
1178
  # tvOS (https://developer.apple.com/tvos/)
779
1179
  ##########
780
- - regex: 'Apple ?TV.*CPU (?:iPhone )?OS ((?:9|1[0-7])[_\.]\d+(?:[_.]\d+)*)'
1180
+ - regex: 'Apple ?TV.*CPU (?:iPhone )?OS ((?:9|1[0-8])[_\.]\d+(?:[_.]\d+)*)'
781
1181
  name: 'tvOS'
782
1182
  version: '$1'
783
1183
 
784
- - regex: 'iOS(?:; |/)((?:9|1[0-7]).\d+(?:[_\.]\d+)*) (?:model/)?AppleTV'
1184
+ - regex: 'Apple TV; iOS ((?:9|1[0-8])[_\.]\d+(?:[_.]\d+)*)'
785
1185
  name: 'tvOS'
786
1186
  version: '$1'
787
1187
 
788
- - regex: 'tvOS((?:9|1[0-7]).\d+(?:[_\.]\d+)*);'
1188
+ - regex: 'iOS(?:; |/)((?:9|1[0-8])\.\d+(?:[_\.]\d+)*) (?:model/)?AppleTV'
1189
+ name: 'tvOS'
1190
+ version: '$1'
1191
+
1192
+ - regex: 'tvOS[ /]?((?:9|1[0-8])\.\d+(?:[_\.]\d+)*);?'
1193
+ name: 'tvOS'
1194
+ version: '$1'
1195
+
1196
+ - regex: 'AppleTV(?:/?(\d+[\.\d]+))?'
789
1197
  name: 'tvOS'
790
1198
  version: '$1'
791
1199
 
@@ -802,34 +1210,38 @@
802
1210
  ##########
803
1211
  # iPadOS (https://www.apple.com/ipados/)
804
1212
  ##########
805
- - regex: 'FBMD/iPad;.*FBSV/ ?(1[3-7]).(\d+[\.\d]*);'
1213
+ - regex: 'FBMD/iPad;.*FBSV/ ?(1[3-8]).(\d+[\.\d]*);'
806
1214
  name: 'iPadOS'
807
1215
  version: '$1.$2'
808
1216
 
809
- - regex: 'iPad(?:OS)?/(1[3-7]).(\d+[\.\d]*)'
1217
+ - regex: 'iPad(?:OS)?[ /](1[3-8])\.(\d+[\.\d]*)'
810
1218
  name: 'iPadOS'
811
1219
  version: '$1.$2'
812
1220
 
813
- - regex: '^iPad(?:\d+[\,\d]*)/(1[3-7]).(\d+[\.\d]*)'
1221
+ - regex: '^iPad(?:\d+[\,\d]*)/(1[3-8])\.(\d+[\.\d]*)'
814
1222
  name: 'iPadOS'
815
1223
  version: '$1.$2'
816
1224
 
817
- - regex: 'iPad(?:; (?:iOS|iPadOS|iPhone OS)|.+CPU OS) ((1[3-7])+(?:[_\.]\d+)*)'
1225
+ - regex: 'iPad(?:; (?:iOS|iPadOS|iPhone OS)|.+CPU (?:iPad |iPhone )?OS) ((1[3-8])+(?:[_\.]\d+)*)'
818
1226
  name: 'iPadOS'
819
1227
  version: '$1'
820
1228
 
821
- - regex: 'iOS/(1[3-7]).(\d+[\.\d]*).+Apple/iPad'
1229
+ - regex: 'iOS/(1[3-8])\.(\d+[\.\d]*).+Apple/iPad'
822
1230
  name: 'iPadOS'
823
1231
  version: '$1.$2'
824
1232
 
825
- - regex: 'iPhone OS,(1[3-7]).(\d+[\.\d]*).+iPad'
1233
+ - regex: 'iPhone OS,(1[3-8])\.(\d+[\.\d]*).+iPad'
826
1234
  name: 'iPadOS'
827
1235
  version: '$1.$2'
828
1236
 
1237
+ - regex: 'Pinterest for iOS/.*iPad.*; (\d(?:[\d\.]*))[)]$'
1238
+ name: 'iPadOS'
1239
+ version: '$1'
1240
+
829
1241
  ##########
830
1242
  # iOS
831
1243
  ##########
832
- - regex: 'iPad/([89]|1[012]).(\d+[\.\d]*)'
1244
+ - regex: 'iPad/([89]|1[012])\.(\d+[\.\d]*)'
833
1245
  name: 'iOS'
834
1246
  version: '$1.$2'
835
1247
 
@@ -837,7 +1249,7 @@
837
1249
  name: 'iOS'
838
1250
  version: '$1'
839
1251
 
840
- - regex: 'Pinterest for iOS/.*; (\d(?:[\d\.]*))[)]$'
1252
+ - regex: 'Pinterest for iOS/.*iPhone.*; (\d(?:[\d\.]*))[)]$'
841
1253
  name: 'iOS'
842
1254
  version: '$1'
843
1255
 
@@ -845,92 +1257,108 @@
845
1257
  name: 'iOS'
846
1258
  version: '$1'
847
1259
 
1260
+ - regex: 'iPhone OS ([0-9]{1})([0-9]{1})([0-9]{1})'
1261
+ name: 'iOS'
1262
+ version: '$1.$2.$3'
1263
+
1264
+ - regex: '(?:CPU OS|iPh(?:one)?[ _]OS|iPhone.+ OS|PodMN.+iPhone|iOS)[ _/](\d+(?:[_\.]\d+)*)'
1265
+ name: 'iOS'
1266
+ version: '$1'
1267
+
848
1268
  - regex: '(?:iPhone ?OS|iOS(?: Version)?)(?:/|; |,)(\d+[\.\d]+)'
849
1269
  name: 'iOS'
850
1270
  version: '$1'
851
1271
 
852
- - regex: '^(?!com.apple.Safari.SearchHelper|Safari).*CFNetwork/.+ Darwin/(\d+[\.\d]+)(?!.*(?:x86_64|i386|PowerMac|Power%20Macintosh))'
1272
+ - regex: '^(?!com\.apple\.Safari\.SearchHelper|Safari).*(?:CFNetwork|Mana)/.+ Darwin/(\d+[\.\d]+)(?!.*(?:x86_64|i386|PowerMac|Power%20Macintosh))'
853
1273
  name: 'iOS'
854
1274
  versions:
855
- - regex: 'Darwin/23.2.0'
1275
+ - regex: 'Darwin/24\.0\.0'
1276
+ version: '18.0'
1277
+ - regex: 'Darwin/23\.5\.0'
1278
+ version: '17.5'
1279
+ - regex: 'Darwin/23\.4\.0'
1280
+ version: '17.4'
1281
+ - regex: 'Darwin/23\.3\.0'
1282
+ version: '17.3'
1283
+ - regex: 'Darwin/23\.2\.0'
856
1284
  version: '17.2'
857
- - regex: 'Darwin/23.1.0'
1285
+ - regex: 'Darwin/23\.1\.0'
858
1286
  version: '17.1'
859
- - regex: 'Darwin/23.0.0'
1287
+ - regex: 'Darwin/23\.0\.0'
860
1288
  version: '17.0'
861
- - regex: 'Darwin/22.6.0'
1289
+ - regex: 'Darwin/22\.6\.0'
862
1290
  version: '16.6'
863
- - regex: 'Darwin/22.5.0'
1291
+ - regex: 'Darwin/22\.5\.0'
864
1292
  version: '16.5'
865
- - regex: 'Darwin/22.4.0'
1293
+ - regex: 'Darwin/22\.4\.0'
866
1294
  version: '16.4'
867
- - regex: 'Darwin/22.3.0'
1295
+ - regex: 'Darwin/22\.3\.0'
868
1296
  version: '16.3'
869
- - regex: 'Darwin/22.2.0'
1297
+ - regex: 'Darwin/22\.2\.0'
870
1298
  version: '16.2'
871
- - regex: 'Darwin/22.1.0'
1299
+ - regex: 'Darwin/22\.1\.0'
872
1300
  version: '16.1'
873
- - regex: 'Darwin/22.0.0'
1301
+ - regex: 'Darwin/22\.0\.0'
874
1302
  version: '16.0'
875
- - regex: 'Darwin/21.6.0'
1303
+ - regex: 'Darwin/21\.6\.0'
876
1304
  version: '15.6'
877
- - regex: 'Darwin/21.5.0'
1305
+ - regex: 'Darwin/21\.5\.0'
878
1306
  version: '15.5'
879
- - regex: 'Darwin/21.4.0'
1307
+ - regex: 'Darwin/21\.4\.0'
880
1308
  version: '15.4'
881
- - regex: 'Darwin/21.3.0'
1309
+ - regex: 'Darwin/21\.3\.0'
882
1310
  version: '15.3'
883
- - regex: 'Darwin/21.2.0'
1311
+ - regex: 'Darwin/21\.2\.0'
884
1312
  version: '15.2'
885
- - regex: 'Darwin/21.1.0'
1313
+ - regex: 'Darwin/21\.1\.0'
886
1314
  version: '15.1'
887
- - regex: 'Darwin/21.0.0'
1315
+ - regex: 'Darwin/21\.0\.0'
888
1316
  version: '15.0'
889
- - regex: 'Darwin/20.6.0'
1317
+ - regex: 'Darwin/20\.6\.0'
890
1318
  version: '14.7'
891
- - regex: 'Darwin/20.5.0'
1319
+ - regex: 'Darwin/20\.5\.0'
892
1320
  version: '14.6'
893
- - regex: 'Darwin/20.4.0'
1321
+ - regex: 'Darwin/20\.4\.0'
894
1322
  version: '14.5'
895
- - regex: 'Darwin/20.3.0'
1323
+ - regex: 'Darwin/20\.3\.0'
896
1324
  version: '14.4'
897
- - regex: 'Darwin/20.2.0'
1325
+ - regex: 'Darwin/20\.2\.0'
898
1326
  version: '14.3'
899
- - regex: 'Darwin/20.1.0'
1327
+ - regex: 'Darwin/20\.1\.0'
900
1328
  version: '14.2'
901
- - regex: 'Darwin/20.0.0'
1329
+ - regex: 'Darwin/20\.0\.0'
902
1330
  version: '14.0'
903
- - regex: 'Darwin/19.6.0'
1331
+ - regex: 'Darwin/19\.6\.0'
904
1332
  version: '13.6'
905
- - regex: 'Darwin/19.5.0'
1333
+ - regex: 'Darwin/19\.5\.0'
906
1334
  version: '13.5'
907
- - regex: 'Darwin/19.4.0'
1335
+ - regex: 'Darwin/19\.4\.0'
908
1336
  version: '13.4'
909
- - regex: 'Darwin/19.3.0'
1337
+ - regex: 'Darwin/19\.3\.0'
910
1338
  version: '13.3.1'
911
- - regex: 'Darwin/19.2.0'
1339
+ - regex: 'Darwin/19\.2\.0'
912
1340
  version: '13.3'
913
- - regex: 'Darwin/19.0.0'
1341
+ - regex: 'Darwin/19\.0\.0'
914
1342
  version: '13.0'
915
- - regex: 'Darwin/18.7.0'
1343
+ - regex: 'Darwin/18\.7\.0'
916
1344
  version: '12.4'
917
- - regex: 'Darwin/18.6.0'
1345
+ - regex: 'Darwin/18\.6\.0'
918
1346
  version: '12.3'
919
- - regex: 'Darwin/18.5.0'
1347
+ - regex: 'Darwin/18\.5\.0'
920
1348
  version: '12.2'
921
- - regex: 'Darwin/18.2.0'
1349
+ - regex: 'Darwin/18\.2\.0'
922
1350
  version: '12.1'
923
- - regex: 'Darwin/18.0.0'
1351
+ - regex: 'Darwin/18\.0\.0'
924
1352
  version: '12.0'
925
- - regex: 'Darwin/17.7.0'
1353
+ - regex: 'Darwin/17\.7\.0'
926
1354
  version: '11.4.1'
927
- - regex: 'Darwin/17.6.0'
1355
+ - regex: 'Darwin/17\.6\.0'
928
1356
  version: '11.4'
929
- - regex: 'Darwin/17.5.0'
1357
+ - regex: 'Darwin/17\.5\.0'
930
1358
  version: '11.3'
931
- - regex: 'Darwin/17.4.0'
1359
+ - regex: 'Darwin/17\.4\.0'
932
1360
  version: '11.2.6'
933
- - regex: 'Darwin/17.3.0'
1361
+ - regex: 'Darwin/17\.3\.0'
934
1362
  version: '11.2'
935
1363
  - regex: 'CFNetwork/889'
936
1364
  version: '11.1'
@@ -1009,14 +1437,6 @@
1009
1437
  name: 'iOS'
1010
1438
  version: '$1.$2'
1011
1439
 
1012
- - regex: 'iPhone OS ([0-9]{1})([0-9]{1})([0-9]{1})'
1013
- name: 'iOS'
1014
- version: '$1.$2.$3'
1015
-
1016
- - regex: '(?:CPU OS|iPh(?:one)?[ _]OS|iPhone.+ OS|PodMN.+iPhone|iOS)[ _/](\d+(?:[_\.]\d+)*)'
1017
- name: 'iOS'
1018
- version: '$1'
1019
-
1020
1440
  - regex: 'FBMD/iPhone;.*FBSV/ ?(\d+[\.\d]+);'
1021
1441
  name: 'iOS'
1022
1442
  version: '$1'
@@ -1053,7 +1473,7 @@
1053
1473
  name: 'iOS'
1054
1474
  version: '$1'
1055
1475
 
1056
- - regex: '(?:Podcasts/(?:[\d\.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|\(iOS\)|iOS; Opera|Overcast|Castro|Podcat|iCatcher|RSSRadio/|MobileSafari/)(?!.*x86_64)'
1476
+ - regex: '(?:Podcasts/(?:[\d\.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|\(iOS\)|iOS; Opera|Overcast|Castro|Podcat|iCatcher|RSSRadio/|MobileSafari/|WhatsApp/.*i$)(?!.*x86_64)'
1057
1477
  name: 'iOS'
1058
1478
  version: ''
1059
1479
 
@@ -1061,7 +1481,7 @@
1061
1481
  name: 'iOS'
1062
1482
  version: ''
1063
1483
 
1064
- - regex: 'iOS/Version ([\d\.]+)'
1484
+ - regex: 'iOS[ /]Version ([\d\.]+)'
1065
1485
  name: 'iOS'
1066
1486
  version: '$1'
1067
1487
 
@@ -1069,185 +1489,193 @@
1069
1489
  name: 'iOS'
1070
1490
  version: ''
1071
1491
 
1072
- - regex: 'CaptiveNetworkSupport|AirPlay'
1492
+ - regex: 'CaptiveNetworkSupport|AirPlay|.*[ \.\-/]iOS'
1073
1493
  name: 'iOS'
1074
1494
  version: ''
1075
1495
 
1076
1496
  ##########
1077
1497
  # Mac
1078
1498
  ##########
1079
- - regex: '(?:CFNetwork|StudioDisplay)/.+Darwin(?:/|; )(?:[\d\.]+).+(?:x86_64|i386|Power%20Macintosh)|(?:x86_64-apple-)?darwin(?:[\d\.]+)|PowerMac|com.apple.Safari.SearchHelper|^Safari'
1499
+ - regex: '(?:CFNetwork|Mana|StudioDisplay)/.+Darwin(?:/|; )(?:[\d\.]+).+(?:x86_64|i386|Power%20Macintosh)|(?:x86_64-apple-)?darwin(?:[\d\.]+)|C?Python.*Darwin|PowerMac|com\.apple\.Safari\.SearchHelper|^Safari'
1080
1500
  name: 'Mac'
1081
1501
  versions:
1082
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23.2.0'
1502
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?24\.0\.0'
1503
+ version: '15.0'
1504
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23\.5\.0'
1505
+ version: '14.5'
1506
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23\.4\.0'
1507
+ version: '14.4'
1508
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23\.3\.0'
1509
+ version: '14.3'
1510
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23\.2\.0'
1083
1511
  version: '14.2'
1084
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23.1.0'
1512
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23\.1\.0'
1085
1513
  version: '14.1'
1086
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23.0.0'
1514
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23\.0\.0'
1087
1515
  version: '14.0'
1088
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22.6.0'
1516
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.6\.0'
1089
1517
  version: '13.5'
1090
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22.5.0'
1518
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.5\.0'
1091
1519
  version: '13.4'
1092
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22.4.0'
1520
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.4\.0'
1093
1521
  version: '13.3'
1094
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22.3.0'
1522
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.3\.0'
1095
1523
  version: '13.2'
1096
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22.2.0'
1524
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.2\.0'
1097
1525
  version: '13.1'
1098
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22.1.0'
1526
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.1\.0'
1099
1527
  version: '13.0.1'
1100
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22.0.0'
1528
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.0\.0'
1101
1529
  version: '13.0'
1102
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21.6.0'
1530
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.6\.0'
1103
1531
  version: '12.5'
1104
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21.5.0'
1532
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.5\.0'
1105
1533
  version: '12.4'
1106
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21.4.0'
1534
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.4\.0'
1107
1535
  version: '12.3'
1108
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21.3.0'
1536
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.3\.0'
1109
1537
  version: '12.2'
1110
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21.2.0'
1538
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.2\.0'
1111
1539
  version: '12.1'
1112
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21.1.0'
1540
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.1\.0'
1113
1541
  version: '12.0.1'
1114
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21.0.0'
1542
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.0\.0'
1115
1543
  version: '12.0'
1116
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20.6.0'
1544
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20\.6\.0'
1117
1545
  version: '11.5'
1118
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20.5.0'
1546
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20\.5\.0'
1119
1547
  version: '11.4'
1120
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20.4.0'
1548
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20\.4\.0'
1121
1549
  version: '11.3'
1122
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20.3.0'
1550
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20\.3\.0'
1123
1551
  version: '11.2'
1124
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20.2.0.*'
1552
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20\.2\.0.*'
1125
1553
  version: '11.1'
1126
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20.[01].0'
1554
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20\.[01]\.0'
1127
1555
  version: '11.0'
1128
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19.6.0'
1556
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19\.6\.0'
1129
1557
  version: '10.15.6'
1130
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19.5.0'
1558
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19\.5\.0'
1131
1559
  version: '10.15.5'
1132
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19.4.0'
1560
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19\.4\.0'
1133
1561
  version: '10.15.4'
1134
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19.3.0'
1562
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19\.3\.0'
1135
1563
  version: '10.15.3'
1136
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19.2.0'
1564
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19\.2\.0'
1137
1565
  version: '10.15.2'
1138
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19.0.0'
1566
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19\.0\.0'
1139
1567
  version: '10.15'
1140
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18.7.0'
1568
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18\.7\.0'
1141
1569
  version: '10.14'
1142
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18.6.0'
1570
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18\.6\.0'
1143
1571
  version: '10.14.5'
1144
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18.5.0'
1572
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18\.5\.0'
1145
1573
  version: '10.14.4'
1146
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18.2.0'
1574
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18\.2\.0'
1147
1575
  version: '10.14.1'
1148
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18.0.0'
1576
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18\.0\.0'
1149
1577
  version: '10.14'
1150
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17.7.0'
1578
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.7\.0'
1151
1579
  version: '10.13.6'
1152
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17.6.0'
1580
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.6\.0'
1153
1581
  version: '10.13.5'
1154
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17.5.0'
1582
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.5\.0'
1155
1583
  version: '10.13.4'
1156
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17.4.0'
1584
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.4\.0'
1157
1585
  version: '10.13.3'
1158
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17.3.0'
1586
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.3\.0'
1159
1587
  version: '10.13.2'
1160
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17.2.0'
1588
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.2\.0'
1161
1589
  version: '10.13.1'
1162
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17.0.0'
1590
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.0\.0'
1163
1591
  version: '10.13'
1164
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16.7.0'
1592
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.7\.0'
1165
1593
  version: '10.12.6'
1166
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16.6.0'
1594
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.6\.0'
1167
1595
  version: '10.12.5'
1168
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16.5.0'
1596
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.5\.0'
1169
1597
  version: '10.12.4'
1170
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16.4.0'
1598
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.4\.0'
1171
1599
  version: '10.12.3'
1172
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16.3.0'
1600
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.3\.0'
1173
1601
  version: '10.12.2'
1174
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16.2.0'
1602
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.2\.0'
1175
1603
  version: '10.12.2'
1176
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16.1.0'
1604
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.1\.0'
1177
1605
  version: '10.12.1'
1178
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16.0.0'
1606
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.0\.0'
1179
1607
  version: '10.12'
1180
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15.6.0'
1608
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15\.6\.0'
1181
1609
  version: '10.11.6'
1182
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15.5.0'
1610
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15\.5\.0'
1183
1611
  version: '10.11.5'
1184
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15.4.0'
1612
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15\.4\.0'
1185
1613
  version: '10.11.4'
1186
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15.3.0'
1614
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15\.3\.0'
1187
1615
  version: '10.11.3'
1188
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15.2.0'
1616
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15\.2\.0'
1189
1617
  version: '10.11.2'
1190
1618
  - regex: 'CFNetwork/760'
1191
1619
  version: '10.11'
1192
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14.5.0'
1620
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14\.5\.0'
1193
1621
  version: '10.10.5'
1194
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14.4.0'
1622
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14\.4\.0'
1195
1623
  version: '10.10.4'
1196
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14.3.0'
1624
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14\.3\.0'
1197
1625
  version: '10.10.3'
1198
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14.1.0'
1626
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14\.1\.0'
1199
1627
  version: '10.10.2'
1200
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14.0.0'
1628
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14\.0\.0'
1201
1629
  version: '10.10'
1202
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13.4.0'
1630
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13\.4\.0'
1203
1631
  version: '10.9.5'
1204
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13.3.0'
1632
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13\.3\.0'
1205
1633
  version: '10.9.4'
1206
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13.2.0'
1634
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13\.2\.0'
1207
1635
  version: '10.9.3'
1208
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13.1.0'
1636
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13\.1\.0'
1209
1637
  version: '10.9.2'
1210
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13.0.0'
1638
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13\.0\.0'
1211
1639
  version: '10.9.0'
1212
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12.6.0'
1640
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12\.6\.0'
1213
1641
  version: '10.8.5'
1214
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12.5.0'
1642
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12\.5\.0'
1215
1643
  version: '10.8.5'
1216
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12.4.0'
1644
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12\.4\.0'
1217
1645
  version: '10.8.4'
1218
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12.3.0'
1646
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12\.3\.0'
1219
1647
  version: '10.8.3'
1220
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12.2.0'
1648
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12\.2\.0'
1221
1649
  version: '10.8.2'
1222
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12.1.0'
1650
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12\.1\.0'
1223
1651
  version: '10.8.1'
1224
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11.5.0'
1652
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11\.5\.0'
1225
1653
  version: '10.7.5'
1226
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11.4.2'
1654
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11\.4\.2'
1227
1655
  version: '10.7.5'
1228
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11.4.0'
1656
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11\.4\.0'
1229
1657
  version: '10.7.4'
1230
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11.3.0'
1658
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11\.3\.0'
1231
1659
  version: '10.7.3'
1232
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11.2.0'
1660
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11\.2\.0'
1233
1661
  version: '10.7.2'
1234
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11.1.0'
1662
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11\.1\.0'
1235
1663
  version: '10.7.1'
1236
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?10.8.0'
1664
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?10\.8\.0'
1237
1665
  version: '10.6.8'
1238
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?10.7.[34]'
1666
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?10\.7\.[34]'
1239
1667
  version: '10.6.7'
1240
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?10.3.0'
1668
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?10\.3\.0'
1241
1669
  version: '10.6.3'
1242
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?10.0.0'
1670
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?10\.0\.0'
1243
1671
  version: '10.6'
1244
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?9.8.0'
1672
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?9\.8\.0'
1245
1673
  version: '10.5.8'
1246
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?9.7.1'
1674
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?9\.7\.1'
1247
1675
  version: '10.5.7'
1248
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?9.6.2'
1676
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?9\.6\.2'
1249
1677
  version: '10.5.6'
1250
- - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?9.5.[05]'
1678
+ - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?9\.5\.[05]'
1251
1679
  version: '10.5.5'
1252
1680
 
1253
1681
  - regex: 'Macintosh;Mac OS X \((\d+[\.\d]+)\);'
@@ -1262,7 +1690,7 @@
1262
1690
  name: 'Mac'
1263
1691
  version: '$1'
1264
1692
 
1265
- - regex: '(?:macOS[ /,]|Mac-)(\d+[\.\d]+)'
1693
+ - regex: '(?:macOS(?:\(Catalyst\))?[ /,]|Mac-)(\d+[\.\d]+)'
1266
1694
  name: 'Mac'
1267
1695
  version: '$1'
1268
1696
 
@@ -1270,23 +1698,13 @@
1270
1698
  name: 'Mac'
1271
1699
  version: '$1'
1272
1700
 
1273
- - regex: 'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC|iMac|MacBook|macOS|AppleExchangeWebServices|com.apple.trustd|Sonos/.+\(MDCR_'
1701
+ - regex: 'OSX/(\d+[\.\d]+)'
1274
1702
  name: 'Mac'
1275
- version: ''
1276
-
1277
- ##########
1278
- # SeewoOS
1279
- ##########
1280
- - regex: 'SeewoOS x86_64 (\d+[\.\d]+)'
1281
- name: 'SeewoOS'
1282
1703
  version: '$1'
1283
1704
 
1284
- ##########
1285
- # ChromeOS
1286
- ##########
1287
- - regex: 'CrOS [a-z0-9_]+ (\d+[\.\d]+)'
1288
- name: 'Chrome OS'
1289
- version: '$1'
1705
+ - regex: 'Darwin|Macintosh|Mac[ _]PowerPC|PPC|iMac|MacBook|.*macOS|AppleExchangeWebServices|com\.apple\.trustd|Sonos/.+\(MDCR_|WhatsApp/.*N$'
1706
+ name: 'Mac'
1707
+ version: ''
1290
1708
 
1291
1709
  ##########
1292
1710
  # Fuchsia
@@ -1413,10 +1831,6 @@
1413
1831
  name: 'Google TV'
1414
1832
  version: '$1'
1415
1833
 
1416
- - regex: 'AppleTV(?:/?(\d+[\.\d]+))?'
1417
- name: 'tvOS'
1418
- version: '$1'
1419
-
1420
1834
  - regex: 'WebTV/(\d+[\.\d]+)'
1421
1835
  name: 'WebTV'
1422
1836
  version: '$1'
@@ -1436,6 +1850,11 @@
1436
1850
  name: 'HP-UX'
1437
1851
  version: '$1'
1438
1852
 
1853
+ # ElectroBSD (https://www.fabiankeil.de/gehacktes/electrobsd/)
1854
+ - regex: 'ElectroBSD(?:[/ ]?(\d+[\.\d]+))?'
1855
+ name: 'ElectroBSD'
1856
+ version: '$1'
1857
+
1439
1858
  - regex: 'FreeBSD(?:[/ ]?(\d+[\.\d]+))?'
1440
1859
  name: 'FreeBSD'
1441
1860
  version: '$1'
@@ -1497,6 +1916,10 @@
1497
1916
  ##########
1498
1917
  # IBM
1499
1918
  ##########
1919
+ - regex: 'OS/2; Warp (\d+[\.\d]+)'
1920
+ name: 'OS/2'
1921
+ version: '$1'
1922
+
1500
1923
  - regex: 'OS/2'
1501
1924
  name: 'OS/2'
1502
1925
  version: ''
@@ -1508,13 +1931,13 @@
1508
1931
  name: 'GNU/Linux'
1509
1932
  version: '$1'
1510
1933
 
1511
- - regex: 'Linux(?:OS)?[^a-z]|Cinnamon/(?:\d+[\.\d]+)|.+(?:pc|unknown)-linux-gnu'
1934
+ - regex: 'Linux[^a-z]|Cinnamon/(?:\d+[\.\d]+)|.+(?:pc|unknown)-linux-gnu|X11'
1512
1935
  name: 'GNU/Linux'
1513
1936
  version: ''
1514
1937
 
1515
1938
  ##########
1516
1939
  # Java ME (Java Platform, Micro Edition)
1517
1940
  ##########
1518
- - regex: 'Java ME|(J2ME|Profile)/MIDP|MIDP-(?:\d+[\.\d]+)/CLDC|Configuration/CLDC|Java; U; MIDP|MMP/\d.\d'
1941
+ - regex: 'Java ME|(J2ME|Profile)/MIDP|MIDP-(?:\d+[\.\d]+)/CLDC|Configuration/CLDC|Java; U; MIDP|MMP/\d\.\d'
1519
1942
  name: 'Java ME'
1520
1943
  version: ''