node-device-detector
Version:
Nodejs device detector (port matomo-org/device-detector)
2,098 lines (2,097 loc) • 1.69 MB
JavaScript
module.exports = {
"360": {
"regex": "(?:180[1379]-A01|1713-A01|1707-A01|1509-A00|1603-A03|1607-A01|1503-A01|1505-A0[12]|1605-A01)(?:[);/ ]|$)",
"device": "smartphone",
"models": [
{
"regex": "1807-A01(?:[);/ ]|$)",
"model": "N7"
},
{
"regex": "1803-A01(?:[);/ ]|$)",
"model": "N7 Lite"
},
{
"regex": "1809-A01(?:[);/ ]|$)",
"model": "N7 Pro"
},
{
"regex": "1713-A01(?:[);/ ]|$)",
"model": "N6 Lite"
},
{
"regex": "1707-A01(?:[);/ ]|$)",
"model": "N6"
},
{
"regex": "1801-A01(?:[);/ ]|$)",
"model": "N6 Pro"
},
{
"regex": "1509-A00(?:[);/ ]|$)",
"model": "Q5 Plus"
},
{
"regex": "1503-A01(?:[);/ ]|$)",
"model": "N4"
},
{
"regex": "1605-A01(?:[);/ ]|$)",
"model": "N5"
},
{
"regex": "1603-A03(?:[);/ ]|$)",
"model": "N4A"
},
{
"regex": "1607-A01(?:[);/ ]|$)",
"model": "N5S"
},
{
"regex": "1505-A0[12](?:[);/ ]|$)",
"model": "N4S"
}
]
},
"8848": {
"regex": "8848 (M[3-6])(?:[);/ ]|$)",
"device": "smartphone",
"model": "$1"
},
"Ace": {
"regex": "(?:BUZZ [1-5]|BUZZ 4(?:Pro|S|Lite)|CLEVER [13]|URBAN [123](?: Pro)?)(?:[);/ ]|$)",
"device": "smartphone",
"models": [
{
"regex": "BUZZ ([45]) Ultra",
"model": "Buzz $1 Ultra"
},
{
"regex": "BUZZ ([45]) Note",
"model": "Buzz $1 Note"
},
{
"regex": "BUZZ ([45]) Prime",
"model": "Buzz $1 Prime"
},
{
"regex": "BUZZ 5 Pro Plus",
"model": "Buzz 5 Pro+"
},
{
"regex": "BUZZ ([45]) ?Pro",
"model": "Buzz $1 Pro"
},
{
"regex": "BUZZ ([1245]) ?Lite",
"model": "Buzz $1 Lite"
},
{
"regex": "BUZZ ([123]) Plus",
"model": "Buzz $1 Plus"
},
{
"regex": "BUZZ 4S",
"model": "Buzz 4S"
},
{
"regex": "BUZZ ([1-5])",
"model": "Buzz $1"
},
{
"regex": "CLEVER ([13])",
"model": "Clever $1"
},
{
"regex": "URBAN 1 Pro",
"model": "Urban 1 Pro"
},
{
"regex": "URBAN ([123])",
"model": "Urban $1"
}
]
},
"Tunisie Telecom": {
"regex": "StarTrail TT(?:[);/ ]|$)",
"device": "smartphone",
"model": "StarTrail by TT"
},
"SFR": {
"regex": "StarShine|StarTrail|STARADDICT|StarText|StarNaute|StarXtrem|StarTab|(?:Android 8(?:[\\d.]*);(?: [\\w-]+;)? (?:AURA (?:PLUS|ULTRA)|AURA))(?: Build|[;)])",
"device": "smartphone",
"models": [
{
"regex": "StarXtrem II(?:[);/ ]|$)",
"model": "StarXtrem 2"
},
{
"regex": "StarXtrem ?([3-6])(?:[);/ ]|$)",
"model": "StarXtrem $1"
},
{
"regex": "StarXtrem(?:[);/ ]|$)",
"model": "StarXtrem"
},
{
"regex": "StarTrail III(?:[);/ ]|$)",
"model": "StarTrail 3"
},
{
"regex": "StarTrail II(?:[);/ ]|$)",
"model": "StarTrail 2"
},
{
"regex": "StarTrail[ _]?([1-9])[ _]([34])G(?:[);/ ]|$)",
"model": "StarTrail $1 $2G"
},
{
"regex": "StarTrail[ _]?([1-9])(?:[);/ ]|$)",
"model": "StarTrail $1"
},
{
"regex": "StarTrail(?:[);/ ]|$)",
"model": "StarTrail"
},
{
"regex": "AURA PLUS(?:[);/ ]|$)",
"model": "Aura Plus"
},
{
"regex": "aura ULTRA(?:[);/ ]|$)",
"model": "Aura Ultra"
},
{
"regex": "AURA(?:[);/ ]|$)",
"model": "Aura"
},
{
"regex": "StarShine II(?:[);/ ]|$)",
"model": "StarShine 2"
},
{
"regex": "StarShine III(?:[);/ ]|$)",
"model": "StarShine 3"
},
{
"regex": "StarShine(?:[);/ ]|$)",
"model": "StarShine"
},
{
"regex": "STARADDICT 6(?:[);/ ]|$)",
"model": "StarAddict 6"
},
{
"regex": "STARADDICT 4(?:[);/ ]|$)",
"model": "StarAddict 4"
},
{
"regex": "STARADDICT III(?:[);/ ]|$)",
"model": "StarAddict 3"
},
{
"regex": "STARADDICT II Plus(?:[);/ ]|$)",
"model": "StarAddict 2 Plus"
},
{
"regex": "STARADDICT II(?:[);/ ]|$)",
"model": "StarAddict 2"
},
{
"regex": "STARADDICT(?:[);/ ]|$)",
"model": "StarAddict"
},
{
"regex": "StarText II(?:[);/ ]|$)",
"model": "StarText 2"
},
{
"regex": "StarText(?:[);/ ]|$)",
"model": "StarText"
},
{
"regex": "StarNaute II(?:[);/ ]|$)",
"model": "StarNaute 2"
},
{
"regex": "STARNAUTE ?([1-4])(?:[);/ ]|$)",
"model": "StarNaute $1"
},
{
"regex": "StarNaute(?:[);/ ]|$)",
"model": "StarNaute"
},
{
"regex": "StarTab",
"model": "StarTab",
"device": "tablet"
},
{
"regex": "((?:StarShine|StarTrail|STARADDICT|StarText|StarNaute|StarXtrem)[^;/]*) Build",
"model": "$1"
}
]
},
"Adronix": {
"regex": "Adronix[ _]?(?:MT[0-9]+|X1001|Mini ?Tab ?7 ?3G)(?:[);/ ]|$)",
"device": "tablet",
"models": [
{
"regex": "Adronix ?Mini ?Tab ?7 ?3G",
"model": "Mini Tab 7 3G"
},
{
"regex": "Adronix[ _]?(MT[0-9]+|X1001)(?:[);/ ]|$)",
"model": "$1"
}
]
},
"Cherry Mobile": {
"regex": "Cherry|Superion[_ ](?:S2|Radar Deluxe|S1 DTV|S1 Plus DTV|Tab Pro)|Flare([ _])?(Selfie|2\\.[01]|2X|4|A[123]|J[1235678]|P[13]|S[4-8]|X2|Y[3567]|S[ _]Play|HD|LITE|XL|X_V[23]|Y3s|Tab|INFINITY)(?:[ _](?:Pro|Plus|Max|LTE))?|Fusion Aura 3s|Radar Deluxe 2|Desire R[678]|Desire_R[67]_Lite|Fusion Bolt|Omega[_ ](?:Icon 2|Icon Lite 2|lite[_ ][243][Cs]?|HD[ _][345]|HD_Duo|X)|Spin Max 2|Selfie_Two|Flare X Lite|Flare_5|Android 1.*Aqua S9|Aqua S10|MAIA PAD PLUS|COSMOS THREE| Revel 3G|Touch XL 2|DSR_(?:R8|R7P?)|CUBIX CUBE 3",
"device": "smartphone",
"models": [
{
"regex": "(Flare2X|Aqua S(?:9|10)(?: (?:Max|Lite|Pro))?)",
"model": "$1"
},
{
"regex": "Flare[_ ]HD[_ ]([345])",
"model": "Flare HD $1"
},
{
"regex": "Flare_HD_MAX",
"model": "Flare HD Max"
},
{
"regex": "FLARE LITE",
"model": "Flare Lite"
},
{
"regex": "Flare[ _]S[ _]Play",
"model": "Flare S Play"
},
{
"regex": "Flare (2\\.[01])",
"model": "Flare $1"
},
{
"regex": "Flare[_ ]J([2356])S",
"model": "Flare J$1s"
},
{
"regex": "Flare_([A-Z]\\d+)_Prime",
"model": "Flare $1 Prime"
},
{
"regex": "Flare_([A-Z]\\d+)_Deluxe",
"model": "Flare $1 Deluxe"
},
{
"regex": "Flare[_ ]([A-Z]\\d+)[_ ]Power",
"model": "Flare $1 Power"
},
{
"regex": "Flare[_ ]([A-Z]\\d+)[_ ]Pro",
"model": "Flare $1 Pro"
},
{
"regex": "Flare[_ ]([A-Z]\\d+)[_ ]Lite",
"model": "Flare $1 Lite"
},
{
"regex": "Flare[_ ]([A-Z]\\d+)[_ ]Plus",
"model": "Flare $1 Plus"
},
{
"regex": "Flare XL Plus",
"model": "Flare XL Plus"
},
{
"regex": "Flare ?J3 ?Plus",
"model": "Flare J3 Plus"
},
{
"regex": "Flare X Lite",
"model": "Flare X Lite"
},
{
"regex": "Cherry[_ ]X740",
"model": "Flare A5"
},
{
"regex": "Flare[ _]X[_ ]V([23])",
"model": "Flare X V$1"
},
{
"regex": "Flare[ _]XL[_ ]?2",
"model": "Flare XL 2"
},
{
"regex": "Flare[ _]([A-Z]\\d+)[ _]mini",
"model": "Flare $1 Mini"
},
{
"regex": "Flare_J2_2018",
"model": "Flare J2 (2018)"
},
{
"regex": "Flare S4 Max LTE",
"model": "Flare S4 Max LTE"
},
{
"regex": "Flare[_ ]([A-Z]\\d+)[_ ]Max",
"model": "Flare $1 Max"
},
{
"regex": "FlareS5LiteDTV",
"model": "Flare S5 Lite DTV"
},
{
"regex": "Flare[_ ]J2[_ ]DTV",
"model": "Flare S2 DTV"
},
{
"regex": "Flare[_ ]INFINITY",
"model": "Flare Infinity"
},
{
"regex": "Flare[_ ]Lite[_ ]3S",
"model": "Flare Lite S3"
},
{
"regex": "Flare(?:[ _])?(Selfie|A1_Roam|A[123]|J8 LTE|J1s|J[1235678]|P[13]|S[4-8]|X2|Y3s|Y7_LTE|Y[3567]|[45])",
"model": "Flare $1"
},
{
"regex": "Touch XL 2",
"model": "Touch XL 2"
},
{
"regex": "OMEGA[ _]HD[ _]([345])",
"model": "Omega HD $1"
},
{
"regex": "Omega_HD_Duo",
"model": "Omega HD Duo"
},
{
"regex": "Omega Icon Lite 2",
"model": "Omega Icon Lite 2"
},
{
"regex": "Omega Icon 2",
"model": "Omega Icon 2"
},
{
"regex": "Omega[_ ]Lite[_ ](3[Cs]|[24])",
"model": "Omega Lite $1"
},
{
"regex": "Omega[_ ]X",
"model": "Omega X"
},
{
"regex": "Spin Max 2",
"model": "Spin Max 2"
},
{
"regex": "Selfie_Two",
"model": "Selfie Two"
},
{
"regex": "Desire[ _]R(\\d)[ _]Lite",
"model": "Desire R$1 Lite"
},
{
"regex": "Desire R6 plus",
"model": "Desire R6 Plus"
},
{
"regex": "Desire R6",
"model": "Desire R6"
},
{
"regex": "DSR_R([78])P",
"model": "Desire R$1 Plus"
},
{
"regex": "DSR_R([78])",
"model": "Desire R$1"
},
{
"regex": "Desire Eye",
"model": "Desire Eye"
},
{
"regex": "COSMOS THREE",
"model": "Cosmos 3"
},
{
"regex": "CUBIX CUBE 3",
"model": "Cubix Cube 3"
},
{
"regex": "Revel 3G",
"model": "Revel 3G"
},
{
"regex": "Radar Deluxe 2",
"model": "Superion Radar Deluxe 2",
"device": "tablet"
},
{
"regex": "Superion_S2_Plus",
"model": "Superion S2 Plus",
"device": "tablet"
},
{
"regex": "Superion S1 Plus DTV",
"model": "Superion S1 Plus DTV",
"device": "tablet"
},
{
"regex": "Superion Tab Pro",
"model": "Superion Tab Pro",
"device": "tablet"
},
{
"regex": "Flare Tab Pro V(\\d)",
"device": "tablet",
"model": "Flare Tab Pro V$1"
},
{
"regex": "Fusion Aura 3s",
"device": "tablet",
"model": "Fusion Aura 3S"
},
{
"regex": "MAIA PAD PLUS",
"device": "tablet",
"model": "Maia Pad Plus"
},
{
"regex": "(Fusion Bolt|Flare Tab Pro|Flare Tab|Superion[_ ](?:S2|Radar Deluxe|S1 DTV))",
"model": "$1",
"device": "tablet"
},
{
"regex": "Cherry(?:[ _]?Mobile)?[ _]?([^/;]+)(?: Build|[);])",
"model": "$1"
}
]
},
"HTC": {
"regex": "HTC|Sprint (?:APA|ATP)|ADR(?!910L)[a-z0-9]+|NexusHD2|Amaze[ _]4G(?:[);/ ]|$)|(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/)]+)(?: Build|\\))|(Amaze[ _]4G|(?<!BLU LIFE |ZOPO )One ?[XELSV\\+]+)(?:[);/ ]|$)|SPV E6[05]0|(One M8|One Mini 2|X525a|PG86100|PC36100|XV6975|PJ83100|2PYB2|2PS64|2PZC5|0PJA10|0PJA2|HTV33|0PM92|0PCV1|601HT|0PAJ5|HTL2[23]|HTV3[12]|2PQ93|X2-HT|EXODUS 1|ISW13HT|710C|U Ultra|2Q8L10000|2Q55100|2QC9200|2PZC100|2PZF1|2PZM3|2Q6E1|U12 life|U Play)(?:[);/ ]|$)",
"device": "smartphone",
"models": [
{
"regex": "(?:HTC[_ ](?:U-2u|U Play|2PZM3)|2PZM3|U Play)(?:[);/ ]|$)",
"model": "U Play"
},
{
"regex": "(?:HTC[_ ]U-1[wu]|2PZF1|U Ultra)(?:[);/ ]|$)",
"model": "U Ultra"
},
{
"regex": "(?:U11 plus|(?:HTC_)?2Q4D[12]00)(?:[);/ ]|$)",
"model": "U11 Plus"
},
{
"regex": "(?:HTC )?(?:U12\\+|2Q55[13]00)(?:[);/ ]|$)",
"model": "U12 Plus"
},
{
"regex": "U(1[12]) life(?:[);/ ]|$)",
"model": "U$1 Life"
},
{
"regex": "2Q6E1(?:[);/ ]|$)",
"model": "U12 Life"
},
{
"regex": "(?:U11 Eyes|2Q4R100)(?:[);/ ]|$)",
"model": "U11 Eyes"
},
{
"regex": "XV6975(?:[);/ ]|$)",
"model": "Imagio"
},
{
"regex": "PG86100(?:[);/ ]|$)",
"model": "Evo 3G"
},
{
"regex": "PC36100(?:[);/ ]|$)",
"model": "Evo 4G"
},
{
"regex": "HTC[_ ]D628u",
"model": "Desire 628 Dual SIM"
},
{
"regex": "(?:HTC[_ ])?(?:HTV33|601HT|2PZC100|2PZC5|U-3[uw])(?:[);/ ]|$)",
"model": "U11"
},
{
"regex": "(?:HTC_)?(?:801e|802[wdt]|PN071)",
"model": "One"
},
{
"regex": "PJ83100(?:[);/ ]|$)",
"model": "One X"
},
{
"regex": "HTC[_ ]PO582(?:[);/ ]|$)",
"model": "One Mini"
},
{
"regex": "(?:HTC_?)?(?:One[ _]?Mini[ _]?2|M8MINx)(?:[);/ ]|$)",
"model": "One Mini 2"
},
{
"regex": "X2-HT(?:[);/ ]|$)",
"model": "One X2"
},
{
"regex": "HTC 2PXH3(?:[);/ ]|$)",
"model": "One X10"
},
{
"regex": "ISW13HT(?:[);/ ]|$)",
"model": "J"
},
{
"regex": "HTL22(?:[);/ ]|$)",
"model": "J One"
},
{
"regex": "(?:HTC U23 pro|2QC9200)(?:[);/ ]|$)",
"model": "U23 Pro"
},
{
"regex": "(?:HTL23|HTV31)(?:[);/ ]|$)",
"model": "J Butterfly"
},
{
"regex": "HTCButterflys901s(?:[);/ ]|$)",
"model": "Butterfly S"
},
{
"regex": "One M9_Prime Camera Edition",
"model": "One M9 Prime Camera Edition"
},
{
"regex": "(?:HTC[_ ])?(?:M9pw|One M9 ?PLUS)(?:[);/ ]|$)",
"model": "One M9 Plus"
},
{
"regex": "(?:HTC[_ ]M9u|0PJA2|0PJA10|HTC One M9|HTC6535LVW)(?:[);/ ]|$)",
"model": "One M9"
},
{
"regex": "One[ _](X9|[EM]8) dual sim(?:[);/ ]|$)",
"model": "One $1 Dual SIM"
},
{
"regex": "Desire[ _]([\\d\\w]+) dual sim(?:[);/ ]|$)",
"model": "Desire $1 Dual SIM"
},
{
"regex": "HTC(?: One m7|6500LVW|PN071)(?:[);/ ]|$)",
"model": "One M7"
},
{
"regex": "(?:One M8|HTC6525LVW|HTC[_ ]M8[xd]|HTC[_ ]0P6B|HTCOneM8)(?:[);/ ]|$)",
"model": "One M8"
},
{
"regex": "HTC ?One ?M8 ?Eye(?:[);/ ]|$)",
"model": "One M8 Eye"
},
{
"regex": "(?:HTC_)?(?:0PAJ5|M8Sx)(?:[);/ ]|$)",
"model": "One E8"
},
{
"regex": "HTC[_ ]E9x(?:[);/ ]|$)",
"model": "One E9"
},
{
"regex": "HTC[_ ]?(?:One[_ ])?E9(?:pw|PLUS dual sim)(?:[);/ ]|$)",
"model": "One E9 Plus"
},
{
"regex": "HTC_S9u(?:[);/ ]|$)",
"model": "One S9"
},
{
"regex": "HTC6515LVW(?:[);/ ]|$)",
"model": "One Remix"
},
{
"regex": "X525a(?:[);/ ]|$)",
"model": "One X+"
},
{
"regex": "(?:2PQ9(?:3|10)|HTC[_ ]A9u)(?:[);/ ]|$)",
"model": "One A9"
},
{
"regex": "ADR6300",
"model": "Droid Incredible"
},
{
"regex": "HTC6435LVW",
"model": "Droid DNA"
},
{
"regex": "ADR6400L",
"model": "ThunderBolt"
},
{
"regex": "ADR6410LRA",
"model": "Droid Incredible 3"
},
{
"regex": "SPV E600",
"model": "Excalibur"
},
{
"regex": "SPV E650",
"model": "Vox"
},
{
"regex": "2PYB2",
"model": "Bolt"
},
{
"regex": "2PS64|HTC6545LVW|HTC[_ ]M10h",
"model": "10"
},
{
"regex": "(710C)(?:[);/ ]|$)",
"model": "Desire $1"
},
{
"regex": "0PM92(?:[);/ ]|$)",
"model": "Desire 626S"
},
{
"regex": "(?:HTC_)?0PCV[12](?:[);/ ]|$)",
"model": "Desire 510"
},
{
"regex": "HTC ?D160LVW(?:PP)?(?:[);/ ]|$)",
"model": "Desire 530"
},
{
"regex": "HTC[_ ]D310n(?:[);/ ]|$)",
"model": "Desire 310"
},
{
"regex": "HTC[_ ]v01(?:[);/ ]|$)",
"model": "Desire 320"
},
{
"regex": "608t(?:[);/ ]|$)",
"model": "Desire 608t"
},
{
"regex": "HTC_(?:0P9O2|D610x)(?:[);/ ]|$)",
"model": "Desire 610"
},
{
"regex": "HTC[_ ]?(0P4E[12])(?:[);/ ]|$)",
"model": "Desire 601"
},
{
"regex": "HTC_?D620h(?:[);/ ]|$)",
"model": "Desire 620"
},
{
"regex": "HTC[_ ]?(?:D626ph|D200LVWPP)(?:[);/ ]|$)",
"model": "Desire 626"
},
{
"regex": "HTC_?(?:0P9C2|D816[xd]?)(?:[);/ ]|$)",
"model": "Desire 816"
},
{
"regex": "HTC_?D526h(?:[);/ ]|$)",
"model": "Desire 526"
},
{
"regex": "2Q8L10000(?:[);/ ]|$)",
"model": "Desire 19s"
},
{
"regex": "Desire620G(?:[);/ ]|$)",
"model": "Desire 620G Dual SIM"
},
{
"regex": "EXODUS 1(?:[);/ ]|$)",
"model": "Exodus 1"
},
{
"regex": "HTC 2Q7A100(?:[);/ ]|$)",
"model": "U19e"
},
{
"regex": "HTC Desire 10 compact(?:[);/ ]|$)",
"model": "Desire 10 Compact"
},
{
"regex": "HTC_D10i(?:[);/ ]|$)",
"model": "Desire 10 Pro"
},
{
"regex": "HTC[ _](?:10[ _]evo|M10f)(?:[);/ ]|$)",
"model": "10 Evo"
},
{
"regex": "HTC Desire (\\d+) pro 5G(?:[);/ ]|$)",
"model": "Desire $1 Pro 5G"
},
{
"regex": "HTC Desire (\\d+) pro(?:[);/ ]|$)",
"model": "Desire $1 Pro"
},
{
"regex": "Desire 10 lifestyle(?:[);/ ]|$)",
"model": "Desire 10 Life Style"
},
{
"regex": "NexusHD2",
"model": "HD2"
},
{
"regex": "(?:HTC[_ ])?TATTOO[_ ]A3288",
"model": "Tattoo A3288"
},
{
"regex": "HTC[ _-]P715a",
"device": "tablet",
"model": "P715a"
},
{
"regex": "HTC[ _-]Flyer Build",
"device": "tablet",
"model": "Flyer"
},
{
"regex": "HTC[ _-](A10[13]) Plus",
"device": "tablet",
"model": "$1 Plus"
},
{
"regex": "HTC[ _-](A10[0123])",
"device": "tablet",
"model": "$1"
},
{
"regex": "HTC[ _-]Flyer[ _-]([\\w]{1,5})",
"device": "tablet",
"model": "Flyer $1"
},
{
"regex": "HTC(?:[ _-])?(?:One[ _-]max|6600LVW|0P3P7)(?:[);/ ]|$)",
"device": "phablet",
"model": "One Max"
},
{
"regex": "USCCHTC(\\d+)",
"model": "$1"
},
{
"regex": "Sprint (ATP.*) Build",
"device": "tablet",
"model": "$1 (Sprint)"
},
{
"regex": "Sprint (APA.*) Build",
"model": "$1 (Sprint)"
},
{
"regex": "Wildfire (E3) lite",
"model": "Wildfire $1 Lite"
},
{
"regex": "Wildfire (E) star",
"model": "Wildfire $1 Star"
},
{
"regex": "Wildfire (E2?) plus",
"model": "Wildfire $1 Plus"
},
{
"regex": "HTC[ _]([^/;]+) [0-9]+(?:\\.[0-9]+)+ Build",
"model": "$1"
},
{
"regex": "HTC[ _]([^/;]+) Build",
"model": "$1"
},
{
"regex": "HTC[ _]([a-z0-9]+[ _-]?(?:[a-z0-9_+\\-])*)",
"model": "$1"
},
{
"regex": "(?:HTC-)?HTC(?:[-/ ])?([a-z0-9\\-_]+)",
"model": "$1"
},
{
"regex": "HTC;(?: )?([a-z0-9 ]+)",
"model": "$1"
},
{
"regex": "(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/)]+)(?: Build|[);])",
"model": "$1 $2"
},
{
"regex": "(Amaze[ _]4G|One ?[XELSV\\+]*) Build",
"model": "$1"
},
{
"regex": "(ADR[^;/]+) Build",
"model": "$1"
},
{
"regex": "(ADR[a-z0-9]+)",
"model": "$1"
},
{
"regex": "HTV32(?:[);/ ]|$)",
"model": "10"
}
]
},
"Microsoft": {
"regex": "KIN\\.(One|Two)|RM-(?:1010|1031|106[57]|107[23467]|1089|109[02]|1096|1099|1109|111[348]|1127|1141|115[24]|994)|Microsoft; Lumia|Lumia (?:1530|1320|950|850|650|640|550|535|435)|Corporation/Surface|Surface Duo|Surface 3",
"device": "smartphone",
"models": [
{
"regex": "KIN\\.(One|Two)",
"device": "feature phone",
"model": "Kin $1"
},
{
"regex": "RM-1099|Lumia 430",
"model": "Lumia 430"
},
{
"regex": "RM-1114|Lumia 435",
"model": "Lumia 435"
},
{
"regex": "RM-1031|Lumia 532",
"model": "Lumia 532"
},
{
"regex": "Lumia 535 Dual SIM",
"model": "Lumia 535 Dual SIM"
},
{
"regex": "RM-109[02]|RM-1089|Lumia 535",
"model": "Lumia 535"
},
{
"regex": "RM-1141|Lumia 540",
"model": "Lumia 540"
},
{
"regex": "RM-1127|Lumia 550",
"model": "Lumia 550"
},
{
"regex": "RM-1010",
"model": "Lumia 638"
},
{
"regex": "Lumia 640 XL LTE",
"model": "Lumia 640 XL LTE",
"device": "phablet"
},
{
"regex": "RM-106[57]|RM-1096|Lumia 640 XL",
"model": "Lumia 640 XL",
"device": "phablet"
},
{
"regex": "Lumia 640 LTE Dual SIM",
"model": "Lumia 640 LTE Dual SIM"
},
{
"regex": "Lumia 640 LTE",
"model": "Lumia 640 LTE"
},
{
"regex": "Lumia 640 Dual SIM",
"model": "Lumia 640 Dual SIM"
},
{
"regex": "RM-1109|RM-1113|RM-107[23467]|Lumia 640",
"model": "Lumia 640"
},
{
"regex": "RM-1154|Lumia 650",
"model": "Lumia 650"
},
{
"regex": "RM-1152",
"model": "Lumia 650 SS"
},
{
"regex": "Lumia 850",
"model": "Lumia 850"
},
{
"regex": "Lumia 950 XL Dual SIM",
"model": "Lumia 950 XL Dual SIM",
"device": "phablet"
},
{
"regex": "Lumia 950 XL",
"model": "Lumia 950 XL",
"device": "phablet"
},
{
"regex": "Lumia 950 Dual SIM",
"model": "Lumia 950 Dual SIM"
},
{
"regex": "Lumia 950|RM-1118",
"model": "Lumia 950"
},
{
"regex": "RM-994|Lumia 1320",
"model": "Lumia 1320"
},
{
"regex": "Lumia 1530",
"model": "Lumia 1530"
},
{
"regex": "Surface Book 3",
"device": "desktop",
"model": "Surface Book 3"
},
{
"regex": "Surface Pro( [34])?",
"device": "desktop",
"model": "Surface Pro$1"
},
{
"regex": "Surface Duo 2",
"device": "tablet",
"model": "Surface Duo 2"
},
{
"regex": "Surface Duo",
"device": "tablet",
"model": "Surface Duo"
},
{
"regex": "Surface 3",
"device": "tablet",
"model": "Surface 3"
},
{
"regex": "Microsoft; Lumia ([^;/)]+)(?:[;/)]|$)",
"model": "Lumia $1"
}
]
},
"Nokia": {
"regex": "Nokia(?!Browser|Webview|; GT-I8750)|Lumia|Maemo RX|portalmmm/2\\.0 N7|portalmmm/2\\.0 NK|nok[0-9]+|Symbian.*\\s([a-z0-9]+)$|RX-51 N900|TA-[0-9]{4}|N(?:1374|1530|15[01256])DL|ARM; 909",
"device": "smartphone",
"models": [
{
"regex": "TA-10(07|23|29|35)",
"model": "2"
},
{
"regex": "TA-10(20|28|32|38)",
"model": "3"
},
{
"regex": "TA-10(24|27|44|53)",
"model": "5"
},
{
"regex": "TA-10(00|03|21|25|33|39|54)",
"model": "6"
},
{
"regex": "TA-1041",
"model": "7"
},
{
"regex": "TA-10(04|12|52)",
"model": "8"
},
{
"regex": "Nokia 8 Sirocco",
"model": "8 Sirocco"
},
{
"regex": "Nokia 7 plus",
"model": "7 plus"
},
{
"regex": "Nokia 6\\.1 Plus",
"model": "6.1 Plus"
},
{
"regex": "Nokia 5\\.1 Plus",
"model": "5.1 Plus"
},
{
"regex": "Nokia 3\\.1 Plus",
"model": "3.1 Plus"
},
{
"regex": "Nokia 1 Plus",
"model": "1 Plus"
},
{
"regex": "Nokia 2 V(?:[);/ ]|$)",
"model": "2 V Tella"
},
{
"regex": "Nokia 8 V 5G UW",
"model": "8V 5G UW"
},
{
"regex": "Nokia[_ ]Xplus",
"model": "X+"
},
{
"regex": "N15[26]DL",
"model": "C100"
},
{
"regex": "N151DL",
"model": "C200"
},
{
"regex": "N150DL",
"model": "G100"
},
{
"regex": "N1374DL",
"model": "G300 5G"
},
{
"regex": "N155DL",
"model": "G300"
},
{
"regex": "N1530DL",
"model": "G400 5G"
},
{
"regex": "Nokia ?X2DS",
"model": "X2 Dual"
},
{
"regex": "RX-51 N900",
"model": "N900"
},
{
"regex": "(?: )?(Nokia500|nokiaasha500(?:dualsim)?)(?: Build|[_);/])",
"model": "Asha 500"
},
{
"regex": "Nokia5130c(?:-2)?",
"model": "5130 XpressMusic"
},
{
"regex": "Nokia5230",
"model": "Nuron"
},
{
"regex": "Nokia5233",
"model": "5233"
},
{
"regex": "Nokia5800d-1",
"model": "5800 XpressMusic"
},
{
"regex": "Nokia6210Navigator",
"model": "Navigator"
},
{
"regex": "Nokia8800e?",
"model": "Sapphire Arte"
},
{
"regex": "NOKIA-RH-17",
"model": "2280"
},
{
"regex": "NOKIA-RH-27",
"model": "6225"
},
{
"regex": "NOKIA-RH-34",
"model": "6585"
},
{
"regex": "NOKIA-RH-48",
"model": "3105"
},
{
"regex": "NOKIA-RM-11",
"model": "3205"
},
{
"regex": "Nokia808 ?PureView",
"model": "808 PureView"
},
{
"regex": "Nokia ?([0-9]{4})c(?:-)?",
"model": "$1 Classic"
},
{
"regex": "Nokia ?([0-9]{4})s(?:-)?",
"model": "$1 Slide"
},
{
"regex": "Nokia[ _]?([0-9]{4})[ _]?Flip",
"model": "$1 Flip"
},
{
"regex": "Nokia[ _]?([0-9]{4})[ _]?V[ _]?Flip",
"model": "$1 V Flip"
},
{
"regex": "Nokia ?([0-9]{4})",
"model": "$1"
},
{
"regex": "(?: )?Nokia([235][0-9]{2})(?: Build|[_);/])",
"model": "Asha $1"
},
{
"regex": "Nokia([CEX]-?[0-9]{1,2}i?)-[0-9]{1,2}u?(?: Build|[_);/])",
"model": "$1"
},
{
"regex": "Nokia;? 520T",
"model": "Lumia 520T"
},
{
"regex": "RM-91[45]",
"model": "Lumia 520"
},
{
"regex": "RM-997|Nokia 526",
"model": "Lumia 526"
},
{
"regex": "RM-846",
"model": "Lumia 620"
},
{
"regex": "RM-97[68]",
"model": "Lumia 630"
},
{
"regex": "RM-97[45]",
"model": "Lumia 635"
},
{
"regex": "RM-1027",
"model": "Lumia 636"
},
{
"regex": "NOKIA;? 710",
"model": "Lumia 710"
},
{
"regex": "Nokia;? 720T",
"model": "Lumia 720T"
},
{
"regex": "RM-885",
"model": "Lumia 720"
},
{
"regex": "Lumia 730",
"model": "Lumia 730"
},
{
"regex": "RM-103[89]",
"model": "Lumia 735"
},
{
"regex": "Nokia;? 800C",
"model": "Lumia 800C"
},
{
"regex": "Nokia;? 800",
"model": "Lumia 800"
},
{
"regex": "Nokia 820",
"model": "Lumia 820"
},
{
"regex": "RM-984",
"model": "Lumia 830"
},
{
"regex": "Nokia;? 900",
"model": "Lumia 900"
},
{
"regex": "(RM-82[12]|Nokia;? 920)(?: Build|[_);/])",
"model": "Lumia 920"
},
{
"regex": "(RM-89[23]|RM-910|Nokia;? 925)(?: Build|[a_);/])",
"model": "Lumia 925"
},
{
"regex": "Lumia 929",
"model": "Lumia Icon"
},
{
"regex": "RM-1045",
"model": "Lumia 930"
},
{
"regex": "(ARM; 909|NOKIA;? 909|NOKIA; id300)(?: Build|[_);/])",
"model": "Lumia 1020"
},
{
"regex": "NOKIA;? 1520\\.1",
"model": "Lumia 1520.1"
},
{
"regex": "Nokia T([12]0|21)",
"device": "tablet",
"model": "T$1"
},
{
"regex": "Streaming (Stick 800|Box 8000)(?:[);/ ]|$)",
"device": "tv",
"model": "Streaming $1"
},
{
"regex": "Nokia ([A-Za-z0-9\\. ]+)(?: Build|\\))",
"model": "$1"
},
{
"regex": "Nokia(N[0-9]+)",
"model": "$1"
},
{
"regex": "Nokia-([a-z0-9]+)",
"model": "N$1"
},
{
"regex": "NOKIA; (?!Qt;)([a-z0-9\\- ]+)",
"model": "$1"
},
{
"regex": "NOKIA[ _]?([a-z0-9-]+)",
"model": "$1"
},
{
"regex": "NOKIA/([a-z0-9 ]+)",
"model": "$1"
},
{
"regex": "(Lumia [a-z0-9-]+ XL)",
"device": "phablet",
"model": "$1"
},
{
"regex": "(Lumia [a-z0-9-]+)",
"model": "$1"
},
{
"regex": "Maemo RX-51 ([a-z0-9]+)",
"model": "$1"
},
{
"regex": "Maemo RX-34",
"model": "N800"
},
{
"regex": "NokiaInternal|Nokia-WAP-Toolkit|Nokia-MIT-Browser|Nokia Mobile|Nokia Browser|Nokia/Series",
"model": ""
},
{
"regex": "portalmmm/2\\.0 (N7[37]|NK[a-z0-9]+)",
"model": "$1"
},
{
"regex": "nok([0-9]+)",
"model": "$1"
},
{
"regex": "Symbian.*\\s([a-z0-9]+)$",
"device": "feature phone",
"model": "$1"
}
]
},
"CnM": {
"regex": "CnM ",
"device": "tablet",
"models": [
{
"regex": "CnM[ -](?:Touchpad|TP)[ -]([0-9.]+)",
"model": "Touchpad $1"
}
]
},
"RIM": {
"regex": "BB10;|BlackBerry|rim[0-9]+|PlayBook|STV100-[1234]|STH100-[12]|BBA100-[12]|BBB100-[1234567]|BBD100-[126]|BB[EF]100-[123456789]|BB[CGH]100-1",
"device": "smartphone",
"models": [
{
"regex": "BBA100-[12]",
"model": "BlackBerry DTEK60"
},
{
"regex": "BBB100-[1234567]",
"model": "KEYone"
},
{
"regex": "BBC100-1",
"model": "Aurora"
},
{
"regex": "BBD100-[126]|BlackBerry Motion",
"model": "Motion"
},
{
"regex": "BBE100-[123456789]",
"model": "KEY2 LE"
},
{
"regex": "BBF100-[1234567]|BlackBerry Key2",
"model": "KEY2"
},
{
"regex": "BBF100-8",
"model": "KEY2 Silver"
},
{
"regex": "BBF100-9",
"model": "KEY2 Black"
},
{
"regex": "BBG100-1",
"model": "Evolve"
},
{
"regex": "BBH100-1|Evolve X",
"model": "Evolve X"
},
{
"regex": "(?:BlackBerry )?(9000|9790)",
"model": "Bold $1"
},
{
"regex": "STV100-[1234]",
"model": "BlackBerry Priv"
},
{
"regex": "STH100-[12]",
"model": "BlackBerry DTEK50"
},
{
"regex": "BB10; ([a-z0-9\\- ]+)\\)",
"model": "BlackBerry $1"
},
{
"regex": "PlayBook.+RIM Tablet OS",
"model": "BlackBerry Playbook",
"device": "tablet"
},
{
"regex": "BlackBerry(?: )?([a-z0-9]+)",
"model": "BlackBerry $1"
},
{
"regex": "rim([0-9]+)",
"model": "BlackBerry $1"
},
{
"regex": "9300",
"model": "Curve 3G 9300"
},
{
"regex": "(8520|8530|9220|9320|9360)",
"model": "Curve $1"
},
{
"regex": "9630",
"model": "Tour 9630"
},
{
"regex": "9720",
"model": "9720"
},
{
"regex": "(9800|9860)",
"model": "Torch $1"
},
{
"regex": "BlackBerry",
"model": "BlackBerry"
}
]
},
"Ghia": {
"regex": "GHIA|QS702|SVEGLIO[ _][QH]1|VECTOR10\\.1|GTKIDS7[BVR]?|(?:A7_WF|GTA7(?:WF|PLUS)|VENUS7|TREO_TAB8G?|VECTOR_SLIM|GTAB718|GTABPND|GTABKIDS|GTVR10S|AXIS7_SLIM|AXIS7_LED|4104116N|GK133M3)(?:[);/ ]|$)",
"device": "tablet",
"models": [
{
"regex": "SVEGLIO[ _]([QH]1)",
"model": "Sveglio $1",
"device": "smartphone"
},
{
"regex": "QS702",
"model": "QS702",
"device": "smartphone"
},
{
"regex": "GHIA_ZEUS_3G",
"model": "Zeus 3G",
"device": "smartphone"
},
{
"regex": "GHIA[ _](L1)",
"model": "$1",
"device": "smartphone"
},
{
"regex": "VECTOR_SLIM",
"model": "Vector Slim"
},
{
"regex": "GHIA_AXIS7P",
"model": "Axis 7P"
},
{
"regex": "AXIS7_SLIM",
"model": "Axis 7 Slim"
},
{
"regex": "AXIS7_LED",
"model": "Axis 7 LED"
},
{
"regex": "GHIA_AXIS7_3G",
"model": "Axis 7 3G"
},
{
"regex": "GHIA_AXIS7",
"model": "Axis 7"
},
{
"regex": "A7_WF",
"model": "A7 WiFi"
},
{
"regex": "VECTOR10\\.1",
"model": "Vector 10.1\""
},
{
"regex": "GTA7WF",
"model": "A7 ROJA"
},
{
"regex": "GTA7PLUS",
"model": "A7 Plus"
},
{
"regex": "TREO_TAB8G",
"model": "TREO TAB8G"
},
{
"regex": "GTKIDS7[ABVR]?|GTABKIDS",
"model": "GT KIDS 7"
},
{
"regex": "GTVR10S",
"model": "Vector 10.1\" Slim"
},
{
"regex": "GTABPND",
"model": "Kids Panda"
},
{
"regex": "VENUS7",
"model": "VENUS 7"
},
{
"regex": "4104116N",
"model": "Any Diez.1"
},
{
"regex": "GHIA[ _]?(47458|VECTOR_3G)",
"model": "$1"
},
{
"regex": "(GTAB718|GK133M3)",
"model": "$1"
}
]
},
"Palm": {
"regex": "(?:Pre|Pixi)/(\\d+)\\.(\\d+)|Palm|Treo|Xiino|PVG100(?:E_RU|E)?(?:[);/ ]|$)",
"device": "smartphone",
"models": [
{
"regex": "((?:Pre|Pixi))/(\\d+\\.\\d+)",
"model": "$1 $2"
},
{
"regex": "Palm(?:[ -])?((?!OS|Source|scape)[a-z0-9]+)",
"model": "$1"
},
{
"regex": "Treo([a-z0-9]+)",
"model": "Treo $1"
},
{
"regex": "Tungsten",
"model": "Tungsten"
},
{
"regex": "PVG100",
"model": "Pepito"
},
{
"regex": "Xiino|Palmscape",
"model": ""
}
]
},
"Compaq": {
"regex": "(?:CT101|CT1085_32GB)(?:[);/ ]|$)",
"device": "tablet",
"models": [
{
"regex": "(CT1085)_32GB",
"model": "$1"
},
{
"regex": "(CT101)",
"model": "$1"
}
]
},
"HP": {
"regex": "Hewlett-Packard|HP Engage|HP/HP|HP Chromebook|HP EliteBook|TouchPad/\\d+\\.\\d+|hp-tablet|HP ?iPAQ|webOS.*P160U|HP (?:Pro )?Slate|Slate 21|Slate 10|HP [78]|HP 10 Plus|Compaq [7|8]|HP; [^;/)]+|cm_tenderloin",
"device": "smartphone",
"models": [
{
"regex": "HP Slate 6 Voice Tab",
"model": "Slate 6 VoiceTab",
"device": "phablet"
},
{
"regex": "HP 10 Plus",
"model": "10 Plus",
"device": "tablet"
},
{
"regex": "HP ([78][^)/;]*)(?: Build|\\))",
"model": "Slate $1",
"device": "tablet"
},
{
"regex": "Slate 21 Pro",
"model": "Slate 21 Pro",
"device": "tablet"
},
{
"regex": "Slate 21",
"model": "Slate 21",
"device": "tablet"
},
{
"regex": "Slate 10 HD",
"model": "Slate 10 HD",
"device": "tablet"
},
{
"regex": "cm_tenderloin",
"model": "Touch 9.7\" WiFi",
"device": "tablet"
},
{
"regex": "Compaq 8200 Elite SFF PC",
"device": "desktop",
"model": "Compaq 8200 Elite SFF PC"
},
{
"regex": "Compaq ([78][^/;]*) Build",
"model": "Compaq $1",
"device": "tablet"
},
{
"regex": "HP Pro Slate 8",
"model": "Pro Slate 8",
"device": "tablet"
},
{
"regex": "HP Slate ?(.+) Build",
"model": "Slate $1",
"device": "tablet"
},
{
"regex": "HP Slate ?([0-9]+)",
"model": "Slate $1",
"device": "tablet"
},
{
"regex": "TouchPad/(\\d+\\.\\d+)|hp-tablet",
"model": "TouchPad",
"device": "tablet"
},
{
"regex": "HP; ([^;/)]+)",
"model": "$1"
},
{
"regex": "HP ?iPAQ ?([a-z0-9]+)",
"model": "iPAQ $1"
},
{
"regex": "webOS.*(P160U)",
"model": "Veer"
},
{
"regex": "HP ProBook (6560b)",
"device": "desktop",
"model": "ProBook $1"
},
{
"regex": "Engage One Pro AIO",
"device": "desktop",
"model": "Engage One Pro AIO"
},
{
"regex": "Chromebook (11 G5|x360 11 G1 EE|13 G1|x2)",
"device": "desktop",
"model": "Chromebook $1"
},
{
"regex": "HP EliteBook (820 G2|8470p)",
"device": "desktop",
"model": "EliteBook $1"
},
{
"regex": "Z240 Tower Workstation",
"device": "desktop",
"model": "Z240 Tower Workstation"
}
]
},
"TiPhone": {
"regex": "TiPhone ?([a-z0-9]+)",
"device": "smartphone",
"model": "$1"
},
"TiVo": {
"regex": "TIVO[ ,-]",
"device": "tv",
"models": [
{
"regex": "STREAM 4K",
"model": "Stream 4K"
},
{
"regex": "TCD8F6000",
"model": "TCD8F6000"
},
{
"regex": "(?:TiVo|VirginMedia), (?:OnDemand_)?([a-z0-9]+), (?:wired|wireless)",
"model": "$1"
},
{
"regex": "TiVo-([a-z0-9]+)-([a-z0-9]+)",
"model": "$2"
}
]
},
"Apple": {
"regex": "(?:iTunes-)?Apple[ _]?TV|Apple/|(?:Apple-|iTunes-)?(?<!like )(?:iPad|iPhone)(?!\\: Build/)|iPh(?:[0-9]|1[0-7]),[0-9]|CFNetwork|HomePod|AirPlay|AirPodcasts/|Watch ?OS|Watch1,[12]|MDCR_i?Mac|ICRU_iP(?:ad|hone)|Mac OS X[,;]|OSX/|macOS,|for Apple Watch",
"models": [
{
"regex": "(?:HomePod|AirPodcasts/)",
"device": "smart speaker",
"model": "HomePod"
},
{
"regex": "AirPlay",
"device": "smart speaker",
"model": ""
},
{
"regex": "Watch1,1",
"device": "wearable",
"model": "Watch 38mm"
},
{
"regex": "Watch1,2",
"device": "wearable",
"model": "Watch 42mm"
},
{
"regex": "Watch2,6",
"device": "wearable",
"model": "Watch Series 1 38mm"
},
{
"regex": "Watch2,7",
"device": "wearable",
"model": "Watch Series 1 42mm"
},
{
"regex": "Watch2,3",
"device": "wearable",
"model": "Watch Series 2 38mm"
},
{
"regex": "Watch2,4",
"device": "wearable",
"model": "Watch Series 2 42mm"
},
{
"regex": "Watch3,[13]",
"device": "wearable",
"model": "Watch Series 3 38mm"
},
{
"regex": "Watch3,[24]",
"device": "wearable",
"model": "Watch Series 3 42mm"
},
{
"regex": "Watch5,(?:9|11)",
"device": "wearable",
"model": "Watch SE 40mm"
},
{
"regex": "Watch5,1[02]",
"device": "wearable",
"model": "Watch SE 44mm"
},
{
"regex": "Watch6,1[02]",
"device": "wearable",
"model": "Watch SE (Gen 2) 40mm"
},
{
"regex": "Watch6,1[13]",
"device": "wearable",
"model": "Watch SE (Gen 2) 44mm"
},
{
"regex": "Watch6,1[46]",
"device": "wearable",
"model": "Watch Series 8 41mm"
},
{
"regex": "Watch6,1[57]",
"device": "wearable",
"model": "Watch Series 8 45mm"
},
{
"regex": "Watch6,18",
"device": "wearable",
"model": "Watch Ultra"
},
{
"regex": "Watch7,5",
"device": "wearable",
"model": "Watch Ultra 2"
},
{
"regex": "Watch([456]),[13]",
"device": "wearable",
"model": "Watch Series $1 40mm"
},
{
"regex": "Watch([456]),[24]",
"device": "wearable",
"model": "Watch Series $1 44mm"
},
{
"regex": "Watch6,[68]",
"device": "wearable",
"model": "Watch Series 7 41mm"
},
{
"regex": "Watch6,[79]",
"device": "wearable",
"model": "Watch Series 7 45mm"
},
{
"regex": "Watch7,8",
"device": "wearable",
"model": "Watch Series 10 42mm"
},
{
"regex": "Watch7,9",
"device": "wearable",
"model": "Watch Series 10 46mm"
},
{
"regex": "Watch7,10",
"device": "wearable",
"model": "Watch Series 10 42mm"
},
{
"regex": "Watch7,11",
"device": "wearable",
"model": "Watch Series 10 46mm"
},
{
"regex": "Watch7,1",
"device": "wearable",
"model": "Watch Series 9 41mm"
},
{
"regex": "Watch7,3",
"device": "wearable",
"model": "Watch Series 9 41mm"
},
{
"regex": "Watch7,2",
"device": "wearable",
"model": "Watch Series 9 45mm"
},
{
"regex": "Watch7,4",
"device": "wearable",
"model": "Watch Series 9 45mm"
},
{
"regex": "(:?Apple Watch|watchOS)",
"device": "wearable",
"model": "Watch"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacPro1(?:%2C|,)1",
"device": "desktop",
"model": "Mac Pro (2006)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacPro2(?:%2C|,)1",
"device": "desktop",
"model": "Mac Pro (2007)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacPro3(?:%2C|,)1",
"device": "desktop",
"model": "Mac Pro (2008)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacPro4(?:%2C|,)1",
"device": "desktop",
"model": "Mac Pro (2009)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacPro5(?:%2C|,)1",
"device": "desktop",
"model": "Mac Pro (2010-2012)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?Mac14(?:%2C|,)8",
"device": "desktop",
"model": "Mac Pro (2023)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac5(?:%2C|,)1",
"device": "desktop",
"model": "iMac (2006)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac5(?:%2C|,)2",
"device": "desktop",
"model": "iMac 17\" (2006)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac6(?:%2C|,)1",
"device": "desktop",
"model": "iMac 24\" (2006)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac7(?:%2C|,)1",
"device": "desktop",
"model": "iMac (2007)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac8(?:%2C|,)1",
"device": "desktop",
"model": "iMac (2008)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac9(?:%2C|,)1",
"device": "desktop",
"model": "iMac (2009)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac10(?:%2C|,)1",
"device": "desktop",
"model": "iMac (2009)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac11(?:%2C|,)1",
"device": "desktop",
"model": "iMac 27\" (2009)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac11(?:%2C|,)2",
"device": "desktop",
"model": "iMac 21.5\" (2010)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac11(?:%2C|,)3",
"device": "desktop",
"model": "iMac 27\" (2010)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac12(?:%2C|,)1",
"device": "desktop",
"model": "iMac 21.5\" (2011)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac12(?:%2C|,)2",
"device": "desktop",
"model": "iMac 27\" (2011)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac13(?:%2C|,)1",
"device": "desktop",
"model": "iMac 21.5\" (2012-2013)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac13(?:%2C|,)2",
"device": "desktop",
"model": "iMac 27\" (2012)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac14(?:%2C|,)[13]",
"device": "desktop",
"model": "iMac 21.5\" (2013)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac14(?:%2C|,)2",
"device": "desktop",
"model": "iMac 27\" (2013)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac14(?:%2C|,)4",
"device": "desktop",
"model": "iMac 21.5\" (2014)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac17(?:%2C|,)1",
"device": "desktop",
"model": "iMac 27\" (2015)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac18(?:%2C|,)[12]",
"device": "desktop",
"model": "iMac 21.5\" (2017)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac18(?:%2C|,)3",
"device": "desktop",
"model": "iMac 27\" (2017)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac19(?:%2C|,)1",
"device": "desktop",
"model": "iMac 27\" (2019)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac19(?:%2C|,)2",
"device": "desktop",
"model": "iMac 21.5\" (2019)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac20(?:%2C|,)[12]",
"device": "desktop",
"model": "iMac 27\" (2020)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMac21(?:%2C|,)[12]",
"device": "desktop",
"model": "iMac 24\" (2021)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?Mac15(?:%2C|,)[45]",
"device": "desktop",
"model": "iMac 24\" (2023)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?iMacPro1(?:%2C|,)1",
"device": "desktop",
"model": "iMac Pro 27\" (2017)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacBook1(?:%2C|,)1",
"device": "desktop",
"model": "MacBook 13\" (2006)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacBook2(?:%2C|,)1",
"device": "desktop",
"model": "MacBook 13\" (2006-2007)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacBook3(?:%2C|,)1",
"device": "desktop",
"model": "MacBook 13\" (2007)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacBook[45](?:%2C|,)1",
"device": "desktop",
"model": "MacBook 13\" (2008)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacBook5(?:%2C|,)2",
"device": "desktop",
"model": "MacBook 13\" (2009)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacBook6(?:%2C|,)1",
"device": "desktop",
"model": "MacBook 13\" (2009)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacBook7(?:%2C|,)1",
"device": "desktop",
"model": "MacBook 13\" (2010)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacBook8(?:%2C|,)1",
"device": "desktop",
"model": "MacBook 12\" (2015)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacBook9(?:%2C|,)1",
"device": "desktop",
"model": "MacBook 12\" (2016)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacBookAir1(?:%2C|,)1",
"device": "desktop",
"model": "MacBook Air 13\" (2008)"
},
{
"regex": "(?:MDCR_|ICRU_|Apple-)?MacBookAir2(?:%2C|,)1",