device_detector 1.0.4 → 1.0.7
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +8 -7
- data/lib/device_detector/browser.rb +364 -0
- data/lib/device_detector/client.rb +8 -0
- data/lib/device_detector/device.rb +1204 -2
- data/lib/device_detector/os.rb +39 -12
- data/lib/device_detector/parser.rb +1 -1
- data/lib/device_detector/version.rb +1 -1
- data/lib/device_detector/version_extractor.rb +28 -0
- data/lib/device_detector.rb +57 -13
- data/regexes/bots.yml +651 -61
- data/regexes/client/browser_engine.yml +7 -1
- data/regexes/client/browsers.yml +774 -78
- data/regexes/client/feed_readers.yml +4 -10
- data/regexes/client/libraries.yml +71 -2
- data/regexes/client/mediaplayers.yml +25 -1
- data/regexes/client/mobile_apps.yml +923 -73
- data/regexes/client/pim.yml +65 -2
- data/regexes/device/cameras.yml +5 -5
- data/regexes/device/car_browsers.yml +16 -0
- data/regexes/device/consoles.yml +13 -1
- data/regexes/device/mobiles.yml +17029 -3889
- data/regexes/device/notebooks.yml +114 -0
- data/regexes/device/portable_media_player.yml +36 -9
- data/regexes/device/shell_tv.yml +117 -0
- data/regexes/device/televisions.yml +439 -34
- data/regexes/oss.yml +620 -284
- metadata +9 -131
- data/.gitignore +0 -14
- data/.rubocop.yml +0 -49
- data/.ruby-version +0 -1
- data/.travis.yml +0 -14
- data/Gemfile +0 -8
- data/Rakefile +0 -85
- data/device_detector.gemspec +0 -27
- data/spec/device_detector/bot_fixtures_spec.rb +0 -30
- data/spec/device_detector/client_fixtures_spec.rb +0 -31
- data/spec/device_detector/concrete_user_agent_spec.rb +0 -135
- data/spec/device_detector/detector_fixtures_spec.rb +0 -100
- data/spec/device_detector/device_fixtures_spec.rb +0 -36
- data/spec/device_detector/device_spec.rb +0 -131
- data/spec/device_detector/memory_cache_spec.rb +0 -148
- data/spec/device_detector/model_extractor_spec.rb +0 -63
- data/spec/device_detector/os_fixtures_spec.rb +0 -26
- data/spec/device_detector/version_extractor_spec.rb +0 -79
- data/spec/device_detector_spec.rb +0 -189
- data/spec/fixtures/client/browser.yml +0 -2836
- data/spec/fixtures/client/feed_reader.yml +0 -199
- data/spec/fixtures/client/library.yml +0 -193
- data/spec/fixtures/client/mediaplayer.yml +0 -163
- data/spec/fixtures/client/mobile_app.yml +0 -217
- data/spec/fixtures/client/pim.yml +0 -115
- data/spec/fixtures/detector/bots.yml +0 -3726
- data/spec/fixtures/detector/camera.yml +0 -141
- data/spec/fixtures/detector/car_browser.yml +0 -81
- data/spec/fixtures/detector/console.yml +0 -321
- data/spec/fixtures/detector/desktop.yml +0 -5461
- data/spec/fixtures/detector/feature_phone.yml +0 -891
- data/spec/fixtures/detector/feed_reader.yml +0 -551
- data/spec/fixtures/detector/mediaplayer.yml +0 -253
- data/spec/fixtures/detector/mobile_apps.yml +0 -494
- data/spec/fixtures/detector/phablet.yml +0 -4167
- data/spec/fixtures/detector/portable_media_player.yml +0 -178
- data/spec/fixtures/detector/smart_display.yml +0 -61
- data/spec/fixtures/detector/smart_speaker.yml +0 -55
- data/spec/fixtures/detector/smartphone-1.yml +0 -9927
- data/spec/fixtures/detector/smartphone-10.yml +0 -9977
- data/spec/fixtures/detector/smartphone-11.yml +0 -9891
- data/spec/fixtures/detector/smartphone-12.yml +0 -9906
- data/spec/fixtures/detector/smartphone-13.yml +0 -9920
- data/spec/fixtures/detector/smartphone-14.yml +0 -2662
- data/spec/fixtures/detector/smartphone-2.yml +0 -9992
- data/spec/fixtures/detector/smartphone-3.yml +0 -9945
- data/spec/fixtures/detector/smartphone-4.yml +0 -9923
- data/spec/fixtures/detector/smartphone-5.yml +0 -9914
- data/spec/fixtures/detector/smartphone-6.yml +0 -9962
- data/spec/fixtures/detector/smartphone-7.yml +0 -9899
- data/spec/fixtures/detector/smartphone-8.yml +0 -9931
- data/spec/fixtures/detector/smartphone-9.yml +0 -9899
- data/spec/fixtures/detector/smartphone.yml +0 -9984
- data/spec/fixtures/detector/tablet-1.yml +0 -9995
- data/spec/fixtures/detector/tablet-2.yml +0 -9977
- data/spec/fixtures/detector/tablet-3.yml +0 -9959
- data/spec/fixtures/detector/tablet-4.yml +0 -4528
- data/spec/fixtures/detector/tablet.yml +0 -9971
- data/spec/fixtures/detector/tv.yml +0 -4933
- data/spec/fixtures/detector/unknown.yml +0 -3236
- data/spec/fixtures/detector/wearable.yml +0 -61
- data/spec/fixtures/device/camera.yml +0 -19
- data/spec/fixtures/device/car_browser.yml +0 -13
- data/spec/fixtures/device/console.yml +0 -79
- data/spec/fixtures/parser/oss.yml +0 -1082
- data/spec/fixtures/parser/vendorfragments.yml +0 -168
- data/spec/spec_helper.rb +0 -9
data/regexes/oss.yml
CHANGED
|
@@ -6,21 +6,41 @@
|
|
|
6
6
|
###############
|
|
7
7
|
|
|
8
8
|
##########
|
|
9
|
-
#
|
|
9
|
+
# GridOS (https://web.archive.org/web/20111123141630/http://fusiongarage.com/grid-os/about)
|
|
10
10
|
##########
|
|
11
|
-
- regex: '
|
|
12
|
-
name: '
|
|
11
|
+
- regex: 'Grid OS (\d+[\.\d]+)'
|
|
12
|
+
name: 'GridOS'
|
|
13
13
|
version: '$1'
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
##########
|
|
16
|
+
# Caixa Mágica (https://caixamagica.pt/)
|
|
17
|
+
##########
|
|
18
|
+
- regex: 'CaixaMagica'
|
|
19
|
+
name: 'Caixa Mágica'
|
|
20
|
+
version: ''
|
|
16
21
|
|
|
17
22
|
##########
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- regex: '
|
|
21
|
-
name: '
|
|
23
|
+
# Mageia (https://www.mageia.org/en/)
|
|
24
|
+
##########
|
|
25
|
+
- regex: 'Mageia; Linux'
|
|
26
|
+
name: 'Mageia'
|
|
22
27
|
version: ''
|
|
23
28
|
|
|
29
|
+
##########
|
|
30
|
+
# Whale OS (https://www.zeasn.com/)
|
|
31
|
+
##########
|
|
32
|
+
- regex: '(?:WH|WhaleTV/)(\d+[\.\d]+)'
|
|
33
|
+
name: 'Whale OS'
|
|
34
|
+
version: '$1'
|
|
35
|
+
|
|
36
|
+
##########
|
|
37
|
+
# Tizen
|
|
38
|
+
##########
|
|
39
|
+
- regex: 'Tizen[ /]?(\d+[\.\d]+)?'
|
|
40
|
+
name: 'Tizen'
|
|
41
|
+
version: '$1'
|
|
42
|
+
|
|
43
|
+
|
|
24
44
|
##########
|
|
25
45
|
# YunOS (Android based)
|
|
26
46
|
##########
|
|
@@ -31,11 +51,14 @@
|
|
|
31
51
|
##########
|
|
32
52
|
# Windows Mobile
|
|
33
53
|
##########
|
|
34
|
-
- regex: '
|
|
54
|
+
- regex: 'Windows Phone;FBSV/(\d+[\.\d]+)'
|
|
55
|
+
name: 'Windows Phone'
|
|
56
|
+
version: '$1'
|
|
57
|
+
|
|
58
|
+
- regex: '(?:Windows Phone (?:OS)?|wds)[ /]?(\d+[\.\d]+)'
|
|
35
59
|
name: 'Windows Phone'
|
|
36
60
|
version: '$1'
|
|
37
|
-
|
|
38
|
-
|
|
61
|
+
|
|
39
62
|
- regex: 'XBLWP7|Windows Phone'
|
|
40
63
|
name: 'Windows Phone'
|
|
41
64
|
version: ''
|
|
@@ -43,17 +66,15 @@
|
|
|
43
66
|
- regex: 'Windows CE(?: (\d+[\.\d]+))?'
|
|
44
67
|
name: 'Windows CE'
|
|
45
68
|
version: '$1'
|
|
46
|
-
|
|
47
|
-
|
|
69
|
+
|
|
48
70
|
- regex: '(?:IEMobile|Windows ?Mobile)(?: (\d+[\.\d]+))?'
|
|
49
71
|
name: 'Windows Mobile'
|
|
50
72
|
version: '$1'
|
|
51
|
-
|
|
52
|
-
|
|
73
|
+
|
|
53
74
|
- regex: 'Windows NT 6.2; ARM;'
|
|
54
75
|
name: 'Windows RT'
|
|
55
76
|
version: ''
|
|
56
|
-
|
|
77
|
+
|
|
57
78
|
- regex: 'Windows NT 6.3; ARM;'
|
|
58
79
|
name: 'Windows RT'
|
|
59
80
|
version: '8.1'
|
|
@@ -75,6 +96,10 @@
|
|
|
75
96
|
##########
|
|
76
97
|
# Custom Android Roms
|
|
77
98
|
##########
|
|
99
|
+
- regex: 'HarmonyOS(?:[/ ](\d+[\.\d]+))?'
|
|
100
|
+
name: 'HarmonyOS'
|
|
101
|
+
version: '$1'
|
|
102
|
+
|
|
78
103
|
- regex: 'RazoDroiD(?: v(\d+[\.\d]*))?'
|
|
79
104
|
name: 'RazoDroiD'
|
|
80
105
|
version: '$1'
|
|
@@ -95,15 +120,62 @@
|
|
|
95
120
|
name: 'Fire OS'
|
|
96
121
|
version: '$1'
|
|
97
122
|
|
|
123
|
+
- regex: '.+FIRETVSTICK2018'
|
|
124
|
+
name: 'Fire OS'
|
|
125
|
+
version: '6'
|
|
126
|
+
|
|
127
|
+
- regex: 'AFTSO001'
|
|
128
|
+
name: 'Fire OS'
|
|
129
|
+
version: '7'
|
|
130
|
+
|
|
131
|
+
- regex: 'FydeOS'
|
|
132
|
+
name: 'FydeOS'
|
|
133
|
+
version: ''
|
|
134
|
+
|
|
98
135
|
##########
|
|
99
136
|
# Android
|
|
100
137
|
##########
|
|
101
|
-
- regex: '
|
|
138
|
+
- regex: 'Android Marshmallow'
|
|
139
|
+
name: 'Android'
|
|
140
|
+
version: '6'
|
|
141
|
+
|
|
142
|
+
- regex: '(?:Podbean|Podimo)(?:.*)/Android'
|
|
143
|
+
name: 'Android'
|
|
144
|
+
version: ''
|
|
145
|
+
|
|
146
|
+
- regex: 'Android OS/(\d+[\.\d]*)'
|
|
147
|
+
name: 'Android'
|
|
148
|
+
version: '$1'
|
|
149
|
+
|
|
150
|
+
- regex: 'Pinterest for Android/.*; (\d(?:[\d\.]*))\)$'
|
|
151
|
+
name: 'Android'
|
|
152
|
+
version: '$1'
|
|
153
|
+
|
|
154
|
+
- regex: 'Android; (\d+[\.\d]*); Mobile;'
|
|
155
|
+
name: 'Android'
|
|
156
|
+
version: '$1'
|
|
157
|
+
|
|
158
|
+
- regex: '[ ]([\d\.]+)\) AppleWebKit.*ROBLOX Android App'
|
|
159
|
+
name: 'Android'
|
|
160
|
+
version: '$1'
|
|
161
|
+
|
|
162
|
+
- regex: '(?:(?:Orca-)?Android|Adr)[ /]?(?:[a-z]+ )?(\d+[\.\d]*)'
|
|
102
163
|
name: 'Android'
|
|
103
164
|
version: '$1'
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
165
|
+
|
|
166
|
+
- regex: '(?:Allview_TX1_Quasar|Cosmote_My_mini_Tab) (\d+[\.\d]*)'
|
|
167
|
+
name: 'Android'
|
|
168
|
+
version: '$1'
|
|
169
|
+
|
|
170
|
+
- regex: 'Android ?(?:jelly bean|Kit Kat|S.O. Ginger Bread|The FireCyano|:) (\d+[\.\d]*)'
|
|
171
|
+
name: 'Android'
|
|
172
|
+
version: '$1'
|
|
173
|
+
|
|
174
|
+
- regex: '(?:Orca-Android|FB4A).*FBSV/(\d+[\.\d]*);'
|
|
175
|
+
name: 'Android'
|
|
176
|
+
version: '$1'
|
|
177
|
+
|
|
178
|
+
- regex: ' Adr |Android|Silk-Accelerated=[a-z]{4,5}'
|
|
107
179
|
name: 'Android'
|
|
108
180
|
version: ''
|
|
109
181
|
|
|
@@ -111,15 +183,30 @@
|
|
|
111
183
|
name: 'Android'
|
|
112
184
|
version: '$1'
|
|
113
185
|
|
|
114
|
-
- regex: '
|
|
186
|
+
- regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe|.+K_?Android_?TV_|Sonos/.+\(ACR_'
|
|
187
|
+
name: 'Android'
|
|
188
|
+
version: ''
|
|
189
|
+
|
|
190
|
+
- regex: 'Linux; Andr0id[; ](\d+[\.\d]*)'
|
|
115
191
|
name: 'Android'
|
|
116
192
|
version: '$1'
|
|
117
193
|
|
|
118
|
-
|
|
194
|
+
# Inverted Android
|
|
195
|
+
- regex: 'Linux; diordnA[; ](\d+[\.\d]*)'
|
|
119
196
|
name: 'Android'
|
|
197
|
+
version: '$1'
|
|
198
|
+
|
|
199
|
+
- regex: '^A/(\d+[\.\d]*)/'
|
|
200
|
+
name: 'Android'
|
|
201
|
+
version: '$1'
|
|
202
|
+
|
|
203
|
+
##########
|
|
204
|
+
## Sailfish OS
|
|
205
|
+
###########
|
|
206
|
+
- regex: 'Sailfish|Jolla'
|
|
207
|
+
name: 'Sailfish OS'
|
|
120
208
|
version: ''
|
|
121
|
-
|
|
122
|
-
|
|
209
|
+
|
|
123
210
|
##########
|
|
124
211
|
# AmigaOS
|
|
125
212
|
##########
|
|
@@ -148,13 +235,63 @@
|
|
|
148
235
|
name: 'MTK / Nucleus'
|
|
149
236
|
version: '$1'
|
|
150
237
|
|
|
238
|
+
##########
|
|
239
|
+
# MRE / MAUI Runtime Environment
|
|
240
|
+
##########
|
|
241
|
+
- regex: 'MRE/(\d+)\.(\d+).*;MAUI'
|
|
242
|
+
name: 'MRE'
|
|
243
|
+
version: '$1.$2'
|
|
244
|
+
|
|
151
245
|
##########
|
|
152
246
|
# Linux
|
|
153
247
|
##########
|
|
248
|
+
# OpenWrt (https://openwrt.org/)
|
|
249
|
+
- regex: 'uclient-fetch'
|
|
250
|
+
name: 'OpenWrt'
|
|
251
|
+
version: ''
|
|
252
|
+
|
|
253
|
+
# Roku OS (https://www.roku.com/how-it-works/roku-os)
|
|
254
|
+
- regex: 'RokuOS/.+RokuOS (\d+.[\d.]+)'
|
|
255
|
+
name: 'Roku OS'
|
|
256
|
+
version: '$1'
|
|
257
|
+
|
|
258
|
+
- regex: 'Roku(?:OS)?/(?:DVP|Pluto)?-?(\d+[\.\d]+)'
|
|
259
|
+
name: 'Roku OS'
|
|
260
|
+
version: '$1'
|
|
261
|
+
|
|
262
|
+
- regex: 'Roku; (?:AP|UI); (\d+[\.\d]+)'
|
|
263
|
+
name: 'Roku OS'
|
|
264
|
+
version: '$1'
|
|
265
|
+
|
|
266
|
+
# DVKBuntu (https://www.dvkbuntu.org/)
|
|
267
|
+
- regex: 'dvkbuntu'
|
|
268
|
+
name: 'DVKBuntu'
|
|
269
|
+
version: ''
|
|
270
|
+
|
|
271
|
+
# Lumin OS (https://developer.magicleap.com/en-us/learn/guides/lumin-os-release-notes-summary)
|
|
272
|
+
- regex: 'Helio/(\d+[\.\d]+)'
|
|
273
|
+
name: 'Lumin OS'
|
|
274
|
+
version: '$1'
|
|
275
|
+
|
|
276
|
+
# HasCodingOS (https://forum.hascoding.com/HasCodingOS)
|
|
277
|
+
- regex: 'HasCodingOs (\d+[\.\d]+)'
|
|
278
|
+
name: 'HasCodingOS'
|
|
279
|
+
version: '$1'
|
|
280
|
+
|
|
281
|
+
# PCLinuxOS (https://www.pclinuxos.com/)
|
|
282
|
+
- regex: 'PCLinuxOS/(\d+[\.\d]+)'
|
|
283
|
+
name: 'PCLinuxOS'
|
|
284
|
+
version: '$1'
|
|
285
|
+
|
|
154
286
|
- regex: '(Ordissimo|webissimo3)'
|
|
155
287
|
name: 'Ordissimo'
|
|
156
288
|
version: ''
|
|
157
289
|
|
|
290
|
+
# Fenix (https://fenixlinux.com/)
|
|
291
|
+
- regex: '(?:Win|Sistema )Fenix'
|
|
292
|
+
name: 'Fenix'
|
|
293
|
+
version: ''
|
|
294
|
+
|
|
158
295
|
- regex: 'TOS; Linux'
|
|
159
296
|
name: 'TmaxOS'
|
|
160
297
|
version: ''
|
|
@@ -175,18 +312,39 @@
|
|
|
175
312
|
name: '$1'
|
|
176
313
|
version: '$2'
|
|
177
314
|
|
|
178
|
-
- regex: '
|
|
315
|
+
- regex: 'Deepin[ /](\d+[\.\d]+)'
|
|
316
|
+
name: 'Deepin'
|
|
317
|
+
version: '$1'
|
|
318
|
+
|
|
319
|
+
- regex: '(Debian|Knoppix|Mint(?! Browser)|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack|Freebox)(?:(?: Enterprise)? Linux)?(?:[ /\-](\d+[\.\d]+))?'
|
|
179
320
|
name: '$1'
|
|
180
321
|
version: '$2'
|
|
181
322
|
|
|
323
|
+
- regex: 'OS ROSA; Linux'
|
|
324
|
+
name: 'Rosa'
|
|
325
|
+
version: ''
|
|
326
|
+
|
|
182
327
|
# generic linux match -> end of file
|
|
183
328
|
|
|
184
329
|
##########
|
|
185
330
|
# webOS
|
|
186
331
|
##########
|
|
187
|
-
- regex: '(?:webOS|Palm webOS)(
|
|
332
|
+
- regex: '(?:Web0S; .*WEBOS|webOS|web0S|Palm webOS|hpwOS)(?:[/]?(\d+[\.\d]+))?'
|
|
188
333
|
name: 'webOS'
|
|
189
334
|
version: '$1'
|
|
335
|
+
versions:
|
|
336
|
+
- regex: 'WEBOS(\d+[\.\d]+)'
|
|
337
|
+
version: '$1'
|
|
338
|
+
- regex: 'Web0S; Linux/SmartTV.+Chrome/68'
|
|
339
|
+
version: '5'
|
|
340
|
+
- regex: 'Web0S; Linux/SmartTV.+Chrome/53'
|
|
341
|
+
version: '4'
|
|
342
|
+
- regex: 'Web0S; Linux/SmartTV.+Chrome/38'
|
|
343
|
+
version: '3'
|
|
344
|
+
- regex: 'Web0S; Linux/SmartTV.+Safari/538'
|
|
345
|
+
version: '2'
|
|
346
|
+
- regex: 'Web0S; Linux/SmartTV.+Safari/537'
|
|
347
|
+
version: '1'
|
|
190
348
|
|
|
191
349
|
- regex: '(?:PalmOS|Palm OS)(?:[/ ](\d+[\.\d]+))?|Palm'
|
|
192
350
|
name: 'palmOS'
|
|
@@ -196,88 +354,94 @@
|
|
|
196
354
|
name: 'palmOS'
|
|
197
355
|
version: '$1'
|
|
198
356
|
|
|
199
|
-
|
|
200
357
|
- regex: 'MorphOS(?:[ /](\d+[\.\d]+))?'
|
|
201
358
|
name: 'MorphOS'
|
|
202
359
|
version: '$1'
|
|
203
360
|
|
|
204
|
-
|
|
361
|
+
|
|
205
362
|
##########
|
|
206
363
|
# Windows
|
|
207
364
|
##########
|
|
365
|
+
- regex: 'FBW.+FBSV/(\d+[\.\d]*);'
|
|
366
|
+
name: 'Windows'
|
|
367
|
+
version: '$1'
|
|
368
|
+
|
|
369
|
+
- regex: 'Windows.+OS: (\d+[\.\d]*)'
|
|
370
|
+
name: 'Windows'
|
|
371
|
+
version: '$1'
|
|
372
|
+
|
|
373
|
+
- regex: 'Windows;(\d+[\.\d]*);'
|
|
374
|
+
name: 'Windows'
|
|
375
|
+
version: '$1'
|
|
376
|
+
|
|
377
|
+
- regex: 'mingw32|winhttp'
|
|
378
|
+
name: 'Windows'
|
|
379
|
+
version: ''
|
|
380
|
+
|
|
381
|
+
- regex: '(?:Windows(?:-Update-Agent)?|Microsoft-(?:CryptoAPI|Delivery-Optimization|WebDAV-MiniRedir|WNS))/(\d+\.\d+)'
|
|
382
|
+
name: 'Windows'
|
|
383
|
+
version: '$1'
|
|
384
|
+
|
|
208
385
|
- regex: 'CYGWIN_NT-10.0|Windows NT 10.0|Windows 10'
|
|
209
386
|
name: 'Windows'
|
|
210
387
|
version: '10'
|
|
211
388
|
|
|
212
|
-
- regex: 'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10'
|
|
389
|
+
- regex: 'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10|win10'
|
|
213
390
|
name: 'Windows'
|
|
214
391
|
version: '10'
|
|
215
|
-
|
|
392
|
+
|
|
216
393
|
- regex: 'CYGWIN_NT-6.3|Windows NT 6.3|Windows 8.1'
|
|
217
394
|
name: 'Windows'
|
|
218
395
|
version: '8.1'
|
|
219
396
|
|
|
220
|
-
|
|
221
397
|
- regex: 'CYGWIN_NT-6.2|Windows NT 6.2|Windows 8'
|
|
222
398
|
name: 'Windows'
|
|
223
399
|
version: '8'
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
- regex: 'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7'
|
|
400
|
+
|
|
401
|
+
- regex: 'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7|win7|Windows \(6.1'
|
|
227
402
|
name: 'Windows'
|
|
228
403
|
version: '7'
|
|
229
|
-
|
|
230
|
-
|
|
404
|
+
|
|
231
405
|
- regex: 'CYGWIN_NT-6.0|Windows NT 6.0|Windows Vista'
|
|
232
406
|
name: 'Windows'
|
|
233
407
|
version: 'Vista'
|
|
234
|
-
|
|
235
|
-
|
|
408
|
+
|
|
236
409
|
- regex: 'CYGWIN_NT-5.2|Windows NT 5.2|Windows Server 2003 / XP x64'
|
|
237
410
|
name: 'Windows'
|
|
238
411
|
version: 'Server 2003'
|
|
239
|
-
|
|
240
|
-
|
|
412
|
+
|
|
241
413
|
- regex: 'CYGWIN_NT-5.1|Windows NT 5.1|Windows XP'
|
|
242
414
|
name: 'Windows'
|
|
243
415
|
version: 'XP'
|
|
244
|
-
|
|
245
|
-
|
|
416
|
+
|
|
246
417
|
- regex: 'CYGWIN_NT-5.0|Windows NT 5.0|Windows 2000'
|
|
247
418
|
name: 'Windows'
|
|
248
419
|
version: '2000'
|
|
249
|
-
|
|
250
|
-
|
|
420
|
+
|
|
251
421
|
- regex: 'CYGWIN_NT-4.0|Windows NT 4.0|WinNT|Windows NT'
|
|
252
422
|
name: 'Windows'
|
|
253
423
|
version: 'NT'
|
|
254
|
-
|
|
255
|
-
|
|
424
|
+
|
|
256
425
|
- regex: 'CYGWIN_ME-4.90|Win 9x 4.90|Windows ME'
|
|
257
426
|
name: 'Windows'
|
|
258
427
|
version: 'ME'
|
|
259
|
-
|
|
260
|
-
|
|
428
|
+
|
|
261
429
|
- regex: 'CYGWIN_98-4.10|Win98|Windows 98'
|
|
262
430
|
name: 'Windows'
|
|
263
431
|
version: '98'
|
|
264
|
-
|
|
265
|
-
|
|
432
|
+
|
|
266
433
|
- regex: 'CYGWIN_95-4.0|Win32|Win95|Windows 95|Windows_95'
|
|
267
434
|
name: 'Windows'
|
|
268
435
|
version: '95'
|
|
269
|
-
|
|
270
|
-
|
|
436
|
+
|
|
271
437
|
- regex: 'Windows 3.1'
|
|
272
438
|
name: 'Windows'
|
|
273
439
|
version: '3.1'
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
- regex: 'Windows'
|
|
440
|
+
|
|
441
|
+
- regex: 'Windows|.+win32|Win64|MSDW|HandBrake Win Upd|Microsoft BITS'
|
|
277
442
|
name: 'Windows'
|
|
278
443
|
version: ''
|
|
279
444
|
|
|
280
|
-
|
|
281
445
|
##########
|
|
282
446
|
# Haiku OS
|
|
283
447
|
##########
|
|
@@ -285,261 +449,472 @@
|
|
|
285
449
|
name: 'Haiku OS'
|
|
286
450
|
version: ''
|
|
287
451
|
|
|
288
|
-
|
|
289
452
|
##########
|
|
290
|
-
#
|
|
453
|
+
# tvOS (https://developer.apple.com/tvos/)
|
|
291
454
|
##########
|
|
292
|
-
- regex: '
|
|
293
|
-
name: '
|
|
294
|
-
version: '
|
|
295
|
-
|
|
296
|
-
- regex: 'CFNetwork/887.*(x86_64)'
|
|
297
|
-
name: 'Mac'
|
|
298
|
-
version: '10.13'
|
|
299
|
-
|
|
300
|
-
- regex: 'CFNetwork/887'
|
|
301
|
-
name: 'iOS'
|
|
302
|
-
version: '11.0'
|
|
303
|
-
|
|
304
|
-
- regex: 'CFNetwork/811.*(x86_64)'
|
|
305
|
-
name: 'Mac'
|
|
306
|
-
version: '10.12'
|
|
307
|
-
|
|
308
|
-
- regex: 'CFNetwork/811'
|
|
309
|
-
name: 'iOS'
|
|
310
|
-
version: '10.3'
|
|
311
|
-
|
|
312
|
-
- regex: 'CFNetwork/808\.3'
|
|
313
|
-
name: 'iOS'
|
|
314
|
-
version: '10.3'
|
|
315
|
-
|
|
316
|
-
- regex: 'CFNetwork/808\.2'
|
|
317
|
-
name: 'iOS'
|
|
318
|
-
version: '10.2'
|
|
455
|
+
- regex: 'Apple ?TV.*CPU (?:iPhone )?OS ((?:9|1[0-5])[_\.]\d+(?:[_.]\d+)*)'
|
|
456
|
+
name: 'tvOS'
|
|
457
|
+
version: '$1'
|
|
319
458
|
|
|
320
|
-
- regex: '
|
|
321
|
-
name: '
|
|
322
|
-
version: '
|
|
459
|
+
- regex: 'iOS(?:; |/)((?:9|1[0-5]).\d+(?:[_\.]\d+)*) (?:model/)?AppleTV'
|
|
460
|
+
name: 'tvOS'
|
|
461
|
+
version: '$1'
|
|
323
462
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
463
|
+
##########
|
|
464
|
+
# watchOS (https://developer.apple.com/watchos/)
|
|
465
|
+
##########
|
|
466
|
+
- regex: '(?:Watch1,[12]/|Watch OS,|watchOS[ /])(\d+[\.\d]*)'
|
|
467
|
+
name: 'watchOS'
|
|
468
|
+
version: '$1'
|
|
327
469
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
470
|
+
##########
|
|
471
|
+
# iPadOS (https://www.apple.com/ipados/)
|
|
472
|
+
##########
|
|
473
|
+
- regex: 'FBMD/iPad;.*FBSV/ ?(1[345]).(\d+[\.\d]*);'
|
|
474
|
+
name: 'iPadOS'
|
|
475
|
+
version: '$1.$2'
|
|
331
476
|
|
|
332
|
-
- regex: '
|
|
333
|
-
name: '
|
|
334
|
-
version: '
|
|
477
|
+
- regex: 'iPad/(1[345]).(\d+[\.\d]*)'
|
|
478
|
+
name: 'iPadOS'
|
|
479
|
+
version: '$1.$2'
|
|
335
480
|
|
|
336
|
-
- regex: '
|
|
337
|
-
name: '
|
|
338
|
-
version: '
|
|
481
|
+
- regex: '^iPad(?:\d+[\,\d]*)/(1[345]).(\d+[\.\d]*)'
|
|
482
|
+
name: 'iPadOS'
|
|
483
|
+
version: '$1.$2'
|
|
339
484
|
|
|
340
|
-
- regex: '
|
|
341
|
-
name: '
|
|
342
|
-
version: '
|
|
485
|
+
- regex: 'iPad(?:; iOS|.+CPU OS) ((1[345])+(?:[_\.]\d+)*)'
|
|
486
|
+
name: 'iPadOS'
|
|
487
|
+
version: '$1'
|
|
343
488
|
|
|
344
|
-
- regex: '
|
|
345
|
-
name: '
|
|
346
|
-
version: '
|
|
489
|
+
- regex: 'iOS/(1[345]).(\d+[\.\d]*).+Apple/iPad'
|
|
490
|
+
name: 'iPadOS'
|
|
491
|
+
version: '$1.$2'
|
|
347
492
|
|
|
348
|
-
- regex: '
|
|
349
|
-
name: '
|
|
350
|
-
version: '
|
|
493
|
+
- regex: 'iPhone OS,(1[345]).(\d+[\.\d]*).+iPad'
|
|
494
|
+
name: 'iPadOS'
|
|
495
|
+
version: '$1.$2'
|
|
351
496
|
|
|
352
|
-
|
|
497
|
+
##########
|
|
498
|
+
# iOS
|
|
499
|
+
##########
|
|
500
|
+
- regex: 'iPad/([89]|1[012]).(\d+[\.\d]*)'
|
|
353
501
|
name: 'iOS'
|
|
354
|
-
version: '
|
|
502
|
+
version: '$1.$2'
|
|
355
503
|
|
|
356
|
-
- regex: '
|
|
504
|
+
- regex: '^(?:iPad|iPhone)(?:\d+[\,\d]*)[/_](\d+[\.\d]+)'
|
|
357
505
|
name: 'iOS'
|
|
358
|
-
version: '
|
|
506
|
+
version: '$1'
|
|
359
507
|
|
|
360
|
-
- regex: '
|
|
508
|
+
- regex: 'Pinterest for iOS/.*; (\d(?:[\d\.]*))[)]$'
|
|
361
509
|
name: 'iOS'
|
|
362
|
-
version: '
|
|
510
|
+
version: '$1'
|
|
363
511
|
|
|
364
|
-
- regex: '
|
|
512
|
+
- regex: '(?:iPhone ?OS|iOS(?: Version)?)(?:/|; |,)(\d+[\.\d]+)'
|
|
365
513
|
name: 'iOS'
|
|
366
|
-
version: '
|
|
514
|
+
version: '$1'
|
|
367
515
|
|
|
368
|
-
- regex: 'CFNetwork/
|
|
516
|
+
- regex: 'CFNetwork/.+ Darwin/(\d+[\.\d]+)(?!.*(?:x86_64|i386|PowerMac))'
|
|
369
517
|
name: 'iOS'
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
518
|
+
versions:
|
|
519
|
+
- regex: 'Darwin/21.2.0'
|
|
520
|
+
version: '15.2'
|
|
521
|
+
- regex: 'Darwin/21.1.0'
|
|
522
|
+
version: '15.1'
|
|
523
|
+
- regex: 'Darwin/21.0.0'
|
|
524
|
+
version: '15.0'
|
|
525
|
+
- regex: 'Darwin/20.6.0'
|
|
526
|
+
version: '14.7'
|
|
527
|
+
- regex: 'Darwin/20.5.0'
|
|
528
|
+
version: '14.6'
|
|
529
|
+
- regex: 'Darwin/20.4.0'
|
|
530
|
+
version: '14.5'
|
|
531
|
+
- regex: 'Darwin/20.3.0'
|
|
532
|
+
version: '14.4'
|
|
533
|
+
- regex: 'Darwin/20.2.0'
|
|
534
|
+
version: '14.3'
|
|
535
|
+
- regex: 'Darwin/20.1.0'
|
|
536
|
+
version: '14.2'
|
|
537
|
+
- regex: 'Darwin/20.0.0'
|
|
538
|
+
version: '14.0'
|
|
539
|
+
- regex: 'Darwin/19.6.0'
|
|
540
|
+
version: '13.6'
|
|
541
|
+
- regex: 'Darwin/19.5.0'
|
|
542
|
+
version: '13.5'
|
|
543
|
+
- regex: 'Darwin/19.4.0'
|
|
544
|
+
version: '13.4'
|
|
545
|
+
- regex: 'Darwin/19.3.0'
|
|
546
|
+
version: '13.3.1'
|
|
547
|
+
- regex: 'Darwin/19.2.0'
|
|
548
|
+
version: '13.3'
|
|
549
|
+
- regex: 'Darwin/19.0.0'
|
|
550
|
+
version: '13.0'
|
|
551
|
+
- regex: 'Darwin/18.7.0'
|
|
552
|
+
version: '12.4'
|
|
553
|
+
- regex: 'Darwin/18.6.0'
|
|
554
|
+
version: '12.3'
|
|
555
|
+
- regex: 'Darwin/18.5.0'
|
|
556
|
+
version: '12.2'
|
|
557
|
+
- regex: 'Darwin/18.2.0'
|
|
558
|
+
version: '12.1'
|
|
559
|
+
- regex: 'Darwin/18.0.0'
|
|
560
|
+
version: '12.0'
|
|
561
|
+
- regex: 'Darwin/17.7.0'
|
|
562
|
+
version: '11.4.1'
|
|
563
|
+
- regex: 'Darwin/17.6.0'
|
|
564
|
+
version: '11.4'
|
|
565
|
+
- regex: 'Darwin/17.5.0'
|
|
566
|
+
version: '11.3'
|
|
567
|
+
- regex: 'Darwin/17.4.0'
|
|
568
|
+
version: '11.2.6'
|
|
569
|
+
- regex: 'Darwin/17.3.0'
|
|
570
|
+
version: '11.2'
|
|
571
|
+
- regex: 'CFNetwork/889'
|
|
572
|
+
version: '11.1'
|
|
573
|
+
- regex: 'CFNetwork/887'
|
|
574
|
+
version: '11.0'
|
|
575
|
+
- regex: 'CFNetwork/811'
|
|
576
|
+
version: '10.3'
|
|
577
|
+
- regex: 'CFNetwork/808\.3'
|
|
578
|
+
version: '10.3'
|
|
579
|
+
- regex: 'CFNetwork/808\.2'
|
|
580
|
+
version: '10.2'
|
|
581
|
+
- regex: 'CFNetwork/808\.1'
|
|
582
|
+
version: '10.1'
|
|
583
|
+
- regex: 'CFNetwork/808\.0'
|
|
584
|
+
version: '10.0'
|
|
585
|
+
- regex: 'CFNetwork/808'
|
|
586
|
+
version: '10'
|
|
587
|
+
- regex: 'CFNetwork/758\.5\.3'
|
|
588
|
+
version: '9.3.5'
|
|
589
|
+
- regex: 'CFNetwork/758\.4\.3'
|
|
590
|
+
version: '9.3.2'
|
|
591
|
+
- regex: 'CFNetwork/758\.3\.15'
|
|
592
|
+
version: '9.3'
|
|
593
|
+
- regex: 'CFNetwork/758\.2\.[78]'
|
|
594
|
+
version: '9.2'
|
|
595
|
+
- regex: 'CFNetwork/758\.1\.6'
|
|
596
|
+
version: '9.1'
|
|
597
|
+
- regex: 'CFNetwork/758\.0\.2'
|
|
598
|
+
version: '9.0'
|
|
599
|
+
- regex: 'CFNetwork/711\.5\.6'
|
|
600
|
+
version: '8.4.1'
|
|
601
|
+
- regex: 'CFNetwork/711\.4\.6'
|
|
602
|
+
version: '8.4'
|
|
603
|
+
- regex: 'CFNetwork/711\.3\.18'
|
|
604
|
+
version: '8.3'
|
|
605
|
+
- regex: 'CFNetwork/711\.2\.23'
|
|
606
|
+
version: '8.2'
|
|
607
|
+
- regex: 'CFNetwork/711\.1\.1[26]'
|
|
608
|
+
version: '8.1'
|
|
609
|
+
- regex: 'CFNetwork/711\.0\.6'
|
|
610
|
+
version: '8.0'
|
|
611
|
+
- regex: 'CFNetwork/672\.1'
|
|
612
|
+
version: '7.1'
|
|
613
|
+
- regex: 'CFNetwork/672\.0'
|
|
614
|
+
version: '7.0'
|
|
615
|
+
- regex: 'CFNetwork/609\.1'
|
|
616
|
+
version: '6.1'
|
|
617
|
+
- regex: 'CFNetwork/60[29]'
|
|
618
|
+
version: '6.0'
|
|
619
|
+
- regex: 'CFNetwork/548\.1'
|
|
620
|
+
version: '5.1'
|
|
621
|
+
- regex: 'CFNetwork/548\.0'
|
|
622
|
+
version: '5.0'
|
|
623
|
+
- regex: 'CFNetwork/485\.13'
|
|
624
|
+
version: '4.3'
|
|
625
|
+
- regex: 'CFNetwork/485\.12'
|
|
626
|
+
version: '4.2'
|
|
627
|
+
- regex: 'CFNetwork/485\.10'
|
|
628
|
+
version: '4.1'
|
|
629
|
+
- regex: 'CFNetwork/485\.2'
|
|
630
|
+
version: '4.0'
|
|
631
|
+
- regex: 'CFNetwork/467\.12'
|
|
632
|
+
version: '3.2'
|
|
633
|
+
- regex: 'CFNetwork/459'
|
|
634
|
+
version: '3.1'
|
|
635
|
+
|
|
636
|
+
- regex: '(?:iPhone|iPod_touch)/(\d+[\.\d]*) hw/'
|
|
373
637
|
name: 'iOS'
|
|
374
|
-
version: '
|
|
638
|
+
version: '$1'
|
|
375
639
|
|
|
376
|
-
- regex: '
|
|
640
|
+
- regex: 'iOS(\d+\.\d+\.\d+)'
|
|
377
641
|
name: 'iOS'
|
|
378
|
-
version: '
|
|
642
|
+
version: '$1'
|
|
379
643
|
|
|
380
|
-
- regex: '
|
|
644
|
+
- regex: 'iOS(\d+)\.(\d+)0'
|
|
381
645
|
name: 'iOS'
|
|
382
|
-
version: '
|
|
646
|
+
version: '$1.$2'
|
|
383
647
|
|
|
384
|
-
- regex: '
|
|
648
|
+
- regex: 'iPhone OS ([0-9]{1})([0-9]{1})([0-9]{1})'
|
|
385
649
|
name: 'iOS'
|
|
386
|
-
version: '
|
|
650
|
+
version: '$1.$2.$3'
|
|
387
651
|
|
|
388
|
-
- regex: '
|
|
652
|
+
- regex: '(?:CPU OS|iPh(?:one)?[ _]OS|iOS)[ _/](\d+(?:[_\.]\d+)*)'
|
|
389
653
|
name: 'iOS'
|
|
390
|
-
version: '
|
|
654
|
+
version: '$1'
|
|
391
655
|
|
|
392
|
-
- regex: '
|
|
656
|
+
- regex: 'FBMD/iPhone;.*FBSV/ ?(\d+[\.\d]+);'
|
|
393
657
|
name: 'iOS'
|
|
394
|
-
version: '
|
|
658
|
+
version: '$1'
|
|
395
659
|
|
|
396
|
-
- regex: '
|
|
660
|
+
- regex: '(?:FBIOS|Messenger(?:Lite)?ForiOS).*FBSV/ ?(\d+[\.\d]*);'
|
|
397
661
|
name: 'iOS'
|
|
398
|
-
version: '
|
|
662
|
+
version: '$1'
|
|
399
663
|
|
|
400
|
-
- regex: '
|
|
664
|
+
- regex: 'iPhone OS,([\d\.]+).+(?:iPhone|iPod)'
|
|
401
665
|
name: 'iOS'
|
|
402
|
-
version: '
|
|
666
|
+
version: '$1'
|
|
403
667
|
|
|
404
|
-
- regex: '
|
|
668
|
+
- regex: 'iPad.+; (\d+[\.\d]+);'
|
|
405
669
|
name: 'iOS'
|
|
406
|
-
version: '
|
|
670
|
+
version: '$1'
|
|
407
671
|
|
|
408
|
-
- regex: '
|
|
672
|
+
- regex: 'iPhone.+; Version (\d+[\.\d]+)'
|
|
409
673
|
name: 'iOS'
|
|
410
|
-
version: '
|
|
674
|
+
version: '$1'
|
|
411
675
|
|
|
412
|
-
- regex: '
|
|
676
|
+
- regex: 'OS=iOS;OSVer=(\d+[\.\d]+);'
|
|
413
677
|
name: 'iOS'
|
|
414
|
-
version: '
|
|
678
|
+
version: '$1'
|
|
415
679
|
|
|
416
|
-
- regex: '
|
|
680
|
+
- regex: 'os=Apple-iOS.+osversion=(\d+[\.\d]+)/'
|
|
417
681
|
name: 'iOS'
|
|
418
|
-
version: '
|
|
682
|
+
version: '$1'
|
|
419
683
|
|
|
420
|
-
- regex: '
|
|
684
|
+
- regex: '(?:Apple-)?(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?'
|
|
421
685
|
name: 'iOS'
|
|
422
|
-
version: '
|
|
686
|
+
version: '$1'
|
|
423
687
|
|
|
424
|
-
- regex: '(?:
|
|
688
|
+
- regex: '(?:Podcasts/(?:[\d\.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|\(iOS\)|iOS; Opera|Overcast|Castro|Podcat|iCatcher|RSSRadio/|MobileSafari/)(?!.*x86_64)'
|
|
425
689
|
name: 'iOS'
|
|
426
|
-
version: '
|
|
690
|
+
version: ''
|
|
427
691
|
|
|
428
|
-
- regex: '
|
|
692
|
+
- regex: 'iTunes-(AppleTV|iPod|iPad|iPhone)/(?:[\d\.]+)'
|
|
429
693
|
name: 'iOS'
|
|
430
|
-
version: '
|
|
694
|
+
version: ''
|
|
431
695
|
|
|
432
|
-
- regex: '
|
|
696
|
+
- regex: 'iOS/Version ([\d\.]+)'
|
|
433
697
|
name: 'iOS'
|
|
434
698
|
version: '$1'
|
|
435
699
|
|
|
436
|
-
- regex: '
|
|
700
|
+
- regex: 'Sonos/.+\(ICRU_'
|
|
437
701
|
name: 'iOS'
|
|
438
702
|
version: ''
|
|
439
703
|
|
|
440
|
-
- regex: '
|
|
704
|
+
- regex: 'CaptiveNetworkSupport|AirPlay'
|
|
441
705
|
name: 'iOS'
|
|
442
706
|
version: ''
|
|
443
707
|
|
|
444
|
-
|
|
445
708
|
##########
|
|
446
709
|
# Mac
|
|
447
710
|
##########
|
|
448
|
-
|
|
449
|
-
- regex: 'CFNetwork/807'
|
|
450
|
-
name: 'Mac'
|
|
451
|
-
version: '10.12'
|
|
452
|
-
|
|
453
|
-
- regex: 'CFNetwork/760'
|
|
454
|
-
name: 'Mac'
|
|
455
|
-
version: '10.11'
|
|
456
|
-
|
|
457
|
-
- regex: 'CFNetwork/720'
|
|
458
|
-
name: 'Mac'
|
|
459
|
-
version: '10.10'
|
|
460
|
-
|
|
461
|
-
- regex: 'CFNetwork/673'
|
|
462
|
-
name: 'Mac'
|
|
463
|
-
version: '10.9'
|
|
464
|
-
|
|
465
|
-
- regex: 'CFNetwork/596'
|
|
711
|
+
- regex: 'CFNetwork/.+ Darwin/(?:[\d\.]+).+(?:x86_64|i386)|(?:x86_64-apple-)?darwin(?:[\d\.]+)|PowerMac'
|
|
466
712
|
name: 'Mac'
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
713
|
+
versions:
|
|
714
|
+
- regex: '(?:x86_64-apple-)?Darwin/?21.2.0'
|
|
715
|
+
version: '12.1'
|
|
716
|
+
- regex: '(?:x86_64-apple-)?Darwin/?21.1.0'
|
|
717
|
+
version: '12.0.1'
|
|
718
|
+
- regex: '(?:x86_64-apple-)?Darwin/?21.0.0'
|
|
719
|
+
version: '12.0'
|
|
720
|
+
- regex: '(?:x86_64-apple-)?Darwin/?20.6.0'
|
|
721
|
+
version: '11.5'
|
|
722
|
+
- regex: '(?:x86_64-apple-)?Darwin/?20.5.0'
|
|
723
|
+
version: '11.4'
|
|
724
|
+
- regex: '(?:x86_64-apple-)?Darwin/?20.4.0'
|
|
725
|
+
version: '11.3'
|
|
726
|
+
- regex: '(?:x86_64-apple-)?Darwin/?20.3.0'
|
|
727
|
+
version: '11.2'
|
|
728
|
+
- regex: '(?:x86_64-apple-)?Darwin/?20.2.0.*'
|
|
729
|
+
version: '11.1'
|
|
730
|
+
- regex: '(?:x86_64-apple-)?Darwin/?20.[01].0'
|
|
731
|
+
version: '11.0'
|
|
732
|
+
- regex: '(?:x86_64-apple-)?Darwin/?19.6.0'
|
|
733
|
+
version: '10.15.6'
|
|
734
|
+
- regex: '(?:x86_64-apple-)?Darwin/?19.5.0'
|
|
735
|
+
version: '10.15.5'
|
|
736
|
+
- regex: '(?:x86_64-apple-)?Darwin/?19.4.0'
|
|
737
|
+
version: '10.15.4'
|
|
738
|
+
- regex: '(?:x86_64-apple-)?Darwin/?19.3.0'
|
|
739
|
+
version: '10.15.3'
|
|
740
|
+
- regex: '(?:x86_64-apple-)?Darwin/?19.2.0'
|
|
741
|
+
version: '10.15.2'
|
|
742
|
+
- regex: '(?:x86_64-apple-)?Darwin/?19.0.0'
|
|
743
|
+
version: '10.15'
|
|
744
|
+
- regex: '(?:x86_64-apple-)?Darwin/?18.7.0'
|
|
745
|
+
version: '10.14'
|
|
746
|
+
- regex: '(?:x86_64-apple-)?Darwin/?18.6.0'
|
|
747
|
+
version: '10.14.5'
|
|
748
|
+
- regex: '(?:x86_64-apple-)?Darwin/?18.5.0'
|
|
749
|
+
version: '10.14.4'
|
|
750
|
+
- regex: '(?:x86_64-apple-)?Darwin/?18.2.0'
|
|
751
|
+
version: '10.14.1'
|
|
752
|
+
- regex: '(?:x86_64-apple-)?Darwin/?18.0.0'
|
|
753
|
+
version: '10.14'
|
|
754
|
+
- regex: '(?:x86_64-apple-)?Darwin/?17.7.0'
|
|
755
|
+
version: '10.13.6'
|
|
756
|
+
- regex: '(?:x86_64-apple-)?Darwin/?17.6.0'
|
|
757
|
+
version: '10.13.5'
|
|
758
|
+
- regex: '(?:x86_64-apple-)?Darwin/?17.5.0'
|
|
759
|
+
version: '10.13.4'
|
|
760
|
+
- regex: '(?:x86_64-apple-)?Darwin/?17.4.0'
|
|
761
|
+
version: '10.13.3'
|
|
762
|
+
- regex: '(?:x86_64-apple-)?Darwin/?17.3.0'
|
|
763
|
+
version: '10.13.2'
|
|
764
|
+
- regex: '(?:x86_64-apple-)?Darwin/?17.2.0'
|
|
765
|
+
version: '10.13.1'
|
|
766
|
+
- regex: '(?:x86_64-apple-)?Darwin/?17.0.0'
|
|
767
|
+
version: '10.13'
|
|
768
|
+
- regex: '(?:x86_64-apple-)?Darwin/?16.7.0'
|
|
769
|
+
version: '10.12.6'
|
|
770
|
+
- regex: '(?:x86_64-apple-)?Darwin/?16.6.0'
|
|
771
|
+
version: '10.12.5'
|
|
772
|
+
- regex: '(?:x86_64-apple-)?Darwin/?16.5.0'
|
|
773
|
+
version: '10.12.4'
|
|
774
|
+
- regex: '(?:x86_64-apple-)?Darwin/?16.4.0'
|
|
775
|
+
version: '10.12.3'
|
|
776
|
+
- regex: '(?:x86_64-apple-)?Darwin/?16.3.0'
|
|
777
|
+
version: '10.12.2'
|
|
778
|
+
- regex: '(?:x86_64-apple-)?Darwin/?16.2.0'
|
|
779
|
+
version: '10.12.2'
|
|
780
|
+
- regex: '(?:x86_64-apple-)?Darwin/?16.1.0'
|
|
781
|
+
version: '10.12.1'
|
|
782
|
+
- regex: '(?:x86_64-apple-)?Darwin/?16.0.0'
|
|
783
|
+
version: '10.12'
|
|
784
|
+
- regex: '(?:x86_64-apple-)?Darwin/?15.6.0'
|
|
785
|
+
version: '10.11.6'
|
|
786
|
+
- regex: '(?:x86_64-apple-)?Darwin/?15.5.0'
|
|
787
|
+
version: '10.11.5'
|
|
788
|
+
- regex: '(?:x86_64-apple-)?Darwin/?15.4.0'
|
|
789
|
+
version: '10.11.4'
|
|
790
|
+
- regex: '(?:x86_64-apple-)?Darwin/?15.3.0'
|
|
791
|
+
version: '10.11.3'
|
|
792
|
+
- regex: '(?:x86_64-apple-)?Darwin/?15.2.0'
|
|
793
|
+
version: '10.11.2'
|
|
794
|
+
- regex: 'CFNetwork/760'
|
|
795
|
+
version: '10.11'
|
|
796
|
+
- regex: '(?:x86_64-apple-)?Darwin/?14.5.0'
|
|
797
|
+
version: '10.10.5'
|
|
798
|
+
- regex: '(?:x86_64-apple-)?Darwin/?14.4.0'
|
|
799
|
+
version: '10.10.4'
|
|
800
|
+
- regex: '(?:x86_64-apple-)?Darwin/?14.3.0'
|
|
801
|
+
version: '10.10.3'
|
|
802
|
+
- regex: '(?:x86_64-apple-)?Darwin/?14.1.0'
|
|
803
|
+
version: '10.10.2'
|
|
804
|
+
- regex: '(?:x86_64-apple-)?Darwin/?14.0.0'
|
|
805
|
+
version: '10.10'
|
|
806
|
+
- regex: '(?:x86_64-apple-)?Darwin/?13.4.0'
|
|
807
|
+
version: '10.9.5'
|
|
808
|
+
- regex: '(?:x86_64-apple-)?Darwin/?13.3.0'
|
|
809
|
+
version: '10.9.4'
|
|
810
|
+
- regex: '(?:x86_64-apple-)?Darwin/?13.2.0'
|
|
811
|
+
version: '10.9.3'
|
|
812
|
+
- regex: '(?:x86_64-apple-)?Darwin/?13.1.0'
|
|
813
|
+
version: '10.9.2'
|
|
814
|
+
- regex: '(?:x86_64-apple-)?Darwin/?13.0.0'
|
|
815
|
+
version: '10.9.0'
|
|
816
|
+
- regex: '(?:x86_64-apple-)?Darwin/?12.6.0'
|
|
817
|
+
version: '10.8.5'
|
|
818
|
+
- regex: '(?:x86_64-apple-)?Darwin/?12.5.0'
|
|
819
|
+
version: '10.8.5'
|
|
820
|
+
- regex: '(?:x86_64-apple-)?Darwin/?12.4.0'
|
|
821
|
+
version: '10.8.4'
|
|
822
|
+
- regex: '(?:x86_64-apple-)?Darwin/?12.3.0'
|
|
823
|
+
version: '10.8.3'
|
|
824
|
+
- regex: '(?:x86_64-apple-)?Darwin/?12.2.0'
|
|
825
|
+
version: '10.8.2'
|
|
826
|
+
- regex: '(?:x86_64-apple-)?Darwin/?12.1.0'
|
|
827
|
+
version: '10.8.1'
|
|
828
|
+
- regex: '(?:x86_64-apple-)?Darwin/?11.5.0'
|
|
829
|
+
version: '10.7.5'
|
|
830
|
+
- regex: '(?:x86_64-apple-)?Darwin/?11.4.2'
|
|
831
|
+
version: '10.7.5'
|
|
832
|
+
- regex: '(?:x86_64-apple-)?Darwin/?11.4.0'
|
|
833
|
+
version: '10.7.4'
|
|
834
|
+
- regex: '(?:x86_64-apple-)?Darwin/?11.3.0'
|
|
835
|
+
version: '10.7.3'
|
|
836
|
+
- regex: '(?:x86_64-apple-)?Darwin/?11.2.0'
|
|
837
|
+
version: '10.7.2'
|
|
838
|
+
- regex: '(?:x86_64-apple-)?Darwin/?11.1.0'
|
|
839
|
+
version: '10.7.1'
|
|
840
|
+
- regex: '(?:x86_64-apple-)?Darwin/?10.8.0'
|
|
841
|
+
version: '10.6.8'
|
|
842
|
+
- regex: '(?:x86_64-apple-)?Darwin/?10.7.[34]'
|
|
843
|
+
version: '10.6.7'
|
|
844
|
+
- regex: '(?:x86_64-apple-)?Darwin/?10.3.0'
|
|
845
|
+
version: '10.6.3'
|
|
846
|
+
- regex: '(?:x86_64-apple-)?Darwin/?10.0.0'
|
|
847
|
+
version: '10.6'
|
|
848
|
+
- regex: '(?:x86_64-apple-)?Darwin/?9.8.0'
|
|
849
|
+
version: '10.5.8'
|
|
850
|
+
- regex: '(?:x86_64-apple-)?Darwin/?9.7.1'
|
|
851
|
+
version: '10.5.7'
|
|
852
|
+
- regex: '(?:x86_64-apple-)?Darwin/?9.6.2'
|
|
853
|
+
version: '10.5.6'
|
|
854
|
+
- regex: '(?:x86_64-apple-)?Darwin/?9.5.[05]'
|
|
855
|
+
version: '10.5.5'
|
|
856
|
+
|
|
857
|
+
- regex: 'Macintosh;Mac OS X \((\d+[\.\d]+)\);'
|
|
470
858
|
name: 'Mac'
|
|
471
|
-
version: '
|
|
859
|
+
version: '$1'
|
|
472
860
|
|
|
473
|
-
- regex: '
|
|
861
|
+
- regex: 'Mac[ +]OS[ +]?X(?:[ /,](?:Version )?(\d+(?:[_\.]\d+)+))?'
|
|
474
862
|
name: 'Mac'
|
|
475
|
-
version: '
|
|
863
|
+
version: '$1'
|
|
476
864
|
|
|
477
|
-
- regex: '
|
|
865
|
+
- regex: 'Mac (?:OS/)?(\d+(?:[_\.]\d+)+)'
|
|
478
866
|
name: 'Mac'
|
|
479
|
-
version: '
|
|
867
|
+
version: '$1'
|
|
480
868
|
|
|
481
|
-
- regex: '
|
|
869
|
+
- regex: '(?:macOS[/,]|Mac-)(\d+[\.\d]+)'
|
|
482
870
|
name: 'Mac'
|
|
483
|
-
version: '
|
|
871
|
+
version: '$1'
|
|
484
872
|
|
|
485
|
-
- regex: '
|
|
873
|
+
- regex: 'Macintosh; OS X (\d+[\.\d]+)'
|
|
486
874
|
name: 'Mac'
|
|
487
|
-
version: '
|
|
875
|
+
version: '$1'
|
|
488
876
|
|
|
489
|
-
- regex: '
|
|
877
|
+
- regex: 'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC|iMac|MacBook|macOS|AppleExchangeWebServices|com.apple.trustd|Sonos/.+\(MDCR_'
|
|
490
878
|
name: 'Mac'
|
|
491
|
-
version: '
|
|
879
|
+
version: ''
|
|
492
880
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
name: 'Mac'
|
|
881
|
+
##########
|
|
882
|
+
# SeewoOS
|
|
883
|
+
##########
|
|
884
|
+
- regex: 'SeewoOS x86_64 (\d+[\.\d]+)'
|
|
885
|
+
name: 'SeewoOS'
|
|
499
886
|
version: '$1'
|
|
500
887
|
|
|
501
|
-
- regex: 'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC|iMac|MacBook'
|
|
502
|
-
name: 'Mac'
|
|
503
|
-
version: ''
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
888
|
##########
|
|
508
889
|
# ChromeOS
|
|
509
890
|
##########
|
|
510
891
|
- regex: 'CrOS [a-z0-9_]+ .* Chrome/(\d+[\.\d]+)'
|
|
511
892
|
name: 'Chrome OS'
|
|
512
893
|
version: '$1'
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
894
|
+
|
|
516
895
|
##########
|
|
517
896
|
# BlackBerry
|
|
518
897
|
##########
|
|
519
898
|
- regex: '(?:BB10;.+Version|Black[Bb]erry[0-9a-z]+|Black[Bb]erry.+Version)/(\d+[\.\d]+)'
|
|
520
899
|
name: 'BlackBerry OS'
|
|
521
900
|
version: '$1'
|
|
522
|
-
|
|
523
|
-
|
|
901
|
+
|
|
524
902
|
- regex: 'RIM Tablet OS (\d+[\.\d]+)'
|
|
525
903
|
name: 'BlackBerry Tablet OS'
|
|
526
904
|
version: '$1'
|
|
527
|
-
|
|
528
|
-
|
|
905
|
+
|
|
529
906
|
- regex: 'RIM Tablet OS|QNX|Play[Bb]ook'
|
|
530
907
|
name: 'BlackBerry Tablet OS'
|
|
531
908
|
version: ''
|
|
532
|
-
|
|
533
|
-
|
|
909
|
+
|
|
534
910
|
- regex: 'BlackBerry'
|
|
535
911
|
name: 'BlackBerry OS'
|
|
536
912
|
version: ''
|
|
537
|
-
|
|
913
|
+
|
|
538
914
|
- regex: 'bPod'
|
|
539
915
|
name: 'BlackBerry OS'
|
|
540
916
|
version: ''
|
|
541
917
|
|
|
542
|
-
|
|
543
918
|
##########
|
|
544
919
|
# BeOS
|
|
545
920
|
##########
|
|
@@ -547,9 +922,6 @@
|
|
|
547
922
|
name: 'BeOS'
|
|
548
923
|
version: ''
|
|
549
924
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
925
|
##########
|
|
554
926
|
# Symbian
|
|
555
927
|
##########
|
|
@@ -557,48 +929,38 @@
|
|
|
557
929
|
name: 'Symbian^3'
|
|
558
930
|
version: 'Anna'
|
|
559
931
|
|
|
560
|
-
|
|
561
932
|
- regex: 'Symbian/3.+NokiaBrowser/7\.4'
|
|
562
933
|
name: 'Symbian^3'
|
|
563
934
|
version: 'Belle'
|
|
564
935
|
|
|
565
|
-
|
|
566
936
|
- regex: 'Symbian/3'
|
|
567
937
|
name: 'Symbian^3'
|
|
568
938
|
version: ''
|
|
569
939
|
|
|
570
|
-
|
|
571
940
|
- regex: '(?:Series ?60|SymbOS|S60)(?:[ /]?(\d+[\.\d]+|V\d+))?'
|
|
572
941
|
name: 'Symbian OS Series 60'
|
|
573
942
|
version: '$1'
|
|
574
943
|
|
|
575
|
-
|
|
576
944
|
- regex: 'Series40'
|
|
577
945
|
name: 'Symbian OS Series 40'
|
|
578
946
|
version: ''
|
|
579
947
|
|
|
580
|
-
|
|
581
948
|
- regex: 'SymbianOS/(\d+[\.\d]+)'
|
|
582
949
|
name: 'Symbian OS'
|
|
583
950
|
version: '$1'
|
|
584
|
-
|
|
585
|
-
|
|
951
|
+
|
|
586
952
|
- regex: 'MeeGo|WeTab'
|
|
587
953
|
name: 'MeeGo'
|
|
588
954
|
version: ''
|
|
589
|
-
|
|
590
|
-
|
|
955
|
+
|
|
591
956
|
- regex: 'Symbian(?: OS)?|SymbOS'
|
|
592
957
|
name: 'Symbian OS'
|
|
593
958
|
version: ''
|
|
594
|
-
|
|
595
|
-
|
|
959
|
+
|
|
596
960
|
- regex: 'Nokia'
|
|
597
961
|
name: 'Symbian'
|
|
598
962
|
version: ''
|
|
599
963
|
|
|
600
|
-
|
|
601
|
-
|
|
602
964
|
##########
|
|
603
965
|
# Firefox OS
|
|
604
966
|
##########
|
|
@@ -606,7 +968,6 @@
|
|
|
606
968
|
name: 'Firefox OS'
|
|
607
969
|
version: ''
|
|
608
970
|
|
|
609
|
-
|
|
610
971
|
##########
|
|
611
972
|
# RISC OS
|
|
612
973
|
##########
|
|
@@ -614,7 +975,6 @@
|
|
|
614
975
|
name: 'RISC OS'
|
|
615
976
|
version: '$1'
|
|
616
977
|
|
|
617
|
-
|
|
618
978
|
##########
|
|
619
979
|
# Inferno
|
|
620
980
|
##########
|
|
@@ -622,50 +982,41 @@
|
|
|
622
982
|
name: 'Inferno'
|
|
623
983
|
version: '$1'
|
|
624
984
|
|
|
625
|
-
|
|
626
985
|
##########
|
|
627
986
|
# Bada
|
|
628
987
|
##########
|
|
629
|
-
- regex: 'bada(?:[ /](\d+[\.\d]+))'
|
|
988
|
+
- regex: 'bada(?:[ /](\d+[\.\d]+))?'
|
|
630
989
|
name: 'Bada'
|
|
631
990
|
version: '$1'
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
- regex: 'bada'
|
|
635
|
-
name: 'Bada'
|
|
636
|
-
version: ''
|
|
637
991
|
|
|
992
|
+
##########
|
|
993
|
+
# REX
|
|
994
|
+
##########
|
|
995
|
+
- regex: 'REX; U;'
|
|
996
|
+
name: 'REX'
|
|
997
|
+
version: ''
|
|
638
998
|
|
|
639
999
|
##########
|
|
640
1000
|
# Brew
|
|
641
1001
|
##########
|
|
642
|
-
- regex: '(?:Brew MP
|
|
1002
|
+
- regex: '(?:Brew(?!-Applet)(?: MP)?|BMP)(?:[ /](\d+[\.\d]+))?'
|
|
643
1003
|
name: 'Brew'
|
|
644
1004
|
version: '$1'
|
|
645
1005
|
|
|
646
|
-
|
|
647
|
-
- regex: 'Brew MP|BREW|BMP'
|
|
648
|
-
name: 'Brew'
|
|
649
|
-
version: ''
|
|
650
|
-
|
|
651
|
-
|
|
652
1006
|
##########
|
|
653
1007
|
# Web TV
|
|
654
1008
|
##########
|
|
655
1009
|
- regex: 'GoogleTV(?:[ /](\d+[\.\d]+))?'
|
|
656
1010
|
name: 'Google TV'
|
|
657
1011
|
version: '$1'
|
|
658
|
-
|
|
659
|
-
|
|
1012
|
+
|
|
660
1013
|
- regex: 'AppleTV(?:/?(\d+[\.\d]+))?'
|
|
661
|
-
name: '
|
|
1014
|
+
name: 'tvOS'
|
|
662
1015
|
version: '$1'
|
|
663
|
-
|
|
664
|
-
|
|
1016
|
+
|
|
665
1017
|
- regex: 'WebTV/(\d+[\.\d]+)'
|
|
666
1018
|
name: 'WebTV'
|
|
667
1019
|
version: '$1'
|
|
668
|
-
|
|
669
1020
|
|
|
670
1021
|
##########
|
|
671
1022
|
# Remix OS
|
|
@@ -682,61 +1033,49 @@
|
|
|
682
1033
|
name: 'Remix OS'
|
|
683
1034
|
version: ''
|
|
684
1035
|
|
|
685
|
-
|
|
686
1036
|
##########
|
|
687
1037
|
# Unix
|
|
688
1038
|
##########
|
|
689
1039
|
- regex: '(?:SunOS|Solaris)(?:[/ ](\d+[\.\d]+))?'
|
|
690
1040
|
name: 'Solaris'
|
|
691
1041
|
version: '$1'
|
|
692
|
-
|
|
693
|
-
|
|
1042
|
+
|
|
694
1043
|
- regex: 'AIX(?:[/ ]?(\d+[\.\d]+))?'
|
|
695
1044
|
name: 'AIX'
|
|
696
1045
|
version: '$1'
|
|
697
|
-
|
|
698
|
-
|
|
1046
|
+
|
|
699
1047
|
- regex: 'HP-UX(?:[/ ]?(\d+[\.\d]+))?'
|
|
700
1048
|
name: 'HP-UX'
|
|
701
1049
|
version: '$1'
|
|
702
|
-
|
|
703
|
-
|
|
1050
|
+
|
|
704
1051
|
- regex: 'FreeBSD(?:[/ ]?(\d+[\.\d]+))?'
|
|
705
1052
|
name: 'FreeBSD'
|
|
706
1053
|
version: '$1'
|
|
707
|
-
|
|
708
|
-
|
|
1054
|
+
|
|
709
1055
|
- regex: 'NetBSD(?:[/ ]?(\d+[\.\d]+))?'
|
|
710
1056
|
name: 'NetBSD'
|
|
711
1057
|
version: '$1'
|
|
712
|
-
|
|
713
|
-
|
|
1058
|
+
|
|
714
1059
|
- regex: 'OpenBSD(?:[/ ]?(\d+[\.\d]+))?'
|
|
715
1060
|
name: 'OpenBSD'
|
|
716
1061
|
version: '$1'
|
|
717
|
-
|
|
718
|
-
|
|
1062
|
+
|
|
719
1063
|
- regex: 'DragonFly(?:[/ ]?(\d+[\.\d]+))?'
|
|
720
1064
|
name: 'DragonFly'
|
|
721
1065
|
version: '$1'
|
|
722
|
-
|
|
723
|
-
|
|
1066
|
+
|
|
724
1067
|
- regex: 'Syllable(?:[/ ]?(\d+[\.\d]+))?'
|
|
725
1068
|
name: 'Syllable'
|
|
726
1069
|
version: '$1'
|
|
727
|
-
|
|
728
|
-
|
|
1070
|
+
|
|
729
1071
|
- regex: 'IRIX(?:;64)?(?:[/ ]?(\d+[\.\d]+))'
|
|
730
1072
|
name: 'IRIX'
|
|
731
1073
|
version: '$1'
|
|
732
|
-
|
|
733
|
-
|
|
1074
|
+
|
|
734
1075
|
- regex: 'OSF1(?:[/ ]?v?(\d+[\.\d]+))?'
|
|
735
1076
|
name: 'OSF1'
|
|
736
1077
|
version: '$1'
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
1078
|
+
|
|
740
1079
|
##########
|
|
741
1080
|
# Gaming Console
|
|
742
1081
|
##########
|
|
@@ -744,45 +1083,42 @@
|
|
|
744
1083
|
name: 'Nintendo'
|
|
745
1084
|
version: '$1'
|
|
746
1085
|
|
|
747
|
-
- regex: 'PlayStation ?([
|
|
1086
|
+
- regex: 'PlayStation ?([34])'
|
|
748
1087
|
name: 'PlayStation'
|
|
749
1088
|
version: '$1'
|
|
750
|
-
|
|
751
|
-
|
|
1089
|
+
|
|
752
1090
|
- regex: 'Xbox|KIN\.(?:One|Two)'
|
|
753
1091
|
name: 'Xbox'
|
|
754
1092
|
version: '360'
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
1093
|
+
|
|
758
1094
|
##########
|
|
759
1095
|
# Mobile Gaming Console
|
|
760
1096
|
##########
|
|
761
1097
|
- regex: 'Nitro|Nintendo ([3]?DS[i]?)'
|
|
762
1098
|
name: 'Nintendo Mobile'
|
|
763
1099
|
version: '$1'
|
|
764
|
-
|
|
765
|
-
|
|
1100
|
+
|
|
766
1101
|
- regex: 'PlayStation ((?:Portable|Vita))'
|
|
767
1102
|
name: 'PlayStation Portable'
|
|
768
1103
|
version: '$1'
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
1104
|
+
|
|
772
1105
|
##########
|
|
773
1106
|
# IBM
|
|
774
1107
|
##########
|
|
775
1108
|
- regex: 'OS/2'
|
|
776
1109
|
name: 'OS/2'
|
|
777
1110
|
version: ''
|
|
778
|
-
|
|
779
|
-
|
|
780
1111
|
|
|
781
1112
|
###########
|
|
782
1113
|
# Linux (Generic)
|
|
783
1114
|
###########
|
|
784
|
-
- regex: 'Linux(?:OS)?[^a-z]'
|
|
1115
|
+
- regex: 'Linux(?:OS)?[^a-z]|Cinnamon/(?:\d+[\.\d]+)'
|
|
785
1116
|
name: 'GNU/Linux'
|
|
786
1117
|
version: ''
|
|
787
1118
|
|
|
788
|
-
|
|
1119
|
+
##########
|
|
1120
|
+
# Java ME (Java Platform, Micro Edition)
|
|
1121
|
+
##########
|
|
1122
|
+
- regex: 'Java ME|(J2ME|Profile)/MIDP|MIDP-(?:\d+[\.\d]+)/CLDC|Configuration/CLDC|Java; U; MIDP|MMP/\d.\d'
|
|
1123
|
+
name: 'Java ME'
|
|
1124
|
+
version: ''
|