- family_replacement: $1 regex: (GeoEvent Server) (\d+)(?:\.(\d+)(?:\.(\d+)|)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: '(ArcGIS Pro)(?: (\d+)\.(\d+)\.([^ ]+)|)' v1_replacement: $2 v2_replacement: $3 - family_replacement: ArcMap regex: ArcGIS Client Using WinInet v1_replacement: $2 v2_replacement: $3 - family_replacement: Operations Dashboard for ArcGIS regex: (OperationsDashboard)-(?:Windows)-(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: ArcGIS Earth regex: (arcgisearth)/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: ArcGIS Earth regex: com.esri.(earth).phone/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Explorer for ArcGIS regex: (arcgis-explorer)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Collector for ArcGIS regex: arcgis-(collector|aurora)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Workforce for ArcGIS regex: (arcgis-workforce)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 for ArcGIS regex: (Collector|Explorer|Workforce)-(?:Android|iOS)-(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 for ArcGIS regex: (Explorer|Collector)/(\d+) CFNetwork v1_replacement: $2 v2_replacement: $3 - family_replacement: ArcGIS Runtime SDK for $1 regex: ArcGISRuntime-(Android|iOS|NET|Qt)/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: ArcGIS Runtime SDK for $1 regex: ArcGIS\.?(iOS|Android|NET|Qt)(?:-|\.)(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: ArcGIS Runtime SDK for $1 regex: ArcGIS\.Runtime\.(Qt)\.(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(Luminary)[Stage]+/(\d+) CFNetwork v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (ESPN)[%20| ]+Radio/(\d+)\.(\d+)\.(\d+) CFNetwork v1_replacement: $2 v2_replacement: $3 - family_replacement: AntennaPod regex: (Antenna)/(\d+) CFNetwork v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (TopPodcasts)Pro/(\d+) CFNetwork v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (MusicDownloader)Lite/(\d+)\.(\d+)\.(\d+) CFNetwork v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(.{0,200})-iPad\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(.{0,200})-iPhone/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(.{0,200})/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(Luminary)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: ESPN regex: (espn\.go) v1_replacement: $2 v2_replacement: $3 - family_replacement: ESPN regex: (espnradio\.com) v1_replacement: $2 v2_replacement: $3 - family_replacement: ESPN regex: ESPN APP$ v1_replacement: $2 v2_replacement: $3 - family_replacement: AudioBoom regex: (audioboom\.com) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ' (Rivo) RHYTHM' v1_replacement: $2 v2_replacement: $3 - family_replacement: CFNetwork regex: (CFNetwork)(?:/(\d+)\.(\d+)(?:\.(\d+)|)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: PingdomBot regex: (Pingdom\.com_bot_version_)(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: PingdomBot regex: (PingdomTMS)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: WebPageTest.org bot regex: ' (PTST)/(\d+)(?:\.(\d+)|)$' v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: X11; (Datanyze); Linux v1_replacement: $2 v2_replacement: $3 - family_replacement: NewRelicPingerBot regex: (NewRelicPinger)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Tableau regex: (Tableau)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Adobe CreativeCloud regex: AppleWebKit/\d{1,10}\.\d{1,10}.{0,200} Safari.{0,200} (CreativeCloud)/(\d+)\.(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Salesforce)(?:.)\/(\d+)\.(\d?) v1_replacement: $2 v2_replacement: $3 - family_replacement: StatusCakeBot regex: (\(StatusCake\)) v1_replacement: $2 v2_replacement: $3 - family_replacement: FacebookBot regex: (facebookexternalhit)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: GooglePlusBot regex: Google.{0,50}/\+/web/snippet v1_replacement: $2 v2_replacement: $3 - family_replacement: GmailImageProxy regex: via ggpht\.com GoogleImageProxy v1_replacement: $2 v2_replacement: $3 - family_replacement: YahooMailProxy regex: YahooMailProxy; https://help\.yahoo\.com/kb/yahoo-mail-proxy-SLN28749\.html v1_replacement: $2 v2_replacement: $3 - family_replacement: Twitterbot regex: (Twitterbot)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: /((?:Ant-|)Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \-](\d+)(?:\.(\d+)|)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: \b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|OgScrper|Pandora|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: MSIECrawler regex: (MSIE) (\d+)\.(\d+)([a-z]\d|[a-z]|);.{0,200} MSIECrawler v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (DAVdroid)/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Google-HTTP-Java-Client|Apache-HttpClient|PostmanRuntime|Go-http-client|scalaj-http|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp|aihttp|reqwest|axios|unirest-(?:java|python|ruby|nodejs|php|net))(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Pinterestbot regex: (Pinterest(?:bot|))/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)[;\s(]+\+https://www.pinterest.com/bot.html v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: '(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat Webbot|BotName\/\$BotVersion|123metaspider-Bot|1470\.net crawler|50\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\b\w{0,30}favicon\w{0,30}\b|\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?: bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\(S\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|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]{1,30}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 .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PHPCrawl|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\.ru|Tiny Tiny RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\.almaden\.ibm\.com|Xenu(?:.s|) Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\.ze\.bz|ZooShot|ZyBorg|ArcGIS Hub Indexer)(?:[ /]v?(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|)' v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: \b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|java|nodejs|ruby2?|dotnet-(?:\d{1,2}|core)))|s3fs)/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (FME)\/(\d+\.\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (QGIS)\/(\d)\.?0?(\d{1,2})\.?0?(\d{1,2}) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (JOSM)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Tygron Platform) \((\d+)\.(\d+)\.(\d+(?:\.\d+| RC \d+\.\d+)) v1_replacement: $2 v2_replacement: $3 - family_replacement: Facebook Messenger regex: \[(FBAN/MessengerForiOS|FB_IAB/MESSENGER);FBAV/(\d+)(?:\.(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Facebook regex: \[FB.{0,300};(FBAV)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Facebook regex: \[FB.{0,300}; v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^.{0,200}?(?:\/[A-Za-z0-9\.]{0,50}|) {0,2}([A-Za-z0-9 \-_\!\[\]:]{0,50}(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]{0,50}))[/ ](\d+)(?:\.(\d+)(?:\.(\d+)|)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^.{0,200}?((?:[A-Za-z][A-Za-z0-9 -]{0,50}|)[^C][^Uu][Bb]ot)\b(?:(?:[ /]| v)(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: '^.{0,200}?((?:[A-z0-9]{1,50}|[A-z\-]{1,50} ?|)(?: the |)(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]{0,50})(?:(?:[ /]| v)(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)' v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (HbbTV)/(\d+)\.(\d+)\.(\d+) \( v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Chimera|SeaMonkey|Camino|Waterfox)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Sailfish Browser regex: (SailfishBrowser)/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: \[(Pinterest)/[^\]]{1,50}\] v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: '(Pinterest)(?: for Android(?: Tablet|)|)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)' v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: Mozilla.{1,200}Mobile.{1,100}(Instagram).(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: Mozilla.{1,200}Mobile.{1,100}(Flipboard).(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: Mozilla.{1,200}Mobile.{1,100}(Flipboard-Briefing).(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: Mozilla.{1,200}Mobile.{1,100}(Onefootball)\/Android.(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Snapchat)\/(\d+)\.(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Twitter regex: (Twitter for (?:iPhone|iPad)|TwitterAndroid)(?:\/(\d+)\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Spider regex: Mozilla.{1,100}Mobile.{1,100}AspiegelBot v1_replacement: $2 v2_replacement: $3 - family_replacement: Spider regex: AspiegelBot v1_replacement: $2 v2_replacement: $3 - family_replacement: Basilisk regex: (Firefox)/(\d+)\.(\d+) Basilisk/(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Pale Moon regex: (PaleMoon)/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Firefox Mobile regex: (Fennec)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*) v1_replacement: $2 v2_replacement: $3 - family_replacement: Firefox Mobile regex: (Fennec)/(\d+)\.(\d+)(pre) v1_replacement: $2 v2_replacement: $3 - family_replacement: Firefox Mobile regex: (Fennec)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Firefox Mobile regex: (?:Mobile|Tablet);.{0,200}(Firefox)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Firefox ($1) regex: (Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)\.(\d+(?:pre|)) v1_replacement: $2 v2_replacement: $3 - family_replacement: Firefox Alpha regex: (Firefox)/(\d+)\.(\d+)(a\d+[a-z]*) v1_replacement: $2 v2_replacement: $3 - family_replacement: Firefox Beta regex: (Firefox)/(\d+)\.(\d+)(b\d+[a-z]*) v1_replacement: $2 v2_replacement: $3 - family_replacement: Firefox Alpha regex: (Firefox)-(?:\d+\.\d+|)/(\d+)\.(\d+)(a\d+[a-z]*) v1_replacement: $2 v2_replacement: $3 - family_replacement: Firefox Beta regex: (Firefox)-(?:\d+\.\d+|)/(\d+)\.(\d+)(b\d+[a-z]*) v1_replacement: $2 v2_replacement: $3 - family_replacement: Firefox ($1) regex: (Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)([ab]\d+[a-z]*|) v1_replacement: $2 v2_replacement: $3 - family_replacement: MicroB regex: (Firefox).{0,200}Tablet browser (\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (MozillaDeveloperPreview)/(\d+)\.(\d+)([ab]\d+[a-z]*|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Firefox iOS regex: (FxiOS)/(\d+)\.(\d+)(\.(\d+)|)(\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Flock)/(\d+)\.(\d+)(b\d+?) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (RockMelt)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Netscape regex: (Navigator)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Netscape regex: (Navigator)/(\d+)\.(\d+)([ab]\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Netscape regex: (Netscape6)/(\d+)\.(\d+)\.?([ab]?\d+|) v1_replacement: $2 v2_replacement: $3 - family_replacement: My Internet Browser regex: (MyIBrow)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: UC Browser regex: (UC? ?Browser|UCWEB|U3)[ /]?(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Opera Tablet).{0,200}Version/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Opera Mini)(?:/att|)/?(\d+|)(?:\.(\d+)|)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Opera Mobile regex: (Opera)/.{1,100}Opera Mobi.{1,100}Version/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Opera Mobile regex: (Opera)/(\d+)\.(\d+).{1,100}Opera Mobi v1_replacement: $2 v2_replacement: $3 - family_replacement: Opera Mobile regex: Opera Mobi.{1,100}(Opera)(?:/|\s+)(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Opera Mobile regex: Opera Mobi v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Opera)/9.80.{0,200}Version/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Opera Mobile regex: (?:Mobile Safari).{1,300}(OPR)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Opera regex: (?:Chrome).{1,300}(OPR)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Opera Coast regex: (Coast)/(\d+).(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Opera Mini regex: (OPiOS)/(\d+).(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Opera Neon regex: Chrome/.{1,200}( MMS)/(\d+).(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: webOS Browser regex: (hpw|web)OS/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: LuaKit regex: (luakit) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Snowshoe)/(\d+)\.(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: Gecko/\d+ (Lightning)/(\d+)\.(\d+)\.?((?:[ab]?\d+[a-z]*)|(?:\d*)) v1_replacement: $2 v2_replacement: $3 - family_replacement: Swiftfox regex: (Firefox)/(\d+)\.(\d+)\.(\d+(?:pre|)) \(Swiftfox\) v1_replacement: $2 v2_replacement: $3 - family_replacement: Swiftfox regex: (Firefox)/(\d+)\.(\d+)([ab]\d+[a-z]*|) \(Swiftfox\) v1_replacement: $2 v2_replacement: $3 - family_replacement: Rekonq regex: (rekonq)/(\d+)\.(\d+)(?:\.(\d+)|) Safari v1_replacement: $2 v2_replacement: $3 - family_replacement: Rekonq regex: rekonq v1_replacement: $2 v2_replacement: $3 - family_replacement: Conkeror regex: (conkeror|Conkeror)/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Konqueror regex: (konqueror)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (WeTab)-Browser v1_replacement: $2 v2_replacement: $3 - family_replacement: Comodo Dragon regex: (Comodo_Dragon)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Symphony) (\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: NetFront NX regex: PLAYSTATION 3.{1,200}WebKit v1_replacement: $2 v2_replacement: $3 - family_replacement: NetFront regex: PLAYSTATION 3 v1_replacement: $2 v2_replacement: $3 - family_replacement: NetFront regex: (PlayStation Portable) v1_replacement: $2 v2_replacement: $3 - family_replacement: NetFront NX regex: (PlayStation Vita) v1_replacement: $2 v2_replacement: $3 - family_replacement: NetFront NX regex: AppleWebKit.{1,200} (NX)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: NetFront NX regex: (Nintendo 3DS) v1_replacement: $2 v2_replacement: $3 - family_replacement: Amazon Silk regex: (Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Puffin)/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Edge Mobile regex: Windows Phone .{0,200}(Edge)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Edge Mobile regex: (EdgiOS|EdgA)/(\d+)\.(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Samsung Internet regex: (SamsungBrowser)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: "Seznam prohl\xED\u017Ee\u010D" regex: (SznProhlizec)/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Coc Coc regex: (coc_coc_browser)/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Baidu Browser regex: (baidubrowser)[/\s](\d+)(?:\.(\d+)|)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Baidu Explorer regex: (FlyFlow)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Maxthon regex: (MxBrowser)/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Crosswalk)/(\d+)\.(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: LINE regex: (Line)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: MiuiBrowser regex: (MiuiBrowser)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Mint Browser regex: (Mint Browser)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: TopBuzz regex: (TopBuzz)/(\d+).(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Google regex: Mozilla.{1,200}Android.{1,200}(GSA)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: QQ Browser Mini regex: (MQQBrowser/Mini)(?:(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: QQ Browser Mobile regex: (MQQBrowser)(?:/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: QQ Browser regex: (QQBrowser)(?:/(\d+)(?:\.(\d+)\.(\d+)(?:\.(\d+)|)|)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: DuckDuckGo Mobile regex: Mobile.{0,200}(DuckDuckGo)/(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Tenta Browser regex: (Tenta/)(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Chrome Mobile WebView regex: Version/.{1,300}(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Chrome Mobile WebView regex: ; wv\).{1,300}(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Chrome Mobile regex: (CrMo)/(\d+)\.(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Chrome Mobile iOS regex: (CriOS)/(\d+)\.(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Chrome Mobile regex: (Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile(?:[ /]|$) v1_replacement: $2 v2_replacement: $3 - family_replacement: Chrome Mobile regex: ' Mobile .{1,300}(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)' v1_replacement: $2 v2_replacement: $3 - family_replacement: Chrome Frame regex: (chromeframe)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Tizen Browser regex: (SLP Browser)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Sogou Explorer regex: (SE 2\.X) MetaSr (\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: RackspaceBot regex: (Rackspace Monitoring)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (PRTG Network Monitor) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (PyAMF)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Yandex Browser regex: (YaBrowser)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Mail.ru Chromium Browser regex: (Chrome)/(\d+)\.(\d+)\.(\d+).{0,100} MRCHROME v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (AOL) (\d+)\.(\d+); AOLBuild (\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (PodCruncher|Downcast)[ /]?(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ' (BoxNotes)/(\d+)\.(\d+)\.(\d+)' v1_replacement: $2 v2_replacement: $3 - family_replacement: Whale regex: (Whale)/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile(?:[ /]|$) v1_replacement: $2 v2_replacement: $3 - family_replacement: Whale regex: (Whale)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (1Password)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Ghost)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: PAN (GlobalProtect)/(\d+)\.(\d+)\.(\d+) .{1,100} \(X11; Linux x86_64\) v1_replacement: $2 v2_replacement: $3 - family_replacement: Slack Desktop Client regex: (Slack_SSB)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: HipChat Desktop Client regex: (HipChat)/?(\d+|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: \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|OktaMobile)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Outlook regex: Microsoft Office Outlook 12\.\d+\.\d+|MSOffice 12 v1_replacement: '2007' v2_replacement: $3 - family_replacement: Outlook regex: Microsoft Outlook 14\.\d+\.\d+|MSOffice 14 v1_replacement: '2010' v2_replacement: $3 - family_replacement: Outlook regex: Microsoft Outlook 15\.\d+\.\d+ v1_replacement: '2013' v2_replacement: $3 - family_replacement: Outlook regex: Microsoft Outlook (?:Mail )?16\.\d+\.\d+|MSOffice 16 v1_replacement: '2016' v2_replacement: $3 - family_replacement: $1 regex: Microsoft Office (Word) 2014 v1_replacement: $2 v2_replacement: $3 - family_replacement: Windows Live Mail regex: Outlook-Express\/7\.0 v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Airmail) (\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Thunderbird regex: (Thunderbird)/(\d+)\.(\d+)(?:\.(\d+(?:pre|))|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Postbox regex: (Postbox)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Barca regex: (Barca(?:Pro)?)/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Lotus Notes regex: (Lotus-Notes)/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Superhuman regex: Superhuman v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Vivaldi)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Edge regex: (Edge?)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Brave regex: (brave)/(\d+)\.(\d+)\.(\d+) Chrome v1_replacement: $2 v2_replacement: $3 - family_replacement: Iron regex: (Chrome)/(\d+)\.(\d+)\.(\d+)[\d.]{0,100} Iron[^/] v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: '\b(Dolphin)(?: |HDCN/|/INT\-)(\d+)\.(\d+)(?:\.(\d+)|)' v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (HeadlessChrome)(?:/(\d+)\.(\d+)\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Evolution)/(\d+)\.(\d+)\.(\d+\.\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (RCM CardDAV plugin)/(\d+)\.(\d+)\.(\d+(?:-dev|)) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (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+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Chromium|Chrome)/(\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: IE Mobile regex: (IEMobile)[ /](\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (BacaBerita App)\/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(bPod|Pocket Casts|Player FM)$ v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(AlexaMediaPlayer|VLC)/(\d+)\.(\d+)\.([^.\s]+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(AntennaPod|WMPlayer|Zune|Podkicker|Radio|ExoPlayerDemo|Overcast|PocketTunes|NSPlayer|okhttp|DoggCatcher|QuickNews|QuickTime|Peapod|Podcasts|GoldenPod|VLC|Spotify|Miro|MediaGo|Juice|iPodder|gPodder|Banshee)/(\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(Peapod|Liferea)/([^.\s]+)\.([^.\s]+|)\.?([^.\s]+|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(bPod|Player FM) BMID/(\S+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: '^(Podcast ?Addict)/v(\d+) ' v1_replacement: $2 v2_replacement: $3 - family_replacement: PodcastAddict regex: '^(Podcast ?Addict) ' v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Replay) AV v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (VOX) Music Player v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (CITA) RSS Aggregator/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Pocket Casts)$ v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Player FM)$ v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (LG Player|Doppler|FancyMusic|MediaMonkey|Clementine) (\d+)\.(\d+)\.?([^.\s]+|)\.?([^.\s]+|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (philpodder)/(\d+)\.(\d+)\.?([^.\s]+|)\.?([^.\s]+|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Player FM|Pocket Casts|DoggCatcher|Spotify|MediaMonkey|MediaGo|BashPodder) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (QuickTime)\.(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Kinoma)(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: FancyMusic regex: (Fancy) Cloud Music (\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: ESPN regex: EspnDownloadManager v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: '(ESPN) Radio (\d+)\.(\d+)(?:\.(\d+)|) ?(?:rv:(\d+)|) ' v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (podracer|jPodder) v ?(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (ZDM)/(\d+)\.(\d+)[; ]? v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Zune|BeyondPod) (\d+)(?:\.(\d+)|)[\);] v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (WMPlayer)/(\d+)\.(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: WMPlayer regex: ^(Lavf) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(RSSRadio)[ /]?(\d+|) v1_replacement: $2 v2_replacement: $3 - family_replacement: RSSRadio regex: (RSS_Radio) (\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Podkicker regex: (Podkicker) \S+/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(HTC) Streaming Player \S+ / \S+ / \S+ / (\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(Stitcher)/iOS v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(Stitcher)/Android v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(VLC) .{0,200}version (\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ' (VLC) for' v1_replacement: $2 v2_replacement: $3 - family_replacement: VLC regex: (vlc)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(foobar)\S{1,10}/(\d+)\.(\d+|)\.?([\da-z]+|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(Clementine)\S{1,10} (\d+)\.(\d+|)\.?(\d+|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Amarok regex: (amarok)/(\d+)\.(\d+|)\.?(\d+|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Custom)-Feed Reader v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (iCab|Lunascape|Opera|Android|Jasmine|Polaris|Microsoft SkyDriveSync|The Bat!) (\d+)(?:\.(\d+)|)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Kindle)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Android) Donut v1_replacement: '1' v2_replacement: '2' - family_replacement: $1 regex: (Android) Eclair v1_replacement: '2' v2_replacement: '1' - family_replacement: $1 regex: (Android) Froyo v1_replacement: '2' v2_replacement: '2' - family_replacement: $1 regex: (Android) Gingerbread v1_replacement: '2' v2_replacement: '3' - family_replacement: $1 regex: (Android) Honeycomb v1_replacement: '3' v2_replacement: $3 - family_replacement: IE Large Screen regex: (MSIE) (\d+)\.(\d+).{0,100}XBLWP7 v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Nextcloud) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (mirall)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Owncloud regex: (ownCloud-android)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Skype regex: (OC)/(\d+)\.(\d+)\.(\d+)\.(\d+) \(Skype for Business\) v1_replacement: $2 v2_replacement: $3 - family_replacement: OpenVAS Scanner regex: (OpenVAS)(?:-VT)?(?:[ \/](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (AnyConnect)\/(\d+)(?:\.(\d+)(?:\.(\d+)|)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Monitis regex: compatible; monitis v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Obigo)InternetBrowser v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Obigo)\-Browser v1_replacement: $2 v2_replacement: $3 - family_replacement: Obigo regex: (Obigo|OBIGO)[^\d]*(\d+)(?:.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Maxthon regex: (MAXTHON|Maxthon) (\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Maxthon|MyIE2|Uzbl|Shiira) v1_replacement: '0' v2_replacement: $3 - family_replacement: $1 regex: (BrowseX) \((\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: NCSA Mosaic regex: (NCSA_Mosaic)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Polaris regex: (POLARIS)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Polaris regex: (Embider)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Bon Echo regex: (BonEcho)/(\d+)\.(\d+)\.?([ab]?\d+|) v1_replacement: $2 v2_replacement: $3 - family_replacement: TopBuzz regex: (TopBuzz) com.alex.NewsMaster/(\d+).(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: TopBuzz regex: (TopBuzz) com.mobilesrepublic.newsrepublic/(\d+).(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: TopBuzz regex: (TopBuzz) com.topbuzz.videoen/(\d+).(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Google regex: (iPod|iPhone|iPad).{1,200}GSA/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|) Mobile v1_replacement: $2 v2_replacement: $3 - family_replacement: Mobile Safari regex: (iPod|iPhone|iPad).{1,200}Version/(\d+)\.(\d+)(?:\.(\d+)|).{1,200}[ +]Safari v1_replacement: $2 v2_replacement: $3 - family_replacement: Mobile Safari UI/WKWebView regex: (iPod|iPod touch|iPhone|iPad);.{0,30}CPU.{0,30}OS[ +](\d+)_(\d+)(?:_(\d+)|).{0,30} AppleNews\/\d+\.\d+(?:\.\d+|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Mobile Safari UI/WKWebView regex: (iPod|iPhone|iPad).{1,200}Version/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Mobile Safari regex: (iPod|iPod touch|iPhone|iPad).{0,200} Safari v1_replacement: $2 v2_replacement: $3 - family_replacement: Mobile Safari UI/WKWebView regex: (iPod|iPod touch|iPhone|iPad) v1_replacement: $2 v2_replacement: $3 - family_replacement: Apple $1 App regex: (Watch)(\d+),(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Outlook-iOS)/\d+\.\d+\.prod\.iphone \((\d+)\.(\d+)\.(\d+)\) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (AvantGo) (\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: ONE Browser regex: (OneBrowser)/(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Avant) v1_replacement: '1' v2_replacement: $3 - family_replacement: $1 regex: (QtCarBrowser) v1_replacement: '1' v2_replacement: $3 - family_replacement: iBrowser Mini regex: ^(iBrowser/Mini)(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(iBrowser|iRAPP)/(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Nokia Services (WAP) Browser regex: ^(Nokia) v1_replacement: $2 v2_replacement: $3 - family_replacement: Nokia Browser regex: (NokiaBrowser)/(\d+)\.(\d+).(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Nokia Browser regex: (NokiaBrowser)/(\d+)\.(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Nokia Browser regex: (NokiaBrowser)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Nokia Browser regex: (BrowserNG)/(\d+)\.(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Nokia Browser regex: (Series60)/5\.0 v1_replacement: '7' v2_replacement: '0' - family_replacement: Nokia OSS Browser regex: (Series60)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Ovi Browser regex: (S40OviBrowser)/(\d+)\.(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Nokia)[EN]?(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: BlackBerry WebKit regex: (PlayBook).{1,200}RIM Tablet OS (\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: BlackBerry WebKit regex: (Black[bB]erry|BB10).{1,200}Version/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: BlackBerry regex: (Black[bB]erry)\s?(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (OmniWeb)/v(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Palm Blazer regex: (Blazer)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Palm Pre regex: (Pre)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (ELinks)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (ELinks) \((\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Links) \((\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (QtWeb) Internet Browser/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (PhantomJS)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: WebKit Nightly regex: (AppleWebKit)/(\d+)(?:\.(\d+)|)\+ .{0,200} Safari v1_replacement: $2 v2_replacement: $3 - family_replacement: Safari regex: (Version)/(\d+)\.(\d+)(?:\.(\d+)|).{0,100}Safari/ v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Safari)/\d+ v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (OLPC)/Update(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (OLPC)/Update()\.(\d+) v1_replacement: '0' v2_replacement: $3 - family_replacement: $1 regex: (SEMC\-Browser)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Teleca Browser regex: (Teleca) v1_replacement: $2 v2_replacement: $3 - family_replacement: Phantom Browser regex: (Phantom)/V(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: IE regex: (Trident)/(7|8)\.(0) v1_replacement: '11' v2_replacement: $3 - family_replacement: IE regex: (Trident)/(6)\.(0) v1_replacement: '10' v2_replacement: $3 - family_replacement: IE regex: (Trident)/(5)\.(0) v1_replacement: '9' v2_replacement: $3 - family_replacement: IE regex: (Trident)/(4)\.(0) v1_replacement: '8' v2_replacement: $3 - family_replacement: $1 regex: (Espial)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: Apple Mail regex: (AppleWebKit)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Firefox)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Firefox)/(\d+)\.(\d+)(pre|[ab]\d+[a-z]*|) v1_replacement: $2 v2_replacement: $3 - family_replacement: IE regex: ([MS]?IE) (\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Python Requests regex: (python-requests)/(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: \b(Windows-Update-Agent|WindowsPowerShell|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|wget2|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got|CloudCockpitBackend|ReactorNetty|axios|Jersey|Vert.x-WebClient|Apache-CXF|Go-CF-client|go-resty|AHC)(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: CloudFoundry regex: ^(cf)\/(\d+)\.(\d+)\.(\S+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(sap-leonardo-iot-sdk-nodejs) \/ (\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(SAP NetWeaver Application Server) \(1.0;(\d{1})(\d{2})\) v1_replacement: $2 v2_replacement: $3 - family_replacement: HTTPClient regex: ^(\w+-HTTPClient)\/(\d+)\.(\d+)-(\S+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(go-cli)\s(\d+)\.(\d+).(\S+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(Java-EurekaClient|Java-EurekaClient-Replication|HTTPClient|lua-resty-http)\/v?(\d+)\.(\d+)\.?(\d*) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(ping-service|sap xsuaa|Node-oauth|Site24x7|SAP CPI|JAEGER_SECURITY) v1_replacement: $2 v2_replacement: $3 - family_replacement: Python aiohttp regex: (Python/3\.\d{1,3} aiohttp)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Java)[/ ]?\d+\.(\d+)\.(\d+)[_-]*([a-zA-Z0-9]+|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (minio-go)/v(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(ureq)[/ ](\d+)\.(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(http\.rb)/(\d+)\.(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(GuzzleHttp)/(\d+)\.(\d+).(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(grab)\b v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(Cyberduck)/(\d+)\.(\d+)\.(\d+)(?:\.\d+|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(S3 Browser) (\d+)[.-](\d+)[.-](\d+)(?:\s*https?://s3browser\.com|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (S3Gof3r) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: \b(ibm-cos-sdk-(?:core|java|js|python))/(\d+)\.(\d+)(?:\.(\d+)|) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(rusoto)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(rclone)/v(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: ^(Roku)/DVP-(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: Kurio App regex: (Kurio)\/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: '^(Box(?: Sync)?)/(\d+)\.(\d+)\.(\d+)' v1_replacement: $2 v2_replacement: $3 - family_replacement: ViaFree regex: ^(ViaFree|Viafree)-(?:tvOS-)?[A-Z]{2}/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Transmit)/(\d+)\.(\d+)\.(\d+) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: (Download Master) v1_replacement: $2 v2_replacement: $3 - family_replacement: $1 regex: \b(HTTrack) (\d+)\.(\d+)(?:[\.\-](\d+)|) v1_replacement: $2 v2_replacement: $3