From 2014f626c7329c8afe228e9540ec62e32e045d81 Mon Sep 17 00:00:00 2001 From: shaharmor Date: Mon, 3 Jul 2017 12:08:38 +0300 Subject: [PATCH] update regex to commit 6ba43604ec629f2bb3a126da8f93dea51b226149 of uap-core --- lib/regexps.js | 748 +++++++++++++++++++++++++++---------------------- package.json | 7 +- 2 files changed, 412 insertions(+), 343 deletions(-) diff --git a/lib/regexps.js b/lib/regexps.js index 57c29c8..475574e 100644 --- a/lib/regexps.js +++ b/lib/regexps.js @@ -51,1302 +51,1344 @@ parser[3] = 0; parser[4] = 0; exports.browser[3] = parser; parser = Object.create(null); +parser[0] = new RegExp("(\\(StatusCake\\))"); +parser[1] = "StatusCakeBot"; +parser[2] = 0; +parser[3] = 0; +parser[4] = 0; +exports.browser[4] = parser; +parser = Object.create(null); parser[0] = new RegExp("(facebookexternalhit)/(\\d+)\\.(\\d+)"); parser[1] = "FacebookBot"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[4] = parser; +exports.browser[5] = parser; parser = Object.create(null); parser[0] = new RegExp("Google.*/\\+/web/snippet"); parser[1] = "GooglePlusBot"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[5] = parser; +exports.browser[6] = parser; parser = Object.create(null); parser[0] = new RegExp("via ggpht.com GoogleImageProxy"); parser[1] = "GmailImageProxy"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[6] = parser; +exports.browser[7] = parser; parser = Object.create(null); parser[0] = new RegExp("(Twitterbot)/(\\d+)\\.(\\d+)"); parser[1] = "TwitterBot"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[7] = parser; +exports.browser[8] = parser; parser = Object.create(null); parser[0] = new RegExp("/((?:Ant-)?Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \\-](\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[8] = parser; +exports.browser[9] = parser; parser = Object.create(null); parser[0] = new RegExp("\\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[9] = parser; +exports.browser[10] = parser; parser = Object.create(null); parser[0] = new RegExp("(MSIE) (\\d+)\\.(\\d+)([a-z]\\d?)?;.* MSIECrawler"); parser[1] = "MSIECrawler"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[10] = parser; +exports.browser[11] = parser; parser = Object.create(null); parser[0] = new RegExp("(Google-HTTP-Java-Client|Apache-HttpClient|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp)(?:[ /](\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[11] = parser; +exports.browser[12] = parser; parser = Object.create(null); -parser[0] = new RegExp("(1470\\.net crawler|50\\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]+-Agent|AdsBot-Google(?:-[a-z]+)?|altavista|AppEngine-Google|archive.*?\\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]+)*|bingbot|BingPreview|blitzbot|BlogBridge|BoardReader(?: [A-Za-z]+)*|boitho.com-dc|BotSeer|\\b\\w*favicon\\w*\\b|\\bYeti(?:-[a-z]+)?|Catchpoint bot|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\\(S\\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher)?|Feed Seeker Bot|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]+-)?Googlebot(?:-[a-zA-Z]+)?|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile)?|IconSurf|IlTrovatore(?:-Setaccio)?|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]+Bot|jbot\\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .*? Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media *)?|msrbot|netresearch|Netvibes|NewsGator[^/]*|^NING|Nutch[^/]*|Nymesis|ObjectsSearch|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PlantyNet_WebRobot|Pompos|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|TheUsefulbot|ThumbShotsBot|Thumbshots\\.ru|TwitterBot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]+|WhatWeb|WIRE|WordPress|Wotbox|www\\.almaden\\.ibm\\.com|Xenu(?:.s)? Link Sleuth|Xerka [A-z]+Bot|yacy(?:bot)?|Yahoo[a-z]*Seeker|Yahoo! Slurp|Yandex\\w+|YodaoBot(?:-[A-z]+)?|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\\.ze\\.bz|ZooShot|ZyBorg)(?:[ /]v?(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"); +parser[0] = new RegExp("(1470\\.net crawler|50\\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]+-Agent|AdsBot-Google(?:-[a-z]+)?|altavista|AppEngine-Google|archive.*?\\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]+)*|bingbot|BingPreview|blitzbot|BlogBridge|BoardReader(?: [A-Za-z]+)*|boitho.com-dc|BotSeer|\\b\\w*favicon\\w*\\b|\\bYeti(?:-[a-z]+)?|Catchpoint(?: bot)?|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\\(S\\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher)?|Feed Seeker Bot|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]+-)?Googlebot(?:-[a-zA-Z]+)?|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile)?|IconSurf|IlTrovatore(?:-Setaccio)?|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]+Bot|jbot\\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .*? Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media *)?|msrbot|netresearch|Netvibes|NewsGator[^/]*|^NING|Nutch[^/]*|Nymesis|ObjectsSearch|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|TheUsefulbot|ThumbShotsBot|Thumbshots\\.ru|TwitterBot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]+|WhatWeb|WIRE|WordPress|Wotbox|www\\.almaden\\.ibm\\.com|Xenu(?:.s)? Link Sleuth|Xerka [A-z]+Bot|yacy(?:bot)?|Yahoo[a-z]*Seeker|Yahoo! Slurp|Yandex\\w+|YodaoBot(?:-[A-z]+)?|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\\.ze\\.bz|ZooShot|ZyBorg)(?:[ /]v?(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[12] = parser; +exports.browser[13] = parser; parser = Object.create(null); parser[0] = new RegExp("(?:\\/[A-Za-z0-9\\.]+)? *([A-Za-z0-9 \\-_\\!\\[\\]:]*(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]*))/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[13] = parser; +exports.browser[14] = parser; parser = Object.create(null); parser[0] = new RegExp("(?:\\/[A-Za-z0-9\\.]+)? *([A-Za-z0-9 _\\!\\[\\]:]*(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]*)) (\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[14] = parser; +exports.browser[15] = parser; parser = Object.create(null); parser[0] = new RegExp("((?:[A-z0-9]+|[A-z\\-]+ ?)?(?: the )?(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[A-Za-z0-9-]*(?:[^C][^Uu])[Bb]ot|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]*)(?:(?:[ /]| v)(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[15] = parser; +exports.browser[16] = parser; parser = Object.create(null); parser[0] = new RegExp("(HbbTV)/(\\d+)\\.(\\d+)\\.(\\d+) \\("); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[16] = parser; +exports.browser[17] = parser; parser = Object.create(null); parser[0] = new RegExp("(Chimera|SeaMonkey|Camino)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[17] = parser; +exports.browser[18] = parser; parser = Object.create(null); parser[0] = new RegExp("\\[FB.*;(FBAV)/(\\d+)(?:\\.(\\d+)(?:\\.(\\d)+)?)?"); parser[1] = "Facebook"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[18] = parser; +exports.browser[19] = parser; parser = Object.create(null); parser[0] = new RegExp("\\[(Pinterest)/[^\\]]+\\]"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[19] = parser; +exports.browser[20] = parser; parser = Object.create(null); parser[0] = new RegExp("(Pinterest)(?: for Android(?: Tablet)?)?/(\\d+)(?:\\.(\\d+)(?:\\.(\\d)+)?)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[20] = parser; +exports.browser[21] = parser; parser = Object.create(null); parser[0] = new RegExp("(PaleMoon)/(\\d+)\\.(\\d+)\\.?(\\d+)?"); parser[1] = "Pale Moon"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[21] = parser; +exports.browser[22] = parser; parser = Object.create(null); parser[0] = new RegExp("(Fennec)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)"); parser[1] = "Firefox Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[22] = parser; +exports.browser[23] = parser; parser = Object.create(null); parser[0] = new RegExp("(Fennec)/(\\d+)\\.(\\d+)(pre)"); parser[1] = "Firefox Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[23] = parser; +exports.browser[24] = parser; parser = Object.create(null); parser[0] = new RegExp("(Fennec)/(\\d+)\\.(\\d+)"); parser[1] = "Firefox Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[24] = parser; +exports.browser[25] = parser; parser = Object.create(null); parser[0] = new RegExp("(?:Mobile|Tablet);.*(Firefox)/(\\d+)\\.(\\d+)"); parser[1] = "Firefox Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[25] = parser; +exports.browser[26] = parser; parser = Object.create(null); parser[0] = new RegExp("(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre)?)"); parser[1] = "Firefox ($1)"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[26] = parser; +exports.browser[27] = parser; parser = Object.create(null); parser[0] = new RegExp("(Firefox)/(\\d+)\\.(\\d+)(a\\d+[a-z]*)"); parser[1] = "Firefox Alpha"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[27] = parser; +exports.browser[28] = parser; parser = Object.create(null); parser[0] = new RegExp("(Firefox)/(\\d+)\\.(\\d+)(b\\d+[a-z]*)"); parser[1] = "Firefox Beta"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[28] = parser; +exports.browser[29] = parser; parser = Object.create(null); parser[0] = new RegExp("(Firefox)-(?:\\d+\\.\\d+)?/(\\d+)\\.(\\d+)(a\\d+[a-z]*)"); parser[1] = "Firefox Alpha"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[29] = parser; +exports.browser[30] = parser; parser = Object.create(null); parser[0] = new RegExp("(Firefox)-(?:\\d+\\.\\d+)?/(\\d+)\\.(\\d+)(b\\d+[a-z]*)"); parser[1] = "Firefox Beta"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[30] = parser; +exports.browser[31] = parser; parser = Object.create(null); parser[0] = new RegExp("(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)?"); parser[1] = "Firefox ($1)"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[31] = parser; +exports.browser[32] = parser; parser = Object.create(null); parser[0] = new RegExp("(Firefox).*Tablet browser (\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "MicroB"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[32] = parser; +exports.browser[33] = parser; parser = Object.create(null); parser[0] = new RegExp("(MozillaDeveloperPreview)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[33] = parser; +exports.browser[34] = parser; parser = Object.create(null); parser[0] = new RegExp("(FxiOS)/(\\d+)\\.(\\d+)(\\.(\\d+))?(\\.(\\d+))?"); parser[1] = "Firefox iOS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[34] = parser; +exports.browser[35] = parser; parser = Object.create(null); parser[0] = new RegExp("(Flock)/(\\d+)\\.(\\d+)(b\\d+?)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[35] = parser; +exports.browser[36] = parser; parser = Object.create(null); parser[0] = new RegExp("(RockMelt)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[36] = parser; +exports.browser[37] = parser; parser = Object.create(null); parser[0] = new RegExp("(Navigator)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Netscape"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[37] = parser; +exports.browser[38] = parser; parser = Object.create(null); parser[0] = new RegExp("(Navigator)/(\\d+)\\.(\\d+)([ab]\\d+)"); parser[1] = "Netscape"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[38] = parser; +exports.browser[39] = parser; parser = Object.create(null); parser[0] = new RegExp("(Netscape6)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+)?"); parser[1] = "Netscape"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[39] = parser; +exports.browser[40] = parser; parser = Object.create(null); parser[0] = new RegExp("(MyIBrow)/(\\d+)\\.(\\d+)"); parser[1] = "My Internet Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[40] = parser; +exports.browser[41] = parser; parser = Object.create(null); parser[0] = new RegExp("(UC? ?Browser|UCWEB|U3)[ /]?(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "UC Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[41] = parser; +exports.browser[42] = parser; parser = Object.create(null); parser[0] = new RegExp("(Opera Tablet).*Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[42] = parser; +exports.browser[43] = parser; parser = Object.create(null); parser[0] = new RegExp("(Opera Mini)(?:/att)?/?(\\d+)?(?:\\.(\\d+))?(?:\\.(\\d+))?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[43] = parser; +exports.browser[44] = parser; parser = Object.create(null); parser[0] = new RegExp("(Opera)/.+Opera Mobi.+Version/(\\d+)\\.(\\d+)"); parser[1] = "Opera Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[44] = parser; +exports.browser[45] = parser; parser = Object.create(null); parser[0] = new RegExp("(Opera)/(\\d+)\\.(\\d+).+Opera Mobi"); parser[1] = "Opera Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[45] = parser; +exports.browser[46] = parser; parser = Object.create(null); parser[0] = new RegExp("Opera Mobi.+(Opera)(?:/|\\s+)(\\d+)\\.(\\d+)"); parser[1] = "Opera Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[46] = parser; +exports.browser[47] = parser; parser = Object.create(null); parser[0] = new RegExp("Opera Mobi"); parser[1] = "Opera Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[47] = parser; +exports.browser[48] = parser; parser = Object.create(null); parser[0] = new RegExp("(Opera)/9.80.*Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[48] = parser; +exports.browser[49] = parser; parser = Object.create(null); parser[0] = new RegExp("(?:Mobile Safari).*(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Opera Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[49] = parser; +exports.browser[50] = parser; parser = Object.create(null); parser[0] = new RegExp("(?:Chrome).*(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Opera"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[50] = parser; +exports.browser[51] = parser; parser = Object.create(null); parser[0] = new RegExp("(Coast)/(\\d+).(\\d+).(\\d+)"); parser[1] = "Opera Coast"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[51] = parser; +exports.browser[52] = parser; parser = Object.create(null); parser[0] = new RegExp("(OPiOS)/(\\d+).(\\d+).(\\d+)"); parser[1] = "Opera Mini"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[52] = parser; +exports.browser[53] = parser; parser = Object.create(null); parser[0] = new RegExp("Chrome/.+( MMS)/(\\d+).(\\d+).(\\d+)"); parser[1] = "Opera Neon"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[53] = parser; +exports.browser[54] = parser; parser = Object.create(null); parser[0] = new RegExp("(hpw|web)OS/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = "webOS Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[54] = parser; +exports.browser[55] = parser; parser = Object.create(null); parser[0] = new RegExp("(luakit)"); parser[1] = "LuaKit"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[55] = parser; +exports.browser[56] = parser; parser = Object.create(null); parser[0] = new RegExp("(Snowshoe)/(\\d+)\\.(\\d+).(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[56] = parser; +exports.browser[57] = parser; parser = Object.create(null); parser[0] = new RegExp("Gecko/\\d+ (Lightning)/(\\d+)\\.(\\d+)\\.?((?:[ab]?\\d+[a-z]*)|(?:\\d*))"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[57] = parser; +exports.browser[58] = parser; parser = Object.create(null); parser[0] = new RegExp("(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre)?) \\(Swiftfox\\)"); parser[1] = "Swiftfox"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[58] = parser; +exports.browser[59] = parser; parser = Object.create(null); parser[0] = new RegExp("(Firefox)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)? \\(Swiftfox\\)"); parser[1] = "Swiftfox"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[59] = parser; +exports.browser[60] = parser; parser = Object.create(null); parser[0] = new RegExp("(rekonq)/(\\d+)\\.(\\d+)\\.?(\\d+)? Safari"); parser[1] = "Rekonq"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[60] = parser; +exports.browser[61] = parser; parser = Object.create(null); parser[0] = new RegExp("rekonq"); parser[1] = "Rekonq"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[61] = parser; +exports.browser[62] = parser; parser = Object.create(null); parser[0] = new RegExp("(conkeror|Conkeror)/(\\d+)\\.(\\d+)\\.?(\\d+)?"); parser[1] = "Conkeror"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[62] = parser; +exports.browser[63] = parser; parser = Object.create(null); parser[0] = new RegExp("(konqueror)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Konqueror"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[63] = parser; +exports.browser[64] = parser; parser = Object.create(null); parser[0] = new RegExp("(WeTab)-Browser"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[64] = parser; +exports.browser[65] = parser; parser = Object.create(null); parser[0] = new RegExp("(Comodo_Dragon)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Comodo Dragon"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[65] = parser; +exports.browser[66] = parser; parser = Object.create(null); parser[0] = new RegExp("(Symphony) (\\d+).(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[66] = parser; +exports.browser[67] = parser; parser = Object.create(null); parser[0] = new RegExp("PLAYSTATION 3.+WebKit"); parser[1] = "NetFront NX"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[67] = parser; +exports.browser[68] = parser; parser = Object.create(null); parser[0] = new RegExp("PLAYSTATION 3"); parser[1] = "NetFront"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[68] = parser; +exports.browser[69] = parser; parser = Object.create(null); parser[0] = new RegExp("(PlayStation Portable)"); parser[1] = "NetFront"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[69] = parser; +exports.browser[70] = parser; parser = Object.create(null); parser[0] = new RegExp("(PlayStation Vita)"); parser[1] = "NetFront NX"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[70] = parser; +exports.browser[71] = parser; parser = Object.create(null); parser[0] = new RegExp("AppleWebKit.+ (NX)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "NetFront NX"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[71] = parser; +exports.browser[72] = parser; parser = Object.create(null); parser[0] = new RegExp("(Nintendo 3DS)"); parser[1] = "NetFront NX"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[72] = parser; +exports.browser[73] = parser; parser = Object.create(null); parser[0] = new RegExp("(Silk)/(\\d+)\\.(\\d+)(?:\\.([0-9\\-]+))?"); parser[1] = "Amazon Silk"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[73] = parser; +exports.browser[74] = parser; parser = Object.create(null); parser[0] = new RegExp("(Puffin)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[74] = parser; +exports.browser[75] = parser; parser = Object.create(null); parser[0] = new RegExp("Windows Phone .*(Edge)/(\\d+)\\.(\\d+)"); parser[1] = "Edge Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[75] = parser; +exports.browser[76] = parser; parser = Object.create(null); parser[0] = new RegExp("(SamsungBrowser)/(\\d+)\\.(\\d+)"); parser[1] = "Samsung Internet"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[76] = parser; +exports.browser[77] = parser; +parser = Object.create(null); +parser[0] = new RegExp("(SznProhlizec)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); +parser[1] = "Seznam.cz"; +parser[2] = 0; +parser[3] = 0; +parser[4] = 0; +exports.browser[78] = parser; +parser = Object.create(null); +parser[0] = new RegExp("(coc_coc_browser)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); +parser[1] = "Coc Coc"; +parser[2] = 0; +parser[3] = 0; +parser[4] = 0; +exports.browser[79] = parser; parser = Object.create(null); parser[0] = new RegExp("(baidubrowser)[/\\s](\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?"); parser[1] = "Baidu Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[77] = parser; +exports.browser[80] = parser; parser = Object.create(null); parser[0] = new RegExp("(FlyFlow)/(\\d+)\\.(\\d+)"); parser[1] = "Baidu Explorer"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[78] = parser; +exports.browser[81] = parser; +parser = Object.create(null); +parser[0] = new RegExp("(MxBrowser)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); +parser[1] = "Maxthon"; +parser[2] = 0; +parser[3] = 0; +parser[4] = 0; +exports.browser[82] = parser; +parser = Object.create(null); +parser[0] = new RegExp("(Crosswalk)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"); +parser[1] = 0; +parser[2] = 0; +parser[3] = 0; +parser[4] = 0; +exports.browser[83] = parser; +parser = Object.create(null); +parser[0] = new RegExp("; wv\\).+(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"); +parser[1] = "Chrome Mobile WebView"; +parser[2] = 0; +parser[3] = 0; +parser[4] = 0; +exports.browser[84] = parser; parser = Object.create(null); parser[0] = new RegExp("(CrMo)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Chrome Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[79] = parser; +exports.browser[85] = parser; parser = Object.create(null); parser[0] = new RegExp("(CriOS)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Chrome Mobile iOS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[80] = parser; +exports.browser[86] = parser; parser = Object.create(null); parser[0] = new RegExp("(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+) Mobile(?:[ /]|$)"); parser[1] = "Chrome Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[81] = parser; +exports.browser[87] = parser; parser = Object.create(null); parser[0] = new RegExp(" Mobile .*(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Chrome Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[82] = parser; +exports.browser[88] = parser; parser = Object.create(null); parser[0] = new RegExp("(chromeframe)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Chrome Frame"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[83] = parser; +exports.browser[89] = parser; parser = Object.create(null); parser[0] = new RegExp("(SLP Browser)/(\\d+)\\.(\\d+)"); parser[1] = "Tizen Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[84] = parser; +exports.browser[90] = parser; parser = Object.create(null); parser[0] = new RegExp("(SE 2\\.X) MetaSr (\\d+)\\.(\\d+)"); parser[1] = "Sogou Explorer"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[85] = parser; +exports.browser[91] = parser; parser = Object.create(null); parser[0] = new RegExp("(MQQBrowser/Mini)(?:(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"); parser[1] = "QQ Browser Mini"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[86] = parser; +exports.browser[92] = parser; parser = Object.create(null); parser[0] = new RegExp("(MQQBrowser)(?:/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"); parser[1] = "QQ Browser Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[87] = parser; +exports.browser[93] = parser; parser = Object.create(null); parser[0] = new RegExp("(QQBrowser)(?:/(\\d+)(?:\\.(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?)?"); parser[1] = "QQ Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[88] = parser; +exports.browser[94] = parser; parser = Object.create(null); parser[0] = new RegExp("(Rackspace Monitoring)/(\\d+)\\.(\\d+)"); parser[1] = "RackspaceBot"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[89] = parser; +exports.browser[95] = parser; parser = Object.create(null); parser[0] = new RegExp("(PyAMF)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[90] = parser; +exports.browser[96] = parser; parser = Object.create(null); parser[0] = new RegExp("(YaBrowser)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Yandex Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[91] = parser; +exports.browser[97] = parser; parser = Object.create(null); parser[0] = new RegExp("(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+).* MRCHROME"); parser[1] = "Mail.ru Chromium Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[92] = parser; +exports.browser[98] = parser; parser = Object.create(null); parser[0] = new RegExp("(AOL) (\\d+)\\.(\\d+); AOLBuild (\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[93] = parser; +exports.browser[99] = parser; parser = Object.create(null); -parser[0] = new RegExp("(MxBrowser)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); -parser[1] = "Maxthon"; +parser[0] = new RegExp("(Slack_SSB)/(\\d+)\\.(\\d+)\\.(\\d+)"); +parser[1] = "Slack Desktop Client"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[94] = parser; +exports.browser[100] = parser; parser = Object.create(null); -parser[0] = new RegExp("\\b(MobileIron|Crosswalk|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Spotify|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\\.Browser|Bunjalloo|Google Earth|Raven for Mac|Openwave|MacOutlook|Electron)/(\\d+)\\.(\\d+)\\.(\\d+)"); +parser[0] = new RegExp("(HipChat)/?(\\d+)?"); +parser[1] = "HipChat Desktop Client"; +parser[2] = 0; +parser[3] = 0; +parser[4] = 0; +exports.browser[101] = parser; +parser = Object.create(null); +parser[0] = new RegExp("\\b(MobileIron|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Spotify|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\\.Browser|Bunjalloo|Google Earth|Raven for Mac|Openwave|MacOutlook|Electron)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[95] = parser; +exports.browser[102] = parser; parser = Object.create(null); parser[0] = new RegExp("Microsoft Office Outlook 12\\.\\d+\\.\\d+|MSOffice 12"); parser[1] = "Outlook"; parser[2] = "2007"; parser[3] = 0; parser[4] = 0; -exports.browser[96] = parser; +exports.browser[103] = parser; parser = Object.create(null); parser[0] = new RegExp("Microsoft Outlook 14\\.\\d+\\.\\d+|MSOffice 14"); parser[1] = "Outlook"; parser[2] = "2010"; parser[3] = 0; parser[4] = 0; -exports.browser[97] = parser; +exports.browser[104] = parser; parser = Object.create(null); parser[0] = new RegExp("Microsoft Outlook 15\\.\\d+\\.\\d+"); parser[1] = "Outlook"; parser[2] = "2013"; parser[3] = 0; parser[4] = 0; -exports.browser[98] = parser; +exports.browser[105] = parser; parser = Object.create(null); parser[0] = new RegExp("Microsoft Outlook (?:Mail )?16\\.\\d+\\.\\d+"); parser[1] = "Outlook"; parser[2] = "2016"; parser[3] = 0; parser[4] = 0; -exports.browser[99] = parser; +exports.browser[106] = parser; parser = Object.create(null); parser[0] = new RegExp("Outlook-Express\\/7\\.0.*"); parser[1] = "Windows Live Mail"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[100] = parser; +exports.browser[107] = parser; parser = Object.create(null); parser[0] = new RegExp("(Airmail) (\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[101] = parser; +exports.browser[108] = parser; parser = Object.create(null); parser[0] = new RegExp("(Thunderbird)/(\\d+)\\.(\\d+)(?:\\.(\\d+(?:pre)?))?"); parser[1] = "Thunderbird"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[102] = parser; +exports.browser[109] = parser; parser = Object.create(null); parser[0] = new RegExp("(Postbox)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Postbox"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[103] = parser; +exports.browser[110] = parser; parser = Object.create(null); parser[0] = new RegExp("(Barca(?:Pro)?)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = "Barca"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[104] = parser; +exports.browser[111] = parser; parser = Object.create(null); parser[0] = new RegExp("(Lotus-Notes)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = "Lotus Notes"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[105] = parser; +exports.browser[112] = parser; parser = Object.create(null); parser[0] = new RegExp("(Vivaldi)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[106] = parser; +exports.browser[113] = parser; parser = Object.create(null); -parser[0] = new RegExp("(Edge)/(\\d+)\\.(\\d+)"); +parser[0] = new RegExp("(Edge)/(\\d+)(?:\\.(\\d+))?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[107] = parser; +exports.browser[114] = parser; parser = Object.create(null); parser[0] = new RegExp("(brave)/(\\d+)\\.(\\d+)\\.(\\d+) Chrome"); parser[1] = "Brave"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[108] = parser; +exports.browser[115] = parser; parser = Object.create(null); parser[0] = new RegExp("(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)[\\d.]* Iron[^/]"); parser[1] = "Iron"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[109] = parser; +exports.browser[116] = parser; parser = Object.create(null); parser[0] = new RegExp("\\b(Dolphin)(?: |HDCN/|/INT\\-)(\\d+)\\.(\\d+)\\.?(\\d+)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[110] = parser; +exports.browser[117] = parser; parser = Object.create(null); parser[0] = new RegExp("HeadlessChrome"); parser[1] = "HeadlessChrome"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[111] = parser; +exports.browser[118] = parser; parser = Object.create(null); parser[0] = new RegExp("(bingbot|Bolt|AdobeAIR|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|iTunes|MacAppStore|NetNewsWire|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris|Abrowser|Planetweb|ICE Browser|mDolphin|qutebrowser|Otter|QupZilla|MailBar|kmail2|YahooMobileMail|ExchangeWebServices|ExchangeServicesClient|Dragon|Outlook-iOS-Android)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[112] = parser; +exports.browser[119] = parser; parser = Object.create(null); parser[0] = new RegExp("(Chromium|Chrome)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[113] = parser; +exports.browser[120] = parser; parser = Object.create(null); parser[0] = new RegExp("(IEMobile)[ /](\\d+)\\.(\\d+)"); parser[1] = "IE Mobile"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[114] = parser; +exports.browser[121] = parser; parser = Object.create(null); parser[0] = new RegExp("(BacaBerita App)\\/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[115] = parser; +exports.browser[122] = parser; parser = Object.create(null); parser[0] = new RegExp("(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[116] = parser; +exports.browser[123] = parser; parser = Object.create(null); parser[0] = new RegExp("(iCab|Lunascape|Opera|Android|Jasmine|Polaris|Microsoft SkyDriveSync|The Bat!) (\\d+)\\.(\\d+)\\.?(\\d+)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[117] = parser; +exports.browser[124] = parser; parser = Object.create(null); parser[0] = new RegExp("(Kindle)/(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[118] = parser; +exports.browser[125] = parser; parser = Object.create(null); parser[0] = new RegExp("(Android) Donut"); parser[1] = 0; parser[2] = "1"; parser[3] = "2"; parser[4] = 0; -exports.browser[119] = parser; +exports.browser[126] = parser; parser = Object.create(null); parser[0] = new RegExp("(Android) Eclair"); parser[1] = 0; parser[2] = "2"; parser[3] = "1"; parser[4] = 0; -exports.browser[120] = parser; +exports.browser[127] = parser; parser = Object.create(null); parser[0] = new RegExp("(Android) Froyo"); parser[1] = 0; parser[2] = "2"; parser[3] = "2"; parser[4] = 0; -exports.browser[121] = parser; +exports.browser[128] = parser; parser = Object.create(null); parser[0] = new RegExp("(Android) Gingerbread"); parser[1] = 0; parser[2] = "2"; parser[3] = "3"; parser[4] = 0; -exports.browser[122] = parser; +exports.browser[129] = parser; parser = Object.create(null); parser[0] = new RegExp("(Android) Honeycomb"); parser[1] = 0; parser[2] = "3"; parser[3] = 0; parser[4] = 0; -exports.browser[123] = parser; +exports.browser[130] = parser; parser = Object.create(null); parser[0] = new RegExp("(MSIE) (\\d+)\\.(\\d+).*XBLWP7"); parser[1] = "IE Large Screen"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[124] = parser; -parser = Object.create(null); -parser[0] = new RegExp("(Slack_SSB)/(\\d+)\\.(\\d+)\\.(\\d+)"); -parser[1] = "Slack Desktop Client"; -parser[2] = 0; -parser[3] = 0; -parser[4] = 0; -exports.browser[125] = parser; +exports.browser[131] = parser; parser = Object.create(null); parser[0] = new RegExp("(Obigo)InternetBrowser"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[126] = parser; +exports.browser[132] = parser; parser = Object.create(null); parser[0] = new RegExp("(Obigo)\\-Browser"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[127] = parser; +exports.browser[133] = parser; parser = Object.create(null); parser[0] = new RegExp("(Obigo|OBIGO)[^\\d]*(\\d+)(?:.(\\d+))?"); parser[1] = "Obigo"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[128] = parser; +exports.browser[134] = parser; parser = Object.create(null); parser[0] = new RegExp("(MAXTHON|Maxthon) (\\d+)\\.(\\d+)"); parser[1] = "Maxthon"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[129] = parser; +exports.browser[135] = parser; parser = Object.create(null); parser[0] = new RegExp("(Maxthon|MyIE2|Uzbl|Shiira)"); parser[1] = 0; parser[2] = "0"; parser[3] = 0; parser[4] = 0; -exports.browser[130] = parser; +exports.browser[136] = parser; parser = Object.create(null); parser[0] = new RegExp("(BrowseX) \\((\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[131] = parser; +exports.browser[137] = parser; parser = Object.create(null); parser[0] = new RegExp("(NCSA_Mosaic)/(\\d+)\\.(\\d+)"); parser[1] = "NCSA Mosaic"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[132] = parser; +exports.browser[138] = parser; parser = Object.create(null); parser[0] = new RegExp("(POLARIS)/(\\d+)\\.(\\d+)"); parser[1] = "Polaris"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[133] = parser; +exports.browser[139] = parser; parser = Object.create(null); parser[0] = new RegExp("(Embider)/(\\d+)\\.(\\d+)"); parser[1] = "Polaris"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[134] = parser; +exports.browser[140] = parser; parser = Object.create(null); parser[0] = new RegExp("(BonEcho)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+)?"); parser[1] = "Bon Echo"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[135] = parser; +exports.browser[141] = parser; parser = Object.create(null); parser[0] = new RegExp("(iPod|iPhone|iPad).+Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*[ +]Safari"); parser[1] = "Mobile Safari"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[136] = parser; +exports.browser[142] = parser; parser = Object.create(null); parser[0] = new RegExp("(iPod|iPhone|iPad).+Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = "Mobile Safari UI/WKWebView"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[137] = parser; +exports.browser[143] = parser; parser = Object.create(null); parser[0] = new RegExp("(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\\d+)_(\\d+)(?:_(\\d+))?.*Mobile.*[ +]Safari"); parser[1] = "Mobile Safari"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[138] = parser; +exports.browser[144] = parser; parser = Object.create(null); parser[0] = new RegExp("(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\\d+)_(\\d+)(?:_(\\d+))?.*Mobile"); parser[1] = "Mobile Safari UI/WKWebView"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[139] = parser; +exports.browser[145] = parser; parser = Object.create(null); parser[0] = new RegExp("(iPod|iPhone|iPad).* Safari"); parser[1] = "Mobile Safari"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[140] = parser; +exports.browser[146] = parser; parser = Object.create(null); parser[0] = new RegExp("(iPod|iPhone|iPad)"); parser[1] = "Mobile Safari UI/WKWebView"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[141] = parser; +exports.browser[147] = parser; parser = Object.create(null); parser[0] = new RegExp("(AvantGo) (\\d+).(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[142] = parser; +exports.browser[148] = parser; parser = Object.create(null); parser[0] = new RegExp("(OneBrowser)/(\\d+).(\\d+)"); parser[1] = "ONE Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[143] = parser; +exports.browser[149] = parser; parser = Object.create(null); parser[0] = new RegExp("(Avant)"); parser[1] = 0; parser[2] = "1"; parser[3] = 0; parser[4] = 0; -exports.browser[144] = parser; +exports.browser[150] = parser; parser = Object.create(null); parser[0] = new RegExp("(QtCarBrowser)"); parser[1] = 0; parser[2] = "1"; parser[3] = 0; parser[4] = 0; -exports.browser[145] = parser; +exports.browser[151] = parser; parser = Object.create(null); parser[0] = new RegExp("^(iBrowser/Mini)(\\d+).(\\d+)"); parser[1] = "iBrowser Mini"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[146] = parser; +exports.browser[152] = parser; parser = Object.create(null); parser[0] = new RegExp("^(iBrowser|iRAPP)/(\\d+).(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[147] = parser; +exports.browser[153] = parser; parser = Object.create(null); parser[0] = new RegExp("^(Nokia)"); parser[1] = "Nokia Services (WAP) Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[148] = parser; +exports.browser[154] = parser; parser = Object.create(null); parser[0] = new RegExp("(NokiaBrowser)/(\\d+)\\.(\\d+).(\\d+)\\.(\\d+)"); parser[1] = "Nokia Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[149] = parser; +exports.browser[155] = parser; parser = Object.create(null); parser[0] = new RegExp("(NokiaBrowser)/(\\d+)\\.(\\d+).(\\d+)"); parser[1] = "Nokia Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[150] = parser; +exports.browser[156] = parser; parser = Object.create(null); parser[0] = new RegExp("(NokiaBrowser)/(\\d+)\\.(\\d+)"); parser[1] = "Nokia Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[151] = parser; +exports.browser[157] = parser; parser = Object.create(null); parser[0] = new RegExp("(BrowserNG)/(\\d+)\\.(\\d+).(\\d+)"); parser[1] = "Nokia Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[152] = parser; +exports.browser[158] = parser; parser = Object.create(null); parser[0] = new RegExp("(Series60)/5\\.0"); parser[1] = "Nokia Browser"; parser[2] = "7"; parser[3] = "0"; parser[4] = 0; -exports.browser[153] = parser; +exports.browser[159] = parser; parser = Object.create(null); parser[0] = new RegExp("(Series60)/(\\d+)\\.(\\d+)"); parser[1] = "Nokia OSS Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[154] = parser; +exports.browser[160] = parser; parser = Object.create(null); parser[0] = new RegExp("(S40OviBrowser)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Ovi Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[155] = parser; +exports.browser[161] = parser; parser = Object.create(null); parser[0] = new RegExp("(Nokia)[EN]?(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[156] = parser; +exports.browser[162] = parser; parser = Object.create(null); parser[0] = new RegExp("(PlayBook).+RIM Tablet OS (\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "BlackBerry WebKit"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[157] = parser; +exports.browser[163] = parser; parser = Object.create(null); parser[0] = new RegExp("(Black[bB]erry|BB10).+Version/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "BlackBerry WebKit"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[158] = parser; +exports.browser[164] = parser; parser = Object.create(null); parser[0] = new RegExp("(Black[bB]erry)\\s?(\\d+)"); parser[1] = "BlackBerry"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[159] = parser; +exports.browser[165] = parser; parser = Object.create(null); parser[0] = new RegExp("(OmniWeb)/v(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[160] = parser; +exports.browser[166] = parser; parser = Object.create(null); parser[0] = new RegExp("(Blazer)/(\\d+)\\.(\\d+)"); parser[1] = "Palm Blazer"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[161] = parser; +exports.browser[167] = parser; parser = Object.create(null); parser[0] = new RegExp("(Pre)/(\\d+)\\.(\\d+)"); parser[1] = "Palm Pre"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[162] = parser; +exports.browser[168] = parser; parser = Object.create(null); parser[0] = new RegExp("(ELinks)/(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[163] = parser; +exports.browser[169] = parser; parser = Object.create(null); parser[0] = new RegExp("(ELinks) \\((\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[164] = parser; +exports.browser[170] = parser; parser = Object.create(null); parser[0] = new RegExp("(Links) \\((\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[165] = parser; +exports.browser[171] = parser; parser = Object.create(null); parser[0] = new RegExp("(QtWeb) Internet Browser/(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[166] = parser; +exports.browser[172] = parser; parser = Object.create(null); parser[0] = new RegExp("(PhantomJS)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[167] = parser; +exports.browser[173] = parser; parser = Object.create(null); parser[0] = new RegExp("(AppleWebKit)/(\\d+)\\.?(\\d+)?\\+ .* Safari"); parser[1] = "WebKit Nightly"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[168] = parser; +exports.browser[174] = parser; parser = Object.create(null); parser[0] = new RegExp("(Version)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*Safari/"); parser[1] = "Safari"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[169] = parser; +exports.browser[175] = parser; parser = Object.create(null); parser[0] = new RegExp("(Safari)/\\d+"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[170] = parser; +exports.browser[176] = parser; parser = Object.create(null); parser[0] = new RegExp("(OLPC)/Update(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[171] = parser; +exports.browser[177] = parser; parser = Object.create(null); parser[0] = new RegExp("(OLPC)/Update()\\.(\\d+)"); parser[1] = 0; parser[2] = "0"; parser[3] = 0; parser[4] = 0; -exports.browser[172] = parser; +exports.browser[178] = parser; parser = Object.create(null); parser[0] = new RegExp("(SEMC\\-Browser)/(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[173] = parser; +exports.browser[179] = parser; parser = Object.create(null); parser[0] = new RegExp("(Teleca)"); parser[1] = "Teleca Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[174] = parser; +exports.browser[180] = parser; parser = Object.create(null); parser[0] = new RegExp("(Phantom)/V(\\d+)\\.(\\d+)"); parser[1] = "Phantom Browser"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[175] = parser; +exports.browser[181] = parser; parser = Object.create(null); parser[0] = new RegExp("Trident(.*)rv.(\\d+)\\.(\\d+)"); parser[1] = "IE"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[176] = parser; +exports.browser[182] = parser; parser = Object.create(null); parser[0] = new RegExp("(Espial)/(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[177] = parser; +exports.browser[183] = parser; parser = Object.create(null); parser[0] = new RegExp("(AppleWebKit)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Apple Mail"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[178] = parser; +exports.browser[184] = parser; parser = Object.create(null); parser[0] = new RegExp("(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[179] = parser; +exports.browser[185] = parser; parser = Object.create(null); parser[0] = new RegExp("(Firefox)/(\\d+)\\.(\\d+)(pre|[ab]\\d+[a-z]*)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[180] = parser; +exports.browser[186] = parser; parser = Object.create(null); parser[0] = new RegExp("([MS]?IE) (\\d+)\\.(\\d+)"); parser[1] = "IE"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[181] = parser; +exports.browser[187] = parser; parser = Object.create(null); parser[0] = new RegExp("(python-requests)/(\\d+)\\.(\\d+)"); parser[1] = "Python Requests"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[182] = parser; +exports.browser[188] = parser; parser = Object.create(null); parser[0] = new RegExp("\\b(Windows-Update-Agent|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|Wget|OpenBSD ftp|jupdate)(?:[ /](\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[183] = parser; +exports.browser[189] = parser; parser = Object.create(null); parser[0] = new RegExp("(Java)[/ ]{0,1}\\d+\\.(\\d+)\\.(\\d+)[_-]*([a-zA-Z0-9]+)*"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[184] = parser; +exports.browser[190] = parser; parser = Object.create(null); parser[0] = new RegExp("^(Roku)/DVP-(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[185] = parser; +exports.browser[191] = parser; parser = Object.create(null); parser[0] = new RegExp("(Kurio)\\/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Kurio App"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[186] = parser; +exports.browser[192] = parser; parser = Object.create(null); parser[0] = new RegExp("(Wget)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[187] = parser; +exports.browser[193] = parser; parser = Object.create(null); parser[0] = new RegExp("(curl)/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "cURL"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.browser[188] = parser; +exports.browser[194] = parser; -exports.browser.length = 189; +exports.browser.length = 195; exports.device = Object.create(null); @@ -2422,7 +2464,7 @@ parser[3] = 0; parser[4] = 0; exports.device[152] = parser; parser = Object.create(null); -parser[0] = new RegExp("; *([^;]+) Build/Huawei"); +parser[0] = new RegExp("; *([^;]+) Build/(?:Huawei|HUAWEI)"); parser[1] = "$1"; parser[2] = 0; parser[3] = 0; @@ -4669,7 +4711,7 @@ parser[3] = 0; parser[4] = 0; exports.device[473] = parser; parser = Object.create(null); -parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:NOKIA|Nokia)[^;]*; *(?:NOKIA ?|Nokia ?|LUMIA ?|[Ll]umia ?)*(\\d{3,}[^;\\)]*)"); +parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:rv:11; )?(?:NOKIA|Nokia)[^;]*; *(?:NOKIA ?|Nokia ?|LUMIA ?|[Ll]umia ?)*(\\d{3,}[^;\\)]*)"); parser[1] = "Lumia $1"; parser[2] = 0; parser[3] = 0; @@ -4907,560 +4949,567 @@ parser[3] = 0; parser[4] = 0; exports.device[507] = parser; parser = Object.create(null); +parser[0] = new RegExp("CFNetwork/.* Darwin/\\d+\\.\\d+\\.\\d+ \\(x86_64\\)"); +parser[1] = "Mac"; +parser[2] = 0; +parser[3] = 0; +parser[4] = 0; +exports.device[508] = parser; +parser = Object.create(null); parser[0] = new RegExp("CFNetwork/.* Darwin/\\d"); parser[1] = "iOS-Device"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[508] = parser; +exports.device[509] = parser; parser = Object.create(null); parser[0] = new RegExp("acer_([A-Za-z0-9]+)_"); parser[1] = "Acer $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[509] = parser; +exports.device[510] = parser; parser = Object.create(null); parser[0] = new RegExp("(?:ALCATEL|Alcatel)-([A-Za-z0-9\\-]+)"); parser[1] = "Alcatel $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[510] = parser; +exports.device[511] = parser; parser = Object.create(null); parser[0] = new RegExp("(?:Amoi|AMOI)\\-([A-Za-z0-9]+)"); parser[1] = "Amoi $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[511] = parser; +exports.device[512] = parser; parser = Object.create(null); parser[0] = new RegExp("(?:; |\\/|^)((?:Transformer (?:Pad|Prime) |Transformer |PadFone[ _]?)[A-Za-z0-9]*)"); parser[1] = "Asus $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[512] = parser; +exports.device[513] = parser; parser = Object.create(null); parser[0] = new RegExp("(?:asus.*?ASUS|Asus|ASUS|asus)[\\- ;]*((?:Transformer (?:Pad|Prime) |Transformer |Padfone |Nexus[ _])?[A-Za-z0-9]+)"); parser[1] = "Asus $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[513] = parser; +exports.device[514] = parser; parser = Object.create(null); parser[0] = new RegExp("\\bBIRD[ \\-\\.]([A-Za-z0-9]+)"); parser[1] = "Bird $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[514] = parser; +exports.device[515] = parser; parser = Object.create(null); parser[0] = new RegExp("\\bDell ([A-Za-z0-9]+)"); parser[1] = "Dell $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[515] = parser; +exports.device[516] = parser; parser = Object.create(null); parser[0] = new RegExp("DoCoMo/2\\.0 ([A-Za-z0-9]+)"); parser[1] = "DoCoMo $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[516] = parser; +exports.device[517] = parser; parser = Object.create(null); parser[0] = new RegExp("([A-Za-z0-9]+)_W;FOMA"); parser[1] = "DoCoMo $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[517] = parser; +exports.device[518] = parser; parser = Object.create(null); parser[0] = new RegExp("([A-Za-z0-9]+);FOMA"); parser[1] = "DoCoMo $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[518] = parser; +exports.device[519] = parser; parser = Object.create(null); parser[0] = new RegExp("\\b(?:HTC/|HTC/[a-z0-9]+/)?HTC[ _\\-;]? *(.*?)(?:-?Mozilla|fingerPrint|[;/\\(\\)]|$)"); parser[1] = "HTC $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[519] = parser; +exports.device[520] = parser; parser = Object.create(null); parser[0] = new RegExp("Huawei([A-Za-z0-9]+)"); parser[1] = "Huawei $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[520] = parser; +exports.device[521] = parser; parser = Object.create(null); parser[0] = new RegExp("HUAWEI-([A-Za-z0-9]+)"); parser[1] = "Huawei $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[521] = parser; +exports.device[522] = parser; parser = Object.create(null); parser[0] = new RegExp("vodafone([A-Za-z0-9]+)"); parser[1] = "Huawei Vodafone $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[522] = parser; +exports.device[523] = parser; parser = Object.create(null); parser[0] = new RegExp("i\\-mate ([A-Za-z0-9]+)"); parser[1] = "i-mate $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[523] = parser; +exports.device[524] = parser; parser = Object.create(null); parser[0] = new RegExp("Kyocera\\-([A-Za-z0-9]+)"); parser[1] = "Kyocera $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[524] = parser; +exports.device[525] = parser; parser = Object.create(null); parser[0] = new RegExp("KWC\\-([A-Za-z0-9]+)"); parser[1] = "Kyocera $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[525] = parser; +exports.device[526] = parser; parser = Object.create(null); parser[0] = new RegExp("Lenovo[_\\-]([A-Za-z0-9]+)"); parser[1] = "Lenovo $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[526] = parser; +exports.device[527] = parser; parser = Object.create(null); parser[0] = new RegExp("(HbbTV)/[0-9]+\\.[0-9]+\\.[0-9]+ \\([^;]*; *(LG)E *; *([^;]*) *;[^;]*;[^;]*;\\)"); parser[1] = "$1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[527] = parser; +exports.device[528] = parser; parser = Object.create(null); parser[0] = new RegExp("(HbbTV)/1\\.1\\.1.*CE-HTML/1\\.\\d;(Vendor/)*(THOM[^;]*?)[;\\s](?:.*SW-Version/.*)*(LF[^;]+);?"); parser[1] = "$1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[528] = parser; +exports.device[529] = parser; parser = Object.create(null); parser[0] = new RegExp("(HbbTV)(?:/1\\.1\\.1)?(?: ?\\(;;;;;\\))?; *CE-HTML(?:/1\\.\\d)?; *([^ ]+) ([^;]+);"); parser[1] = "$1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[529] = parser; +exports.device[530] = parser; parser = Object.create(null); parser[0] = new RegExp("(HbbTV)/1\\.1\\.1 \\(;;;;;\\) Maple_2011"); parser[1] = "$1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[530] = parser; +exports.device[531] = parser; parser = Object.create(null); parser[0] = new RegExp("(HbbTV)/[0-9]+\\.[0-9]+\\.[0-9]+ \\([^;]*; *(?:CUS:([^;]*)|([^;]+)) *; *([^;]*) *;.*;"); parser[1] = "$1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[531] = parser; +exports.device[532] = parser; parser = Object.create(null); parser[0] = new RegExp("(HbbTV)/[0-9]+\\.[0-9]+\\.[0-9]+"); parser[1] = "$1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[532] = parser; +exports.device[533] = parser; parser = Object.create(null); parser[0] = new RegExp("LGE; (?:Media\\/)?([^;]*);[^;]*;[^;]*;?\\); \"?LG NetCast(\\.TV|\\.Media|)-\\d+"); parser[1] = "NetCast$2"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[533] = parser; +exports.device[534] = parser; parser = Object.create(null); parser[0] = new RegExp("InettvBrowser/[0-9]+\\.[0-9A-Z]+ \\([^;]*;(Sony)([^;]*);[^;]*;[^\\)]*\\)"); parser[1] = "Inettv"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[534] = parser; +exports.device[535] = parser; parser = Object.create(null); parser[0] = new RegExp("InettvBrowser/[0-9]+\\.[0-9A-Z]+ \\([^;]*;([^;]*);[^;]*;[^\\)]*\\)"); parser[1] = "Inettv"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[535] = parser; +exports.device[536] = parser; parser = Object.create(null); parser[0] = new RegExp("(?:InettvBrowser|TSBNetTV|NETTV|HBBTV)"); parser[1] = "Inettv"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[536] = parser; +exports.device[537] = parser; parser = Object.create(null); parser[0] = new RegExp("Series60/\\d\\.\\d (LG)[\\-]?([A-Za-z0-9 \\-]+)"); parser[1] = "$1 $2"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[537] = parser; +exports.device[538] = parser; parser = Object.create(null); parser[0] = new RegExp("\\b(?:LGE[ \\-]LG\\-(?:AX)?|LGE |LGE?-LG|LGE?[ \\-]|LG[ /\\-]|lg[\\-])([A-Za-z0-9]+)\\b"); parser[1] = "LG $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[538] = parser; +exports.device[539] = parser; parser = Object.create(null); parser[0] = new RegExp("(?:^LG[\\-]?|^LGE[\\-/]?)([A-Za-z]+[0-9]+[A-Za-z]*)"); parser[1] = "LG $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[539] = parser; +exports.device[540] = parser; parser = Object.create(null); parser[0] = new RegExp("^LG([0-9]+[A-Za-z]*)"); parser[1] = "LG $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[540] = parser; +exports.device[541] = parser; parser = Object.create(null); parser[0] = new RegExp("(KIN\\.[^ ]+) (\\d+)\\.(\\d+)"); parser[1] = "Microsoft $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[541] = parser; +exports.device[542] = parser; parser = Object.create(null); parser[0] = new RegExp("(?:MSIE|XBMC).*\\b(Xbox)\\b"); parser[1] = "$1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[542] = parser; +exports.device[543] = parser; parser = Object.create(null); parser[0] = new RegExp("; ARM; Trident/6\\.0; Touch[\\);]"); parser[1] = "Microsoft Surface RT"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[543] = parser; +exports.device[544] = parser; parser = Object.create(null); parser[0] = new RegExp("Motorola\\-([A-Za-z0-9]+)"); parser[1] = "Motorola $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[544] = parser; +exports.device[545] = parser; parser = Object.create(null); parser[0] = new RegExp("MOTO\\-([A-Za-z0-9]+)"); parser[1] = "Motorola $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[545] = parser; +exports.device[546] = parser; parser = Object.create(null); parser[0] = new RegExp("MOT\\-([A-z0-9][A-z0-9\\-]*)"); parser[1] = "Motorola $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[546] = parser; +exports.device[547] = parser; parser = Object.create(null); parser[0] = new RegExp("Nintendo WiiU"); parser[1] = "Nintendo Wii U"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[547] = parser; +exports.device[548] = parser; parser = Object.create(null); parser[0] = new RegExp("Nintendo (DS|3DS|DSi|Wii);"); parser[1] = "Nintendo $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[548] = parser; +exports.device[549] = parser; parser = Object.create(null); parser[0] = new RegExp("(?:Pantech|PANTECH)[ _-]?([A-Za-z0-9\\-]+)"); parser[1] = "Pantech $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[549] = parser; +exports.device[550] = parser; parser = Object.create(null); parser[0] = new RegExp("Philips([A-Za-z0-9]+)"); parser[1] = "Philips $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[550] = parser; +exports.device[551] = parser; parser = Object.create(null); parser[0] = new RegExp("Philips ([A-Za-z0-9]+)"); parser[1] = "Philips $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[551] = parser; +exports.device[552] = parser; parser = Object.create(null); parser[0] = new RegExp("(SMART-TV); .* Tizen "); parser[1] = "Samsung $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[552] = parser; +exports.device[553] = parser; parser = Object.create(null); parser[0] = new RegExp("SymbianOS/9\\.\\d.* Samsung[/\\-]([A-Za-z0-9 \\-]+)"); parser[1] = "Samsung $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[553] = parser; +exports.device[554] = parser; parser = Object.create(null); parser[0] = new RegExp("(Samsung)(SGH)(i[0-9]+)"); parser[1] = "$1 $2$3"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[554] = parser; +exports.device[555] = parser; parser = Object.create(null); parser[0] = new RegExp("SAMSUNG-ANDROID-MMS/([^;/]+)"); parser[1] = "$1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[555] = parser; +exports.device[556] = parser; parser = Object.create(null); parser[0] = new RegExp("SAMSUNG(?:; |[ -/])([A-Za-z0-9\\-]+)"); parser[1] = "Samsung $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[556] = parser; +exports.device[557] = parser; parser = Object.create(null); parser[0] = new RegExp("(Dreamcast)"); parser[1] = "Sega $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[557] = parser; +exports.device[558] = parser; parser = Object.create(null); parser[0] = new RegExp("^SIE-([A-Za-z0-9]+)"); parser[1] = "Siemens $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[558] = parser; +exports.device[559] = parser; parser = Object.create(null); parser[0] = new RegExp("Softbank/[12]\\.0/([A-Za-z0-9]+)"); parser[1] = "Softbank $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[559] = parser; +exports.device[560] = parser; parser = Object.create(null); parser[0] = new RegExp("SonyEricsson ?([A-Za-z0-9\\-]+)"); parser[1] = "Ericsson $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[560] = parser; +exports.device[561] = parser; parser = Object.create(null); parser[0] = new RegExp("Android [^;]+; ([^ ]+) (Sony)/"); parser[1] = "$2 $1"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[561] = parser; +exports.device[562] = parser; parser = Object.create(null); parser[0] = new RegExp("(Sony)(?:BDP\\/|\\/)?([^ /;\\)]+)[ /;\\)]"); parser[1] = "$1 $2"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[562] = parser; +exports.device[563] = parser; parser = Object.create(null); parser[0] = new RegExp("Puffin/[\\d\\.]+IT"); parser[1] = "iPad"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[563] = parser; +exports.device[564] = parser; parser = Object.create(null); parser[0] = new RegExp("Puffin/[\\d\\.]+IP"); parser[1] = "iPhone"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[564] = parser; +exports.device[565] = parser; parser = Object.create(null); parser[0] = new RegExp("Puffin/[\\d\\.]+AT"); parser[1] = "Generic Tablet"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[565] = parser; +exports.device[566] = parser; parser = Object.create(null); parser[0] = new RegExp("Puffin/[\\d\\.]+AP"); parser[1] = "Generic Smartphone"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[566] = parser; +exports.device[567] = parser; parser = Object.create(null); parser[0] = new RegExp("Android[\\- ][\\d]+\\.[\\d]+; [A-Za-z]{2}\\-[A-Za-z]{0,2}; WOWMobile (.+) Build[/ ]"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[567] = parser; +exports.device[568] = parser; parser = Object.create(null); parser[0] = new RegExp("Android[\\- ][\\d]+\\.[\\d]+\\-update1; [A-Za-z]{2}\\-[A-Za-z]{0,2} *; *(.+?) Build[/ ]"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[568] = parser; +exports.device[569] = parser; parser = Object.create(null); parser[0] = new RegExp("Android[\\- ][\\d]+(?:\\.[\\d]+){1,2}; *[A-Za-z]{2}[_\\-][A-Za-z]{0,2}\\-? *; *(.+?) Build[/ ]"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[569] = parser; +exports.device[570] = parser; parser = Object.create(null); parser[0] = new RegExp("Android[\\- ][\\d]+(?:\\.[\\d]+){1,2}; *[A-Za-z]{0,2}\\- *; *(.+?) Build[/ ]"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[570] = parser; +exports.device[571] = parser; parser = Object.create(null); parser[0] = new RegExp("Android[\\- ][\\d]+(?:\\.[\\d]+){1,2}; *[a-z]{0,2}[_\\-]?[A-Za-z]{0,2};? Build[/ ]"); parser[1] = "Generic Smartphone"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[571] = parser; +exports.device[572] = parser; parser = Object.create(null); parser[0] = new RegExp("Android[\\- ][\\d]+(?:\\.[\\d]+){1,2}; *\\-?[A-Za-z]{2}; *(.+?) Build[/ ]"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[572] = parser; +exports.device[573] = parser; parser = Object.create(null); parser[0] = new RegExp("Android[\\- ][\\d]+(?:\\.[\\d]+){1,2}(?:;.*)?; *(.+?) Build[/ ]"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[573] = parser; +exports.device[574] = parser; parser = Object.create(null); parser[0] = new RegExp("(GoogleTV)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[574] = parser; +exports.device[575] = parser; parser = Object.create(null); parser[0] = new RegExp("(WebTV)/\\d+.\\d+"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[575] = parser; +exports.device[576] = parser; parser = Object.create(null); parser[0] = new RegExp("^(Roku)/DVP-\\d+\\.\\d+"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[576] = parser; +exports.device[577] = parser; parser = Object.create(null); parser[0] = new RegExp("(Android 3\\.\\d|Opera Tablet|Tablet; .+Firefox/|Android.*(?:Tab|Pad))"); parser[1] = "Generic Tablet"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[577] = parser; +exports.device[578] = parser; parser = Object.create(null); parser[0] = new RegExp("(Symbian|\\bS60(Version|V\\d)|\\bS60\\b|\\((Series 60|Windows Mobile|Palm OS|Bada); Opera Mini|Windows CE|Opera Mobi|BREW|Brew|Mobile; .+Firefox/|iPhone OS|Android|MobileSafari|Windows *Phone|\\(webOS/|PalmOS)"); parser[1] = "Generic Smartphone"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[578] = parser; +exports.device[579] = parser; parser = Object.create(null); parser[0] = new RegExp("(hiptop|avantgo|plucker|xiino|blazer|elaine)"); parser[1] = "Generic Smartphone"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[579] = parser; +exports.device[580] = parser; parser = Object.create(null); -parser[0] = new RegExp("(bot|zao|borg|DBot|oegp|silk|Xenu|zeal|^NING|CCBot|crawl|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|^Java/|^JNLP/|Daumoa|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|spider|msnbot|msrbot|vortex|^vortex|crawler|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|bingbot|BingPreview|openbot|gigabot|furlbot|polybot|seekbot|^voyager|archiver|Icarus6j|mogimogi|Netvibes|blitzbot|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|SeznamBot|ProoXiBot|wsr\\-agent|Squrl Java|EtaoSpider|PaperLiBot|SputnikBot|A6\\-Indexer|netresearch|searchsight|baiduspider|YisouSpider|ICC\\-Crawler|http%20client|Python-urllib|dataparksearch|converacrawler|Screaming Frog|AppEngine-Google|YahooCacheSystem|fast\\-webcrawler|Sogou Pic Spider|semanticdiscovery|Innovazion Crawler|facebookexternalhit|Google.*/\\+/web/snippet|Google-HTTP-Java-Client|BlogBridge|IlTrovatore-Setaccio|InternetArchive|GomezAgent|WebThumbnail|heritrix|NewsGator|PagePeeker|Reaper|ZooShot|holmes|NL-Crawler|Pingdom|WhatsApp|masscan)"); +parser[0] = new RegExp("(bot|zao|borg|DBot|oegp|silk|Xenu|zeal|^NING|CCBot|crawl|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|^Java/|^JNLP/|Daumoa|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|spider|msnbot|msrbot|vortex|^vortex|crawler|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|bingbot|BingPreview|openbot|gigabot|furlbot|polybot|seekbot|^voyager|archiver|Icarus6j|mogimogi|Netvibes|blitzbot|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|SeznamBot|ProoXiBot|wsr\\-agent|Squrl Java|EtaoSpider|PaperLiBot|SputnikBot|A6\\-Indexer|netresearch|searchsight|baiduspider|YisouSpider|ICC\\-Crawler|http%20client|Python-urllib|dataparksearch|converacrawler|Screaming Frog|AppEngine-Google|YahooCacheSystem|fast\\-webcrawler|Sogou Pic Spider|semanticdiscovery|Innovazion Crawler|facebookexternalhit|Google.*/\\+/web/snippet|Google-HTTP-Java-Client|BlogBridge|IlTrovatore-Setaccio|InternetArchive|GomezAgent|WebThumbnail|heritrix|NewsGator|PagePeeker|Reaper|ZooShot|holmes|NL-Crawler|Pingdom|StatusCake|WhatsApp|masscan|Google Web Preview|Qwantify)"); parser[1] = "Spider"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[580] = parser; +exports.device[581] = parser; parser = Object.create(null); parser[0] = new RegExp("^(1207|3gso|4thp|501i|502i|503i|504i|505i|506i|6310|6590|770s|802s|a wa|acer|acs\\-|airn|alav|asus|attw|au\\-m|aur |aus |abac|acoo|aiko|alco|alca|amoi|anex|anny|anyw|aptu|arch|argo|bmobile|bell|bird|bw\\-n|bw\\-u|beck|benq|bilb|blac|c55/|cdm\\-|chtm|capi|comp|cond|dall|dbte|dc\\-s|dica|ds\\-d|ds12|dait|devi|dmob|doco|dopo|dorado|el(?:38|39|48|49|50|55|58|68)|el[3456]\\d{2}dual|erk0|esl8|ex300|ez40|ez60|ez70|ezos|ezze|elai|emul|eric|ezwa|fake|fly\\-|fly_|g\\-mo|g1 u|g560|gf\\-5|grun|gene|go.w|good|grad|hcit|hd\\-m|hd\\-p|hd\\-t|hei\\-|hp i|hpip|hs\\-c|htc |htc\\-|htca|htcg)"); parser[1] = "Generic Feature Phone"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[581] = parser; +exports.device[582] = parser; parser = Object.create(null); parser[0] = new RegExp("^(htcp|htcs|htct|htc_|haie|hita|huaw|hutc|i\\-20|i\\-go|i\\-ma|i\\-mobile|i230|iac|iac\\-|iac/|ig01|im1k|inno|iris|jata|kddi|kgt|kgt/|kpt |kwc\\-|klon|lexi|lg g|lg\\-a|lg\\-b|lg\\-c|lg\\-d|lg\\-f|lg\\-g|lg\\-k|lg\\-l|lg\\-m|lg\\-o|lg\\-p|lg\\-s|lg\\-t|lg\\-u|lg\\-w|lg/k|lg/l|lg/u|lg50|lg54|lge\\-|lge/|leno|m1\\-w|m3ga|m50/|maui|mc01|mc21|mcca|medi|meri|mio8|mioa|mo01|mo02|mode|modo|mot |mot\\-|mt50|mtp1|mtv |mate|maxo|merc|mits|mobi|motv|mozz|n100|n101|n102|n202|n203|n300|n302|n500|n502|n505|n700|n701|n710|nec\\-|nem\\-|newg|neon)"); parser[1] = "Generic Feature Phone"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[582] = parser; +exports.device[583] = parser; parser = Object.create(null); parser[0] = new RegExp("^(netf|noki|nzph|o2 x|o2\\-x|opwv|owg1|opti|oran|ot\\-s|p800|pand|pg\\-1|pg\\-2|pg\\-3|pg\\-6|pg\\-8|pg\\-c|pg13|phil|pn\\-2|pt\\-g|palm|pana|pire|pock|pose|psio|qa\\-a|qc\\-2|qc\\-3|qc\\-5|qc\\-7|qc07|qc12|qc21|qc32|qc60|qci\\-|qwap|qtek|r380|r600|raks|rim9|rove|s55/|sage|sams|sc01|sch\\-|scp\\-|sdk/|se47|sec\\-|sec0|sec1|semc|sgh\\-|shar|sie\\-|sk\\-0|sl45|slid|smb3|smt5|sp01|sph\\-|spv |spv\\-|sy01|samm|sany|sava|scoo|send|siem|smar|smit|soft|sony|t\\-mo|t218|t250|t600|t610|t618|tcl\\-|tdg\\-|telm|tim\\-|ts70|tsm\\-|tsm3|tsm5|tx\\-9|tagt)"); parser[1] = "Generic Feature Phone"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[583] = parser; +exports.device[584] = parser; parser = Object.create(null); parser[0] = new RegExp("^(talk|teli|topl|tosh|up.b|upg1|utst|v400|v750|veri|vk\\-v|vk40|vk50|vk52|vk53|vm40|vx98|virg|vertu|vite|voda|vulc|w3c |w3c\\-|wapj|wapp|wapu|wapm|wig |wapi|wapr|wapv|wapy|wapa|waps|wapt|winc|winw|wonu|x700|xda2|xdag|yas\\-|your|zte\\-|zeto|aste|audi|avan|blaz|brew|brvw|bumb|ccwa|cell|cldc|cmd\\-|dang|eml2|fetc|hipt|http|ibro|idea|ikom|ipaq|jbro|jemu|jigs|keji|kyoc|kyok|libw|m\\-cr|midp|mmef|moto|mwbp|mywa|newt|nok6|o2im|pant|pdxg|play|pluc|port|prox|rozo|sama|seri|smal|symb|treo|upsi|vx52|vx53|vx60|vx61|vx70|vx80|vx81|vx83|vx85|wap\\-|webc|whit|wmlb|xda\\-|xda_)"); parser[1] = "Generic Feature Phone"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[584] = parser; +exports.device[585] = parser; parser = Object.create(null); parser[0] = new RegExp("^(Ice)$"); parser[1] = "Generic Feature Phone"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[585] = parser; +exports.device[586] = parser; parser = Object.create(null); parser[0] = new RegExp("(wap[\\-\\ ]browser|maui|netfront|obigo|teleca|up\\.browser|midp|Opera Mini)"); parser[1] = "Generic Feature Phone"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.device[586] = parser; +exports.device[587] = parser; -exports.device.length = 587; +exports.device.length = 588; exports.os = Object.create(null); @@ -5941,410 +5990,431 @@ parser[3] = "10"; parser[4] = 0; exports.os[67] = parser; parser = Object.create(null); +parser[0] = new RegExp("(CF)(Network)/(760)\\.(\\d)"); +parser[1] = "Mac OS X"; +parser[2] = "10"; +parser[3] = "11"; +parser[4] = 0; +exports.os[68] = parser; +parser = Object.create(null); parser[0] = new RegExp("(CF)(Network)/758\\.(\\d)"); parser[1] = "iOS"; parser[2] = "9"; parser[3] = 0; parser[4] = 0; -exports.os[68] = parser; +exports.os[69] = parser; parser = Object.create(null); parser[0] = new RegExp("(CF)(Network)/808\\.(\\d)"); parser[1] = "iOS"; parser[2] = "10"; parser[3] = 0; parser[4] = 0; -exports.os[69] = parser; +exports.os[70] = parser; +parser = Object.create(null); +parser[0] = new RegExp("CFNetwork/.* Darwin/16\\.\\d+.*\\(x86_64\\)"); +parser[1] = "Mac OS X"; +parser[2] = "10"; +parser[3] = "12"; +parser[4] = 0; +exports.os[71] = parser; +parser = Object.create(null); +parser[0] = new RegExp("CFNetwork/8.* Darwin/15\\.\\d+.*\\(x86_64\\)"); +parser[1] = "Mac OS X"; +parser[2] = "10"; +parser[3] = "11"; +parser[4] = 0; +exports.os[72] = parser; parser = Object.create(null); parser[0] = new RegExp("CFNetwork/.* Darwin/(9)\\.\\d+"); parser[1] = "iOS"; parser[2] = "1"; parser[3] = 0; parser[4] = 0; -exports.os[70] = parser; +exports.os[73] = parser; parser = Object.create(null); parser[0] = new RegExp("CFNetwork/.* Darwin/(10)\\.\\d+"); parser[1] = "iOS"; parser[2] = "4"; parser[3] = 0; parser[4] = 0; -exports.os[71] = parser; +exports.os[74] = parser; parser = Object.create(null); parser[0] = new RegExp("CFNetwork/.* Darwin/(11)\\.\\d+"); parser[1] = "iOS"; parser[2] = "5"; parser[3] = 0; parser[4] = 0; -exports.os[72] = parser; +exports.os[75] = parser; parser = Object.create(null); parser[0] = new RegExp("CFNetwork/.* Darwin/(13)\\.\\d+"); parser[1] = "iOS"; parser[2] = "6"; parser[3] = 0; parser[4] = 0; -exports.os[73] = parser; +exports.os[76] = parser; parser = Object.create(null); parser[0] = new RegExp("CFNetwork/6.* Darwin/(14)\\.\\d+"); parser[1] = "iOS"; parser[2] = "7"; parser[3] = 0; parser[4] = 0; -exports.os[74] = parser; +exports.os[77] = parser; parser = Object.create(null); parser[0] = new RegExp("CFNetwork/7.* Darwin/(14)\\.\\d+"); parser[1] = "iOS"; parser[2] = "8"; parser[3] = "0"; parser[4] = 0; -exports.os[75] = parser; +exports.os[78] = parser; parser = Object.create(null); parser[0] = new RegExp("CFNetwork/7.* Darwin/(15)\\.\\d+"); parser[1] = "iOS"; parser[2] = "9"; parser[3] = "0"; parser[4] = 0; -exports.os[76] = parser; +exports.os[79] = parser; parser = Object.create(null); parser[0] = new RegExp("CFNetwork/8.* Darwin/(16)\\.\\d+"); parser[1] = "iOS"; parser[2] = "10"; parser[3] = 0; parser[4] = 0; -exports.os[77] = parser; +exports.os[80] = parser; parser = Object.create(null); parser[0] = new RegExp("\\b(iOS[ /]|iOS; |iPhone(?:/| v|[ _]OS[/,]|; | OS : |\\d,\\d/|\\d,\\d; )|iPad/)(\\d{1,2})[_\\.](\\d{1,2})(?:[_\\.](\\d+))?"); parser[1] = "iOS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[78] = parser; +exports.os[81] = parser; parser = Object.create(null); parser[0] = new RegExp("\\((iOS);"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[79] = parser; +exports.os[82] = parser; parser = Object.create(null); parser[0] = new RegExp("(tvOS)/(\\d+).(\\d+)"); parser[1] = "tvOS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[80] = parser; +exports.os[83] = parser; parser = Object.create(null); parser[0] = new RegExp("(CrOS) [a-z0-9_]+ (\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = "Chrome OS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[81] = parser; +exports.os[84] = parser; parser = Object.create(null); parser[0] = new RegExp("([Dd]ebian)"); parser[1] = "Debian"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[82] = parser; +exports.os[85] = parser; parser = Object.create(null); parser[0] = new RegExp("(Linux Mint)(?:/(\\d+))?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[83] = parser; +exports.os[86] = parser; parser = Object.create(null); parser[0] = new RegExp("(Mandriva)(?: Linux)?/(?:[\\d.-]+m[a-z]{2}(\\d+).(\\d))?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[84] = parser; +exports.os[87] = parser; parser = Object.create(null); parser[0] = new RegExp("(Symbian[Oo][Ss])[/ ](\\d+)\\.(\\d+)"); parser[1] = "Symbian OS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[85] = parser; +exports.os[88] = parser; parser = Object.create(null); parser[0] = new RegExp("(Symbian/3).+NokiaBrowser/7\\.3"); parser[1] = "Symbian^3 Anna"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[86] = parser; +exports.os[89] = parser; parser = Object.create(null); parser[0] = new RegExp("(Symbian/3).+NokiaBrowser/7\\.4"); parser[1] = "Symbian^3 Belle"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[87] = parser; +exports.os[90] = parser; parser = Object.create(null); parser[0] = new RegExp("(Symbian/3)"); parser[1] = "Symbian^3"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[88] = parser; +exports.os[91] = parser; parser = Object.create(null); parser[0] = new RegExp("\\b(Series 60|SymbOS|S60Version|S60V\\d|S60\\b)"); parser[1] = "Symbian OS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[89] = parser; +exports.os[92] = parser; parser = Object.create(null); parser[0] = new RegExp("(MeeGo)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[90] = parser; +exports.os[93] = parser; parser = Object.create(null); parser[0] = new RegExp("Symbian [Oo][Ss]"); parser[1] = "Symbian OS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[91] = parser; +exports.os[94] = parser; parser = Object.create(null); parser[0] = new RegExp("Series40;"); parser[1] = "Nokia Series 40"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[92] = parser; +exports.os[95] = parser; parser = Object.create(null); parser[0] = new RegExp("Series30Plus;"); parser[1] = "Nokia Series 30 Plus"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[93] = parser; +exports.os[96] = parser; parser = Object.create(null); parser[0] = new RegExp("(BB10);.+Version/(\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "BlackBerry OS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[94] = parser; +exports.os[97] = parser; parser = Object.create(null); parser[0] = new RegExp("(Black[Bb]erry)[0-9a-z]+/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = "BlackBerry OS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[95] = parser; +exports.os[98] = parser; parser = Object.create(null); parser[0] = new RegExp("(Black[Bb]erry).+Version/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = "BlackBerry OS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[96] = parser; +exports.os[99] = parser; parser = Object.create(null); parser[0] = new RegExp("(RIM Tablet OS) (\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "BlackBerry Tablet OS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[97] = parser; +exports.os[100] = parser; parser = Object.create(null); parser[0] = new RegExp("(Play[Bb]ook)"); parser[1] = "BlackBerry Tablet OS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[98] = parser; +exports.os[101] = parser; parser = Object.create(null); parser[0] = new RegExp("(Black[Bb]erry)"); parser[1] = "BlackBerry OS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[99] = parser; +exports.os[102] = parser; parser = Object.create(null); parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/18.0 Firefox/\\d+\\.\\d+"); parser[1] = "Firefox OS"; parser[2] = "1"; parser[3] = "0"; parser[4] = "1"; -exports.os[100] = parser; +exports.os[103] = parser; parser = Object.create(null); parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/18.1 Firefox/\\d+\\.\\d+"); parser[1] = "Firefox OS"; parser[2] = "1"; parser[3] = "1"; parser[4] = 0; -exports.os[101] = parser; +exports.os[104] = parser; parser = Object.create(null); parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/26.0 Firefox/\\d+\\.\\d+"); parser[1] = "Firefox OS"; parser[2] = "1"; parser[3] = "2"; parser[4] = 0; -exports.os[102] = parser; +exports.os[105] = parser; parser = Object.create(null); parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/28.0 Firefox/\\d+\\.\\d+"); parser[1] = "Firefox OS"; parser[2] = "1"; parser[3] = "3"; parser[4] = 0; -exports.os[103] = parser; +exports.os[106] = parser; parser = Object.create(null); parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/30.0 Firefox/\\d+\\.\\d+"); parser[1] = "Firefox OS"; parser[2] = "1"; parser[3] = "4"; parser[4] = 0; -exports.os[104] = parser; +exports.os[107] = parser; parser = Object.create(null); parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/32.0 Firefox/\\d+\\.\\d+"); parser[1] = "Firefox OS"; parser[2] = "2"; parser[3] = "0"; parser[4] = 0; -exports.os[105] = parser; +exports.os[108] = parser; parser = Object.create(null); parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/34.0 Firefox/\\d+\\.\\d+"); parser[1] = "Firefox OS"; parser[2] = "2"; parser[3] = "1"; parser[4] = 0; -exports.os[106] = parser; +exports.os[109] = parser; parser = Object.create(null); parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Firefox/\\d+\\.\\d+"); parser[1] = "Firefox OS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[107] = parser; +exports.os[110] = parser; parser = Object.create(null); parser[0] = new RegExp("(BREW)[ /](\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[108] = parser; +exports.os[111] = parser; parser = Object.create(null); parser[0] = new RegExp("(BREW);"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[109] = parser; +exports.os[112] = parser; parser = Object.create(null); parser[0] = new RegExp("(Brew MP|BMP)[ /](\\d+)\\.(\\d+)\\.(\\d+)"); parser[1] = "Brew MP"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[110] = parser; +exports.os[113] = parser; parser = Object.create(null); parser[0] = new RegExp("BMP;"); parser[1] = "Brew MP"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[111] = parser; +exports.os[114] = parser; parser = Object.create(null); parser[0] = new RegExp("(GoogleTV)(?: (\\d+)\\.(\\d+)(?:\\.(\\d+))?|/[\\da-z]+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[112] = parser; +exports.os[115] = parser; parser = Object.create(null); parser[0] = new RegExp("(WebTV)/(\\d+).(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[113] = parser; +exports.os[116] = parser; parser = Object.create(null); parser[0] = new RegExp("(CrKey)(?:[/](\\d+)\\.(\\d+)(?:\\.(\\d+))?)?"); parser[1] = "Chromecast"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[114] = parser; +exports.os[117] = parser; parser = Object.create(null); parser[0] = new RegExp("(hpw|web)OS/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = "webOS"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[115] = parser; +exports.os[118] = parser; parser = Object.create(null); parser[0] = new RegExp("(VRE);"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[116] = parser; +exports.os[119] = parser; parser = Object.create(null); parser[0] = new RegExp("(Fedora|Red Hat|PCLinuxOS|Puppy|Ubuntu|Kindle|Bada|Lubuntu|BackTrack|Slackware|(?:Free|Open|Net|\\b)BSD)[/ ](\\d+)\\.(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[117] = parser; +exports.os[120] = parser; parser = Object.create(null); parser[0] = new RegExp("(Linux)[ /](\\d+)\\.(\\d+)(?:\\.(\\d+))?.*gentoo"); parser[1] = "Gentoo"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[118] = parser; +exports.os[121] = parser; parser = Object.create(null); parser[0] = new RegExp("\\((Bada);"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[119] = parser; +exports.os[122] = parser; parser = Object.create(null); parser[0] = new RegExp("(Windows|Android|WeTab|Maemo|Web0S)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[120] = parser; +exports.os[123] = parser; parser = Object.create(null); parser[0] = new RegExp("(Ubuntu|Kubuntu|Arch Linux|CentOS|Slackware|Gentoo|openSUSE|SUSE|Red Hat|Fedora|PCLinuxOS|Mageia|(?:Free|Open|Net|\\b)BSD)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[121] = parser; +exports.os[124] = parser; parser = Object.create(null); parser[0] = new RegExp("(Linux)(?:[ /](\\d+)\\.(\\d+)(?:\\.(\\d+))?)?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[122] = parser; +exports.os[125] = parser; parser = Object.create(null); parser[0] = new RegExp("SunOS"); parser[1] = "Solaris"; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[123] = parser; +exports.os[126] = parser; parser = Object.create(null); parser[0] = new RegExp("^(Roku)/DVP-(\\d+)\\.(\\d+)"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[124] = parser; +exports.os[127] = parser; parser = Object.create(null); parser[0] = new RegExp("(iOS) (\\d+)\\.(\\d+)(?:\\.(\\d+))?"); parser[1] = 0; parser[2] = 0; parser[3] = 0; parser[4] = 0; -exports.os[125] = parser; +exports.os[128] = parser; -exports.os.length = 126; \ No newline at end of file +exports.os.length = 129; \ No newline at end of file diff --git a/package.json b/package.json index d67b9d2..984b897 100644 --- a/package.json +++ b/package.json @@ -36,13 +36,12 @@ "url": "http://github.com/3rd-Eden/useragent.git" }, "devDependencies": { - "should": "*", - "mocha": "*", "long-stack-traces": "0.1.x", - "yamlparser": "0.0.x", + "mocha": "*", "request": "2.9.x", "semver": "1.0.x", - "pre-commit": "0.0.x" + "should": "*", + "yamlparser": "0.0.x" }, "pre-commit": [ "test",