%{
/*
 * Copyright 2016 Google Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "hostnamelookup.h"

%}
struct hostname_strings {
  char *name;
  char *genus;
  char *species;
};
%%
01A| "Nest Thermostat", "Nest Thermostat v1"
02A| "Nest Thermostat", "Nest Thermostat v2"
09A| "Nest Thermostat", "Nest Thermostat v3"
500-cc04b40| "Select Comfort SleepIQ", "SleepIQ"
EX2700%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX2700"
EX3700%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX3700"
EX3800%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX3800"
EX3920%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX3920"
EX6100%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX6100"
EX6120%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX6120"
EX6150%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX6150"
EX6200%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX6200"
EX6920%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX6920"
EX7000%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX7000"
EX7300%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX7300"
GFPB100%1,3,6,12,15,28,42,66,125| "Google Fiber Phone Box", "GFPB100"
HarmonyHub%1,3,6,12,15,28,42| "Logitech Harmony Hub", "Harmony Hub"
Hopper_br%1,3,6,12,15,28,42| "DISH Networks Hopper", "Hopper"
Hopper_br0%1,3,6,12,15,28,42| "DISH Networks Hopper", "Hopper"
Hopper_ETH0%1,3,6,12,15,28,42| "DISH Networks Hopper", "Hopper"
Hopper_ETH1%1,3,6,12,15,28,42| "DISH Networks Hopper", "Hopper"
Hopper_MoCA%1,3,6,12,15,28,42| "DISH Networks Hopper", "Hopper"
Hopper_WiFi%1,3,6,12,15,28,42| "DISH Networks Hopper", "Hopper"
HT701%1,3,6,12,15,28,43,125| "Grandstream Voice Adaptor", "HandyTone 701"
HT802%1,3,6,12,15,28,43,125| "Grandstream Voice Adaptor", "HandyTone 802"
Joey_AP%1,3,6,12,15,28,42| "DISH Networks Joey", "Joey"
Joey_ETH0%1,3,6,12,15,28,42| "DISH Networks Joey", "Joey"
Joey_MoCA%1,3,6,12,15,28,42| "DISH Networks Joey", "Joey"
Joey_WiFi%1,3,6,12,15,28,42| "DISH Networks Joey", "Joey"
LGSmartTV%252,3,42,15,6,1,12| "LG Smart TV", "LG Smart TV"
LGwebOSTV%252,3,42,15,6,1,12| "LG Smart TV", "LG Smart TV"
Lutron-| "Lutron Caséta", "Lutron Caséta"
MyBookLive%1,28,2,3,15,6,119,12,44,47,26,121| "WD My Book Live", "My Book Live"
NP-20| "Roku", "Netflix Player"
NP-C0| "Roku", "Roku HD 1100"
NP-D0| "Roku", "Roku HD-XR 1101"
NP-G0| "Roku", "Roku SD 1050"
NP-H0| "Roku", "Roku 1 HD 2000"
NP-J0| "Roku", "Roku 1 XD 2050"
NP-K0| "Roku", "Roku 1 XD|S 2100"
NP-N0| "Roku", "Roku 1 XD"
NP-11| "Roku", "Roku 2 HD 3000"
NP-12| "Roku", "Roku 2 XD 3050"
NP-13| "Roku", "Roku 2 XS 3100"
NP-16| "Roku", "Roku LT 2400"
NP-18| "Roku", "Roku HD 2500"
NP-19| "Roku", "Roku LT 2450"
NP-1E| "Roku", "Roku Streaming stick MHL 3400X"
NP-1G| "Roku", "Roku 3 4200X"
NP-1P| "Roku", "Roku LT 2700"
NP-1X| "Roku", "Roku 1 2710"
NP-2L| "Roku", "Roku Streaming Stick 3500"
NP-2N| "Roku TV", "Roku TV"
NP-41| "Roku", "Roku 3 4200"
NP-4A| "Roku", "Roku 2 4210X"
NP-4E| "Roku", "Roku 3 4230RW"
NP-5F| "Roku", "Roku 2 4210X"
NP-5G| "Roku", "Roku 3 4230X"
NP-5S| "Roku", "Roku Streaming Stick 3600"
NP-5Y| "Roku", "Roku 2 4210"
NP-63| "Roku", "Roku 3 4230"
NP-YW| "Roku TV", "Roku TV"
NP-YY| "Roku", "Roku 4 4400"
OBi200%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi200"
OBi202%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi202"
OBi300%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi300"
OBi302%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi302"
OBi1022%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi1022"
OBi1032%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi1032"
OBi1062%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi1062"
Philips-hue%1,3,28,6| "Philips Hue", "Hue Home Automation Bridge"
R7000%1,3,6,12,15,28,33,44,121,249| "NetGEAR Wifi AP", "Nighthawk R7000"
R7000%1,3,6,12,15,28,33,44,121,249,212| "NetGEAR Wifi AP", "Nighthawk R7000"
R8000%1,3,6,12,15,28,33,44,121,249| "NetGEAR Wifi AP", "Nighthawk R8000"
R8000%1,3,6,12,15,28,33,44,121,249,212| "NetGEAR Wifi AP", "Nighthawk R8000"
Slingbox-350%1,3,6,12,15,28,40,41,42,119| "Slingbox", "Slingbox 350"
Slingbox350%1,3,6,12,15,28,40,41,42,119| "Slingbox", "Slingbox 350"
Slingbox-500%1,3,6,12,15,28,42| "Slingbox", "Slingbox 500"
Slingbox500%1,3,6,12,15,28,42| "Slingbox", "Slingbox 500"
Slingbox-M1%1,3,6,12,15,28,40,41,42,119| "Slingbox", "Slingbox M1"
SmartThings%1,3,6,12| "Samsung SmartThings", "SmartThings Hub"
SPA112%1,3,6,7,12,15,28,42,43,44,66,67,125,128,150,159,160| "Cisco VoIP Adaptor", "SPA112"
SPA-112%1,3,6,7,12,15,28,42,43,44,66,67,125,128,150,159,160| "Cisco VoIP Adaptor", "SPA112"
SPA122%1,3,6,7,12,15,28,42,43,44,66,67,125,128,150,159,160| "Cisco VoIP Adaptor", "SPA122"
SPA232D%1,3,6,7,12,15,28,42,43,44,66,67,125,128,150,159,160| "Cisco VoIP Adaptor", "SPA232D"
SPA504G%1,3,6,7,12,15,28,42,43,44,66,67,125,128,150,159,160| "Cisco VoIP Adaptor", "SPA504G"
SPA525G2%1,3,6,7,12,15,28,42,43,44,66,67,125,128,150,159,160| "Cisco VoIP Adaptor", "SPA525G2"
steamlink%3,1,252,42,15,6,12| "Steam Link", "Steam Link"
TIVO-000| "TiVo", "Philips HDRx12"
TIVO-001| "DirecTV TiVo", "Philips DSR600x"
TIVO-002| "TiVo", "Philips HDRx12"
TIVO-010| "TiVo", "Sony SVR-2000"
TIVO-011| "DirecTV TiVo", "Sony SAT T-60"
TIVO-031| "DirecTV TiVo", "Hughes GXCEBOTx"
TIVO-101| "DirecTV TiVo", "Philips DSR7000x"
TIVO-110| "TiVo", "Sony SVR-3000"
TIVO-121| "DirecTV TiVo", "RCA DVR39"
TIVO-130| "AT&T TiVo", "AT&T Broadband TiVo Series 2"
TIVO-140| "TiVo", "TiVo Series 2"
TIVO-151| "DirecTV TiVo", "Hughes HDVR2"
TIVO-230| "AT&T TiVo", "AT&T Broadband TiVo Series 2"
TIVO-240| "TiVo", "TiVo Series 2"
TIVO-264| "TiVo DVD", "Toshiba SD-H400"
TIVO-275| "TiVo DVD", "Pioneer 810H/57H"
TIVO-301| "DirecTV TiVo", "Philips DSR70x"
TIVO-321| "DirecTV TiVo", "RCA DVR40/80"
TIVO-351| "DirecTV TiVo", "Hughes SD-DVRxx"
TIVO-357| "DirecTV TiVo", "Hughes HR10-250"
TIVO-381| "DirecTV TiVo", "Samsung SIR-S4xxx"
TIVO-521| "DirecTV TiVo", "DirecTV R10"
TIVO-540| "TiVo", "TiVo Series 2 NightLight"
TIVO-565| "TiVo DVD", "Toshiba RS-TX20/60"
TIVO-590| "TiVo DVD", "Humax T800/2500"
TIVO-595| "TiVo DVD", "Humax DRT400/800"
TIVO-627| "DirecTV TiVo", "DirecTV THR22"
TIVO-648| "TiVo", "TiVo Series 3"
TIVO-649| "TiVo", "TiVo Series 2 Dual Tuner"
TIVO-652| "TiVo", "TiVo Series 3 HD"
TIVO-658| "TiVo", "TiVo Series 3 HD XL"
TIVO-746| "TiVo", "TiVo Premiere Series 4"
TIVO-748| "TiVo", "TiVo Premiere XL Series 4"
TIVO-750| "TiVo", "TiVo Premiere 4 Series 4"
TIVO-758| "TiVo", "TiVo Premiere Elite Series 4"
TIVO-840| "TiVo", "TiVo Roamio Pro"
TIVO-846| "TiVo", "TiVo Roamio"
TIVO-848| "TiVo", "TiVo Roamio Plus"
TIVO-849| "TiVo", "TiVo BOLT"
TIVO-A92| "TiVo", "TiVo Mini"
TIVO-A93| "TiVo", "TiVo Mini"
TIVO-A94| "TiVo", "TiVo Stream"
VMB3010%1,3,6,12,15,28,33,44,121,249| "NetGEAR Arlo Camera", "VMB3010"
VMB4000%1,3,6,12,15,28,33,44,121,249| "NetGEAR Arlo Camera", "VMB4000"
XL824-| "Trane Thermostat", "XL824"
XL850-| "Trane Thermostat", "XL850"
%%
