mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
* [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12).
@ 2021-12-22 13:02 Christian Melki
  2021-12-22 13:02 ` [ptxdist] [PATCH] bridge-utils: Version bump. 1.6 -> 1.7.1 Christian Melki
                   ` (22 more replies)
  0 siblings, 23 replies; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Upgrade bash to 5.1.8 plus patches to patchlevel 12.
Roll up patches as in previous series.

Fixes CVE-2019-18276 and CVE-2019-9924 with a new baseline, without patches.
Fixes loads of bugs in bash.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 .../bash-4.3.30/0001-Bash-4.3-patch-31.patch  | 5467 -----------------
 .../bash-4.3.30/0002-Bash-4.3-patch-32.patch  | 5409 ----------------
 .../bash-4.3.30/0003-Bash-4.3-patch-33.patch  |  204 -
 patches/bash-4.3.30/series                    |    6 -
 .../bash-5.1.8/0001-Bash-5.1-patch-12.patch   |  262 +
 patches/bash-5.1.8/series                     |    1 +
 rules/bash.make                               |    4 +-
 7 files changed, 265 insertions(+), 11088 deletions(-)
 delete mode 100644 patches/bash-4.3.30/0001-Bash-4.3-patch-31.patch
 delete mode 100644 patches/bash-4.3.30/0002-Bash-4.3-patch-32.patch
 delete mode 100644 patches/bash-4.3.30/0003-Bash-4.3-patch-33.patch
 delete mode 100644 patches/bash-4.3.30/series
 create mode 100644 patches/bash-5.1.8/0001-Bash-5.1-patch-12.patch
 create mode 100644 patches/bash-5.1.8/series

diff --git a/patches/bash-4.3.30/0001-Bash-4.3-patch-31.patch b/patches/bash-4.3.30/0001-Bash-4.3-patch-31.patch
deleted file mode 100644
index d9a187dcb..000000000
--- a/patches/bash-4.3.30/0001-Bash-4.3-patch-31.patch
+++ /dev/null
@@ -1,5467 +0,0 @@
-From: Chet Ramey <chet.ramey@case.edu>
-Date: Thu, 15 Jan 2015 10:20:04 -0500
-Subject: [PATCH] Bash-4.3 patch 31
-
----
- patchlevel.h     |    2 +-
- subst.h          |    1 +
- variables.c      |   32 +-
- variables.c.orig | 5365 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 5397 insertions(+), 3 deletions(-)
- create mode 100644 variables.c.orig
-
-diff --git a/patchlevel.h b/patchlevel.h
-index e5dde5245275..0ad46aafbdd9 100644
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
- 
--#define PATCHLEVEL 30
-+#define PATCHLEVEL 31
- 
- #endif /* _PATCHLEVEL_H_ */
-diff --git a/subst.h b/subst.h
-index cedaf8b6b444..1c300ab96b04 100644
---- a/subst.h
-+++ b/subst.h
-@@ -47,6 +47,7 @@
- #define ASS_MKASSOC	0x0004
- #define ASS_MKGLOBAL	0x0008	/* force global assignment */
- #define ASS_NAMEREF	0x0010	/* assigning to nameref variable */
-+#define ASS_FROMREF	0x0020	/* assigning from value of nameref variable */
- 
- /* Flags for the string extraction functions. */
- #define SX_NOALLOC	0x0001	/* just skip; don't return substring */
-diff --git a/variables.c b/variables.c
-index 7c82710e0f0b..81b7877e32e8 100644
---- a/variables.c
-+++ b/variables.c
-@@ -2516,10 +2516,27 @@ bind_variable_internal (name, value, table, hflags, aflags)
-      HASH_TABLE *table;
-      int hflags, aflags;
- {
--  char *newval;
-+  char *newname, *newval;
-   SHELL_VAR *entry;
-+#if defined (ARRAY_VARS)
-+  arrayind_t ind;
-+  char *subp;
-+  int sublen;
-+#endif
- 
-+  newname = 0;
-+#if defined (ARRAY_VARS)
-+  if ((aflags & ASS_FROMREF) && (hflags & HASH_NOSRCH) == 0 && valid_array_reference (name))
-+    {
-+      newname = array_variable_name (name, &subp, &sublen);
-+      if (newname == 0)
-+	return (SHELL_VAR *)NULL;	/* XXX */
-+      entry = hash_lookup (newname, table);
-+    }
-+  else
-+#endif
-   entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
-+
-   /* Follow the nameref chain here if this is the global variables table */
-   if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
-     {
-@@ -2550,6 +2567,16 @@ bind_variable_internal (name, value, table, hflags, aflags)
-       var_setvalue (entry, make_variable_value (entry, value, 0));
-       }
-     }
-+#if defined (ARRAY_VARS)
-+  else if (entry == 0 && newname)
-+    {
-+      entry = make_new_array_variable (newname);	/* indexed array by default */
-+      if (entry == 0)
-+	return entry;
-+      ind = array_expand_index (name, subp, sublen);
-+      bind_array_element (entry, ind, value, aflags);
-+    }
-+#endif
-   else if (entry == 0)
-     {
-       entry = make_new_variable (name, table);
-@@ -2670,7 +2697,8 @@ bind_variable (name, value, flags)
- 			 normal. */
- 		      if (nameref_cell (nv) == 0)
- 			return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
--		      return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags));
-+		      /* XXX - bug here with ref=array[index] */
-+		      return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags|ASS_FROMREF));
- 		    }
- 		  else
- 		    v = nv;
-diff --git a/variables.c.orig b/variables.c.orig
-new file mode 100644
-index 000000000000..7c82710e0f0b
---- /dev/null
-+++ b/variables.c.orig
-@@ -0,0 +1,5365 @@
-+/* variables.c -- Functions for hacking shell variables. */
-+
-+/* Copyright (C) 1987-2013 Free Software Foundation, Inc.
-+
-+   This file is part of GNU Bash, the Bourne Again SHell.
-+
-+   Bash is free software: you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation, either version 3 of the License, or
-+   (at your option) any later version.
-+
-+   Bash is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU General Public License for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
-+*/
-+
-+#include "config.h"
-+
-+#include "bashtypes.h"
-+#include "posixstat.h"
-+#include "posixtime.h"
-+
-+#if defined (__QNX__)
-+#  if defined (__QNXNTO__)
-+#    include <sys/netmgr.h>
-+#  else
-+#    include <sys/vc.h>
-+#  endif /* !__QNXNTO__ */
-+#endif /* __QNX__ */
-+
-+#if defined (HAVE_UNISTD_H)
-+#  include <unistd.h>
-+#endif
-+
-+#include <stdio.h>
-+#include "chartypes.h"
-+#if defined (HAVE_PWD_H)
-+#  include <pwd.h>
-+#endif
-+#include "bashansi.h"
-+#include "bashintl.h"
-+
-+#define NEED_XTRACE_SET_DECL
-+
-+#include "shell.h"
-+#include "flags.h"
-+#include "execute_cmd.h"
-+#include "findcmd.h"
-+#include "mailcheck.h"
-+#include "input.h"
-+#include "hashcmd.h"
-+#include "pathexp.h"
-+#include "alias.h"
-+#include "jobs.h"
-+
-+#include "version.h"
-+
-+#include "builtins/getopt.h"
-+#include "builtins/common.h"
-+#include "builtins/builtext.h"
-+
-+#if defined (READLINE)
-+#  include "bashline.h"
-+#  include <readline/readline.h>
-+#else
-+#  include <tilde/tilde.h>
-+#endif
-+
-+#if defined (HISTORY)
-+#  include "bashhist.h"
-+#  include <readline/history.h>
-+#endif /* HISTORY */
-+
-+#if defined (PROGRAMMABLE_COMPLETION)
-+#  include "pcomplete.h"
-+#endif
-+
-+#define TEMPENV_HASH_BUCKETS	4	/* must be power of two */
-+
-+#define ifsname(s)	((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0')
-+
-+#define BASHFUNC_PREFIX		"BASH_FUNC_"
-+#define BASHFUNC_PREFLEN	10	/* == strlen(BASHFUNC_PREFIX */
-+#define BASHFUNC_SUFFIX		"%%"
-+#define BASHFUNC_SUFFLEN	2	/* == strlen(BASHFUNC_SUFFIX) */
-+
-+extern char **environ;
-+
-+/* Variables used here and defined in other files. */
-+extern int posixly_correct;
-+extern int line_number, line_number_base;
-+extern int subshell_environment, indirection_level, subshell_level;
-+extern int build_version, patch_level;
-+extern int expanding_redir;
-+extern int last_command_exit_value;
-+extern char *dist_version, *release_status;
-+extern char *shell_name;
-+extern char *primary_prompt, *secondary_prompt;
-+extern char *current_host_name;
-+extern sh_builtin_func_t *this_shell_builtin;
-+extern SHELL_VAR *this_shell_function;
-+extern char *the_printed_command_except_trap;
-+extern char *this_command_name;
-+extern char *command_execution_string;
-+extern time_t shell_start_time;
-+extern int assigning_in_environment;
-+extern int executing_builtin;
-+extern int funcnest_max;
-+
-+#if defined (READLINE)
-+extern int no_line_editing;
-+extern int perform_hostname_completion;
-+#endif
-+
-+/* The list of shell variables that the user has created at the global
-+   scope, or that came from the environment. */
-+VAR_CONTEXT *global_variables = (VAR_CONTEXT *)NULL;
-+
-+/* The current list of shell variables, including function scopes */
-+VAR_CONTEXT *shell_variables = (VAR_CONTEXT *)NULL;
-+
-+/* The list of shell functions that the user has created, or that came from
-+   the environment. */
-+HASH_TABLE *shell_functions = (HASH_TABLE *)NULL;
-+
-+#if defined (DEBUGGER)
-+/* The table of shell function definitions that the user defined or that
-+   came from the environment. */
-+HASH_TABLE *shell_function_defs = (HASH_TABLE *)NULL;
-+#endif
-+
-+/* The current variable context.  This is really a count of how deep into
-+   executing functions we are. */
-+int variable_context = 0;
-+
-+/* The set of shell assignments which are made only in the environment
-+   for a single command. */
-+HASH_TABLE *temporary_env = (HASH_TABLE *)NULL;
-+
-+/* Set to non-zero if an assignment error occurs while putting variables
-+   into the temporary environment. */
-+int tempenv_assign_error;
-+
-+/* Some funky variables which are known about specially.  Here is where
-+   "$*", "$1", and all the cruft is kept. */
-+char *dollar_vars[10];
-+WORD_LIST *rest_of_args = (WORD_LIST *)NULL;
-+
-+/* The value of $$. */
-+pid_t dollar_dollar_pid;
-+
-+/* Non-zero means that we have to remake EXPORT_ENV. */
-+int array_needs_making = 1;
-+
-+/* The number of times BASH has been executed.  This is set
-+   by initialize_variables (). */
-+int shell_level = 0;
-+
-+/* An array which is passed to commands as their environment.  It is
-+   manufactured from the union of the initial environment and the
-+   shell variables that are marked for export. */
-+char **export_env = (char **)NULL;
-+static int export_env_index;
-+static int export_env_size;
-+
-+#if defined (READLINE)
-+static int winsize_assignment;		/* currently assigning to LINES or COLUMNS */
-+#endif
-+
-+static HASH_TABLE *last_table_searched;	/* hash_lookup sets this */
-+
-+/* Some forward declarations. */
-+static void create_variable_tables __P((void));
-+
-+static void set_machine_vars __P((void));
-+static void set_home_var __P((void));
-+static void set_shell_var __P((void));
-+static char *get_bash_name __P((void));
-+static void initialize_shell_level __P((void));
-+static void uidset __P((void));
-+#if defined (ARRAY_VARS)
-+static void make_vers_array __P((void));
-+#endif
-+
-+static SHELL_VAR *null_assign __P((SHELL_VAR *, char *, arrayind_t, char *));
-+#if defined (ARRAY_VARS)
-+static SHELL_VAR *null_array_assign __P((SHELL_VAR *, char *, arrayind_t, char *));
-+#endif
-+static SHELL_VAR *get_self __P((SHELL_VAR *));
-+
-+#if defined (ARRAY_VARS)
-+static SHELL_VAR *init_dynamic_array_var __P((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int));
-+static SHELL_VAR *init_dynamic_assoc_var __P((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int));
-+#endif
-+
-+static SHELL_VAR *assign_seconds __P((SHELL_VAR *, char *, arrayind_t, char *));
-+static SHELL_VAR *get_seconds __P((SHELL_VAR *));
-+static SHELL_VAR *init_seconds_var __P((void));
-+
-+static int brand __P((void));
-+static void sbrand __P((unsigned long));		/* set bash random number generator. */
-+static void seedrand __P((void));			/* seed generator randomly */
-+static SHELL_VAR *assign_random __P((SHELL_VAR *, char *, arrayind_t, char *));
-+static SHELL_VAR *get_random __P((SHELL_VAR *));
-+
-+static SHELL_VAR *assign_lineno __P((SHELL_VAR *, char *, arrayind_t, char *));
-+static SHELL_VAR *get_lineno __P((SHELL_VAR *));
-+
-+static SHELL_VAR *assign_subshell __P((SHELL_VAR *, char *, arrayind_t, char *));
-+static SHELL_VAR *get_subshell __P((SHELL_VAR *));
-+
-+static SHELL_VAR *get_bashpid __P((SHELL_VAR *));
-+
-+#if defined (HISTORY)
-+static SHELL_VAR *get_histcmd __P((SHELL_VAR *));
-+#endif
-+
-+#if defined (READLINE)
-+static SHELL_VAR *get_comp_wordbreaks __P((SHELL_VAR *));
-+static SHELL_VAR *assign_comp_wordbreaks __P((SHELL_VAR *, char *, arrayind_t, char *));
-+#endif
-+
-+#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS)
-+static SHELL_VAR *assign_dirstack __P((SHELL_VAR *, char *, arrayind_t, char *));
-+static SHELL_VAR *get_dirstack __P((SHELL_VAR *));
-+#endif
-+
-+#if defined (ARRAY_VARS)
-+static SHELL_VAR *get_groupset __P((SHELL_VAR *));
-+
-+static SHELL_VAR *build_hashcmd __P((SHELL_VAR *));
-+static SHELL_VAR *get_hashcmd __P((SHELL_VAR *));
-+static SHELL_VAR *assign_hashcmd __P((SHELL_VAR *,  char *, arrayind_t, char *));
-+#  if defined (ALIAS)
-+static SHELL_VAR *build_aliasvar __P((SHELL_VAR *));
-+static SHELL_VAR *get_aliasvar __P((SHELL_VAR *));
-+static SHELL_VAR *assign_aliasvar __P((SHELL_VAR *,  char *, arrayind_t, char *));
-+#  endif
-+#endif
-+
-+static SHELL_VAR *get_funcname __P((SHELL_VAR *));
-+static SHELL_VAR *init_funcname_var __P((void));
-+
-+static void initialize_dynamic_variables __P((void));
-+
-+static SHELL_VAR *hash_lookup __P((const char *, HASH_TABLE *));
-+static SHELL_VAR *new_shell_variable __P((const char *));
-+static SHELL_VAR *make_new_variable __P((const char *, HASH_TABLE *));
-+static SHELL_VAR *bind_variable_internal __P((const char *, char *, HASH_TABLE *, int, int));
-+
-+static void dispose_variable_value __P((SHELL_VAR *));
-+static void free_variable_hash_data __P((PTR_T));
-+
-+static VARLIST *vlist_alloc __P((int));
-+static VARLIST *vlist_realloc __P((VARLIST *, int));
-+static void vlist_add __P((VARLIST *, SHELL_VAR *, int));
-+
-+static void flatten __P((HASH_TABLE *, sh_var_map_func_t *, VARLIST *, int));
-+
-+static int qsort_var_comp __P((SHELL_VAR **, SHELL_VAR **));
-+
-+static SHELL_VAR **vapply __P((sh_var_map_func_t *));
-+static SHELL_VAR **fapply __P((sh_var_map_func_t *));
-+
-+static int visible_var __P((SHELL_VAR *));
-+static int visible_and_exported __P((SHELL_VAR *));
-+static int export_environment_candidate __P((SHELL_VAR *));
-+static int local_and_exported __P((SHELL_VAR *));
-+static int variable_in_context __P((SHELL_VAR *));
-+#if defined (ARRAY_VARS)
-+static int visible_array_vars __P((SHELL_VAR *));
-+#endif
-+
-+static SHELL_VAR *find_nameref_at_context __P((SHELL_VAR *, VAR_CONTEXT *));
-+static SHELL_VAR *find_variable_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **));
-+static SHELL_VAR *find_variable_last_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **));
-+
-+static SHELL_VAR *bind_tempenv_variable __P((const char *, char *));
-+static void push_temp_var __P((PTR_T));
-+static void propagate_temp_var __P((PTR_T));
-+static void dispose_temporary_env __P((sh_free_func_t *));     
-+
-+static inline char *mk_env_string __P((const char *, const char *, int));
-+static char **make_env_array_from_var_list __P((SHELL_VAR **));
-+static char **make_var_export_array __P((VAR_CONTEXT *));
-+static char **make_func_export_array __P((void));
-+static void add_temp_array_to_env __P((char **, int, int));
-+
-+static int n_shell_variables __P((void));
-+static int set_context __P((SHELL_VAR *));
-+
-+static void push_func_var __P((PTR_T));
-+static void push_exported_var __P((PTR_T));
-+
-+static inline int find_special_var __P((const char *));
-+
-+static void
-+create_variable_tables ()
-+{
-+  if (shell_variables == 0)
-+    {
-+      shell_variables = global_variables = new_var_context ((char *)NULL, 0);
-+      shell_variables->scope = 0;
-+      shell_variables->table = hash_create (0);
-+    }
-+
-+  if (shell_functions == 0)
-+    shell_functions = hash_create (0);
-+
-+#if defined (DEBUGGER)
-+  if (shell_function_defs == 0)
-+    shell_function_defs = hash_create (0);
-+#endif
-+}
-+
-+/* Initialize the shell variables from the current environment.
-+   If PRIVMODE is nonzero, don't import functions from ENV or
-+   parse $SHELLOPTS. */
-+void
-+initialize_shell_variables (env, privmode)
-+     char **env;
-+     int privmode;
-+{
-+  char *name, *string, *temp_string;
-+  int c, char_index, string_index, string_length, ro;
-+  SHELL_VAR *temp_var;
-+
-+  create_variable_tables ();
-+
-+  for (string_index = 0; string = env[string_index++]; )
-+    {
-+      char_index = 0;
-+      name = string;
-+      while ((c = *string++) && c != '=')
-+	;
-+      if (string[-1] == '=')
-+	char_index = string - name - 1;
-+
-+      /* If there are weird things in the environment, like `=xxx' or a
-+	 string without an `=', just skip them. */
-+      if (char_index == 0)
-+	continue;
-+
-+      /* ASSERT(name[char_index] == '=') */
-+      name[char_index] = '\0';
-+      /* Now, name = env variable name, string = env variable value, and
-+	 char_index == strlen (name) */
-+
-+      temp_var = (SHELL_VAR *)NULL;
-+
-+      /* If exported function, define it now.  Don't import functions from
-+	 the environment in privileged mode. */
-+      if (privmode == 0 && read_but_dont_execute == 0 && 
-+          STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) &&
-+          STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) &&
-+	  STREQN ("() {", string, 4))
-+	{
-+	  size_t namelen;
-+	  char *tname;		/* desired imported function name */
-+
-+	  namelen = char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN;
-+
-+	  tname = name + BASHFUNC_PREFLEN;	/* start of func name */
-+	  tname[namelen] = '\0';		/* now tname == func name */
-+
-+	  string_length = strlen (string);
-+	  temp_string = (char *)xmalloc (namelen + string_length + 2);
-+
-+	  memcpy (temp_string, tname, namelen);
-+	  temp_string[namelen] = ' ';
-+	  memcpy (temp_string + namelen + 1, string, string_length + 1);
-+
-+	  /* Don't import function names that are invalid identifiers from the
-+	     environment, though we still allow them to be defined as shell
-+	     variables. */
-+	  if (absolute_program (tname) == 0 && (posixly_correct == 0 || legal_identifier (tname)))
-+	    parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
-+
-+	  if (temp_var = find_function (tname))
-+	    {
-+	      VSETATTR (temp_var, (att_exported|att_imported));
-+	      array_needs_making = 1;
-+	    }
-+	  else
-+	    {
-+	      if (temp_var = bind_variable (name, string, 0))
-+		{
-+		  VSETATTR (temp_var, (att_exported | att_imported | att_invisible));
-+		  array_needs_making = 1;
-+		}
-+	      last_command_exit_value = 1;
-+	      report_error (_("error importing function definition for `%s'"), tname);
-+	    }
-+
-+	  /* Restore original suffix */
-+	  tname[namelen] = BASHFUNC_SUFFIX[0];
-+	}
-+#if defined (ARRAY_VARS)
-+#  if ARRAY_EXPORT
-+      /* Array variables may not yet be exported. */
-+      else if (*string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')')
-+	{
-+	  string_length = 1;
-+	  temp_string = extract_array_assignment_list (string, &string_length);
-+	  temp_var = assign_array_from_string (name, temp_string);
-+	  FREE (temp_string);
-+	  VSETATTR (temp_var, (att_exported | att_imported));
-+	  array_needs_making = 1;
-+	}
-+#  endif /* ARRAY_EXPORT */
-+#endif
-+#if 0
-+      else if (legal_identifier (name))
-+#else
-+      else
-+#endif
-+	{
-+	  ro = 0;
-+	  if (posixly_correct && STREQ (name, "SHELLOPTS"))
-+	    {
-+	      temp_var = find_variable ("SHELLOPTS");
-+	      ro = temp_var && readonly_p (temp_var);
-+	      if (temp_var)
-+		VUNSETATTR (temp_var, att_readonly);
-+	    }
-+	  temp_var = bind_variable (name, string, 0);
-+	  if (temp_var)
-+	    {
-+	      if (legal_identifier (name))
-+		VSETATTR (temp_var, (att_exported | att_imported));
-+	      else
-+		VSETATTR (temp_var, (att_exported | att_imported | att_invisible));
-+	      if (ro)
-+		VSETATTR (temp_var, att_readonly);
-+	      array_needs_making = 1;
-+	    }
-+	}
-+
-+      name[char_index] = '=';
-+      /* temp_var can be NULL if it was an exported function with a syntax
-+	 error (a different bug, but it still shouldn't dump core). */
-+      if (temp_var && function_p (temp_var) == 0)	/* XXX not yet */
-+	{
-+	  CACHE_IMPORTSTR (temp_var, name);
-+	}
-+    }
-+
-+  set_pwd ();
-+
-+  /* Set up initial value of $_ */
-+  temp_var = set_if_not ("_", dollar_vars[0]);
-+
-+  /* Remember this pid. */
-+  dollar_dollar_pid = getpid ();
-+
-+  /* Now make our own defaults in case the vars that we think are
-+     important are missing. */
-+  temp_var = set_if_not ("PATH", DEFAULT_PATH_VALUE);
-+#if 0
-+  set_auto_export (temp_var);	/* XXX */
-+#endif
-+
-+  temp_var = set_if_not ("TERM", "dumb");
-+#if 0
-+  set_auto_export (temp_var);	/* XXX */
-+#endif
-+
-+#if defined (__QNX__)
-+  /* set node id -- don't import it from the environment */
-+  {
-+    char node_name[22];
-+#  if defined (__QNXNTO__)
-+    netmgr_ndtostr(ND2S_LOCAL_STR, ND_LOCAL_NODE, node_name, sizeof(node_name));
-+#  else
-+    qnx_nidtostr (getnid (), node_name, sizeof (node_name));
-+#  endif
-+    temp_var = bind_variable ("NODE", node_name, 0);
-+    set_auto_export (temp_var);
-+  }
-+#endif
-+
-+  /* set up the prompts. */
-+  if (interactive_shell)
-+    {
-+#if defined (PROMPT_STRING_DECODE)
-+      set_if_not ("PS1", primary_prompt);
-+#else
-+      if (current_user.uid == -1)
-+	get_current_user_info ();
-+      set_if_not ("PS1", current_user.euid == 0 ? "# " : primary_prompt);
-+#endif
-+      set_if_not ("PS2", secondary_prompt);
-+    }
-+  set_if_not ("PS4", "+ ");
-+
-+  /* Don't allow IFS to be imported from the environment. */
-+  temp_var = bind_variable ("IFS", " \t\n", 0);
-+  setifs (temp_var);
-+
-+  /* Magic machine types.  Pretty convenient. */
-+  set_machine_vars ();
-+
-+  /* Default MAILCHECK for interactive shells.  Defer the creation of a
-+     default MAILPATH until the startup files are read, because MAIL
-+     names a mail file if MAILPATH is not set, and we should provide a
-+     default only if neither is set. */
-+  if (interactive_shell)
-+    {
-+      temp_var = set_if_not ("MAILCHECK", posixly_correct ? "600" : "60");
-+      VSETATTR (temp_var, att_integer);
-+    }
-+
-+  /* Do some things with shell level. */
-+  initialize_shell_level ();
-+
-+  set_ppid ();
-+
-+  /* Initialize the `getopts' stuff. */
-+  temp_var = bind_variable ("OPTIND", "1", 0);
-+  VSETATTR (temp_var, att_integer);
-+  getopts_reset (0);
-+  bind_variable ("OPTERR", "1", 0);
-+  sh_opterr = 1;
-+
-+  if (login_shell == 1 && posixly_correct == 0)
-+    set_home_var ();
-+
-+  /* Get the full pathname to THIS shell, and set the BASH variable
-+     to it. */
-+  name = get_bash_name ();
-+  temp_var = bind_variable ("BASH", name, 0);
-+  free (name);
-+
-+  /* Make the exported environment variable SHELL be the user's login
-+     shell.  Note that the `tset' command looks at this variable
-+     to determine what style of commands to output; if it ends in "csh",
-+     then C-shell commands are output, else Bourne shell commands. */
-+  set_shell_var ();
-+
-+  /* Make a variable called BASH_VERSION which contains the version info. */
-+  bind_variable ("BASH_VERSION", shell_version_string (), 0);
-+#if defined (ARRAY_VARS)
-+  make_vers_array ();
-+#endif
-+
-+  if (command_execution_string)
-+    bind_variable ("BASH_EXECUTION_STRING", command_execution_string, 0);
-+
-+  /* Find out if we're supposed to be in Posix.2 mode via an
-+     environment variable. */
-+  temp_var = find_variable ("POSIXLY_CORRECT");
-+  if (!temp_var)
-+    temp_var = find_variable ("POSIX_PEDANTIC");
-+  if (temp_var && imported_p (temp_var))
-+    sv_strict_posix (temp_var->name);
-+
-+#if defined (HISTORY)
-+  /* Set history variables to defaults, and then do whatever we would
-+     do if the variable had just been set.  Do this only in the case
-+     that we are remembering commands on the history list. */
-+  if (remember_on_history)
-+    {
-+      name = bash_tilde_expand (posixly_correct ? "~/.sh_history" : "~/.bash_history", 0);
-+
-+      set_if_not ("HISTFILE", name);
-+      free (name);
-+    }
-+#endif /* HISTORY */
-+
-+  /* Seed the random number generator. */
-+  seedrand ();
-+
-+  /* Handle some "special" variables that we may have inherited from a
-+     parent shell. */
-+  if (interactive_shell)
-+    {
-+      temp_var = find_variable ("IGNOREEOF");
-+      if (!temp_var)
-+	temp_var = find_variable ("ignoreeof");
-+      if (temp_var && imported_p (temp_var))
-+	sv_ignoreeof (temp_var->name);
-+    }
-+
-+#if defined (HISTORY)
-+  if (interactive_shell && remember_on_history)
-+    {
-+      sv_history_control ("HISTCONTROL");
-+      sv_histignore ("HISTIGNORE");
-+      sv_histtimefmt ("HISTTIMEFORMAT");
-+    }
-+#endif /* HISTORY */
-+
-+#if defined (READLINE) && defined (STRICT_POSIX)
-+  /* POSIXLY_CORRECT will only be 1 here if the shell was compiled
-+     -DSTRICT_POSIX */
-+  if (interactive_shell && posixly_correct && no_line_editing == 0)
-+    rl_prefer_env_winsize = 1;
-+#endif /* READLINE && STRICT_POSIX */
-+
-+     /*
-+      * 24 October 2001
-+      *
-+      * I'm tired of the arguing and bug reports.  Bash now leaves SSH_CLIENT
-+      * and SSH2_CLIENT alone.  I'm going to rely on the shell_level check in
-+      * isnetconn() to avoid running the startup files more often than wanted.
-+      * That will, of course, only work if the user's login shell is bash, so
-+      * I've made that behavior conditional on SSH_SOURCE_BASHRC being defined
-+      * in config-top.h.
-+      */
-+#if 0
-+  temp_var = find_variable ("SSH_CLIENT");
-+  if (temp_var && imported_p (temp_var))
-+    {
-+      VUNSETATTR (temp_var, att_exported);
-+      array_needs_making = 1;
-+    }
-+  temp_var = find_variable ("SSH2_CLIENT");
-+  if (temp_var && imported_p (temp_var))
-+    {
-+      VUNSETATTR (temp_var, att_exported);
-+      array_needs_making = 1;
-+    }
-+#endif
-+
-+  /* Get the user's real and effective user ids. */
-+  uidset ();
-+
-+  temp_var = find_variable ("BASH_XTRACEFD");
-+  if (temp_var && imported_p (temp_var))
-+    sv_xtracefd (temp_var->name);
-+
-+  /* Initialize the dynamic variables, and seed their values. */
-+  initialize_dynamic_variables ();
-+}
-+
-+/* **************************************************************** */
-+/*								    */
-+/*	     Setting values for special shell variables		    */
-+/*								    */
-+/* **************************************************************** */
-+
-+static void
-+set_machine_vars ()
-+{
-+  SHELL_VAR *temp_var;
-+
-+  temp_var = set_if_not ("HOSTTYPE", HOSTTYPE);
-+  temp_var = set_if_not ("OSTYPE", OSTYPE);
-+  temp_var = set_if_not ("MACHTYPE", MACHTYPE);
-+
-+  temp_var = set_if_not ("HOSTNAME", current_host_name);
-+}
-+
-+/* Set $HOME to the information in the password file if we didn't get
-+   it from the environment. */
-+
-+/* This function is not static so the tilde and readline libraries can
-+   use it. */
-+char *
-+sh_get_home_dir ()
-+{
-+  if (current_user.home_dir == 0)
-+    get_current_user_info ();
-+  return current_user.home_dir;
-+}
-+
-+static void
-+set_home_var ()
-+{
-+  SHELL_VAR *temp_var;
-+
-+  temp_var = find_variable ("HOME");
-+  if (temp_var == 0)
-+    temp_var = bind_variable ("HOME", sh_get_home_dir (), 0);
-+#if 0
-+  VSETATTR (temp_var, att_exported);
-+#endif
-+}
-+
-+/* Set $SHELL to the user's login shell if it is not already set.  Call
-+   get_current_user_info if we haven't already fetched the shell. */
-+static void
-+set_shell_var ()
-+{
-+  SHELL_VAR *temp_var;
-+
-+  temp_var = find_variable ("SHELL");
-+  if (temp_var == 0)
-+    {
-+      if (current_user.shell == 0)
-+	get_current_user_info ();
-+      temp_var = bind_variable ("SHELL", current_user.shell, 0);
-+    }
-+#if 0
-+  VSETATTR (temp_var, att_exported);
-+#endif
-+}
-+
-+static char *
-+get_bash_name ()
-+{
-+  char *name;
-+
-+  if ((login_shell == 1) && RELPATH(shell_name))
-+    {
-+      if (current_user.shell == 0)
-+	get_current_user_info ();
-+      name = savestring (current_user.shell);
-+    }
-+  else if (ABSPATH(shell_name))
-+    name = savestring (shell_name);
-+  else if (shell_name[0] == '.' && shell_name[1] == '/')
-+    {
-+      /* Fast path for common case. */
-+      char *cdir;
-+      int len;
-+
-+      cdir = get_string_value ("PWD");
-+      if (cdir)
-+	{
-+	  len = strlen (cdir);
-+	  name = (char *)xmalloc (len + strlen (shell_name) + 1);
-+	  strcpy (name, cdir);
-+	  strcpy (name + len, shell_name + 1);
-+	}
-+      else
-+	name = savestring (shell_name);
-+    }
-+  else
-+    {
-+      char *tname;
-+      int s;
-+
-+      tname = find_user_command (shell_name);
-+
-+      if (tname == 0)
-+	{
-+	  /* Try the current directory.  If there is not an executable
-+	     there, just punt and use the login shell. */
-+	  s = file_status (shell_name);
-+	  if (s & FS_EXECABLE)
-+	    {
-+	      tname = make_absolute (shell_name, get_string_value ("PWD"));
-+	      if (*shell_name == '.')
-+		{
-+		  name = sh_canonpath (tname, PATH_CHECKDOTDOT|PATH_CHECKEXISTS);
-+		  if (name == 0)
-+		    name = tname;
-+		  else
-+		    free (tname);
-+		}
-+	     else
-+		name = tname;
-+	    }
-+	  else
-+	    {
-+	      if (current_user.shell == 0)
-+		get_current_user_info ();
-+	      name = savestring (current_user.shell);
-+	    }
-+	}
-+      else
-+	{
-+	  name = full_pathname (tname);
-+	  free (tname);
-+	}
-+    }
-+
-+  return (name);
-+}
-+
-+void
-+adjust_shell_level (change)
-+     int change;
-+{
-+  char new_level[5], *old_SHLVL;
-+  intmax_t old_level;
-+  SHELL_VAR *temp_var;
-+
-+  old_SHLVL = get_string_value ("SHLVL");
-+  if (old_SHLVL == 0 || *old_SHLVL == '\0' || legal_number (old_SHLVL, &old_level) == 0)
-+    old_level = 0;
-+
-+  shell_level = old_level + change;
-+  if (shell_level < 0)
-+    shell_level = 0;
-+  else if (shell_level > 1000)
-+    {
-+      internal_warning (_("shell level (%d) too high, resetting to 1"), shell_level);
-+      shell_level = 1;
-+    }
-+
-+  /* We don't need the full generality of itos here. */
-+  if (shell_level < 10)
-+    {
-+      new_level[0] = shell_level + '0';
-+      new_level[1] = '\0';
-+    }
-+  else if (shell_level < 100)
-+    {
-+      new_level[0] = (shell_level / 10) + '0';
-+      new_level[1] = (shell_level % 10) + '0';
-+      new_level[2] = '\0';
-+    }
-+  else if (shell_level < 1000)
-+    {
-+      new_level[0] = (shell_level / 100) + '0';
-+      old_level = shell_level % 100;
-+      new_level[1] = (old_level / 10) + '0';
-+      new_level[2] = (old_level % 10) + '0';
-+      new_level[3] = '\0';
-+    }
-+
-+  temp_var = bind_variable ("SHLVL", new_level, 0);
-+  set_auto_export (temp_var);
-+}
-+
-+static void
-+initialize_shell_level ()
-+{
-+  adjust_shell_level (1);
-+}
-+
-+/* If we got PWD from the environment, update our idea of the current
-+   working directory.  In any case, make sure that PWD exists before
-+   checking it.  It is possible for getcwd () to fail on shell startup,
-+   and in that case, PWD would be undefined.  If this is an interactive
-+   login shell, see if $HOME is the current working directory, and if
-+   that's not the same string as $PWD, set PWD=$HOME. */
-+
-+void
-+set_pwd ()
-+{
-+  SHELL_VAR *temp_var, *home_var;
-+  char *temp_string, *home_string;
-+
-+  home_var = find_variable ("HOME");
-+  home_string = home_var ? value_cell (home_var) : (char *)NULL;
-+
-+  temp_var = find_variable ("PWD");
-+  if (temp_var && imported_p (temp_var) &&
-+      (temp_string = value_cell (temp_var)) &&
-+      same_file (temp_string, ".", (struct stat *)NULL, (struct stat *)NULL))
-+    set_working_directory (temp_string);
-+  else if (home_string && interactive_shell && login_shell &&
-+	   same_file (home_string, ".", (struct stat *)NULL, (struct stat *)NULL))
-+    {
-+      set_working_directory (home_string);
-+      temp_var = bind_variable ("PWD", home_string, 0);
-+      set_auto_export (temp_var);
-+    }
-+  else
-+    {
-+      temp_string = get_working_directory ("shell-init");
-+      if (temp_string)
-+	{
-+	  temp_var = bind_variable ("PWD", temp_string, 0);
-+	  set_auto_export (temp_var);
-+	  free (temp_string);
-+	}
-+    }
-+
-+  /* According to the Single Unix Specification, v2, $OLDPWD is an
-+     `environment variable' and therefore should be auto-exported.
-+     Make a dummy invisible variable for OLDPWD, and mark it as exported. */
-+  temp_var = bind_variable ("OLDPWD", (char *)NULL, 0);
-+  VSETATTR (temp_var, (att_exported | att_invisible));
-+}
-+
-+/* Make a variable $PPID, which holds the pid of the shell's parent.  */
-+void
-+set_ppid ()
-+{
-+  char namebuf[INT_STRLEN_BOUND(pid_t) + 1], *name;
-+  SHELL_VAR *temp_var;
-+
-+  name = inttostr (getppid (), namebuf, sizeof(namebuf));
-+  temp_var = find_variable ("PPID");
-+  if (temp_var)
-+    VUNSETATTR (temp_var, (att_readonly | att_exported));
-+  temp_var = bind_variable ("PPID", name, 0);
-+  VSETATTR (temp_var, (att_readonly | att_integer));
-+}
-+
-+static void
-+uidset ()
-+{
-+  char buff[INT_STRLEN_BOUND(uid_t) + 1], *b;
-+  register SHELL_VAR *v;
-+
-+  b = inttostr (current_user.uid, buff, sizeof (buff));
-+  v = find_variable ("UID");
-+  if (v == 0)
-+    {
-+      v = bind_variable ("UID", b, 0);
-+      VSETATTR (v, (att_readonly | att_integer));
-+    }
-+
-+  if (current_user.euid != current_user.uid)
-+    b = inttostr (current_user.euid, buff, sizeof (buff));
-+
-+  v = find_variable ("EUID");
-+  if (v == 0)
-+    {
-+      v = bind_variable ("EUID", b, 0);
-+      VSETATTR (v, (att_readonly | att_integer));
-+    }
-+}
-+
-+#if defined (ARRAY_VARS)
-+static void
-+make_vers_array ()
-+{
-+  SHELL_VAR *vv;
-+  ARRAY *av;
-+  char *s, d[32], b[INT_STRLEN_BOUND(int) + 1];
-+
-+  unbind_variable ("BASH_VERSINFO");
-+
-+  vv = make_new_array_variable ("BASH_VERSINFO");
-+  av = array_cell (vv);
-+  strcpy (d, dist_version);
-+  s = strchr (d, '.');
-+  if (s)
-+    *s++ = '\0';
-+  array_insert (av, 0, d);
-+  array_insert (av, 1, s);
-+  s = inttostr (patch_level, b, sizeof (b));
-+  array_insert (av, 2, s);
-+  s = inttostr (build_version, b, sizeof (b));
-+  array_insert (av, 3, s);
-+  array_insert (av, 4, release_status);
-+  array_insert (av, 5, MACHTYPE);
-+
-+  VSETATTR (vv, att_readonly);
-+}
-+#endif /* ARRAY_VARS */
-+
-+/* Set the environment variables $LINES and $COLUMNS in response to
-+   a window size change. */
-+void
-+sh_set_lines_and_columns (lines, cols)
-+     int lines, cols;
-+{
-+  char val[INT_STRLEN_BOUND(int) + 1], *v;
-+
-+#if defined (READLINE)
-+  /* If we are currently assigning to LINES or COLUMNS, don't do anything. */
-+  if (winsize_assignment)
-+    return;
-+#endif
-+
-+  v = inttostr (lines, val, sizeof (val));
-+  bind_variable ("LINES", v, 0);
-+
-+  v = inttostr (cols, val, sizeof (val));
-+  bind_variable ("COLUMNS", v, 0);
-+}
-+
-+/* **************************************************************** */
-+/*								    */
-+/*		   Printing variables and values		    */
-+/*								    */
-+/* **************************************************************** */
-+
-+/* Print LIST (a list of shell variables) to stdout in such a way that
-+   they can be read back in. */
-+void
-+print_var_list (list)
-+     register SHELL_VAR **list;
-+{
-+  register int i;
-+  register SHELL_VAR *var;
-+
-+  for (i = 0; list && (var = list[i]); i++)
-+    if (invisible_p (var) == 0)
-+      print_assignment (var);
-+}
-+
-+/* Print LIST (a list of shell functions) to stdout in such a way that
-+   they can be read back in. */
-+void
-+print_func_list (list)
-+     register SHELL_VAR **list;
-+{
-+  register int i;
-+  register SHELL_VAR *var;
-+
-+  for (i = 0; list && (var = list[i]); i++)
-+    {
-+      printf ("%s ", var->name);
-+      print_var_function (var);
-+      printf ("\n");
-+    }
-+}
-+      
-+/* Print the value of a single SHELL_VAR.  No newline is
-+   output, but the variable is printed in such a way that
-+   it can be read back in. */
-+void
-+print_assignment (var)
-+     SHELL_VAR *var;
-+{
-+  if (var_isset (var) == 0)
-+    return;
-+
-+  if (function_p (var))
-+    {
-+      printf ("%s", var->name);
-+      print_var_function (var);
-+      printf ("\n");
-+    }
-+#if defined (ARRAY_VARS)
-+  else if (array_p (var))
-+    print_array_assignment (var, 0);
-+  else if (assoc_p (var))
-+    print_assoc_assignment (var, 0);
-+#endif /* ARRAY_VARS */
-+  else
-+    {
-+      printf ("%s=", var->name);
-+      print_var_value (var, 1);
-+      printf ("\n");
-+    }
-+}
-+
-+/* Print the value cell of VAR, a shell variable.  Do not print
-+   the name, nor leading/trailing newline.  If QUOTE is non-zero,
-+   and the value contains shell metacharacters, quote the value
-+   in such a way that it can be read back in. */
-+void
-+print_var_value (var, quote)
-+     SHELL_VAR *var;
-+     int quote;
-+{
-+  char *t;
-+
-+  if (var_isset (var) == 0)
-+    return;
-+
-+  if (quote && posixly_correct == 0 && ansic_shouldquote (value_cell (var)))
-+    {
-+      t = ansic_quote (value_cell (var), 0, (int *)0);
-+      printf ("%s", t);
-+      free (t);
-+    }
-+  else if (quote && sh_contains_shell_metas (value_cell (var)))
-+    {
-+      t = sh_single_quote (value_cell (var));
-+      printf ("%s", t);
-+      free (t);
-+    }
-+  else
-+    printf ("%s", value_cell (var));
-+}
-+
-+/* Print the function cell of VAR, a shell variable.  Do not
-+   print the name, nor leading/trailing newline. */
-+void
-+print_var_function (var)
-+     SHELL_VAR *var;
-+{
-+  char *x;
-+
-+  if (function_p (var) && var_isset (var))
-+    {
-+      x = named_function_string ((char *)NULL, function_cell(var), FUNC_MULTILINE|FUNC_EXTERNAL);
-+      printf ("%s", x);
-+    }
-+}
-+
-+/* **************************************************************** */
-+/*								    */
-+/*		 	Dynamic Variables			    */
-+/*								    */
-+/* **************************************************************** */
-+
-+/* DYNAMIC VARIABLES
-+
-+   These are variables whose values are generated anew each time they are
-+   referenced.  These are implemented using a pair of function pointers
-+   in the struct variable: assign_func, which is called from bind_variable
-+   and, if arrays are compiled into the shell, some of the functions in
-+   arrayfunc.c, and dynamic_value, which is called from find_variable.
-+
-+   assign_func is called from bind_variable_internal, if
-+   bind_variable_internal discovers that the variable being assigned to
-+   has such a function.  The function is called as
-+	SHELL_VAR *temp = (*(entry->assign_func)) (entry, value, ind)
-+   and the (SHELL_VAR *)temp is returned as the value of bind_variable.  It
-+   is usually ENTRY (self).  IND is an index for an array variable, and
-+   unused otherwise.
-+
-+   dynamic_value is called from find_variable_internal to return a `new'
-+   value for the specified dynamic varible.  If this function is NULL,
-+   the variable is treated as a `normal' shell variable.  If it is not,
-+   however, then this function is called like this:
-+	tempvar = (*(var->dynamic_value)) (var);
-+
-+   Sometimes `tempvar' will replace the value of `var'.  Other times, the
-+   shell will simply use the string value.  Pretty object-oriented, huh?
-+
-+   Be warned, though: if you `unset' a special variable, it loses its
-+   special meaning, even if you subsequently set it.
-+
-+   The special assignment code would probably have been better put in
-+   subst.c: do_assignment_internal, in the same style as
-+   stupidly_hack_special_variables, but I wanted the changes as
-+   localized as possible.  */
-+
-+#define INIT_DYNAMIC_VAR(var, val, gfunc, afunc) \
-+  do \
-+    { \
-+      v = bind_variable (var, (val), 0); \
-+      v->dynamic_value = gfunc; \
-+      v->assign_func = afunc; \
-+    } \
-+  while (0)
-+
-+#define INIT_DYNAMIC_ARRAY_VAR(var, gfunc, afunc) \
-+  do \
-+    { \
-+      v = make_new_array_variable (var); \
-+      v->dynamic_value = gfunc; \
-+      v->assign_func = afunc; \
-+    } \
-+  while (0)
-+
-+#define INIT_DYNAMIC_ASSOC_VAR(var, gfunc, afunc) \
-+  do \
-+    { \
-+      v = make_new_assoc_variable (var); \
-+      v->dynamic_value = gfunc; \
-+      v->assign_func = afunc; \
-+    } \
-+  while (0)
-+
-+static SHELL_VAR *
-+null_assign (self, value, unused, key)
-+     SHELL_VAR *self;
-+     char *value;
-+     arrayind_t unused;
-+     char *key;
-+{
-+  return (self);
-+}
-+
-+#if defined (ARRAY_VARS)
-+static SHELL_VAR *
-+null_array_assign (self, value, ind, key)
-+     SHELL_VAR *self;
-+     char *value;
-+     arrayind_t ind;
-+     char *key;
-+{
-+  return (self);
-+}
-+#endif
-+
-+/* Degenerate `dynamic_value' function; just returns what's passed without
-+   manipulation. */
-+static SHELL_VAR *
-+get_self (self)
-+     SHELL_VAR *self;
-+{
-+  return (self);
-+}
-+
-+#if defined (ARRAY_VARS)
-+/* A generic dynamic array variable initializer.  Initialize array variable
-+   NAME with dynamic value function GETFUNC and assignment function SETFUNC. */
-+static SHELL_VAR *
-+init_dynamic_array_var (name, getfunc, setfunc, attrs)
-+     char *name;
-+     sh_var_value_func_t *getfunc;
-+     sh_var_assign_func_t *setfunc;
-+     int attrs;
-+{
-+  SHELL_VAR *v;
-+
-+  v = find_variable (name);
-+  if (v)
-+    return (v);
-+  INIT_DYNAMIC_ARRAY_VAR (name, getfunc, setfunc);
-+  if (attrs)
-+    VSETATTR (v, attrs);
-+  return v;
-+}
-+
-+static SHELL_VAR *
-+init_dynamic_assoc_var (name, getfunc, setfunc, attrs)
-+     char *name;
-+     sh_var_value_func_t *getfunc;
-+     sh_var_assign_func_t *setfunc;
-+     int attrs;
-+{
-+  SHELL_VAR *v;
-+
-+  v = find_variable (name);
-+  if (v)
-+    return (v);
-+  INIT_DYNAMIC_ASSOC_VAR (name, getfunc, setfunc);
-+  if (attrs)
-+    VSETATTR (v, attrs);
-+  return v;
-+}
-+#endif
-+
-+/* The value of $SECONDS.  This is the number of seconds since shell
-+   invocation, or, the number of seconds since the last assignment + the
-+   value of the last assignment. */
-+static intmax_t seconds_value_assigned;
-+
-+static SHELL_VAR *
-+assign_seconds (self, value, unused, key)
-+     SHELL_VAR *self;
-+     char *value;
-+     arrayind_t unused;
-+     char *key;
-+{
-+  if (legal_number (value, &seconds_value_assigned) == 0)
-+    seconds_value_assigned = 0;
-+  shell_start_time = NOW;
-+  return (self);
-+}
-+
-+static SHELL_VAR *
-+get_seconds (var)
-+     SHELL_VAR *var;
-+{
-+  time_t time_since_start;
-+  char *p;
-+
-+  time_since_start = NOW - shell_start_time;
-+  p = itos(seconds_value_assigned + time_since_start);
-+
-+  FREE (value_cell (var));
-+
-+  VSETATTR (var, att_integer);
-+  var_setvalue (var, p);
-+  return (var);
-+}
-+
-+static SHELL_VAR *
-+init_seconds_var ()
-+{
-+  SHELL_VAR *v;
-+
-+  v = find_variable ("SECONDS");
-+  if (v)
-+    {
-+      if (legal_number (value_cell(v), &seconds_value_assigned) == 0)
-+	seconds_value_assigned = 0;
-+    }
-+  INIT_DYNAMIC_VAR ("SECONDS", (v ? value_cell (v) : (char *)NULL), get_seconds, assign_seconds);
-+  return v;      
-+}
-+     
-+/* The random number seed.  You can change this by setting RANDOM. */
-+static unsigned long rseed = 1;
-+static int last_random_value;
-+static int seeded_subshell = 0;
-+
-+/* A linear congruential random number generator based on the example
-+   one in the ANSI C standard.  This one isn't very good, but a more
-+   complicated one is overkill. */
-+
-+/* Returns a pseudo-random number between 0 and 32767. */
-+static int
-+brand ()
-+{
-+  /* From "Random number generators: good ones are hard to find",
-+     Park and Miller, Communications of the ACM, vol. 31, no. 10,
-+     October 1988, p. 1195. filtered through FreeBSD */
-+  long h, l;
-+
-+  /* Can't seed with 0. */
-+  if (rseed == 0)
-+    rseed = 123459876;
-+  h = rseed / 127773;
-+  l = rseed % 127773;
-+  rseed = 16807 * l - 2836 * h;
-+#if 0
-+  if (rseed < 0)
-+    rseed += 0x7fffffff;
-+#endif
-+  return ((unsigned int)(rseed & 32767));	/* was % 32768 */
-+}
-+
-+/* Set the random number generator seed to SEED. */
-+static void
-+sbrand (seed)
-+     unsigned long seed;
-+{
-+  rseed = seed;
-+  last_random_value = 0;
-+}
-+
-+static void
-+seedrand ()
-+{
-+  struct timeval tv;
-+
-+  gettimeofday (&tv, NULL);
-+  sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid ());
-+}
-+
-+static SHELL_VAR *
-+assign_random (self, value, unused, key)
-+     SHELL_VAR *self;
-+     char *value;
-+     arrayind_t unused;
-+     char *key;
-+{
-+  sbrand (strtoul (value, (char **)NULL, 10));
-+  if (subshell_environment)
-+    seeded_subshell = getpid ();
-+  return (self);
-+}
-+
-+int
-+get_random_number ()
-+{
-+  int rv, pid;
-+
-+  /* Reset for command and process substitution. */
-+  pid = getpid ();
-+  if (subshell_environment && seeded_subshell != pid)
-+    {
-+      seedrand ();
-+      seeded_subshell = pid;
-+    }
-+
-+  do
-+    rv = brand ();
-+  while (rv == last_random_value);
-+  return rv;
-+}
-+
-+static SHELL_VAR *
-+get_random (var)
-+     SHELL_VAR *var;
-+{
-+  int rv;
-+  char *p;
-+
-+  rv = get_random_number ();
-+  last_random_value = rv;
-+  p = itos (rv);
-+
-+  FREE (value_cell (var));
-+
-+  VSETATTR (var, att_integer);
-+  var_setvalue (var, p);
-+  return (var);
-+}
-+
-+static SHELL_VAR *
-+assign_lineno (var, value, unused, key)
-+     SHELL_VAR *var;
-+     char *value;
-+     arrayind_t unused;
-+     char *key;
-+{
-+  intmax_t new_value;
-+
-+  if (value == 0 || *value == '\0' || legal_number (value, &new_value) == 0)
-+    new_value = 0;
-+  line_number = line_number_base = new_value;
-+  return var;
-+}
-+
-+/* Function which returns the current line number. */
-+static SHELL_VAR *
-+get_lineno (var)
-+     SHELL_VAR *var;
-+{
-+  char *p;
-+  int ln;
-+
-+  ln = executing_line_number ();
-+  p = itos (ln);
-+  FREE (value_cell (var));
-+  var_setvalue (var, p);
-+  return (var);
-+}
-+
-+static SHELL_VAR *
-+assign_subshell (var, value, unused, key)
-+     SHELL_VAR *var;
-+     char *value;
-+     arrayind_t unused;
-+     char *key;
-+{
-+  intmax_t new_value;
-+
-+  if (value == 0 || *value == '\0' || legal_number (value, &new_value) == 0)
-+    new_value = 0;
-+  subshell_level = new_value;
-+  return var;
-+}
-+
-+static SHELL_VAR *
-+get_subshell (var)
-+     SHELL_VAR *var;
-+{
-+  char *p;
-+
-+  p = itos (subshell_level);
-+  FREE (value_cell (var));
-+  var_setvalue (var, p);
-+  return (var);
-+}
-+
-+static SHELL_VAR *
-+get_bashpid (var)
-+     SHELL_VAR *var;
-+{
-+  int pid;
-+  char *p;
-+
-+  pid = getpid ();
-+  p = itos (pid);
-+
-+  FREE (value_cell (var));
-+  VSETATTR (var, att_integer|att_readonly);
-+  var_setvalue (var, p);
-+  return (var);
-+}
-+
-+static SHELL_VAR *
-+get_bash_command (var)
-+     SHELL_VAR *var;
-+{
-+  char *p;
-+
-+  if (the_printed_command_except_trap)
-+    p = savestring (the_printed_command_except_trap);
-+  else
-+    {
-+      p = (char *)xmalloc (1);
-+      p[0] = '\0';
-+    }
-+  FREE (value_cell (var));
-+  var_setvalue (var, p);
-+  return (var);
-+}
-+
-+#if defined (HISTORY)
-+static SHELL_VAR *
-+get_histcmd (var)
-+     SHELL_VAR *var;
-+{
-+  char *p;
-+
-+  p = itos (history_number ());
-+  FREE (value_cell (var));
-+  var_setvalue (var, p);
-+  return (var);
-+}
-+#endif
-+
-+#if defined (READLINE)
-+/* When this function returns, VAR->value points to malloced memory. */
-+static SHELL_VAR *
-+get_comp_wordbreaks (var)
-+     SHELL_VAR *var;
-+{
-+  /* If we don't have anything yet, assign a default value. */
-+  if (rl_completer_word_break_characters == 0 && bash_readline_initialized == 0)
-+    enable_hostname_completion (perform_hostname_completion);
-+
-+  FREE (value_cell (var));
-+  var_setvalue (var, savestring (rl_completer_word_break_characters));
-+
-+  return (var);
-+}
-+
-+/* When this function returns, rl_completer_word_break_characters points to
-+   malloced memory. */
-+static SHELL_VAR *
-+assign_comp_wordbreaks (self, value, unused, key)
-+     SHELL_VAR *self;
-+     char *value;
-+     arrayind_t unused;
-+     char *key;
-+{
-+  if (rl_completer_word_break_characters &&
-+      rl_completer_word_break_characters != rl_basic_word_break_characters)
-+    free (rl_completer_word_break_characters);
-+
-+  rl_completer_word_break_characters = savestring (value);
-+  return self;
-+}
-+#endif /* READLINE */
-+
-+#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS)
-+static SHELL_VAR *
-+assign_dirstack (self, value, ind, key)
-+     SHELL_VAR *self;
-+     char *value;
-+     arrayind_t ind;
-+     char *key;
-+{
-+  set_dirstack_element (ind, 1, value);
-+  return self;
-+}
-+
-+static SHELL_VAR *
-+get_dirstack (self)
-+     SHELL_VAR *self;
-+{
-+  ARRAY *a;
-+  WORD_LIST *l;
-+
-+  l = get_directory_stack (0);
-+  a = array_from_word_list (l);
-+  array_dispose (array_cell (self));
-+  dispose_words (l);
-+  var_setarray (self, a);
-+  return self;
-+}
-+#endif /* PUSHD AND POPD && ARRAY_VARS */
-+
-+#if defined (ARRAY_VARS)
-+/* We don't want to initialize the group set with a call to getgroups()
-+   unless we're asked to, but we only want to do it once. */
-+static SHELL_VAR *
-+get_groupset (self)
-+     SHELL_VAR *self;
-+{
-+  register int i;
-+  int ng;
-+  ARRAY *a;
-+  static char **group_set = (char **)NULL;
-+
-+  if (group_set == 0)
-+    {
-+      group_set = get_group_list (&ng);
-+      a = array_cell (self);
-+      for (i = 0; i < ng; i++)
-+	array_insert (a, i, group_set[i]);
-+    }
-+  return (self);
-+}
-+
-+static SHELL_VAR *
-+build_hashcmd (self)
-+     SHELL_VAR *self;
-+{
-+  HASH_TABLE *h;
-+  int i;
-+  char *k, *v;
-+  BUCKET_CONTENTS *item;
-+
-+  h = assoc_cell (self);
-+  if (h)
-+    assoc_dispose (h);
-+
-+  if (hashed_filenames == 0 || HASH_ENTRIES (hashed_filenames) == 0)
-+    {
-+      var_setvalue (self, (char *)NULL);
-+      return self;
-+    }
-+
-+  h = assoc_create (hashed_filenames->nbuckets);
-+  for (i = 0; i < hashed_filenames->nbuckets; i++)
-+    {
-+      for (item = hash_items (i, hashed_filenames); item; item = item->next)
-+	{
-+	  k = savestring (item->key);
-+	  v = pathdata(item)->path;
-+	  assoc_insert (h, k, v);
-+	}
-+    }
-+
-+  var_setvalue (self, (char *)h);
-+  return self;
-+}
-+
-+static SHELL_VAR *
-+get_hashcmd (self)
-+     SHELL_VAR *self;
-+{
-+  build_hashcmd (self);
-+  return (self);
-+}
-+
-+static SHELL_VAR *
-+assign_hashcmd (self, value, ind, key)
-+     SHELL_VAR *self;
-+     char *value;
-+     arrayind_t ind;
-+     char *key;
-+{
-+  phash_insert (key, value, 0, 0);
-+  return (build_hashcmd (self));
-+}
-+
-+#if defined (ALIAS)
-+static SHELL_VAR *
-+build_aliasvar (self)
-+     SHELL_VAR *self;
-+{
-+  HASH_TABLE *h;
-+  int i;
-+  char *k, *v;
-+  BUCKET_CONTENTS *item;
-+
-+  h = assoc_cell (self);
-+  if (h)
-+    assoc_dispose (h);
-+
-+  if (aliases == 0 || HASH_ENTRIES (aliases) == 0)
-+    {
-+      var_setvalue (self, (char *)NULL);
-+      return self;
-+    }
-+
-+  h = assoc_create (aliases->nbuckets);
-+  for (i = 0; i < aliases->nbuckets; i++)
-+    {
-+      for (item = hash_items (i, aliases); item; item = item->next)
-+	{
-+	  k = savestring (item->key);
-+	  v = ((alias_t *)(item->data))->value;
-+	  assoc_insert (h, k, v);
-+	}
-+    }
-+
-+  var_setvalue (self, (char *)h);
-+  return self;
-+}
-+
-+static SHELL_VAR *
-+get_aliasvar (self)
-+     SHELL_VAR *self;
-+{
-+  build_aliasvar (self);
-+  return (self);
-+}
-+
-+static SHELL_VAR *
-+assign_aliasvar (self, value, ind, key)
-+     SHELL_VAR *self;
-+     char *value;
-+     arrayind_t ind;
-+     char *key;
-+{
-+  add_alias (key, value);
-+  return (build_aliasvar (self));
-+}
-+#endif /* ALIAS */
-+
-+#endif /* ARRAY_VARS */
-+
-+/* If ARRAY_VARS is not defined, this just returns the name of any
-+   currently-executing function.  If we have arrays, it's a call stack. */
-+static SHELL_VAR *
-+get_funcname (self)
-+     SHELL_VAR *self;
-+{
-+#if ! defined (ARRAY_VARS)
-+  char *t;
-+  if (variable_context && this_shell_function)
-+    {
-+      FREE (value_cell (self));
-+      t = savestring (this_shell_function->name);
-+      var_setvalue (self, t);
-+    }
-+#endif
-+  return (self);
-+}
-+
-+void
-+make_funcname_visible (on_or_off)
-+     int on_or_off;
-+{
-+  SHELL_VAR *v;
-+
-+  v = find_variable ("FUNCNAME");
-+  if (v == 0 || v->dynamic_value == 0)
-+    return;
-+
-+  if (on_or_off)
-+    VUNSETATTR (v, att_invisible);
-+  else
-+    VSETATTR (v, att_invisible);
-+}
-+
-+static SHELL_VAR *
-+init_funcname_var ()
-+{
-+  SHELL_VAR *v;
-+
-+  v = find_variable ("FUNCNAME");
-+  if (v)
-+    return v;
-+#if defined (ARRAY_VARS)
-+  INIT_DYNAMIC_ARRAY_VAR ("FUNCNAME", get_funcname, null_array_assign);
-+#else
-+  INIT_DYNAMIC_VAR ("FUNCNAME", (char *)NULL, get_funcname, null_assign);
-+#endif
-+  VSETATTR (v, att_invisible|att_noassign);
-+  return v;
-+}
-+
-+static void
-+initialize_dynamic_variables ()
-+{
-+  SHELL_VAR *v;
-+
-+  v = init_seconds_var ();
-+
-+  INIT_DYNAMIC_VAR ("BASH_COMMAND", (char *)NULL, get_bash_command, (sh_var_assign_func_t *)NULL);
-+  INIT_DYNAMIC_VAR ("BASH_SUBSHELL", (char *)NULL, get_subshell, assign_subshell);
-+
-+  INIT_DYNAMIC_VAR ("RANDOM", (char *)NULL, get_random, assign_random);
-+  VSETATTR (v, att_integer);
-+  INIT_DYNAMIC_VAR ("LINENO", (char *)NULL, get_lineno, assign_lineno);
-+  VSETATTR (v, att_integer);
-+
-+  INIT_DYNAMIC_VAR ("BASHPID", (char *)NULL, get_bashpid, null_assign);
-+  VSETATTR (v, att_integer|att_readonly);
-+
-+#if defined (HISTORY)
-+  INIT_DYNAMIC_VAR ("HISTCMD", (char *)NULL, get_histcmd, (sh_var_assign_func_t *)NULL);
-+  VSETATTR (v, att_integer);
-+#endif
-+
-+#if defined (READLINE)
-+  INIT_DYNAMIC_VAR ("COMP_WORDBREAKS", (char *)NULL, get_comp_wordbreaks, assign_comp_wordbreaks);
-+#endif
-+
-+#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS)
-+  v = init_dynamic_array_var ("DIRSTACK", get_dirstack, assign_dirstack, 0);
-+#endif /* PUSHD_AND_POPD && ARRAY_VARS */
-+
-+#if defined (ARRAY_VARS)
-+  v = init_dynamic_array_var ("GROUPS", get_groupset, null_array_assign, att_noassign);
-+
-+#  if defined (DEBUGGER)
-+  v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, att_noassign|att_nounset);
-+  v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, att_noassign|att_nounset);
-+#  endif /* DEBUGGER */
-+  v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, att_noassign|att_nounset);
-+  v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, att_noassign|att_nounset);
-+
-+  v = init_dynamic_assoc_var ("BASH_CMDS", get_hashcmd, assign_hashcmd, att_nofree);
-+#  if defined (ALIAS)
-+  v = init_dynamic_assoc_var ("BASH_ALIASES", get_aliasvar, assign_aliasvar, att_nofree);
-+#  endif
-+#endif
-+
-+  v = init_funcname_var ();
-+}
-+
-+/* **************************************************************** */
-+/*								    */
-+/*		Retrieving variables and values			    */
-+/*								    */
-+/* **************************************************************** */
-+
-+/* How to get a pointer to the shell variable or function named NAME.
-+   HASHED_VARS is a pointer to the hash table containing the list
-+   of interest (either variables or functions). */
-+
-+static SHELL_VAR *
-+hash_lookup (name, hashed_vars)
-+     const char *name;
-+     HASH_TABLE *hashed_vars;
-+{
-+  BUCKET_CONTENTS *bucket;
-+
-+  bucket = hash_search (name, hashed_vars, 0);
-+  /* If we find the name in HASHED_VARS, set LAST_TABLE_SEARCHED to that
-+     table. */
-+  if (bucket)
-+    last_table_searched = hashed_vars;
-+  return (bucket ? (SHELL_VAR *)bucket->data : (SHELL_VAR *)NULL);
-+}
-+
-+SHELL_VAR *
-+var_lookup (name, vcontext)
-+     const char *name;
-+     VAR_CONTEXT *vcontext;
-+{
-+  VAR_CONTEXT *vc;
-+  SHELL_VAR *v;
-+
-+  v = (SHELL_VAR *)NULL;
-+  for (vc = vcontext; vc; vc = vc->down)
-+    if (v = hash_lookup (name, vc->table))
-+      break;
-+
-+  return v;
-+}
-+
-+/* Look up the variable entry named NAME.  If SEARCH_TEMPENV is non-zero,
-+   then also search the temporarily built list of exported variables.
-+   The lookup order is:
-+	temporary_env
-+	shell_variables list
-+*/
-+
-+SHELL_VAR *
-+find_variable_internal (name, force_tempenv)
-+     const char *name;
-+     int force_tempenv;
-+{
-+  SHELL_VAR *var;
-+  int search_tempenv;
-+  VAR_CONTEXT *vc;
-+
-+  var = (SHELL_VAR *)NULL;
-+
-+  /* If explicitly requested, first look in the temporary environment for
-+     the variable.  This allows constructs such as "foo=x eval 'echo $foo'"
-+     to get the `exported' value of $foo.  This happens if we are executing
-+     a function or builtin, or if we are looking up a variable in a
-+     "subshell environment". */
-+  search_tempenv = force_tempenv || (expanding_redir == 0 && subshell_environment);
-+
-+  if (search_tempenv && temporary_env)		
-+    var = hash_lookup (name, temporary_env);
-+
-+  vc = shell_variables;
-+#if 0
-+if (search_tempenv == 0 && /* (subshell_environment & SUBSHELL_COMSUB) && */
-+    expanding_redir &&
-+    (this_shell_builtin == eval_builtin || this_shell_builtin == command_builtin))
-+  {
-+  itrace("find_variable_internal: search_tempenv == 0: skipping VC_BLTNENV");
-+  while (vc && (vc->flags & VC_BLTNENV))
-+    vc = vc->down;
-+  if (vc == 0)
-+    vc = shell_variables;
-+  }
-+#endif
-+
-+  if (var == 0)
-+    var = var_lookup (name, vc);
-+
-+  if (var == 0)
-+    return ((SHELL_VAR *)NULL);
-+
-+  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
-+}
-+
-+/* Look up and resolve the chain of nameref variables starting at V all the
-+   way to NULL or non-nameref. */
-+SHELL_VAR *
-+find_variable_nameref (v)
-+     SHELL_VAR *v;
-+{
-+  int level;
-+  char *newname;
-+  SHELL_VAR *orig, *oldv;
-+
-+  level = 0;
-+  orig = v;
-+  while (v && nameref_p (v))
-+    {
-+      level++;
-+      if (level > NAMEREF_MAX)
-+	return ((SHELL_VAR *)0);	/* error message here? */
-+      newname = nameref_cell (v);
-+      if (newname == 0 || *newname == '\0')
-+	return ((SHELL_VAR *)0);
-+      oldv = v;
-+      v = find_variable_internal (newname, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
-+      if (v == orig || v == oldv)
-+	{
-+	  internal_warning (_("%s: circular name reference"), orig->name);
-+	  return ((SHELL_VAR *)0);
-+	}
-+    }
-+  return v;
-+}
-+
-+/* Resolve the chain of nameref variables for NAME.  XXX - could change later */
-+SHELL_VAR *
-+find_variable_last_nameref (name)
-+     const char *name;
-+{
-+  SHELL_VAR *v, *nv;
-+  char *newname;
-+  int level;
-+
-+  nv = v = find_variable_noref (name);
-+  level = 0;
-+  while (v && nameref_p (v))
-+    {
-+      level++;
-+      if (level > NAMEREF_MAX)
-+        return ((SHELL_VAR *)0);	/* error message here? */
-+      newname = nameref_cell (v);
-+      if (newname == 0 || *newname == '\0')
-+	return ((SHELL_VAR *)0);
-+      nv = v;
-+      v = find_variable_internal (newname, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
-+    }
-+  return nv;
-+}
-+
-+/* Resolve the chain of nameref variables for NAME.  XXX - could change later */
-+SHELL_VAR *
-+find_global_variable_last_nameref (name)
-+     const char *name;
-+{
-+  SHELL_VAR *v, *nv;
-+  char *newname;
-+  int level;
-+
-+  nv = v = find_global_variable_noref (name);
-+  level = 0;
-+  while (v && nameref_p (v))
-+    {
-+      level++;
-+      if (level > NAMEREF_MAX)
-+        return ((SHELL_VAR *)0);	/* error message here? */
-+      newname = nameref_cell (v);
-+      if (newname == 0 || *newname == '\0')
-+	return ((SHELL_VAR *)0);
-+      nv = v;
-+      v = find_global_variable_noref (newname);
-+    }
-+  return nv;
-+}
-+
-+static SHELL_VAR *
-+find_nameref_at_context (v, vc)
-+     SHELL_VAR *v;
-+     VAR_CONTEXT *vc;
-+{
-+  SHELL_VAR *nv, *nv2;
-+  VAR_CONTEXT *nvc;
-+  char *newname;
-+  int level;
-+
-+  nv = v;
-+  level = 1;
-+  while (nv && nameref_p (nv))
-+    {
-+      level++;
-+      if (level > NAMEREF_MAX)
-+        return ((SHELL_VAR *)NULL);
-+      newname = nameref_cell (nv);
-+      if (newname == 0 || *newname == '\0')
-+        return ((SHELL_VAR *)NULL);      
-+      nv2 = hash_lookup (newname, vc->table);
-+      if (nv2 == 0)
-+        break;
-+      nv = nv2;
-+    }
-+  return nv;
-+}
-+
-+/* Do nameref resolution from the VC, which is the local context for some
-+   function or builtin, `up' the chain to the global variables context.  If
-+   NVCP is not NULL, return the variable context where we finally ended the
-+   nameref resolution (so the bind_variable_internal can use the correct
-+   variable context and hash table). */
-+static SHELL_VAR *
-+find_variable_nameref_context (v, vc, nvcp)
-+     SHELL_VAR *v;
-+     VAR_CONTEXT *vc;
-+     VAR_CONTEXT **nvcp;
-+{
-+  SHELL_VAR *nv, *nv2;
-+  VAR_CONTEXT *nvc;
-+
-+  /* Look starting at the current context all the way `up' */
-+  for (nv = v, nvc = vc; nvc; nvc = nvc->down)
-+    {
-+      nv2 = find_nameref_at_context (nv, nvc);
-+      if (nv2 == 0)
-+        continue;
-+      nv = nv2;
-+      if (*nvcp)
-+        *nvcp = nvc;
-+      if (nameref_p (nv) == 0)
-+        break;
-+    }
-+  return (nameref_p (nv) ? (SHELL_VAR *)NULL : nv);
-+}
-+
-+/* Do nameref resolution from the VC, which is the local context for some
-+   function or builtin, `up' the chain to the global variables context.  If
-+   NVCP is not NULL, return the variable context where we finally ended the
-+   nameref resolution (so the bind_variable_internal can use the correct
-+   variable context and hash table). */
-+static SHELL_VAR *
-+find_variable_last_nameref_context (v, vc, nvcp)
-+     SHELL_VAR *v;
-+     VAR_CONTEXT *vc;
-+     VAR_CONTEXT **nvcp;
-+{
-+  SHELL_VAR *nv, *nv2;
-+  VAR_CONTEXT *nvc;
-+
-+  /* Look starting at the current context all the way `up' */
-+  for (nv = v, nvc = vc; nvc; nvc = nvc->down)
-+    {
-+      nv2 = find_nameref_at_context (nv, nvc);
-+      if (nv2 == 0)
-+	continue;
-+      nv = nv2;
-+      if (*nvcp)
-+        *nvcp = nvc;
-+    }
-+  return (nameref_p (nv) ? nv : (SHELL_VAR *)NULL);
-+}
-+
-+/* Find a variable, forcing a search of the temporary environment first */
-+SHELL_VAR *
-+find_variable_tempenv (name)
-+     const char *name;
-+{
-+  SHELL_VAR *var;
-+
-+  var = find_variable_internal (name, 1);
-+  if (var && nameref_p (var))
-+    var = find_variable_nameref (var);
-+  return (var);
-+}
-+
-+/* Find a variable, not forcing a search of the temporary environment first */
-+SHELL_VAR *
-+find_variable_notempenv (name)
-+     const char *name;
-+{
-+  SHELL_VAR *var;
-+
-+  var = find_variable_internal (name, 0);
-+  if (var && nameref_p (var))
-+    var = find_variable_nameref (var);
-+  return (var);
-+}
-+
-+SHELL_VAR *
-+find_global_variable (name)
-+     const char *name;
-+{
-+  SHELL_VAR *var;
-+
-+  var = var_lookup (name, global_variables);
-+  if (var && nameref_p (var))
-+    var = find_variable_nameref (var);
-+
-+  if (var == 0)
-+    return ((SHELL_VAR *)NULL);
-+
-+  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
-+}
-+
-+SHELL_VAR *
-+find_global_variable_noref (name)
-+     const char *name;
-+{
-+  SHELL_VAR *var;
-+
-+  var = var_lookup (name, global_variables);
-+
-+  if (var == 0)
-+    return ((SHELL_VAR *)NULL);
-+
-+  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
-+}
-+
-+SHELL_VAR *
-+find_shell_variable (name)
-+     const char *name;
-+{
-+  SHELL_VAR *var;
-+
-+  var = var_lookup (name, shell_variables);
-+  if (var && nameref_p (var))
-+    var = find_variable_nameref (var);
-+
-+  if (var == 0)
-+    return ((SHELL_VAR *)NULL);
-+
-+  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
-+}
-+
-+/* Look up the variable entry named NAME.  Returns the entry or NULL. */
-+SHELL_VAR *
-+find_variable (name)
-+     const char *name;
-+{
-+  SHELL_VAR *v;
-+
-+  last_table_searched = 0;
-+  v = find_variable_internal (name, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
-+  if (v && nameref_p (v))
-+    v = find_variable_nameref (v);
-+  return v;
-+}
-+
-+SHELL_VAR *
-+find_variable_noref (name)
-+     const char *name;
-+{
-+  SHELL_VAR *v;
-+
-+  v = find_variable_internal (name, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
-+  return v;
-+}
-+
-+/* Look up the function entry whose name matches STRING.
-+   Returns the entry or NULL. */
-+SHELL_VAR *
-+find_function (name)
-+     const char *name;
-+{
-+  return (hash_lookup (name, shell_functions));
-+}
-+
-+/* Find the function definition for the shell function named NAME.  Returns
-+   the entry or NULL. */
-+FUNCTION_DEF *
-+find_function_def (name)
-+     const char *name;
-+{
-+#if defined (DEBUGGER)
-+  return ((FUNCTION_DEF *)hash_lookup (name, shell_function_defs));
-+#else
-+  return ((FUNCTION_DEF *)0);
-+#endif
-+}
-+
-+/* Return the value of VAR.  VAR is assumed to have been the result of a
-+   lookup without any subscript, if arrays are compiled into the shell. */
-+char *
-+get_variable_value (var)
-+     SHELL_VAR *var;
-+{
-+  if (var == 0)
-+    return ((char *)NULL);
-+#if defined (ARRAY_VARS)
-+  else if (array_p (var))
-+    return (array_reference (array_cell (var), 0));
-+  else if (assoc_p (var))
-+    return (assoc_reference (assoc_cell (var), "0"));
-+#endif
-+  else
-+    return (value_cell (var));
-+}
-+
-+/* Return the string value of a variable.  Return NULL if the variable
-+   doesn't exist.  Don't cons a new string.  This is a potential memory
-+   leak if the variable is found in the temporary environment.  Since
-+   functions and variables have separate name spaces, returns NULL if
-+   var_name is a shell function only. */
-+char *
-+get_string_value (var_name)
-+     const char *var_name;
-+{
-+  SHELL_VAR *var;
-+
-+  var = find_variable (var_name);
-+  return ((var) ? get_variable_value (var) : (char *)NULL);
-+}
-+
-+/* This is present for use by the tilde and readline libraries. */
-+char *
-+sh_get_env_value (v)
-+     const char *v;
-+{
-+  return get_string_value (v);
-+}
-+
-+/* **************************************************************** */
-+/*								    */
-+/*		  Creating and setting variables		    */
-+/*								    */
-+/* **************************************************************** */
-+
-+/* Set NAME to VALUE if NAME has no value. */
-+SHELL_VAR *
-+set_if_not (name, value)
-+     char *name, *value;
-+{
-+  SHELL_VAR *v;
-+
-+  if (shell_variables == 0)
-+    create_variable_tables ();
-+
-+  v = find_variable (name);
-+  if (v == 0)
-+    v = bind_variable_internal (name, value, global_variables->table, HASH_NOSRCH, 0);
-+  return (v);
-+}
-+
-+/* Create a local variable referenced by NAME. */
-+SHELL_VAR *
-+make_local_variable (name)
-+     const char *name;
-+{
-+  SHELL_VAR *new_var, *old_var;
-+  VAR_CONTEXT *vc;
-+  int was_tmpvar;
-+  char *tmp_value;
-+
-+  /* local foo; local foo;  is a no-op. */
-+  old_var = find_variable (name);
-+  if (old_var && local_p (old_var) && old_var->context == variable_context)
-+    return (old_var);
-+
-+  was_tmpvar = old_var && tempvar_p (old_var);
-+  /* If we're making a local variable in a shell function, the temporary env
-+     has already been merged into the function's variable context stack.  We
-+     can assume that a temporary var in the same context appears in the same
-+     VAR_CONTEXT and can safely be returned without creating a new variable
-+     (which results in duplicate names in the same VAR_CONTEXT->table */
-+  /* We can't just test tmpvar_p because variables in the temporary env given
-+     to a shell function appear in the function's local variable VAR_CONTEXT
-+     but retain their tempvar attribute.  We want temporary variables that are
-+     found in temporary_env, hence the test for last_table_searched, which is
-+     set in hash_lookup and only (so far) checked here. */
-+  if (was_tmpvar && old_var->context == variable_context && last_table_searched != temporary_env)
-+    {
-+      VUNSETATTR (old_var, att_invisible);
-+      return (old_var);
-+    }
-+  if (was_tmpvar)
-+    tmp_value = value_cell (old_var);
-+
-+  for (vc = shell_variables; vc; vc = vc->down)
-+    if (vc_isfuncenv (vc) && vc->scope == variable_context)
-+      break;
-+
-+  if (vc == 0)
-+    {
-+      internal_error (_("make_local_variable: no function context at current scope"));
-+      return ((SHELL_VAR *)NULL);
-+    }
-+  else if (vc->table == 0)
-+    vc->table = hash_create (TEMPENV_HASH_BUCKETS);
-+
-+  /* Since this is called only from the local/declare/typeset code, we can
-+     call builtin_error here without worry (of course, it will also work
-+     for anything that sets this_command_name).  Variables with the `noassign'
-+     attribute may not be made local.  The test against old_var's context
-+     level is to disallow local copies of readonly global variables (since I
-+     believe that this could be a security hole).  Readonly copies of calling
-+     function local variables are OK. */
-+  if (old_var && (noassign_p (old_var) ||
-+		 (readonly_p (old_var) && old_var->context == 0)))
-+    {
-+      if (readonly_p (old_var))
-+	sh_readonly (name);
-+      else if (noassign_p (old_var))
-+	builtin_error (_("%s: variable may not be assigned value"), name);
-+#if 0
-+      /* Let noassign variables through with a warning */
-+      if (readonly_p (old_var))
-+#endif
-+	return ((SHELL_VAR *)NULL);
-+    }
-+
-+  if (old_var == 0)
-+    new_var = make_new_variable (name, vc->table);
-+  else
-+    {
-+      new_var = make_new_variable (name, vc->table);
-+
-+      /* If we found this variable in one of the temporary environments,
-+	 inherit its value.  Watch to see if this causes problems with
-+	 things like `x=4 local x'. XXX - see above for temporary env
-+	 variables with the same context level as variable_context */
-+      /* XXX - we should only do this if the variable is not an array. */
-+      if (was_tmpvar)
-+	var_setvalue (new_var, savestring (tmp_value));
-+
-+      new_var->attributes = exported_p (old_var) ? att_exported : 0;
-+    }
-+
-+  vc->flags |= VC_HASLOCAL;
-+
-+  new_var->context = variable_context;
-+  VSETATTR (new_var, att_local);
-+
-+  if (ifsname (name))
-+    setifs (new_var);
-+
-+  if (was_tmpvar == 0)
-+    VSETATTR (new_var, att_invisible);	/* XXX */
-+  return (new_var);
-+}
-+
-+/* Create a new shell variable with name NAME. */
-+static SHELL_VAR *
-+new_shell_variable (name)
-+     const char *name;
-+{
-+  SHELL_VAR *entry;
-+
-+  entry = (SHELL_VAR *)xmalloc (sizeof (SHELL_VAR));
-+
-+  entry->name = savestring (name);
-+  var_setvalue (entry, (char *)NULL);
-+  CLEAR_EXPORTSTR (entry);
-+
-+  entry->dynamic_value = (sh_var_value_func_t *)NULL;
-+  entry->assign_func = (sh_var_assign_func_t *)NULL;
-+
-+  entry->attributes = 0;
-+
-+  /* Always assume variables are to be made at toplevel!
-+     make_local_variable has the responsibility of changing the
-+     variable context. */
-+  entry->context = 0;
-+
-+  return (entry);
-+}
-+
-+/* Create a new shell variable with name NAME and add it to the hash table
-+   TABLE. */
-+static SHELL_VAR *
-+make_new_variable (name, table)
-+     const char *name;
-+     HASH_TABLE *table;
-+{
-+  SHELL_VAR *entry;
-+  BUCKET_CONTENTS *elt;
-+
-+  entry = new_shell_variable (name);
-+
-+  /* Make sure we have a shell_variables hash table to add to. */
-+  if (shell_variables == 0)
-+    create_variable_tables ();
-+
-+  elt = hash_insert (savestring (name), table, HASH_NOSRCH);
-+  elt->data = (PTR_T)entry;
-+
-+  return entry;
-+}
-+
-+#if defined (ARRAY_VARS)
-+SHELL_VAR *
-+make_new_array_variable (name)
-+     char *name;
-+{
-+  SHELL_VAR *entry;
-+  ARRAY *array;
-+
-+  entry = make_new_variable (name, global_variables->table);
-+  array = array_create ();
-+
-+  var_setarray (entry, array);
-+  VSETATTR (entry, att_array);
-+  return entry;
-+}
-+
-+SHELL_VAR *
-+make_local_array_variable (name, assoc_ok)
-+     char *name;
-+     int assoc_ok;
-+{
-+  SHELL_VAR *var;
-+  ARRAY *array;
-+
-+  var = make_local_variable (name);
-+  if (var == 0 || array_p (var) || (assoc_ok && assoc_p (var)))
-+    return var;
-+
-+  array = array_create ();
-+
-+  dispose_variable_value (var);
-+  var_setarray (var, array);
-+  VSETATTR (var, att_array);
-+  return var;
-+}
-+
-+SHELL_VAR *
-+make_new_assoc_variable (name)
-+     char *name;
-+{
-+  SHELL_VAR *entry;
-+  HASH_TABLE *hash;
-+
-+  entry = make_new_variable (name, global_variables->table);
-+  hash = assoc_create (0);
-+
-+  var_setassoc (entry, hash);
-+  VSETATTR (entry, att_assoc);
-+  return entry;
-+}
-+
-+SHELL_VAR *
-+make_local_assoc_variable (name)
-+     char *name;
-+{
-+  SHELL_VAR *var;
-+  HASH_TABLE *hash;
-+
-+  var = make_local_variable (name);
-+  if (var == 0 || assoc_p (var))
-+    return var;
-+
-+  dispose_variable_value (var);
-+  hash = assoc_create (0);
-+
-+  var_setassoc (var, hash);
-+  VSETATTR (var, att_assoc);
-+  return var;
-+}
-+#endif
-+
-+char *
-+make_variable_value (var, value, flags)
-+     SHELL_VAR *var;
-+     char *value;
-+     int flags;
-+{
-+  char *retval, *oval;
-+  intmax_t lval, rval;
-+  int expok, olen, op;
-+
-+  /* If this variable has had its type set to integer (via `declare -i'),
-+     then do expression evaluation on it and store the result.  The
-+     functions in expr.c (evalexp()) and bind_int_variable() are responsible
-+     for turning off the integer flag if they don't want further
-+     evaluation done. */
-+  if (integer_p (var))
-+    {
-+      if (flags & ASS_APPEND)
-+	{
-+	  oval = value_cell (var);
-+	  lval = evalexp (oval, &expok);	/* ksh93 seems to do this */
-+	  if (expok == 0)
-+	    {
-+	      top_level_cleanup ();
-+	      jump_to_top_level (DISCARD);
-+	    }
-+	}
-+      rval = evalexp (value, &expok);
-+      if (expok == 0)
-+	{
-+	  top_level_cleanup ();
-+	  jump_to_top_level (DISCARD);
-+	}
-+      /* This can be fooled if the variable's value changes while evaluating
-+	 `rval'.  We can change it if we move the evaluation of lval to here. */
-+      if (flags & ASS_APPEND)
-+	rval += lval;
-+      retval = itos (rval);
-+    }
-+#if defined (CASEMOD_ATTRS)
-+  else if (capcase_p (var) || uppercase_p (var) || lowercase_p (var))
-+    {
-+      if (flags & ASS_APPEND)
-+	{
-+	  oval = get_variable_value (var);
-+	  if (oval == 0)	/* paranoia */
-+	    oval = "";
-+	  olen = STRLEN (oval);
-+	  retval = (char *)xmalloc (olen + (value ? STRLEN (value) : 0) + 1);
-+	  strcpy (retval, oval);
-+	  if (value)
-+	    strcpy (retval+olen, value);
-+	}
-+      else if (*value)
-+	retval = savestring (value);
-+      else
-+	{
-+	  retval = (char *)xmalloc (1);
-+	  retval[0] = '\0';
-+	}
-+      op = capcase_p (var) ? CASE_CAPITALIZE
-+			 : (uppercase_p (var) ? CASE_UPPER : CASE_LOWER);
-+      oval = sh_modcase (retval, (char *)0, op);
-+      free (retval);
-+      retval = oval;
-+    }
-+#endif /* CASEMOD_ATTRS */
-+  else if (value)
-+    {
-+      if (flags & ASS_APPEND)
-+	{
-+	  oval = get_variable_value (var);
-+	  if (oval == 0)	/* paranoia */
-+	    oval = "";
-+	  olen = STRLEN (oval);
-+	  retval = (char *)xmalloc (olen + (value ? STRLEN (value) : 0) + 1);
-+	  strcpy (retval, oval);
-+	  if (value)
-+	    strcpy (retval+olen, value);
-+	}
-+      else if (*value)
-+	retval = savestring (value);
-+      else
-+	{
-+	  retval = (char *)xmalloc (1);
-+	  retval[0] = '\0';
-+	}
-+    }
-+  else
-+    retval = (char *)NULL;
-+
-+  return retval;
-+}
-+
-+/* Bind a variable NAME to VALUE in the HASH_TABLE TABLE, which may be the
-+   temporary environment (but usually is not). */
-+static SHELL_VAR *
-+bind_variable_internal (name, value, table, hflags, aflags)
-+     const char *name;
-+     char *value;
-+     HASH_TABLE *table;
-+     int hflags, aflags;
-+{
-+  char *newval;
-+  SHELL_VAR *entry;
-+
-+  entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
-+  /* Follow the nameref chain here if this is the global variables table */
-+  if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
-+    {
-+      entry = find_global_variable (entry->name);
-+      /* Let's see if we have a nameref referencing a variable that hasn't yet
-+	 been created. */
-+      if (entry == 0)
-+	entry = find_variable_last_nameref (name);	/* XXX */
-+      if (entry == 0)					/* just in case */
-+        return (entry);
-+    }
-+
-+  /* The first clause handles `declare -n ref; ref=x;' */
-+  if (entry && invisible_p (entry) && nameref_p (entry))
-+    goto assign_value;
-+  else if (entry && nameref_p (entry))
-+    {
-+      newval = nameref_cell (entry);
-+#if defined (ARRAY_VARS)
-+      /* declare -n foo=x[2] */
-+      if (valid_array_reference (newval))
-+        /* XXX - should it be aflags? */
-+	entry = assign_array_element (newval, make_variable_value (entry, value, 0), aflags);
-+      else
-+#endif
-+      {
-+      entry = make_new_variable (newval, table);
-+      var_setvalue (entry, make_variable_value (entry, value, 0));
-+      }
-+    }
-+  else if (entry == 0)
-+    {
-+      entry = make_new_variable (name, table);
-+      var_setvalue (entry, make_variable_value (entry, value, 0)); /* XXX */
-+    }
-+  else if (entry->assign_func)	/* array vars have assign functions now */
-+    {
-+      INVALIDATE_EXPORTSTR (entry);
-+      newval = (aflags & ASS_APPEND) ? make_variable_value (entry, value, aflags) : value;
-+      if (assoc_p (entry))
-+	entry = (*(entry->assign_func)) (entry, newval, -1, savestring ("0"));
-+      else if (array_p (entry))
-+	entry = (*(entry->assign_func)) (entry, newval, 0, 0);
-+      else
-+	entry = (*(entry->assign_func)) (entry, newval, -1, 0);
-+      if (newval != value)
-+	free (newval);
-+      return (entry);
-+    }
-+  else
-+    {
-+assign_value:
-+      if (readonly_p (entry) || noassign_p (entry))
-+	{
-+	  if (readonly_p (entry))
-+	    err_readonly (name);
-+	  return (entry);
-+	}
-+
-+      /* Variables which are bound are visible. */
-+      VUNSETATTR (entry, att_invisible);
-+
-+#if defined (ARRAY_VARS)
-+      if (assoc_p (entry) || array_p (entry))
-+        newval = make_array_variable_value (entry, 0, "0", value, aflags);
-+      else
-+#endif
-+
-+      newval = make_variable_value (entry, value, aflags);	/* XXX */
-+
-+      /* Invalidate any cached export string */
-+      INVALIDATE_EXPORTSTR (entry);
-+
-+#if defined (ARRAY_VARS)
-+      /* XXX -- this bears looking at again -- XXX */
-+      /* If an existing array variable x is being assigned to with x=b or
-+	 `read x' or something of that nature, silently convert it to
-+	 x[0]=b or `read x[0]'. */
-+      if (assoc_p (entry))
-+	{
-+	  assoc_insert (assoc_cell (entry), savestring ("0"), newval);
-+	  free (newval);
-+	}
-+      else if (array_p (entry))
-+	{
-+	  array_insert (array_cell (entry), 0, newval);
-+	  free (newval);
-+	}
-+      else
-+#endif
-+	{
-+	  FREE (value_cell (entry));
-+	  var_setvalue (entry, newval);
-+	}
-+    }
-+
-+  if (mark_modified_vars)
-+    VSETATTR (entry, att_exported);
-+
-+  if (exported_p (entry))
-+    array_needs_making = 1;
-+
-+  return (entry);
-+}
-+	
-+/* Bind a variable NAME to VALUE.  This conses up the name
-+   and value strings.  If we have a temporary environment, we bind there
-+   first, then we bind into shell_variables. */
-+
-+SHELL_VAR *
-+bind_variable (name, value, flags)
-+     const char *name;
-+     char *value;
-+     int flags;
-+{
-+  SHELL_VAR *v, *nv;
-+  VAR_CONTEXT *vc, *nvc;
-+  int level;
-+
-+  if (shell_variables == 0)
-+    create_variable_tables ();
-+
-+  /* If we have a temporary environment, look there first for the variable,
-+     and, if found, modify the value there before modifying it in the
-+     shell_variables table.  This allows sourced scripts to modify values
-+     given to them in a temporary environment while modifying the variable
-+     value that the caller sees. */
-+  if (temporary_env)
-+    bind_tempenv_variable (name, value);
-+
-+  /* XXX -- handle local variables here. */
-+  for (vc = shell_variables; vc; vc = vc->down)
-+    {
-+      if (vc_isfuncenv (vc) || vc_isbltnenv (vc))
-+	{
-+	  v = hash_lookup (name, vc->table);
-+	  nvc = vc;
-+	  if (v && nameref_p (v))
-+	    {
-+	      nv = find_variable_nameref_context (v, vc, &nvc);
-+	      if (nv == 0)
-+		{
-+		  nv = find_variable_last_nameref_context (v, vc, &nvc);
-+		  if (nv && nameref_p (nv))
-+		    {
-+		      /* If this nameref variable doesn't have a value yet,
-+			 set the value.  Otherwise, assign using the value as
-+			 normal. */
-+		      if (nameref_cell (nv) == 0)
-+			return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
-+		      return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags));
-+		    }
-+		  else
-+		    v = nv;
-+		}
-+	      else
-+	        v = nv;
-+	    }
-+	  if (v)
-+	    return (bind_variable_internal (v->name, value, nvc->table, 0, flags));
-+	}
-+    }
-+  /* bind_variable_internal will handle nameref resolution in this case */
-+  return (bind_variable_internal (name, value, global_variables->table, 0, flags));
-+}
-+
-+SHELL_VAR *
-+bind_global_variable (name, value, flags)
-+     const char *name;
-+     char *value;
-+     int flags;
-+{
-+  SHELL_VAR *v, *nv;
-+  VAR_CONTEXT *vc, *nvc;
-+  int level;
-+
-+  if (shell_variables == 0)
-+    create_variable_tables ();
-+
-+  /* bind_variable_internal will handle nameref resolution in this case */
-+  return (bind_variable_internal (name, value, global_variables->table, 0, flags));
-+}
-+
-+/* Make VAR, a simple shell variable, have value VALUE.  Once assigned a
-+   value, variables are no longer invisible.  This is a duplicate of part
-+   of the internals of bind_variable.  If the variable is exported, or
-+   all modified variables should be exported, mark the variable for export
-+   and note that the export environment needs to be recreated. */
-+SHELL_VAR *
-+bind_variable_value (var, value, aflags)
-+     SHELL_VAR *var;
-+     char *value;
-+     int aflags;
-+{
-+  char *t;
-+  int invis;
-+
-+  invis = invisible_p (var);
-+  VUNSETATTR (var, att_invisible);
-+
-+  if (var->assign_func)
-+    {
-+      /* If we're appending, we need the old value, so use
-+	 make_variable_value */
-+      t = (aflags & ASS_APPEND) ? make_variable_value (var, value, aflags) : value;
-+      (*(var->assign_func)) (var, t, -1, 0);
-+      if (t != value && t)
-+	free (t);      
-+    }
-+  else
-+    {
-+      t = make_variable_value (var, value, aflags);
-+#if defined (ARRAY_VARS)
-+      if ((aflags & ASS_NAMEREF) && (t == 0 || *t == 0 || (legal_identifier (t) == 0 && valid_array_reference (t) == 0)))
-+#else
-+      if ((aflags & ASS_NAMEREF) && (t == 0 || *t == 0 || legal_identifier (t) == 0))
-+#endif
-+	{
-+	  free (t);
-+	  if (invis)
-+	    VSETATTR (var, att_invisible);	/* XXX */
-+	  return ((SHELL_VAR *)NULL);
-+	}
-+      FREE (value_cell (var));
-+      var_setvalue (var, t);
-+    }
-+
-+  INVALIDATE_EXPORTSTR (var);
-+
-+  if (mark_modified_vars)
-+    VSETATTR (var, att_exported);
-+
-+  if (exported_p (var))
-+    array_needs_making = 1;
-+
-+  return (var);
-+}
-+
-+/* Bind/create a shell variable with the name LHS to the RHS.
-+   This creates or modifies a variable such that it is an integer.
-+
-+   This used to be in expr.c, but it is here so that all of the
-+   variable binding stuff is localized.  Since we don't want any
-+   recursive evaluation from bind_variable() (possible without this code,
-+   since bind_variable() calls the evaluator for variables with the integer
-+   attribute set), we temporarily turn off the integer attribute for each
-+   variable we set here, then turn it back on after binding as necessary. */
-+
-+SHELL_VAR *
-+bind_int_variable (lhs, rhs)
-+     char *lhs, *rhs;
-+{
-+  register SHELL_VAR *v;
-+  int isint, isarr, implicitarray;
-+
-+  isint = isarr = implicitarray = 0;
-+#if defined (ARRAY_VARS)
-+  if (valid_array_reference (lhs))
-+    {
-+      isarr = 1;
-+      v = array_variable_part (lhs, (char **)0, (int *)0);
-+    }
-+  else
-+#endif
-+    v = find_variable (lhs);
-+
-+  if (v)
-+    {
-+      isint = integer_p (v);
-+      VUNSETATTR (v, att_integer);
-+#if defined (ARRAY_VARS)
-+      if (array_p (v) && isarr == 0)
-+	implicitarray = 1;
-+#endif
-+    }
-+
-+#if defined (ARRAY_VARS)
-+  if (isarr)
-+    v = assign_array_element (lhs, rhs, 0);
-+  else if (implicitarray)
-+    v = bind_array_variable (lhs, 0, rhs, 0);
-+  else
-+#endif
-+    v = bind_variable (lhs, rhs, 0);
-+
-+  if (v && isint)
-+    VSETATTR (v, att_integer);
-+
-+  VUNSETATTR (v, att_invisible);
-+
-+  return (v);
-+}
-+
-+SHELL_VAR *
-+bind_var_to_int (var, val)
-+     char *var;
-+     intmax_t val;
-+{
-+  char ibuf[INT_STRLEN_BOUND (intmax_t) + 1], *p;
-+
-+  p = fmtulong (val, 10, ibuf, sizeof (ibuf), 0);
-+  return (bind_int_variable (var, p));
-+}
-+
-+/* Do a function binding to a variable.  You pass the name and
-+   the command to bind to.  This conses the name and command. */
-+SHELL_VAR *
-+bind_function (name, value)
-+     const char *name;
-+     COMMAND *value;
-+{
-+  SHELL_VAR *entry;
-+
-+  entry = find_function (name);
-+  if (entry == 0)
-+    {
-+      BUCKET_CONTENTS *elt;
-+
-+      elt = hash_insert (savestring (name), shell_functions, HASH_NOSRCH);
-+      entry = new_shell_variable (name);
-+      elt->data = (PTR_T)entry;
-+    }
-+  else
-+    INVALIDATE_EXPORTSTR (entry);
-+
-+  if (var_isset (entry))
-+    dispose_command (function_cell (entry));
-+
-+  if (value)
-+    var_setfunc (entry, copy_command (value));
-+  else
-+    var_setfunc (entry, 0);
-+
-+  VSETATTR (entry, att_function);
-+
-+  if (mark_modified_vars)
-+    VSETATTR (entry, att_exported);
-+
-+  VUNSETATTR (entry, att_invisible);		/* Just to be sure */
-+
-+  if (exported_p (entry))
-+    array_needs_making = 1;
-+
-+#if defined (PROGRAMMABLE_COMPLETION)
-+  set_itemlist_dirty (&it_functions);
-+#endif
-+
-+  return (entry);
-+}
-+
-+#if defined (DEBUGGER)
-+/* Bind a function definition, which includes source file and line number
-+   information in addition to the command, into the FUNCTION_DEF hash table.*/
-+void
-+bind_function_def (name, value)
-+     const char *name;
-+     FUNCTION_DEF *value;
-+{
-+  FUNCTION_DEF *entry;
-+  BUCKET_CONTENTS *elt;
-+  COMMAND *cmd;
-+
-+  entry = find_function_def (name);
-+  if (entry)
-+    {
-+      dispose_function_def_contents (entry);
-+      entry = copy_function_def_contents (value, entry);
-+    }
-+  else
-+    {
-+      cmd = value->command;
-+      value->command = 0;
-+      entry = copy_function_def (value);
-+      value->command = cmd;
-+
-+      elt = hash_insert (savestring (name), shell_function_defs, HASH_NOSRCH);
-+      elt->data = (PTR_T *)entry;
-+    }
-+}
-+#endif /* DEBUGGER */
-+
-+/* Add STRING, which is of the form foo=bar, to the temporary environment
-+   HASH_TABLE (temporary_env).  The functions in execute_cmd.c are
-+   responsible for moving the main temporary env to one of the other
-+   temporary environments.  The expansion code in subst.c calls this. */
-+int
-+assign_in_env (word, flags)
-+     WORD_DESC *word;
-+     int flags;
-+{
-+  int offset, aflags;
-+  char *name, *temp, *value;
-+  SHELL_VAR *var;
-+  const char *string;
-+
-+  string = word->word;
-+
-+  aflags = 0;
-+  offset = assignment (string, 0);
-+  name = savestring (string);
-+  value = (char *)NULL;
-+
-+  if (name[offset] == '=')
-+    {
-+      name[offset] = 0;
-+
-+      /* don't ignore the `+' when assigning temporary environment */
-+      if (name[offset - 1] == '+')
-+	{
-+	  name[offset - 1] = '\0';
-+	  aflags |= ASS_APPEND;
-+	}
-+
-+      var = find_variable (name);
-+      if (var && (readonly_p (var) || noassign_p (var)))
-+	{
-+	  if (readonly_p (var))
-+	    err_readonly (name);
-+	  free (name);
-+  	  return (0);
-+	}
-+
-+      temp = name + offset + 1;
-+      value = expand_assignment_string_to_string (temp, 0);
-+
-+      if (var && (aflags & ASS_APPEND))
-+	{
-+	  temp = make_variable_value (var, value, aflags);
-+	  FREE (value);
-+	  value = temp;
-+	}
-+    }
-+
-+  if (temporary_env == 0)
-+    temporary_env = hash_create (TEMPENV_HASH_BUCKETS);
-+
-+  var = hash_lookup (name, temporary_env);
-+  if (var == 0)
-+    var = make_new_variable (name, temporary_env);
-+  else
-+    FREE (value_cell (var));
-+
-+  if (value == 0)
-+    {
-+      value = (char *)xmalloc (1);	/* like do_assignment_internal */
-+      value[0] = '\0';
-+    }
-+
-+  var_setvalue (var, value);
-+  var->attributes |= (att_exported|att_tempvar);
-+  var->context = variable_context;	/* XXX */
-+
-+  INVALIDATE_EXPORTSTR (var);
-+  var->exportstr = mk_env_string (name, value, 0);
-+
-+  array_needs_making = 1;
-+
-+  if (flags)
-+    stupidly_hack_special_variables (name);
-+
-+  if (echo_command_at_execute)
-+    /* The Korn shell prints the `+ ' in front of assignment statements,
-+	so we do too. */
-+    xtrace_print_assignment (name, value, 0, 1);
-+
-+  free (name);
-+  return 1;
-+}
-+
-+/* **************************************************************** */
-+/*								    */
-+/*			Copying variables			    */
-+/*								    */
-+/* **************************************************************** */
-+
-+#ifdef INCLUDE_UNUSED
-+/* Copy VAR to a new data structure and return that structure. */
-+SHELL_VAR *
-+copy_variable (var)
-+     SHELL_VAR *var;
-+{
-+  SHELL_VAR *copy = (SHELL_VAR *)NULL;
-+
-+  if (var)
-+    {
-+      copy = (SHELL_VAR *)xmalloc (sizeof (SHELL_VAR));
-+
-+      copy->attributes = var->attributes;
-+      copy->name = savestring (var->name);
-+
-+      if (function_p (var))
-+	var_setfunc (copy, copy_command (function_cell (var)));
-+#if defined (ARRAY_VARS)
-+      else if (array_p (var))
-+	var_setarray (copy, array_copy (array_cell (var)));
-+      else if (assoc_p (var))
-+	var_setassoc (copy, assoc_copy (assoc_cell (var)));
-+#endif
-+      else if (nameref_cell (var))	/* XXX - nameref */
-+	var_setref (copy, savestring (nameref_cell (var)));
-+      else if (value_cell (var))	/* XXX - nameref */
-+	var_setvalue (copy, savestring (value_cell (var)));
-+      else
-+	var_setvalue (copy, (char *)NULL);
-+
-+      copy->dynamic_value = var->dynamic_value;
-+      copy->assign_func = var->assign_func;
-+
-+      copy->exportstr = COPY_EXPORTSTR (var);
-+
-+      copy->context = var->context;
-+    }
-+  return (copy);
-+}
-+#endif
-+
-+/* **************************************************************** */
-+/*								    */
-+/*		  Deleting and unsetting variables		    */
-+/*								    */
-+/* **************************************************************** */
-+
-+/* Dispose of the information attached to VAR. */
-+static void
-+dispose_variable_value (var)
-+     SHELL_VAR *var;
-+{
-+  if (function_p (var))
-+    dispose_command (function_cell (var));
-+#if defined (ARRAY_VARS)
-+  else if (array_p (var))
-+    array_dispose (array_cell (var));
-+  else if (assoc_p (var))
-+    assoc_dispose (assoc_cell (var));
-+#endif
-+  else if (nameref_p (var))
-+    FREE (nameref_cell (var));
-+  else
-+    FREE (value_cell (var));
-+}
-+
-+void
-+dispose_variable (var)
-+     SHELL_VAR *var;
-+{
-+  if (var == 0)
-+    return;
-+
-+  if (nofree_p (var) == 0)
-+    dispose_variable_value (var);
-+
-+  FREE_EXPORTSTR (var);
-+
-+  free (var->name);
-+
-+  if (exported_p (var))
-+    array_needs_making = 1;
-+
-+  free (var);
-+}
-+
-+/* Unset the shell variable referenced by NAME.  Unsetting a nameref variable
-+   unsets the variable it resolves to but leaves the nameref alone. */
-+int
-+unbind_variable (name)
-+     const char *name;
-+{
-+  SHELL_VAR *v, *nv;
-+  int r;
-+
-+  v = var_lookup (name, shell_variables);
-+  nv = (v && nameref_p (v)) ? find_variable_nameref (v) : (SHELL_VAR *)NULL;
-+
-+  r = nv ? makunbound (nv->name, shell_variables) : makunbound (name, shell_variables);
-+  return r;
-+}
-+
-+/* Unbind NAME, where NAME is assumed to be a nameref variable */
-+int
-+unbind_nameref (name)
-+     const char *name;
-+{
-+  SHELL_VAR *v;
-+
-+  v = var_lookup (name, shell_variables);
-+  if (v && nameref_p (v))
-+    return makunbound (name, shell_variables);
-+  return 0;
-+}
-+
-+/* Unset the shell function named NAME. */
-+int
-+unbind_func (name)
-+     const char *name;
-+{
-+  BUCKET_CONTENTS *elt;
-+  SHELL_VAR *func;
-+
-+  elt = hash_remove (name, shell_functions, 0);
-+
-+  if (elt == 0)
-+    return -1;
-+
-+#if defined (PROGRAMMABLE_COMPLETION)
-+  set_itemlist_dirty (&it_functions);
-+#endif
-+
-+  func = (SHELL_VAR *)elt->data;
-+  if (func)
-+    {
-+      if (exported_p (func))
-+	array_needs_making++;
-+      dispose_variable (func);
-+    }
-+
-+  free (elt->key);
-+  free (elt);
-+
-+  return 0;  
-+}
-+
-+#if defined (DEBUGGER)
-+int
-+unbind_function_def (name)
-+     const char *name;
-+{
-+  BUCKET_CONTENTS *elt;
-+  FUNCTION_DEF *funcdef;
-+
-+  elt = hash_remove (name, shell_function_defs, 0);
-+
-+  if (elt == 0)
-+    return -1;
-+
-+  funcdef = (FUNCTION_DEF *)elt->data;
-+  if (funcdef)
-+    dispose_function_def (funcdef);
-+
-+  free (elt->key);
-+  free (elt);
-+
-+  return 0;  
-+}
-+#endif /* DEBUGGER */
-+
-+int
-+delete_var (name, vc)
-+     const char *name;
-+     VAR_CONTEXT *vc;
-+{
-+  BUCKET_CONTENTS *elt;
-+  SHELL_VAR *old_var;
-+  VAR_CONTEXT *v;
-+
-+  for (elt = (BUCKET_CONTENTS *)NULL, v = vc; v; v = v->down)
-+    if (elt = hash_remove (name, v->table, 0))
-+      break;
-+
-+  if (elt == 0)
-+    return (-1);
-+
-+  old_var = (SHELL_VAR *)elt->data;
-+  free (elt->key);
-+  free (elt);
-+
-+  dispose_variable (old_var);
-+  return (0);
-+}
-+
-+/* Make the variable associated with NAME go away.  HASH_LIST is the
-+   hash table from which this variable should be deleted (either
-+   shell_variables or shell_functions).
-+   Returns non-zero if the variable couldn't be found. */
-+int
-+makunbound (name, vc)
-+     const char *name;
-+     VAR_CONTEXT *vc;
-+{
-+  BUCKET_CONTENTS *elt, *new_elt;
-+  SHELL_VAR *old_var;
-+  VAR_CONTEXT *v;
-+  char *t;
-+
-+  for (elt = (BUCKET_CONTENTS *)NULL, v = vc; v; v = v->down)
-+    if (elt = hash_remove (name, v->table, 0))
-+      break;
-+
-+  if (elt == 0)
-+    return (-1);
-+
-+  old_var = (SHELL_VAR *)elt->data;
-+
-+  if (old_var && exported_p (old_var))
-+    array_needs_making++;
-+
-+  /* If we're unsetting a local variable and we're still executing inside
-+     the function, just mark the variable as invisible.  The function
-+     eventually called by pop_var_context() will clean it up later.  This
-+     must be done so that if the variable is subsequently assigned a new
-+     value inside the function, the `local' attribute is still present.
-+     We also need to add it back into the correct hash table. */
-+  if (old_var && local_p (old_var) && variable_context == old_var->context)
-+    {
-+      if (nofree_p (old_var))
-+	var_setvalue (old_var, (char *)NULL);
-+#if defined (ARRAY_VARS)
-+      else if (array_p (old_var))
-+	array_dispose (array_cell (old_var));
-+      else if (assoc_p (old_var))
-+	assoc_dispose (assoc_cell (old_var));
-+#endif
-+      else if (nameref_p (old_var))
-+	FREE (nameref_cell (old_var));
-+      else
-+	FREE (value_cell (old_var));
-+      /* Reset the attributes.  Preserve the export attribute if the variable
-+	 came from a temporary environment.  Make sure it stays local, and
-+	 make it invisible. */ 
-+      old_var->attributes = (exported_p (old_var) && tempvar_p (old_var)) ? att_exported : 0;
-+      VSETATTR (old_var, att_local);
-+      VSETATTR (old_var, att_invisible);
-+      var_setvalue (old_var, (char *)NULL);
-+      INVALIDATE_EXPORTSTR (old_var);
-+
-+      new_elt = hash_insert (savestring (old_var->name), v->table, 0);
-+      new_elt->data = (PTR_T)old_var;
-+      stupidly_hack_special_variables (old_var->name);
-+
-+      free (elt->key);
-+      free (elt);
-+      return (0);
-+    }
-+
-+  /* Have to save a copy of name here, because it might refer to
-+     old_var->name.  If so, stupidly_hack_special_variables will
-+     reference freed memory. */
-+  t = savestring (name);
-+
-+  free (elt->key);
-+  free (elt);
-+
-+  dispose_variable (old_var);
-+  stupidly_hack_special_variables (t);
-+  free (t);
-+
-+  return (0);
-+}
-+
-+/* Get rid of all of the variables in the current context. */
-+void
-+kill_all_local_variables ()
-+{
-+  VAR_CONTEXT *vc;
-+
-+  for (vc = shell_variables; vc; vc = vc->down)
-+    if (vc_isfuncenv (vc) && vc->scope == variable_context)
-+      break;
-+  if (vc == 0)
-+    return;		/* XXX */
-+
-+  if (vc->table && vc_haslocals (vc))
-+    {
-+      delete_all_variables (vc->table);
-+      hash_dispose (vc->table);
-+    }
-+  vc->table = (HASH_TABLE *)NULL;
-+}
-+
-+static void
-+free_variable_hash_data (data)
-+     PTR_T data;
-+{
-+  SHELL_VAR *var;
-+
-+  var = (SHELL_VAR *)data;
-+  dispose_variable (var);
-+}
-+
-+/* Delete the entire contents of the hash table. */
-+void
-+delete_all_variables (hashed_vars)
-+     HASH_TABLE *hashed_vars;
-+{
-+  hash_flush (hashed_vars, free_variable_hash_data);
-+}
-+
-+/* **************************************************************** */
-+/*								    */
-+/*		     Setting variable attributes		    */
-+/*								    */
-+/* **************************************************************** */
-+
-+#define FIND_OR_MAKE_VARIABLE(name, entry) \
-+  do \
-+    { \
-+      entry = find_variable (name); \
-+      if (!entry) \
-+	{ \
-+	  entry = bind_variable (name, "", 0); \
-+	  if (!no_invisible_vars && entry) entry->attributes |= att_invisible; \
-+	} \
-+    } \
-+  while (0)
-+
-+/* Make the variable associated with NAME be readonly.
-+   If NAME does not exist yet, create it. */
-+void
-+set_var_read_only (name)
-+     char *name;
-+{
-+  SHELL_VAR *entry;
-+
-+  FIND_OR_MAKE_VARIABLE (name, entry);
-+  VSETATTR (entry, att_readonly);
-+}
-+
-+#ifdef INCLUDE_UNUSED
-+/* Make the function associated with NAME be readonly.
-+   If NAME does not exist, we just punt, like auto_export code below. */
-+void
-+set_func_read_only (name)
-+     const char *name;
-+{
-+  SHELL_VAR *entry;
-+
-+  entry = find_function (name);
-+  if (entry)
-+    VSETATTR (entry, att_readonly);
-+}
-+
-+/* Make the variable associated with NAME be auto-exported.
-+   If NAME does not exist yet, create it. */
-+void
-+set_var_auto_export (name)
-+     char *name;
-+{
-+  SHELL_VAR *entry;
-+
-+  FIND_OR_MAKE_VARIABLE (name, entry);
-+  set_auto_export (entry);
-+}
-+
-+/* Make the function associated with NAME be auto-exported. */
-+void
-+set_func_auto_export (name)
-+     const char *name;
-+{
-+  SHELL_VAR *entry;
-+
-+  entry = find_function (name);
-+  if (entry)
-+    set_auto_export (entry);
-+}
-+#endif
-+
-+/* **************************************************************** */
-+/*								    */
-+/*		     Creating lists of variables		    */
-+/*								    */
-+/* **************************************************************** */
-+
-+static VARLIST *
-+vlist_alloc (nentries)
-+     int nentries;
-+{
-+  VARLIST  *vlist;
-+
-+  vlist = (VARLIST *)xmalloc (sizeof (VARLIST));
-+  vlist->list = (SHELL_VAR **)xmalloc ((nentries + 1) * sizeof (SHELL_VAR *));
-+  vlist->list_size = nentries;
-+  vlist->list_len = 0;
-+  vlist->list[0] = (SHELL_VAR *)NULL;
-+
-+  return vlist;
-+}
-+
-+static VARLIST *
-+vlist_realloc (vlist, n)
-+     VARLIST *vlist;
-+     int n;
-+{
-+  if (vlist == 0)
-+    return (vlist = vlist_alloc (n));
-+  if (n > vlist->list_size)
-+    {
-+      vlist->list_size = n;
-+      vlist->list = (SHELL_VAR **)xrealloc (vlist->list, (vlist->list_size + 1) * sizeof (SHELL_VAR *));
-+    }
-+  return vlist;
-+}
-+
-+static void
-+vlist_add (vlist, var, flags)
-+     VARLIST *vlist;
-+     SHELL_VAR *var;
-+     int flags;
-+{
-+  register int i;
-+
-+  for (i = 0; i < vlist->list_len; i++)
-+    if (STREQ (var->name, vlist->list[i]->name))
-+      break;
-+  if (i < vlist->list_len)
-+    return;
-+
-+  if (i >= vlist->list_size)
-+    vlist = vlist_realloc (vlist, vlist->list_size + 16);
-+
-+  vlist->list[vlist->list_len++] = var;
-+  vlist->list[vlist->list_len] = (SHELL_VAR *)NULL;
-+}
-+
-+/* Map FUNCTION over the variables in VAR_HASH_TABLE.  Return an array of the
-+   variables for which FUNCTION returns a non-zero value.  A NULL value
-+   for FUNCTION means to use all variables. */
-+SHELL_VAR **
-+map_over (function, vc)
-+     sh_var_map_func_t *function;
-+     VAR_CONTEXT *vc;
-+{
-+  VAR_CONTEXT *v;
-+  VARLIST *vlist;
-+  SHELL_VAR **ret;
-+  int nentries;
-+
-+  for (nentries = 0, v = vc; v; v = v->down)
-+    nentries += HASH_ENTRIES (v->table);
-+
-+  if (nentries == 0)
-+    return (SHELL_VAR **)NULL;
-+
-+  vlist = vlist_alloc (nentries);
-+
-+  for (v = vc; v; v = v->down)
-+    flatten (v->table, function, vlist, 0);
-+
-+  ret = vlist->list;
-+  free (vlist);
-+  return ret;
-+}
-+
-+SHELL_VAR **
-+map_over_funcs (function)
-+     sh_var_map_func_t *function;
-+{
-+  VARLIST *vlist;
-+  SHELL_VAR **ret;
-+
-+  if (shell_functions == 0 || HASH_ENTRIES (shell_functions) == 0)
-+    return ((SHELL_VAR **)NULL);
-+
-+  vlist = vlist_alloc (HASH_ENTRIES (shell_functions));
-+
-+  flatten (shell_functions, function, vlist, 0);
-+
-+  ret = vlist->list;
-+  free (vlist);
-+  return ret;
-+}
-+
-+/* Flatten VAR_HASH_TABLE, applying FUNC to each member and adding those
-+   elements for which FUNC succeeds to VLIST->list.  FLAGS is reserved
-+   for future use.  Only unique names are added to VLIST.  If FUNC is
-+   NULL, each variable in VAR_HASH_TABLE is added to VLIST.  If VLIST is
-+   NULL, FUNC is applied to each SHELL_VAR in VAR_HASH_TABLE.  If VLIST
-+   and FUNC are both NULL, nothing happens. */
-+static void
-+flatten (var_hash_table, func, vlist, flags)
-+     HASH_TABLE *var_hash_table;
-+     sh_var_map_func_t *func;
-+     VARLIST *vlist;
-+     int flags;
-+{
-+  register int i;
-+  register BUCKET_CONTENTS *tlist;
-+  int r;
-+  SHELL_VAR *var;
-+
-+  if (var_hash_table == 0 || (HASH_ENTRIES (var_hash_table) == 0) || (vlist == 0 && func == 0))
-+    return;
-+
-+  for (i = 0; i < var_hash_table->nbuckets; i++)
-+    {
-+      for (tlist = hash_items (i, var_hash_table); tlist; tlist = tlist->next)
-+	{
-+	  var = (SHELL_VAR *)tlist->data;
-+
-+	  r = func ? (*func) (var) : 1;
-+	  if (r && vlist)
-+	    vlist_add (vlist, var, flags);
-+	}
-+    }
-+}
-+
-+void
-+sort_variables (array)
-+     SHELL_VAR **array;
-+{
-+  qsort (array, strvec_len ((char **)array), sizeof (SHELL_VAR *), (QSFUNC *)qsort_var_comp);
-+}
-+
-+static int
-+qsort_var_comp (var1, var2)
-+     SHELL_VAR **var1, **var2;
-+{
-+  int result;
-+
-+  if ((result = (*var1)->name[0] - (*var2)->name[0]) == 0)
-+    result = strcmp ((*var1)->name, (*var2)->name);
-+
-+  return (result);
-+}
-+
-+/* Apply FUNC to each variable in SHELL_VARIABLES, adding each one for
-+   which FUNC succeeds to an array of SHELL_VAR *s.  Returns the array. */
-+static SHELL_VAR **
-+vapply (func)
-+     sh_var_map_func_t *func;
-+{
-+  SHELL_VAR **list;
-+
-+  list = map_over (func, shell_variables);
-+  if (list /* && posixly_correct */)
-+    sort_variables (list);
-+  return (list);
-+}
-+
-+/* Apply FUNC to each variable in SHELL_FUNCTIONS, adding each one for
-+   which FUNC succeeds to an array of SHELL_VAR *s.  Returns the array. */
-+static SHELL_VAR **
-+fapply (func)
-+     sh_var_map_func_t *func;
-+{
-+  SHELL_VAR **list;
-+
-+  list = map_over_funcs (func);
-+  if (list /* && posixly_correct */)
-+    sort_variables (list);
-+  return (list);
-+}
-+
-+/* Create a NULL terminated array of all the shell variables. */
-+SHELL_VAR **
-+all_shell_variables ()
-+{
-+  return (vapply ((sh_var_map_func_t *)NULL));
-+}
-+
-+/* Create a NULL terminated array of all the shell functions. */
-+SHELL_VAR **
-+all_shell_functions ()
-+{
-+  return (fapply ((sh_var_map_func_t *)NULL));
-+}
-+
-+static int
-+visible_var (var)
-+     SHELL_VAR *var;
-+{
-+  return (invisible_p (var) == 0);
-+}
-+
-+SHELL_VAR **
-+all_visible_functions ()
-+{
-+  return (fapply (visible_var));
-+}
-+
-+SHELL_VAR **
-+all_visible_variables ()
-+{
-+  return (vapply (visible_var));
-+}
-+
-+/* Return non-zero if the variable VAR is visible and exported.  Array
-+   variables cannot be exported. */
-+static int
-+visible_and_exported (var)
-+     SHELL_VAR *var;
-+{
-+  return (invisible_p (var) == 0 && exported_p (var));
-+}
-+
-+/* Candidate variables for the export environment are either valid variables
-+   with the export attribute or invalid variables inherited from the initial
-+   environment and simply passed through. */
-+static int
-+export_environment_candidate (var)
-+     SHELL_VAR *var;
-+{
-+  return (exported_p (var) && (invisible_p (var) == 0 || imported_p (var)));
-+}
-+
-+/* Return non-zero if VAR is a local variable in the current context and
-+   is exported. */
-+static int
-+local_and_exported (var)
-+     SHELL_VAR *var;
-+{
-+  return (invisible_p (var) == 0 && local_p (var) && var->context == variable_context && exported_p (var));
-+}
-+
-+SHELL_VAR **
-+all_exported_variables ()
-+{
-+  return (vapply (visible_and_exported));
-+}
-+
-+SHELL_VAR **
-+local_exported_variables ()
-+{
-+  return (vapply (local_and_exported));
-+}
-+
-+static int
-+variable_in_context (var)
-+     SHELL_VAR *var;
-+{
-+  return (invisible_p (var) == 0 && local_p (var) && var->context == variable_context);
-+}
-+
-+SHELL_VAR **
-+all_local_variables ()
-+{
-+  VARLIST *vlist;
-+  SHELL_VAR **ret;
-+  VAR_CONTEXT *vc;
-+
-+  vc = shell_variables;
-+  for (vc = shell_variables; vc; vc = vc->down)
-+    if (vc_isfuncenv (vc) && vc->scope == variable_context)
-+      break;
-+
-+  if (vc == 0)
-+    {
-+      internal_error (_("all_local_variables: no function context at current scope"));
-+      return (SHELL_VAR **)NULL;
-+    }
-+  if (vc->table == 0 || HASH_ENTRIES (vc->table) == 0 || vc_haslocals (vc) == 0)
-+    return (SHELL_VAR **)NULL;
-+    
-+  vlist = vlist_alloc (HASH_ENTRIES (vc->table));
-+
-+  flatten (vc->table, variable_in_context, vlist, 0);
-+
-+  ret = vlist->list;
-+  free (vlist);
-+  if (ret)
-+    sort_variables (ret);
-+  return ret;
-+}
-+
-+#if defined (ARRAY_VARS)
-+/* Return non-zero if the variable VAR is visible and an array. */
-+static int
-+visible_array_vars (var)
-+     SHELL_VAR *var;
-+{
-+  return (invisible_p (var) == 0 && array_p (var));
-+}
-+
-+SHELL_VAR **
-+all_array_variables ()
-+{
-+  return (vapply (visible_array_vars));
-+}
-+#endif /* ARRAY_VARS */
-+
-+char **
-+all_variables_matching_prefix (prefix)
-+     const char *prefix;
-+{
-+  SHELL_VAR **varlist;
-+  char **rlist;
-+  int vind, rind, plen;
-+
-+  plen = STRLEN (prefix);
-+  varlist = all_visible_variables ();
-+  for (vind = 0; varlist && varlist[vind]; vind++)
-+    ;
-+  if (varlist == 0 || vind == 0)
-+    return ((char **)NULL);
-+  rlist = strvec_create (vind + 1);
-+  for (vind = rind = 0; varlist[vind]; vind++)
-+    {
-+      if (plen == 0 || STREQN (prefix, varlist[vind]->name, plen))
-+	rlist[rind++] = savestring (varlist[vind]->name);
-+    }
-+  rlist[rind] = (char *)0;
-+  free (varlist);
-+
-+  return rlist;
-+}
-+
-+/* **************************************************************** */
-+/*								    */
-+/*		 Managing temporary variable scopes		    */
-+/*								    */
-+/* **************************************************************** */
-+
-+/* Make variable NAME have VALUE in the temporary environment. */
-+static SHELL_VAR *
-+bind_tempenv_variable (name, value)
-+     const char *name;
-+     char *value;
-+{
-+  SHELL_VAR *var;
-+
-+  var = temporary_env ? hash_lookup (name, temporary_env) : (SHELL_VAR *)NULL;
-+
-+  if (var)
-+    {
-+      FREE (value_cell (var));
-+      var_setvalue (var, savestring (value));
-+      INVALIDATE_EXPORTSTR (var);
-+    }
-+
-+  return (var);
-+}
-+
-+/* Find a variable in the temporary environment that is named NAME.
-+   Return the SHELL_VAR *, or NULL if not found. */
-+SHELL_VAR *
-+find_tempenv_variable (name)
-+     const char *name;
-+{
-+  return (temporary_env ? hash_lookup (name, temporary_env) : (SHELL_VAR *)NULL);
-+}
-+
-+char **tempvar_list;
-+int tvlist_ind;
-+
-+/* Push the variable described by (SHELL_VAR *)DATA down to the next
-+   variable context from the temporary environment. */
-+static void
-+push_temp_var (data)
-+     PTR_T data;
-+{
-+  SHELL_VAR *var, *v;
-+  HASH_TABLE *binding_table;
-+
-+  var = (SHELL_VAR *)data;
-+
-+  binding_table = shell_variables->table;
-+  if (binding_table == 0)
-+    {
-+      if (shell_variables == global_variables)
-+	/* shouldn't happen */
-+	binding_table = shell_variables->table = global_variables->table = hash_create (0);
-+      else
-+	binding_table = shell_variables->table = hash_create (TEMPENV_HASH_BUCKETS);
-+    }
-+
-+  v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, 0);
-+
-+  /* XXX - should we set the context here?  It shouldn't matter because of how
-+     assign_in_env works, but might want to check. */
-+  if (binding_table == global_variables->table)		/* XXX */
-+    var->attributes &= ~(att_tempvar|att_propagate);
-+  else
-+    {
-+      var->attributes |= att_propagate;
-+      if  (binding_table == shell_variables->table)
-+	shell_variables->flags |= VC_HASTMPVAR;
-+    }
-+  v->attributes |= var->attributes;
-+
-+  if (find_special_var (var->name) >= 0)
-+    tempvar_list[tvlist_ind++] = savestring (var->name);
-+
-+  dispose_variable (var);
-+}
-+
-+static void
-+propagate_temp_var (data)
-+     PTR_T data;
-+{
-+  SHELL_VAR *var;
-+
-+  var = (SHELL_VAR *)data;
-+  if (tempvar_p (var) && (var->attributes & att_propagate))
-+    push_temp_var (data);
-+  else
-+    {
-+      if (find_special_var (var->name) >= 0)
-+	tempvar_list[tvlist_ind++] = savestring (var->name);
-+      dispose_variable (var);
-+    }
-+}
-+
-+/* Free the storage used in the hash table for temporary
-+   environment variables.  PUSHF is a function to be called
-+   to free each hash table entry.  It takes care of pushing variables
-+   to previous scopes if appropriate.  PUSHF stores names of variables
-+   that require special handling (e.g., IFS) on tempvar_list, so this
-+   function can call stupidly_hack_special_variables on all the
-+   variables in the list when the temporary hash table is destroyed. */
-+static void
-+dispose_temporary_env (pushf)
-+     sh_free_func_t *pushf;
-+{
-+  int i;
-+
-+  tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1);
-+  tempvar_list[tvlist_ind = 0] = 0;
-+    
-+  hash_flush (temporary_env, pushf);
-+  hash_dispose (temporary_env);
-+  temporary_env = (HASH_TABLE *)NULL;
-+
-+  tempvar_list[tvlist_ind] = 0;
-+
-+  array_needs_making = 1;
-+
-+#if 0
-+  sv_ifs ("IFS");		/* XXX here for now -- check setifs in assign_in_env */  
-+#endif
-+  for (i = 0; i < tvlist_ind; i++)
-+    stupidly_hack_special_variables (tempvar_list[i]);
-+
-+  strvec_dispose (tempvar_list);
-+  tempvar_list = 0;
-+  tvlist_ind = 0;
-+}
-+
-+void
-+dispose_used_env_vars ()
-+{
-+  if (temporary_env)
-+    {
-+      dispose_temporary_env (propagate_temp_var);
-+      maybe_make_export_env ();
-+    }
-+}
-+
-+/* Take all of the shell variables in the temporary environment HASH_TABLE
-+   and make shell variables from them at the current variable context. */
-+void
-+merge_temporary_env ()
-+{
-+  if (temporary_env)
-+    dispose_temporary_env (push_temp_var);
-+}
-+
-+/* **************************************************************** */
-+/*								    */
-+/*	     Creating and manipulating the environment		    */
-+/*								    */
-+/* **************************************************************** */
-+
-+static inline char *
-+mk_env_string (name, value, isfunc)
-+     const char *name, *value;
-+     int isfunc;
-+{
-+  size_t name_len, value_len;
-+  char	*p, *q;
-+
-+  name_len = strlen (name);
-+  value_len = STRLEN (value);
-+
-+  /* If we are exporting a shell function, construct the encoded function
-+     name. */
-+  if (isfunc && value)
-+    {
-+      p = (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFFLEN + value_len + 2);
-+      q = p;
-+      memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN);
-+      q += BASHFUNC_PREFLEN;
-+      memcpy (q, name, name_len);
-+      q += name_len;
-+      memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN);
-+      q += BASHFUNC_SUFFLEN;
-+    }
-+  else
-+    {
-+      p = (char *)xmalloc (2 + name_len + value_len);
-+      memcpy (p, name, name_len);
-+      q = p + name_len;
-+    }
-+
-+  q[0] = '=';
-+  if (value && *value)
-+    memcpy (q + 1, value, value_len + 1);
-+  else
-+    q[1] = '\0';
-+
-+  return (p);
-+}
-+
-+#ifdef DEBUG
-+/* Debugging */
-+static int
-+valid_exportstr (v)
-+     SHELL_VAR *v;
-+{
-+  char *s;
-+
-+  s = v->exportstr;
-+  if (s == 0)
-+    {
-+      internal_error (_("%s has null exportstr"), v->name);
-+      return (0);
-+    }
-+  if (legal_variable_starter ((unsigned char)*s) == 0)
-+    {
-+      internal_error (_("invalid character %d in exportstr for %s"), *s, v->name);
-+      return (0);
-+    }
-+  for (s = v->exportstr + 1; s && *s; s++)
-+    {
-+      if (*s == '=')
-+	break;
-+      if (legal_variable_char ((unsigned char)*s) == 0)
-+	{
-+	  internal_error (_("invalid character %d in exportstr for %s"), *s, v->name);
-+	  return (0);
-+	}
-+    }
-+  if (*s != '=')
-+    {
-+      internal_error (_("no `=' in exportstr for %s"), v->name);
-+      return (0);
-+    }
-+  return (1);
-+}
-+#endif
-+
-+static char **
-+make_env_array_from_var_list (vars)
-+     SHELL_VAR **vars;
-+{
-+  register int i, list_index;
-+  register SHELL_VAR *var;
-+  char **list, *value;
-+
-+  list = strvec_create ((1 + strvec_len ((char **)vars)));
-+
-+#define USE_EXPORTSTR (value == var->exportstr)
-+
-+  for (i = 0, list_index = 0; var = vars[i]; i++)
-+    {
-+#if defined (__CYGWIN__)
-+      /* We don't use the exportstr stuff on Cygwin at all. */
-+      INVALIDATE_EXPORTSTR (var);
-+#endif
-+      if (var->exportstr)
-+	value = var->exportstr;
-+      else if (function_p (var))
-+	value = named_function_string ((char *)NULL, function_cell (var), 0);
-+#if defined (ARRAY_VARS)
-+      else if (array_p (var))
-+#  if ARRAY_EXPORT
-+	value = array_to_assignment_string (array_cell (var));
-+#  else
-+	continue;	/* XXX array vars cannot yet be exported */
-+#  endif /* ARRAY_EXPORT */
-+      else if (assoc_p (var))
-+#  if 0
-+	value = assoc_to_assignment_string (assoc_cell (var));
-+#  else
-+	continue;	/* XXX associative array vars cannot yet be exported */
-+#  endif
-+#endif
-+      else
-+	value = value_cell (var);
-+
-+      if (value)
-+	{
-+	  /* Gee, I'd like to get away with not using savestring() if we're
-+	     using the cached exportstr... */
-+	  list[list_index] = USE_EXPORTSTR ? savestring (value)
-+					   : mk_env_string (var->name, value, function_p (var));
-+
-+	  if (USE_EXPORTSTR == 0)
-+	    SAVE_EXPORTSTR (var, list[list_index]);
-+
-+	  list_index++;
-+#undef USE_EXPORTSTR
-+
-+#if 0	/* not yet */
-+#if defined (ARRAY_VARS)
-+	  if (array_p (var) || assoc_p (var))
-+	    free (value);
-+#endif
-+#endif
-+	}
-+    }
-+
-+  list[list_index] = (char *)NULL;
-+  return (list);
-+}
-+
-+/* Make an array of assignment statements from the hash table
-+   HASHED_VARS which contains SHELL_VARs.  Only visible, exported
-+   variables are eligible. */
-+static char **
-+make_var_export_array (vcxt)
-+     VAR_CONTEXT *vcxt;
-+{
-+  char **list;
-+  SHELL_VAR **vars;
-+
-+#if 0
-+  vars = map_over (visible_and_exported, vcxt);
-+#else
-+  vars = map_over (export_environment_candidate, vcxt);
-+#endif
-+
-+  if (vars == 0)
-+    return (char **)NULL;
-+
-+  list = make_env_array_from_var_list (vars);
-+
-+  free (vars);
-+  return (list);
-+}
-+
-+static char **
-+make_func_export_array ()
-+{
-+  char **list;
-+  SHELL_VAR **vars;
-+
-+  vars = map_over_funcs (visible_and_exported);
-+  if (vars == 0)
-+    return (char **)NULL;
-+
-+  list = make_env_array_from_var_list (vars);
-+
-+  free (vars);
-+  return (list);
-+}
-+
-+/* Add ENVSTR to the end of the exported environment, EXPORT_ENV. */
-+#define add_to_export_env(envstr,do_alloc) \
-+do \
-+  { \
-+    if (export_env_index >= (export_env_size - 1)) \
-+      { \
-+	export_env_size += 16; \
-+	export_env = strvec_resize (export_env, export_env_size); \
-+	environ = export_env; \
-+      } \
-+    export_env[export_env_index++] = (do_alloc) ? savestring (envstr) : envstr; \
-+    export_env[export_env_index] = (char *)NULL; \
-+  } while (0)
-+
-+/* Add ASSIGN to EXPORT_ENV, or supercede a previous assignment in the
-+   array with the same left-hand side.  Return the new EXPORT_ENV. */
-+char **
-+add_or_supercede_exported_var (assign, do_alloc)
-+     char *assign;
-+     int do_alloc;
-+{
-+  register int i;
-+  int equal_offset;
-+
-+  equal_offset = assignment (assign, 0);
-+  if (equal_offset == 0)
-+    return (export_env);
-+
-+  /* If this is a function, then only supersede the function definition.
-+     We do this by including the `=() {' in the comparison, like
-+     initialize_shell_variables does. */
-+  if (assign[equal_offset + 1] == '(' &&
-+     strncmp (assign + equal_offset + 2, ") {", 3) == 0)		/* } */
-+    equal_offset += 4;
-+
-+  for (i = 0; i < export_env_index; i++)
-+    {
-+      if (STREQN (assign, export_env[i], equal_offset + 1))
-+	{
-+	  free (export_env[i]);
-+	  export_env[i] = do_alloc ? savestring (assign) : assign;
-+	  return (export_env);
-+	}
-+    }
-+  add_to_export_env (assign, do_alloc);
-+  return (export_env);
-+}
-+
-+static void
-+add_temp_array_to_env (temp_array, do_alloc, do_supercede)
-+     char **temp_array;
-+     int do_alloc, do_supercede;
-+{
-+  register int i;
-+
-+  if (temp_array == 0)
-+    return;
-+
-+  for (i = 0; temp_array[i]; i++)
-+    {
-+      if (do_supercede)
-+	export_env = add_or_supercede_exported_var (temp_array[i], do_alloc);
-+      else
-+	add_to_export_env (temp_array[i], do_alloc);
-+    }
-+
-+  free (temp_array);
-+}
-+
-+/* Make the environment array for the command about to be executed, if the
-+   array needs making.  Otherwise, do nothing.  If a shell action could
-+   change the array that commands receive for their environment, then the
-+   code should `array_needs_making++'.
-+
-+   The order to add to the array is:
-+   	temporary_env
-+   	list of var contexts whose head is shell_variables
-+  	shell_functions
-+
-+  This is the shell variable lookup order.  We add only new variable
-+  names at each step, which allows local variables and variables in
-+  the temporary environments to shadow variables in the global (or
-+  any previous) scope.
-+*/
-+
-+static int
-+n_shell_variables ()
-+{
-+  VAR_CONTEXT *vc;
-+  int n;
-+
-+  for (n = 0, vc = shell_variables; vc; vc = vc->down)
-+    n += HASH_ENTRIES (vc->table);
-+  return n;
-+}
-+
-+int
-+chkexport (name)
-+     char *name;
-+{
-+  SHELL_VAR *v;
-+
-+  v = find_variable (name);
-+  if (v && exported_p (v))
-+    {
-+      array_needs_making = 1;
-+      maybe_make_export_env ();
-+      return 1;
-+    }
-+  return 0;
-+}
-+
-+void
-+maybe_make_export_env ()
-+{
-+  register char **temp_array;
-+  int new_size;
-+  VAR_CONTEXT *tcxt;
-+
-+  if (array_needs_making)
-+    {
-+      if (export_env)
-+	strvec_flush (export_env);
-+
-+      /* Make a guess based on how many shell variables and functions we
-+	 have.  Since there will always be array variables, and array
-+	 variables are not (yet) exported, this will always be big enough
-+	 for the exported variables and functions. */
-+      new_size = n_shell_variables () + HASH_ENTRIES (shell_functions) + 1 +
-+		 HASH_ENTRIES (temporary_env);
-+      if (new_size > export_env_size)
-+	{
-+	  export_env_size = new_size;
-+	  export_env = strvec_resize (export_env, export_env_size);
-+	  environ = export_env;
-+	}
-+      export_env[export_env_index = 0] = (char *)NULL;
-+
-+      /* Make a dummy variable context from the temporary_env, stick it on
-+	 the front of shell_variables, call make_var_export_array on the
-+	 whole thing to flatten it, and convert the list of SHELL_VAR *s
-+	 to the form needed by the environment. */
-+      if (temporary_env)
-+	{
-+	  tcxt = new_var_context ((char *)NULL, 0);
-+	  tcxt->table = temporary_env;
-+	  tcxt->down = shell_variables;
-+	}
-+      else
-+	tcxt = shell_variables;
-+      
-+      temp_array = make_var_export_array (tcxt);
-+      if (temp_array)
-+	add_temp_array_to_env (temp_array, 0, 0);
-+
-+      if (tcxt != shell_variables)
-+	free (tcxt);
-+
-+#if defined (RESTRICTED_SHELL)
-+      /* Restricted shells may not export shell functions. */
-+      temp_array = restricted ? (char **)0 : make_func_export_array ();
-+#else
-+      temp_array = make_func_export_array ();
-+#endif
-+      if (temp_array)
-+	add_temp_array_to_env (temp_array, 0, 0);
-+
-+      array_needs_making = 0;
-+    }
-+}
-+
-+/* This is an efficiency hack.  PWD and OLDPWD are auto-exported, so
-+   we will need to remake the exported environment every time we
-+   change directories.  `_' is always put into the environment for
-+   every external command, so without special treatment it will always
-+   cause the environment to be remade.
-+
-+   If there is no other reason to make the exported environment, we can
-+   just update the variables in place and mark the exported environment
-+   as no longer needing a remake. */
-+void
-+update_export_env_inplace (env_prefix, preflen, value)
-+     char *env_prefix;
-+     int preflen;
-+     char *value;
-+{
-+  char *evar;
-+
-+  evar = (char *)xmalloc (STRLEN (value) + preflen + 1);
-+  strcpy (evar, env_prefix);
-+  if (value)
-+    strcpy (evar + preflen, value);
-+  export_env = add_or_supercede_exported_var (evar, 0);
-+}
-+
-+/* We always put _ in the environment as the name of this command. */
-+void
-+put_command_name_into_env (command_name)
-+     char *command_name;
-+{
-+  update_export_env_inplace ("_=", 2, command_name);
-+}
-+
-+/* **************************************************************** */
-+/*								    */
-+/*		      Managing variable contexts		    */
-+/*								    */
-+/* **************************************************************** */
-+
-+/* Allocate and return a new variable context with NAME and FLAGS.
-+   NAME can be NULL. */
-+
-+VAR_CONTEXT *
-+new_var_context (name, flags)
-+     char *name;
-+     int flags;
-+{
-+  VAR_CONTEXT *vc;
-+
-+  vc = (VAR_CONTEXT *)xmalloc (sizeof (VAR_CONTEXT));
-+  vc->name = name ? savestring (name) : (char *)NULL;
-+  vc->scope = variable_context;
-+  vc->flags = flags;
-+
-+  vc->up = vc->down = (VAR_CONTEXT *)NULL;
-+  vc->table = (HASH_TABLE *)NULL;
-+
-+  return vc;
-+}
-+
-+/* Free a variable context and its data, including the hash table.  Dispose
-+   all of the variables. */
-+void
-+dispose_var_context (vc)
-+     VAR_CONTEXT *vc;
-+{
-+  FREE (vc->name);
-+
-+  if (vc->table)
-+    {
-+      delete_all_variables (vc->table);
-+      hash_dispose (vc->table);
-+    }
-+
-+  free (vc);
-+}
-+
-+/* Set VAR's scope level to the current variable context. */
-+static int
-+set_context (var)
-+     SHELL_VAR *var;
-+{
-+  return (var->context = variable_context);
-+}
-+
-+/* Make a new variable context with NAME and FLAGS and a HASH_TABLE of
-+   temporary variables, and push it onto shell_variables.  This is
-+   for shell functions. */
-+VAR_CONTEXT *
-+push_var_context (name, flags, tempvars)
-+     char *name;
-+     int flags;
-+     HASH_TABLE *tempvars;
-+{
-+  VAR_CONTEXT *vc;
-+
-+  vc = new_var_context (name, flags);
-+  vc->table = tempvars;
-+  if (tempvars)
-+    {
-+      /* Have to do this because the temp environment was created before
-+	 variable_context was incremented. */
-+      flatten (tempvars, set_context, (VARLIST *)NULL, 0);
-+      vc->flags |= VC_HASTMPVAR;
-+    }
-+  vc->down = shell_variables;
-+  shell_variables->up = vc;
-+
-+  return (shell_variables = vc);
-+}
-+
-+static void
-+push_func_var (data)
-+     PTR_T data;
-+{
-+  SHELL_VAR *var, *v;
-+
-+  var = (SHELL_VAR *)data;
-+
-+  if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate)))
-+    {
-+      /* Make sure we have a hash table to store the variable in while it is
-+	 being propagated down to the global variables table.  Create one if
-+	 we have to */
-+      if ((vc_isfuncenv (shell_variables) || vc_istempenv (shell_variables)) && shell_variables->table == 0)
-+	shell_variables->table = hash_create (0);
-+      /* XXX - should we set v->context here? */
-+      v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
-+      if (shell_variables == global_variables)
-+	var->attributes &= ~(att_tempvar|att_propagate);
-+      else
-+	shell_variables->flags |= VC_HASTMPVAR;
-+      v->attributes |= var->attributes;
-+    }
-+  else
-+    stupidly_hack_special_variables (var->name);	/* XXX */
-+
-+  dispose_variable (var);
-+}
-+
-+/* Pop the top context off of VCXT and dispose of it, returning the rest of
-+   the stack. */
-+void
-+pop_var_context ()
-+{
-+  VAR_CONTEXT *ret, *vcxt;
-+
-+  vcxt = shell_variables;
-+  if (vc_isfuncenv (vcxt) == 0)
-+    {
-+      internal_error (_("pop_var_context: head of shell_variables not a function context"));
-+      return;
-+    }
-+
-+  if (ret = vcxt->down)
-+    {
-+      ret->up = (VAR_CONTEXT *)NULL;
-+      shell_variables = ret;
-+      if (vcxt->table)
-+	hash_flush (vcxt->table, push_func_var);
-+      dispose_var_context (vcxt);
-+    }
-+  else
-+    internal_error (_("pop_var_context: no global_variables context"));
-+}
-+
-+/* Delete the HASH_TABLEs for all variable contexts beginning at VCXT, and
-+   all of the VAR_CONTEXTs except GLOBAL_VARIABLES. */
-+void
-+delete_all_contexts (vcxt)
-+     VAR_CONTEXT *vcxt;
-+{
-+  VAR_CONTEXT *v, *t;
-+
-+  for (v = vcxt; v != global_variables; v = t)
-+    {
-+      t = v->down;
-+      dispose_var_context (v);
-+    }    
-+
-+  delete_all_variables (global_variables->table);
-+  shell_variables = global_variables;
-+}
-+
-+/* **************************************************************** */
-+/*								    */
-+/*	   Pushing and Popping temporary variable scopes	    */
-+/*								    */
-+/* **************************************************************** */
-+
-+VAR_CONTEXT *
-+push_scope (flags, tmpvars)
-+     int flags;
-+     HASH_TABLE *tmpvars;
-+{
-+  return (push_var_context ((char *)NULL, flags, tmpvars));
-+}
-+
-+static void
-+push_exported_var (data)
-+     PTR_T data;
-+{
-+  SHELL_VAR *var, *v;
-+
-+  var = (SHELL_VAR *)data;
-+
-+  /* If a temp var had its export attribute set, or it's marked to be
-+     propagated, bind it in the previous scope before disposing it. */
-+  /* XXX - This isn't exactly right, because all tempenv variables have the
-+    export attribute set. */
-+#if 0
-+  if (exported_p (var) || (var->attributes & att_propagate))
-+#else
-+  if (tempvar_p (var) && exported_p (var) && (var->attributes & att_propagate))
-+#endif
-+    {
-+      var->attributes &= ~att_tempvar;		/* XXX */
-+      v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
-+      if (shell_variables == global_variables)
-+	var->attributes &= ~att_propagate;
-+      v->attributes |= var->attributes;
-+    }
-+  else
-+    stupidly_hack_special_variables (var->name);	/* XXX */
-+
-+  dispose_variable (var);
-+}
-+
-+void
-+pop_scope (is_special)
-+     int is_special;
-+{
-+  VAR_CONTEXT *vcxt, *ret;
-+
-+  vcxt = shell_variables;
-+  if (vc_istempscope (vcxt) == 0)
-+    {
-+      internal_error (_("pop_scope: head of shell_variables not a temporary environment scope"));
-+      return;
-+    }
-+
-+  ret = vcxt->down;
-+  if (ret)
-+    ret->up = (VAR_CONTEXT *)NULL;
-+
-+  shell_variables = ret;
-+
-+  /* Now we can take care of merging variables in VCXT into set of scopes
-+     whose head is RET (shell_variables). */
-+  FREE (vcxt->name);
-+  if (vcxt->table)
-+    {
-+      if (is_special)
-+	hash_flush (vcxt->table, push_func_var);
-+      else
-+	hash_flush (vcxt->table, push_exported_var);
-+      hash_dispose (vcxt->table);
-+    }
-+  free (vcxt);
-+
-+  sv_ifs ("IFS");	/* XXX here for now */
-+}
-+
-+/* **************************************************************** */
-+/*								    */
-+/*		 Pushing and Popping function contexts		    */
-+/*								    */
-+/* **************************************************************** */
-+
-+static WORD_LIST **dollar_arg_stack = (WORD_LIST **)NULL;
-+static int dollar_arg_stack_slots;
-+static int dollar_arg_stack_index;
-+
-+/* XXX - we might want to consider pushing and popping the `getopts' state
-+   when we modify the positional parameters. */
-+void
-+push_context (name, is_subshell, tempvars)
-+     char *name;	/* function name */
-+     int is_subshell;
-+     HASH_TABLE *tempvars;
-+{
-+  if (is_subshell == 0)
-+    push_dollar_vars ();
-+  variable_context++;
-+  push_var_context (name, VC_FUNCENV, tempvars);
-+}
-+
-+/* Only called when subshell == 0, so we don't need to check, and can
-+   unconditionally pop the dollar vars off the stack. */
-+void
-+pop_context ()
-+{
-+  pop_dollar_vars ();
-+  variable_context--;
-+  pop_var_context ();
-+
-+  sv_ifs ("IFS");		/* XXX here for now */
-+}
-+
-+/* Save the existing positional parameters on a stack. */
-+void
-+push_dollar_vars ()
-+{
-+  if (dollar_arg_stack_index + 2 > dollar_arg_stack_slots)
-+    {
-+      dollar_arg_stack = (WORD_LIST **)
-+	xrealloc (dollar_arg_stack, (dollar_arg_stack_slots += 10)
-+		  * sizeof (WORD_LIST *));
-+    }
-+  dollar_arg_stack[dollar_arg_stack_index++] = list_rest_of_args ();
-+  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
-+}
-+
-+/* Restore the positional parameters from our stack. */
-+void
-+pop_dollar_vars ()
-+{
-+  if (!dollar_arg_stack || dollar_arg_stack_index == 0)
-+    return;
-+
-+  remember_args (dollar_arg_stack[--dollar_arg_stack_index], 1);
-+  dispose_words (dollar_arg_stack[dollar_arg_stack_index]);
-+  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
-+  set_dollar_vars_unchanged ();
-+}
-+
-+void
-+dispose_saved_dollar_vars ()
-+{
-+  if (!dollar_arg_stack || dollar_arg_stack_index == 0)
-+    return;
-+
-+  dispose_words (dollar_arg_stack[dollar_arg_stack_index]);
-+  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
-+}
-+
-+/* Manipulate the special BASH_ARGV and BASH_ARGC variables. */
-+
-+void
-+push_args (list)
-+     WORD_LIST *list;
-+{
-+#if defined (ARRAY_VARS) && defined (DEBUGGER)
-+  SHELL_VAR *bash_argv_v, *bash_argc_v;
-+  ARRAY *bash_argv_a, *bash_argc_a;
-+  WORD_LIST *l;
-+  arrayind_t i;
-+  char *t;
-+
-+  GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a);
-+  GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a);
-+
-+  for (l = list, i = 0; l; l = l->next, i++)
-+    array_push (bash_argv_a, l->word->word);
-+
-+  t = itos (i);
-+  array_push (bash_argc_a, t);
-+  free (t);
-+#endif /* ARRAY_VARS && DEBUGGER */
-+}
-+
-+/* Remove arguments from BASH_ARGV array.  Pop top element off BASH_ARGC
-+   array and use that value as the count of elements to remove from
-+   BASH_ARGV. */
-+void
-+pop_args ()
-+{
-+#if defined (ARRAY_VARS) && defined (DEBUGGER)
-+  SHELL_VAR *bash_argv_v, *bash_argc_v;
-+  ARRAY *bash_argv_a, *bash_argc_a;
-+  ARRAY_ELEMENT *ce;
-+  intmax_t i;
-+
-+  GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a);
-+  GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a);
-+
-+  ce = array_shift (bash_argc_a, 1, 0);
-+  if (ce == 0 || legal_number (element_value (ce), &i) == 0)
-+    i = 0;
-+
-+  for ( ; i > 0; i--)
-+    array_pop (bash_argv_a);
-+  array_dispose_element (ce);
-+#endif /* ARRAY_VARS && DEBUGGER */
-+}
-+
-+/*************************************************
-+ *						 *
-+ *	Functions to manage special variables	 *
-+ *						 *
-+ *************************************************/
-+
-+/* Extern declarations for variables this code has to manage. */
-+extern int eof_encountered, eof_encountered_limit, ignoreeof;
-+
-+#if defined (READLINE)
-+extern int hostname_list_initialized;
-+#endif
-+
-+/* An alist of name.function for each special variable.  Most of the
-+   functions don't do much, and in fact, this would be faster with a
-+   switch statement, but by the end of this file, I am sick of switch
-+   statements. */
-+
-+#define SET_INT_VAR(name, intvar)  intvar = find_variable (name) != 0
-+
-+/* This table will be sorted with qsort() the first time it's accessed. */
-+struct name_and_function {
-+  char *name;
-+  sh_sv_func_t *function;
-+};
-+
-+static struct name_and_function special_vars[] = {
-+  { "BASH_COMPAT", sv_shcompat },
-+  { "BASH_XTRACEFD", sv_xtracefd },
-+
-+#if defined (JOB_CONTROL)
-+  { "CHILD_MAX", sv_childmax },
-+#endif
-+
-+#if defined (READLINE)
-+#  if defined (STRICT_POSIX)
-+  { "COLUMNS", sv_winsize },
-+#  endif
-+  { "COMP_WORDBREAKS", sv_comp_wordbreaks },
-+#endif
-+
-+  { "FUNCNEST", sv_funcnest },
-+
-+  { "GLOBIGNORE", sv_globignore },
-+
-+#if defined (HISTORY)
-+  { "HISTCONTROL", sv_history_control },
-+  { "HISTFILESIZE", sv_histsize },
-+  { "HISTIGNORE", sv_histignore },
-+  { "HISTSIZE", sv_histsize },
-+  { "HISTTIMEFORMAT", sv_histtimefmt },
-+#endif
-+
-+#if defined (__CYGWIN__)
-+  { "HOME", sv_home },
-+#endif
-+
-+#if defined (READLINE)
-+  { "HOSTFILE", sv_hostfile },
-+#endif
-+
-+  { "IFS", sv_ifs },
-+  { "IGNOREEOF", sv_ignoreeof },
-+
-+  { "LANG", sv_locale },
-+  { "LC_ALL", sv_locale },
-+  { "LC_COLLATE", sv_locale },
-+  { "LC_CTYPE", sv_locale },
-+  { "LC_MESSAGES", sv_locale },
-+  { "LC_NUMERIC", sv_locale },
-+  { "LC_TIME", sv_locale },
-+
-+#if defined (READLINE) && defined (STRICT_POSIX)
-+  { "LINES", sv_winsize },
-+#endif
-+
-+  { "MAIL", sv_mail },
-+  { "MAILCHECK", sv_mail },
-+  { "MAILPATH", sv_mail },
-+
-+  { "OPTERR", sv_opterr },
-+  { "OPTIND", sv_optind },
-+
-+  { "PATH", sv_path },
-+  { "POSIXLY_CORRECT", sv_strict_posix },
-+
-+#if defined (READLINE)
-+  { "TERM", sv_terminal },
-+  { "TERMCAP", sv_terminal },
-+  { "TERMINFO", sv_terminal },
-+#endif /* READLINE */
-+
-+  { "TEXTDOMAIN", sv_locale },
-+  { "TEXTDOMAINDIR", sv_locale },
-+
-+#if defined (HAVE_TZSET)
-+  { "TZ", sv_tz },
-+#endif
-+
-+#if defined (HISTORY) && defined (BANG_HISTORY)
-+  { "histchars", sv_histchars },
-+#endif /* HISTORY && BANG_HISTORY */
-+
-+  { "ignoreeof", sv_ignoreeof },
-+
-+  { (char *)0, (sh_sv_func_t *)0 }
-+};
-+
-+#define N_SPECIAL_VARS	(sizeof (special_vars) / sizeof (special_vars[0]) - 1)
-+
-+static int
-+sv_compare (sv1, sv2)
-+     struct name_and_function *sv1, *sv2;
-+{
-+  int r;
-+
-+  if ((r = sv1->name[0] - sv2->name[0]) == 0)
-+    r = strcmp (sv1->name, sv2->name);
-+  return r;
-+}
-+
-+static inline int
-+find_special_var (name)
-+     const char *name;
-+{
-+  register int i, r;
-+
-+  for (i = 0; special_vars[i].name; i++)
-+    {
-+      r = special_vars[i].name[0] - name[0];
-+      if (r == 0)
-+	r = strcmp (special_vars[i].name, name);
-+      if (r == 0)
-+	return i;
-+      else if (r > 0)
-+	/* Can't match any of rest of elements in sorted list.  Take this out
-+	   if it causes problems in certain environments. */
-+	break;
-+    }
-+  return -1;
-+}
-+
-+/* The variable in NAME has just had its state changed.  Check to see if it
-+   is one of the special ones where something special happens. */
-+void
-+stupidly_hack_special_variables (name)
-+     char *name;
-+{
-+  static int sv_sorted = 0;
-+  int i;
-+
-+  if (sv_sorted == 0)	/* shouldn't need, but it's fairly cheap. */
-+    {
-+      qsort (special_vars, N_SPECIAL_VARS, sizeof (special_vars[0]),
-+		(QSFUNC *)sv_compare);
-+      sv_sorted = 1;
-+    }
-+
-+  i = find_special_var (name);
-+  if (i != -1)
-+    (*(special_vars[i].function)) (name);
-+}
-+
-+/* Special variables that need hooks to be run when they are unset as part
-+   of shell reinitialization should have their sv_ functions run here. */
-+void
-+reinit_special_variables ()
-+{
-+#if defined (READLINE)
-+  sv_comp_wordbreaks ("COMP_WORDBREAKS");
-+#endif
-+  sv_globignore ("GLOBIGNORE");
-+  sv_opterr ("OPTERR");
-+}
-+
-+void
-+sv_ifs (name)
-+     char *name;
-+{
-+  SHELL_VAR *v;
-+
-+  v = find_variable ("IFS");
-+  setifs (v);
-+}
-+
-+/* What to do just after the PATH variable has changed. */
-+void
-+sv_path (name)
-+     char *name;
-+{
-+  /* hash -r */
-+  phash_flush ();
-+}
-+
-+/* What to do just after one of the MAILxxxx variables has changed.  NAME
-+   is the name of the variable.  This is called with NAME set to one of
-+   MAIL, MAILCHECK, or MAILPATH.  */
-+void
-+sv_mail (name)
-+     char *name;
-+{
-+  /* If the time interval for checking the files has changed, then
-+     reset the mail timer.  Otherwise, one of the pathname vars
-+     to the users mailbox has changed, so rebuild the array of
-+     filenames. */
-+  if (name[4] == 'C')  /* if (strcmp (name, "MAILCHECK") == 0) */
-+    reset_mail_timer ();
-+  else
-+    {
-+      free_mail_files ();
-+      remember_mail_dates ();
-+    }
-+}
-+
-+void
-+sv_funcnest (name)
-+     char *name;
-+{
-+  SHELL_VAR *v;
-+  intmax_t num;
-+
-+  v = find_variable (name);
-+  if (v == 0)
-+    funcnest_max = 0;
-+  else if (legal_number (value_cell (v), &num) == 0)
-+    funcnest_max = 0;
-+  else
-+    funcnest_max = num;
-+}
-+
-+/* What to do when GLOBIGNORE changes. */
-+void
-+sv_globignore (name)
-+     char *name;
-+{
-+  if (privileged_mode == 0)
-+    setup_glob_ignore (name);
-+}
-+
-+#if defined (READLINE)
-+void
-+sv_comp_wordbreaks (name)
-+     char *name;
-+{
-+  SHELL_VAR *sv;
-+
-+  sv = find_variable (name);
-+  if (sv == 0)
-+    reset_completer_word_break_chars ();
-+}
-+
-+/* What to do just after one of the TERMxxx variables has changed.
-+   If we are an interactive shell, then try to reset the terminal
-+   information in readline. */
-+void
-+sv_terminal (name)
-+     char *name;
-+{
-+  if (interactive_shell && no_line_editing == 0)
-+    rl_reset_terminal (get_string_value ("TERM"));
-+}
-+
-+void
-+sv_hostfile (name)
-+     char *name;
-+{
-+  SHELL_VAR *v;
-+
-+  v = find_variable (name);
-+  if (v == 0)
-+    clear_hostname_list ();
-+  else
-+    hostname_list_initialized = 0;
-+}
-+
-+#if defined (STRICT_POSIX)
-+/* In strict posix mode, we allow assignments to LINES and COLUMNS (and values
-+   found in the initial environment) to override the terminal size reported by
-+   the kernel. */
-+void
-+sv_winsize (name)
-+     char *name;
-+{
-+  SHELL_VAR *v;
-+  intmax_t xd;
-+  int d;
-+
-+  if (posixly_correct == 0 || interactive_shell == 0 || no_line_editing)
-+    return;
-+
-+  v = find_variable (name);
-+  if (v == 0 || var_isnull (v))
-+    rl_reset_screen_size ();
-+  else
-+    {
-+      if (legal_number (value_cell (v), &xd) == 0)
-+	return;
-+      winsize_assignment = 1;
-+      d = xd;			/* truncate */
-+      if (name[0] == 'L')	/* LINES */
-+	rl_set_screen_size (d, -1);
-+      else			/* COLUMNS */
-+	rl_set_screen_size (-1, d);
-+      winsize_assignment = 0;
-+    }
-+}
-+#endif /* STRICT_POSIX */
-+#endif /* READLINE */
-+
-+/* Update the value of HOME in the export environment so tilde expansion will
-+   work on cygwin. */
-+#if defined (__CYGWIN__)
-+sv_home (name)
-+     char *name;
-+{
-+  array_needs_making = 1;
-+  maybe_make_export_env ();
-+}
-+#endif
-+
-+#if defined (HISTORY)
-+/* What to do after the HISTSIZE or HISTFILESIZE variables change.
-+   If there is a value for this HISTSIZE (and it is numeric), then stifle
-+   the history.  Otherwise, if there is NO value for this variable,
-+   unstifle the history.  If name is HISTFILESIZE, and its value is
-+   numeric, truncate the history file to hold no more than that many
-+   lines. */
-+void
-+sv_histsize (name)
-+     char *name;
-+{
-+  char *temp;
-+  intmax_t num;
-+  int hmax;
-+
-+  temp = get_string_value (name);
-+
-+  if (temp && *temp)
-+    {
-+      if (legal_number (temp, &num))
-+	{
-+	  hmax = num;
-+	  if (hmax < 0 && name[4] == 'S')
-+	    unstifle_history ();	/* unstifle history if HISTSIZE < 0 */
-+	  else if (name[4] == 'S')
-+	    {
-+	      stifle_history (hmax);
-+	      hmax = where_history ();
-+	      if (history_lines_this_session > hmax)
-+		history_lines_this_session = hmax;
-+	    }
-+	  else if (hmax >= 0)	/* truncate HISTFILE if HISTFILESIZE >= 0 */
-+	    {
-+	      history_truncate_file (get_string_value ("HISTFILE"), hmax);
-+	      if (hmax <= history_lines_in_file)
-+		history_lines_in_file = hmax;
-+	    }
-+	}
-+    }
-+  else if (name[4] == 'S')
-+    unstifle_history ();
-+}
-+
-+/* What to do after the HISTIGNORE variable changes. */
-+void
-+sv_histignore (name)
-+     char *name;
-+{
-+  setup_history_ignore (name);
-+}
-+
-+/* What to do after the HISTCONTROL variable changes. */
-+void
-+sv_history_control (name)
-+     char *name;
-+{
-+  char *temp;
-+  char *val;
-+  int tptr;
-+
-+  history_control = 0;
-+  temp = get_string_value (name);
-+
-+  if (temp == 0 || *temp == 0)
-+    return;
-+
-+  tptr = 0;
-+  while (val = extract_colon_unit (temp, &tptr))
-+    {
-+      if (STREQ (val, "ignorespace"))
-+	history_control |= HC_IGNSPACE;
-+      else if (STREQ (val, "ignoredups"))
-+	history_control |= HC_IGNDUPS;
-+      else if (STREQ (val, "ignoreboth"))
-+	history_control |= HC_IGNBOTH;
-+      else if (STREQ (val, "erasedups"))
-+	history_control |= HC_ERASEDUPS;
-+
-+      free (val);
-+    }
-+}
-+
-+#if defined (BANG_HISTORY)
-+/* Setting/unsetting of the history expansion character. */
-+void
-+sv_histchars (name)
-+     char *name;
-+{
-+  char *temp;
-+
-+  temp = get_string_value (name);
-+  if (temp)
-+    {
-+      history_expansion_char = *temp;
-+      if (temp[0] && temp[1])
-+	{
-+	  history_subst_char = temp[1];
-+	  if (temp[2])
-+	      history_comment_char = temp[2];
-+	}
-+    }
-+  else
-+    {
-+      history_expansion_char = '!';
-+      history_subst_char = '^';
-+      history_comment_char = '#';
-+    }
-+}
-+#endif /* BANG_HISTORY */
-+
-+void
-+sv_histtimefmt (name)
-+     char *name;
-+{
-+  SHELL_VAR *v;
-+
-+  if (v = find_variable (name))
-+    {
-+      if (history_comment_char == 0)
-+	history_comment_char = '#';
-+    }
-+  history_write_timestamps = (v != 0);
-+}
-+#endif /* HISTORY */
-+
-+#if defined (HAVE_TZSET)
-+void
-+sv_tz (name)
-+     char *name;
-+{
-+  if (chkexport (name))
-+    tzset ();
-+}
-+#endif
-+
-+/* If the variable exists, then the value of it can be the number
-+   of times we actually ignore the EOF.  The default is small,
-+   (smaller than csh, anyway). */
-+void
-+sv_ignoreeof (name)
-+     char *name;
-+{
-+  SHELL_VAR *tmp_var;
-+  char *temp;
-+
-+  eof_encountered = 0;
-+
-+  tmp_var = find_variable (name);
-+  ignoreeof = tmp_var != 0;
-+  temp = tmp_var ? value_cell (tmp_var) : (char *)NULL;
-+  if (temp)
-+    eof_encountered_limit = (*temp && all_digits (temp)) ? atoi (temp) : 10;
-+  set_shellopts ();	/* make sure `ignoreeof' is/is not in $SHELLOPTS */
-+}
-+
-+void
-+sv_optind (name)
-+     char *name;
-+{
-+  char *tt;
-+  int s;
-+
-+  tt = get_string_value ("OPTIND");
-+  if (tt && *tt)
-+    {
-+      s = atoi (tt);
-+
-+      /* According to POSIX, setting OPTIND=1 resets the internal state
-+	 of getopt (). */
-+      if (s < 0 || s == 1)
-+	s = 0;
-+    }
-+  else
-+    s = 0;
-+  getopts_reset (s);
-+}
-+
-+void
-+sv_opterr (name)
-+     char *name;
-+{
-+  char *tt;
-+
-+  tt = get_string_value ("OPTERR");
-+  sh_opterr = (tt && *tt) ? atoi (tt) : 1;
-+}
-+
-+void
-+sv_strict_posix (name)
-+     char *name;
-+{
-+  SET_INT_VAR (name, posixly_correct);
-+  posix_initialize (posixly_correct);
-+#if defined (READLINE)
-+  if (interactive_shell)
-+    posix_readline_initialize (posixly_correct);
-+#endif /* READLINE */
-+  set_shellopts ();	/* make sure `posix' is/is not in $SHELLOPTS */
-+}
-+
-+void
-+sv_locale (name)
-+     char *name;
-+{
-+  char *v;
-+  int r;
-+
-+  v = get_string_value (name);
-+  if (name[0] == 'L' && name[1] == 'A')	/* LANG */
-+    r = set_lang (name, v);
-+  else
-+    r = set_locale_var (name, v);		/* LC_*, TEXTDOMAIN* */
-+
-+#if 1
-+  if (r == 0 && posixly_correct)
-+    last_command_exit_value = 1;
-+#endif
-+}
-+
-+#if defined (ARRAY_VARS)
-+void
-+set_pipestatus_array (ps, nproc)
-+     int *ps;
-+     int nproc;
-+{
-+  SHELL_VAR *v;
-+  ARRAY *a;
-+  ARRAY_ELEMENT *ae;
-+  register int i;
-+  char *t, tbuf[INT_STRLEN_BOUND(int) + 1];
-+
-+  v = find_variable ("PIPESTATUS");
-+  if (v == 0)
-+    v = make_new_array_variable ("PIPESTATUS");
-+  if (array_p (v) == 0)
-+    return;		/* Do nothing if not an array variable. */
-+  a = array_cell (v);
-+
-+  if (a == 0 || array_num_elements (a) == 0)
-+    {
-+      for (i = 0; i < nproc; i++)	/* was ps[i] != -1, not i < nproc */
-+	{
-+	  t = inttostr (ps[i], tbuf, sizeof (tbuf));
-+	  array_insert (a, i, t);
-+	}
-+      return;
-+    }
-+
-+  /* Fast case */
-+  if (array_num_elements (a) == nproc && nproc == 1)
-+    {
-+      ae = element_forw (a->head);
-+      free (element_value (ae));
-+      ae->value = itos (ps[0]);
-+    }
-+  else if (array_num_elements (a) <= nproc)
-+    {
-+      /* modify in array_num_elements members in place, then add */
-+      ae = a->head;
-+      for (i = 0; i < array_num_elements (a); i++)
-+	{
-+	  ae = element_forw (ae);
-+	  free (element_value (ae));
-+	  ae->value = itos (ps[i]);
-+	}
-+      /* add any more */
-+      for ( ; i < nproc; i++)
-+	{
-+	  t = inttostr (ps[i], tbuf, sizeof (tbuf));
-+	  array_insert (a, i, t);
-+	}
-+    }
-+  else
-+    {
-+      /* deleting elements.  it's faster to rebuild the array. */	  
-+      array_flush (a);
-+      for (i = 0; ps[i] != -1; i++)
-+	{
-+	  t = inttostr (ps[i], tbuf, sizeof (tbuf));
-+	  array_insert (a, i, t);
-+	}
-+    }
-+}
-+
-+ARRAY *
-+save_pipestatus_array ()
-+{
-+  SHELL_VAR *v;
-+  ARRAY *a, *a2;
-+
-+  v = find_variable ("PIPESTATUS");
-+  if (v == 0 || array_p (v) == 0 || array_cell (v) == 0)
-+    return ((ARRAY *)NULL);
-+    
-+  a = array_cell (v);
-+  a2 = array_copy (array_cell (v));
-+
-+  return a2;
-+}
-+
-+void
-+restore_pipestatus_array (a)
-+     ARRAY *a;
-+{
-+  SHELL_VAR *v;
-+  ARRAY *a2;
-+
-+  v = find_variable ("PIPESTATUS");
-+  /* XXX - should we still assign even if existing value is NULL? */
-+  if (v == 0 || array_p (v) == 0 || array_cell (v) == 0)
-+    return;
-+
-+  a2 = array_cell (v);
-+  var_setarray (v, a); 
-+
-+  array_dispose (a2);
-+}
-+#endif
-+
-+void
-+set_pipestatus_from_exit (s)
-+     int s;
-+{
-+#if defined (ARRAY_VARS)
-+  static int v[2] = { 0, -1 };
-+
-+  v[0] = s;
-+  set_pipestatus_array (v, 1);
-+#endif
-+}
-+
-+void
-+sv_xtracefd (name)
-+     char *name;
-+{
-+  SHELL_VAR *v;
-+  char *t, *e;
-+  int fd;
-+  FILE *fp;
-+
-+  v = find_variable (name);
-+  if (v == 0)
-+    {
-+      xtrace_reset ();
-+      return;
-+    }
-+
-+  t = value_cell (v);
-+  if (t == 0 || *t == 0)
-+    xtrace_reset ();
-+  else
-+    {
-+      fd = (int)strtol (t, &e, 10);
-+      if (e != t && *e == '\0' && sh_validfd (fd))
-+	{
-+	  fp = fdopen (fd, "w");
-+	  if (fp == 0)
-+	    internal_error (_("%s: %s: cannot open as FILE"), name, value_cell (v));
-+	  else
-+	    xtrace_set (fd, fp);
-+	}
-+      else
-+	internal_error (_("%s: %s: invalid value for trace file descriptor"), name, value_cell (v));
-+    }
-+}
-+
-+#define MIN_COMPAT_LEVEL 31
-+
-+void
-+sv_shcompat (name)
-+     char *name;
-+{
-+  SHELL_VAR *v;
-+  char *val;
-+  int tens, ones, compatval;
-+
-+  v = find_variable (name);
-+  if (v == 0)
-+    {
-+      shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
-+      set_compatibility_opts ();
-+      return;
-+    }
-+  val = value_cell (v);
-+  if (val == 0 || *val == '\0')
-+    {
-+      shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
-+      set_compatibility_opts ();
-+      return;
-+    }
-+  /* Handle decimal-like compatibility version specifications: 4.2 */
-+  if (isdigit (val[0]) && val[1] == '.' && isdigit (val[2]) && val[3] == 0)
-+    {
-+      tens = val[0] - '0';
-+      ones = val[2] - '0';
-+      compatval = tens*10 + ones;
-+    }
-+  /* Handle integer-like compatibility version specifications: 42 */
-+  else if (isdigit (val[0]) && isdigit (val[1]) && val[2] == 0)
-+    {
-+      tens = val[0] - '0';
-+      ones = val[1] - '0';
-+      compatval = tens*10 + ones;
-+    }
-+  else
-+    {
-+compat_error:
-+      internal_error (_("%s: %s: compatibility value out of range"), name, val);
-+      shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
-+      set_compatibility_opts ();
-+      return;
-+    }
-+
-+  if (compatval < MIN_COMPAT_LEVEL || compatval > DEFAULT_COMPAT_LEVEL)
-+    goto compat_error;
-+
-+  shell_compatibility_level = compatval;
-+  set_compatibility_opts ();
-+}
-+
-+#if defined (JOB_CONTROL)
-+void
-+sv_childmax (name)
-+     char *name;
-+{
-+  char *tt;
-+  int s;
-+
-+  tt = get_string_value (name);
-+  s = (tt && *tt) ? atoi (tt) : 0;
-+  set_maxchild (s);
-+}
-+#endif
diff --git a/patches/bash-4.3.30/0002-Bash-4.3-patch-32.patch b/patches/bash-4.3.30/0002-Bash-4.3-patch-32.patch
deleted file mode 100644
index 801b4a609..000000000
--- a/patches/bash-4.3.30/0002-Bash-4.3-patch-32.patch
+++ /dev/null
@@ -1,5409 +0,0 @@
-From: Chet Ramey <chet.ramey@case.edu>
-Date: Thu, 15 Jan 2015 10:20:45 -0500
-Subject: [PATCH] Bash-4.3 patch 32
-
----
- jobs.c           |    4 +-
- patchlevel.h     |    2 +-
- variables.c.orig | 5365 ------------------------------------------------------
- 3 files changed, 4 insertions(+), 5367 deletions(-)
- delete mode 100644 variables.c.orig
-
-diff --git a/jobs.c b/jobs.c
-index f38b0c3f4446..b6e59eba0de8 100644
---- a/jobs.c
-+++ b/jobs.c
-@@ -3339,7 +3339,9 @@ itrace("waitchld: waitpid returns %d block = %d", pid, block);
-       if (posixly_correct && this_shell_builtin && this_shell_builtin == wait_builtin)
- 	{
- 	  interrupt_immediately = 0;
--	  trap_handler (SIGCHLD);	/* set pending_traps[SIGCHLD] */
-+	  /* This was trap_handler (SIGCHLD) but that can lose traps if
-+	     children_exited > 1 */
-+	  queue_sigchld_trap (children_exited);
- 	  wait_signal_received = SIGCHLD;
- 	  /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up;
- 	     run_pending_traps will call run_sigchld_trap later  */
-diff --git a/patchlevel.h b/patchlevel.h
-index 0ad46aafbdd9..b8bf38704ed2 100644
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
- 
--#define PATCHLEVEL 31
-+#define PATCHLEVEL 32
- 
- #endif /* _PATCHLEVEL_H_ */
-diff --git a/variables.c.orig b/variables.c.orig
-deleted file mode 100644
-index 7c82710e0f0b..000000000000
---- a/variables.c.orig
-+++ /dev/null
-@@ -1,5365 +0,0 @@
--/* variables.c -- Functions for hacking shell variables. */
--
--/* Copyright (C) 1987-2013 Free Software Foundation, Inc.
--
--   This file is part of GNU Bash, the Bourne Again SHell.
--
--   Bash is free software: you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation, either version 3 of the License, or
--   (at your option) any later version.
--
--   Bash is distributed in the hope that it will be useful,
--   but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
--
--   You should have received a copy of the GNU General Public License
--   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
--*/
--
--#include "config.h"
--
--#include "bashtypes.h"
--#include "posixstat.h"
--#include "posixtime.h"
--
--#if defined (__QNX__)
--#  if defined (__QNXNTO__)
--#    include <sys/netmgr.h>
--#  else
--#    include <sys/vc.h>
--#  endif /* !__QNXNTO__ */
--#endif /* __QNX__ */
--
--#if defined (HAVE_UNISTD_H)
--#  include <unistd.h>
--#endif
--
--#include <stdio.h>
--#include "chartypes.h"
--#if defined (HAVE_PWD_H)
--#  include <pwd.h>
--#endif
--#include "bashansi.h"
--#include "bashintl.h"
--
--#define NEED_XTRACE_SET_DECL
--
--#include "shell.h"
--#include "flags.h"
--#include "execute_cmd.h"
--#include "findcmd.h"
--#include "mailcheck.h"
--#include "input.h"
--#include "hashcmd.h"
--#include "pathexp.h"
--#include "alias.h"
--#include "jobs.h"
--
--#include "version.h"
--
--#include "builtins/getopt.h"
--#include "builtins/common.h"
--#include "builtins/builtext.h"
--
--#if defined (READLINE)
--#  include "bashline.h"
--#  include <readline/readline.h>
--#else
--#  include <tilde/tilde.h>
--#endif
--
--#if defined (HISTORY)
--#  include "bashhist.h"
--#  include <readline/history.h>
--#endif /* HISTORY */
--
--#if defined (PROGRAMMABLE_COMPLETION)
--#  include "pcomplete.h"
--#endif
--
--#define TEMPENV_HASH_BUCKETS	4	/* must be power of two */
--
--#define ifsname(s)	((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0')
--
--#define BASHFUNC_PREFIX		"BASH_FUNC_"
--#define BASHFUNC_PREFLEN	10	/* == strlen(BASHFUNC_PREFIX */
--#define BASHFUNC_SUFFIX		"%%"
--#define BASHFUNC_SUFFLEN	2	/* == strlen(BASHFUNC_SUFFIX) */
--
--extern char **environ;
--
--/* Variables used here and defined in other files. */
--extern int posixly_correct;
--extern int line_number, line_number_base;
--extern int subshell_environment, indirection_level, subshell_level;
--extern int build_version, patch_level;
--extern int expanding_redir;
--extern int last_command_exit_value;
--extern char *dist_version, *release_status;
--extern char *shell_name;
--extern char *primary_prompt, *secondary_prompt;
--extern char *current_host_name;
--extern sh_builtin_func_t *this_shell_builtin;
--extern SHELL_VAR *this_shell_function;
--extern char *the_printed_command_except_trap;
--extern char *this_command_name;
--extern char *command_execution_string;
--extern time_t shell_start_time;
--extern int assigning_in_environment;
--extern int executing_builtin;
--extern int funcnest_max;
--
--#if defined (READLINE)
--extern int no_line_editing;
--extern int perform_hostname_completion;
--#endif
--
--/* The list of shell variables that the user has created at the global
--   scope, or that came from the environment. */
--VAR_CONTEXT *global_variables = (VAR_CONTEXT *)NULL;
--
--/* The current list of shell variables, including function scopes */
--VAR_CONTEXT *shell_variables = (VAR_CONTEXT *)NULL;
--
--/* The list of shell functions that the user has created, or that came from
--   the environment. */
--HASH_TABLE *shell_functions = (HASH_TABLE *)NULL;
--
--#if defined (DEBUGGER)
--/* The table of shell function definitions that the user defined or that
--   came from the environment. */
--HASH_TABLE *shell_function_defs = (HASH_TABLE *)NULL;
--#endif
--
--/* The current variable context.  This is really a count of how deep into
--   executing functions we are. */
--int variable_context = 0;
--
--/* The set of shell assignments which are made only in the environment
--   for a single command. */
--HASH_TABLE *temporary_env = (HASH_TABLE *)NULL;
--
--/* Set to non-zero if an assignment error occurs while putting variables
--   into the temporary environment. */
--int tempenv_assign_error;
--
--/* Some funky variables which are known about specially.  Here is where
--   "$*", "$1", and all the cruft is kept. */
--char *dollar_vars[10];
--WORD_LIST *rest_of_args = (WORD_LIST *)NULL;
--
--/* The value of $$. */
--pid_t dollar_dollar_pid;
--
--/* Non-zero means that we have to remake EXPORT_ENV. */
--int array_needs_making = 1;
--
--/* The number of times BASH has been executed.  This is set
--   by initialize_variables (). */
--int shell_level = 0;
--
--/* An array which is passed to commands as their environment.  It is
--   manufactured from the union of the initial environment and the
--   shell variables that are marked for export. */
--char **export_env = (char **)NULL;
--static int export_env_index;
--static int export_env_size;
--
--#if defined (READLINE)
--static int winsize_assignment;		/* currently assigning to LINES or COLUMNS */
--#endif
--
--static HASH_TABLE *last_table_searched;	/* hash_lookup sets this */
--
--/* Some forward declarations. */
--static void create_variable_tables __P((void));
--
--static void set_machine_vars __P((void));
--static void set_home_var __P((void));
--static void set_shell_var __P((void));
--static char *get_bash_name __P((void));
--static void initialize_shell_level __P((void));
--static void uidset __P((void));
--#if defined (ARRAY_VARS)
--static void make_vers_array __P((void));
--#endif
--
--static SHELL_VAR *null_assign __P((SHELL_VAR *, char *, arrayind_t, char *));
--#if defined (ARRAY_VARS)
--static SHELL_VAR *null_array_assign __P((SHELL_VAR *, char *, arrayind_t, char *));
--#endif
--static SHELL_VAR *get_self __P((SHELL_VAR *));
--
--#if defined (ARRAY_VARS)
--static SHELL_VAR *init_dynamic_array_var __P((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int));
--static SHELL_VAR *init_dynamic_assoc_var __P((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int));
--#endif
--
--static SHELL_VAR *assign_seconds __P((SHELL_VAR *, char *, arrayind_t, char *));
--static SHELL_VAR *get_seconds __P((SHELL_VAR *));
--static SHELL_VAR *init_seconds_var __P((void));
--
--static int brand __P((void));
--static void sbrand __P((unsigned long));		/* set bash random number generator. */
--static void seedrand __P((void));			/* seed generator randomly */
--static SHELL_VAR *assign_random __P((SHELL_VAR *, char *, arrayind_t, char *));
--static SHELL_VAR *get_random __P((SHELL_VAR *));
--
--static SHELL_VAR *assign_lineno __P((SHELL_VAR *, char *, arrayind_t, char *));
--static SHELL_VAR *get_lineno __P((SHELL_VAR *));
--
--static SHELL_VAR *assign_subshell __P((SHELL_VAR *, char *, arrayind_t, char *));
--static SHELL_VAR *get_subshell __P((SHELL_VAR *));
--
--static SHELL_VAR *get_bashpid __P((SHELL_VAR *));
--
--#if defined (HISTORY)
--static SHELL_VAR *get_histcmd __P((SHELL_VAR *));
--#endif
--
--#if defined (READLINE)
--static SHELL_VAR *get_comp_wordbreaks __P((SHELL_VAR *));
--static SHELL_VAR *assign_comp_wordbreaks __P((SHELL_VAR *, char *, arrayind_t, char *));
--#endif
--
--#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS)
--static SHELL_VAR *assign_dirstack __P((SHELL_VAR *, char *, arrayind_t, char *));
--static SHELL_VAR *get_dirstack __P((SHELL_VAR *));
--#endif
--
--#if defined (ARRAY_VARS)
--static SHELL_VAR *get_groupset __P((SHELL_VAR *));
--
--static SHELL_VAR *build_hashcmd __P((SHELL_VAR *));
--static SHELL_VAR *get_hashcmd __P((SHELL_VAR *));
--static SHELL_VAR *assign_hashcmd __P((SHELL_VAR *,  char *, arrayind_t, char *));
--#  if defined (ALIAS)
--static SHELL_VAR *build_aliasvar __P((SHELL_VAR *));
--static SHELL_VAR *get_aliasvar __P((SHELL_VAR *));
--static SHELL_VAR *assign_aliasvar __P((SHELL_VAR *,  char *, arrayind_t, char *));
--#  endif
--#endif
--
--static SHELL_VAR *get_funcname __P((SHELL_VAR *));
--static SHELL_VAR *init_funcname_var __P((void));
--
--static void initialize_dynamic_variables __P((void));
--
--static SHELL_VAR *hash_lookup __P((const char *, HASH_TABLE *));
--static SHELL_VAR *new_shell_variable __P((const char *));
--static SHELL_VAR *make_new_variable __P((const char *, HASH_TABLE *));
--static SHELL_VAR *bind_variable_internal __P((const char *, char *, HASH_TABLE *, int, int));
--
--static void dispose_variable_value __P((SHELL_VAR *));
--static void free_variable_hash_data __P((PTR_T));
--
--static VARLIST *vlist_alloc __P((int));
--static VARLIST *vlist_realloc __P((VARLIST *, int));
--static void vlist_add __P((VARLIST *, SHELL_VAR *, int));
--
--static void flatten __P((HASH_TABLE *, sh_var_map_func_t *, VARLIST *, int));
--
--static int qsort_var_comp __P((SHELL_VAR **, SHELL_VAR **));
--
--static SHELL_VAR **vapply __P((sh_var_map_func_t *));
--static SHELL_VAR **fapply __P((sh_var_map_func_t *));
--
--static int visible_var __P((SHELL_VAR *));
--static int visible_and_exported __P((SHELL_VAR *));
--static int export_environment_candidate __P((SHELL_VAR *));
--static int local_and_exported __P((SHELL_VAR *));
--static int variable_in_context __P((SHELL_VAR *));
--#if defined (ARRAY_VARS)
--static int visible_array_vars __P((SHELL_VAR *));
--#endif
--
--static SHELL_VAR *find_nameref_at_context __P((SHELL_VAR *, VAR_CONTEXT *));
--static SHELL_VAR *find_variable_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **));
--static SHELL_VAR *find_variable_last_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **));
--
--static SHELL_VAR *bind_tempenv_variable __P((const char *, char *));
--static void push_temp_var __P((PTR_T));
--static void propagate_temp_var __P((PTR_T));
--static void dispose_temporary_env __P((sh_free_func_t *));     
--
--static inline char *mk_env_string __P((const char *, const char *, int));
--static char **make_env_array_from_var_list __P((SHELL_VAR **));
--static char **make_var_export_array __P((VAR_CONTEXT *));
--static char **make_func_export_array __P((void));
--static void add_temp_array_to_env __P((char **, int, int));
--
--static int n_shell_variables __P((void));
--static int set_context __P((SHELL_VAR *));
--
--static void push_func_var __P((PTR_T));
--static void push_exported_var __P((PTR_T));
--
--static inline int find_special_var __P((const char *));
--
--static void
--create_variable_tables ()
--{
--  if (shell_variables == 0)
--    {
--      shell_variables = global_variables = new_var_context ((char *)NULL, 0);
--      shell_variables->scope = 0;
--      shell_variables->table = hash_create (0);
--    }
--
--  if (shell_functions == 0)
--    shell_functions = hash_create (0);
--
--#if defined (DEBUGGER)
--  if (shell_function_defs == 0)
--    shell_function_defs = hash_create (0);
--#endif
--}
--
--/* Initialize the shell variables from the current environment.
--   If PRIVMODE is nonzero, don't import functions from ENV or
--   parse $SHELLOPTS. */
--void
--initialize_shell_variables (env, privmode)
--     char **env;
--     int privmode;
--{
--  char *name, *string, *temp_string;
--  int c, char_index, string_index, string_length, ro;
--  SHELL_VAR *temp_var;
--
--  create_variable_tables ();
--
--  for (string_index = 0; string = env[string_index++]; )
--    {
--      char_index = 0;
--      name = string;
--      while ((c = *string++) && c != '=')
--	;
--      if (string[-1] == '=')
--	char_index = string - name - 1;
--
--      /* If there are weird things in the environment, like `=xxx' or a
--	 string without an `=', just skip them. */
--      if (char_index == 0)
--	continue;
--
--      /* ASSERT(name[char_index] == '=') */
--      name[char_index] = '\0';
--      /* Now, name = env variable name, string = env variable value, and
--	 char_index == strlen (name) */
--
--      temp_var = (SHELL_VAR *)NULL;
--
--      /* If exported function, define it now.  Don't import functions from
--	 the environment in privileged mode. */
--      if (privmode == 0 && read_but_dont_execute == 0 && 
--          STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) &&
--          STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) &&
--	  STREQN ("() {", string, 4))
--	{
--	  size_t namelen;
--	  char *tname;		/* desired imported function name */
--
--	  namelen = char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN;
--
--	  tname = name + BASHFUNC_PREFLEN;	/* start of func name */
--	  tname[namelen] = '\0';		/* now tname == func name */
--
--	  string_length = strlen (string);
--	  temp_string = (char *)xmalloc (namelen + string_length + 2);
--
--	  memcpy (temp_string, tname, namelen);
--	  temp_string[namelen] = ' ';
--	  memcpy (temp_string + namelen + 1, string, string_length + 1);
--
--	  /* Don't import function names that are invalid identifiers from the
--	     environment, though we still allow them to be defined as shell
--	     variables. */
--	  if (absolute_program (tname) == 0 && (posixly_correct == 0 || legal_identifier (tname)))
--	    parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
--
--	  if (temp_var = find_function (tname))
--	    {
--	      VSETATTR (temp_var, (att_exported|att_imported));
--	      array_needs_making = 1;
--	    }
--	  else
--	    {
--	      if (temp_var = bind_variable (name, string, 0))
--		{
--		  VSETATTR (temp_var, (att_exported | att_imported | att_invisible));
--		  array_needs_making = 1;
--		}
--	      last_command_exit_value = 1;
--	      report_error (_("error importing function definition for `%s'"), tname);
--	    }
--
--	  /* Restore original suffix */
--	  tname[namelen] = BASHFUNC_SUFFIX[0];
--	}
--#if defined (ARRAY_VARS)
--#  if ARRAY_EXPORT
--      /* Array variables may not yet be exported. */
--      else if (*string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')')
--	{
--	  string_length = 1;
--	  temp_string = extract_array_assignment_list (string, &string_length);
--	  temp_var = assign_array_from_string (name, temp_string);
--	  FREE (temp_string);
--	  VSETATTR (temp_var, (att_exported | att_imported));
--	  array_needs_making = 1;
--	}
--#  endif /* ARRAY_EXPORT */
--#endif
--#if 0
--      else if (legal_identifier (name))
--#else
--      else
--#endif
--	{
--	  ro = 0;
--	  if (posixly_correct && STREQ (name, "SHELLOPTS"))
--	    {
--	      temp_var = find_variable ("SHELLOPTS");
--	      ro = temp_var && readonly_p (temp_var);
--	      if (temp_var)
--		VUNSETATTR (temp_var, att_readonly);
--	    }
--	  temp_var = bind_variable (name, string, 0);
--	  if (temp_var)
--	    {
--	      if (legal_identifier (name))
--		VSETATTR (temp_var, (att_exported | att_imported));
--	      else
--		VSETATTR (temp_var, (att_exported | att_imported | att_invisible));
--	      if (ro)
--		VSETATTR (temp_var, att_readonly);
--	      array_needs_making = 1;
--	    }
--	}
--
--      name[char_index] = '=';
--      /* temp_var can be NULL if it was an exported function with a syntax
--	 error (a different bug, but it still shouldn't dump core). */
--      if (temp_var && function_p (temp_var) == 0)	/* XXX not yet */
--	{
--	  CACHE_IMPORTSTR (temp_var, name);
--	}
--    }
--
--  set_pwd ();
--
--  /* Set up initial value of $_ */
--  temp_var = set_if_not ("_", dollar_vars[0]);
--
--  /* Remember this pid. */
--  dollar_dollar_pid = getpid ();
--
--  /* Now make our own defaults in case the vars that we think are
--     important are missing. */
--  temp_var = set_if_not ("PATH", DEFAULT_PATH_VALUE);
--#if 0
--  set_auto_export (temp_var);	/* XXX */
--#endif
--
--  temp_var = set_if_not ("TERM", "dumb");
--#if 0
--  set_auto_export (temp_var);	/* XXX */
--#endif
--
--#if defined (__QNX__)
--  /* set node id -- don't import it from the environment */
--  {
--    char node_name[22];
--#  if defined (__QNXNTO__)
--    netmgr_ndtostr(ND2S_LOCAL_STR, ND_LOCAL_NODE, node_name, sizeof(node_name));
--#  else
--    qnx_nidtostr (getnid (), node_name, sizeof (node_name));
--#  endif
--    temp_var = bind_variable ("NODE", node_name, 0);
--    set_auto_export (temp_var);
--  }
--#endif
--
--  /* set up the prompts. */
--  if (interactive_shell)
--    {
--#if defined (PROMPT_STRING_DECODE)
--      set_if_not ("PS1", primary_prompt);
--#else
--      if (current_user.uid == -1)
--	get_current_user_info ();
--      set_if_not ("PS1", current_user.euid == 0 ? "# " : primary_prompt);
--#endif
--      set_if_not ("PS2", secondary_prompt);
--    }
--  set_if_not ("PS4", "+ ");
--
--  /* Don't allow IFS to be imported from the environment. */
--  temp_var = bind_variable ("IFS", " \t\n", 0);
--  setifs (temp_var);
--
--  /* Magic machine types.  Pretty convenient. */
--  set_machine_vars ();
--
--  /* Default MAILCHECK for interactive shells.  Defer the creation of a
--     default MAILPATH until the startup files are read, because MAIL
--     names a mail file if MAILPATH is not set, and we should provide a
--     default only if neither is set. */
--  if (interactive_shell)
--    {
--      temp_var = set_if_not ("MAILCHECK", posixly_correct ? "600" : "60");
--      VSETATTR (temp_var, att_integer);
--    }
--
--  /* Do some things with shell level. */
--  initialize_shell_level ();
--
--  set_ppid ();
--
--  /* Initialize the `getopts' stuff. */
--  temp_var = bind_variable ("OPTIND", "1", 0);
--  VSETATTR (temp_var, att_integer);
--  getopts_reset (0);
--  bind_variable ("OPTERR", "1", 0);
--  sh_opterr = 1;
--
--  if (login_shell == 1 && posixly_correct == 0)
--    set_home_var ();
--
--  /* Get the full pathname to THIS shell, and set the BASH variable
--     to it. */
--  name = get_bash_name ();
--  temp_var = bind_variable ("BASH", name, 0);
--  free (name);
--
--  /* Make the exported environment variable SHELL be the user's login
--     shell.  Note that the `tset' command looks at this variable
--     to determine what style of commands to output; if it ends in "csh",
--     then C-shell commands are output, else Bourne shell commands. */
--  set_shell_var ();
--
--  /* Make a variable called BASH_VERSION which contains the version info. */
--  bind_variable ("BASH_VERSION", shell_version_string (), 0);
--#if defined (ARRAY_VARS)
--  make_vers_array ();
--#endif
--
--  if (command_execution_string)
--    bind_variable ("BASH_EXECUTION_STRING", command_execution_string, 0);
--
--  /* Find out if we're supposed to be in Posix.2 mode via an
--     environment variable. */
--  temp_var = find_variable ("POSIXLY_CORRECT");
--  if (!temp_var)
--    temp_var = find_variable ("POSIX_PEDANTIC");
--  if (temp_var && imported_p (temp_var))
--    sv_strict_posix (temp_var->name);
--
--#if defined (HISTORY)
--  /* Set history variables to defaults, and then do whatever we would
--     do if the variable had just been set.  Do this only in the case
--     that we are remembering commands on the history list. */
--  if (remember_on_history)
--    {
--      name = bash_tilde_expand (posixly_correct ? "~/.sh_history" : "~/.bash_history", 0);
--
--      set_if_not ("HISTFILE", name);
--      free (name);
--    }
--#endif /* HISTORY */
--
--  /* Seed the random number generator. */
--  seedrand ();
--
--  /* Handle some "special" variables that we may have inherited from a
--     parent shell. */
--  if (interactive_shell)
--    {
--      temp_var = find_variable ("IGNOREEOF");
--      if (!temp_var)
--	temp_var = find_variable ("ignoreeof");
--      if (temp_var && imported_p (temp_var))
--	sv_ignoreeof (temp_var->name);
--    }
--
--#if defined (HISTORY)
--  if (interactive_shell && remember_on_history)
--    {
--      sv_history_control ("HISTCONTROL");
--      sv_histignore ("HISTIGNORE");
--      sv_histtimefmt ("HISTTIMEFORMAT");
--    }
--#endif /* HISTORY */
--
--#if defined (READLINE) && defined (STRICT_POSIX)
--  /* POSIXLY_CORRECT will only be 1 here if the shell was compiled
--     -DSTRICT_POSIX */
--  if (interactive_shell && posixly_correct && no_line_editing == 0)
--    rl_prefer_env_winsize = 1;
--#endif /* READLINE && STRICT_POSIX */
--
--     /*
--      * 24 October 2001
--      *
--      * I'm tired of the arguing and bug reports.  Bash now leaves SSH_CLIENT
--      * and SSH2_CLIENT alone.  I'm going to rely on the shell_level check in
--      * isnetconn() to avoid running the startup files more often than wanted.
--      * That will, of course, only work if the user's login shell is bash, so
--      * I've made that behavior conditional on SSH_SOURCE_BASHRC being defined
--      * in config-top.h.
--      */
--#if 0
--  temp_var = find_variable ("SSH_CLIENT");
--  if (temp_var && imported_p (temp_var))
--    {
--      VUNSETATTR (temp_var, att_exported);
--      array_needs_making = 1;
--    }
--  temp_var = find_variable ("SSH2_CLIENT");
--  if (temp_var && imported_p (temp_var))
--    {
--      VUNSETATTR (temp_var, att_exported);
--      array_needs_making = 1;
--    }
--#endif
--
--  /* Get the user's real and effective user ids. */
--  uidset ();
--
--  temp_var = find_variable ("BASH_XTRACEFD");
--  if (temp_var && imported_p (temp_var))
--    sv_xtracefd (temp_var->name);
--
--  /* Initialize the dynamic variables, and seed their values. */
--  initialize_dynamic_variables ();
--}
--
--/* **************************************************************** */
--/*								    */
--/*	     Setting values for special shell variables		    */
--/*								    */
--/* **************************************************************** */
--
--static void
--set_machine_vars ()
--{
--  SHELL_VAR *temp_var;
--
--  temp_var = set_if_not ("HOSTTYPE", HOSTTYPE);
--  temp_var = set_if_not ("OSTYPE", OSTYPE);
--  temp_var = set_if_not ("MACHTYPE", MACHTYPE);
--
--  temp_var = set_if_not ("HOSTNAME", current_host_name);
--}
--
--/* Set $HOME to the information in the password file if we didn't get
--   it from the environment. */
--
--/* This function is not static so the tilde and readline libraries can
--   use it. */
--char *
--sh_get_home_dir ()
--{
--  if (current_user.home_dir == 0)
--    get_current_user_info ();
--  return current_user.home_dir;
--}
--
--static void
--set_home_var ()
--{
--  SHELL_VAR *temp_var;
--
--  temp_var = find_variable ("HOME");
--  if (temp_var == 0)
--    temp_var = bind_variable ("HOME", sh_get_home_dir (), 0);
--#if 0
--  VSETATTR (temp_var, att_exported);
--#endif
--}
--
--/* Set $SHELL to the user's login shell if it is not already set.  Call
--   get_current_user_info if we haven't already fetched the shell. */
--static void
--set_shell_var ()
--{
--  SHELL_VAR *temp_var;
--
--  temp_var = find_variable ("SHELL");
--  if (temp_var == 0)
--    {
--      if (current_user.shell == 0)
--	get_current_user_info ();
--      temp_var = bind_variable ("SHELL", current_user.shell, 0);
--    }
--#if 0
--  VSETATTR (temp_var, att_exported);
--#endif
--}
--
--static char *
--get_bash_name ()
--{
--  char *name;
--
--  if ((login_shell == 1) && RELPATH(shell_name))
--    {
--      if (current_user.shell == 0)
--	get_current_user_info ();
--      name = savestring (current_user.shell);
--    }
--  else if (ABSPATH(shell_name))
--    name = savestring (shell_name);
--  else if (shell_name[0] == '.' && shell_name[1] == '/')
--    {
--      /* Fast path for common case. */
--      char *cdir;
--      int len;
--
--      cdir = get_string_value ("PWD");
--      if (cdir)
--	{
--	  len = strlen (cdir);
--	  name = (char *)xmalloc (len + strlen (shell_name) + 1);
--	  strcpy (name, cdir);
--	  strcpy (name + len, shell_name + 1);
--	}
--      else
--	name = savestring (shell_name);
--    }
--  else
--    {
--      char *tname;
--      int s;
--
--      tname = find_user_command (shell_name);
--
--      if (tname == 0)
--	{
--	  /* Try the current directory.  If there is not an executable
--	     there, just punt and use the login shell. */
--	  s = file_status (shell_name);
--	  if (s & FS_EXECABLE)
--	    {
--	      tname = make_absolute (shell_name, get_string_value ("PWD"));
--	      if (*shell_name == '.')
--		{
--		  name = sh_canonpath (tname, PATH_CHECKDOTDOT|PATH_CHECKEXISTS);
--		  if (name == 0)
--		    name = tname;
--		  else
--		    free (tname);
--		}
--	     else
--		name = tname;
--	    }
--	  else
--	    {
--	      if (current_user.shell == 0)
--		get_current_user_info ();
--	      name = savestring (current_user.shell);
--	    }
--	}
--      else
--	{
--	  name = full_pathname (tname);
--	  free (tname);
--	}
--    }
--
--  return (name);
--}
--
--void
--adjust_shell_level (change)
--     int change;
--{
--  char new_level[5], *old_SHLVL;
--  intmax_t old_level;
--  SHELL_VAR *temp_var;
--
--  old_SHLVL = get_string_value ("SHLVL");
--  if (old_SHLVL == 0 || *old_SHLVL == '\0' || legal_number (old_SHLVL, &old_level) == 0)
--    old_level = 0;
--
--  shell_level = old_level + change;
--  if (shell_level < 0)
--    shell_level = 0;
--  else if (shell_level > 1000)
--    {
--      internal_warning (_("shell level (%d) too high, resetting to 1"), shell_level);
--      shell_level = 1;
--    }
--
--  /* We don't need the full generality of itos here. */
--  if (shell_level < 10)
--    {
--      new_level[0] = shell_level + '0';
--      new_level[1] = '\0';
--    }
--  else if (shell_level < 100)
--    {
--      new_level[0] = (shell_level / 10) + '0';
--      new_level[1] = (shell_level % 10) + '0';
--      new_level[2] = '\0';
--    }
--  else if (shell_level < 1000)
--    {
--      new_level[0] = (shell_level / 100) + '0';
--      old_level = shell_level % 100;
--      new_level[1] = (old_level / 10) + '0';
--      new_level[2] = (old_level % 10) + '0';
--      new_level[3] = '\0';
--    }
--
--  temp_var = bind_variable ("SHLVL", new_level, 0);
--  set_auto_export (temp_var);
--}
--
--static void
--initialize_shell_level ()
--{
--  adjust_shell_level (1);
--}
--
--/* If we got PWD from the environment, update our idea of the current
--   working directory.  In any case, make sure that PWD exists before
--   checking it.  It is possible for getcwd () to fail on shell startup,
--   and in that case, PWD would be undefined.  If this is an interactive
--   login shell, see if $HOME is the current working directory, and if
--   that's not the same string as $PWD, set PWD=$HOME. */
--
--void
--set_pwd ()
--{
--  SHELL_VAR *temp_var, *home_var;
--  char *temp_string, *home_string;
--
--  home_var = find_variable ("HOME");
--  home_string = home_var ? value_cell (home_var) : (char *)NULL;
--
--  temp_var = find_variable ("PWD");
--  if (temp_var && imported_p (temp_var) &&
--      (temp_string = value_cell (temp_var)) &&
--      same_file (temp_string, ".", (struct stat *)NULL, (struct stat *)NULL))
--    set_working_directory (temp_string);
--  else if (home_string && interactive_shell && login_shell &&
--	   same_file (home_string, ".", (struct stat *)NULL, (struct stat *)NULL))
--    {
--      set_working_directory (home_string);
--      temp_var = bind_variable ("PWD", home_string, 0);
--      set_auto_export (temp_var);
--    }
--  else
--    {
--      temp_string = get_working_directory ("shell-init");
--      if (temp_string)
--	{
--	  temp_var = bind_variable ("PWD", temp_string, 0);
--	  set_auto_export (temp_var);
--	  free (temp_string);
--	}
--    }
--
--  /* According to the Single Unix Specification, v2, $OLDPWD is an
--     `environment variable' and therefore should be auto-exported.
--     Make a dummy invisible variable for OLDPWD, and mark it as exported. */
--  temp_var = bind_variable ("OLDPWD", (char *)NULL, 0);
--  VSETATTR (temp_var, (att_exported | att_invisible));
--}
--
--/* Make a variable $PPID, which holds the pid of the shell's parent.  */
--void
--set_ppid ()
--{
--  char namebuf[INT_STRLEN_BOUND(pid_t) + 1], *name;
--  SHELL_VAR *temp_var;
--
--  name = inttostr (getppid (), namebuf, sizeof(namebuf));
--  temp_var = find_variable ("PPID");
--  if (temp_var)
--    VUNSETATTR (temp_var, (att_readonly | att_exported));
--  temp_var = bind_variable ("PPID", name, 0);
--  VSETATTR (temp_var, (att_readonly | att_integer));
--}
--
--static void
--uidset ()
--{
--  char buff[INT_STRLEN_BOUND(uid_t) + 1], *b;
--  register SHELL_VAR *v;
--
--  b = inttostr (current_user.uid, buff, sizeof (buff));
--  v = find_variable ("UID");
--  if (v == 0)
--    {
--      v = bind_variable ("UID", b, 0);
--      VSETATTR (v, (att_readonly | att_integer));
--    }
--
--  if (current_user.euid != current_user.uid)
--    b = inttostr (current_user.euid, buff, sizeof (buff));
--
--  v = find_variable ("EUID");
--  if (v == 0)
--    {
--      v = bind_variable ("EUID", b, 0);
--      VSETATTR (v, (att_readonly | att_integer));
--    }
--}
--
--#if defined (ARRAY_VARS)
--static void
--make_vers_array ()
--{
--  SHELL_VAR *vv;
--  ARRAY *av;
--  char *s, d[32], b[INT_STRLEN_BOUND(int) + 1];
--
--  unbind_variable ("BASH_VERSINFO");
--
--  vv = make_new_array_variable ("BASH_VERSINFO");
--  av = array_cell (vv);
--  strcpy (d, dist_version);
--  s = strchr (d, '.');
--  if (s)
--    *s++ = '\0';
--  array_insert (av, 0, d);
--  array_insert (av, 1, s);
--  s = inttostr (patch_level, b, sizeof (b));
--  array_insert (av, 2, s);
--  s = inttostr (build_version, b, sizeof (b));
--  array_insert (av, 3, s);
--  array_insert (av, 4, release_status);
--  array_insert (av, 5, MACHTYPE);
--
--  VSETATTR (vv, att_readonly);
--}
--#endif /* ARRAY_VARS */
--
--/* Set the environment variables $LINES and $COLUMNS in response to
--   a window size change. */
--void
--sh_set_lines_and_columns (lines, cols)
--     int lines, cols;
--{
--  char val[INT_STRLEN_BOUND(int) + 1], *v;
--
--#if defined (READLINE)
--  /* If we are currently assigning to LINES or COLUMNS, don't do anything. */
--  if (winsize_assignment)
--    return;
--#endif
--
--  v = inttostr (lines, val, sizeof (val));
--  bind_variable ("LINES", v, 0);
--
--  v = inttostr (cols, val, sizeof (val));
--  bind_variable ("COLUMNS", v, 0);
--}
--
--/* **************************************************************** */
--/*								    */
--/*		   Printing variables and values		    */
--/*								    */
--/* **************************************************************** */
--
--/* Print LIST (a list of shell variables) to stdout in such a way that
--   they can be read back in. */
--void
--print_var_list (list)
--     register SHELL_VAR **list;
--{
--  register int i;
--  register SHELL_VAR *var;
--
--  for (i = 0; list && (var = list[i]); i++)
--    if (invisible_p (var) == 0)
--      print_assignment (var);
--}
--
--/* Print LIST (a list of shell functions) to stdout in such a way that
--   they can be read back in. */
--void
--print_func_list (list)
--     register SHELL_VAR **list;
--{
--  register int i;
--  register SHELL_VAR *var;
--
--  for (i = 0; list && (var = list[i]); i++)
--    {
--      printf ("%s ", var->name);
--      print_var_function (var);
--      printf ("\n");
--    }
--}
--      
--/* Print the value of a single SHELL_VAR.  No newline is
--   output, but the variable is printed in such a way that
--   it can be read back in. */
--void
--print_assignment (var)
--     SHELL_VAR *var;
--{
--  if (var_isset (var) == 0)
--    return;
--
--  if (function_p (var))
--    {
--      printf ("%s", var->name);
--      print_var_function (var);
--      printf ("\n");
--    }
--#if defined (ARRAY_VARS)
--  else if (array_p (var))
--    print_array_assignment (var, 0);
--  else if (assoc_p (var))
--    print_assoc_assignment (var, 0);
--#endif /* ARRAY_VARS */
--  else
--    {
--      printf ("%s=", var->name);
--      print_var_value (var, 1);
--      printf ("\n");
--    }
--}
--
--/* Print the value cell of VAR, a shell variable.  Do not print
--   the name, nor leading/trailing newline.  If QUOTE is non-zero,
--   and the value contains shell metacharacters, quote the value
--   in such a way that it can be read back in. */
--void
--print_var_value (var, quote)
--     SHELL_VAR *var;
--     int quote;
--{
--  char *t;
--
--  if (var_isset (var) == 0)
--    return;
--
--  if (quote && posixly_correct == 0 && ansic_shouldquote (value_cell (var)))
--    {
--      t = ansic_quote (value_cell (var), 0, (int *)0);
--      printf ("%s", t);
--      free (t);
--    }
--  else if (quote && sh_contains_shell_metas (value_cell (var)))
--    {
--      t = sh_single_quote (value_cell (var));
--      printf ("%s", t);
--      free (t);
--    }
--  else
--    printf ("%s", value_cell (var));
--}
--
--/* Print the function cell of VAR, a shell variable.  Do not
--   print the name, nor leading/trailing newline. */
--void
--print_var_function (var)
--     SHELL_VAR *var;
--{
--  char *x;
--
--  if (function_p (var) && var_isset (var))
--    {
--      x = named_function_string ((char *)NULL, function_cell(var), FUNC_MULTILINE|FUNC_EXTERNAL);
--      printf ("%s", x);
--    }
--}
--
--/* **************************************************************** */
--/*								    */
--/*		 	Dynamic Variables			    */
--/*								    */
--/* **************************************************************** */
--
--/* DYNAMIC VARIABLES
--
--   These are variables whose values are generated anew each time they are
--   referenced.  These are implemented using a pair of function pointers
--   in the struct variable: assign_func, which is called from bind_variable
--   and, if arrays are compiled into the shell, some of the functions in
--   arrayfunc.c, and dynamic_value, which is called from find_variable.
--
--   assign_func is called from bind_variable_internal, if
--   bind_variable_internal discovers that the variable being assigned to
--   has such a function.  The function is called as
--	SHELL_VAR *temp = (*(entry->assign_func)) (entry, value, ind)
--   and the (SHELL_VAR *)temp is returned as the value of bind_variable.  It
--   is usually ENTRY (self).  IND is an index for an array variable, and
--   unused otherwise.
--
--   dynamic_value is called from find_variable_internal to return a `new'
--   value for the specified dynamic varible.  If this function is NULL,
--   the variable is treated as a `normal' shell variable.  If it is not,
--   however, then this function is called like this:
--	tempvar = (*(var->dynamic_value)) (var);
--
--   Sometimes `tempvar' will replace the value of `var'.  Other times, the
--   shell will simply use the string value.  Pretty object-oriented, huh?
--
--   Be warned, though: if you `unset' a special variable, it loses its
--   special meaning, even if you subsequently set it.
--
--   The special assignment code would probably have been better put in
--   subst.c: do_assignment_internal, in the same style as
--   stupidly_hack_special_variables, but I wanted the changes as
--   localized as possible.  */
--
--#define INIT_DYNAMIC_VAR(var, val, gfunc, afunc) \
--  do \
--    { \
--      v = bind_variable (var, (val), 0); \
--      v->dynamic_value = gfunc; \
--      v->assign_func = afunc; \
--    } \
--  while (0)
--
--#define INIT_DYNAMIC_ARRAY_VAR(var, gfunc, afunc) \
--  do \
--    { \
--      v = make_new_array_variable (var); \
--      v->dynamic_value = gfunc; \
--      v->assign_func = afunc; \
--    } \
--  while (0)
--
--#define INIT_DYNAMIC_ASSOC_VAR(var, gfunc, afunc) \
--  do \
--    { \
--      v = make_new_assoc_variable (var); \
--      v->dynamic_value = gfunc; \
--      v->assign_func = afunc; \
--    } \
--  while (0)
--
--static SHELL_VAR *
--null_assign (self, value, unused, key)
--     SHELL_VAR *self;
--     char *value;
--     arrayind_t unused;
--     char *key;
--{
--  return (self);
--}
--
--#if defined (ARRAY_VARS)
--static SHELL_VAR *
--null_array_assign (self, value, ind, key)
--     SHELL_VAR *self;
--     char *value;
--     arrayind_t ind;
--     char *key;
--{
--  return (self);
--}
--#endif
--
--/* Degenerate `dynamic_value' function; just returns what's passed without
--   manipulation. */
--static SHELL_VAR *
--get_self (self)
--     SHELL_VAR *self;
--{
--  return (self);
--}
--
--#if defined (ARRAY_VARS)
--/* A generic dynamic array variable initializer.  Initialize array variable
--   NAME with dynamic value function GETFUNC and assignment function SETFUNC. */
--static SHELL_VAR *
--init_dynamic_array_var (name, getfunc, setfunc, attrs)
--     char *name;
--     sh_var_value_func_t *getfunc;
--     sh_var_assign_func_t *setfunc;
--     int attrs;
--{
--  SHELL_VAR *v;
--
--  v = find_variable (name);
--  if (v)
--    return (v);
--  INIT_DYNAMIC_ARRAY_VAR (name, getfunc, setfunc);
--  if (attrs)
--    VSETATTR (v, attrs);
--  return v;
--}
--
--static SHELL_VAR *
--init_dynamic_assoc_var (name, getfunc, setfunc, attrs)
--     char *name;
--     sh_var_value_func_t *getfunc;
--     sh_var_assign_func_t *setfunc;
--     int attrs;
--{
--  SHELL_VAR *v;
--
--  v = find_variable (name);
--  if (v)
--    return (v);
--  INIT_DYNAMIC_ASSOC_VAR (name, getfunc, setfunc);
--  if (attrs)
--    VSETATTR (v, attrs);
--  return v;
--}
--#endif
--
--/* The value of $SECONDS.  This is the number of seconds since shell
--   invocation, or, the number of seconds since the last assignment + the
--   value of the last assignment. */
--static intmax_t seconds_value_assigned;
--
--static SHELL_VAR *
--assign_seconds (self, value, unused, key)
--     SHELL_VAR *self;
--     char *value;
--     arrayind_t unused;
--     char *key;
--{
--  if (legal_number (value, &seconds_value_assigned) == 0)
--    seconds_value_assigned = 0;
--  shell_start_time = NOW;
--  return (self);
--}
--
--static SHELL_VAR *
--get_seconds (var)
--     SHELL_VAR *var;
--{
--  time_t time_since_start;
--  char *p;
--
--  time_since_start = NOW - shell_start_time;
--  p = itos(seconds_value_assigned + time_since_start);
--
--  FREE (value_cell (var));
--
--  VSETATTR (var, att_integer);
--  var_setvalue (var, p);
--  return (var);
--}
--
--static SHELL_VAR *
--init_seconds_var ()
--{
--  SHELL_VAR *v;
--
--  v = find_variable ("SECONDS");
--  if (v)
--    {
--      if (legal_number (value_cell(v), &seconds_value_assigned) == 0)
--	seconds_value_assigned = 0;
--    }
--  INIT_DYNAMIC_VAR ("SECONDS", (v ? value_cell (v) : (char *)NULL), get_seconds, assign_seconds);
--  return v;      
--}
--     
--/* The random number seed.  You can change this by setting RANDOM. */
--static unsigned long rseed = 1;
--static int last_random_value;
--static int seeded_subshell = 0;
--
--/* A linear congruential random number generator based on the example
--   one in the ANSI C standard.  This one isn't very good, but a more
--   complicated one is overkill. */
--
--/* Returns a pseudo-random number between 0 and 32767. */
--static int
--brand ()
--{
--  /* From "Random number generators: good ones are hard to find",
--     Park and Miller, Communications of the ACM, vol. 31, no. 10,
--     October 1988, p. 1195. filtered through FreeBSD */
--  long h, l;
--
--  /* Can't seed with 0. */
--  if (rseed == 0)
--    rseed = 123459876;
--  h = rseed / 127773;
--  l = rseed % 127773;
--  rseed = 16807 * l - 2836 * h;
--#if 0
--  if (rseed < 0)
--    rseed += 0x7fffffff;
--#endif
--  return ((unsigned int)(rseed & 32767));	/* was % 32768 */
--}
--
--/* Set the random number generator seed to SEED. */
--static void
--sbrand (seed)
--     unsigned long seed;
--{
--  rseed = seed;
--  last_random_value = 0;
--}
--
--static void
--seedrand ()
--{
--  struct timeval tv;
--
--  gettimeofday (&tv, NULL);
--  sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid ());
--}
--
--static SHELL_VAR *
--assign_random (self, value, unused, key)
--     SHELL_VAR *self;
--     char *value;
--     arrayind_t unused;
--     char *key;
--{
--  sbrand (strtoul (value, (char **)NULL, 10));
--  if (subshell_environment)
--    seeded_subshell = getpid ();
--  return (self);
--}
--
--int
--get_random_number ()
--{
--  int rv, pid;
--
--  /* Reset for command and process substitution. */
--  pid = getpid ();
--  if (subshell_environment && seeded_subshell != pid)
--    {
--      seedrand ();
--      seeded_subshell = pid;
--    }
--
--  do
--    rv = brand ();
--  while (rv == last_random_value);
--  return rv;
--}
--
--static SHELL_VAR *
--get_random (var)
--     SHELL_VAR *var;
--{
--  int rv;
--  char *p;
--
--  rv = get_random_number ();
--  last_random_value = rv;
--  p = itos (rv);
--
--  FREE (value_cell (var));
--
--  VSETATTR (var, att_integer);
--  var_setvalue (var, p);
--  return (var);
--}
--
--static SHELL_VAR *
--assign_lineno (var, value, unused, key)
--     SHELL_VAR *var;
--     char *value;
--     arrayind_t unused;
--     char *key;
--{
--  intmax_t new_value;
--
--  if (value == 0 || *value == '\0' || legal_number (value, &new_value) == 0)
--    new_value = 0;
--  line_number = line_number_base = new_value;
--  return var;
--}
--
--/* Function which returns the current line number. */
--static SHELL_VAR *
--get_lineno (var)
--     SHELL_VAR *var;
--{
--  char *p;
--  int ln;
--
--  ln = executing_line_number ();
--  p = itos (ln);
--  FREE (value_cell (var));
--  var_setvalue (var, p);
--  return (var);
--}
--
--static SHELL_VAR *
--assign_subshell (var, value, unused, key)
--     SHELL_VAR *var;
--     char *value;
--     arrayind_t unused;
--     char *key;
--{
--  intmax_t new_value;
--
--  if (value == 0 || *value == '\0' || legal_number (value, &new_value) == 0)
--    new_value = 0;
--  subshell_level = new_value;
--  return var;
--}
--
--static SHELL_VAR *
--get_subshell (var)
--     SHELL_VAR *var;
--{
--  char *p;
--
--  p = itos (subshell_level);
--  FREE (value_cell (var));
--  var_setvalue (var, p);
--  return (var);
--}
--
--static SHELL_VAR *
--get_bashpid (var)
--     SHELL_VAR *var;
--{
--  int pid;
--  char *p;
--
--  pid = getpid ();
--  p = itos (pid);
--
--  FREE (value_cell (var));
--  VSETATTR (var, att_integer|att_readonly);
--  var_setvalue (var, p);
--  return (var);
--}
--
--static SHELL_VAR *
--get_bash_command (var)
--     SHELL_VAR *var;
--{
--  char *p;
--
--  if (the_printed_command_except_trap)
--    p = savestring (the_printed_command_except_trap);
--  else
--    {
--      p = (char *)xmalloc (1);
--      p[0] = '\0';
--    }
--  FREE (value_cell (var));
--  var_setvalue (var, p);
--  return (var);
--}
--
--#if defined (HISTORY)
--static SHELL_VAR *
--get_histcmd (var)
--     SHELL_VAR *var;
--{
--  char *p;
--
--  p = itos (history_number ());
--  FREE (value_cell (var));
--  var_setvalue (var, p);
--  return (var);
--}
--#endif
--
--#if defined (READLINE)
--/* When this function returns, VAR->value points to malloced memory. */
--static SHELL_VAR *
--get_comp_wordbreaks (var)
--     SHELL_VAR *var;
--{
--  /* If we don't have anything yet, assign a default value. */
--  if (rl_completer_word_break_characters == 0 && bash_readline_initialized == 0)
--    enable_hostname_completion (perform_hostname_completion);
--
--  FREE (value_cell (var));
--  var_setvalue (var, savestring (rl_completer_word_break_characters));
--
--  return (var);
--}
--
--/* When this function returns, rl_completer_word_break_characters points to
--   malloced memory. */
--static SHELL_VAR *
--assign_comp_wordbreaks (self, value, unused, key)
--     SHELL_VAR *self;
--     char *value;
--     arrayind_t unused;
--     char *key;
--{
--  if (rl_completer_word_break_characters &&
--      rl_completer_word_break_characters != rl_basic_word_break_characters)
--    free (rl_completer_word_break_characters);
--
--  rl_completer_word_break_characters = savestring (value);
--  return self;
--}
--#endif /* READLINE */
--
--#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS)
--static SHELL_VAR *
--assign_dirstack (self, value, ind, key)
--     SHELL_VAR *self;
--     char *value;
--     arrayind_t ind;
--     char *key;
--{
--  set_dirstack_element (ind, 1, value);
--  return self;
--}
--
--static SHELL_VAR *
--get_dirstack (self)
--     SHELL_VAR *self;
--{
--  ARRAY *a;
--  WORD_LIST *l;
--
--  l = get_directory_stack (0);
--  a = array_from_word_list (l);
--  array_dispose (array_cell (self));
--  dispose_words (l);
--  var_setarray (self, a);
--  return self;
--}
--#endif /* PUSHD AND POPD && ARRAY_VARS */
--
--#if defined (ARRAY_VARS)
--/* We don't want to initialize the group set with a call to getgroups()
--   unless we're asked to, but we only want to do it once. */
--static SHELL_VAR *
--get_groupset (self)
--     SHELL_VAR *self;
--{
--  register int i;
--  int ng;
--  ARRAY *a;
--  static char **group_set = (char **)NULL;
--
--  if (group_set == 0)
--    {
--      group_set = get_group_list (&ng);
--      a = array_cell (self);
--      for (i = 0; i < ng; i++)
--	array_insert (a, i, group_set[i]);
--    }
--  return (self);
--}
--
--static SHELL_VAR *
--build_hashcmd (self)
--     SHELL_VAR *self;
--{
--  HASH_TABLE *h;
--  int i;
--  char *k, *v;
--  BUCKET_CONTENTS *item;
--
--  h = assoc_cell (self);
--  if (h)
--    assoc_dispose (h);
--
--  if (hashed_filenames == 0 || HASH_ENTRIES (hashed_filenames) == 0)
--    {
--      var_setvalue (self, (char *)NULL);
--      return self;
--    }
--
--  h = assoc_create (hashed_filenames->nbuckets);
--  for (i = 0; i < hashed_filenames->nbuckets; i++)
--    {
--      for (item = hash_items (i, hashed_filenames); item; item = item->next)
--	{
--	  k = savestring (item->key);
--	  v = pathdata(item)->path;
--	  assoc_insert (h, k, v);
--	}
--    }
--
--  var_setvalue (self, (char *)h);
--  return self;
--}
--
--static SHELL_VAR *
--get_hashcmd (self)
--     SHELL_VAR *self;
--{
--  build_hashcmd (self);
--  return (self);
--}
--
--static SHELL_VAR *
--assign_hashcmd (self, value, ind, key)
--     SHELL_VAR *self;
--     char *value;
--     arrayind_t ind;
--     char *key;
--{
--  phash_insert (key, value, 0, 0);
--  return (build_hashcmd (self));
--}
--
--#if defined (ALIAS)
--static SHELL_VAR *
--build_aliasvar (self)
--     SHELL_VAR *self;
--{
--  HASH_TABLE *h;
--  int i;
--  char *k, *v;
--  BUCKET_CONTENTS *item;
--
--  h = assoc_cell (self);
--  if (h)
--    assoc_dispose (h);
--
--  if (aliases == 0 || HASH_ENTRIES (aliases) == 0)
--    {
--      var_setvalue (self, (char *)NULL);
--      return self;
--    }
--
--  h = assoc_create (aliases->nbuckets);
--  for (i = 0; i < aliases->nbuckets; i++)
--    {
--      for (item = hash_items (i, aliases); item; item = item->next)
--	{
--	  k = savestring (item->key);
--	  v = ((alias_t *)(item->data))->value;
--	  assoc_insert (h, k, v);
--	}
--    }
--
--  var_setvalue (self, (char *)h);
--  return self;
--}
--
--static SHELL_VAR *
--get_aliasvar (self)
--     SHELL_VAR *self;
--{
--  build_aliasvar (self);
--  return (self);
--}
--
--static SHELL_VAR *
--assign_aliasvar (self, value, ind, key)
--     SHELL_VAR *self;
--     char *value;
--     arrayind_t ind;
--     char *key;
--{
--  add_alias (key, value);
--  return (build_aliasvar (self));
--}
--#endif /* ALIAS */
--
--#endif /* ARRAY_VARS */
--
--/* If ARRAY_VARS is not defined, this just returns the name of any
--   currently-executing function.  If we have arrays, it's a call stack. */
--static SHELL_VAR *
--get_funcname (self)
--     SHELL_VAR *self;
--{
--#if ! defined (ARRAY_VARS)
--  char *t;
--  if (variable_context && this_shell_function)
--    {
--      FREE (value_cell (self));
--      t = savestring (this_shell_function->name);
--      var_setvalue (self, t);
--    }
--#endif
--  return (self);
--}
--
--void
--make_funcname_visible (on_or_off)
--     int on_or_off;
--{
--  SHELL_VAR *v;
--
--  v = find_variable ("FUNCNAME");
--  if (v == 0 || v->dynamic_value == 0)
--    return;
--
--  if (on_or_off)
--    VUNSETATTR (v, att_invisible);
--  else
--    VSETATTR (v, att_invisible);
--}
--
--static SHELL_VAR *
--init_funcname_var ()
--{
--  SHELL_VAR *v;
--
--  v = find_variable ("FUNCNAME");
--  if (v)
--    return v;
--#if defined (ARRAY_VARS)
--  INIT_DYNAMIC_ARRAY_VAR ("FUNCNAME", get_funcname, null_array_assign);
--#else
--  INIT_DYNAMIC_VAR ("FUNCNAME", (char *)NULL, get_funcname, null_assign);
--#endif
--  VSETATTR (v, att_invisible|att_noassign);
--  return v;
--}
--
--static void
--initialize_dynamic_variables ()
--{
--  SHELL_VAR *v;
--
--  v = init_seconds_var ();
--
--  INIT_DYNAMIC_VAR ("BASH_COMMAND", (char *)NULL, get_bash_command, (sh_var_assign_func_t *)NULL);
--  INIT_DYNAMIC_VAR ("BASH_SUBSHELL", (char *)NULL, get_subshell, assign_subshell);
--
--  INIT_DYNAMIC_VAR ("RANDOM", (char *)NULL, get_random, assign_random);
--  VSETATTR (v, att_integer);
--  INIT_DYNAMIC_VAR ("LINENO", (char *)NULL, get_lineno, assign_lineno);
--  VSETATTR (v, att_integer);
--
--  INIT_DYNAMIC_VAR ("BASHPID", (char *)NULL, get_bashpid, null_assign);
--  VSETATTR (v, att_integer|att_readonly);
--
--#if defined (HISTORY)
--  INIT_DYNAMIC_VAR ("HISTCMD", (char *)NULL, get_histcmd, (sh_var_assign_func_t *)NULL);
--  VSETATTR (v, att_integer);
--#endif
--
--#if defined (READLINE)
--  INIT_DYNAMIC_VAR ("COMP_WORDBREAKS", (char *)NULL, get_comp_wordbreaks, assign_comp_wordbreaks);
--#endif
--
--#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS)
--  v = init_dynamic_array_var ("DIRSTACK", get_dirstack, assign_dirstack, 0);
--#endif /* PUSHD_AND_POPD && ARRAY_VARS */
--
--#if defined (ARRAY_VARS)
--  v = init_dynamic_array_var ("GROUPS", get_groupset, null_array_assign, att_noassign);
--
--#  if defined (DEBUGGER)
--  v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, att_noassign|att_nounset);
--  v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, att_noassign|att_nounset);
--#  endif /* DEBUGGER */
--  v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, att_noassign|att_nounset);
--  v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, att_noassign|att_nounset);
--
--  v = init_dynamic_assoc_var ("BASH_CMDS", get_hashcmd, assign_hashcmd, att_nofree);
--#  if defined (ALIAS)
--  v = init_dynamic_assoc_var ("BASH_ALIASES", get_aliasvar, assign_aliasvar, att_nofree);
--#  endif
--#endif
--
--  v = init_funcname_var ();
--}
--
--/* **************************************************************** */
--/*								    */
--/*		Retrieving variables and values			    */
--/*								    */
--/* **************************************************************** */
--
--/* How to get a pointer to the shell variable or function named NAME.
--   HASHED_VARS is a pointer to the hash table containing the list
--   of interest (either variables or functions). */
--
--static SHELL_VAR *
--hash_lookup (name, hashed_vars)
--     const char *name;
--     HASH_TABLE *hashed_vars;
--{
--  BUCKET_CONTENTS *bucket;
--
--  bucket = hash_search (name, hashed_vars, 0);
--  /* If we find the name in HASHED_VARS, set LAST_TABLE_SEARCHED to that
--     table. */
--  if (bucket)
--    last_table_searched = hashed_vars;
--  return (bucket ? (SHELL_VAR *)bucket->data : (SHELL_VAR *)NULL);
--}
--
--SHELL_VAR *
--var_lookup (name, vcontext)
--     const char *name;
--     VAR_CONTEXT *vcontext;
--{
--  VAR_CONTEXT *vc;
--  SHELL_VAR *v;
--
--  v = (SHELL_VAR *)NULL;
--  for (vc = vcontext; vc; vc = vc->down)
--    if (v = hash_lookup (name, vc->table))
--      break;
--
--  return v;
--}
--
--/* Look up the variable entry named NAME.  If SEARCH_TEMPENV is non-zero,
--   then also search the temporarily built list of exported variables.
--   The lookup order is:
--	temporary_env
--	shell_variables list
--*/
--
--SHELL_VAR *
--find_variable_internal (name, force_tempenv)
--     const char *name;
--     int force_tempenv;
--{
--  SHELL_VAR *var;
--  int search_tempenv;
--  VAR_CONTEXT *vc;
--
--  var = (SHELL_VAR *)NULL;
--
--  /* If explicitly requested, first look in the temporary environment for
--     the variable.  This allows constructs such as "foo=x eval 'echo $foo'"
--     to get the `exported' value of $foo.  This happens if we are executing
--     a function or builtin, or if we are looking up a variable in a
--     "subshell environment". */
--  search_tempenv = force_tempenv || (expanding_redir == 0 && subshell_environment);
--
--  if (search_tempenv && temporary_env)		
--    var = hash_lookup (name, temporary_env);
--
--  vc = shell_variables;
--#if 0
--if (search_tempenv == 0 && /* (subshell_environment & SUBSHELL_COMSUB) && */
--    expanding_redir &&
--    (this_shell_builtin == eval_builtin || this_shell_builtin == command_builtin))
--  {
--  itrace("find_variable_internal: search_tempenv == 0: skipping VC_BLTNENV");
--  while (vc && (vc->flags & VC_BLTNENV))
--    vc = vc->down;
--  if (vc == 0)
--    vc = shell_variables;
--  }
--#endif
--
--  if (var == 0)
--    var = var_lookup (name, vc);
--
--  if (var == 0)
--    return ((SHELL_VAR *)NULL);
--
--  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
--}
--
--/* Look up and resolve the chain of nameref variables starting at V all the
--   way to NULL or non-nameref. */
--SHELL_VAR *
--find_variable_nameref (v)
--     SHELL_VAR *v;
--{
--  int level;
--  char *newname;
--  SHELL_VAR *orig, *oldv;
--
--  level = 0;
--  orig = v;
--  while (v && nameref_p (v))
--    {
--      level++;
--      if (level > NAMEREF_MAX)
--	return ((SHELL_VAR *)0);	/* error message here? */
--      newname = nameref_cell (v);
--      if (newname == 0 || *newname == '\0')
--	return ((SHELL_VAR *)0);
--      oldv = v;
--      v = find_variable_internal (newname, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
--      if (v == orig || v == oldv)
--	{
--	  internal_warning (_("%s: circular name reference"), orig->name);
--	  return ((SHELL_VAR *)0);
--	}
--    }
--  return v;
--}
--
--/* Resolve the chain of nameref variables for NAME.  XXX - could change later */
--SHELL_VAR *
--find_variable_last_nameref (name)
--     const char *name;
--{
--  SHELL_VAR *v, *nv;
--  char *newname;
--  int level;
--
--  nv = v = find_variable_noref (name);
--  level = 0;
--  while (v && nameref_p (v))
--    {
--      level++;
--      if (level > NAMEREF_MAX)
--        return ((SHELL_VAR *)0);	/* error message here? */
--      newname = nameref_cell (v);
--      if (newname == 0 || *newname == '\0')
--	return ((SHELL_VAR *)0);
--      nv = v;
--      v = find_variable_internal (newname, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
--    }
--  return nv;
--}
--
--/* Resolve the chain of nameref variables for NAME.  XXX - could change later */
--SHELL_VAR *
--find_global_variable_last_nameref (name)
--     const char *name;
--{
--  SHELL_VAR *v, *nv;
--  char *newname;
--  int level;
--
--  nv = v = find_global_variable_noref (name);
--  level = 0;
--  while (v && nameref_p (v))
--    {
--      level++;
--      if (level > NAMEREF_MAX)
--        return ((SHELL_VAR *)0);	/* error message here? */
--      newname = nameref_cell (v);
--      if (newname == 0 || *newname == '\0')
--	return ((SHELL_VAR *)0);
--      nv = v;
--      v = find_global_variable_noref (newname);
--    }
--  return nv;
--}
--
--static SHELL_VAR *
--find_nameref_at_context (v, vc)
--     SHELL_VAR *v;
--     VAR_CONTEXT *vc;
--{
--  SHELL_VAR *nv, *nv2;
--  VAR_CONTEXT *nvc;
--  char *newname;
--  int level;
--
--  nv = v;
--  level = 1;
--  while (nv && nameref_p (nv))
--    {
--      level++;
--      if (level > NAMEREF_MAX)
--        return ((SHELL_VAR *)NULL);
--      newname = nameref_cell (nv);
--      if (newname == 0 || *newname == '\0')
--        return ((SHELL_VAR *)NULL);      
--      nv2 = hash_lookup (newname, vc->table);
--      if (nv2 == 0)
--        break;
--      nv = nv2;
--    }
--  return nv;
--}
--
--/* Do nameref resolution from the VC, which is the local context for some
--   function or builtin, `up' the chain to the global variables context.  If
--   NVCP is not NULL, return the variable context where we finally ended the
--   nameref resolution (so the bind_variable_internal can use the correct
--   variable context and hash table). */
--static SHELL_VAR *
--find_variable_nameref_context (v, vc, nvcp)
--     SHELL_VAR *v;
--     VAR_CONTEXT *vc;
--     VAR_CONTEXT **nvcp;
--{
--  SHELL_VAR *nv, *nv2;
--  VAR_CONTEXT *nvc;
--
--  /* Look starting at the current context all the way `up' */
--  for (nv = v, nvc = vc; nvc; nvc = nvc->down)
--    {
--      nv2 = find_nameref_at_context (nv, nvc);
--      if (nv2 == 0)
--        continue;
--      nv = nv2;
--      if (*nvcp)
--        *nvcp = nvc;
--      if (nameref_p (nv) == 0)
--        break;
--    }
--  return (nameref_p (nv) ? (SHELL_VAR *)NULL : nv);
--}
--
--/* Do nameref resolution from the VC, which is the local context for some
--   function or builtin, `up' the chain to the global variables context.  If
--   NVCP is not NULL, return the variable context where we finally ended the
--   nameref resolution (so the bind_variable_internal can use the correct
--   variable context and hash table). */
--static SHELL_VAR *
--find_variable_last_nameref_context (v, vc, nvcp)
--     SHELL_VAR *v;
--     VAR_CONTEXT *vc;
--     VAR_CONTEXT **nvcp;
--{
--  SHELL_VAR *nv, *nv2;
--  VAR_CONTEXT *nvc;
--
--  /* Look starting at the current context all the way `up' */
--  for (nv = v, nvc = vc; nvc; nvc = nvc->down)
--    {
--      nv2 = find_nameref_at_context (nv, nvc);
--      if (nv2 == 0)
--	continue;
--      nv = nv2;
--      if (*nvcp)
--        *nvcp = nvc;
--    }
--  return (nameref_p (nv) ? nv : (SHELL_VAR *)NULL);
--}
--
--/* Find a variable, forcing a search of the temporary environment first */
--SHELL_VAR *
--find_variable_tempenv (name)
--     const char *name;
--{
--  SHELL_VAR *var;
--
--  var = find_variable_internal (name, 1);
--  if (var && nameref_p (var))
--    var = find_variable_nameref (var);
--  return (var);
--}
--
--/* Find a variable, not forcing a search of the temporary environment first */
--SHELL_VAR *
--find_variable_notempenv (name)
--     const char *name;
--{
--  SHELL_VAR *var;
--
--  var = find_variable_internal (name, 0);
--  if (var && nameref_p (var))
--    var = find_variable_nameref (var);
--  return (var);
--}
--
--SHELL_VAR *
--find_global_variable (name)
--     const char *name;
--{
--  SHELL_VAR *var;
--
--  var = var_lookup (name, global_variables);
--  if (var && nameref_p (var))
--    var = find_variable_nameref (var);
--
--  if (var == 0)
--    return ((SHELL_VAR *)NULL);
--
--  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
--}
--
--SHELL_VAR *
--find_global_variable_noref (name)
--     const char *name;
--{
--  SHELL_VAR *var;
--
--  var = var_lookup (name, global_variables);
--
--  if (var == 0)
--    return ((SHELL_VAR *)NULL);
--
--  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
--}
--
--SHELL_VAR *
--find_shell_variable (name)
--     const char *name;
--{
--  SHELL_VAR *var;
--
--  var = var_lookup (name, shell_variables);
--  if (var && nameref_p (var))
--    var = find_variable_nameref (var);
--
--  if (var == 0)
--    return ((SHELL_VAR *)NULL);
--
--  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
--}
--
--/* Look up the variable entry named NAME.  Returns the entry or NULL. */
--SHELL_VAR *
--find_variable (name)
--     const char *name;
--{
--  SHELL_VAR *v;
--
--  last_table_searched = 0;
--  v = find_variable_internal (name, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
--  if (v && nameref_p (v))
--    v = find_variable_nameref (v);
--  return v;
--}
--
--SHELL_VAR *
--find_variable_noref (name)
--     const char *name;
--{
--  SHELL_VAR *v;
--
--  v = find_variable_internal (name, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
--  return v;
--}
--
--/* Look up the function entry whose name matches STRING.
--   Returns the entry or NULL. */
--SHELL_VAR *
--find_function (name)
--     const char *name;
--{
--  return (hash_lookup (name, shell_functions));
--}
--
--/* Find the function definition for the shell function named NAME.  Returns
--   the entry or NULL. */
--FUNCTION_DEF *
--find_function_def (name)
--     const char *name;
--{
--#if defined (DEBUGGER)
--  return ((FUNCTION_DEF *)hash_lookup (name, shell_function_defs));
--#else
--  return ((FUNCTION_DEF *)0);
--#endif
--}
--
--/* Return the value of VAR.  VAR is assumed to have been the result of a
--   lookup without any subscript, if arrays are compiled into the shell. */
--char *
--get_variable_value (var)
--     SHELL_VAR *var;
--{
--  if (var == 0)
--    return ((char *)NULL);
--#if defined (ARRAY_VARS)
--  else if (array_p (var))
--    return (array_reference (array_cell (var), 0));
--  else if (assoc_p (var))
--    return (assoc_reference (assoc_cell (var), "0"));
--#endif
--  else
--    return (value_cell (var));
--}
--
--/* Return the string value of a variable.  Return NULL if the variable
--   doesn't exist.  Don't cons a new string.  This is a potential memory
--   leak if the variable is found in the temporary environment.  Since
--   functions and variables have separate name spaces, returns NULL if
--   var_name is a shell function only. */
--char *
--get_string_value (var_name)
--     const char *var_name;
--{
--  SHELL_VAR *var;
--
--  var = find_variable (var_name);
--  return ((var) ? get_variable_value (var) : (char *)NULL);
--}
--
--/* This is present for use by the tilde and readline libraries. */
--char *
--sh_get_env_value (v)
--     const char *v;
--{
--  return get_string_value (v);
--}
--
--/* **************************************************************** */
--/*								    */
--/*		  Creating and setting variables		    */
--/*								    */
--/* **************************************************************** */
--
--/* Set NAME to VALUE if NAME has no value. */
--SHELL_VAR *
--set_if_not (name, value)
--     char *name, *value;
--{
--  SHELL_VAR *v;
--
--  if (shell_variables == 0)
--    create_variable_tables ();
--
--  v = find_variable (name);
--  if (v == 0)
--    v = bind_variable_internal (name, value, global_variables->table, HASH_NOSRCH, 0);
--  return (v);
--}
--
--/* Create a local variable referenced by NAME. */
--SHELL_VAR *
--make_local_variable (name)
--     const char *name;
--{
--  SHELL_VAR *new_var, *old_var;
--  VAR_CONTEXT *vc;
--  int was_tmpvar;
--  char *tmp_value;
--
--  /* local foo; local foo;  is a no-op. */
--  old_var = find_variable (name);
--  if (old_var && local_p (old_var) && old_var->context == variable_context)
--    return (old_var);
--
--  was_tmpvar = old_var && tempvar_p (old_var);
--  /* If we're making a local variable in a shell function, the temporary env
--     has already been merged into the function's variable context stack.  We
--     can assume that a temporary var in the same context appears in the same
--     VAR_CONTEXT and can safely be returned without creating a new variable
--     (which results in duplicate names in the same VAR_CONTEXT->table */
--  /* We can't just test tmpvar_p because variables in the temporary env given
--     to a shell function appear in the function's local variable VAR_CONTEXT
--     but retain their tempvar attribute.  We want temporary variables that are
--     found in temporary_env, hence the test for last_table_searched, which is
--     set in hash_lookup and only (so far) checked here. */
--  if (was_tmpvar && old_var->context == variable_context && last_table_searched != temporary_env)
--    {
--      VUNSETATTR (old_var, att_invisible);
--      return (old_var);
--    }
--  if (was_tmpvar)
--    tmp_value = value_cell (old_var);
--
--  for (vc = shell_variables; vc; vc = vc->down)
--    if (vc_isfuncenv (vc) && vc->scope == variable_context)
--      break;
--
--  if (vc == 0)
--    {
--      internal_error (_("make_local_variable: no function context at current scope"));
--      return ((SHELL_VAR *)NULL);
--    }
--  else if (vc->table == 0)
--    vc->table = hash_create (TEMPENV_HASH_BUCKETS);
--
--  /* Since this is called only from the local/declare/typeset code, we can
--     call builtin_error here without worry (of course, it will also work
--     for anything that sets this_command_name).  Variables with the `noassign'
--     attribute may not be made local.  The test against old_var's context
--     level is to disallow local copies of readonly global variables (since I
--     believe that this could be a security hole).  Readonly copies of calling
--     function local variables are OK. */
--  if (old_var && (noassign_p (old_var) ||
--		 (readonly_p (old_var) && old_var->context == 0)))
--    {
--      if (readonly_p (old_var))
--	sh_readonly (name);
--      else if (noassign_p (old_var))
--	builtin_error (_("%s: variable may not be assigned value"), name);
--#if 0
--      /* Let noassign variables through with a warning */
--      if (readonly_p (old_var))
--#endif
--	return ((SHELL_VAR *)NULL);
--    }
--
--  if (old_var == 0)
--    new_var = make_new_variable (name, vc->table);
--  else
--    {
--      new_var = make_new_variable (name, vc->table);
--
--      /* If we found this variable in one of the temporary environments,
--	 inherit its value.  Watch to see if this causes problems with
--	 things like `x=4 local x'. XXX - see above for temporary env
--	 variables with the same context level as variable_context */
--      /* XXX - we should only do this if the variable is not an array. */
--      if (was_tmpvar)
--	var_setvalue (new_var, savestring (tmp_value));
--
--      new_var->attributes = exported_p (old_var) ? att_exported : 0;
--    }
--
--  vc->flags |= VC_HASLOCAL;
--
--  new_var->context = variable_context;
--  VSETATTR (new_var, att_local);
--
--  if (ifsname (name))
--    setifs (new_var);
--
--  if (was_tmpvar == 0)
--    VSETATTR (new_var, att_invisible);	/* XXX */
--  return (new_var);
--}
--
--/* Create a new shell variable with name NAME. */
--static SHELL_VAR *
--new_shell_variable (name)
--     const char *name;
--{
--  SHELL_VAR *entry;
--
--  entry = (SHELL_VAR *)xmalloc (sizeof (SHELL_VAR));
--
--  entry->name = savestring (name);
--  var_setvalue (entry, (char *)NULL);
--  CLEAR_EXPORTSTR (entry);
--
--  entry->dynamic_value = (sh_var_value_func_t *)NULL;
--  entry->assign_func = (sh_var_assign_func_t *)NULL;
--
--  entry->attributes = 0;
--
--  /* Always assume variables are to be made at toplevel!
--     make_local_variable has the responsibility of changing the
--     variable context. */
--  entry->context = 0;
--
--  return (entry);
--}
--
--/* Create a new shell variable with name NAME and add it to the hash table
--   TABLE. */
--static SHELL_VAR *
--make_new_variable (name, table)
--     const char *name;
--     HASH_TABLE *table;
--{
--  SHELL_VAR *entry;
--  BUCKET_CONTENTS *elt;
--
--  entry = new_shell_variable (name);
--
--  /* Make sure we have a shell_variables hash table to add to. */
--  if (shell_variables == 0)
--    create_variable_tables ();
--
--  elt = hash_insert (savestring (name), table, HASH_NOSRCH);
--  elt->data = (PTR_T)entry;
--
--  return entry;
--}
--
--#if defined (ARRAY_VARS)
--SHELL_VAR *
--make_new_array_variable (name)
--     char *name;
--{
--  SHELL_VAR *entry;
--  ARRAY *array;
--
--  entry = make_new_variable (name, global_variables->table);
--  array = array_create ();
--
--  var_setarray (entry, array);
--  VSETATTR (entry, att_array);
--  return entry;
--}
--
--SHELL_VAR *
--make_local_array_variable (name, assoc_ok)
--     char *name;
--     int assoc_ok;
--{
--  SHELL_VAR *var;
--  ARRAY *array;
--
--  var = make_local_variable (name);
--  if (var == 0 || array_p (var) || (assoc_ok && assoc_p (var)))
--    return var;
--
--  array = array_create ();
--
--  dispose_variable_value (var);
--  var_setarray (var, array);
--  VSETATTR (var, att_array);
--  return var;
--}
--
--SHELL_VAR *
--make_new_assoc_variable (name)
--     char *name;
--{
--  SHELL_VAR *entry;
--  HASH_TABLE *hash;
--
--  entry = make_new_variable (name, global_variables->table);
--  hash = assoc_create (0);
--
--  var_setassoc (entry, hash);
--  VSETATTR (entry, att_assoc);
--  return entry;
--}
--
--SHELL_VAR *
--make_local_assoc_variable (name)
--     char *name;
--{
--  SHELL_VAR *var;
--  HASH_TABLE *hash;
--
--  var = make_local_variable (name);
--  if (var == 0 || assoc_p (var))
--    return var;
--
--  dispose_variable_value (var);
--  hash = assoc_create (0);
--
--  var_setassoc (var, hash);
--  VSETATTR (var, att_assoc);
--  return var;
--}
--#endif
--
--char *
--make_variable_value (var, value, flags)
--     SHELL_VAR *var;
--     char *value;
--     int flags;
--{
--  char *retval, *oval;
--  intmax_t lval, rval;
--  int expok, olen, op;
--
--  /* If this variable has had its type set to integer (via `declare -i'),
--     then do expression evaluation on it and store the result.  The
--     functions in expr.c (evalexp()) and bind_int_variable() are responsible
--     for turning off the integer flag if they don't want further
--     evaluation done. */
--  if (integer_p (var))
--    {
--      if (flags & ASS_APPEND)
--	{
--	  oval = value_cell (var);
--	  lval = evalexp (oval, &expok);	/* ksh93 seems to do this */
--	  if (expok == 0)
--	    {
--	      top_level_cleanup ();
--	      jump_to_top_level (DISCARD);
--	    }
--	}
--      rval = evalexp (value, &expok);
--      if (expok == 0)
--	{
--	  top_level_cleanup ();
--	  jump_to_top_level (DISCARD);
--	}
--      /* This can be fooled if the variable's value changes while evaluating
--	 `rval'.  We can change it if we move the evaluation of lval to here. */
--      if (flags & ASS_APPEND)
--	rval += lval;
--      retval = itos (rval);
--    }
--#if defined (CASEMOD_ATTRS)
--  else if (capcase_p (var) || uppercase_p (var) || lowercase_p (var))
--    {
--      if (flags & ASS_APPEND)
--	{
--	  oval = get_variable_value (var);
--	  if (oval == 0)	/* paranoia */
--	    oval = "";
--	  olen = STRLEN (oval);
--	  retval = (char *)xmalloc (olen + (value ? STRLEN (value) : 0) + 1);
--	  strcpy (retval, oval);
--	  if (value)
--	    strcpy (retval+olen, value);
--	}
--      else if (*value)
--	retval = savestring (value);
--      else
--	{
--	  retval = (char *)xmalloc (1);
--	  retval[0] = '\0';
--	}
--      op = capcase_p (var) ? CASE_CAPITALIZE
--			 : (uppercase_p (var) ? CASE_UPPER : CASE_LOWER);
--      oval = sh_modcase (retval, (char *)0, op);
--      free (retval);
--      retval = oval;
--    }
--#endif /* CASEMOD_ATTRS */
--  else if (value)
--    {
--      if (flags & ASS_APPEND)
--	{
--	  oval = get_variable_value (var);
--	  if (oval == 0)	/* paranoia */
--	    oval = "";
--	  olen = STRLEN (oval);
--	  retval = (char *)xmalloc (olen + (value ? STRLEN (value) : 0) + 1);
--	  strcpy (retval, oval);
--	  if (value)
--	    strcpy (retval+olen, value);
--	}
--      else if (*value)
--	retval = savestring (value);
--      else
--	{
--	  retval = (char *)xmalloc (1);
--	  retval[0] = '\0';
--	}
--    }
--  else
--    retval = (char *)NULL;
--
--  return retval;
--}
--
--/* Bind a variable NAME to VALUE in the HASH_TABLE TABLE, which may be the
--   temporary environment (but usually is not). */
--static SHELL_VAR *
--bind_variable_internal (name, value, table, hflags, aflags)
--     const char *name;
--     char *value;
--     HASH_TABLE *table;
--     int hflags, aflags;
--{
--  char *newval;
--  SHELL_VAR *entry;
--
--  entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
--  /* Follow the nameref chain here if this is the global variables table */
--  if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
--    {
--      entry = find_global_variable (entry->name);
--      /* Let's see if we have a nameref referencing a variable that hasn't yet
--	 been created. */
--      if (entry == 0)
--	entry = find_variable_last_nameref (name);	/* XXX */
--      if (entry == 0)					/* just in case */
--        return (entry);
--    }
--
--  /* The first clause handles `declare -n ref; ref=x;' */
--  if (entry && invisible_p (entry) && nameref_p (entry))
--    goto assign_value;
--  else if (entry && nameref_p (entry))
--    {
--      newval = nameref_cell (entry);
--#if defined (ARRAY_VARS)
--      /* declare -n foo=x[2] */
--      if (valid_array_reference (newval))
--        /* XXX - should it be aflags? */
--	entry = assign_array_element (newval, make_variable_value (entry, value, 0), aflags);
--      else
--#endif
--      {
--      entry = make_new_variable (newval, table);
--      var_setvalue (entry, make_variable_value (entry, value, 0));
--      }
--    }
--  else if (entry == 0)
--    {
--      entry = make_new_variable (name, table);
--      var_setvalue (entry, make_variable_value (entry, value, 0)); /* XXX */
--    }
--  else if (entry->assign_func)	/* array vars have assign functions now */
--    {
--      INVALIDATE_EXPORTSTR (entry);
--      newval = (aflags & ASS_APPEND) ? make_variable_value (entry, value, aflags) : value;
--      if (assoc_p (entry))
--	entry = (*(entry->assign_func)) (entry, newval, -1, savestring ("0"));
--      else if (array_p (entry))
--	entry = (*(entry->assign_func)) (entry, newval, 0, 0);
--      else
--	entry = (*(entry->assign_func)) (entry, newval, -1, 0);
--      if (newval != value)
--	free (newval);
--      return (entry);
--    }
--  else
--    {
--assign_value:
--      if (readonly_p (entry) || noassign_p (entry))
--	{
--	  if (readonly_p (entry))
--	    err_readonly (name);
--	  return (entry);
--	}
--
--      /* Variables which are bound are visible. */
--      VUNSETATTR (entry, att_invisible);
--
--#if defined (ARRAY_VARS)
--      if (assoc_p (entry) || array_p (entry))
--        newval = make_array_variable_value (entry, 0, "0", value, aflags);
--      else
--#endif
--
--      newval = make_variable_value (entry, value, aflags);	/* XXX */
--
--      /* Invalidate any cached export string */
--      INVALIDATE_EXPORTSTR (entry);
--
--#if defined (ARRAY_VARS)
--      /* XXX -- this bears looking at again -- XXX */
--      /* If an existing array variable x is being assigned to with x=b or
--	 `read x' or something of that nature, silently convert it to
--	 x[0]=b or `read x[0]'. */
--      if (assoc_p (entry))
--	{
--	  assoc_insert (assoc_cell (entry), savestring ("0"), newval);
--	  free (newval);
--	}
--      else if (array_p (entry))
--	{
--	  array_insert (array_cell (entry), 0, newval);
--	  free (newval);
--	}
--      else
--#endif
--	{
--	  FREE (value_cell (entry));
--	  var_setvalue (entry, newval);
--	}
--    }
--
--  if (mark_modified_vars)
--    VSETATTR (entry, att_exported);
--
--  if (exported_p (entry))
--    array_needs_making = 1;
--
--  return (entry);
--}
--	
--/* Bind a variable NAME to VALUE.  This conses up the name
--   and value strings.  If we have a temporary environment, we bind there
--   first, then we bind into shell_variables. */
--
--SHELL_VAR *
--bind_variable (name, value, flags)
--     const char *name;
--     char *value;
--     int flags;
--{
--  SHELL_VAR *v, *nv;
--  VAR_CONTEXT *vc, *nvc;
--  int level;
--
--  if (shell_variables == 0)
--    create_variable_tables ();
--
--  /* If we have a temporary environment, look there first for the variable,
--     and, if found, modify the value there before modifying it in the
--     shell_variables table.  This allows sourced scripts to modify values
--     given to them in a temporary environment while modifying the variable
--     value that the caller sees. */
--  if (temporary_env)
--    bind_tempenv_variable (name, value);
--
--  /* XXX -- handle local variables here. */
--  for (vc = shell_variables; vc; vc = vc->down)
--    {
--      if (vc_isfuncenv (vc) || vc_isbltnenv (vc))
--	{
--	  v = hash_lookup (name, vc->table);
--	  nvc = vc;
--	  if (v && nameref_p (v))
--	    {
--	      nv = find_variable_nameref_context (v, vc, &nvc);
--	      if (nv == 0)
--		{
--		  nv = find_variable_last_nameref_context (v, vc, &nvc);
--		  if (nv && nameref_p (nv))
--		    {
--		      /* If this nameref variable doesn't have a value yet,
--			 set the value.  Otherwise, assign using the value as
--			 normal. */
--		      if (nameref_cell (nv) == 0)
--			return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
--		      return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags));
--		    }
--		  else
--		    v = nv;
--		}
--	      else
--	        v = nv;
--	    }
--	  if (v)
--	    return (bind_variable_internal (v->name, value, nvc->table, 0, flags));
--	}
--    }
--  /* bind_variable_internal will handle nameref resolution in this case */
--  return (bind_variable_internal (name, value, global_variables->table, 0, flags));
--}
--
--SHELL_VAR *
--bind_global_variable (name, value, flags)
--     const char *name;
--     char *value;
--     int flags;
--{
--  SHELL_VAR *v, *nv;
--  VAR_CONTEXT *vc, *nvc;
--  int level;
--
--  if (shell_variables == 0)
--    create_variable_tables ();
--
--  /* bind_variable_internal will handle nameref resolution in this case */
--  return (bind_variable_internal (name, value, global_variables->table, 0, flags));
--}
--
--/* Make VAR, a simple shell variable, have value VALUE.  Once assigned a
--   value, variables are no longer invisible.  This is a duplicate of part
--   of the internals of bind_variable.  If the variable is exported, or
--   all modified variables should be exported, mark the variable for export
--   and note that the export environment needs to be recreated. */
--SHELL_VAR *
--bind_variable_value (var, value, aflags)
--     SHELL_VAR *var;
--     char *value;
--     int aflags;
--{
--  char *t;
--  int invis;
--
--  invis = invisible_p (var);
--  VUNSETATTR (var, att_invisible);
--
--  if (var->assign_func)
--    {
--      /* If we're appending, we need the old value, so use
--	 make_variable_value */
--      t = (aflags & ASS_APPEND) ? make_variable_value (var, value, aflags) : value;
--      (*(var->assign_func)) (var, t, -1, 0);
--      if (t != value && t)
--	free (t);      
--    }
--  else
--    {
--      t = make_variable_value (var, value, aflags);
--#if defined (ARRAY_VARS)
--      if ((aflags & ASS_NAMEREF) && (t == 0 || *t == 0 || (legal_identifier (t) == 0 && valid_array_reference (t) == 0)))
--#else
--      if ((aflags & ASS_NAMEREF) && (t == 0 || *t == 0 || legal_identifier (t) == 0))
--#endif
--	{
--	  free (t);
--	  if (invis)
--	    VSETATTR (var, att_invisible);	/* XXX */
--	  return ((SHELL_VAR *)NULL);
--	}
--      FREE (value_cell (var));
--      var_setvalue (var, t);
--    }
--
--  INVALIDATE_EXPORTSTR (var);
--
--  if (mark_modified_vars)
--    VSETATTR (var, att_exported);
--
--  if (exported_p (var))
--    array_needs_making = 1;
--
--  return (var);
--}
--
--/* Bind/create a shell variable with the name LHS to the RHS.
--   This creates or modifies a variable such that it is an integer.
--
--   This used to be in expr.c, but it is here so that all of the
--   variable binding stuff is localized.  Since we don't want any
--   recursive evaluation from bind_variable() (possible without this code,
--   since bind_variable() calls the evaluator for variables with the integer
--   attribute set), we temporarily turn off the integer attribute for each
--   variable we set here, then turn it back on after binding as necessary. */
--
--SHELL_VAR *
--bind_int_variable (lhs, rhs)
--     char *lhs, *rhs;
--{
--  register SHELL_VAR *v;
--  int isint, isarr, implicitarray;
--
--  isint = isarr = implicitarray = 0;
--#if defined (ARRAY_VARS)
--  if (valid_array_reference (lhs))
--    {
--      isarr = 1;
--      v = array_variable_part (lhs, (char **)0, (int *)0);
--    }
--  else
--#endif
--    v = find_variable (lhs);
--
--  if (v)
--    {
--      isint = integer_p (v);
--      VUNSETATTR (v, att_integer);
--#if defined (ARRAY_VARS)
--      if (array_p (v) && isarr == 0)
--	implicitarray = 1;
--#endif
--    }
--
--#if defined (ARRAY_VARS)
--  if (isarr)
--    v = assign_array_element (lhs, rhs, 0);
--  else if (implicitarray)
--    v = bind_array_variable (lhs, 0, rhs, 0);
--  else
--#endif
--    v = bind_variable (lhs, rhs, 0);
--
--  if (v && isint)
--    VSETATTR (v, att_integer);
--
--  VUNSETATTR (v, att_invisible);
--
--  return (v);
--}
--
--SHELL_VAR *
--bind_var_to_int (var, val)
--     char *var;
--     intmax_t val;
--{
--  char ibuf[INT_STRLEN_BOUND (intmax_t) + 1], *p;
--
--  p = fmtulong (val, 10, ibuf, sizeof (ibuf), 0);
--  return (bind_int_variable (var, p));
--}
--
--/* Do a function binding to a variable.  You pass the name and
--   the command to bind to.  This conses the name and command. */
--SHELL_VAR *
--bind_function (name, value)
--     const char *name;
--     COMMAND *value;
--{
--  SHELL_VAR *entry;
--
--  entry = find_function (name);
--  if (entry == 0)
--    {
--      BUCKET_CONTENTS *elt;
--
--      elt = hash_insert (savestring (name), shell_functions, HASH_NOSRCH);
--      entry = new_shell_variable (name);
--      elt->data = (PTR_T)entry;
--    }
--  else
--    INVALIDATE_EXPORTSTR (entry);
--
--  if (var_isset (entry))
--    dispose_command (function_cell (entry));
--
--  if (value)
--    var_setfunc (entry, copy_command (value));
--  else
--    var_setfunc (entry, 0);
--
--  VSETATTR (entry, att_function);
--
--  if (mark_modified_vars)
--    VSETATTR (entry, att_exported);
--
--  VUNSETATTR (entry, att_invisible);		/* Just to be sure */
--
--  if (exported_p (entry))
--    array_needs_making = 1;
--
--#if defined (PROGRAMMABLE_COMPLETION)
--  set_itemlist_dirty (&it_functions);
--#endif
--
--  return (entry);
--}
--
--#if defined (DEBUGGER)
--/* Bind a function definition, which includes source file and line number
--   information in addition to the command, into the FUNCTION_DEF hash table.*/
--void
--bind_function_def (name, value)
--     const char *name;
--     FUNCTION_DEF *value;
--{
--  FUNCTION_DEF *entry;
--  BUCKET_CONTENTS *elt;
--  COMMAND *cmd;
--
--  entry = find_function_def (name);
--  if (entry)
--    {
--      dispose_function_def_contents (entry);
--      entry = copy_function_def_contents (value, entry);
--    }
--  else
--    {
--      cmd = value->command;
--      value->command = 0;
--      entry = copy_function_def (value);
--      value->command = cmd;
--
--      elt = hash_insert (savestring (name), shell_function_defs, HASH_NOSRCH);
--      elt->data = (PTR_T *)entry;
--    }
--}
--#endif /* DEBUGGER */
--
--/* Add STRING, which is of the form foo=bar, to the temporary environment
--   HASH_TABLE (temporary_env).  The functions in execute_cmd.c are
--   responsible for moving the main temporary env to one of the other
--   temporary environments.  The expansion code in subst.c calls this. */
--int
--assign_in_env (word, flags)
--     WORD_DESC *word;
--     int flags;
--{
--  int offset, aflags;
--  char *name, *temp, *value;
--  SHELL_VAR *var;
--  const char *string;
--
--  string = word->word;
--
--  aflags = 0;
--  offset = assignment (string, 0);
--  name = savestring (string);
--  value = (char *)NULL;
--
--  if (name[offset] == '=')
--    {
--      name[offset] = 0;
--
--      /* don't ignore the `+' when assigning temporary environment */
--      if (name[offset - 1] == '+')
--	{
--	  name[offset - 1] = '\0';
--	  aflags |= ASS_APPEND;
--	}
--
--      var = find_variable (name);
--      if (var && (readonly_p (var) || noassign_p (var)))
--	{
--	  if (readonly_p (var))
--	    err_readonly (name);
--	  free (name);
--  	  return (0);
--	}
--
--      temp = name + offset + 1;
--      value = expand_assignment_string_to_string (temp, 0);
--
--      if (var && (aflags & ASS_APPEND))
--	{
--	  temp = make_variable_value (var, value, aflags);
--	  FREE (value);
--	  value = temp;
--	}
--    }
--
--  if (temporary_env == 0)
--    temporary_env = hash_create (TEMPENV_HASH_BUCKETS);
--
--  var = hash_lookup (name, temporary_env);
--  if (var == 0)
--    var = make_new_variable (name, temporary_env);
--  else
--    FREE (value_cell (var));
--
--  if (value == 0)
--    {
--      value = (char *)xmalloc (1);	/* like do_assignment_internal */
--      value[0] = '\0';
--    }
--
--  var_setvalue (var, value);
--  var->attributes |= (att_exported|att_tempvar);
--  var->context = variable_context;	/* XXX */
--
--  INVALIDATE_EXPORTSTR (var);
--  var->exportstr = mk_env_string (name, value, 0);
--
--  array_needs_making = 1;
--
--  if (flags)
--    stupidly_hack_special_variables (name);
--
--  if (echo_command_at_execute)
--    /* The Korn shell prints the `+ ' in front of assignment statements,
--	so we do too. */
--    xtrace_print_assignment (name, value, 0, 1);
--
--  free (name);
--  return 1;
--}
--
--/* **************************************************************** */
--/*								    */
--/*			Copying variables			    */
--/*								    */
--/* **************************************************************** */
--
--#ifdef INCLUDE_UNUSED
--/* Copy VAR to a new data structure and return that structure. */
--SHELL_VAR *
--copy_variable (var)
--     SHELL_VAR *var;
--{
--  SHELL_VAR *copy = (SHELL_VAR *)NULL;
--
--  if (var)
--    {
--      copy = (SHELL_VAR *)xmalloc (sizeof (SHELL_VAR));
--
--      copy->attributes = var->attributes;
--      copy->name = savestring (var->name);
--
--      if (function_p (var))
--	var_setfunc (copy, copy_command (function_cell (var)));
--#if defined (ARRAY_VARS)
--      else if (array_p (var))
--	var_setarray (copy, array_copy (array_cell (var)));
--      else if (assoc_p (var))
--	var_setassoc (copy, assoc_copy (assoc_cell (var)));
--#endif
--      else if (nameref_cell (var))	/* XXX - nameref */
--	var_setref (copy, savestring (nameref_cell (var)));
--      else if (value_cell (var))	/* XXX - nameref */
--	var_setvalue (copy, savestring (value_cell (var)));
--      else
--	var_setvalue (copy, (char *)NULL);
--
--      copy->dynamic_value = var->dynamic_value;
--      copy->assign_func = var->assign_func;
--
--      copy->exportstr = COPY_EXPORTSTR (var);
--
--      copy->context = var->context;
--    }
--  return (copy);
--}
--#endif
--
--/* **************************************************************** */
--/*								    */
--/*		  Deleting and unsetting variables		    */
--/*								    */
--/* **************************************************************** */
--
--/* Dispose of the information attached to VAR. */
--static void
--dispose_variable_value (var)
--     SHELL_VAR *var;
--{
--  if (function_p (var))
--    dispose_command (function_cell (var));
--#if defined (ARRAY_VARS)
--  else if (array_p (var))
--    array_dispose (array_cell (var));
--  else if (assoc_p (var))
--    assoc_dispose (assoc_cell (var));
--#endif
--  else if (nameref_p (var))
--    FREE (nameref_cell (var));
--  else
--    FREE (value_cell (var));
--}
--
--void
--dispose_variable (var)
--     SHELL_VAR *var;
--{
--  if (var == 0)
--    return;
--
--  if (nofree_p (var) == 0)
--    dispose_variable_value (var);
--
--  FREE_EXPORTSTR (var);
--
--  free (var->name);
--
--  if (exported_p (var))
--    array_needs_making = 1;
--
--  free (var);
--}
--
--/* Unset the shell variable referenced by NAME.  Unsetting a nameref variable
--   unsets the variable it resolves to but leaves the nameref alone. */
--int
--unbind_variable (name)
--     const char *name;
--{
--  SHELL_VAR *v, *nv;
--  int r;
--
--  v = var_lookup (name, shell_variables);
--  nv = (v && nameref_p (v)) ? find_variable_nameref (v) : (SHELL_VAR *)NULL;
--
--  r = nv ? makunbound (nv->name, shell_variables) : makunbound (name, shell_variables);
--  return r;
--}
--
--/* Unbind NAME, where NAME is assumed to be a nameref variable */
--int
--unbind_nameref (name)
--     const char *name;
--{
--  SHELL_VAR *v;
--
--  v = var_lookup (name, shell_variables);
--  if (v && nameref_p (v))
--    return makunbound (name, shell_variables);
--  return 0;
--}
--
--/* Unset the shell function named NAME. */
--int
--unbind_func (name)
--     const char *name;
--{
--  BUCKET_CONTENTS *elt;
--  SHELL_VAR *func;
--
--  elt = hash_remove (name, shell_functions, 0);
--
--  if (elt == 0)
--    return -1;
--
--#if defined (PROGRAMMABLE_COMPLETION)
--  set_itemlist_dirty (&it_functions);
--#endif
--
--  func = (SHELL_VAR *)elt->data;
--  if (func)
--    {
--      if (exported_p (func))
--	array_needs_making++;
--      dispose_variable (func);
--    }
--
--  free (elt->key);
--  free (elt);
--
--  return 0;  
--}
--
--#if defined (DEBUGGER)
--int
--unbind_function_def (name)
--     const char *name;
--{
--  BUCKET_CONTENTS *elt;
--  FUNCTION_DEF *funcdef;
--
--  elt = hash_remove (name, shell_function_defs, 0);
--
--  if (elt == 0)
--    return -1;
--
--  funcdef = (FUNCTION_DEF *)elt->data;
--  if (funcdef)
--    dispose_function_def (funcdef);
--
--  free (elt->key);
--  free (elt);
--
--  return 0;  
--}
--#endif /* DEBUGGER */
--
--int
--delete_var (name, vc)
--     const char *name;
--     VAR_CONTEXT *vc;
--{
--  BUCKET_CONTENTS *elt;
--  SHELL_VAR *old_var;
--  VAR_CONTEXT *v;
--
--  for (elt = (BUCKET_CONTENTS *)NULL, v = vc; v; v = v->down)
--    if (elt = hash_remove (name, v->table, 0))
--      break;
--
--  if (elt == 0)
--    return (-1);
--
--  old_var = (SHELL_VAR *)elt->data;
--  free (elt->key);
--  free (elt);
--
--  dispose_variable (old_var);
--  return (0);
--}
--
--/* Make the variable associated with NAME go away.  HASH_LIST is the
--   hash table from which this variable should be deleted (either
--   shell_variables or shell_functions).
--   Returns non-zero if the variable couldn't be found. */
--int
--makunbound (name, vc)
--     const char *name;
--     VAR_CONTEXT *vc;
--{
--  BUCKET_CONTENTS *elt, *new_elt;
--  SHELL_VAR *old_var;
--  VAR_CONTEXT *v;
--  char *t;
--
--  for (elt = (BUCKET_CONTENTS *)NULL, v = vc; v; v = v->down)
--    if (elt = hash_remove (name, v->table, 0))
--      break;
--
--  if (elt == 0)
--    return (-1);
--
--  old_var = (SHELL_VAR *)elt->data;
--
--  if (old_var && exported_p (old_var))
--    array_needs_making++;
--
--  /* If we're unsetting a local variable and we're still executing inside
--     the function, just mark the variable as invisible.  The function
--     eventually called by pop_var_context() will clean it up later.  This
--     must be done so that if the variable is subsequently assigned a new
--     value inside the function, the `local' attribute is still present.
--     We also need to add it back into the correct hash table. */
--  if (old_var && local_p (old_var) && variable_context == old_var->context)
--    {
--      if (nofree_p (old_var))
--	var_setvalue (old_var, (char *)NULL);
--#if defined (ARRAY_VARS)
--      else if (array_p (old_var))
--	array_dispose (array_cell (old_var));
--      else if (assoc_p (old_var))
--	assoc_dispose (assoc_cell (old_var));
--#endif
--      else if (nameref_p (old_var))
--	FREE (nameref_cell (old_var));
--      else
--	FREE (value_cell (old_var));
--      /* Reset the attributes.  Preserve the export attribute if the variable
--	 came from a temporary environment.  Make sure it stays local, and
--	 make it invisible. */ 
--      old_var->attributes = (exported_p (old_var) && tempvar_p (old_var)) ? att_exported : 0;
--      VSETATTR (old_var, att_local);
--      VSETATTR (old_var, att_invisible);
--      var_setvalue (old_var, (char *)NULL);
--      INVALIDATE_EXPORTSTR (old_var);
--
--      new_elt = hash_insert (savestring (old_var->name), v->table, 0);
--      new_elt->data = (PTR_T)old_var;
--      stupidly_hack_special_variables (old_var->name);
--
--      free (elt->key);
--      free (elt);
--      return (0);
--    }
--
--  /* Have to save a copy of name here, because it might refer to
--     old_var->name.  If so, stupidly_hack_special_variables will
--     reference freed memory. */
--  t = savestring (name);
--
--  free (elt->key);
--  free (elt);
--
--  dispose_variable (old_var);
--  stupidly_hack_special_variables (t);
--  free (t);
--
--  return (0);
--}
--
--/* Get rid of all of the variables in the current context. */
--void
--kill_all_local_variables ()
--{
--  VAR_CONTEXT *vc;
--
--  for (vc = shell_variables; vc; vc = vc->down)
--    if (vc_isfuncenv (vc) && vc->scope == variable_context)
--      break;
--  if (vc == 0)
--    return;		/* XXX */
--
--  if (vc->table && vc_haslocals (vc))
--    {
--      delete_all_variables (vc->table);
--      hash_dispose (vc->table);
--    }
--  vc->table = (HASH_TABLE *)NULL;
--}
--
--static void
--free_variable_hash_data (data)
--     PTR_T data;
--{
--  SHELL_VAR *var;
--
--  var = (SHELL_VAR *)data;
--  dispose_variable (var);
--}
--
--/* Delete the entire contents of the hash table. */
--void
--delete_all_variables (hashed_vars)
--     HASH_TABLE *hashed_vars;
--{
--  hash_flush (hashed_vars, free_variable_hash_data);
--}
--
--/* **************************************************************** */
--/*								    */
--/*		     Setting variable attributes		    */
--/*								    */
--/* **************************************************************** */
--
--#define FIND_OR_MAKE_VARIABLE(name, entry) \
--  do \
--    { \
--      entry = find_variable (name); \
--      if (!entry) \
--	{ \
--	  entry = bind_variable (name, "", 0); \
--	  if (!no_invisible_vars && entry) entry->attributes |= att_invisible; \
--	} \
--    } \
--  while (0)
--
--/* Make the variable associated with NAME be readonly.
--   If NAME does not exist yet, create it. */
--void
--set_var_read_only (name)
--     char *name;
--{
--  SHELL_VAR *entry;
--
--  FIND_OR_MAKE_VARIABLE (name, entry);
--  VSETATTR (entry, att_readonly);
--}
--
--#ifdef INCLUDE_UNUSED
--/* Make the function associated with NAME be readonly.
--   If NAME does not exist, we just punt, like auto_export code below. */
--void
--set_func_read_only (name)
--     const char *name;
--{
--  SHELL_VAR *entry;
--
--  entry = find_function (name);
--  if (entry)
--    VSETATTR (entry, att_readonly);
--}
--
--/* Make the variable associated with NAME be auto-exported.
--   If NAME does not exist yet, create it. */
--void
--set_var_auto_export (name)
--     char *name;
--{
--  SHELL_VAR *entry;
--
--  FIND_OR_MAKE_VARIABLE (name, entry);
--  set_auto_export (entry);
--}
--
--/* Make the function associated with NAME be auto-exported. */
--void
--set_func_auto_export (name)
--     const char *name;
--{
--  SHELL_VAR *entry;
--
--  entry = find_function (name);
--  if (entry)
--    set_auto_export (entry);
--}
--#endif
--
--/* **************************************************************** */
--/*								    */
--/*		     Creating lists of variables		    */
--/*								    */
--/* **************************************************************** */
--
--static VARLIST *
--vlist_alloc (nentries)
--     int nentries;
--{
--  VARLIST  *vlist;
--
--  vlist = (VARLIST *)xmalloc (sizeof (VARLIST));
--  vlist->list = (SHELL_VAR **)xmalloc ((nentries + 1) * sizeof (SHELL_VAR *));
--  vlist->list_size = nentries;
--  vlist->list_len = 0;
--  vlist->list[0] = (SHELL_VAR *)NULL;
--
--  return vlist;
--}
--
--static VARLIST *
--vlist_realloc (vlist, n)
--     VARLIST *vlist;
--     int n;
--{
--  if (vlist == 0)
--    return (vlist = vlist_alloc (n));
--  if (n > vlist->list_size)
--    {
--      vlist->list_size = n;
--      vlist->list = (SHELL_VAR **)xrealloc (vlist->list, (vlist->list_size + 1) * sizeof (SHELL_VAR *));
--    }
--  return vlist;
--}
--
--static void
--vlist_add (vlist, var, flags)
--     VARLIST *vlist;
--     SHELL_VAR *var;
--     int flags;
--{
--  register int i;
--
--  for (i = 0; i < vlist->list_len; i++)
--    if (STREQ (var->name, vlist->list[i]->name))
--      break;
--  if (i < vlist->list_len)
--    return;
--
--  if (i >= vlist->list_size)
--    vlist = vlist_realloc (vlist, vlist->list_size + 16);
--
--  vlist->list[vlist->list_len++] = var;
--  vlist->list[vlist->list_len] = (SHELL_VAR *)NULL;
--}
--
--/* Map FUNCTION over the variables in VAR_HASH_TABLE.  Return an array of the
--   variables for which FUNCTION returns a non-zero value.  A NULL value
--   for FUNCTION means to use all variables. */
--SHELL_VAR **
--map_over (function, vc)
--     sh_var_map_func_t *function;
--     VAR_CONTEXT *vc;
--{
--  VAR_CONTEXT *v;
--  VARLIST *vlist;
--  SHELL_VAR **ret;
--  int nentries;
--
--  for (nentries = 0, v = vc; v; v = v->down)
--    nentries += HASH_ENTRIES (v->table);
--
--  if (nentries == 0)
--    return (SHELL_VAR **)NULL;
--
--  vlist = vlist_alloc (nentries);
--
--  for (v = vc; v; v = v->down)
--    flatten (v->table, function, vlist, 0);
--
--  ret = vlist->list;
--  free (vlist);
--  return ret;
--}
--
--SHELL_VAR **
--map_over_funcs (function)
--     sh_var_map_func_t *function;
--{
--  VARLIST *vlist;
--  SHELL_VAR **ret;
--
--  if (shell_functions == 0 || HASH_ENTRIES (shell_functions) == 0)
--    return ((SHELL_VAR **)NULL);
--
--  vlist = vlist_alloc (HASH_ENTRIES (shell_functions));
--
--  flatten (shell_functions, function, vlist, 0);
--
--  ret = vlist->list;
--  free (vlist);
--  return ret;
--}
--
--/* Flatten VAR_HASH_TABLE, applying FUNC to each member and adding those
--   elements for which FUNC succeeds to VLIST->list.  FLAGS is reserved
--   for future use.  Only unique names are added to VLIST.  If FUNC is
--   NULL, each variable in VAR_HASH_TABLE is added to VLIST.  If VLIST is
--   NULL, FUNC is applied to each SHELL_VAR in VAR_HASH_TABLE.  If VLIST
--   and FUNC are both NULL, nothing happens. */
--static void
--flatten (var_hash_table, func, vlist, flags)
--     HASH_TABLE *var_hash_table;
--     sh_var_map_func_t *func;
--     VARLIST *vlist;
--     int flags;
--{
--  register int i;
--  register BUCKET_CONTENTS *tlist;
--  int r;
--  SHELL_VAR *var;
--
--  if (var_hash_table == 0 || (HASH_ENTRIES (var_hash_table) == 0) || (vlist == 0 && func == 0))
--    return;
--
--  for (i = 0; i < var_hash_table->nbuckets; i++)
--    {
--      for (tlist = hash_items (i, var_hash_table); tlist; tlist = tlist->next)
--	{
--	  var = (SHELL_VAR *)tlist->data;
--
--	  r = func ? (*func) (var) : 1;
--	  if (r && vlist)
--	    vlist_add (vlist, var, flags);
--	}
--    }
--}
--
--void
--sort_variables (array)
--     SHELL_VAR **array;
--{
--  qsort (array, strvec_len ((char **)array), sizeof (SHELL_VAR *), (QSFUNC *)qsort_var_comp);
--}
--
--static int
--qsort_var_comp (var1, var2)
--     SHELL_VAR **var1, **var2;
--{
--  int result;
--
--  if ((result = (*var1)->name[0] - (*var2)->name[0]) == 0)
--    result = strcmp ((*var1)->name, (*var2)->name);
--
--  return (result);
--}
--
--/* Apply FUNC to each variable in SHELL_VARIABLES, adding each one for
--   which FUNC succeeds to an array of SHELL_VAR *s.  Returns the array. */
--static SHELL_VAR **
--vapply (func)
--     sh_var_map_func_t *func;
--{
--  SHELL_VAR **list;
--
--  list = map_over (func, shell_variables);
--  if (list /* && posixly_correct */)
--    sort_variables (list);
--  return (list);
--}
--
--/* Apply FUNC to each variable in SHELL_FUNCTIONS, adding each one for
--   which FUNC succeeds to an array of SHELL_VAR *s.  Returns the array. */
--static SHELL_VAR **
--fapply (func)
--     sh_var_map_func_t *func;
--{
--  SHELL_VAR **list;
--
--  list = map_over_funcs (func);
--  if (list /* && posixly_correct */)
--    sort_variables (list);
--  return (list);
--}
--
--/* Create a NULL terminated array of all the shell variables. */
--SHELL_VAR **
--all_shell_variables ()
--{
--  return (vapply ((sh_var_map_func_t *)NULL));
--}
--
--/* Create a NULL terminated array of all the shell functions. */
--SHELL_VAR **
--all_shell_functions ()
--{
--  return (fapply ((sh_var_map_func_t *)NULL));
--}
--
--static int
--visible_var (var)
--     SHELL_VAR *var;
--{
--  return (invisible_p (var) == 0);
--}
--
--SHELL_VAR **
--all_visible_functions ()
--{
--  return (fapply (visible_var));
--}
--
--SHELL_VAR **
--all_visible_variables ()
--{
--  return (vapply (visible_var));
--}
--
--/* Return non-zero if the variable VAR is visible and exported.  Array
--   variables cannot be exported. */
--static int
--visible_and_exported (var)
--     SHELL_VAR *var;
--{
--  return (invisible_p (var) == 0 && exported_p (var));
--}
--
--/* Candidate variables for the export environment are either valid variables
--   with the export attribute or invalid variables inherited from the initial
--   environment and simply passed through. */
--static int
--export_environment_candidate (var)
--     SHELL_VAR *var;
--{
--  return (exported_p (var) && (invisible_p (var) == 0 || imported_p (var)));
--}
--
--/* Return non-zero if VAR is a local variable in the current context and
--   is exported. */
--static int
--local_and_exported (var)
--     SHELL_VAR *var;
--{
--  return (invisible_p (var) == 0 && local_p (var) && var->context == variable_context && exported_p (var));
--}
--
--SHELL_VAR **
--all_exported_variables ()
--{
--  return (vapply (visible_and_exported));
--}
--
--SHELL_VAR **
--local_exported_variables ()
--{
--  return (vapply (local_and_exported));
--}
--
--static int
--variable_in_context (var)
--     SHELL_VAR *var;
--{
--  return (invisible_p (var) == 0 && local_p (var) && var->context == variable_context);
--}
--
--SHELL_VAR **
--all_local_variables ()
--{
--  VARLIST *vlist;
--  SHELL_VAR **ret;
--  VAR_CONTEXT *vc;
--
--  vc = shell_variables;
--  for (vc = shell_variables; vc; vc = vc->down)
--    if (vc_isfuncenv (vc) && vc->scope == variable_context)
--      break;
--
--  if (vc == 0)
--    {
--      internal_error (_("all_local_variables: no function context at current scope"));
--      return (SHELL_VAR **)NULL;
--    }
--  if (vc->table == 0 || HASH_ENTRIES (vc->table) == 0 || vc_haslocals (vc) == 0)
--    return (SHELL_VAR **)NULL;
--    
--  vlist = vlist_alloc (HASH_ENTRIES (vc->table));
--
--  flatten (vc->table, variable_in_context, vlist, 0);
--
--  ret = vlist->list;
--  free (vlist);
--  if (ret)
--    sort_variables (ret);
--  return ret;
--}
--
--#if defined (ARRAY_VARS)
--/* Return non-zero if the variable VAR is visible and an array. */
--static int
--visible_array_vars (var)
--     SHELL_VAR *var;
--{
--  return (invisible_p (var) == 0 && array_p (var));
--}
--
--SHELL_VAR **
--all_array_variables ()
--{
--  return (vapply (visible_array_vars));
--}
--#endif /* ARRAY_VARS */
--
--char **
--all_variables_matching_prefix (prefix)
--     const char *prefix;
--{
--  SHELL_VAR **varlist;
--  char **rlist;
--  int vind, rind, plen;
--
--  plen = STRLEN (prefix);
--  varlist = all_visible_variables ();
--  for (vind = 0; varlist && varlist[vind]; vind++)
--    ;
--  if (varlist == 0 || vind == 0)
--    return ((char **)NULL);
--  rlist = strvec_create (vind + 1);
--  for (vind = rind = 0; varlist[vind]; vind++)
--    {
--      if (plen == 0 || STREQN (prefix, varlist[vind]->name, plen))
--	rlist[rind++] = savestring (varlist[vind]->name);
--    }
--  rlist[rind] = (char *)0;
--  free (varlist);
--
--  return rlist;
--}
--
--/* **************************************************************** */
--/*								    */
--/*		 Managing temporary variable scopes		    */
--/*								    */
--/* **************************************************************** */
--
--/* Make variable NAME have VALUE in the temporary environment. */
--static SHELL_VAR *
--bind_tempenv_variable (name, value)
--     const char *name;
--     char *value;
--{
--  SHELL_VAR *var;
--
--  var = temporary_env ? hash_lookup (name, temporary_env) : (SHELL_VAR *)NULL;
--
--  if (var)
--    {
--      FREE (value_cell (var));
--      var_setvalue (var, savestring (value));
--      INVALIDATE_EXPORTSTR (var);
--    }
--
--  return (var);
--}
--
--/* Find a variable in the temporary environment that is named NAME.
--   Return the SHELL_VAR *, or NULL if not found. */
--SHELL_VAR *
--find_tempenv_variable (name)
--     const char *name;
--{
--  return (temporary_env ? hash_lookup (name, temporary_env) : (SHELL_VAR *)NULL);
--}
--
--char **tempvar_list;
--int tvlist_ind;
--
--/* Push the variable described by (SHELL_VAR *)DATA down to the next
--   variable context from the temporary environment. */
--static void
--push_temp_var (data)
--     PTR_T data;
--{
--  SHELL_VAR *var, *v;
--  HASH_TABLE *binding_table;
--
--  var = (SHELL_VAR *)data;
--
--  binding_table = shell_variables->table;
--  if (binding_table == 0)
--    {
--      if (shell_variables == global_variables)
--	/* shouldn't happen */
--	binding_table = shell_variables->table = global_variables->table = hash_create (0);
--      else
--	binding_table = shell_variables->table = hash_create (TEMPENV_HASH_BUCKETS);
--    }
--
--  v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, 0);
--
--  /* XXX - should we set the context here?  It shouldn't matter because of how
--     assign_in_env works, but might want to check. */
--  if (binding_table == global_variables->table)		/* XXX */
--    var->attributes &= ~(att_tempvar|att_propagate);
--  else
--    {
--      var->attributes |= att_propagate;
--      if  (binding_table == shell_variables->table)
--	shell_variables->flags |= VC_HASTMPVAR;
--    }
--  v->attributes |= var->attributes;
--
--  if (find_special_var (var->name) >= 0)
--    tempvar_list[tvlist_ind++] = savestring (var->name);
--
--  dispose_variable (var);
--}
--
--static void
--propagate_temp_var (data)
--     PTR_T data;
--{
--  SHELL_VAR *var;
--
--  var = (SHELL_VAR *)data;
--  if (tempvar_p (var) && (var->attributes & att_propagate))
--    push_temp_var (data);
--  else
--    {
--      if (find_special_var (var->name) >= 0)
--	tempvar_list[tvlist_ind++] = savestring (var->name);
--      dispose_variable (var);
--    }
--}
--
--/* Free the storage used in the hash table for temporary
--   environment variables.  PUSHF is a function to be called
--   to free each hash table entry.  It takes care of pushing variables
--   to previous scopes if appropriate.  PUSHF stores names of variables
--   that require special handling (e.g., IFS) on tempvar_list, so this
--   function can call stupidly_hack_special_variables on all the
--   variables in the list when the temporary hash table is destroyed. */
--static void
--dispose_temporary_env (pushf)
--     sh_free_func_t *pushf;
--{
--  int i;
--
--  tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1);
--  tempvar_list[tvlist_ind = 0] = 0;
--    
--  hash_flush (temporary_env, pushf);
--  hash_dispose (temporary_env);
--  temporary_env = (HASH_TABLE *)NULL;
--
--  tempvar_list[tvlist_ind] = 0;
--
--  array_needs_making = 1;
--
--#if 0
--  sv_ifs ("IFS");		/* XXX here for now -- check setifs in assign_in_env */  
--#endif
--  for (i = 0; i < tvlist_ind; i++)
--    stupidly_hack_special_variables (tempvar_list[i]);
--
--  strvec_dispose (tempvar_list);
--  tempvar_list = 0;
--  tvlist_ind = 0;
--}
--
--void
--dispose_used_env_vars ()
--{
--  if (temporary_env)
--    {
--      dispose_temporary_env (propagate_temp_var);
--      maybe_make_export_env ();
--    }
--}
--
--/* Take all of the shell variables in the temporary environment HASH_TABLE
--   and make shell variables from them at the current variable context. */
--void
--merge_temporary_env ()
--{
--  if (temporary_env)
--    dispose_temporary_env (push_temp_var);
--}
--
--/* **************************************************************** */
--/*								    */
--/*	     Creating and manipulating the environment		    */
--/*								    */
--/* **************************************************************** */
--
--static inline char *
--mk_env_string (name, value, isfunc)
--     const char *name, *value;
--     int isfunc;
--{
--  size_t name_len, value_len;
--  char	*p, *q;
--
--  name_len = strlen (name);
--  value_len = STRLEN (value);
--
--  /* If we are exporting a shell function, construct the encoded function
--     name. */
--  if (isfunc && value)
--    {
--      p = (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFFLEN + value_len + 2);
--      q = p;
--      memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN);
--      q += BASHFUNC_PREFLEN;
--      memcpy (q, name, name_len);
--      q += name_len;
--      memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN);
--      q += BASHFUNC_SUFFLEN;
--    }
--  else
--    {
--      p = (char *)xmalloc (2 + name_len + value_len);
--      memcpy (p, name, name_len);
--      q = p + name_len;
--    }
--
--  q[0] = '=';
--  if (value && *value)
--    memcpy (q + 1, value, value_len + 1);
--  else
--    q[1] = '\0';
--
--  return (p);
--}
--
--#ifdef DEBUG
--/* Debugging */
--static int
--valid_exportstr (v)
--     SHELL_VAR *v;
--{
--  char *s;
--
--  s = v->exportstr;
--  if (s == 0)
--    {
--      internal_error (_("%s has null exportstr"), v->name);
--      return (0);
--    }
--  if (legal_variable_starter ((unsigned char)*s) == 0)
--    {
--      internal_error (_("invalid character %d in exportstr for %s"), *s, v->name);
--      return (0);
--    }
--  for (s = v->exportstr + 1; s && *s; s++)
--    {
--      if (*s == '=')
--	break;
--      if (legal_variable_char ((unsigned char)*s) == 0)
--	{
--	  internal_error (_("invalid character %d in exportstr for %s"), *s, v->name);
--	  return (0);
--	}
--    }
--  if (*s != '=')
--    {
--      internal_error (_("no `=' in exportstr for %s"), v->name);
--      return (0);
--    }
--  return (1);
--}
--#endif
--
--static char **
--make_env_array_from_var_list (vars)
--     SHELL_VAR **vars;
--{
--  register int i, list_index;
--  register SHELL_VAR *var;
--  char **list, *value;
--
--  list = strvec_create ((1 + strvec_len ((char **)vars)));
--
--#define USE_EXPORTSTR (value == var->exportstr)
--
--  for (i = 0, list_index = 0; var = vars[i]; i++)
--    {
--#if defined (__CYGWIN__)
--      /* We don't use the exportstr stuff on Cygwin at all. */
--      INVALIDATE_EXPORTSTR (var);
--#endif
--      if (var->exportstr)
--	value = var->exportstr;
--      else if (function_p (var))
--	value = named_function_string ((char *)NULL, function_cell (var), 0);
--#if defined (ARRAY_VARS)
--      else if (array_p (var))
--#  if ARRAY_EXPORT
--	value = array_to_assignment_string (array_cell (var));
--#  else
--	continue;	/* XXX array vars cannot yet be exported */
--#  endif /* ARRAY_EXPORT */
--      else if (assoc_p (var))
--#  if 0
--	value = assoc_to_assignment_string (assoc_cell (var));
--#  else
--	continue;	/* XXX associative array vars cannot yet be exported */
--#  endif
--#endif
--      else
--	value = value_cell (var);
--
--      if (value)
--	{
--	  /* Gee, I'd like to get away with not using savestring() if we're
--	     using the cached exportstr... */
--	  list[list_index] = USE_EXPORTSTR ? savestring (value)
--					   : mk_env_string (var->name, value, function_p (var));
--
--	  if (USE_EXPORTSTR == 0)
--	    SAVE_EXPORTSTR (var, list[list_index]);
--
--	  list_index++;
--#undef USE_EXPORTSTR
--
--#if 0	/* not yet */
--#if defined (ARRAY_VARS)
--	  if (array_p (var) || assoc_p (var))
--	    free (value);
--#endif
--#endif
--	}
--    }
--
--  list[list_index] = (char *)NULL;
--  return (list);
--}
--
--/* Make an array of assignment statements from the hash table
--   HASHED_VARS which contains SHELL_VARs.  Only visible, exported
--   variables are eligible. */
--static char **
--make_var_export_array (vcxt)
--     VAR_CONTEXT *vcxt;
--{
--  char **list;
--  SHELL_VAR **vars;
--
--#if 0
--  vars = map_over (visible_and_exported, vcxt);
--#else
--  vars = map_over (export_environment_candidate, vcxt);
--#endif
--
--  if (vars == 0)
--    return (char **)NULL;
--
--  list = make_env_array_from_var_list (vars);
--
--  free (vars);
--  return (list);
--}
--
--static char **
--make_func_export_array ()
--{
--  char **list;
--  SHELL_VAR **vars;
--
--  vars = map_over_funcs (visible_and_exported);
--  if (vars == 0)
--    return (char **)NULL;
--
--  list = make_env_array_from_var_list (vars);
--
--  free (vars);
--  return (list);
--}
--
--/* Add ENVSTR to the end of the exported environment, EXPORT_ENV. */
--#define add_to_export_env(envstr,do_alloc) \
--do \
--  { \
--    if (export_env_index >= (export_env_size - 1)) \
--      { \
--	export_env_size += 16; \
--	export_env = strvec_resize (export_env, export_env_size); \
--	environ = export_env; \
--      } \
--    export_env[export_env_index++] = (do_alloc) ? savestring (envstr) : envstr; \
--    export_env[export_env_index] = (char *)NULL; \
--  } while (0)
--
--/* Add ASSIGN to EXPORT_ENV, or supercede a previous assignment in the
--   array with the same left-hand side.  Return the new EXPORT_ENV. */
--char **
--add_or_supercede_exported_var (assign, do_alloc)
--     char *assign;
--     int do_alloc;
--{
--  register int i;
--  int equal_offset;
--
--  equal_offset = assignment (assign, 0);
--  if (equal_offset == 0)
--    return (export_env);
--
--  /* If this is a function, then only supersede the function definition.
--     We do this by including the `=() {' in the comparison, like
--     initialize_shell_variables does. */
--  if (assign[equal_offset + 1] == '(' &&
--     strncmp (assign + equal_offset + 2, ") {", 3) == 0)		/* } */
--    equal_offset += 4;
--
--  for (i = 0; i < export_env_index; i++)
--    {
--      if (STREQN (assign, export_env[i], equal_offset + 1))
--	{
--	  free (export_env[i]);
--	  export_env[i] = do_alloc ? savestring (assign) : assign;
--	  return (export_env);
--	}
--    }
--  add_to_export_env (assign, do_alloc);
--  return (export_env);
--}
--
--static void
--add_temp_array_to_env (temp_array, do_alloc, do_supercede)
--     char **temp_array;
--     int do_alloc, do_supercede;
--{
--  register int i;
--
--  if (temp_array == 0)
--    return;
--
--  for (i = 0; temp_array[i]; i++)
--    {
--      if (do_supercede)
--	export_env = add_or_supercede_exported_var (temp_array[i], do_alloc);
--      else
--	add_to_export_env (temp_array[i], do_alloc);
--    }
--
--  free (temp_array);
--}
--
--/* Make the environment array for the command about to be executed, if the
--   array needs making.  Otherwise, do nothing.  If a shell action could
--   change the array that commands receive for their environment, then the
--   code should `array_needs_making++'.
--
--   The order to add to the array is:
--   	temporary_env
--   	list of var contexts whose head is shell_variables
--  	shell_functions
--
--  This is the shell variable lookup order.  We add only new variable
--  names at each step, which allows local variables and variables in
--  the temporary environments to shadow variables in the global (or
--  any previous) scope.
--*/
--
--static int
--n_shell_variables ()
--{
--  VAR_CONTEXT *vc;
--  int n;
--
--  for (n = 0, vc = shell_variables; vc; vc = vc->down)
--    n += HASH_ENTRIES (vc->table);
--  return n;
--}
--
--int
--chkexport (name)
--     char *name;
--{
--  SHELL_VAR *v;
--
--  v = find_variable (name);
--  if (v && exported_p (v))
--    {
--      array_needs_making = 1;
--      maybe_make_export_env ();
--      return 1;
--    }
--  return 0;
--}
--
--void
--maybe_make_export_env ()
--{
--  register char **temp_array;
--  int new_size;
--  VAR_CONTEXT *tcxt;
--
--  if (array_needs_making)
--    {
--      if (export_env)
--	strvec_flush (export_env);
--
--      /* Make a guess based on how many shell variables and functions we
--	 have.  Since there will always be array variables, and array
--	 variables are not (yet) exported, this will always be big enough
--	 for the exported variables and functions. */
--      new_size = n_shell_variables () + HASH_ENTRIES (shell_functions) + 1 +
--		 HASH_ENTRIES (temporary_env);
--      if (new_size > export_env_size)
--	{
--	  export_env_size = new_size;
--	  export_env = strvec_resize (export_env, export_env_size);
--	  environ = export_env;
--	}
--      export_env[export_env_index = 0] = (char *)NULL;
--
--      /* Make a dummy variable context from the temporary_env, stick it on
--	 the front of shell_variables, call make_var_export_array on the
--	 whole thing to flatten it, and convert the list of SHELL_VAR *s
--	 to the form needed by the environment. */
--      if (temporary_env)
--	{
--	  tcxt = new_var_context ((char *)NULL, 0);
--	  tcxt->table = temporary_env;
--	  tcxt->down = shell_variables;
--	}
--      else
--	tcxt = shell_variables;
--      
--      temp_array = make_var_export_array (tcxt);
--      if (temp_array)
--	add_temp_array_to_env (temp_array, 0, 0);
--
--      if (tcxt != shell_variables)
--	free (tcxt);
--
--#if defined (RESTRICTED_SHELL)
--      /* Restricted shells may not export shell functions. */
--      temp_array = restricted ? (char **)0 : make_func_export_array ();
--#else
--      temp_array = make_func_export_array ();
--#endif
--      if (temp_array)
--	add_temp_array_to_env (temp_array, 0, 0);
--
--      array_needs_making = 0;
--    }
--}
--
--/* This is an efficiency hack.  PWD and OLDPWD are auto-exported, so
--   we will need to remake the exported environment every time we
--   change directories.  `_' is always put into the environment for
--   every external command, so without special treatment it will always
--   cause the environment to be remade.
--
--   If there is no other reason to make the exported environment, we can
--   just update the variables in place and mark the exported environment
--   as no longer needing a remake. */
--void
--update_export_env_inplace (env_prefix, preflen, value)
--     char *env_prefix;
--     int preflen;
--     char *value;
--{
--  char *evar;
--
--  evar = (char *)xmalloc (STRLEN (value) + preflen + 1);
--  strcpy (evar, env_prefix);
--  if (value)
--    strcpy (evar + preflen, value);
--  export_env = add_or_supercede_exported_var (evar, 0);
--}
--
--/* We always put _ in the environment as the name of this command. */
--void
--put_command_name_into_env (command_name)
--     char *command_name;
--{
--  update_export_env_inplace ("_=", 2, command_name);
--}
--
--/* **************************************************************** */
--/*								    */
--/*		      Managing variable contexts		    */
--/*								    */
--/* **************************************************************** */
--
--/* Allocate and return a new variable context with NAME and FLAGS.
--   NAME can be NULL. */
--
--VAR_CONTEXT *
--new_var_context (name, flags)
--     char *name;
--     int flags;
--{
--  VAR_CONTEXT *vc;
--
--  vc = (VAR_CONTEXT *)xmalloc (sizeof (VAR_CONTEXT));
--  vc->name = name ? savestring (name) : (char *)NULL;
--  vc->scope = variable_context;
--  vc->flags = flags;
--
--  vc->up = vc->down = (VAR_CONTEXT *)NULL;
--  vc->table = (HASH_TABLE *)NULL;
--
--  return vc;
--}
--
--/* Free a variable context and its data, including the hash table.  Dispose
--   all of the variables. */
--void
--dispose_var_context (vc)
--     VAR_CONTEXT *vc;
--{
--  FREE (vc->name);
--
--  if (vc->table)
--    {
--      delete_all_variables (vc->table);
--      hash_dispose (vc->table);
--    }
--
--  free (vc);
--}
--
--/* Set VAR's scope level to the current variable context. */
--static int
--set_context (var)
--     SHELL_VAR *var;
--{
--  return (var->context = variable_context);
--}
--
--/* Make a new variable context with NAME and FLAGS and a HASH_TABLE of
--   temporary variables, and push it onto shell_variables.  This is
--   for shell functions. */
--VAR_CONTEXT *
--push_var_context (name, flags, tempvars)
--     char *name;
--     int flags;
--     HASH_TABLE *tempvars;
--{
--  VAR_CONTEXT *vc;
--
--  vc = new_var_context (name, flags);
--  vc->table = tempvars;
--  if (tempvars)
--    {
--      /* Have to do this because the temp environment was created before
--	 variable_context was incremented. */
--      flatten (tempvars, set_context, (VARLIST *)NULL, 0);
--      vc->flags |= VC_HASTMPVAR;
--    }
--  vc->down = shell_variables;
--  shell_variables->up = vc;
--
--  return (shell_variables = vc);
--}
--
--static void
--push_func_var (data)
--     PTR_T data;
--{
--  SHELL_VAR *var, *v;
--
--  var = (SHELL_VAR *)data;
--
--  if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate)))
--    {
--      /* Make sure we have a hash table to store the variable in while it is
--	 being propagated down to the global variables table.  Create one if
--	 we have to */
--      if ((vc_isfuncenv (shell_variables) || vc_istempenv (shell_variables)) && shell_variables->table == 0)
--	shell_variables->table = hash_create (0);
--      /* XXX - should we set v->context here? */
--      v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
--      if (shell_variables == global_variables)
--	var->attributes &= ~(att_tempvar|att_propagate);
--      else
--	shell_variables->flags |= VC_HASTMPVAR;
--      v->attributes |= var->attributes;
--    }
--  else
--    stupidly_hack_special_variables (var->name);	/* XXX */
--
--  dispose_variable (var);
--}
--
--/* Pop the top context off of VCXT and dispose of it, returning the rest of
--   the stack. */
--void
--pop_var_context ()
--{
--  VAR_CONTEXT *ret, *vcxt;
--
--  vcxt = shell_variables;
--  if (vc_isfuncenv (vcxt) == 0)
--    {
--      internal_error (_("pop_var_context: head of shell_variables not a function context"));
--      return;
--    }
--
--  if (ret = vcxt->down)
--    {
--      ret->up = (VAR_CONTEXT *)NULL;
--      shell_variables = ret;
--      if (vcxt->table)
--	hash_flush (vcxt->table, push_func_var);
--      dispose_var_context (vcxt);
--    }
--  else
--    internal_error (_("pop_var_context: no global_variables context"));
--}
--
--/* Delete the HASH_TABLEs for all variable contexts beginning at VCXT, and
--   all of the VAR_CONTEXTs except GLOBAL_VARIABLES. */
--void
--delete_all_contexts (vcxt)
--     VAR_CONTEXT *vcxt;
--{
--  VAR_CONTEXT *v, *t;
--
--  for (v = vcxt; v != global_variables; v = t)
--    {
--      t = v->down;
--      dispose_var_context (v);
--    }    
--
--  delete_all_variables (global_variables->table);
--  shell_variables = global_variables;
--}
--
--/* **************************************************************** */
--/*								    */
--/*	   Pushing and Popping temporary variable scopes	    */
--/*								    */
--/* **************************************************************** */
--
--VAR_CONTEXT *
--push_scope (flags, tmpvars)
--     int flags;
--     HASH_TABLE *tmpvars;
--{
--  return (push_var_context ((char *)NULL, flags, tmpvars));
--}
--
--static void
--push_exported_var (data)
--     PTR_T data;
--{
--  SHELL_VAR *var, *v;
--
--  var = (SHELL_VAR *)data;
--
--  /* If a temp var had its export attribute set, or it's marked to be
--     propagated, bind it in the previous scope before disposing it. */
--  /* XXX - This isn't exactly right, because all tempenv variables have the
--    export attribute set. */
--#if 0
--  if (exported_p (var) || (var->attributes & att_propagate))
--#else
--  if (tempvar_p (var) && exported_p (var) && (var->attributes & att_propagate))
--#endif
--    {
--      var->attributes &= ~att_tempvar;		/* XXX */
--      v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
--      if (shell_variables == global_variables)
--	var->attributes &= ~att_propagate;
--      v->attributes |= var->attributes;
--    }
--  else
--    stupidly_hack_special_variables (var->name);	/* XXX */
--
--  dispose_variable (var);
--}
--
--void
--pop_scope (is_special)
--     int is_special;
--{
--  VAR_CONTEXT *vcxt, *ret;
--
--  vcxt = shell_variables;
--  if (vc_istempscope (vcxt) == 0)
--    {
--      internal_error (_("pop_scope: head of shell_variables not a temporary environment scope"));
--      return;
--    }
--
--  ret = vcxt->down;
--  if (ret)
--    ret->up = (VAR_CONTEXT *)NULL;
--
--  shell_variables = ret;
--
--  /* Now we can take care of merging variables in VCXT into set of scopes
--     whose head is RET (shell_variables). */
--  FREE (vcxt->name);
--  if (vcxt->table)
--    {
--      if (is_special)
--	hash_flush (vcxt->table, push_func_var);
--      else
--	hash_flush (vcxt->table, push_exported_var);
--      hash_dispose (vcxt->table);
--    }
--  free (vcxt);
--
--  sv_ifs ("IFS");	/* XXX here for now */
--}
--
--/* **************************************************************** */
--/*								    */
--/*		 Pushing and Popping function contexts		    */
--/*								    */
--/* **************************************************************** */
--
--static WORD_LIST **dollar_arg_stack = (WORD_LIST **)NULL;
--static int dollar_arg_stack_slots;
--static int dollar_arg_stack_index;
--
--/* XXX - we might want to consider pushing and popping the `getopts' state
--   when we modify the positional parameters. */
--void
--push_context (name, is_subshell, tempvars)
--     char *name;	/* function name */
--     int is_subshell;
--     HASH_TABLE *tempvars;
--{
--  if (is_subshell == 0)
--    push_dollar_vars ();
--  variable_context++;
--  push_var_context (name, VC_FUNCENV, tempvars);
--}
--
--/* Only called when subshell == 0, so we don't need to check, and can
--   unconditionally pop the dollar vars off the stack. */
--void
--pop_context ()
--{
--  pop_dollar_vars ();
--  variable_context--;
--  pop_var_context ();
--
--  sv_ifs ("IFS");		/* XXX here for now */
--}
--
--/* Save the existing positional parameters on a stack. */
--void
--push_dollar_vars ()
--{
--  if (dollar_arg_stack_index + 2 > dollar_arg_stack_slots)
--    {
--      dollar_arg_stack = (WORD_LIST **)
--	xrealloc (dollar_arg_stack, (dollar_arg_stack_slots += 10)
--		  * sizeof (WORD_LIST *));
--    }
--  dollar_arg_stack[dollar_arg_stack_index++] = list_rest_of_args ();
--  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
--}
--
--/* Restore the positional parameters from our stack. */
--void
--pop_dollar_vars ()
--{
--  if (!dollar_arg_stack || dollar_arg_stack_index == 0)
--    return;
--
--  remember_args (dollar_arg_stack[--dollar_arg_stack_index], 1);
--  dispose_words (dollar_arg_stack[dollar_arg_stack_index]);
--  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
--  set_dollar_vars_unchanged ();
--}
--
--void
--dispose_saved_dollar_vars ()
--{
--  if (!dollar_arg_stack || dollar_arg_stack_index == 0)
--    return;
--
--  dispose_words (dollar_arg_stack[dollar_arg_stack_index]);
--  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
--}
--
--/* Manipulate the special BASH_ARGV and BASH_ARGC variables. */
--
--void
--push_args (list)
--     WORD_LIST *list;
--{
--#if defined (ARRAY_VARS) && defined (DEBUGGER)
--  SHELL_VAR *bash_argv_v, *bash_argc_v;
--  ARRAY *bash_argv_a, *bash_argc_a;
--  WORD_LIST *l;
--  arrayind_t i;
--  char *t;
--
--  GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a);
--  GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a);
--
--  for (l = list, i = 0; l; l = l->next, i++)
--    array_push (bash_argv_a, l->word->word);
--
--  t = itos (i);
--  array_push (bash_argc_a, t);
--  free (t);
--#endif /* ARRAY_VARS && DEBUGGER */
--}
--
--/* Remove arguments from BASH_ARGV array.  Pop top element off BASH_ARGC
--   array and use that value as the count of elements to remove from
--   BASH_ARGV. */
--void
--pop_args ()
--{
--#if defined (ARRAY_VARS) && defined (DEBUGGER)
--  SHELL_VAR *bash_argv_v, *bash_argc_v;
--  ARRAY *bash_argv_a, *bash_argc_a;
--  ARRAY_ELEMENT *ce;
--  intmax_t i;
--
--  GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a);
--  GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a);
--
--  ce = array_shift (bash_argc_a, 1, 0);
--  if (ce == 0 || legal_number (element_value (ce), &i) == 0)
--    i = 0;
--
--  for ( ; i > 0; i--)
--    array_pop (bash_argv_a);
--  array_dispose_element (ce);
--#endif /* ARRAY_VARS && DEBUGGER */
--}
--
--/*************************************************
-- *						 *
-- *	Functions to manage special variables	 *
-- *						 *
-- *************************************************/
--
--/* Extern declarations for variables this code has to manage. */
--extern int eof_encountered, eof_encountered_limit, ignoreeof;
--
--#if defined (READLINE)
--extern int hostname_list_initialized;
--#endif
--
--/* An alist of name.function for each special variable.  Most of the
--   functions don't do much, and in fact, this would be faster with a
--   switch statement, but by the end of this file, I am sick of switch
--   statements. */
--
--#define SET_INT_VAR(name, intvar)  intvar = find_variable (name) != 0
--
--/* This table will be sorted with qsort() the first time it's accessed. */
--struct name_and_function {
--  char *name;
--  sh_sv_func_t *function;
--};
--
--static struct name_and_function special_vars[] = {
--  { "BASH_COMPAT", sv_shcompat },
--  { "BASH_XTRACEFD", sv_xtracefd },
--
--#if defined (JOB_CONTROL)
--  { "CHILD_MAX", sv_childmax },
--#endif
--
--#if defined (READLINE)
--#  if defined (STRICT_POSIX)
--  { "COLUMNS", sv_winsize },
--#  endif
--  { "COMP_WORDBREAKS", sv_comp_wordbreaks },
--#endif
--
--  { "FUNCNEST", sv_funcnest },
--
--  { "GLOBIGNORE", sv_globignore },
--
--#if defined (HISTORY)
--  { "HISTCONTROL", sv_history_control },
--  { "HISTFILESIZE", sv_histsize },
--  { "HISTIGNORE", sv_histignore },
--  { "HISTSIZE", sv_histsize },
--  { "HISTTIMEFORMAT", sv_histtimefmt },
--#endif
--
--#if defined (__CYGWIN__)
--  { "HOME", sv_home },
--#endif
--
--#if defined (READLINE)
--  { "HOSTFILE", sv_hostfile },
--#endif
--
--  { "IFS", sv_ifs },
--  { "IGNOREEOF", sv_ignoreeof },
--
--  { "LANG", sv_locale },
--  { "LC_ALL", sv_locale },
--  { "LC_COLLATE", sv_locale },
--  { "LC_CTYPE", sv_locale },
--  { "LC_MESSAGES", sv_locale },
--  { "LC_NUMERIC", sv_locale },
--  { "LC_TIME", sv_locale },
--
--#if defined (READLINE) && defined (STRICT_POSIX)
--  { "LINES", sv_winsize },
--#endif
--
--  { "MAIL", sv_mail },
--  { "MAILCHECK", sv_mail },
--  { "MAILPATH", sv_mail },
--
--  { "OPTERR", sv_opterr },
--  { "OPTIND", sv_optind },
--
--  { "PATH", sv_path },
--  { "POSIXLY_CORRECT", sv_strict_posix },
--
--#if defined (READLINE)
--  { "TERM", sv_terminal },
--  { "TERMCAP", sv_terminal },
--  { "TERMINFO", sv_terminal },
--#endif /* READLINE */
--
--  { "TEXTDOMAIN", sv_locale },
--  { "TEXTDOMAINDIR", sv_locale },
--
--#if defined (HAVE_TZSET)
--  { "TZ", sv_tz },
--#endif
--
--#if defined (HISTORY) && defined (BANG_HISTORY)
--  { "histchars", sv_histchars },
--#endif /* HISTORY && BANG_HISTORY */
--
--  { "ignoreeof", sv_ignoreeof },
--
--  { (char *)0, (sh_sv_func_t *)0 }
--};
--
--#define N_SPECIAL_VARS	(sizeof (special_vars) / sizeof (special_vars[0]) - 1)
--
--static int
--sv_compare (sv1, sv2)
--     struct name_and_function *sv1, *sv2;
--{
--  int r;
--
--  if ((r = sv1->name[0] - sv2->name[0]) == 0)
--    r = strcmp (sv1->name, sv2->name);
--  return r;
--}
--
--static inline int
--find_special_var (name)
--     const char *name;
--{
--  register int i, r;
--
--  for (i = 0; special_vars[i].name; i++)
--    {
--      r = special_vars[i].name[0] - name[0];
--      if (r == 0)
--	r = strcmp (special_vars[i].name, name);
--      if (r == 0)
--	return i;
--      else if (r > 0)
--	/* Can't match any of rest of elements in sorted list.  Take this out
--	   if it causes problems in certain environments. */
--	break;
--    }
--  return -1;
--}
--
--/* The variable in NAME has just had its state changed.  Check to see if it
--   is one of the special ones where something special happens. */
--void
--stupidly_hack_special_variables (name)
--     char *name;
--{
--  static int sv_sorted = 0;
--  int i;
--
--  if (sv_sorted == 0)	/* shouldn't need, but it's fairly cheap. */
--    {
--      qsort (special_vars, N_SPECIAL_VARS, sizeof (special_vars[0]),
--		(QSFUNC *)sv_compare);
--      sv_sorted = 1;
--    }
--
--  i = find_special_var (name);
--  if (i != -1)
--    (*(special_vars[i].function)) (name);
--}
--
--/* Special variables that need hooks to be run when they are unset as part
--   of shell reinitialization should have their sv_ functions run here. */
--void
--reinit_special_variables ()
--{
--#if defined (READLINE)
--  sv_comp_wordbreaks ("COMP_WORDBREAKS");
--#endif
--  sv_globignore ("GLOBIGNORE");
--  sv_opterr ("OPTERR");
--}
--
--void
--sv_ifs (name)
--     char *name;
--{
--  SHELL_VAR *v;
--
--  v = find_variable ("IFS");
--  setifs (v);
--}
--
--/* What to do just after the PATH variable has changed. */
--void
--sv_path (name)
--     char *name;
--{
--  /* hash -r */
--  phash_flush ();
--}
--
--/* What to do just after one of the MAILxxxx variables has changed.  NAME
--   is the name of the variable.  This is called with NAME set to one of
--   MAIL, MAILCHECK, or MAILPATH.  */
--void
--sv_mail (name)
--     char *name;
--{
--  /* If the time interval for checking the files has changed, then
--     reset the mail timer.  Otherwise, one of the pathname vars
--     to the users mailbox has changed, so rebuild the array of
--     filenames. */
--  if (name[4] == 'C')  /* if (strcmp (name, "MAILCHECK") == 0) */
--    reset_mail_timer ();
--  else
--    {
--      free_mail_files ();
--      remember_mail_dates ();
--    }
--}
--
--void
--sv_funcnest (name)
--     char *name;
--{
--  SHELL_VAR *v;
--  intmax_t num;
--
--  v = find_variable (name);
--  if (v == 0)
--    funcnest_max = 0;
--  else if (legal_number (value_cell (v), &num) == 0)
--    funcnest_max = 0;
--  else
--    funcnest_max = num;
--}
--
--/* What to do when GLOBIGNORE changes. */
--void
--sv_globignore (name)
--     char *name;
--{
--  if (privileged_mode == 0)
--    setup_glob_ignore (name);
--}
--
--#if defined (READLINE)
--void
--sv_comp_wordbreaks (name)
--     char *name;
--{
--  SHELL_VAR *sv;
--
--  sv = find_variable (name);
--  if (sv == 0)
--    reset_completer_word_break_chars ();
--}
--
--/* What to do just after one of the TERMxxx variables has changed.
--   If we are an interactive shell, then try to reset the terminal
--   information in readline. */
--void
--sv_terminal (name)
--     char *name;
--{
--  if (interactive_shell && no_line_editing == 0)
--    rl_reset_terminal (get_string_value ("TERM"));
--}
--
--void
--sv_hostfile (name)
--     char *name;
--{
--  SHELL_VAR *v;
--
--  v = find_variable (name);
--  if (v == 0)
--    clear_hostname_list ();
--  else
--    hostname_list_initialized = 0;
--}
--
--#if defined (STRICT_POSIX)
--/* In strict posix mode, we allow assignments to LINES and COLUMNS (and values
--   found in the initial environment) to override the terminal size reported by
--   the kernel. */
--void
--sv_winsize (name)
--     char *name;
--{
--  SHELL_VAR *v;
--  intmax_t xd;
--  int d;
--
--  if (posixly_correct == 0 || interactive_shell == 0 || no_line_editing)
--    return;
--
--  v = find_variable (name);
--  if (v == 0 || var_isnull (v))
--    rl_reset_screen_size ();
--  else
--    {
--      if (legal_number (value_cell (v), &xd) == 0)
--	return;
--      winsize_assignment = 1;
--      d = xd;			/* truncate */
--      if (name[0] == 'L')	/* LINES */
--	rl_set_screen_size (d, -1);
--      else			/* COLUMNS */
--	rl_set_screen_size (-1, d);
--      winsize_assignment = 0;
--    }
--}
--#endif /* STRICT_POSIX */
--#endif /* READLINE */
--
--/* Update the value of HOME in the export environment so tilde expansion will
--   work on cygwin. */
--#if defined (__CYGWIN__)
--sv_home (name)
--     char *name;
--{
--  array_needs_making = 1;
--  maybe_make_export_env ();
--}
--#endif
--
--#if defined (HISTORY)
--/* What to do after the HISTSIZE or HISTFILESIZE variables change.
--   If there is a value for this HISTSIZE (and it is numeric), then stifle
--   the history.  Otherwise, if there is NO value for this variable,
--   unstifle the history.  If name is HISTFILESIZE, and its value is
--   numeric, truncate the history file to hold no more than that many
--   lines. */
--void
--sv_histsize (name)
--     char *name;
--{
--  char *temp;
--  intmax_t num;
--  int hmax;
--
--  temp = get_string_value (name);
--
--  if (temp && *temp)
--    {
--      if (legal_number (temp, &num))
--	{
--	  hmax = num;
--	  if (hmax < 0 && name[4] == 'S')
--	    unstifle_history ();	/* unstifle history if HISTSIZE < 0 */
--	  else if (name[4] == 'S')
--	    {
--	      stifle_history (hmax);
--	      hmax = where_history ();
--	      if (history_lines_this_session > hmax)
--		history_lines_this_session = hmax;
--	    }
--	  else if (hmax >= 0)	/* truncate HISTFILE if HISTFILESIZE >= 0 */
--	    {
--	      history_truncate_file (get_string_value ("HISTFILE"), hmax);
--	      if (hmax <= history_lines_in_file)
--		history_lines_in_file = hmax;
--	    }
--	}
--    }
--  else if (name[4] == 'S')
--    unstifle_history ();
--}
--
--/* What to do after the HISTIGNORE variable changes. */
--void
--sv_histignore (name)
--     char *name;
--{
--  setup_history_ignore (name);
--}
--
--/* What to do after the HISTCONTROL variable changes. */
--void
--sv_history_control (name)
--     char *name;
--{
--  char *temp;
--  char *val;
--  int tptr;
--
--  history_control = 0;
--  temp = get_string_value (name);
--
--  if (temp == 0 || *temp == 0)
--    return;
--
--  tptr = 0;
--  while (val = extract_colon_unit (temp, &tptr))
--    {
--      if (STREQ (val, "ignorespace"))
--	history_control |= HC_IGNSPACE;
--      else if (STREQ (val, "ignoredups"))
--	history_control |= HC_IGNDUPS;
--      else if (STREQ (val, "ignoreboth"))
--	history_control |= HC_IGNBOTH;
--      else if (STREQ (val, "erasedups"))
--	history_control |= HC_ERASEDUPS;
--
--      free (val);
--    }
--}
--
--#if defined (BANG_HISTORY)
--/* Setting/unsetting of the history expansion character. */
--void
--sv_histchars (name)
--     char *name;
--{
--  char *temp;
--
--  temp = get_string_value (name);
--  if (temp)
--    {
--      history_expansion_char = *temp;
--      if (temp[0] && temp[1])
--	{
--	  history_subst_char = temp[1];
--	  if (temp[2])
--	      history_comment_char = temp[2];
--	}
--    }
--  else
--    {
--      history_expansion_char = '!';
--      history_subst_char = '^';
--      history_comment_char = '#';
--    }
--}
--#endif /* BANG_HISTORY */
--
--void
--sv_histtimefmt (name)
--     char *name;
--{
--  SHELL_VAR *v;
--
--  if (v = find_variable (name))
--    {
--      if (history_comment_char == 0)
--	history_comment_char = '#';
--    }
--  history_write_timestamps = (v != 0);
--}
--#endif /* HISTORY */
--
--#if defined (HAVE_TZSET)
--void
--sv_tz (name)
--     char *name;
--{
--  if (chkexport (name))
--    tzset ();
--}
--#endif
--
--/* If the variable exists, then the value of it can be the number
--   of times we actually ignore the EOF.  The default is small,
--   (smaller than csh, anyway). */
--void
--sv_ignoreeof (name)
--     char *name;
--{
--  SHELL_VAR *tmp_var;
--  char *temp;
--
--  eof_encountered = 0;
--
--  tmp_var = find_variable (name);
--  ignoreeof = tmp_var != 0;
--  temp = tmp_var ? value_cell (tmp_var) : (char *)NULL;
--  if (temp)
--    eof_encountered_limit = (*temp && all_digits (temp)) ? atoi (temp) : 10;
--  set_shellopts ();	/* make sure `ignoreeof' is/is not in $SHELLOPTS */
--}
--
--void
--sv_optind (name)
--     char *name;
--{
--  char *tt;
--  int s;
--
--  tt = get_string_value ("OPTIND");
--  if (tt && *tt)
--    {
--      s = atoi (tt);
--
--      /* According to POSIX, setting OPTIND=1 resets the internal state
--	 of getopt (). */
--      if (s < 0 || s == 1)
--	s = 0;
--    }
--  else
--    s = 0;
--  getopts_reset (s);
--}
--
--void
--sv_opterr (name)
--     char *name;
--{
--  char *tt;
--
--  tt = get_string_value ("OPTERR");
--  sh_opterr = (tt && *tt) ? atoi (tt) : 1;
--}
--
--void
--sv_strict_posix (name)
--     char *name;
--{
--  SET_INT_VAR (name, posixly_correct);
--  posix_initialize (posixly_correct);
--#if defined (READLINE)
--  if (interactive_shell)
--    posix_readline_initialize (posixly_correct);
--#endif /* READLINE */
--  set_shellopts ();	/* make sure `posix' is/is not in $SHELLOPTS */
--}
--
--void
--sv_locale (name)
--     char *name;
--{
--  char *v;
--  int r;
--
--  v = get_string_value (name);
--  if (name[0] == 'L' && name[1] == 'A')	/* LANG */
--    r = set_lang (name, v);
--  else
--    r = set_locale_var (name, v);		/* LC_*, TEXTDOMAIN* */
--
--#if 1
--  if (r == 0 && posixly_correct)
--    last_command_exit_value = 1;
--#endif
--}
--
--#if defined (ARRAY_VARS)
--void
--set_pipestatus_array (ps, nproc)
--     int *ps;
--     int nproc;
--{
--  SHELL_VAR *v;
--  ARRAY *a;
--  ARRAY_ELEMENT *ae;
--  register int i;
--  char *t, tbuf[INT_STRLEN_BOUND(int) + 1];
--
--  v = find_variable ("PIPESTATUS");
--  if (v == 0)
--    v = make_new_array_variable ("PIPESTATUS");
--  if (array_p (v) == 0)
--    return;		/* Do nothing if not an array variable. */
--  a = array_cell (v);
--
--  if (a == 0 || array_num_elements (a) == 0)
--    {
--      for (i = 0; i < nproc; i++)	/* was ps[i] != -1, not i < nproc */
--	{
--	  t = inttostr (ps[i], tbuf, sizeof (tbuf));
--	  array_insert (a, i, t);
--	}
--      return;
--    }
--
--  /* Fast case */
--  if (array_num_elements (a) == nproc && nproc == 1)
--    {
--      ae = element_forw (a->head);
--      free (element_value (ae));
--      ae->value = itos (ps[0]);
--    }
--  else if (array_num_elements (a) <= nproc)
--    {
--      /* modify in array_num_elements members in place, then add */
--      ae = a->head;
--      for (i = 0; i < array_num_elements (a); i++)
--	{
--	  ae = element_forw (ae);
--	  free (element_value (ae));
--	  ae->value = itos (ps[i]);
--	}
--      /* add any more */
--      for ( ; i < nproc; i++)
--	{
--	  t = inttostr (ps[i], tbuf, sizeof (tbuf));
--	  array_insert (a, i, t);
--	}
--    }
--  else
--    {
--      /* deleting elements.  it's faster to rebuild the array. */	  
--      array_flush (a);
--      for (i = 0; ps[i] != -1; i++)
--	{
--	  t = inttostr (ps[i], tbuf, sizeof (tbuf));
--	  array_insert (a, i, t);
--	}
--    }
--}
--
--ARRAY *
--save_pipestatus_array ()
--{
--  SHELL_VAR *v;
--  ARRAY *a, *a2;
--
--  v = find_variable ("PIPESTATUS");
--  if (v == 0 || array_p (v) == 0 || array_cell (v) == 0)
--    return ((ARRAY *)NULL);
--    
--  a = array_cell (v);
--  a2 = array_copy (array_cell (v));
--
--  return a2;
--}
--
--void
--restore_pipestatus_array (a)
--     ARRAY *a;
--{
--  SHELL_VAR *v;
--  ARRAY *a2;
--
--  v = find_variable ("PIPESTATUS");
--  /* XXX - should we still assign even if existing value is NULL? */
--  if (v == 0 || array_p (v) == 0 || array_cell (v) == 0)
--    return;
--
--  a2 = array_cell (v);
--  var_setarray (v, a); 
--
--  array_dispose (a2);
--}
--#endif
--
--void
--set_pipestatus_from_exit (s)
--     int s;
--{
--#if defined (ARRAY_VARS)
--  static int v[2] = { 0, -1 };
--
--  v[0] = s;
--  set_pipestatus_array (v, 1);
--#endif
--}
--
--void
--sv_xtracefd (name)
--     char *name;
--{
--  SHELL_VAR *v;
--  char *t, *e;
--  int fd;
--  FILE *fp;
--
--  v = find_variable (name);
--  if (v == 0)
--    {
--      xtrace_reset ();
--      return;
--    }
--
--  t = value_cell (v);
--  if (t == 0 || *t == 0)
--    xtrace_reset ();
--  else
--    {
--      fd = (int)strtol (t, &e, 10);
--      if (e != t && *e == '\0' && sh_validfd (fd))
--	{
--	  fp = fdopen (fd, "w");
--	  if (fp == 0)
--	    internal_error (_("%s: %s: cannot open as FILE"), name, value_cell (v));
--	  else
--	    xtrace_set (fd, fp);
--	}
--      else
--	internal_error (_("%s: %s: invalid value for trace file descriptor"), name, value_cell (v));
--    }
--}
--
--#define MIN_COMPAT_LEVEL 31
--
--void
--sv_shcompat (name)
--     char *name;
--{
--  SHELL_VAR *v;
--  char *val;
--  int tens, ones, compatval;
--
--  v = find_variable (name);
--  if (v == 0)
--    {
--      shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
--      set_compatibility_opts ();
--      return;
--    }
--  val = value_cell (v);
--  if (val == 0 || *val == '\0')
--    {
--      shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
--      set_compatibility_opts ();
--      return;
--    }
--  /* Handle decimal-like compatibility version specifications: 4.2 */
--  if (isdigit (val[0]) && val[1] == '.' && isdigit (val[2]) && val[3] == 0)
--    {
--      tens = val[0] - '0';
--      ones = val[2] - '0';
--      compatval = tens*10 + ones;
--    }
--  /* Handle integer-like compatibility version specifications: 42 */
--  else if (isdigit (val[0]) && isdigit (val[1]) && val[2] == 0)
--    {
--      tens = val[0] - '0';
--      ones = val[1] - '0';
--      compatval = tens*10 + ones;
--    }
--  else
--    {
--compat_error:
--      internal_error (_("%s: %s: compatibility value out of range"), name, val);
--      shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
--      set_compatibility_opts ();
--      return;
--    }
--
--  if (compatval < MIN_COMPAT_LEVEL || compatval > DEFAULT_COMPAT_LEVEL)
--    goto compat_error;
--
--  shell_compatibility_level = compatval;
--  set_compatibility_opts ();
--}
--
--#if defined (JOB_CONTROL)
--void
--sv_childmax (name)
--     char *name;
--{
--  char *tt;
--  int s;
--
--  tt = get_string_value (name);
--  s = (tt && *tt) ? atoi (tt) : 0;
--  set_maxchild (s);
--}
--#endif
diff --git a/patches/bash-4.3.30/0003-Bash-4.3-patch-33.patch b/patches/bash-4.3.30/0003-Bash-4.3-patch-33.patch
deleted file mode 100644
index cda179735..000000000
--- a/patches/bash-4.3.30/0003-Bash-4.3-patch-33.patch
+++ /dev/null
@@ -1,204 +0,0 @@
-From: Chet Ramey <chet.ramey@case.edu>
-Date: Thu, 15 Jan 2015 10:21:08 -0500
-Subject: [PATCH] Bash-4.3 patch 33
-
----
- bashline.c        |  6 ++++--
- builtins/common.h |  4 ++++
- builtins/read.def | 31 ++++++++++++++++++++++++++++---
- patchlevel.h      |  2 +-
- shell.c           |  9 +++++++++
- sig.c             |  6 ++++--
- 6 files changed, 50 insertions(+), 8 deletions(-)
-
-diff --git a/bashline.c b/bashline.c
-index 77ca033f2cc8..c87415171a4a 100644
---- a/bashline.c
-+++ b/bashline.c
-@@ -202,6 +202,7 @@ extern int current_command_line_count, saved_command_line_count;
- extern int last_command_exit_value;
- extern int array_needs_making;
- extern int posixly_correct, no_symbolic_links;
-+extern int sigalrm_seen;
- extern char *current_prompt_string, *ps1_prompt;
- extern STRING_INT_ALIST word_token_alist[];
- extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;
-@@ -4208,8 +4209,9 @@ bash_event_hook ()
- {
-   /* If we're going to longjmp to top_level, make sure we clean up readline.
-      check_signals will call QUIT, which will eventually longjmp to top_level,
--     calling run_interrupt_trap along the way. */
--  if (interrupt_state)
-+     calling run_interrupt_trap along the way.  The check for sigalrm_seen is
-+     to clean up the read builtin's state. */
-+  if (terminating_signal || interrupt_state || sigalrm_seen)
-     rl_cleanup_after_signal ();
-   bashline_reset_event_hook ();
-   check_signals_and_traps ();	/* XXX */
-diff --git a/builtins/common.h b/builtins/common.h
-index cae16b10fb65..a1298cb9c84a 100644
---- a/builtins/common.h
-+++ b/builtins/common.h
-@@ -122,6 +122,10 @@ extern void bash_logout __P((void));
- /* Functions from getopts.def */
- extern void getopts_reset __P((int));
- 
-+/* Functions from read.def */
-+extern void read_tty_cleanup __P((void));
-+extern int read_tty_modified __P((void));
-+
- /* Functions from set.def */
- extern int minus_o_option_value __P((char *));
- extern void list_minus_o_opts __P((int, int));
-diff --git a/builtins/read.def b/builtins/read.def
-index 43971544d081..56c23010bbe8 100644
---- a/builtins/read.def
-+++ b/builtins/read.def
-@@ -140,10 +140,12 @@ static void reset_alarm __P((void));
- procenv_t alrmbuf;
- int sigalrm_seen;
- 
--static int reading;
-+static int reading, tty_modified;
- static SigHandler *old_alrm;
- static unsigned char delim;
- 
-+static struct ttsave termsave;
-+
- /* In all cases, SIGALRM just sets a flag that we check periodically.  This
-    avoids problems with the semi-tricky stuff we do with the xfree of
-    input_string at the top of the unwind-protect list (see below). */
-@@ -188,7 +190,6 @@ read_builtin (list)
-   struct stat tsb;
-   SHELL_VAR *var;
-   TTYSTRUCT ttattrs, ttset;
--  struct ttsave termsave;
- #if defined (ARRAY_VARS)
-   WORD_LIST *alist;
- #endif
-@@ -221,7 +222,7 @@ read_builtin (list)
-   USE_VAR(ps2);
-   USE_VAR(lastsig);
- 
--  sigalrm_seen = reading = 0;
-+  sigalrm_seen = reading = tty_modified = 0;
- 
-   i = 0;		/* Index into the string that we are reading. */
-   raw = edit = 0;	/* Not reading raw input by default. */
-@@ -438,6 +439,8 @@ read_builtin (list)
- 	  retval = 128+SIGALRM;
- 	  goto assign_vars;
- 	}
-+      if (interactive_shell == 0)
-+	initialize_terminating_signals ();
-       old_alrm = set_signal_handler (SIGALRM, sigalrm);
-       add_unwind_protect (reset_alarm, (char *)NULL);
- #if defined (READLINE)
-@@ -482,7 +485,10 @@ read_builtin (list)
- 	  i = silent ? ttfd_cbreak (fd, &ttset) : ttfd_onechar (fd, &ttset);
- 	  if (i < 0)
- 	    sh_ttyerror (1);
-+	  tty_modified = 1;
- 	  add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
-+	  if (interactive_shell == 0)
-+	    initialize_terminating_signals ();
- 	}
-     }
-   else if (silent)	/* turn off echo but leave term in canonical mode */
-@@ -497,7 +503,10 @@ read_builtin (list)
-       if (i < 0)
- 	sh_ttyerror (1);
- 
-+      tty_modified = 1;
-       add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
-+      if (interactive_shell == 0)
-+	initialize_terminating_signals ();
-     }
- 
-   /* This *must* be the top unwind-protect on the stack, so the manipulation
-@@ -588,6 +597,8 @@ read_builtin (list)
- 	    }
- 	  else
- 	    lastsig = 0;
-+	  if (terminating_signal && tty_modified)
-+	    ttyrestore (&termsave);	/* fix terminal before exiting */
- 	  CHECK_TERMSIG;
- 	  eof = 1;
- 	  break;
-@@ -978,6 +989,20 @@ ttyrestore (ttp)
-      struct ttsave *ttp;
- {
-   ttsetattr (ttp->fd, ttp->attrs);
-+  tty_modified = 0;
-+}
-+
-+void
-+read_tty_cleanup ()
-+{
-+  if (tty_modified)
-+    ttyrestore (&termsave);
-+}
-+
-+int
-+read_tty_modified ()
-+{
-+  return (tty_modified);
- }
- 
- #if defined (READLINE)
-diff --git a/patchlevel.h b/patchlevel.h
-index b8bf38704ed2..cefe6bdd3a13 100644
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
- 
--#define PATCHLEVEL 32
-+#define PATCHLEVEL 33
- 
- #endif /* _PATCHLEVEL_H_ */
-diff --git a/shell.c b/shell.c
-index bbc8a66cc2eb..2fd8179ba10d 100644
---- a/shell.c
-+++ b/shell.c
-@@ -73,6 +73,7 @@
- #endif
- 
- #if defined (READLINE)
-+#  include <readline/readline.h>
- #  include "bashline.h"
- #endif
- 
-@@ -909,6 +910,14 @@ exit_shell (s)
-   fflush (stdout);		/* XXX */
-   fflush (stderr);
- 
-+  /* Clean up the terminal if we are in a state where it's been modified. */
-+#if defined (READLINE)
-+  if (RL_ISSTATE (RL_STATE_TERMPREPPED) && rl_deprep_term_function)
-+    (*rl_deprep_term_function) ();
-+#endif
-+  if (read_tty_modified ())
-+    read_tty_cleanup ();
-+
-   /* Do trap[0] if defined.  Allow it to override the exit status
-      passed to us. */
-   if (signal_is_trapped (0))
-diff --git a/sig.c b/sig.c
-index 3b62ea5d7c5d..8bc45c17f478 100644
---- a/sig.c
-+++ b/sig.c
-@@ -532,8 +532,10 @@ termsig_sighandler (sig)
- #if defined (READLINE)
-   /* Set the event hook so readline will call it after the signal handlers
-      finish executing, so if this interrupted character input we can get
--     quick response. */
--  if (interactive_shell && interactive && no_line_editing == 0)
-+     quick response.  If readline is active or has modified the terminal we
-+     need to set this no matter what the signal is, though the check for
-+     RL_STATE_TERMPREPPED is possibly redundant. */
-+  if (RL_ISSTATE (RL_STATE_SIGHANDLER) || RL_ISSTATE (RL_STATE_TERMPREPPED))
-     bashline_set_event_hook ();
- #endif
- 
diff --git a/patches/bash-4.3.30/series b/patches/bash-4.3.30/series
deleted file mode 100644
index 2e1fdf17f..000000000
--- a/patches/bash-4.3.30/series
+++ /dev/null
@@ -1,6 +0,0 @@
-# generated by git-ptx-patches
-#tag:base --start-number 1
-0001-Bash-4.3-patch-31.patch
-0002-Bash-4.3-patch-32.patch
-0003-Bash-4.3-patch-33.patch
-# 602897f584d96d29536a2fa60f8d5e23  - git-ptx-patches magic
diff --git a/patches/bash-5.1.8/0001-Bash-5.1-patch-12.patch b/patches/bash-5.1.8/0001-Bash-5.1-patch-12.patch
new file mode 100644
index 000000000..ef8b6ae7f
--- /dev/null
+++ b/patches/bash-5.1.8/0001-Bash-5.1-patch-12.patch
@@ -0,0 +1,262 @@
+diff -urN bash-5.1.8.orig/builtins/wait.def bash-5.1.8/builtins/wait.def
+--- bash-5.1.8.orig/builtins/wait.def	2021-12-21 12:57:08.083139502 +0100
++++ bash-5.1.8/builtins/wait.def	2021-12-21 12:58:24.304849937 +0100
+@@ -111,7 +111,8 @@
+ wait_builtin (list)
+      WORD_LIST *list;
+ {
+-  int status, code, opt, nflag, wflags;
++  int status, code, opt, nflag;
++  volatile int wflags;
+   char *vname;
+   SHELL_VAR *pidvar;
+   struct procstat pstat;
+@@ -180,6 +181,8 @@
+       last_command_exit_signal = wait_signal_received;
+       status = 128 + wait_signal_received;
+       wait_sigint_cleanup ();
++      if (wflags & JWAIT_WAITING)
++	unset_waitlist ();
+       WAIT_RETURN (status);
+     }
+ 
+diff -urN bash-5.1.8.orig/command.h bash-5.1.8/command.h
+--- bash-5.1.8.orig/command.h	2021-12-21 12:57:08.099139862 +0100
++++ bash-5.1.8/command.h	2021-12-21 12:58:27.760927380 +0100
+@@ -124,6 +124,7 @@
+ #define SUBSHELL_PROCSUB 0x20	/* subshell caused by <(command) or >(command) */
+ #define SUBSHELL_COPROC	0x40	/* subshell from a coproc pipeline */
+ #define SUBSHELL_RESETTRAP 0x80	/* subshell needs to reset trap strings on first call to trap */
++#define SUBSHELL_IGNTRAP 0x100  /* subshell should reset trapped signals from trap_handler */
+ 
+ /* A structure which represents a word. */
+ typedef struct word_desc {
+diff -urN bash-5.1.8.orig/execute_cmd.c bash-5.1.8/execute_cmd.c
+--- bash-5.1.8.orig/execute_cmd.c	2021-12-21 12:57:08.091139683 +0100
++++ bash-5.1.8/execute_cmd.c	2021-12-21 12:58:27.764927470 +0100
+@@ -1547,6 +1547,9 @@
+   clear_pending_traps ();
+   reset_signal_handlers ();
+   subshell_environment |= SUBSHELL_RESETTRAP;
++  /* Note that signal handlers have been reset, so we should no longer
++    reset the handler and resend trapped signals to ourselves. */
++  subshell_environment &= ~SUBSHELL_IGNTRAP;
+ 
+   /* We are in a subshell, so forget that we are running a trap handler or
+      that the signal handler has changed (we haven't changed it!) */
+@@ -4320,7 +4323,8 @@
+ 	  already_forked = 1;
+ 	  cmdflags |= CMD_NO_FORK;
+ 
+-	  subshell_environment = SUBSHELL_FORK;		/* XXX */
++	  /* We redo some of what make_child() does with SUBSHELL_IGNTRAP */
++	  subshell_environment = SUBSHELL_FORK|SUBSHELL_IGNTRAP;	/* XXX */
+ 	  if (pipe_in != NO_PIPE || pipe_out != NO_PIPE)
+ 	    subshell_environment |= SUBSHELL_PIPE;
+ 	  if (async)
+@@ -4574,6 +4578,7 @@
+ 	     trap strings if we run trap to change a signal disposition. */
+ 	  reset_signal_handlers ();
+ 	  subshell_environment |= SUBSHELL_RESETTRAP;
++	  subshell_environment &= ~SUBSHELL_IGNTRAP;
+ 
+ 	  if (async)
+ 	    {
+@@ -5514,6 +5519,7 @@
+       reset_terminating_signals ();	/* XXX */
+       /* Cancel traps, in trap.c. */
+       restore_original_signals ();
++      subshell_environment &= ~SUBSHELL_IGNTRAP;
+ 
+ #if defined (JOB_CONTROL)
+       FREE (p);
+diff -urN bash-5.1.8.orig/jobs.c bash-5.1.8/jobs.c
+--- bash-5.1.8.orig/jobs.c	2021-12-21 12:57:08.091139683 +0100
++++ bash-5.1.8/jobs.c	2021-12-21 12:58:27.764927470 +0100
+@@ -2217,6 +2217,8 @@
+ 	 signals to the default state for a new process. */
+       pid_t mypid;
+ 
++      subshell_environment |= SUBSHELL_IGNTRAP;
++
+       /* If this ends up being changed to modify or use `command' in the
+ 	 child process, go back and change callers who free `command' in
+ 	 the child process when this returns. */
+diff -urN bash-5.1.8.orig/lib/malloc/malloc.c bash-5.1.8/lib/malloc/malloc.c
+--- bash-5.1.8.orig/lib/malloc/malloc.c	2021-12-21 12:57:08.095139773 +0100
++++ bash-5.1.8/lib/malloc/malloc.c	2021-12-21 12:58:22.200802784 +0100
+@@ -1286,13 +1286,12 @@
+       p = (union mhead *) ap - 1;
+     }
+ 
+-  /* XXX - should we return 0 if ISFREE? */
+-  maxbytes = binsize(p->mh_index);
+-
+-  /* So the usable size is the maximum number of bytes in the bin less the
+-     malloc overhead */
+-  maxbytes -= MOVERHEAD + MSLOP;
+-  return (maxbytes);
++  /* return 0 if ISFREE */
++  if (p->mh_alloc == ISFREE)
++    return 0;
++  
++  /* Since we use bounds checking, the usable size is the last requested size. */
++  return (p->mh_nbytes);
+ }
+ 
+ #if !defined (NO_VALLOC)
+diff -urN bash-5.1.8.orig/nojobs.c bash-5.1.8/nojobs.c
+--- bash-5.1.8.orig/nojobs.c	2021-12-21 12:57:08.091139683 +0100
++++ bash-5.1.8/nojobs.c	2021-12-21 12:58:27.764927470 +0100
+@@ -575,6 +575,8 @@
+ 	last_asynchronous_pid = getpid ();
+ #endif
+ 
++      subshell_environment |= SUBSHELL_IGNTRAP;
++
+       default_tty_job_signals ();
+     }
+   else
+diff -urN bash-5.1.8.orig/parse.y bash-5.1.8/parse.y
+--- bash-5.1.8.orig/parse.y	2021-12-21 12:57:08.099139862 +0100
++++ bash-5.1.8/parse.y	2021-12-21 12:58:26.112890455 +0100
+@@ -6493,10 +6493,8 @@
+   old_expand_aliases = expand_aliases;
+ 
+   push_stream (1);
+-#if 0 /* TAG: bash-5.2 Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com> 11/17/2020 */
+   if (ea = expanding_alias ())
+     parser_save_alias ();
+-#endif
+   last_read_token = WORD;		/* WORD to allow reserved words here */
+   current_command_line_count = 0;
+   echo_input_at_read = expand_aliases = 0;
+@@ -6531,10 +6529,8 @@
+   last_read_token = '\n';
+   pop_stream ();
+ 
+-#if 0 /* TAG: bash-5.2 */
+   if (ea)
+     parser_restore_alias ();
+-#endif
+ 
+ #if defined (HISTORY)
+   remember_on_history = old_remember_on_history;
+diff -urN bash-5.1.8.orig/patchlevel.h bash-5.1.8/patchlevel.h
+--- bash-5.1.8.orig/patchlevel.h	2021-12-21 12:57:08.075139321 +0100
++++ bash-5.1.8/patchlevel.h	2021-12-21 12:58:27.764927470 +0100
+@@ -25,6 +25,6 @@
+    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+ 
+-#define PATCHLEVEL 8
++#define PATCHLEVEL 12
+ 
+ #endif /* _PATCHLEVEL_H_ */
+diff -urN bash-5.1.8.orig/sig.c bash-5.1.8/sig.c
+--- bash-5.1.8.orig/sig.c	2021-12-21 12:57:08.071139231 +0100
++++ bash-5.1.8/sig.c	2021-12-21 12:58:27.764927470 +0100
+@@ -55,7 +55,8 @@
+ #  include "bashhist.h"
+ #endif
+ 
+-extern void initialize_siglist ();
++extern void initialize_siglist PARAMS((void));
++extern void set_original_signal PARAMS((int, SigHandler *));
+ 
+ #if !defined (JOB_CONTROL)
+ extern void initialize_job_signals PARAMS((void));
+@@ -255,6 +256,13 @@
+       sigaction (XSIG (i), &act, &oact);
+       XHANDLER(i) = oact.sa_handler;
+       XSAFLAGS(i) = oact.sa_flags;
++
++#if 0
++      set_original_signal (XSIG(i), XHANDLER(i));	/* optimization */
++#else
++      set_original_signal (XSIG(i), act.sa_handler);	/* optimization */
++#endif
++
+       /* Don't do anything with signals that are ignored at shell entry
+ 	 if the shell is not interactive. */
+       /* XXX - should we do this for interactive shells, too? */
+diff -urN bash-5.1.8.orig/subst.c bash-5.1.8/subst.c
+--- bash-5.1.8.orig/subst.c	2021-12-21 12:57:08.099139862 +0100
++++ bash-5.1.8/subst.c	2021-12-21 12:58:27.764927470 +0100
+@@ -5951,6 +5951,7 @@
+       free_pushed_string_input ();
+       /* Cancel traps, in trap.c. */
+       restore_original_signals ();	/* XXX - what about special builtins? bash-4.2 */
++      subshell_environment &= ~SUBSHELL_IGNTRAP;
+       QUIT;	/* catch any interrupts we got post-fork */
+       setup_async_signals ();
+ #if 0
+@@ -6382,6 +6383,7 @@
+ 	}	
+       QUIT;	/* catch any interrupts we got post-fork */
+       subshell_environment |= SUBSHELL_RESETTRAP;
++      subshell_environment &= ~SUBSHELL_IGNTRAP;
+     }
+ 
+ #if defined (JOB_CONTROL)
+diff -urN bash-5.1.8.orig/trap.c bash-5.1.8/trap.c
+--- bash-5.1.8.orig/trap.c	2021-12-21 12:57:08.083139502 +0100
++++ bash-5.1.8/trap.c	2021-12-21 12:58:27.764927470 +0100
+@@ -481,6 +481,32 @@
+       SIGRETURN (0);
+     }
+ 
++  /* This means we're in a subshell, but have not yet reset the handler for
++     trapped signals. We're not supposed to execute the trap in this situation;
++     we should restore the original signal and resend the signal to ourselves
++     to preserve the Posix "signal traps that are not being ignored shall be
++     set to the default action" semantics. */
++  if ((subshell_environment & SUBSHELL_IGNTRAP) && trap_list[sig] != (char *)IGNORE_SIG)
++    {
++      sigset_t mask;
++
++      /* Paranoia */
++      if (original_signals[sig] == IMPOSSIBLE_TRAP_HANDLER)
++	original_signals[sig] = SIG_DFL;
++
++      restore_signal (sig);
++
++      /* Make sure we let the signal we just caught through */
++      sigemptyset (&mask);
++      sigprocmask (SIG_SETMASK, (sigset_t *)NULL, &mask);
++      sigdelset (&mask, sig);
++      sigprocmask (SIG_SETMASK, &mask, (sigset_t *)NULL);
++
++      kill (getpid (), sig);
++
++      SIGRETURN (0);
++    }
++
+   if ((sig >= NSIG) ||
+       (trap_list[sig] == (char *)DEFAULT_SIG) ||
+       (trap_list[sig] == (char *)IGNORE_SIG))
+diff -urN bash-5.1.8.orig/y.tab.c bash-5.1.8/y.tab.c
+--- bash-5.1.8.orig/y.tab.c	2021-12-21 12:57:08.075139321 +0100
++++ bash-5.1.8/y.tab.c	2021-12-21 12:58:26.116890545 +0100
+@@ -8787,10 +8787,8 @@
+   old_expand_aliases = expand_aliases;
+ 
+   push_stream (1);
+-#if 0 /* TAG: bash-5.2 Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com> 11/17/2020 */
+   if (ea = expanding_alias ())
+     parser_save_alias ();
+-#endif
+   last_read_token = WORD;		/* WORD to allow reserved words here */
+   current_command_line_count = 0;
+   echo_input_at_read = expand_aliases = 0;
+@@ -8825,10 +8823,8 @@
+   last_read_token = '\n';
+   pop_stream ();
+ 
+-#if 0 /* TAG: bash-5.2 */
+   if (ea)
+     parser_restore_alias ();
+-#endif
+ 
+ #if defined (HISTORY)
+   remember_on_history = old_remember_on_history;
diff --git a/patches/bash-5.1.8/series b/patches/bash-5.1.8/series
new file mode 100644
index 000000000..0e53e492a
--- /dev/null
+++ b/patches/bash-5.1.8/series
@@ -0,0 +1 @@
+0001-Bash-5.1-patch-12.patch
diff --git a/rules/bash.make b/rules/bash.make
index bed121586..c46196f7f 100644
--- a/rules/bash.make
+++ b/rules/bash.make
@@ -13,8 +13,8 @@ PACKAGES-$(PTXCONF_BASH) += bash
 #
 # Paths and names
 #
-BASH_VERSION	:= 4.3.30
-BASH_MD5	:= a27b3ee9be83bd3ba448c0ff52b28447
+BASH_VERSION	:= 5.1.8
+BASH_MD5	:= 23eee6195b47318b9fd878e590ccb38c
 BASH		:= bash-$(BASH_VERSION)
 BASH_SUFFIX	:= tar.gz
 BASH_URL	:= $(call ptx/mirror, GNU, bash/$(BASH).$(BASH_SUFFIX))
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] bridge-utils: Version bump. 1.6 -> 1.7.1
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-21  7:18   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] curl: Version bump 7.77.0 -> 7.80.0 Christian Melki
                   ` (21 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Package maintenance.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 patches/{bridge-utils-1.6 => bridge-utils-1.7.1}/autogen.sh | 0
 rules/bridge-utils.make                                     | 6 +++---
 2 files changed, 3 insertions(+), 3 deletions(-)
 rename patches/{bridge-utils-1.6 => bridge-utils-1.7.1}/autogen.sh (100%)

diff --git a/patches/bridge-utils-1.6/autogen.sh b/patches/bridge-utils-1.7.1/autogen.sh
similarity index 100%
rename from patches/bridge-utils-1.6/autogen.sh
rename to patches/bridge-utils-1.7.1/autogen.sh
diff --git a/rules/bridge-utils.make b/rules/bridge-utils.make
index c0721759d..9034e6550 100644
--- a/rules/bridge-utils.make
+++ b/rules/bridge-utils.make
@@ -15,10 +15,10 @@ PACKAGES-$(PTXCONF_BRIDGE_UTILS) += bridge-utils
 #
 # Paths and names
 #
-BRIDGE_UTILS_VERSION	:= 1.6
-BRIDGE_UTILS_MD5	:= f369e90e85e4bb46baa26a7b9d66b578
+BRIDGE_UTILS_VERSION	:= 1.7.1
+BRIDGE_UTILS_MD5	:= 3e1fee4dc22cac5457c2f6ffb990a518
 BRIDGE_UTILS		:= bridge-utils-$(BRIDGE_UTILS_VERSION)
-BRIDGE_UTILS_SUFFIX	:= tar.gz
+BRIDGE_UTILS_SUFFIX	:= tar.xz
 BRIDGE_UTILS_URL	:= https://www.kernel.org/pub/linux/utils/net/bridge-utils/$(BRIDGE_UTILS).$(BRIDGE_UTILS_SUFFIX)
 BRIDGE_UTILS_SOURCE	:= $(SRCDIR)/$(BRIDGE_UTILS).$(BRIDGE_UTILS_SUFFIX)
 BRIDGE_UTILS_DIR	:= $(BUILDDIR)/$(BRIDGE_UTILS)
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] curl: Version bump 7.77.0 -> 7.80.0
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
  2021-12-22 13:02 ` [ptxdist] [PATCH] bridge-utils: Version bump. 1.6 -> 1.7.1 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] e2fsprogs: Version bump 1.46.2 -> 1.46.4 Christian Melki
                   ` (20 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Fixes CVE-2021-22947, CVE-2021-22946, CVE-2021-22945

Change tarball compression to xz instead of bz2.
Remove enable-symbol-hiding.
Rename get-easy-option to get-easy-options.
Remove without-metalink, deprecated.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/libcurl.make | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/rules/libcurl.make b/rules/libcurl.make
index 2e68e51ea..a9059e9e3 100644
--- a/rules/libcurl.make
+++ b/rules/libcurl.make
@@ -15,10 +15,10 @@ PACKAGES-$(PTXCONF_LIBCURL) += libcurl
 #
 # Paths and names
 #
-LIBCURL_VERSION	:= 7.77.0
-LIBCURL_MD5	:= 045d28029679dabb6b20a814934671ad
+LIBCURL_VERSION	:= 7.80.0
+LIBCURL_MD5	:= cf9f8553762150ef0ebcd5ee412737f5
 LIBCURL		:= curl-$(LIBCURL_VERSION)
-LIBCURL_SUFFIX	:= tar.bz2
+LIBCURL_SUFFIX	:= tar.xz
 LIBCURL_URL	:= https://curl.haxx.se/download/$(LIBCURL).$(LIBCURL_SUFFIX)
 LIBCURL_SOURCE	:= $(SRCDIR)/$(LIBCURL).$(LIBCURL_SUFFIX)
 LIBCURL_DIR	:= $(BUILDDIR)/$(LIBCURL)
@@ -40,7 +40,6 @@ LIBCURL_CONF_OPT	:= \
 	--disable-werror \
 	--disable-curldebug \
 	--enable-symbol-hiding \
-	--enable-hidden-symbols \
 	--$(call ptx/endis, PTXCONF_LIBCURL_C_ARES)-ares \
 	--enable-rt \
 	--disable-ech \
@@ -85,7 +84,7 @@ LIBCURL_CONF_OPT	:= \
 	--enable-netrc \
 	--enable-progress-meter \
 	--disable-dnsshuffle \
-	--enable-get-easy-option \
+	--enable-get-easy-options \
 	--disable-alt-svc \
 	--enable-hsts \
 	--without-schannel \
@@ -110,7 +109,6 @@ LIBCURL_CONF_OPT	:= \
 	--without-ca-fallback \
 	--without-libpsl \
 	--without-libgsasl \
-	--without-libmetalink \
 	--$(call ptx/wwo, PTXCONF_LIBCURL_LIBSSH2)-libssh2 \
 	--without-libssh \
 	--without-wolfssh \
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] e2fsprogs: Version bump 1.46.2 -> 1.46.4
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
  2021-12-22 13:02 ` [ptxdist] [PATCH] bridge-utils: Version bump. 1.6 -> 1.7.1 Christian Melki
  2021-12-22 13:02 ` [ptxdist] [PATCH] curl: Version bump 7.77.0 -> 7.80.0 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] ethtool: Version bump. 5.13 -> 5.15 Christian Melki
                   ` (19 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Package maintenance.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/e2fsprogs.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/e2fsprogs.make b/rules/e2fsprogs.make
index 31d3a76ab..8a153f3b2 100644
--- a/rules/e2fsprogs.make
+++ b/rules/e2fsprogs.make
@@ -15,8 +15,8 @@ PACKAGES-$(PTXCONF_E2FSPROGS) += e2fsprogs
 #
 # Paths and names
 #
-E2FSPROGS_VERSION	:= 1.46.2
-E2FSPROGS_MD5		:= e8ef5fa3b72557be5e9fe564a25da6eb
+E2FSPROGS_VERSION	:= 1.46.4
+E2FSPROGS_MD5		:= 128f5b0f0746b28d1e3ca7e263c57094
 E2FSPROGS		:= e2fsprogs-$(E2FSPROGS_VERSION)
 E2FSPROGS_SUFFIX	:= tar.gz
 E2FSPROGS_URL		:= $(call ptx/mirror, SF, e2fsprogs/e2fsprogs/v$(E2FSPROGS_VERSION)/$(E2FSPROGS).$(E2FSPROGS_SUFFIX))
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] ethtool: Version bump. 5.13 -> 5.15.
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (2 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] e2fsprogs: Version bump 1.46.2 -> 1.46.4 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] expat: Version bump 2.4.1 -> 2.4.2 Christian Melki
                   ` (18 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Package maintenance.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/ethtool.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/ethtool.make b/rules/ethtool.make
index 15aeca8dc..19d554893 100644
--- a/rules/ethtool.make
+++ b/rules/ethtool.make
@@ -15,8 +15,8 @@ PACKAGES-$(PTXCONF_ETHTOOL) += ethtool
 #
 # Paths and names
 #
-ETHTOOL_VERSION	:= 5.13
-ETHTOOL_MD5	:= 940bd6c330b9ebafaf40b3b428e56754
+ETHTOOL_VERSION	:= 5.15
+ETHTOOL_MD5	:= 967f92926a453d3eb9bf41f73223f173
 ETHTOOL_SUFFIX	:= tar.xz
 ETHTOOL		:= ethtool-$(ETHTOOL_VERSION)
 ETHTOOL_URL	:= $(call ptx/mirror, KERNEL, ../software/network/ethtool/$(ETHTOOL).$(ETHTOOL_SUFFIX))
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] expat: Version bump 2.4.1 -> 2.4.2
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (3 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] ethtool: Version bump. 5.13 -> 5.15 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] host-libcap: BUILD_GPERF is reserved Christian Melki
                   ` (17 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Package maintenance.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/expat.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/expat.make b/rules/expat.make
index e486a85ac..1fa8221fc 100644
--- a/rules/expat.make
+++ b/rules/expat.make
@@ -16,8 +16,8 @@ PACKAGES-$(PTXCONF_EXPAT) += expat
 #
 # Paths and names
 #
-EXPAT_VERSION	:= 2.4.1
-EXPAT_MD5	:= 476cdf4b5e40280316fff36b2086a390
+EXPAT_VERSION	:= 2.4.2
+EXPAT_MD5	:= 58780ad6944d02f6cf6ba332838694b2
 EXPAT		:= expat-$(EXPAT_VERSION)
 EXPAT_SUFFIX	:= tar.bz2
 EXPAT_URL	:= $(call ptx/mirror, SF, expat/$(EXPAT).$(EXPAT_SUFFIX))
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] host-libcap: BUILD_GPERF is reserved.
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (4 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] expat: Version bump 2.4.1 -> 2.4.2 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-05 12:18   ` Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] iptables: Version bump 1.8.3 -> 1.8.7 Christian Melki
                   ` (16 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Use USE_GPERF instead.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/host-libcap.make | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/rules/host-libcap.make b/rules/host-libcap.make
index 2faae99c3..695ce6c44 100644
--- a/rules/host-libcap.make
+++ b/rules/host-libcap.make
@@ -19,7 +19,7 @@ HOST_PACKAGES-$(PTXCONF_HOST_LIBCAP) += host-libcap
 HOST_LIBCAP_MAKE_OPT := \
 	prefix= \
 	lib=lib \
-	BUILD_GPERF=no \
+	USE_GPERF=no \
 	PAM_CAP=no \
 	GOLANG=no \
 	LIBATTR=no \
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] iptables: Version bump 1.8.3 -> 1.8.7
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (5 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] host-libcap: BUILD_GPERF is reserved Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-06  7:10   ` Michael Olbrich
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] jimtcl: Verison bump 0.80 -> 0.81 Christian Melki
                   ` (15 subsequent siblings)
  22 siblings, 2 replies; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Package maintenance.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/iptables.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/iptables.make b/rules/iptables.make
index 6a2449bce..994cc0898 100644
--- a/rules/iptables.make
+++ b/rules/iptables.make
@@ -19,8 +19,8 @@ PACKAGES-$(PTXCONF_IPTABLES) += iptables
 #
 # Paths and names
 #
-IPTABLES_VERSION	:= 1.8.3
-IPTABLES_MD5		:= 29de711d15c040c402cf3038c69ff513
+IPTABLES_VERSION	:= 1.8.7
+IPTABLES_MD5		:= 602ba7e937c72fbb7b1c2b71c3b0004b
 IPTABLES		:= iptables-$(IPTABLES_VERSION)
 IPTABLES_SUFFIX		:= tar.bz2
 IPTABLES_URL		:= http://ftp.netfilter.org/pub/iptables/$(IPTABLES).$(IPTABLES_SUFFIX)
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] jimtcl: Verison bump 0.80 -> 0.81
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (6 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] iptables: Version bump 1.8.3 -> 1.8.7 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] libcap-ng: Version bump 0.7.10 -> 0.8.2 Christian Melki
                   ` (14 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Package maintenance.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/jimtcl.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/jimtcl.make b/rules/jimtcl.make
index f0e6df7db..54029f895 100644
--- a/rules/jimtcl.make
+++ b/rules/jimtcl.make
@@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_JIMTCL) += jimtcl
 #
 # Paths and names
 #
-JIMTCL_VERSION	:= 0.80
-JIMTCL_MD5	:= 4e437ade61b069d2d638e959c8f26bd0
+JIMTCL_VERSION	:= 0.81
+JIMTCL_MD5	:= a6d232ed12f47c28b56c97a955448e34
 JIMTCL		:= jimtcl-$(JIMTCL_VERSION)
 JIMTCL_SUFFIX	:= tar.gz
 JIMTCL_URL	:= https://github.com/msteveb/jimtcl/archive/refs/tags/$(JIMTCL_VERSION).$(JIMTCL_SUFFIX)
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] libcap-ng: Version bump 0.7.10 -> 0.8.2
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (7 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] jimtcl: Verison bump 0.80 -> 0.81 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] libcap: Version bump 2.51 -> 2.62 Christian Melki
                   ` (13 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Update ng posix capability library.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/libcap-ng.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/libcap-ng.make b/rules/libcap-ng.make
index f4b605e05..ccd650b79 100644
--- a/rules/libcap-ng.make
+++ b/rules/libcap-ng.make
@@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_LIBCAP_NG) += libcap-ng
 #
 # Paths and names
 #
-LIBCAP_NG_VERSION	:= 0.7.10
-LIBCAP_NG_MD5		:= 57dc267e2949cdecb651a929f9206572
+LIBCAP_NG_VERSION	:= 0.8.2
+LIBCAP_NG_MD5		:= faf1ef766cf068ad1aba4008ced665f7
 LIBCAP_NG		:= libcap-ng-$(LIBCAP_NG_VERSION)
 LIBCAP_NG_SUFFIX	:= tar.gz
 LIBCAP_NG_URL		:= http://people.redhat.com/sgrubb/libcap-ng/$(LIBCAP_NG).$(LIBCAP_NG_SUFFIX)
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] libcap: Version bump 2.51 -> 2.62.
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (8 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] libcap-ng: Version bump 0.7.10 -> 0.8.2 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-05 12:21   ` Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] libffi: Version bump 3.3 -> 3.4.2 Christian Melki
                   ` (12 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Update posix capability library.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/libcap.make | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/rules/libcap.make b/rules/libcap.make
index 5ed11b1f3..3159f7b01 100644
--- a/rules/libcap.make
+++ b/rules/libcap.make
@@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_LIBCAP) += libcap
 #
 # Paths and names
 #
-LIBCAP_VERSION	:= 2.51
-LIBCAP_MD5	:= 4c9febc1bf0afca6a4d9f86fcdb6d900
+LIBCAP_VERSION	:= 2.62
+LIBCAP_MD5	:= 342c7560ed2103899f6914d1de75a89f
 LIBCAP		:= libcap-$(LIBCAP_VERSION)
 LIBCAP_SUFFIX	:= tar.xz
 LIBCAP_URL	:= \
@@ -35,6 +35,7 @@ LIBCAP_MAKE_OPT	:= \
 	BUILD_CC=$(HOSTCC) \
 	DYNAMIC=yes \
 	GOLANG=no \
+	USE_GPERF=no \
 	LIBATTR=$(call ptx/yesno, PTXCONF_LIBCAP_SETCAP) \
 	PAM_CAP=$(call ptx/yesno, PTXCONF_GLOBAL_PAM)
 
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] libffi: Version bump 3.3 -> 3.4.2
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (9 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] libcap: Version bump 2.51 -> 2.62 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] libjpeg: Version bump 2.1.0 -> 2.1.2 Christian Melki
                   ` (11 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Maintenance of the foregin function interface library.
Fix peculiar packageconfig manipulation.
Patches adapted from buildroot and yoctoproject.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 ...sed-ifndef-for-__mips_soft_float-442.patch | 25 -------------
 ...uild-failure-on-power7-and-older-532.patch | 35 -------------------
 patches/libffi-3.3/series                     |  6 ----
 ...on-of-libraries-for-multilib-toolch.patch} |  0
 patches/libffi-3.4.2/0002-not-win32.patch     | 35 +++++++++++++++++++
 .../{libffi-3.3 => libffi-3.4.2}/autogen.sh   |  0
 patches/libffi-3.4.2/series                   |  2 ++
 rules/libffi.make                             |  6 ++--
 8 files changed, 40 insertions(+), 69 deletions(-)
 delete mode 100644 patches/libffi-3.3/0001-Fixed-missed-ifndef-for-__mips_soft_float-442.patch
 delete mode 100644 patches/libffi-3.3/0002-powerpc-fix-build-failure-on-power7-and-older-532.patch
 delete mode 100644 patches/libffi-3.3/series
 rename patches/{libffi-3.3/0003-libffi-Fix-location-of-libraries-for-multilib-toolch.patch => libffi-3.4.2/0001-libffi-Fix-location-of-libraries-for-multilib-toolch.patch} (100%)
 create mode 100644 patches/libffi-3.4.2/0002-not-win32.patch
 rename patches/{libffi-3.3 => libffi-3.4.2}/autogen.sh (100%)
 create mode 100644 patches/libffi-3.4.2/series

diff --git a/patches/libffi-3.3/0001-Fixed-missed-ifndef-for-__mips_soft_float-442.patch b/patches/libffi-3.3/0001-Fixed-missed-ifndef-for-__mips_soft_float-442.patch
deleted file mode 100644
index fae0a0e7d..000000000
--- a/patches/libffi-3.3/0001-Fixed-missed-ifndef-for-__mips_soft_float-442.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From: Carl Hurd <carl.m.hurd@gmail.com>
-Date: Fri, 29 Nov 2019 14:46:11 -0500
-Subject: [PATCH] Fixed missed #ifndef for __mips_soft_float (#442)
-
-Thank you!
----
- src/mips/o32.S | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/mips/o32.S b/src/mips/o32.S
-index 44e74cb91a21..799139b2968b 100644
---- a/src/mips/o32.S
-+++ b/src/mips/o32.S
-@@ -282,9 +282,11 @@ $LCFI12:
- 	li	$13, 1		# FFI_O32
- 	bne	$16, $13, 1f	# Skip fp save if FFI_O32_SOFT_FLOAT
- 	
-+#ifndef __mips_soft_float
- 	# Store all possible float/double registers.
- 	s.d	$f12, FA_0_0_OFF2($fp)
- 	s.d	$f14, FA_1_0_OFF2($fp)
-+#endif
- 1:
- 	# prepare arguments for ffi_closure_mips_inner_O32
- 	REG_L	a0, 4($15)	 # cif 
diff --git a/patches/libffi-3.3/0002-powerpc-fix-build-failure-on-power7-and-older-532.patch b/patches/libffi-3.3/0002-powerpc-fix-build-failure-on-power7-and-older-532.patch
deleted file mode 100644
index aa2487c29..000000000
--- a/patches/libffi-3.3/0002-powerpc-fix-build-failure-on-power7-and-older-532.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From: Sergei Trofimovich <slyfox@gentoo.org>
-Date: Thu, 28 Nov 2019 12:42:41 +0000
-Subject: [PATCH] powerpc: fix build failure on power7 and older (#532)
-
-Build failure looks as:
-```
-libtool: compile:  powerpc-unknown-linux-gnu-gcc \
-    -O2 -mcpu=powerpc -mtune=powerpc -pipe ... -c src/powerpc/ffi.c ...
-In file included from src/powerpc/ffi.c:33:
-src/powerpc/ffi_powerpc.h:65:9: error: '__int128' is not supported on this target
-   65 | typedef __int128 float128;
-      |         ^~~~~~~~
-```
-
-The fix avoids using __int128 in favour of aligned char[16].
-
-Closes: https://github.com/libffi/libffi/issues/531
-Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
----
- src/powerpc/ffi_powerpc.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/powerpc/ffi_powerpc.h b/src/powerpc/ffi_powerpc.h
-index 5ee2a7095a6a..8e2f2f0e74a3 100644
---- a/src/powerpc/ffi_powerpc.h
-+++ b/src/powerpc/ffi_powerpc.h
-@@ -62,7 +62,7 @@ typedef _Float128 float128;
- #elif defined(__FLOAT128__)
- typedef __float128 float128;
- #else
--typedef __int128 float128;
-+typedef char float128[16] __attribute__((aligned(16)));
- #endif
- 
- void FFI_HIDDEN ffi_closure_SYSV (void);
diff --git a/patches/libffi-3.3/series b/patches/libffi-3.3/series
deleted file mode 100644
index 83b0b511d..000000000
--- a/patches/libffi-3.3/series
+++ /dev/null
@@ -1,6 +0,0 @@
-# generated by git-ptx-patches
-#tag:base --start-number 1
-0001-Fixed-missed-ifndef-for-__mips_soft_float-442.patch
-0002-powerpc-fix-build-failure-on-power7-and-older-532.patch
-0003-libffi-Fix-location-of-libraries-for-multilib-toolch.patch
-# 9afbef7cf862f28908b007f73dce1db0  - git-ptx-patches magic
diff --git a/patches/libffi-3.3/0003-libffi-Fix-location-of-libraries-for-multilib-toolch.patch b/patches/libffi-3.4.2/0001-libffi-Fix-location-of-libraries-for-multilib-toolch.patch
similarity index 100%
rename from patches/libffi-3.3/0003-libffi-Fix-location-of-libraries-for-multilib-toolch.patch
rename to patches/libffi-3.4.2/0001-libffi-Fix-location-of-libraries-for-multilib-toolch.patch
diff --git a/patches/libffi-3.4.2/0002-not-win32.patch b/patches/libffi-3.4.2/0002-not-win32.patch
new file mode 100644
index 000000000..62daaf4b3
--- /dev/null
+++ b/patches/libffi-3.4.2/0002-not-win32.patch
@@ -0,0 +1,35 @@
+From 306719369a0d3608b4ff2737de74ae284788a14b Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Thu, 4 Feb 2016 16:22:50 +0000
+Subject: [PATCH] libffi: ensure sysroot paths are not in libffi.pc
+
+libffi's configure assumes that cross-compiled builds are complicated and
+introduces convoluted path manipulation involving gcc search paths to the
+install paths, resulting in paths like -L/usr/lib/../lib/ appearing in
+libffi.pc.  When pkg-config is then used to obtain the linker flags for libffi
+it can't tell that this path is on the default search path and returns
+$SYSROOT/usr/lib/../lib which then gets written all over the target sysroot.
+This then means the sstate can't be shared and triggers QA errors.
+
+As this block is generally pointless, disable it.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index b764368..d51ce91 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -354,7 +354,7 @@ AC_ARG_ENABLE(multi-os-directory,
+                           
+ # These variables are only ever used when we cross-build to X86_WIN32.
+ # And we only support this with GCC, so...
+-if test "x$GCC" = "xyes"; then
++if false; then
+   if test -n "$with_cross_host" &&
+      test x"$with_cross_host" != x"no"; then
+     toolexecdir='${exec_prefix}'/'$(target_alias)'
diff --git a/patches/libffi-3.3/autogen.sh b/patches/libffi-3.4.2/autogen.sh
similarity index 100%
rename from patches/libffi-3.3/autogen.sh
rename to patches/libffi-3.4.2/autogen.sh
diff --git a/patches/libffi-3.4.2/series b/patches/libffi-3.4.2/series
new file mode 100644
index 000000000..493d7a3c2
--- /dev/null
+++ b/patches/libffi-3.4.2/series
@@ -0,0 +1,2 @@
+0001-libffi-Fix-location-of-libraries-for-multilib-toolch.patch
+0002-not-win32.patch
diff --git a/rules/libffi.make b/rules/libffi.make
index 1feab4bdc..b22dd266a 100644
--- a/rules/libffi.make
+++ b/rules/libffi.make
@@ -15,14 +15,14 @@ PACKAGES-$(PTXCONF_LIBFFI) += libffi
 #
 # Paths and names
 #
-LIBFFI_VERSION	:= 3.3
-LIBFFI_MD5	:= 6313289e32f1d38a9df4770b014a2ca7
+LIBFFI_VERSION	:= 3.4.2
+LIBFFI_MD5	:= 294b921e6cf9ab0fbaea4b639f8fdbe8
 LIBFFI		:= libffi-$(LIBFFI_VERSION)
 LIBFFI_SUFFIX	:= tar.gz
 LIBFFI_SOURCE	:= $(SRCDIR)/$(LIBFFI).$(LIBFFI_SUFFIX)
 LIBFFI_DIR	:= $(BUILDDIR)/$(LIBFFI)
 LIBFFI_URL	:= \
-	http://ftp.gwdg.de/pub/linux/sources.redhat.com/libffi/$(LIBFFI).$(LIBFFI_SUFFIX) \
+	https://github.com/libffi/libffi/releases/download/v$(LIBFFI_VERSION)/$(LIBFFI).$(LIBFFI_SUFFIX) \
 	ftp://sourceware.org/pub/libffi/$(LIBFFI).$(LIBFFI_SUFFIX)
 LIBFFI_LICENSE	:= MIT
 
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] libjpeg: Version bump 2.1.0 -> 2.1.2
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (10 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] libffi: Version bump 3.3 -> 3.4.2 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] libmbim: Version bump 1.24.2 -> 1.26.2 Christian Melki
                   ` (10 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Fixes CVE-2021-37972.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/libjpeg.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/libjpeg.make b/rules/libjpeg.make
index 7b05d6953..559a6d08d 100644
--- a/rules/libjpeg.make
+++ b/rules/libjpeg.make
@@ -16,8 +16,8 @@ PACKAGES-$(PTXCONF_LIBJPEG) += libjpeg
 #
 # Paths and names
 #
-LIBJPEG_VERSION	:= 2.1.0
-LIBJPEG_MD5	:= be306afc2d2ebd6931b634df0e8cbaf5
+LIBJPEG_VERSION	:= 2.1.2
+LIBJPEG_MD5	:= e181bd78884dd5392a869209bfa41d4a
 LIBJPEG_SUFFIX	:= tar.gz
 LIBJPEG		:= libjpeg-turbo-$(LIBJPEG_VERSION)
 LIBJPEG_TARBALL	:= $(LIBJPEG).$(LIBJPEG_SUFFIX)
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] libmbim: Version bump 1.24.2 -> 1.26.2
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (11 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] libjpeg: Version bump 2.1.0 -> 2.1.2 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] libseccomp: Version bump 2.5.1 -> 2.5.3 Christian Melki
                   ` (9 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Package maintenance.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/libmbim.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/libmbim.make b/rules/libmbim.make
index 1d7ac7deb..ba9941653 100644
--- a/rules/libmbim.make
+++ b/rules/libmbim.make
@@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_LIBMBIM) += libmbim
 #
 # Paths and names
 #
-LIBMBIM_VERSION	:= 1.24.2
-LIBMBIM_MD5	:= 6c2b490af87773c8446f37536e7411ac
+LIBMBIM_VERSION	:= 1.26.2
+LIBMBIM_MD5	:= 8893edbfd16e1198c018277cd2ad487e
 LIBMBIM		:= libmbim-$(LIBMBIM_VERSION)
 LIBMBIM_SUFFIX	:= tar.xz
 LIBMBIM_URL	:= http://www.freedesktop.org/software/libmbim/$(LIBMBIM).$(LIBMBIM_SUFFIX)
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] libseccomp: Version bump 2.5.1 -> 2.5.3.
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (12 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] libmbim: Version bump 1.24.2 -> 1.26.2 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-06 10:56   ` Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] libunwind: Version bump 1.5.0 -> 1.6.2 Christian Melki
                   ` (8 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Package maintenance.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/libseccomp.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/libseccomp.make b/rules/libseccomp.make
index 9eb54245c..5a6f45f1c 100644
--- a/rules/libseccomp.make
+++ b/rules/libseccomp.make
@@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_LIBSECCOMP) += libseccomp
 #
 # Paths and names
 #
-LIBSECCOMP_VERSION	:= 2.5.1
-LIBSECCOMP_MD5		:= 59f5563c532d3fa1df9db0516b36b1cd
+LIBSECCOMP_VERSION	:= 2.5.3
+LIBSECCOMP_MD5		:= 5096d3912a605a72b27805fa0ef9886d
 LIBSECCOMP		:= libseccomp-$(LIBSECCOMP_VERSION)
 LIBSECCOMP_SUFFIX	:= tar.gz
 LIBSECCOMP_URL		:= https://github.com/seccomp/libseccomp/releases/download/v$(LIBSECCOMP_VERSION)/$(LIBSECCOMP).$(LIBSECCOMP_SUFFIX)
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] libunwind: Version bump 1.5.0 -> 1.6.2
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (13 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] libseccomp: Version bump 2.5.1 -> 2.5.3 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] openssh: Version bump 8.6p1 -> 8.8p1 Christian Melki
                   ` (7 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Update libunwind (mostly graphics related dependencies),
for SDL2 etc.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/libunwind.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/libunwind.make b/rules/libunwind.make
index 27e8b3534..71286acd9 100644
--- a/rules/libunwind.make
+++ b/rules/libunwind.make
@@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_LIBUNWIND) += libunwind
 #
 # Paths and names
 #
-LIBUNWIND_VERSION	:= 1.5.0
-LIBUNWIND_MD5		:= c6923dda0675f6a4ef21426164dc8b6a
+LIBUNWIND_VERSION	:= 1.6.2
+LIBUNWIND_MD5		:= f625b6a98ac1976116c71708a73dc44a
 LIBUNWIND		:= libunwind-$(LIBUNWIND_VERSION)
 LIBUNWIND_SUFFIX	:= tar.gz
 LIBUNWIND_URL		:= http://download.savannah.gnu.org/releases/libunwind/$(LIBUNWIND).$(LIBUNWIND_SUFFIX)
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] openssh: Version bump 8.6p1 -> 8.8p1
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (14 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] libunwind: Version bump 1.5.0 -> 1.6.2 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:02 ` [ptxdist] [PATCH] screen: Version bump 4.5.0 -> 4.8.0 Christian Melki
                   ` (6 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Package update.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/openssh.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/openssh.make b/rules/openssh.make
index 8c083a11c..c801d8a6a 100644
--- a/rules/openssh.make
+++ b/rules/openssh.make
@@ -15,8 +15,8 @@ PACKAGES-$(PTXCONF_OPENSSH) += openssh
 #
 # Paths and names
 #
-OPENSSH_VERSION	:= 8.6p1
-OPENSSH_MD5	:= 805f7048aec6dd752584e570383a6f00
+OPENSSH_VERSION	:= 8.8p1
+OPENSSH_MD5	:= 8ce5f390958baeeab635aafd0ef41453
 OPENSSH		:= openssh-$(OPENSSH_VERSION)
 OPENSSH_SUFFIX	:= tar.gz
 OPENSSH_URL	:= \
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] screen: Version bump 4.5.0 -> 4.8.0
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (15 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] openssh: Version bump 8.6p1 -> 8.8p1 Christian Melki
@ 2021-12-22 13:02 ` Christian Melki
  2022-01-06 10:55   ` Michael Olbrich
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:03 ` [ptxdist] [PATCH] strace: Version bump 5.9 -> 5.15 Christian Melki
                   ` (5 subsequent siblings)
  22 siblings, 2 replies; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:02 UTC (permalink / raw)
  To: ptxdist

Package maintenance.
Fixes CVE-2021-26937, CVE-2020-9366, CVE-2017-5618

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 .../0001-no-memcpy-fallback.patch             | 126 ++++++++++++++++
 .../0002-install-no-backup-binary.patch       |  41 +++++
 .../0003-install-always-chmod.patch           |  29 ++++
 .../0004-install-nonversioned-binary.patch    |  31 ++++
 .../screen-4.8.0/0005-rename-sched_h.patch    | 142 ++++++++++++++++++
 .../0006-comm-h-now-depends-on-term-h.patch   |  28 ++++
 ...-needed-for-list_-display-generic-.o.patch |  35 +++++
 .../screen-4.8.0/0008-CVE-2021-26937.patch    |  68 +++++++++
 patches/screen-4.8.0/series                   |   9 ++
 rules/screen.make                             |   4 +-
 10 files changed, 511 insertions(+), 2 deletions(-)
 create mode 100644 patches/screen-4.8.0/0001-no-memcpy-fallback.patch
 create mode 100644 patches/screen-4.8.0/0002-install-no-backup-binary.patch
 create mode 100644 patches/screen-4.8.0/0003-install-always-chmod.patch
 create mode 100644 patches/screen-4.8.0/0004-install-nonversioned-binary.patch
 create mode 100644 patches/screen-4.8.0/0005-rename-sched_h.patch
 create mode 100644 patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch
 create mode 100644 patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch
 create mode 100644 patches/screen-4.8.0/0008-CVE-2021-26937.patch
 create mode 100644 patches/screen-4.8.0/series

diff --git a/patches/screen-4.8.0/0001-no-memcpy-fallback.patch b/patches/screen-4.8.0/0001-no-memcpy-fallback.patch
new file mode 100644
index 000000000..213790719
--- /dev/null
+++ b/patches/screen-4.8.0/0001-no-memcpy-fallback.patch
@@ -0,0 +1,126 @@
+From: Maarten ter Huurne <maarten@treewalker.org>
+Date: Sat, 13 Sep 2014 11:37:59 +0200
+Subject: Do not use memcpy as an alternative for bcopy/memmove
+
+The configure script runs a small test program to check whether
+memcpy can handle overlapping memory areas. However, it is not valid
+to conclude that if a single case of overlapping memory is handled
+correctly, all cases will be handled correctly.
+
+Since screen already has its own bcopy implementation as a fallback
+for the case that bcopy and memmove are unusable, removing the memcpy
+option should not break any systems.
+
+Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
+[Ricardo: rebase on top of 4.3.1]
+Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
+[Bernd: rebase on top of 4.7.0]
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+---
+ acconfig.h   |  3 +--
+ configure.ac | 18 +-----------------
+ os.h         |  8 ++------
+ osdef.h.in   | 10 +---------
+ 4 files changed, 5 insertions(+), 34 deletions(-)
+
+diff --git a/acconfig.h b/acconfig.h
+index 2e46985..9b0b9d4 100644
+--- a/acconfig.h
++++ b/acconfig.h
+@@ -476,7 +476,7 @@
+ #undef GETTTYENT
+ 
+ /*
+- * Define USEBCOPY if the bcopy/memcpy from your system's C library
++ * Define USEBCOPY if the bcopy from your system's C library
+  * supports the overlapping of source and destination blocks.  When
+  * undefined, screen uses its own (probably slower) version of bcopy().
+  * 
+@@ -487,7 +487,6 @@
+  * Their memove fails the test in the configure script. Sigh. (Juergen)
+  */
+ #undef USEBCOPY
+-#undef USEMEMCPY
+ #undef USEMEMMOVE
+ 
+ /*
+diff --git a/configure.ac b/configure.ac
+index 27690a6..b8e3bec 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1145,7 +1145,7 @@ AC_TRY_LINK(,[getttyent();], AC_DEFINE(GETTTYENT))
+ AC_CHECKING(fdwalk)
+ AC_TRY_LINK([#include <stdlib.h>], [fdwalk(NULL, NULL);],AC_DEFINE(HAVE_FDWALK))
+ 
+-AC_CHECKING(whether memcpy/memmove/bcopy handles overlapping arguments)
++AC_CHECKING(whether memmove/bcopy handles overlapping arguments)
+ AC_TRY_RUN([
+ main() {
+   char buf[10];
+@@ -1175,22 +1175,6 @@ main() {
+   exit(0); /* libc version works properly.  */
+ }], AC_DEFINE(USEMEMMOVE))
+ 
+-
+-AC_TRY_RUN([
+-#define bcopy(s,d,l) memcpy(d,s,l)
+-main() {
+-  char buf[10];
+-  strcpy(buf, "abcdefghi");
+-  bcopy(buf, buf + 2, 3);
+-  if (strncmp(buf, "ababcf", 6))
+-    exit(1);
+-  strcpy(buf, "abcdefghi");
+-  bcopy(buf + 2, buf, 3);
+-  if (strncmp(buf, "cdedef", 6))
+-    exit(1);
+-  exit(0); /* libc version works properly.  */
+-}], AC_DEFINE(USEMEMCPY),,:)
+-
+ AC_SYS_LONG_FILE_NAMES
+ 
+ AC_MSG_CHECKING(for vsprintf)
+diff --git a/os.h b/os.h
+index e827ac9..0b41fb9 100644
+--- a/os.h
++++ b/os.h
+@@ -142,12 +142,8 @@ extern int errno;
+ # ifdef USEMEMMOVE
+ #  define bcopy(s,d,len) memmove(d,s,len)
+ # else
+-#  ifdef USEMEMCPY
+-#   define bcopy(s,d,len) memcpy(d,s,len)
+-#  else
+-#   define NEED_OWN_BCOPY
+-#   define bcopy xbcopy
+-#  endif
++#  define NEED_OWN_BCOPY
++#  define bcopy xbcopy
+ # endif
+ #endif
+ 
+diff --git a/osdef.h.in b/osdef.h.in
+index 8687b60..e4057a0 100644
+--- a/osdef.h.in
++++ b/osdef.h.in
+@@ -58,16 +58,8 @@ extern int   bcmp __P((char *, char *, int));
+ extern int   killpg __P((int, int));
+ #endif
+ 
+-#ifndef USEBCOPY
+-# ifdef USEMEMCPY
+-extern void  memcpy __P((char *, char *, int));
+-# else
+-#  ifdef USEMEMMOVE
++#if defined(USEMEMMOVE) && !defined(USEBCOPY)
+ extern void  memmove __P((char *, char *, int));
+-#  else
+-extern void  bcopy __P((char *, char *, int));
+-#  endif
+-# endif
+ #else
+ extern void  bcopy __P((char *, char *, int));
+ #endif
+-- 
+1.8.4.5
+
diff --git a/patches/screen-4.8.0/0002-install-no-backup-binary.patch b/patches/screen-4.8.0/0002-install-no-backup-binary.patch
new file mode 100644
index 000000000..7842662b5
--- /dev/null
+++ b/patches/screen-4.8.0/0002-install-no-backup-binary.patch
@@ -0,0 +1,41 @@
+From: Maarten ter Huurne <maarten@treewalker.org>
+Date: Sun, 14 Sep 2014 23:58:34 +0200
+Subject: Do not create backup of old installed binary
+
+This is a rather unusual feature that packagers will not expect.
+
+Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
+[baruch: update for 4.6.2]
+Signed-off-by: Baruch Siach <baruch@tkos.co.il>
+---
+ Makefile.in | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 187a69b..65549e9 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -83,12 +83,9 @@ screen: $(OFILES)
+ 	    $(OPTIONS) $(CFLAGS) $<
+ 
+ install_bin: .version screen installdirs
+-	-if [ -f $(DESTDIR)$(bindir)/$(SCREEN) ] && [ ! -f $(DESTDIR)$(bindir)/$(SCREEN).old ]; \
+-		then mv $(DESTDIR)$(bindir)/$(SCREEN) $(DESTDIR)$(bindir)/$(SCREEN).old; fi
+ 	$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)
+ 	-chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
+ # This doesn't work if $(bindir)/screen is a symlink
+-	-if [ -f $(DESTDIR)$(bindir)/screen ] && [ ! -f $(DESTDIR)$(bindir)/screen.old ]; then mv $(DESTDIR)$(bindir)/screen $(DESTDIR)$(bindir)/screen.old; fi
+ 	rm -f $(DESTDIR)$(bindir)/screen
+ 	(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)
+ 	cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS)
+@@ -113,7 +110,6 @@ installdirs:
+ uninstall: .version
+ 	rm -f $(DESTDIR)$(bindir)/$(SCREEN)
+ 	rm -f $(DESTDIR)$(bindir)/screen
+-	-mv $(DESTDIR)$(bindir)/screen.old $(DESTDIR)$(bindir)/screen
+ 	rm -f $(DESTDIR)$(ETCSCREENRC)
+ 	cd doc; $(MAKE) uninstall
+ 
+-- 
+1.8.4.5
+
diff --git a/patches/screen-4.8.0/0003-install-always-chmod.patch b/patches/screen-4.8.0/0003-install-always-chmod.patch
new file mode 100644
index 000000000..0aa7690b0
--- /dev/null
+++ b/patches/screen-4.8.0/0003-install-always-chmod.patch
@@ -0,0 +1,29 @@
+From: Maarten ter Huurne <maarten@treewalker.org>
+Date: Mon, 15 Sep 2014 00:03:05 +0200
+Subject: Change binary permission flags even if chown fails
+
+Typically when creating a package, the build is not run as root, so
+the chown will fail. But the chmod can still be done.
+
+Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
+---
+ Makefile.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 65549e9..3c12fdb 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -84,7 +84,8 @@ screen: $(OFILES)
+ 
+ install_bin: .version screen
+ 	$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)
+-	-chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
++	-chown root $(DESTDIR)$(bindir)/$(SCREEN)
++	-chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
+ # This doesn't work if $(bindir)/screen is a symlink
+ 	rm -f $(DESTDIR)$(bindir)/screen
+ 	(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)
+-- 
+1.8.4.5
+
diff --git a/patches/screen-4.8.0/0004-install-nonversioned-binary.patch b/patches/screen-4.8.0/0004-install-nonversioned-binary.patch
new file mode 100644
index 000000000..ecbbd6519
--- /dev/null
+++ b/patches/screen-4.8.0/0004-install-nonversioned-binary.patch
@@ -0,0 +1,31 @@
+From: Maarten ter Huurne <maarten@treewalker.org>
+Date: Mon, 15 Sep 2014 00:06:20 +0200
+Subject: Support overriding SCREEN to get a non-versioned binary
+
+If a packager runs "make install SCREEN=screen", do not create
+"screen" as a symlink to itself.
+
+Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
+---
+ Makefile.in | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/Makefile.in b/Makefile.in
+index 3c12fdb..860f351 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -86,9 +86,11 @@ install_bin: .version screen
+ 	$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)
+ 	-chown root $(DESTDIR)$(bindir)/$(SCREEN)
+ 	-chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
++ifneq (${SCREEN},screen)
+ # This doesn't work if $(bindir)/screen is a symlink
+ 	rm -f $(DESTDIR)$(bindir)/screen
+ 	(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)
++endif
+ 	cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS)
+ 
+ ###############################################################################
+-- 
+1.8.4.5
+
diff --git a/patches/screen-4.8.0/0005-rename-sched_h.patch b/patches/screen-4.8.0/0005-rename-sched_h.patch
new file mode 100644
index 000000000..9b29b76e0
--- /dev/null
+++ b/patches/screen-4.8.0/0005-rename-sched_h.patch
@@ -0,0 +1,142 @@
+From: Maarten ter Huurne <maarten@treewalker.org>
+Date: Mon, 15 Sep 2014 00:24:41 +0200
+Subject: Renamed sched.h to eventqueue.h
+
+There is a <sched.h> system header that got shadowed by "sched.h".
+While Screen itself doesn't include <sched.h>, other system headers
+might include it indirectly. This broke the build when using uClibc
+with pthread support.
+
+Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
+---
+ eventqueue.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
+ sched.h      | 48 ------------------------------------------------
+ screen.h     |  2 +-
+ 3 files changed, 49 insertions(+), 49 deletions(-)
+ create mode 100644 eventqueue.h
+ delete mode 100644 sched.h
+
+diff --git a/eventqueue.h b/eventqueue.h
+new file mode 100644
+index 0000000..fdc3fc4
+--- /dev/null
++++ b/eventqueue.h
+@@ -0,0 +1,48 @@
++/* Copyright (c) 2008, 2009
++ *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
++ *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
++ *      Micah Cowan (micah@cowan.name)
++ *      Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
++ * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
++ *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
++ *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
++ * Copyright (c) 1987 Oliver Laumann
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3, or (at your option)
++ * any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program (see the file COPYING); if not, see
++ * https://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,
++ * 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
++ *
++ ****************************************************************
++ * $Id$ GNU
++ */
++
++struct event
++{
++  struct event *next;
++  void (*handler) __P((struct event *, char *));
++  char *data;
++  int fd;
++  int type;
++  int pri;
++  struct timeval timeout;
++  int queued;		/* in evs queue */
++  int active;		/* in fdset */
++  int *condpos;		/* only active if condpos - condneg > 0 */
++  int *condneg;
++};
++
++#define EV_TIMEOUT	0
++#define EV_READ		1
++#define EV_WRITE	2
++#define EV_ALWAYS	3
+diff --git a/sched.h b/sched.h
+deleted file mode 100644
+index fdc3fc4..0000000
+--- a/sched.h
++++ /dev/null
+@@ -1,48 +0,0 @@
+-/* Copyright (c) 2008, 2009
+- *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
+- *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
+- *      Micah Cowan (micah@cowan.name)
+- *      Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
+- * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
+- *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
+- *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
+- * Copyright (c) 1987 Oliver Laumann
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3, or (at your option)
+- * any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program (see the file COPYING); if not, see
+- * https://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,
+- * 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+- *
+- ****************************************************************
+- * $Id$ GNU
+- */
+-
+-struct event
+-{
+-  struct event *next;
+-  void (*handler) __P((struct event *, char *));
+-  char *data;
+-  int fd;
+-  int type;
+-  int pri;
+-  struct timeval timeout;
+-  int queued;		/* in evs queue */
+-  int active;		/* in fdset */
+-  int *condpos;		/* only active if condpos - condneg > 0 */
+-  int *condneg;
+-};
+-
+-#define EV_TIMEOUT	0
+-#define EV_READ		1
+-#define EV_WRITE	2
+-#define EV_ALWAYS	3
+diff --git a/screen.h b/screen.h
+index 603ca3f..34238c8 100644
+--- a/screen.h
++++ b/screen.h
+@@ -43,7 +43,7 @@
+ #include "osdef.h"
+ 
+ #include "ansi.h"
+-#include "sched.h"
++#include "eventqueue.h"
+ #include "acls.h"
+ #include "comm.h"
+ #include "layer.h"
+-- 
+1.8.4.5
+
diff --git a/patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch b/patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch
new file mode 100644
index 000000000..6ff6f3da0
--- /dev/null
+++ b/patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch
@@ -0,0 +1,28 @@
+From 39c5f1c76f1fcef4b5958bf828a63f53426b6984 Mon Sep 17 00:00:00 2001
+From: Mike Gerwitz <mike@mikegerwitz.com>
+Date: Tue, 24 Dec 2013 22:16:31 -0500
+Subject: comm.h now depends on term.h
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+[Patch retrieved and updated from:
+http://git.savannah.gnu.org/cgit/screen.git/commit/?id=39c5f1c]
+---
+ src/Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index e791e79..d4f7c0b 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -113,7 +113,7 @@ term.h: term.c term.sh
+ 
+ kmapdef.c: term.h
+ 
+-comm.h: comm.c comm.sh config.h
++comm.h: comm.c comm.sh config.h term.h
+ 	AWK=$(AWK) CC="$(CC) $(CFLAGS)" srcdir=${srcdir} sh $(srcdir)/comm.sh
+ 
+ docs:
+-- 
+cgit v1.0-41-gc330
+
diff --git a/patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch b/patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch
new file mode 100644
index 000000000..f406a1afa
--- /dev/null
+++ b/patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch
@@ -0,0 +1,35 @@
+From b719314d201a3e9e1e57c65746a468c47bfc847f Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Wed, 3 Oct 2018 22:29:32 +0200
+Subject: [PATCH] comm.h needed for list_{display,generic}.o
+
+comm.h is needed to build list_display.o and list_generic.o otherwise
+parallel builds will sometimes fail
+
+Fixes:
+ - http://autobuild.buildroot.org/results/43105f14857dbe72d8878fc7b3db67f7bdca93cc
+ - http://autobuild.buildroot.org/results/47f4ecbec1355285633df287fc9c4e7cccde9378
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+[Upstream status: https://savannah.gnu.org/bugs/index.php?54776]
+---
+ Makefile.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index af5938b..e6d5247 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -265,7 +265,7 @@  braille.h
+ viewport.o: layout.h viewport.h canvas.h viewport.c config.h screen.h os.h osdef.h ansi.h acls.h \
+  comm.h layer.h term.h image.h display.h window.h extern.h \
+  braille.h
+-list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h
+-list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h
++list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h comm.h
++list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h comm.h
+ list_window.o: list_generic.h list_window.c window.h layer.h screen.h osdef.h comm.h
+ 
+-- 
+2.17.1
+
diff --git a/patches/screen-4.8.0/0008-CVE-2021-26937.patch b/patches/screen-4.8.0/0008-CVE-2021-26937.patch
new file mode 100644
index 000000000..df7efa029
--- /dev/null
+++ b/patches/screen-4.8.0/0008-CVE-2021-26937.patch
@@ -0,0 +1,68 @@
+Description: [CVE-2021-26937] Fix out of bounds array access
+Author: Michael Schröder <mls@suse.de>
+Bug-Debian: https://bugs.debian.org/982435
+Bug: https://savannah.gnu.org/bugs/?60030
+Bug: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00000.html
+Bug-OSS-Security: https://www.openwall.com/lists/oss-security/2021/02/09/3
+Origin: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00010.html
+
+Downloaded from Debian:
+https://sources.debian.org/data/main/s/screen/4.8.0-5/debian/patches/99_CVE-2021-26937.patch
+
+Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
+--- a/encoding.c
++++ b/encoding.c
+@@ -43,7 +43,7 @@
+ # ifdef UTF8
+ static int   recode_char __P((int, int, int));
+ static int   recode_char_to_encoding __P((int, int));
+-static void  comb_tofront __P((int, int));
++static void  comb_tofront __P((int));
+ #  ifdef DW_CHARS
+ static int   recode_char_dw __P((int, int *, int, int));
+ static int   recode_char_dw_to_encoding __P((int, int *, int));
+@@ -1263,6 +1263,8 @@
+     {0x30000, 0x3FFFD},
+   };
+ 
++  if (c >= 0xdf00 && c <= 0xdfff)
++    return 1;          /* dw combining sequence */
+   return ((bisearch(c, wide, sizeof(wide) / sizeof(struct interval) - 1)) ||
+           (cjkwidth &&
+            bisearch(c, ambiguous,
+@@ -1330,11 +1332,12 @@
+ }
+ 
+ static void
+-comb_tofront(root, i)
+-int root, i;
++comb_tofront(i)
++int i;
+ {
+   for (;;)
+     {
++      int root = i >= 0x700 ? 0x801 : 0x800;
+       debug1("bring to front: %x\n", i);
+       combchars[combchars[i]->prev]->next = combchars[i]->next;
+       combchars[combchars[i]->next]->prev = combchars[i]->prev;
+@@ -1396,9 +1399,9 @@
+     {
+       /* full, recycle old entry */
+       if (c1 >= 0xd800 && c1 < 0xe000)
+-        comb_tofront(root, c1 - 0xd800);
++        comb_tofront(c1 - 0xd800);
+       i = combchars[root]->prev;
+-      if (c1 == i + 0xd800)
++      if (i == 0x800 || i == 0x801 || c1 == i + 0xd800)
+ 	{
+ 	  /* completely full, can't recycle */
+ 	  debug("utf8_handle_comp: completely full!\n");
+@@ -1422,7 +1425,7 @@
+   mc->font  = (i >> 8) + 0xd8;
+   mc->fontx = 0;
+   debug3("combinig char %x %x -> %x\n", c1, c, i + 0xd800);
+-  comb_tofront(root, i);
++  comb_tofront(i);
+ }
+ 
+ #else /* !UTF8 */
diff --git a/patches/screen-4.8.0/series b/patches/screen-4.8.0/series
new file mode 100644
index 000000000..c72b2fd5f
--- /dev/null
+++ b/patches/screen-4.8.0/series
@@ -0,0 +1,9 @@
+0001-no-memcpy-fallback.patch
+0002-install-no-backup-binary.patch
+0003-install-always-chmod.patch
+0004-install-nonversioned-binary.patch
+0005-rename-sched_h.patch
+0006-comm-h-now-depends-on-term-h.patch
+0007-comm.h-needed-for-list_-display-generic-.o.patch
+0008-CVE-2021-26937.patch
+
diff --git a/rules/screen.make b/rules/screen.make
index 39a96dae2..1087dfc9d 100644
--- a/rules/screen.make
+++ b/rules/screen.make
@@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_SCREEN) += screen
 #
 # Paths and names
 #
-SCREEN_VERSION	:= 4.5.0
-SCREEN_MD5	:= a32105a91359afab1a4349209a028e31
+SCREEN_VERSION	:= 4.8.0
+SCREEN_MD5	:= d276213d3acd10339cd37848b8c4ab1e
 SCREEN		:= screen-$(SCREEN_VERSION)
 SCREEN_SUFFIX	:= tar.gz
 SCREEN_URL	:= $(call ptx/mirror, GNU, screen/$(SCREEN).$(SCREEN_SUFFIX))
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] strace: Version bump 5.9 -> 5.15
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (16 preceding siblings ...)
  2021-12-22 13:02 ` [ptxdist] [PATCH] screen: Version bump 4.5.0 -> 4.8.0 Christian Melki
@ 2021-12-22 13:03 ` Christian Melki
  2022-01-05 12:53   ` Michael Olbrich
  2021-12-22 13:03 ` [ptxdist] [PATCH] tcpdump: Version bump 4.93 -> 4.99.1 Christian Melki
                   ` (4 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:03 UTC (permalink / raw)
  To: ptxdist

Maintenance.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/strace.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/strace.make b/rules/strace.make
index 6c15f1baa..2b06e6cb6 100644
--- a/rules/strace.make
+++ b/rules/strace.make
@@ -16,8 +16,8 @@ PACKAGES-$(PTXCONF_STRACE) += strace
 #
 # Paths and names
 #
-STRACE_VERSION	:= 5.9
-STRACE_MD5	:= fef7264b3501c6af86224c685751d0c6
+STRACE_VERSION	:= 5.15
+STRACE_MD5	:= a627c23fda3ecd668d6161c288fdcd79
 STRACE		:= strace-$(STRACE_VERSION)
 STRACE_SUFFIX	:= tar.xz
 STRACE_URL	:= https://strace.io/files/$(STRACE_VERSION)/$(STRACE).$(STRACE_SUFFIX)
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] tcpdump: Version bump 4.93 -> 4.99.1.
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (17 preceding siblings ...)
  2021-12-22 13:03 ` [ptxdist] [PATCH] strace: Version bump 5.9 -> 5.15 Christian Melki
@ 2021-12-22 13:03 ` Christian Melki
  2022-01-06  7:22   ` Michael Olbrich
  2021-12-22 13:03 ` [ptxdist] [WIP: PATCH] usbutils: Version bump 007 -> 014 Christian Melki
                   ` (3 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:03 UTC (permalink / raw)
  To: ptxdist

Renamed option for system pcap.
Also, tcpdump moved from sbin to bin.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/tcpdump.make | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/rules/tcpdump.make b/rules/tcpdump.make
index ef4c1116c..33e848baf 100644
--- a/rules/tcpdump.make
+++ b/rules/tcpdump.make
@@ -15,8 +15,8 @@ PACKAGES-$(PTXCONF_TCPDUMP) += tcpdump
 #
 # Paths and names
 #
-TCPDUMP_VERSION	:= 4.9.3
-TCPDUMP_MD5	:= a4ead41d371f91aa0a2287f589958bae
+TCPDUMP_VERSION	:= 4.99.1
+TCPDUMP_MD5	:= 929a255c71a9933608bd7c31927760f7
 TCPDUMP		:= tcpdump-$(TCPDUMP_VERSION)
 TCPDUMP_SUFFIX	:= tar.gz
 TCPDUMP_URL	:= http://www.tcpdump.org/release/$(TCPDUMP).$(TCPDUMP_SUFFIX)
@@ -46,7 +46,7 @@ TCPDUMP_CONF_OPT	:= \
 	--with-gcc \
 	--without-smi \
 	--without-sandbox-capsicum \
-	--with-system-libpcap \
+	--disable-local-libpcap \
 	--$(call ptx/wwo,PTXCONF_TCPDUMP_ENABLE_CRYPTO)-crypto \
 	--$(call ptx/wwo,PTXCONF_TCPDUMP_ENABLE_LIBCAP_NG)-cap-ng
 
@@ -67,7 +67,7 @@ $(STATEDIR)/tcpdump.targetinstall:
 	@$(call install_fixup, tcpdump,AUTHOR,"Robert Schwebel <r.schwebel@pengutronix.de>")
 	@$(call install_fixup, tcpdump,DESCRIPTION,"TCP analyze tool")
 
-	@$(call install_copy, tcpdump, 0, 0, 0755, -, /usr/sbin/tcpdump)
+	@$(call install_copy, tcpdump, 0, 0, 0755, -, /usr/bin/tcpdump)
 
 	@$(call install_finish, tcpdump)
 
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [WIP: PATCH] usbutils: Version bump 007 -> 014.
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (18 preceding siblings ...)
  2021-12-22 13:03 ` [ptxdist] [PATCH] tcpdump: Version bump 4.93 -> 4.99.1 Christian Melki
@ 2021-12-22 13:03 ` Christian Melki
  2022-01-05 12:38   ` Michael Olbrich
  2021-12-22 13:03 ` [ptxdist] [PATCH] util-linux-ng: Version bump 2.37 -> 2.37.2 Christian Melki
                   ` (2 subsequent siblings)
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:03 UTC (permalink / raw)
  To: ptxdist

Usbutils depends on libudev, add it.
Clear out some old configure options.
Also, usb.ids are not supplied anymore.
It is expected the user provides it.

Ptxdist can download it, but then it's an unversioned
ball from nightly updates.

An alternative would be to provide a static one
in projectroot that's manually updated.
That way you'd know what was installed.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 projectroot/usr/share/usb.ids | 25203 ++++++++++++++++++++++++++++++++
 rules/usbutils.in             |     2 +
 rules/usbutils.make           |    10 +-
 3 files changed, 25209 insertions(+), 6 deletions(-)
 create mode 100644 projectroot/usr/share/usb.ids

diff --git a/projectroot/usr/share/usb.ids b/projectroot/usr/share/usb.ids
new file mode 100644
index 000000000..1b9f9f82b
--- /dev/null
+++ b/projectroot/usr/share/usb.ids
@@ -0,0 +1,25203 @@
+#
+#	List of USB ID's
+#
+#	Maintained by Stephen J. Gowdy <linux.usb.ids@gmail.com>
+#	If you have any new entries, please submit them via
+#		http://www.linux-usb.org/usb-ids.html
+#	or send entries as patches (diff -u old new) in the
+#	body of your email (a bot will attempt to deal with it).
+#	The latest version can be obtained from
+#		http://www.linux-usb.org/usb.ids
+#
+# Version: 2021.10.24
+# Date:    2021-10-24 20:34:08
+#
+
+# Vendors, devices and interfaces. Please keep sorted.
+
+# Syntax:
+# vendor  vendor_name
+#	device  device_name				<-- single tab
+#		interface  interface_name		<-- two tabs
+
+0001  Fry's Electronics
+	7778  Counterfeit flash drive [Kingston]
+0002  Ingram
+	0002  passport00
+0003  Club Mac
+0004  Nebraska Furniture Mart
+0011  Unknown
+	7788  counterfeit flash drive
+0053  Planex
+	5301  GW-US54ZGL 802.11bg
+0078  Microntek
+	0006  Joystick
+0079  DragonRise Inc.
+	0006  PC TWIN SHOCK Gamepad
+	0011  Gamepad
+	1800  Mayflash Wii U Pro Game Controller Adapter [DirectInput]
+	181b  Venom Arcade Joystick
+	1843  Mayflash GameCube Controller Adapter
+	1844  Mayflash GameCube Controller
+0080  Unknown
+	a001  JMS578 based SATA bridge
+0085  Boeye Technology Co., Ltd.
+	0600  eBook Reader
+0102  miniSTREAK
+0105  Trust International B.V.
+	145f  NW-3100 802.11b/g 54Mbps Wireless Network Adapter [zd1211]
+0127  IBP
+	0002  HDM Interface
+	0127  ibp
+0145  Unknown
+	0112  Card Reader
+017c  MLK
+	145f  Trust Deskset
+0200  TP-Link
+	0201  MA180 UMTS Modem
+0204  Chipsbank Microelectronics Co., Ltd
+	6025  CBM2080 / CBM2090 Flash drive controller
+	6026  CBM1180 Flash drive controller
+0218  Hangzhou Worlde
+	0301  MIDI Port
+02ad  HUMAX Co., Ltd.
+	138c  PVR Mass Storage
+0303  Mini Automation Controller
+0324  OCZ Technology Inc
+	bc06  OCZ ATV USB 2.0 Flash Drive
+	bc08  OCZ Rally2/ATV USB 2.0 Flash Drive
+0325  OCZ Technology Inc
+	ac02  ATV Turbo / Rally2 Dual Channel USB 2.0 Flash Drive
+0386  LTS
+	0001  PSX for USB Converter
+03c3  ZWO
+	120e  ASI120MC-S Planetary Camera
+03d9  Shenzhen Sinote Tech-Electron Co., Ltd
+	0499  SE340D PC Remote Control
+03da  Bernd Walter Computer Technology
+	0002  HD44780 LCD interface
+03e7  Intel
+	2150  Myriad VPU [Movidius Neural Compute Stick]
+	2485  Movidius MyriadX
+	f63b  Myriad VPU [Movidius Neural Compute Stick]
+03e8  EndPoints, Inc.
+	0004  SE401 Webcam
+	0008  101 Ethernet [klsi]
+	0015  ATAPI Enclosure
+	2123  SiPix StyleCam Deluxe
+	8004  Aox 99001
+03e9  Thesys Microelectronics
+03ea  Data Broadcasting Corp.
+03eb  Atmel Corp.
+	0902  4-Port Hub
+	2002  Mass Storage Device
+	2015  at90usbkey sample firmware (HID keyboard)
+	2018  at90usbkey sample firmware (CDC ACM)
+	2019  stk525 sample firmware (microphone)
+	201c  at90usbkey sample firmware (HID mouse)
+	201d  at90usbkey sample firmware (HID generic)
+	2022  at90usbkey sample firmware (composite device)
+	2040  LUFA Test PID
+	2041  LUFA Mouse Demo Application
+	2042  LUFA Keyboard Demo Application
+	2043  LUFA Joystick Demo Application
+	2044  LUFA CDC Demo Application
+	2045  LUFA Mass Storage Demo Application
+	2046  LUFA Audio Output Demo Application
+	2047  LUFA Audio Input Demo Application
+	2048  LUFA MIDI Demo Application
+	2049  Stripe Snoop Magnetic Stripe Reader
+	204a  LUFA CDC Class Bootloader
+	204b  LUFA USB to Serial Adapter Project
+	204c  LUFA RNDIS Demo Application
+	204d  LUFA Combined Mouse and Keyboard Demo Application
+	204e  LUFA Dual CDC Demo Application
+	204f  LUFA Generic HID Demo Application
+	2060  Benito Programmer Project
+	2061  LUFA Combined Mass Storage and Keyboard Demo Application
+	2062  LUFA Combined CDC and Mouse Demo Application
+	2063  LUFA Datalogger Device
+	2064  Interfaceless Control-Only LUFA Devices
+	2065  LUFA Test and Measurement Demo Application
+	2066  LUFA Multiple Report HID Demo
+	2067  LUFA HID Class Bootloader
+	2068  LUFA Virtual Serial/Mass Storage Demo
+	2069  LUFA Webserver Project
+	2103  JTAG ICE mkII
+	2104  AVR ISP mkII
+	2105  AVRONE!
+	2106  STK600 development board
+	2107  AVR Dragon
+	2109  STK541 ZigBee Development Board
+	210a  AT86RF230 [RZUSBSTICK] transceiver
+	210d  XPLAIN evaluation kit (CDC ACM)
+	2110  AVR JTAGICE3 Debugger and Programmer
+	2111  Xplained Pro board debugger and programmer
+	2122  XMEGA-A1 Explained evaluation kit
+	2140  AVR JTAGICE3 (v3.x) Debugger and Programmer
+	2141  ICE debugger
+	2145  ATMEGA328P-XMINI (CDC ACM)
+	2310  EVK11xx evaluation board
+	2404  The Micro
+	2fe4  ATxmega32A4U DFU bootloader
+	2fe6  Cactus V6 (DFU)
+	2fea  Cactus RF60 (DFU)
+	2fee  atmega8u2 DFU bootloader
+	2fef  atmega16u2 DFU bootloader
+	2ff0  atmega32u2 DFU bootloader
+	2ff1  at32uc3a3 DFU bootloader
+	2ff3  atmega16u4 DFU bootloader
+	2ff4  atmega32u4 DFU bootloader
+	2ff6  at32uc3b0/1 DFU bootloader
+	2ff7  at90usb82 DFU bootloader
+	2ff8  at32uc3a0/1 DFU bootloader
+	2ff9  at90usb646/647 DFU bootloader
+	2ffa  at90usb162 DFU bootloader
+	2ffb  at90usb AVR DFU bootloader
+	2ffd  at89c5130/c5131 DFU bootloader
+	2fff  at89c5132/c51snd1c DFU bootloader
+	3301  at43301 4-Port Hub
+	3312  4-Port Hub
+	4102  AirVast W-Buddie WN210
+	5601  at76c510 Prism-II 802.11b Access Point
+	5603  Cisco 7920 WiFi IP Phone
+	6119  AT91SAM CDC Demo Application
+	6124  at91sam SAMBA bootloader
+	6127  AT91SAM HID Keyboard Demo Application
+	6129  AT91SAM Mass Storage Demo Application
+	6200  AT91SAM HID Mouse Demo Application
+	7603  D-Link DWL-120 802.11b Wireless Adapter [Atmel at76c503a]
+	7604  at76c503a 802.11b Adapter
+	7605  at76c503a 802.11b Adapter
+	7606  at76c505 802.11b Adapter
+	7611  at76c510 rfmd2948 802.11b Access Point
+	7613  WL-1130 USB
+	7614  AT76c505a Wireless Adapter
+	7615  AT76C505AMX Wireless Adapter
+	7617  AT76C505AS Wireless Adapter
+	7800  Mini Album
+	800c  Airspy HF+
+	ff01  WootingOne
+	ff02  WootingTwo
+	ff07  Tux Droid fish dongle
+03ec  Iwatsu America, Inc.
+03ed  Mitel Corp.
+03ee  Mitsumi
+	0000  CD-R/RW Drive
+	2501  eHome Infrared Receiver
+	2502  eHome Infrared Receiver
+	5609  Japanese Keyboard
+	641f  WIF-0402C Bluetooth Adapter
+	6438  Bluetooth Device
+	6440  WML-C52APR Bluetooth Adapter
+	6901  SmartDisk FDD
+	6902  Floppy Disk Drive
+	7500  CD-R/RW
+	ffff  Dongle with BlueCore in DFU mode
+03f0  HP, Inc
+	0004  DeskJet 895c
+	0011  OfficeJet G55
+	0012  DeskJet 1125C Printer Port
+	0024  KU-0316 Keyboard
+	002a  LaserJet P1102
+	0053  DeskJet 2620 All-in-One Printer
+	0101  ScanJet 4100c
+	0102  PhotoSmart S20
+	0104  DeskJet 880c/970c
+	0105  ScanJet 4200c
+	0107  CD-Writer Plus
+	010c  Multimedia Keyboard Hub
+	0111  G55xi Printer/Scanner/Copier
+	0117  LaserJet 3200
+	011c  hn210w 802.11b Adapter
+	011d  Bluetooth 1.2 Interface [Broadcom BCM2035]
+	0121  HP 39g+ [F2224A], 39gs [F2223A], 40gs [F2225A], 48gII [F2226A], 49g+ [F2228A], 50g [F2229A, NW240AA]
+	0122  HID Internet Keyboard
+	0125  DAT72 Tape
+	0139  Barcode Scanner 4430
+	0201  ScanJet 6200c
+	0202  PhotoSmart S20
+	0204  DeskJet 815c
+	0205  ScanJet 3300c
+	0207  CD-Writer Plus 8200e
+	020c  Multimedia Keyboard
+	0211  OfficeJet G85
+	0212  DeskJet 1220C
+	0217  LaserJet 2200
+	0218  APOLLO P2500/2600
+	0221  StreamSmart 400 [F2235AA]
+	0223  Digital Drive Flash Reader
+	022a  Laserjet CP1525nw
+	0241  Link-5 micro dongle
+	0304  DeskJet 810c/812c
+	0305  ScanJet 4300c
+	0307  CD-Writer+ CD-4e
+	0311  OfficeJet G85xi
+	0312  Color Inkjet CP1700
+	0314  designjet 30/130 series
+	0317  LaserJet 1200
+	0324  SK-2885 keyboard
+	034a  Elite Keyboard
+	0401  ScanJet 5200c
+	0404  DeskJet 830c/832c
+	0405  ScanJet 3400cse
+	0411  OfficeJet G95
+	0412  Printing Support
+	0417  LaserJet 1200 series
+	0423  HS-COMBO Cardreader
+	042a  LaserJet M1132 MFP
+	0441  Prime [NW280AA, G8X92AA]
+	0504  DeskJet 885c
+	0505  ScanJet 2100c
+	0507  DVD+RW
+	050c  5219 Wireless Keyboard
+	0511  OfficeJet K60
+	0512  DeckJet 450
+	0517  LaserJet 1000
+	051d  Bluetooth Interface
+	052a  LaserJet M1212nf MFP
+	0601  ScanJet 6300c
+	0604  DeskJet 840c
+	0605  ScanJet 2200c
+	0610  Z24i Monitor Hub
+	0611  OfficeJet K60xi
+	0612  business inkjet 3000
+	0624  Bluetooth Dongle
+	0641  X1200 Optical Mouse
+	0701  ScanJet 5300c/5370c
+	0704  DeskJet 825c
+	0705  ScanJet 4400c
+	070c  Personal Media Drive
+	0711  OfficeJet K80
+	0712  DeskJet 1180c
+	0714  Printing Support
+	0741  Prime Wireless Kit [FOK65AA]
+	0801  ScanJet 7400c
+	0804  DeskJet 816c
+	0805  HP4470C
+	0811  OfficeJet K80xi
+	0817  LaserJet 3300
+	0901  ScanJet 2300c
+	0904  DeskJet 845c
+	0912  Printing Support
+	0917  LaserJet 3330
+	0924  Modular Smartcard Keyboard
+	0941  X500 Optical Mouse
+	094a  Optical Mouse [672662-001]
+	0a01  ScanJet 2400c
+	0a17  color LaserJet 3700
+	0b01  ScanJet 82x0C
+	0b0c  Wireless Keyboard and Optical Mouse receiver
+	0b17  LaserJet 2300d
+	0c17  LaserJet 1010
+	0c24  Bluetooth Dongle
+	0d12  OfficeJet 9100 series
+	0d17  LaserJet 1012
+	0d4a  SK-2025 Keyboard
+	0e17  LaserJet 1015
+	0f0c  Wireless Keyboard and Optical Mouse receiver
+	0f11  OfficeJet V40
+	0f12  Printing Support
+	0f17  LaserJet 1150
+	0f2a  LaserJet 400 color M451dn
+	1001  Photo Scanner 1000
+	1002  PhotoSmart 140 series
+	1004  DeskJet 970c/970cse
+	1005  ScanJet 5400c
+	1011  OfficeJet V40xi
+	1016  Jornada 548 / iPAQ HW6515 Pocket PC
+	1017  LaserJet 1300
+	1024  Smart Card Keyboard
+	1027  Virtual keyboard and mouse
+	102a  LaserJet Professional P 1102w
+	1102  PhotoSmart 240 series
+	1104  DeskJet 959c
+	1105  ScanJet 5470c/5490c
+	1111  OfficeJet v60
+	1116  Jornada 568 Pocket PC
+	1117  LaserJet 1300n
+	1151  PSC-750xi Printer/Scanner/Copier
+	1198  HID-compliant mouse
+	1202  PhotoSmart 320 series
+	1204  DeskJet 930c
+	1205  ScanJet 4500C/5550C
+	1211  OfficeJet v60xi
+	1217  LaserJet 2300L
+	1227  Virtual CD-ROM
+	1302  PhotoSmart 370 series
+	1305  ScanJet 4570c
+	1311  OfficeJet V30
+	1312  DeskJet 460
+	1317  LaserJet 1005
+	1327  iLO Virtual Hub
+	134a  Optical Mouse
+	1405  ScanJet 3670
+	1411  PSC 750
+	1424  f2105 Monitor Hub
+	1502  PhotoSmart 420 series
+	1504  DeskJet 920c
+	150c  Mood Lighting (Microchip Technology Inc.)
+	1511  PSC 750xi
+	1512  Printing Support
+	1517  color LaserJet 3500
+	1524  Smart Card Keyboard - KR
+	1539  Mini Magnetic Stripe Reader
+	1541  Prime [G8X92AA]
+	154a  Laser Mouse
+	1602  PhotoSmart 330 series
+	1604  DeskJet 940c
+	1605  ScanJet 5530C PhotoSmart
+	1611  psc 780
+	1617  LaserJet 3015
+	161d  Wireless Rechargeable Optical Mouse (HID)
+	1624  Smart Card Keyboard - JP
+	1647  Z27n G2 Monitor Hub
+	1702  PhotoSmart 380 series
+	1704  DeskJet 948C
+	1705  ScanJet 5590
+	1711  psc 780xi
+	1712  Printing Support
+	1717  LaserJet 3020
+	171d  Bluetooth 2.0 Interface [Broadcom BCM2045]
+	1801  Inkjet P-2000U
+	1802  PhotoSmart 470 series
+	1804  DeskJet 916C
+	1805  ScanJet 7650
+	1811  PSC 720
+	1812  OfficeJet Pro K550
+	1817  LaserJet 3030
+	181d  Bluetooth 2.0 Interface
+	1902  PhotoSmart A430 series
+	1904  DeskJet 3820
+	1911  OfficeJet V45
+	1917  LaserJet 3380
+	1a02  PhotoSmart A510 series
+	1a11  OfficeJet 5100 series
+	1a17  color LaserJet 4650
+	1b02  PhotoSmart A610 series
+	1b04  DeskJet 3810
+	1b05  ScanJet 4850C/4890C
+	1b07  Premium Starter Webcam
+	1c02  PhotoSmart A710 series
+	1c17  Color LaserJet 2550l
+	1d02  PhotoSmart A310 series
+	1d17  LaserJet 1320
+	1d24  Barcode scanner
+	1e02  PhotoSmart A320 Printer series
+	1e11  PSC-950
+	1e17  LaserJet 1160 series
+	1f02  PhotoSmart A440 Printer series
+	1f11  PSC 920
+	1f12  OfficeJet Pro K5300
+	1f17  color LaserJet 5550
+	1f1d  un2400 Gobi Wireless Modem
+	2001  Floppy
+	2002  Hub
+	2004  DeskJet 640c
+	2005  ScanJet 3570c
+	2012  OfficeJet Pro K5400
+	201d  un2400 Gobi Wireless Modem (QDL mode)
+	2039  Cashdrawer
+	2102  PhotoSmart 7345
+	2104  DeskJet 630c
+	2112  OfficeJet Pro L7500
+	211d  Sierra MC5725 [ev2210]
+	2202  PhotoSmart 7600 series
+	2205  ScanJet 3500c
+	2212  OfficeJet Pro L7600
+	2217  color LaserJet 9500 MFP
+	222a  LaserJet Pro MFP M125nw
+	2302  PhotoSmart 7600 series
+	2304  DeskJet 656c
+	2305  ScanJet 3970c
+	2311  OfficeJet d series
+	2312  OfficeJet Pro L7700
+	2317  LaserJet 4350
+	231d  Broadcom 2070 Bluetooth Combo
+	2402  PhotoSmart 7700 series
+	2404  Deskjet F2280 series
+	2405  ScanJet 4070 PhotoSmart
+	2417  LaserJet 4250
+	241d  Gobi 2000 Wireless Modem (QDL mode)
+	2424  LP1965 19" Monitor Hub
+	2441  Prime G2 [2AP18AA]
+	2502  PhotoSmart 7700 series
+	2504  DeskJet F4200 series
+	2505  ScanJet 3770
+	2512  OfficeJet Pro L7300 / Compaq LA2405 series monitor
+	2514  4-port hub
+	2517  LaserJet 2410
+	251d  Gobi 2000 Wireless Modem
+	2524  LP3065 30" Monitor Hub
+	2602  PhotoSmart A520 series
+	2605  ScanJet 3800c
+	2611  OfficeJet 7100 series
+	2617  Color LaserJet 2820 series
+	2624  Pole Display (HP522 2 x 20 Line Display)
+	2702  PhotoSmart A620 series
+	2704  DeskJet 915
+	2717  Color LaserJet 2830
+	2724  Magnetic Stripe Reader IDRA-334133-HP
+	2805  Scanjet G2710
+	2811  PSC-2100
+	2817  Color LaserJet 2840
+	2841  OMEN MINDFRAME [3XT27AA]
+	2902  PhotoSmart A820 series
+	2911  PSC 2200
+	2917  LaserJet 2420
+	2a11  PSC 2150 series
+	2a17  LaserJet 2430
+	2a1d  Integrated Module with Bluetooth 2.1 Wireless technology
+	2b11  PSC 2170 series
+	2b17  LaserJet 1020
+	2b4a  Business Slim Keyboard
+	2c12  Officejet J4680
+	2c17  LaserJet 1022
+	2c24  Logitech M-UAL-96 Mouse
+	2d05  Scanjet 7000
+	2d11  OfficeJet 6110
+	2d17  Printing Support
+	2e11  PSC 1000
+	2e17  LaserJet 2600n
+	2e24  LP2275w Monitor Hub
+	2f11  PSC 1200
+	2f17  Color LaserJet 2605dn
+	2f24  LP2475w Monitor Hub
+	3002  PhotoSmart P1000
+	3004  DeskJet 980c
+	3005  ScanJet 4670v
+	3011  PSC 1100 series
+	3017  Printing Support
+	304a  Slim Keyboard
+	3102  PhotoSmart P1100 Printer w/ Card Reader
+	3104  DeskJet 960c
+	3111  OfficeJet 4100 series
+	3117  EWS 2605dtn
+	311d  Atheros AR9285 Malbec Bluetooth Adapter
+	312a  LaserJet Pro M701n
+	3202  PhotoSmart 1215
+	3207  4 GB flash drive
+	3211  OfficeJet 4105 series
+	3217  LaserJet 3050
+	3302  PhotoSmart 1218
+	3304  DeskJet 990c
+	3307  v125w Stick
+	3312  OfficeJet J6410
+	3317  LaserJet 3052
+	3402  PhotoSmart 1115
+	3404  DeskJet 6122
+	3417  LaserJet 3055
+	3502  PhotoSmart 230
+	3504  DeskJet 6127c
+	3511  PSC 2300
+	3517  LaserJet 3390
+	354a  Slim Keyboard
+	3602  PhotoSmart 1315
+	3611  PSC 2410 PhotoSmart
+	3612  Officejet Pro 8000 A809
+	3617  Color LaserJet 2605
+	3711  PSC 2500
+	3717  EWS UPD
+	3724  Webcam
+	3802  PhotoSmart 100
+	3807  c485w Flash Drive
+	3817  LaserJet P2015 series
+	3902  PhotoSmart 130
+	3912  Officejet Pro 8500
+	3917  LaserJet P2014
+	3a02  PhotoSmart 7150
+	3a11  OfficeJet 5500 series
+	3a17  Printing Support
+	3a1d  hs2340 HSPA+ mobile broadband
+	3b02  PhotoSmart 7150~
+	3b05  Scanjet N8460
+	3b11  PSC 1300 series
+	3b17  LaserJet M1005 MFP
+	3b2a  Color LaserJet MFP M277dw
+	3c02  PhotoSmart 7350
+	3c05  Scanjet Professional 1000 Mobile Scanner
+	3c11  PSC 1358
+	3c17  EWS UPD
+	3d02  PhotoSmart 7350~
+	3d11  OfficeJet 4215
+	3d17  LaserJet P1005
+	3e02  PhotoSmart 7550
+	3e17  LaserJet P1006
+	3f02  PhotoSmart 7550~
+	3f11  PSC-1315/PSC-1317
+	3f17  Laserjet P1505
+	4002  PhotoSmart 635/715/720/735/935/E337 (storage)
+	4004  CP1160
+	4102  PhotoSmart 618
+	4105  ScanJet 4370
+	4111  OfficeJet 7200 series
+	4117  LaserJet 1018
+	4202  PhotoSmart 812
+	4205  ScanJet G3010
+	4211  OfficeJet 7300 series
+	4217  EWS CM1015
+	4302  PhotoSmart 850 (ptp)
+	4305  ScanJet G3110
+	4311  OfficeJet 7400 series
+	4317  Color LaserJet CM1017
+	4402  PhotoSmart 935 (ptp)
+	4417  EWS UPD
+	4502  PhotoSmart 945 (PTP mode)
+	4505  ScanJet G4010
+	4507  External HDD
+	4511  PhotoSmart 2600
+	4512  E709n [Officejet 6500 Wireless]
+	4517  EWS UPD
+	4605  ScanJet G4050
+	4611  PhotoSmart 2700
+	4717  Color LaserJet CP1215
+	4811  PSC 1600
+	4911  PSC 2350
+	4b11  OfficeJet 6200
+	4c11  PSC 1500 series
+	4c17  EWS UPD
+	4d11  PSC 1400
+	4d17  EWS UPD
+	4e11  PhotoSmart 2570 series
+	4f11  OfficeJet 5600 (USBHUB)
+	4f17  Color LaserJet CM1312 MFP
+	5004  DeskJet 995c
+	5011  PhotoSmart 3100 series
+	5017  EWS UPD
+	5111  PhotoSmart 3200 series
+	5211  PhotoSmart 3300 series
+	5307  v165w Stick
+	5311  OfficeJet 6300
+	5312  Officejet Pro 8500A
+	5317  Color LaserJet CP2025 series
+	5411  OfficeJet 4300
+	5511  DeskJet F300 series
+	5611  PhotoSmart C3180
+	5617  LaserJet M1120 MFP
+	5711  PhotoSmart C4100 series
+	5717  LaserJet M1120n MFP
+	5811  PhotoSmart C5100 series
+	5817  LaserJet M1319f MFP
+	581d  lt4112 Gobi 4G Module Network Device
+	5911  PhotoSmart C6180
+	5912  Officejet Pro 8600
+	5a11  PhotoSmart C7100 series
+	5b11  OfficeJet J2100 series
+	5b12  Officejet Pro 8100
+	5c11  PhotoSmart C4200 Printer series
+	5c12  OfficeJet 6700
+	5c17  LaserJet P2055 series
+	5d11  PhotoSmart C5200 series
+	5e11  PhotoSmart D7400 series
+	6004  DeskJet 5550
+	6102  Hewlett Packard Digital Camera
+	6104  DeskJet 5650c
+	6117  color LaserJet 3550
+	6202  PhotoSmart 215
+	6204  DeskJet 5150c
+	6217  Color LaserJet 4700
+	6302  PhotoSmart 318/612
+	6317  Color LaserJet 4730mfp
+	632a  LaserJet M203-M206
+	6402  PhotoSmart 715 (ptp)
+	6411  PhotoSmart C8100 series
+	6417  LaserJet 5200
+	6502  PhotoSmart 120 (ptp)
+	6511  PhotoSmart C7200 series
+	6602  PhotoSmart 320
+	6611  PhotoSmart C4380 series
+	6617  LaserJet 5200L
+	6702  PhotoSmart 720 (ptp)
+	6717  Color LaserJet 3000
+	6802  PhotoSmart 620 (ptp)
+	6811  PhotoSmart D5300 series
+	6817  Color LaserJet 3800
+	6911  PhotoSmart D7200 series
+	6917  Color LaserJet 3600
+	6a02  PhotoSmart 735 (ptp)
+	6a11  PhotoSmart C6200 series
+	6a17  LaserJet 4240
+	6b02  PhotoSmart R707 (PTP mode)
+	6b11  Photosmart C4500 series
+	6c11  Photosmart C4480
+	6c17  Color LaserJet 4610
+	6f17  Color LaserJet CP6015 series
+	7004  DeskJet 3320c
+	7102  PhotoSmart 635 (PTP mode)
+	7104  DeskJet 3420c
+	7117  CM8060 Color MFP with Edgeline Technology
+	7202  PhotoSmart 43x (ptp)
+	7204  DeskJet 36xx
+	7217  LaserJet M5035 MFP
+	7302  PhotoSmart M307 (PTP mode)
+	7304  DeskJet 35xx
+	7311  Photosmart Premium C309
+	7317  LaserJet P3005
+	7404  Printing Support
+	7417  LaserJet M4345 MFP
+	7504  Printing Support
+	7517  LaserJet M3035 MFP
+	7604  DeskJet 3940
+	7611  DeskJet F2492 All-in-One
+	7617  LaserJet P3004
+	7702  PhotoSmart R817 (PTP mode)
+	7704  DeskJet D4100
+	7717  CM8050 Color MFP with Edgeline Technology
+	7804  DeskJet D1360
+	7817  Color LaserJet CP3505
+	7917  LaserJet M5025 MFP
+	7a02  PhotoSmart M415 (PTP mode)
+	7a04  DeskJet D2460
+	7a11  Photosmart B109
+	7a17  LaserJet M3027 MFP
+	7b02  PhotoSmart M23 (PTP mode)
+	7b17  Color LaserJet CP4005
+	7c17  Color LaserJet CM6040 series
+	7d04  DeskJet F2100 Printer series
+	7d17  Color LaserJet CM4730 MFP
+	7e04  DeskJet F4100 Printer series
+	8017  LaserJet P4515
+	8104  Printing Support
+	8117  LaserJet P4015
+	811c  Ethernet HN210E
+	8204  Printing Support
+	8207  FHA-3510 2.4GHz Wireless Optical Mobile Mouse
+	8217  LaserJet P4014
+	8317  LaserJet M9050 MFP
+	8404  DeskJet 6800 series
+	8417  LaserJet M9040 MFP
+	8504  DeskJet 6600 series
+	8604  DeskJet 5440
+	8607  Optical Mobile Mouse
+	8704  DeskJet 5940
+	8711  Deskjet 2050 J510
+	8804  DeskJet 6980 series
+	8904  DeskJet 6940 series
+	8911  Deskjet 1050 J410
+	8c07  Digital Stereo Headset
+	8c11  Deskjet F4500 series
+	9002  PhotoSmart M437
+	9102  PhotoSmart M537
+	9207  HD-4110 Webcam
+	9302  PhotoSmart R930 series
+	9402  PhotoSmart R837
+	942a  LaserJet Pro M12a
+	9502  PhotoSmart R840 series
+	952a  LaserJet Pro M12w
+	9602  PhotoSmart M730 series
+	9702  PhotoSmart R740 series
+	9802  PhotoSmart Mz60 series
+	9902  PhotoSmart M630 series
+	9a02  PhotoSmart E330 series
+	9b02  PhotoSmart M540 series
+	9b07  Portable Drive
+	9c02  PhotoSmart M440 series
+	a004  DeskJet 5850c
+	a011  Deskjet 3050A
+	a407  Wireless Optical Comfort Mouse
+	b002  PhotoSmart 7200 series
+	b102  PhotoSmart 7200 series
+	b107  v255w/c310w Flash Drive
+	b116  Webcam
+	b202  PhotoSmart 7600 series
+	b302  PhotoSmart 7600 series
+	b402  PhotoSmart 7700 series
+	b502  PhotoSmart 7700 series
+	b602  PhotoSmart 7900 series
+	b702  PhotoSmart 7900 series
+	b802  PhotoSmart 7400 series
+	b902  PhotoSmart 7800 series
+	ba02  PhotoSmart 8100 series
+	bb02  PhotoSmart 8400 series
+	bc02  PhotoSmart 8700 series
+	bc11  Photosmart 7520 series
+	bd02  PhotoSmart Pro B9100 series
+	bef4  NEC Picty760
+	c002  PhotoSmart 7800 series
+	c102  PhotoSmart 8000 series
+	c111  Deskjet 1510
+	c202  PhotoSmart 8200 series
+	c211  Deskjet 2540 series
+	c302  DeskJet D2300
+	c402  PhotoSmart D5100 series
+	c502  PhotoSmart D6100 series
+	c602  PhotoSmart D7100 series
+	c702  PhotoSmart D7300 series
+	c802  PhotoSmart D5060 Printer
+	d104  Bluetooth Dongle
+	d507  39gII [NW249AA]
+	efbe  NEC Picty900
+	f0be  NEC Picty920
+	f1be  NEC Picty800
+03f1  Genoa Technology
+03f2  Oak Technology, Inc.
+03f3  Adaptec, Inc.
+	0020  AWN-8020 WLAN [Intersil PRISM 2.5]
+	0080  AVC-1100 Audio Capture
+	0083  AVC-2200 Device
+	0087  AVC-2210 Loader
+	0088  AVC-2210 Device
+	008b  AVC-2310 Loader
+	008c  AVC-2310 Device
+	0094  eHome Infrared Receiver
+	009b  AVC-1410 GameBridge TV NTSC
+	2000  USBXchange
+	2001  USBXchange Adapter
+	2002  USB2-Xchange
+	2003  USB2-Xchange Adapter
+	4000  4-port hub
+	adcc  Composite Device Support
+03f4  Diebold, Inc.
+03f5  Siemens Electromechanical
+03f8  Epson Imaging Technology Center
+03f9  KeyTronic Corp.
+	0100  KT-2001 Keyboard
+	0101  Keyboard
+	0102  Keyboard Mouse
+03fb  OPTi, Inc.
+03fc  Elitegroup Computer Systems
+03fd  Xilinx, Inc.
+	0008  Platform Cable USB II
+	0050  dfu downloader
+03fe  Farallon Comunications
+0400  National Semiconductor Corp.
+	05dc  Rigol Technologies DS1000USB Oscilloscope
+	0807  Bluetooth Dongle
+	080a  Bluetooth Device
+	09c4  Rigol Technologies DG1022 Arbitrary Waveform Generator
+	1000  Mustek BearPaw 1200 Scanner
+	1001  Mustek BearPaw 2400 Scanner
+	1237  Hub
+	a000  Smart Display Reference Device
+	c359  Logitech Harmony
+	c35b  Printing Support
+	c55d  Rigol Technologies DS5000USB Oscilloscope
+0401  National Registry, Inc.
+0402  ALi Corp.
+	5462  M5462 IDE Controller
+	5602  M5602 Video Camera Controller
+	5603  M5603 Video Camera Controller
+	5606  M5606 Video Camera Controller [UVC]
+	5621  M5621 High-Speed IDE Controller
+	5623  M5623 Scanner Controller
+	5627  Welland ME-740PS USB2 3.5" Power Saving Enclosure
+	5632  M5632 Host-to-Host Link
+	5635  M5635 Flash Card Reader
+	5636  USB 2.0 Storage Device
+	5637  M5637 IDE Controller
+	5642  Storage Device
+	5661  M5661 MP3 player
+	5667  M5667 MP3 player
+	8841  Newmine Camera
+	9665  Gateway Webcam
+0403  Future Technology Devices International, Ltd
+	0000  H4SMK 7 Port Hub / Bricked Counterfeit FT232 Serial (UART) IC
+	0232  Serial Converter
+	1060  JTAG adapter
+	1234  IronLogic RFID Adapter [Z-2 USB]
+	1235  Iron Logic Z-397 RS-485/422 converter
+	6001  FT232 Serial (UART) IC
+	6002  Lumel PD12
+	6007  Serial Converter
+	6008  Serial Converter
+	6009  Serial Converter
+	6010  FT2232C/D/H Dual UART/FIFO IC
+	6011  FT4232H Quad HS USB-UART/FIFO IC
+	6014  FT232H Single HS USB-UART/FIFO IC
+	6015  Bridge(I2C/SPI/UART/FIFO)
+	601f  Myriad-RF LimeSDR-Mini
+	6ee0  EZO Carrier Board
+	6f70  HB-RF-USB
+	7be8  FT232R
+	8028  Dev board JTAG (FT232H based)
+	8040  4 Port Hub
+	8070  7 Port Hub
+	8140  Vehicle Explorer Interface
+	8210  MGTimer - MGCC (Vic) Timing System
+	8348  FT232BM [SIENNA Serial Interface]
+	8370  7 Port Hub
+	8371  PS/2 Keyboard And Mouse
+	8372  FT8U100AX Serial Port
+	8508  Selectronic SP PRO
+	87d0  Cressi Dive Computer Interface
+	8a28  Rainforest Automation ZigBee Controller
+	8a98  TIAO Multi-Protocol Adapter
+	8b28  Alpermann+Velte TCI70
+	8b29  Alpermann+Velte TC60 CLS
+	8b2a  Alpermann+Velte Rubidium Q1
+	8b2b  Alpermann+Velte TCD
+	8b2c  Alpermann+Velte TCC70
+	9090  SNAP Stick 200
+	9132  LCD and Temperature Interface
+	9133  CallerID
+	9134  Virtual keyboard
+	9135  Rotary Pub alarm
+	9136  Pulsecounter
+	9137  Ledbutton interface
+	9e90  Marvell OpenRD Base/Client
+	9f08  CIB-1894 Conclusion SmartLink Box:
+	9f80  Ewert Energy Systems CANdapter
+	a6d0  Texas Instruments XDS100v2 JTAG / BeagleBone A3
+	a951  HCP HIT GSM/GPRS modem [Cinterion MC55i]
+	a9a0  FT2232D - Dual UART/FIFO IC - FTDI
+	abb8  Lego Mindstorms NXTCam
+	b0c0  microSensys RFID device
+	b0c1  microSensys RFID device
+	b0c2  iID contactless RFID device
+	b0c3  iID contactless RFID device
+	b0c4  RFID device
+	b0c5  RFID device
+	b810  US Interface Navigator (CAT and 2nd PTT lines)
+	b811  US Interface Navigator (WKEY and FSK lines)
+	b812  US Interface Navigator (RS232 and CONFIG lines)
+	b9b0  Fujitsu SK-16FX-100PMC V1.1
+	baf8  Amontec JTAGkey
+	bcd8  Stellaris Development Board
+	bcd9  Stellaris Evaluation Board
+	bcda  Stellaris ICDI Board
+	bd90  PICAXE Download Cable [AXE027]
+	bdc8  Egnite GmbH - JTAG/RS-232 adapter
+	bfd8  OpenDCC
+	bfd9  OpenDCC (Sniffer)
+	bfda  OpenDCC (Throttle)
+	bfdb  OpenDCC (Gateway)
+	bfdc  OpenDCC (GBM)
+	c580  HID UNIKEY dongle [F-Response]
+	c630  lcd2usb interface
+	c631  i2c-tiny-usb interface
+	c632  xu1541 c64 floppy drive interface
+	c633  TinyCrypt dongle
+	c634  glcd2usb interface
+	c7d0  RR-CirKits LocoBuffer-USB
+	c8b8  Alpermann+Velte MTD TCU
+	c8b9  Alpermann+Velte MTD TCU 1HE
+	c8ba  Alpermann+Velte Rubidium H1
+	c8bb  Alpermann+Velte Rubidium H3
+	c8bc  Alpermann+Velte Rubidium S1
+	c8bd  Alpermann+Velte Rubidium T1
+	c8be  Alpermann+Velte Rubidium D1
+	c8bf  Alpermann+Velte TC60 RLV
+	cc48  Tactrix OpenPort 1.3 Mitsubishi
+	cc49  Tactrix OpenPort 1.3 Subaru
+	cc4a  Tactrix OpenPort 1.3 Universal
+	cff8  Amontec JTAGkey
+	d010  SCS PTC-IIusb
+	d011  SCS Position-Tracker/TNC
+	d012  SCS DRAGON 1
+	d013  SCS DRAGON 1
+	d388  Xsens converter
+	d389  Xsens Wireless Receiver
+	d38a  Xsens serial converter
+	d38b  Xsens serial converter
+	d38c  Xsens Wireless Receiver
+	d38d  Xsens Awinda Station
+	d38e  Xsens serial converter
+	d38f  Xsens serial converter
+	d491  Zolix Omni 1509 monochromator
+	d578  Accesio USB-COM-4SM
+	d6f8  UNI Black BOX
+	d738  Propox JTAGcable II
+	d739  Propox ISPcable III
+	d9a9  Actisense USG-1 NMEA Serial Gateway
+	d9aa  Actisense NGT-1 NMEA2000 PC Interface
+	d9ab  Actisense NGT-1 NMEA2000 Gateway
+	daf4  Qundis Serial Infrared Head
+	e0d0  Total Phase Aardvark I2C/SPI Host Adapter
+	e518  IBR IMB-usb
+	e521  EVER Sinline XL Series UPS
+	e6c8  PYRAMID Computer GmbH LCD
+	e700  Elster Unicom III Optical Probe
+	e729  Segway Robotic Mobility Platforms 200
+	e888  Expert ISDN Control USB
+	e889  USB-RS232 OptoBridge
+	e88a  Expert mouseCLOCK USB II
+	e88b  Precision Clock MSF USB
+	e88c  Expert mouseCLOCK USB II HBG
+	e8d8  Aaronia AG Spectran Spectrum Analyzer
+	e8dc  Aaronia AG UBBV Preamplifier
+	ea90  Eclo 1-Wire Adapter
+	ecd9  miControl miCan-Stick
+	ed71  HAMEG HO870 Serial Port
+	ed72  HAMEG HO720 Serial Port
+	ed73  HAMEG HO730 Serial Port
+	ed74  HAMEG HO820 Serial Port
+	eea2  PCStage Lite 32 channel DMX512 Interface
+	ef10  FT1245BL
+	f070  Serial Converter 422/485 [Vardaan VEUSB422R3]
+	f0c8  SPROG Decoder Programmer
+	f0c9  SPROG-DCC CAN-USB
+	f0e9  Tagsys L-P101
+	f0ee  Tagsys Medio P200x
+	f1a0  Asix PRESTO Programmer
+	f208  Papenmeier Braille-Display
+	f3c0  4N-GALAXY Serial Converter
+	f458  ABACUS ELECTRICS Optical Probe
+	f608  CTI USB-485-Mini
+	f60b  CTI USB-Nano-485
+	f680  Suunto Sports Instrument
+	f758  GW Instek GDS-8x0 Oscilloscope
+	f7c0  ZeitControl Cardsystems TagTracer MIFARE
+	f850  USB-UIRT (Universal Infrared Receiver+Transmitter)
+	f918  Ant8 Logic Probe
+	f9d9  Wetterempfanger 147.3kHz
+	fa00  Matrix Orbital USB Serial
+	fa01  Matrix Orbital MX2 or MX3
+	fa02  Matrix Orbital MX4 or MX5
+	fa03  Matrix Orbital VK/LK202 Family
+	fa04  Matrix Orbital VK/LK204 Family
+	fa20  Ross-Tech HEX-USB
+	fc08  Crystalfontz CFA-632 USB LCD
+	fc09  Crystalfontz CFA-634 USB LCD
+	fc0b  Crystalfontz CFA-633 USB LCD
+	fc0c  Crystalfontz CFA-631 USB LCD
+	fc0d  Crystalfontz CFA-635 USB LCD
+	fc82  SEMC DSS-20/DSS-25 SyncStation
+	fd48  ShipModul MiniPlex-4xUSB NMEA Multiplexer
+	fd49  ShipModul MiniPlex-4xUSB-AIS NMEA Multiplexer
+	fd4b  ShipModul MiniPlex NMEA Multiplexer
+	ff08  ToolHouse LoopBack Adapter
+	ff18  ScienceScope Logbook ML
+	ff19  Logbook Bus
+	ff1a  Logbook Bus
+	ff1b  Logbook Bus
+	ff1c  ScienceScope Logbook LS
+	ff1d  ScienceScope Logbook HS
+	ff1e  Logbook Bus
+	ff1f  Logbook Bus
+0404  NCR Corp.
+	0202  78XX Scanner
+	0203  78XX Scanner - Embedded System
+	0310  K590 Printer, Self-Service
+	0311  7167 Printer, Receipt/Slip
+	0312  7197 Printer Receipt
+	0320  5932-USB Keyboard
+	0321  5953-USB Dynakey
+	0322  5932-USB Enhanced Keyboard
+	0323  5932-USB Enhanced Keyboard, Flash-Recovery/Download
+	0324  5953-USB Enhanced Dynakey
+	0325  5953-USB Enhanced Dynakey Flash-Recovery/Download
+	0328  K016: USB-MSR ISO 3-track MSR: POS Standard (See HID pages)
+	0329  K018: USB-MSR JIS 2-Track MSR: POS Standard
+	032a  K016: USB-MSR ISO 3-Track MSR: HID Keyboard Mode
+	032b  K016/K018: USB-MSR Flash-Recovery/Download
+0405  Synopsys, Inc.
+0406  Fujitsu-ICL Computers
+0407  Fujitsu Personal Systems, Inc.
+0408  Quanta Computer, Inc.
+	0103  FV TouchCam N1 (Audio)
+	030c  HP Webcam
+	03b2  HP Webcam
+	03f4  HP Webcam
+	1030  FV TouchCam N1 (Video)
+	3000  Optical dual-touch panel
+	3001  Optical Touch Screen
+	3008  Optical Touch Screen
+	a060  HD Webcam
+0409  NEC Corp.
+	0011  PC98 Series Layout Keyboard Mouse
+	0012  ATerm IT75DSU ISDN TA
+	0014  Japanese Keyboard
+	0019  109 Japanese Keyboard with Bus-Powered Hub
+	001a  PC98 Series Layout Keyboard with Bus-Powered Hub
+	0025  Mini Keyboard with Bus-Powered Hub
+	0027  MultiSync Monitor
+	002c  Clik!-USB Drive
+	0034  109 Japanese Keyboard with One-touch start buttons
+	003f  Wireless Keyboard with One-touch start buttons
+	0040  Floppy
+	004e  SuperScript 1400 Series
+	004f  Wireless Keyboard with One-touch start buttons
+	0050  7-port hub
+	0058  HighSpeed Hub
+	0059  HighSpeed Hub
+	005a  HighSpeed Hub
+	006a  Conceptronic USB Harddisk Box
+	007d  MINICUBE2
+	007e  PG-FP5 Flash Memory Programmer
+	0081  SuperScript 1400 Series
+	0082  SuperScript 1400 Series
+	0094  Japanese Keyboard with One-touch start buttons
+	0095  Japanese Keyboard
+	00a9  AtermIT21L 128K Support Standard
+	00aa  AtermITX72 128K Support Standard
+	00ab  AtermITX62 128K Support Standard
+	00ac  AtermIT42 128K Support Standard
+	00ae  INSMATEV70G-MAX Standard
+	00af  AtermITX70 128K Support Standard
+	00b0  AtermITX80 128K Support Standard
+	00b2  AtermITX80D 128K Support Standard
+	00c0  Wireless Remocon
+	00f7  Smart Display PK-SD10
+	011d  e228 Mobile Phone
+	0193  RVT-R Writer
+	0203  HID Audio Controls
+	021d  Aterm WL54SU2 802.11g Wireless Adapter [Atheros AR5523]
+	0248  Aterm PA-WL54GU
+	0249  Aterm WL300NU-G
+	02b4  Aterm WL300NU-AG
+	02b6  Aterm WL300NU-GS 802.11n Wireless Adapter
+	02bc  Computer Monitor
+	0300  LifeTouch Note
+	0301  LifeTouch Note (debug mode)
+	55aa  Hub
+	55ab  Hub [iMac/iTouch kbd]
+	8010  Intellibase Hub
+	8011  Intellibase Hub
+	efbe  P!cty 900 [HP DJ]
+	f0be  P!cty 920 [HP DJ 812c]
+040a  Kodak Co.
+	0001  DVC-323
+	0002  DVC-325
+	0100  DC-220
+	0110  DC-260
+	0111  DC-265
+	0112  DC-290
+	0120  DC-240
+	0121  DC-240 (PTP firmware)
+	0130  DC-280
+	0131  DC-5000
+	0132  DC-3400
+	0140  DC-4800
+	0160  DC4800
+	0170  DX3900
+	0200  Digital Camera
+	0300  EZ-200
+	0400  MC3
+	0402  Digital Camera
+	0403  Z7590
+	0500  DX3500
+	0510  DX3600
+	0525  DX3215
+	0530  DX3700
+	0535  EasyShare CX4230 Camera
+	0540  LS420
+	0550  DX4900
+	0555  DX4330
+	0560  CX4200
+	0565  CX4210
+	0566  CX4300
+	0567  LS753
+	0568  LS443
+	0569  LS663
+	0570  DX6340
+	0571  CX6330
+	0572  DX6440
+	0573  CX6230
+	0574  CX6200
+	0575  DX6490
+	0576  DX4530
+	0577  DX7630
+	0578  CX7300/CX7310
+	0579  CX7220
+	057a  CX7330
+	057b  CX7430
+	057c  CX7530
+	057d  DX7440
+	057e  C300
+	057f  DX7590
+	0580  Z730
+	0581  Digital Camera
+	0582  Digital Camera
+	0583  Digital Camera
+	0584  CX6445
+	0585  Digital Camera
+	0586  CX7525
+	0587  Digital Camera
+	0588  Digital Camera
+	0589  EasyShare C360
+	058a  C310
+	058b  Digital Camera
+	058c  C330
+	058d  C340
+	058e  V530
+	058f  V550
+	0590  Digital Camera
+	0591  Digital Camera
+	0592  Digital Camera
+	0593  Digital Camera
+	0594  Digital Camera
+	0595  Digital Camera
+	0596  Digital Camera
+	0597  Digital Camera
+	0598  EASYSHARE M1033 digital camera
+	0599  Digital Camera
+	059a  Digital Camera
+	059b  Digital Camera
+	059c  Digital Camera
+	059d  Digital Camera
+	059e  Digital Camera
+	059f  Digital Camera
+	05a0  Digital Camera
+	05a1  Digital Camera
+	05a2  Digital Camera
+	05a3  Digital Camera
+	05a4  Digital Camera
+	05a5  Digital Camera
+	05a6  Digital Camera
+	05a7  Digital Camera
+	05a8  Digital Camera
+	05a9  Digital Camera
+	05aa  Digital Camera
+	05ab  Digital Camera
+	05ac  Digital Camera
+	05ad  Digital Camera
+	05ae  Digital Camera
+	05af  Digital Camera
+	05b0  Digital Camera
+	05b1  Digital Camera
+	05b2  Digital Camera
+	05b3  EasyShare Z710 Camera
+	05b4  Digital Camera
+	05b5  Digital Camera
+	05b6  Digital Camera
+	05b7  Digital Camera
+	05b8  Digital Camera
+	05b9  Digital Camera
+	05ba  Digital Camera
+	05bb  Digital Camera
+	05bc  Digital Camera
+	05bd  Digital Camera
+	05be  Digital Camera
+	05bf  Digital Camera
+	05c0  Digital Camera
+	05c1  Digital Camera
+	05c2  Digital Camera
+	05c3  Digital Camera
+	05c4  Digital Camera
+	05c5  Digital Camera
+	05c8  EASYSHARE Z1485 IS Digital Camera
+	05d3  EasyShare M320 Camera
+	05d4  EasyShare C180 Digital Camera
+	1001  EasyShare SV811 Digital Picture Frame
+	4000  InkJet Color Printer
+	4021  Photo Printer 6800
+	4022  1400 Digital Photo Printer
+	4023  Photo Printer 8800 / 9810
+	402b  Photo Printer 6850
+	402e  605 Photo Printer
+	4034  805 Photo Printer
+	4035  7000 Photo Printer
+	4037  7010 Photo Printer
+	4038  7015 Photo Printer
+	404d  8810 Photo Printer
+	404f  305 Photo Printer
+	4056  ESP 7200 Series AiO
+	4109  EasyShare Printer Dock Series 3
+	410d  EasyShare G600 Printer Dock
+	5010  Wireless Adapter
+	5012  DBT-220 Bluetooth Adapter
+	6001  i30
+	6002  i40
+	6003  i50
+	6004  i60
+	6005  i80
+	6029  i900
+	602a  i900
+040b  Weltrend Semiconductor
+	0a68  Func MS-3 gaming mouse [WT6573F MCU]
+	2000  wired Keyboard [Dynex DX-WRK1401]
+	2367  Human Interface Device [HP CalcPad 200 Calculator and Numeric Keypad]
+	6510  Weltrend Bar Code Reader
+	6520  Xploder Xbox Memory Unit (8MB)
+	6533  Speed-Link Competition Pro
+	6543  Manhattan Magnetic Card Strip Reader
+040c  VTech Computers, Ltd
+040d  VIA Technologies, Inc.
+	3184  VNT VT6656 USB-802.11 Wireless LAN Adapter
+	340f  Audinst HUD-mx2
+	6205  USB 2.0 Card Reader
+040e  MCCI
+040f  Echo Speech Corp.
+0411  BUFFALO INC. (formerly MelCo., Inc.)
+	0001  LUA-TX Ethernet [pegasus]
+	0005  LUA-TX Ethernet
+	0006  WLI-USB-L11 Wireless LAN Adapter
+	0009  LUA2-TX Ethernet
+	000b  WLI-USB-L11G-WR Wireless LAN Adapter
+	000d  WLI-USB-L11G Wireless LAN Adapter
+	0012  LUA-KTX Ethernet
+	0013  USB2-IDE Adapter
+	0016  WLI-USB-S11 802.11b Adapter
+	0018  USB2-IDE Adapter
+	001c  USB-IDE Bridge: DUB-PxxG
+	0027  WLI-USB-KS11G 802.11b Adapter
+	002a  SMSC USB97C202 "HD-HB300V2-EU"
+	003d  LUA-U2-KTX Ethernet
+	0044  WLI-USB-KB11 Wireless LAN Adapter
+	004b  WLI-USB-G54 802.11g Adapter [Broadcom 4320 USB]
+	004d  WLI-USB-B11 Wireless LAN Adapter
+	0050  WLI2-USB2-G54 Wireless LAN Adapter
+	005e  WLI-U2-KG54-YB WLAN
+	0065  Python2 WDM Encoder
+	0066  WLI-U2-KG54 WLAN
+	0067  WLI-U2-KG54-AI WLAN
+	006e  LUA-U2-GT 10/100/1000 Ethernet Adapter
+	0089  RUF-C/U2 Flash Drive
+	008b  Nintendo Wi-Fi
+	0091  WLI-U2-KAMG54 Wireless LAN Adapter
+	0092  WLI-U2-KAMG54 Bootloader
+	0097  WLI-U2-KG54-BB
+	00a9  WLI-U2-AMG54HP Wireless LAN Adapter
+	00aa  WLI-U2-AMG54HP Bootloader
+	00b3  PC-OP-RS1 RemoteStation
+	00bc  WLI-U2-KG125S 802.11g Adapter [Broadcom 4320 USB]
+	00ca  802.11n Network Adapter
+	00cb  WLI-U2-G300N 802.11n Adapter
+	00d8  WLI-U2-SG54HP
+	00d9  WLI-U2-G54HP
+	00da  WLI-U2-KG54L 802.11bg [ZyDAS ZD1211B]
+	00db  External Hard Drive HD-PF32OU2 [Buffalo Ministation]
+	00e8  WLI-UC-G300N Wireless LAN Adapter [Ralink RT2870]
+	00f9  Portable DVD Writer (DVSM-PL58U2)
+	0105  External Hard Drive HD-CEU2 [Drive Station]
+	012c  SATA Bridge
+	012e  WLI-UC-AG300N Wireless LAN Adapter
+	0148  WLI-UC-G300HP Wireless LAN Adapter
+	0150  WLP-UC-AG300 Wireless LAN Adapter
+	0157  External Hard Drive HD-PEU2
+	0158  WLI-UC-GNHP Wireless LAN Adapter
+	015d  WLI-UC-GN Wireless LAN Adapter [Ralink RT3070]
+	016f  WLI-UC-G301N Wireless LAN Adapter [Ralink RT3072]
+	017f  Sony UWA-BR100 802.11abgn Wireless Adapter [Atheros AR7010+AR9280]
+	019e  WLI-UC-GNP Wireless LAN Adapter
+	01a1  MiniStation Metro
+	01a2  WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070]
+	01ba  SATA Bridge
+	01dc  Ultra-Slim Portable DVD Writer (DVSM-PC58U2V)
+	01de  External Hard Drive HD-PCTU3 [Buffalo MiniStation]
+	01ea  SATA Bridge
+	01ee  WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070]
+	01f1  SATA Adapter [HD-LBU3]
+	01fd  WLI-UC-G450 Wireless LAN Adapter
+	027e  HD-LCU3
+0412  Award Software International
+0413  Leadtek Research, Inc.
+	1310  WinFast TV - NTSC + FM
+	1311  WinFast TV - NTSC + MTS + FM
+	1312  WinFast TV - PAL BG + FM
+	1313  WinFast TV - PAL BG+TXT + FM
+	1314  WinFast TV Audio - PHP PAL I
+	1315  WinFast TV Audio - PHP PAL I+TXT
+	1316  WinFast TV Audio - PHP PAL DK
+	1317  WinFast TV Audio - PHP PAL DK+TXT
+	1318  WinFast TV - PAL I/DK + FM
+	1319  WinFast TV - PAL N + FM
+	131a  WinFast TV Audio - PHP SECAM LL
+	131b  WinFast TV Audio - PHP SECAM LL+TXT
+	131c  WinFast TV Audio - PHP SECAM DK
+	131d  WinFast TV - SECAM DK + TXT + FM
+	131e  WinFast TV - NTSC Japan + FM
+	1320  WinFast TV - NTSC
+	1321  WinFast TV - NTSC + MTS
+	1322  WinFast TV - PAL BG
+	1323  WinFast TV - PAL BG+TXT
+	1324  WinFast TV Audio - PHP PAL I
+	1325  WinFast TV Audio - PHP PAL I+TXT
+	1326  WinFast TV Audio - PHP PAL DK
+	1327  WinFast TV Audio - PHP PAL DK+TXT
+	1328  WinFast TV - PAL I/DK
+	1329  WinFast TV - PAL N
+	132a  WinFast TV Audio - PHP SECAM LL
+	132b  WinFast TV Audio - PHP SECAM LL+TXT
+	132c  WinFast TV Audio - PHP SECAM DK
+	132d  WinFast TV - SECAM DK + TXT
+	132e  WinFast TV - NTSC Japan
+	6023  EMP Audio Device
+	6024  WinFast PalmTop/Novo TV Video
+	6025  WinFast DTV Dongle (cold state)
+	6026  WinFast DTV Dongle (warm state)
+	6029  WinFast DTV Dongle Gold
+	6125  WinFast DTV Dongle
+	6126  WinFast DTV Dongle BDA Driver
+	6a03  RTL2832 [WinFast DTV Dongle Mini]
+	6f00  WinFast DTV Dongle (STK7700P based)
+0414  Giga-Byte Technology Co., Ltd
+0416  Winbond Electronics Corp.
+	0035  W89C35 802.11bg WLAN Adapter
+	0101  Hub
+	0961  AVL Flash Card Reader
+	3810  Smart Card Controller
+	3811  Generic Controller - Single interface
+	3812  Smart Card Controller_2Interface
+	3813  Panel Display
+	5011  Virtual Com Port
+	511b  Nuvoton Nu-Link1 ICE
+	511c  Nuvoton Nu-Link1 ICE
+	511d  Nuvoton Nu-Link1 ICE/VCOM
+	511e  Nuvoton Nu-Link1 MSC/VCOM
+	5200  Nuvoton Nu-Link2-ME ICE/MSC/VCOM
+	5201  Nuvoton Nu-Link2-Pro ICE/MSC/VCOM
+	5210  Nuvoton Nu-Link2 MSC FW UPGRADE
+	5211  Nuvoton Nu-Link2 HID FW UPGRADE
+	5518  4-Port Hub
+	551a  PC Sync Keypad
+	551b  PC Async Keypad
+	551c  Sync Tenkey
+	551d  Async Tenkey
+	551e  Keyboard
+	551f  Keyboard w/ Sys and Media
+	5521  Keyboard
+	6481  16-bit Scanner
+	7721  Memory Stick Reader/Writer
+	7722  Memory Stick Reader/Writer
+	7723  SD Card Reader
+	b23c  KT108 keyboard
+	c141  Barcode Scanner
+0417  Symbios Logic
+0418  AST Research
+0419  Samsung Info. Systems America, Inc.
+	0001  IrDA Remote Controller / Creative Cordless Mouse
+	0600  Desktop Wireless 6000
+	2694  Laila
+	3001  Xerox P1202 Laser Printer
+	3003  Olivetti PG L12L
+	3201  Docuprint P8ex
+	3404  SCX-5x12 series
+	3406  MFP 830 series
+	3407  ML-912
+	3601  InkJet Color Printer
+	3602  InkJet Color Printer
+	4602  Remote NDIS Network Device
+	8001  Hub
+	8002  SyncMaster HID Monitor Control
+	aa03  SDAS-3 MP3 Player
+041a  Phoenix Technologies, Ltd
+041b  d'TV
+041d  S3, Inc.
+041e  Creative Technology, Ltd
+	0414  HS-720 Headset
+	1002  Nomad II
+	1003  Blaster GamePad Cobra
+	1050  GamePad Cobra
+	1053  Mouse Gamer HD7600L
+	200c  MuVo V100
+	2020  Zen X-Fi 2
+	2029  ZiiO
+	2801  Prodikeys PC-MIDI multifunction keyboard
+	3000  SoundBlaster Extigy
+	3002  SB External Composite Device
+	3010  SoundBlaster MP3+
+	3014  SB External Composite Device
+	3015  Sound Blaster Digital Music LX
+	3020  SoundBlaster Audigy 2 NX
+	3030  SB External Composite Device
+	3040  SoundBlaster Live! 24-bit External SB0490
+	3060  Sound Blaster Audigy 2 ZS External
+	3061  SoundBlaster Audigy 2 ZS Video Editor
+	3090  Sound Blaster Digital Music SX
+	30d0  Xmod
+	30d3  Sound Blaster Play!
+	3100  IR Receiver (SB0540)
+	3121  WoW tap chat
+	3220  Sound Blaster Tactic(3D) Sigma sound card
+	3232  Sound Blaster Premium HD [SBX]
+	3237  SB X-Fi Surround 5.1 Pro
+	3241  Sound Blaster JAM
+	3263  SB X-Fi Surround 5.1 Pro
+	3f00  E-Mu Xboard 25 MIDI Controller
+	3f02  E-Mu 0202
+	3f04  E-Mu 0404
+	3f07  E-Mu Xmidi 1x1
+	3f0e  Xmidi 1x1 Tab
+	4003  VideoBlaster Webcam Go Plus [W9967CF]
+	4004  Nomad II MG
+	4005  Webcam Blaster Go ES
+	4007  Go Mini
+	400a  PC-Cam 300
+	400b  PC-Cam 600
+	400c  Webcam 5 [pwc]
+	400d  Webcam PD1001
+	400f  PC-CAM 550 (Composite)
+	4011  Webcam PRO eX
+	4012  PC-CAM350
+	4013  PC-Cam 750
+	4015  CardCam Value
+	4016  CardCam
+	4017  Webcam Mobile [PD1090]
+	4018  Webcam Vista [PD1100]
+	4019  Audio Device
+	401a  Webcam Vista [PD1100]
+	401c  Webcam NX [PD1110]
+	401d  Webcam NX Ultra
+	401e  Webcam NX Pro
+	401f  Webcam Notebook [PD1171]
+	4020  Webcam NX
+	4021  Webcam NX Ultra
+	4022  Webcam NX Pro
+	4028  Vista Plus cam [VF0090]
+	4029  Webcam Live!
+	402f  DC-CAM 3000Z
+	4034  Webcam Instant
+	4035  Webcam Instant
+	4036  Webcam Live!/Live! Pro
+	4037  Webcam Live!
+	4038  ORITE CCD Webcam [PC370R]
+	4039  Webcam Live! Effects
+	403a  Webcam NX Pro 2
+	403b  Creative Webcam Vista [VF0010]
+	403c  Webcam Live! Ultra
+	403d  Webcam Notebook Ultra
+	403e  Webcam Vista Plus
+	4041  Webcam Live! Motion
+	4043  Vibra Plus Webcam
+	4045  Live! Cam Voice
+	4049  Live! Cam Voice
+	4051  Live! Cam Notebook Pro [VF0250]
+	4052  Live! Cam Vista IM
+	4053  Live! Cam Video IM
+	4054  Live! Cam Video IM
+	4055  Live! Cam Video IM Pro
+	4056  Live! Cam Video IM Pro
+	4057  Live! Cam Optia
+	4058  Live! Cam Optia AF
+	405f  WebCam Vista (VF0330)
+	4061  Live! Cam Notebook Pro [VF0400]
+	4063  Live! Cam Video IM Pro
+	4068  Live! Cam Notebook [VF0470]
+	406c  Live! Cam Sync [VF0520]
+	4083  Live! Cam Socialize [VF0640]
+	4087  Live! Cam Socialize HD 1080 [VF0680]
+	4088  Live! Cam Chat HD [VF0700]
+	4095  Live! Cam Sync HD [VF0770]
+	4097  Live! Cam Chat HD [VF0700]
+	4099  Creative VF0800 [RealSense Camera SR300]
+	4100  Nomad Jukebox 2
+	4101  Nomad Jukebox 3
+	4102  NOMAD MuVo^2
+	4106  Nomad MuVo
+	4107  NOMAD MuVo
+	4108  Nomad Jukebox Zen
+	4109  Nomad Jukebox Zen NX
+	410b  Nomad Jukebox Zen USB 2.0
+	410c  Nomad MuVo NX
+	410f  NOMAD MuVo^2 (Flash)
+	4110  Nomad Jukebox Zen Xtra
+	4111  Dell Digital Jukebox
+	4116  MuVo^2
+	4117  Nomad MuVo TX
+	411b  Zen Touch
+	411c  Nomad MuVo USB 2.0
+	411d  Zen
+	411e  Zen Micro
+	4120  Nomad MuVo TX FM
+	4123  Zen Portable Media Center
+	4124  MuVo^2 FM (uHDD)
+	4126  Dell DJ (2nd gen)
+	4127  Dell DJ
+	4128  NOMAD Jukebox Zen Xtra (mtp)
+	412b  MuVo N200 with FM radio
+	412f  Dell Digital Jukebox 2.Gen
+	4130  Zen Micro (mtp)
+	4131  DAP-HD0014 [Zen Touch] (MTP)
+	4133  Mass Storage Device
+	4134  Zen Neeon
+	4136  Zen Sleek
+	4137  Zen Sleek (mtp)
+	4139  Zen Nano Plus
+	413c  Zen MicroPhoto
+	4150  Zen V (MTP)
+	4151  Zen Vision:M (mtp)
+	4152  Zen V Plus
+	4153  Zen Vision W
+	4154  Zen Stone
+	4155  Zen Stone plus
+	4157  Zen (MTP)
+	500f  Broadband Blaster 8012U-V
+	5015  TECOM Bluetooth Device
+	ffff  Webcam Live! Ultra
+041f  LCS Telegraphics
+0420  Chips and Technologies
+	1307  Celly SIM Card Reader
+0421  Nokia Mobile Phones
+	0001  E61i (PC Suite mode)
+	0018  6288 GSM Smartphone
+	0019  6288 GSM Smartphone (imaging mode)
+	001a  6288 GSM Smartphone (file transfer mode)
+	0024  5610 XpressMusic (Storage mode)
+	0025  5610 XpressMusic (PC Suite mode)
+	0028  5610 XpressMusic (Imaging mode)
+	002d  6120 Phone (Mass storage mode)
+	002e  6120 Phone (Media-Player mode)
+	002f  6120 Phone (PC-Suite mode)
+	0042  E51 (PC Suite mode)
+	0064  3109c GSM Phone
+	006b  5310 Xpress Music (PC Suite mode)
+	006c  5310 Xpress music (Storage mode)
+	006d  N95 (Storage mode)
+	006e  N95 (Multimedia mode)
+	006f  N95 (Printing mode)
+	0070  N95 (PC Suite mode)
+	0096  N810 Internet Tablet
+	00aa  E71 (Mass storage mode)
+	00ab  E71 (PC Suite mode)
+	00e4  E71 (Media transfer mode)
+	0103  ADL Flashing Engine AVALON Parent
+	0104  ADL Re-Flashing Engine Parent
+	0105  Nokia Firmware Upgrade Mode
+	0106  ROM Parent
+	010d  E75 (Storage Mode)
+	010e  E75 (PC Suite mode)
+	010f  E75 (Media transfer mode)
+	0110  E75 (Imaging Mode)
+	0154  5800 XpressMusic (PC Suite mode)
+	0155  5800 XpressMusic (Multimedia mode)
+	0156  5800 XpressMusic (Storage mode)
+	0157  5800 XpressMusic (Imaging mode)
+	0189  N810 Internet Tablet WiMAX
+	0199  6700 Classic (msc)
+	019a  6700 Classic (PC Suite)
+	019b  6700 Classic (mtp)
+	01b0  6303 classic Phone (PC Suite mode)
+	01b1  6303 classic Phone (Mass storage mode)
+	01b2  6303 classic Phone (Printing and media mode)
+	01c7  N900 (Storage Mode)
+	01c8  N900/N950 (PC-Suite Mode)
+	0228  5530 XpressMusic
+	023a  6730 Classic
+	026a  N97 (mass storage)
+	026b  N97 (Multimedia)
+	026c  N97 (PC Suite)
+	026d  N97 (Pictures)
+	0295  660i/6600i Slide Phone (Mass Storage)
+	0297  660i/6600i Slide Phone (Still Image)
+	02e1  5230 (Storage mode)
+	02e2  5230 (Multimedia mode)
+	02e3  5230 (PC-Suite mode)
+	02e4  5230 (Imaging mode)
+	0360  C1-01 Ovi Suite Mode
+	0396  C7-00 (Modem mode)
+	03a4  C5 (Storage mode)
+	03c0  C7-00 (Mass storage mode)
+	03c1  C7-00 (Media transfer mode)
+	03c2  Sim
+	03cd  C7-00 (Nokia Suite mode)
+	03d1  N950 (Storage Mode)
+	03d2  N950 (PC Suite mode)
+	0400  7600 Phone Parent
+	0401  6650 GSM Phone
+	0402  6255 Phone Parent
+	0404  5510
+	0405  9500 GSM Communicator
+	0407  Music Player HDR-1(tm)
+	040b  N-Gage GSM Phone
+	040d  6620 Phone Parent
+	040e  6651 Phone Parent
+	040f  6230 GSM Phone
+	0410  6630 Imaging Smartphone
+	0411  7610 Phone Parent
+	0413  6260 Phone Parent
+	0414  7370
+	0415  9300 GSM Smartphone
+	0416  6170 Phone Parent
+	0417  7270 Phone Parent
+	0418  E70 (PC Suite mode)
+	0419  E60 (PC Suite mode)
+	041a  9500 GSM Communicator (RNDIS)
+	041b  9300 GSM Smartphone (RNDIS)
+	041c  7710 Phone Parent
+	041d  6670 Phone Parent
+	041e  6680
+	041f  6235 Phone Parent
+	0421  3230 Phone Parent
+	0422  6681 Phone Parent
+	0423  6682 Phone Parent
+	0428  6230i Modem
+	0429  6230i MultiMedia Card
+	0431  770/N800 Internet Tablet
+	0432  N90 Phone Parent
+	0435  E70 (IP Passthrough/RNDIS mode)
+	0436  E60 (IP Passthrough/RNDIS mode)
+	0437  6265 Phone Parent
+	043a  N70 USB Phone Parent
+	043b  3155 Phone Parent
+	043c  6155 Phone Parent
+	043d  6270 Phone Parent
+	0443  N70 Phone Parent
+	0444  N91
+	044c  NM850iG Phone Parent
+	044d  E61 (PC Suite mode)
+	044e  E61 (Data Exchange mode)
+	044f  E61 (IP Passthrough/RNDIS mode)
+	0453  9300 Phone Parent
+	0456  6111 Phone Parent
+	0457  6111 Phone (Printing mode)
+	045a  6280 Phone Parent
+	045d  6282 Phone Parent
+	046e  6110 Navigator
+	0471  6110 Navigator
+	0485  MTP Device
+	04b9  5300
+	04bc  5200 (Nokia mode)
+	04bd  5200 (Storage mode)
+	04be  5200 (MTP mode)
+	04c3  N800 Internet Tablet
+	04ce  E90 Communicator (PC Suite mode)
+	04cf  E90 Communicator (Storage mode)
+	04f0  Nokia N95 (PC Suite mode)
+	04f9  6300 (PC Suite mode)
+	0508  E65 (PC Suite mode)
+	0509  E65 (Storage mode)
+	0518  N9 (Storage mode)
+	0519  N9 (RNDIS/Ethernet mode)
+	051a  N9 (PC Suite mode)
+	054d  C2-01
+	0600  Digital Pen SU-1B
+	0610  CS-15 (Internet Stick 3G modem)
+	0661  Lumia 620/920
+	0662  301 Dual SIM (Mass Storage)
+	0663  301 Dual SIM
+	069a  130 [RM-1035] (Charging only)
+	06fc  Lumia 640 Phone
+	0720  X (RM-980)
+	0800  Connectivity Cable DKU-5
+	0801  Data Cable DKU-6
+	0802  CA-42 Phone Parent
+0422  ADI Systems, Inc.
+0423  Computer Access Technology Corp.
+	000a  NetMate Ethernet
+	000c  NetMate2 Ethernet
+	000d  USB Chief Analyzer
+	0100  Generic Universal Protocol Analyzer
+	0101  UPA USBTracer
+	0200  Generic 10K Universal Protocol Analyzer
+	020a  PETracer ML
+	0300  Generic Universal Protocol Analyzer
+	0301  2500H Tracer Trainer
+	030a  PETracer x1
+	1237  Andromeda Hub
+0424  Microchip Technology, Inc. (formerly SMSC)
+	0001  Integrated Hub
+	0140  LPC47M14x hub
+	0acd  Sitecom Internal Multi Memory reader/writer MD-005
+	0fdc  Floppy
+	10cd  Sitecom Internal Multi Memory reader/writer MD-005
+	2020  USB Hub
+	20cd  Sitecom Internal Multi Memory reader/writer MD-005
+	20fc  6-in-1 Card Reader
+	2134  Hub
+	2228  9-in-2 Card Reader
+	223a  8-in-1 Card Reader
+	2412  Hub
+	2503  USB 2.0 Hub
+	2504  Hub
+	2507  hub
+	2512  USB 2.0 Hub
+	2513  2.0 Hub
+	2514  USB 2.0 Hub
+	2517  Hub
+	2524  USB MultiSwitch Hub
+	2602  USB 2.0 Hub
+	2640  USB 2.0 Hub
+	2660  Hub
+	2744  Hub
+	274d  HTC Hub Controller
+	2807  Hub
+	3fc7  RME Babyface audio system
+	3fcc  RME MADIface
+	4041  Hub and media card controller
+	4060  Ultra Fast Media Reader
+	4064  Ultra Fast Media Reader
+	4712  USB4712 high-speed hub
+	4713  USB4715 high-speed hub (2 ports disabled)
+	4714  USB4715 high-speed hub (1 port disabled)
+	4715  USB4715 high-speed hub
+	4910  USB491x hub integrated functions (primary)
+	4912  USB4912 high-speed hub (1 port disabled)
+	4914  USB4914 high-speed hub
+	4916  USB4916 high-speed hub
+	4920  USB491x hub integrated functions (secondary)
+	4925  USB4925 high-speed hub (primary upstream)
+	4927  USB4927 high-speed hub (primary upstream)
+	4931  USB4925/4927 high-speed hub (secondary upstream)
+	4940  USB47xx/49xx hub integrated WinUSB
+	4942  USB47xx/49xx hub integrated I2S audio port
+	4943  USB47xx/49xx hub integrated I2S audio + HID port
+	4944  USB47xx/49xx hub integrated serial port
+	4946  USB47xx/49xx hub integrated serial + I2S audio port
+	4947  USB47xx/49xx hub integrated serial + I2S audio + HID port
+	494a  USB47xx/49xx hub integrated WinUSB + I2S audio port
+	494b  USB47xx/49xx hub integrated WinUSB + I2S audio + HID port
+	494c  USB47xx/49xx hub integrated WinUSB + serial port
+	494e  USB47xx/49xx hub integrated WinUSB + serial + I2S audio port
+	494f  USB47xx/49xx hub integrated WinUSB + serial + I2S audio + HID port
+	5434  Hub
+	5534  Hub
+	5744  Hub
+	5807  Hub
+	7500  LAN7500 Ethernet 10/100/1000 Adapter
+	9500  LAN9500/LAN9500i
+	9512  SMC9512/9514 USB Hub
+	9514  SMC9514 Hub
+	9904  LAN9512/LAN9514 Ethernet 10/100 Adapter (SAL10)
+	9e00  LAN9500A/LAN9500Ai
+	a700  2 Port Hub
+	ec00  SMSC9512/9514 Fast Ethernet Adapter
+0425  Motorola Semiconductors HK, Ltd
+	0101  G-Tech Wireless Mouse & Keyboard
+	f102  G-Tech U+P Wireless Mouse
+0426  Integrated Device Technology, Inc.
+	0426  WDM Driver
+0427  Motorola Electronics Taiwan, Ltd
+0428  Advanced Gravis Computer Tech, Ltd
+	4001  GamePad Pro
+0429  Cirrus Logic
+042a  Ericsson Austrian, AG
+042b  Intel Corp.
+	9316  8x931Hx Customer Hub
+042c  Innovative Semiconductors, Inc.
+042d  Micronics
+042e  Acer, Inc.
+	0380  MP3 Player
+042f  Molex, Inc.
+0430  Fujitsu Component Limited
+	0002  109 Keyboard
+	0005  Type 6 Keyboard
+	000a  109 Japanese Keyboard
+	000b  109 Japanese Keyboard
+	0082  109 Japanese Keyboard
+	0083  109 Japanese Keyboard
+	00a2  Type 7 Keyboard
+	0100  3-button Mouse
+	0502  Panasonic CF-19 HID Touch Panel
+	100e  24.1" LCD Monitor v4 / FID-638 Mouse
+	36ba  Bus Powered Hub
+	a101  remote key/mouse for P3 chip
+	a102  remote key/mouse/storage for P3 chip
+	a103  remote storage for P3 chip
+	a111  remote keyboard for P4 chip
+	a112  remote mouse for P4 chip
+	a113  remote storage for P4 chip
+	a4a2  Ethernet (RNDIS and CDC ethernet)
+	cdab  Raritan KVM dongle
+0431  Itac Systems, Inc.
+	0100  Mouse-Trak 3-button Track Ball
+0432  Unisys Corp.
+	0031  Document Processor
+0433  Alps Electric, Inc.
+	1101  IBM Game Controller
+	abab  Keyboard
+0434  Samsung Info. Systems America, Inc.
+0435  Hyundai Electronics America
+0436  Taugagreining HF
+	0005  CameraMate (DPCM_USB)
+0437  Framatome Connectors USA
+0438  Advanced Micro Devices, Inc.
+	7900  Root Hub
+0439  Voice Technologies Group
+043d  Lexmark International, Inc.
+	0001  Laser Printer
+	0002  Optra E310 Printer
+	0003  Laser Printer
+	0004  Laser Printer
+	0005  Laser Printer
+	0006  Laser Printer
+	0007  Laser Printer
+	0008  Inkjet Color Printer
+	0009  Optra S2450 Printer
+	000a  Laser Printer
+	000b  Inkjet Color Printer
+	000c  Optra E312 Printer
+	000d  Laser Printer
+	000e  Laser Printer
+	000f  Laser Printer
+	0010  Laser Printer
+	0011  Laser Printer
+	0012  Inkjet Color Printer
+	0013  Inkjet Color Printer
+	0014  InkJet Color Printer
+	0015  InkJet Color Printer
+	0016  Z12 Color Jetprinter
+	0017  Z32 printer
+	0018  Z52 Printer
+	0019  Forms Printer
+	001a  Z65 Printer
+	001b  InkJet Photo Printer
+	001c  Kodak Personal Picture Maker 200 Printer
+	001d  InkJet Color Printer
+	001e  InkJet Photo Printer
+	001f  Kodak Personal Picture Maker 200 Card Reader
+	0020  Z51 Printer
+	0021  Z33 Printer
+	0022  InkJet Color Printer
+	0023  Laser Printer
+	0024  Laser Printer
+	0025  InkJet Color Printer
+	0026  InkJet Color Printer
+	0027  InkJet Color Printer
+	0028  InkJet Color Printer
+	0029  Scan Print Copy
+	002a  Scan Print Copy
+	002b  Scan Print Copy
+	002c  Scan Print Copy
+	002d  X70/X73 Scan/Print/Copy
+	002e  Scan Print Copy
+	002f  Scan Print Copy
+	0030  Scan Print Copy
+	0031  Scan Print Copy
+	0032  Scan Print Copy
+	0033  Scan Print Copy
+	0034  Scan Print Copy
+	0035  Scan Print Copy
+	0036  Scan Print Copy
+	0037  Scan Print Copy
+	0038  Scan Print Copy
+	0039  Scan Print Copy
+	003a  Scan Print Copy
+	003b  Scan Print Copy
+	003c  Scan Print Copy
+	003d  X83 Scan/Print/Copy
+	003e  Scan Print Copy
+	003f  Scan Print Copy
+	0040  Scan Print Copy
+	0041  Scan Print Copy
+	0042  Scan Print Copy
+	0043  Scan Print Copy
+	0044  Scan Print Copy
+	0045  Scan Print Copy
+	0046  Scan Print Copy
+	0047  Scan Print Copy
+	0048  Scan Print Copy
+	0049  Scan Print Copy
+	004a  Scan Print Copy
+	004b  Scan Print Copy
+	004c  Scan Print Copy
+	004d  Laser Printer
+	004e  Laser Printer
+	004f  InkJet Color Printer
+	0050  InkJet Color Printer
+	0051  Laser Printer
+	0052  Laser Printer
+	0053  InkJet Color Printer
+	0054  InkJet Color Printer
+	0057  Z35 Printer
+	0058  Laser Printer
+	005a  X63
+	005c  InkJet Color Printer
+	0060  X74/X75 Scanner
+	0061  X74 Hub
+	0065  X5130
+	0069  X74/X75 Printer
+	006d  X125
+	006e  C510
+	0072  X6170 Printer
+	0073  InkJet Color Printer
+	0078  InkJet Color Printer
+	0079  InkJet Color Printer
+	007a  Generic Hub
+	007b  InkJet Color Printer
+	007c  X1110/X1130/X1140/X1150/X1170/X1180/X1185
+	007d  Photo 3150
+	008a  4200 series
+	008b  InkJet Color Printer
+	008c  to CF/SM/SD/MS Card Reader
+	008e  InkJet Color Printer
+	008f  X422
+	0091  Laser Printer E232
+	0093  X5250
+	0095  E220 Printer
+	0096  2200 series
+	0097  P6250
+	0098  7100 series
+	009e  P910 series Human Interface Device
+	009f  InkJet Color Printer
+	00a9  IBM Infoprint 1410 MFP
+	00ab  InkJet Color Printer
+	00b2  3300 series
+	00b8  7300 series
+	00b9  8300 series
+	00ba  InkJet Color Printer
+	00bb  2300 series
+	00bd  Printing Support
+	00be  Printing Support
+	00bf  Printing Support
+	00c0  6300 series
+	00c1  4300 series
+	00c7  Printing Support
+	00c8  Printing Support
+	00c9  Printing Support
+	00cb  Printing Support
+	00cc  E120(n)
+	00d0  9300 series
+	00d3  X340 Scanner
+	00d4  X342n Scanner
+	00d5  Printing Support
+	00d6  X340 Scanner
+	00e8  X642e
+	00e9  2400 series
+	00f6  3400 series
+	00f7  InkJet Color Printer
+	00ff  InkJet Color Printer
+	010b  2500 series
+	010d  3500-4500 series
+	010f  6500 series
+	0142  X3650 (Printer, Scanner, Copier)
+	01fa  S310 series
+	4303  Xerox WorkCentre Pro 412
+043e  LG Electronics USA, Inc.
+	3001  AN-WF100 802.11abgn Wireless Adapter [Broadcom BCM4323]
+	3004  TWFM-B003D 802.11abgn Wireless Module [Broadcom BCM43236B]
+	3009  VC400
+	3101  AN-WF500 802.11abgn + BT Wireless Adapter [Broadcom BCM43242]
+	42bd  Flatron 795FT Plus Monitor
+	4a4d  Flatron 915FT Plus Monitor
+	7001  MF-PD100 Soul Digital MP3 Player
+	7013  MP3 Player
+	70d7  Mouse Scanner LSM-150 [LG Smart Scan Mouse]
+	70f5  External HDD
+	8484  LPC-U30 Webcam II
+	8585  LPC-UC35 Webcam
+	8888  Electronics VCS Camera II(LPC-U20)
+	9800  Remote Control Receiver_iMON
+	9803  eHome Infrared Receiver
+	9804  DMB Receiver Control
+	9c01  LGE Sync
+043f  RadiSys Corp.
+0440  Eizo Nanao Corp.
+0441  Winbond Systems Lab.
+	1456  Hub
+0442  Ericsson, Inc.
+	abba  Bluetooth Device
+0443  Gateway, Inc.
+	000e  Multimedia Keyboard
+	002e  Millennium Keyboard
+0445  Lucent Technologies, Inc.
+0446  NMB Technologies Corp.
+	6781  Keyboard with PS/2 Mouse Port
+	6782  Keyboard
+0447  Momentum Microsystems
+0449  Duta Multi Robotik
+	0128  Menengah
+	0210  Dasar
+	0612  Lanjutan
+044a  Shamrock Tech. Co., Ltd
+044b  WSI
+044c  CCL/ITRI
+044d  Siemens Nixdorf AG
+044e  Alps Electric Co., Ltd
+	1104  Japanese Keyboard
+	2002  MD-5500 Printer
+	2014  Bluetooth Device
+	3001  UGTZ4 Bluetooth
+	3002  Bluetooth Device
+	3003  Bluetooth Device
+	3004  Bluetooth Adapter
+	3005  Integrated Bluetooth Device
+	3006  Bluetooth Adapter
+	3007  Bluetooth Controller (ALPS/UGX)
+	300c  Bluetooth Controller (ALPS/UGPZ6)
+	300d  Bluetooth Controller (ALPS/UGPZ6)
+	3010  Bluetooth Adapter
+	3017  BCM2046 Bluetooth Device
+	ffff  Compaq Bluetooth Multiport Module
+044f  ThrustMaster, Inc.
+	0400  HOTAS Cougar
+	0402  HOTAS Warthog Joystick
+	0404  HOTAS Warthog Throttle
+	044f  GP XID
+	0f00  Steering Wheel for Xbox
+	0f03  Steering Wheel for Xbox
+	0f07  Controller for Xbox
+	0f0c  Xbox Memory Unit (8MB)
+	0f10  Modena GT Wheel
+	a003  Rage 3D Game Pad
+	a01b  PK-GP301 Driving Wheel
+	a0a0  Top Gun Joystick
+	a0a1  Top Gun Joystick (rev2)
+	a0a3  Fusion Digital GamePad
+	a201  PK-GP201 PlayStick
+	b108  T-Flight Hotas X Flight Stick
+	b10a  T.16000M Joystick
+	b203  360 Modena Pro Wheel
+	b300  Firestorm Dual Power
+	b303  FireStorm Dual Analog 2
+	b304  Firestorm Dual Power
+	b307  vibrating Upad
+	b30b  Wireless VibrationPad
+	b315  Firestorm Dual Analog 3
+	b320  Dual Trigger gamepad PC/PS2 2.0
+	b323  Dual Trigger 3-in-1 (PC Mode)
+	b324  Dual Trigger 3-in-1 (PS3 Mode)
+	b326  Gamepad GP XID
+	b351  F16 MFD 1
+	b352  F16 MFD 2
+	b365  UbiSoft UbiConnect
+	b603  force feedback Wheel
+	b605  force feedback Racing Wheel
+	b651  Ferrari GT Rumble Force Wheel
+	b653  RGT Force Feedback Clutch Racing Wheel
+	b654  Ferrari GT Force Feedback Wheel
+	b677  T150 Racing Wheel
+	b678  T.Flight Rudder Pedals
+	b679  T-Rudder
+	b687  TWCS Throttle
+	b700  Tacticalboard
+0450  DFI, Inc.
+0451  Texas Instruments, Inc.
+	0422  TUSB422 Port Controller with Power Delivery
+	1234  Bluetooth Device
+	1428  Hub
+	1446  TUSB2040/2070 Hub
+	16a2  CC Debugger
+	16a6  BM-USBD1 BlueRobin RF heart rate sensor receiver
+	16a8  CC2531 ZigBee
+	16ae  CC2531 Dongle
+	2036  TUSB2036 Hub
+	2046  TUSB2046 Hub
+	2077  TUSB2077 Hub
+	2f90  SM-USB-DIG
+	3200  TUSB3200 Boot Loader
+	3410  TUSB3410 Microcontroller
+	3f00  OMAP1610
+	3f02  SMC WSKP100 Wi-Fi Phone
+	505f  TUSB5052 Serial
+	5153  TUSB5052 Hub
+	5409  Frontier Labs NEX IA+ Digital Audio Player
+	6000  AU5 ADSL Modem (pre-reenum)
+	6001  AU5 ADSL Modem
+	6060  RNDIS/BeWAN ADSL2+
+	6070  RNDIS/BeWAN ADSL2+
+	625f  TUSB6250 ATA Bridge
+	8041  Hub
+	8042  Hub
+	8043  Hub
+	8140  TUSB8041 4-Port Hub
+	8142  TUSB8041 4-Port Hub
+	9261  TUSB9261 SerialATA-Bridge
+	926b  TUSB9260 Boot Loader
+	bef3  CC1352R1 Launchpad
+	dbc0  Device Bay Controller
+	e001  GraphLink [SilverLink]
+	e003  TI-84 Plus Calculator
+	e004  TI-89 Titanium Calculator
+	e008  TI-84 Plus Silver Calculator
+	e00e  TI-89 Titanium Presentation Link
+	e00f  TI-84 Plus Presentation Link
+	e010  TI SmartPad Keyboard
+	e011  Nspire CAS+ prototype
+	e012  TI-Nspire Calculator
+	e013  Network Bridge
+	e01c  Data Collection Sled [Nspire Lab Cradle, Nspire Datatracker Cradle]
+	e01e  Nspire CX Navigator Access Point
+	e01f  Python Adapter (firmware install mode)
+	e020  Python Adapter
+	e022  Nspire CX II
+	f430  MSP-FET430UIF JTAG Tool
+	f432  eZ430 Development Tool
+	ffff  Bluetooth Device
+0452  Mitsubishi Electronics America, Inc.
+	0021  HID Monitor Controls
+	0050  Diamond Pro 900u CRT Monitor
+	0051  Integrated Hub
+	0100  Control Panel for Leica TCS SP5
+0453  CMD Technology
+	6781  NMB Keyboard
+	6783  Chicony Composite Keyboard
+0454  Vobis Microcomputer AG
+0455  Telematics International, Inc.
+0456  Analog Devices, Inc.
+	f000  FT2232 JTAG ICE [gnICE]
+	f001  FT2232H Hi-Speed JTAG ICE [gnICE+]
+0457  Silicon Integrated Systems Corp.
+	0150  Super Talent 1GB Flash Drive
+	0151  Super Flash 1GB / GXT  64MB Flash Drive
+	0162  SiS162 usb Wireless LAN Adapter
+	0163  SiS163U 802.11 Wireless LAN Adapter
+	0817  SiS-184-ASUS-4352.17 touch panel
+	10e1  HID Touch Controller
+	5401  Wireless Adapter RO80211GS-USB
+0458  KYE Systems Corp. (Mouse Systems)
+	0001  Mouse
+	0002  Genius NetMouse Pro
+	0003  Genius NetScroll+
+	0006  Easy Mouse+
+	0007  Trackbar Emotion
+	000b  NetMouse Wheel(P+U)
+	000c  TACOMA Fingerprint V1.06.01
+	000e  Genius NetScroll Optical
+	0013  TACOMA Fingerprint Mouse V1.06.01
+	001a  Genius WebScroll+
+	002e  NetScroll + Traveler / NetScroll 110
+	0036  Pocket Mouse LE
+	0039  NetScroll+ Superior
+	003a  NetScroll+ Mini Traveler / Genius NetScroll 120
+	004c  Slimstar Pro Keyboard
+	0056  Ergo 300 Mouse
+	0057  Enhanced Gaming Device
+	0059  Enhanced Laser Device
+	005a  Enhanced Device
+	005b  Enhanced Device
+	005c  Enhanced Laser Gaming Device
+	005d  Enhanced Device
+	0061  Bluetooth Dongle
+	0066  Genius Traveler 1000 Wireless Mouse
+	0072  Navigator 335
+	0083  Bluetooth Dongle
+	0087  Ergo 525V Laser Mouse
+	0088  Genius Traveler 515 Laser
+	0089  Genius Traveler 350
+	00ca  Pen Mouse
+	0100  EasyPen Tablet
+	0101  CueCat
+	011b  NetScroll T220
+	0186  Genius DX-120 Mouse
+	1001  Joystick
+	1002  Game Pad
+	1003  Genius VideoCam
+	1004  Flight2000 F-23 Joystick
+	100a  Aashima Technology Trust Sight Fighter Vibration Feedback Joystick
+	2001  ColorPage-Vivid Pro Scanner
+	2004  ColorPage-HR6 V1 Scanner
+	2005  ColorPage-HR6/Vivid3
+	2007  ColorPage-HR6 V2 Scanner
+	2008  ColorPage-HR6 V2 Scanner
+	2009  ColorPage-HR6A Scanner
+	2011  ColorPage-Vivid3x Scanner
+	2012  Plustek Scanner
+	2013  ColorPage-HR7 Scanner
+	2014  ColorPage-Vivid4
+	2015  ColorPage-HR7LE Scanner
+	2016  ColorPage-HR6X Scanner
+	2017  ColorPage-Vivid3xe
+	2018  ColorPage-HR7X
+	2019  ColorPage-HR6X Slim
+	201a  ColorPage-Vivid4xe
+	201b  ColorPage-Vivid4x
+	201c  ColorPage-HR8
+	201d  ColorPage-Vivid 1200 X
+	201e  ColorPage-Slim 1200
+	201f  ColorPage-Vivid 1200 XE
+	2020  ColorPage-Slim 1200 USB2
+	2021  ColorPage-SF600
+	3017  SPEED WHEEL 3 Vibration
+	3018  Wireless 2.4Ghz Game Pad
+	3019  10-Button USB Joystick with Vibration
+	301a  MaxFire G-12U Vibration
+	301c  Genius MaxFighter F-16U
+	301d  Genius MaxFire MiniPad
+	400f  Genius TVGo DVB-T02Q MCE
+	4012  TVGo DVB-T03 [AF9015]
+	5003  G-pen 560 Tablet
+	5004  G-pen Tablet
+	5005  Genius EasyPen M406
+	5012  Genius EasyPen M406W
+	5014  Genius EasyPen 340
+	505e  Genius iSlim 330
+	6001  GF3000F Ethernet Adapter
+	7004  VideoCAM Express V2
+	7006  Dsc 1.3 Smart Camera Device
+	7007  VideoCAM Web
+	7009  G-Shot G312 Still Camera Device
+	700c  VideoCAM Web V3
+	700d  G-Shot G511 Composite Device
+	700f  VideoCAM Web
+	7012  WebCAM USB2.0
+	7014  VideoCAM Live V3
+	701c  G-Shot G512 Still Camera
+	7020  Sim 321C
+	7025  Eye 311Q Camera
+	7029  Genius Look 320s (SN9C201 + HV7131R)
+	702f  Genius Slim 322
+	7035  i-Look 325T Camera
+	7045  Genius Look 1320 V2
+	704c  Genius i-Look 1321
+	704d  Slim 1322AF
+	7055  Slim 2020AF camera
+	705a  Asus USB2.0 Webcam
+	705c  Genius iSlim 1300AF
+	7061  Genius iLook 1321 V2
+	7066  Acer Crystal Eye Webcam
+	7067  Genius iSlim 1300AF V2
+	7068  Genius eFace 1325R
+	706d  Genius iSlim 2000AF V2
+	7076  Genius FaceCam 312
+	7079  FaceCam 2025R
+	707f  TVGo DVB-T03 [RTL2832]
+	7088  WideCam 1050
+	7089  Genius FaceCam 320
+	708c  Genius WideCam F100
+0459  Adobe Systems, Inc.
+045a  SONICblue, Inc.
+	07da  Supra Express 56K modem
+	0b4a  SupraMax 2890 56K Modem [Lucent Atlas]
+	0b68  SupraMax 56K Modem
+	5001  Rio 600 MP3 Player
+	5002  Rio 800 MP3 Player
+	5003  Nike Psa/Play MP3 Player
+	5005  Rio S10 MP3 Player
+	5006  Rio S50 MP3 Player
+	5007  Rio S35 MP3 Player
+	5008  Rio 900 MP3 Player
+	5009  Rio S30 MP3 Player
+	500d  Fuse MP3 Player
+	500e  Chiba MP3 Player
+	500f  Cali MP3 Player
+	5010  Rio S11 MP3 Player
+	501c  Virgin MPF-1000
+	501d  Rio Fuse
+	501e  Rio Chiba
+	501f  Rio Cali
+	503f  Cali256 MP3 Player
+	5042  Rio Forge
+	5202  Rio Riot MP3 Player
+	5210  Rio Karma Music Player
+	5220  Rio Nitrus MP3 Player
+	5221  Rio Eigen
+045b  Hitachi, Ltd
+	0053  RX610 RX-Stick
+	0229  mSATA Adapter [renkforce Pi-102]
+045d  Nortel Networks, Ltd
+045e  Microsoft Corp.
+	0007  SideWinder Game Pad
+	0008  SideWinder Precision Pro
+	0009  IntelliMouse
+	000b  Natural Keyboard Elite
+	000e  SideWinder® Freestyle Pro
+	0014  Digital Sound System 80
+	001a  SideWinder Precision Racing Wheel
+	001b  SideWinder Force Feedback 2 Joystick
+	001c  Internet Keyboard Pro
+	001d  Natural Keyboard Pro
+	001e  IntelliMouse Explorer
+	0023  Trackball Optical
+	0024  Trackball Explorer
+	0025  IntelliEye Mouse
+	0026  SideWinder GamePad Pro
+	0027  SideWinder PnP GamePad
+	0028  SideWinder Dual Strike
+	0029  IntelliMouse Optical
+	002b  Internet Keyboard Pro
+	002d  Internet Keyboard
+	002f  Integrated Hub
+	0033  Sidewinder Strategic Commander
+	0034  SideWinder Force Feedback Wheel
+	0038  SideWinder Precision 2
+	0039  IntelliMouse Optical
+	003b  SideWinder Game Voice
+	003c  SideWinder Joystick
+	0040  Wheel Mouse Optical
+	0047  IntelliMouse Explorer 3.0
+	0048  Office Keyboard 1.0A
+	0053  Optical Mouse
+	0059  Wireless IntelliMouse Explorer
+	005c  Office Keyboard (106/109)
+	005f  Wireless MultiMedia Keyboard
+	0061  Wireless MultiMedia Keyboard (106/109)
+	0063  Wireless Natural MultiMedia Keyboard
+	0065  Wireless Natural MultiMedia Keyboard (106/109)
+	006a  Wireless Optical Mouse (IntelliPoint)
+	006d  eHome Remote Control Keyboard keys
+	006e  MN-510 802.11b Wireless Adapter [Intersil ISL3873B]
+	006f  Smart Display Reference Device
+	0070  Wireless MultiMedia Keyboard
+	0071  Wireless MultiMedia Keyboard (106/109)
+	0072  Wireless Natural MultiMedia Keyboard
+	0073  Wireless Natural MultiMedia Keyboard (106/109)
+	0079  IXI Ogo CT-17 handheld device
+	007a  10/100 USB NIC
+	007d  Notebook Optical Mouse
+	007e  Wireless Transceiver for Bluetooth
+	0080  Digital Media Pro Keyboard
+	0083  Basic Optical Mouse
+	0084  Basic Optical Mouse
+	008a  Wireless Optical Desktop Receiver 2.0A
+	008b  Dual Receiver Wireless Mouse (IntelliPoint)
+	008c  Wireless Intellimouse Explorer 2.0
+	0095  IntelliMouse Explorer 4.0 (IntelliPoint)
+	009c  Wireless Transceiver for Bluetooth 2.0
+	009d  Wireless Optical Desktop 3.0
+	00a0  eHome Infrared Receiver
+	00a4  Compact Optical Mouse, model 1016
+	00b0  Digital Media Pro Keyboard
+	00b4  Digital Media Keyboard 1.0A
+	00b9  Wireless Optical Mouse 3.0
+	00bb  Fingerprint Reader
+	00bc  Fingerprint Reader
+	00bd  Fingerprint Reader
+	00c2  MN-710 802.11g Wireless Adapter [Intersil ISL3886]
+	00c9  MTP Device
+	00ca  Fingerprint Reader
+	00cb  Basic Optical Mouse v2.0
+	00ce  Generic PPC Flash device
+	00d1  Optical Mouse with Tilt Wheel
+	00d2  Notebook Optical Mouse with Tilt Wheel
+	00da  eHome Infrared Receiver
+	00db  Natural Ergonomic Keyboard 4000 V1.0
+	00dd  Comfort Curve Keyboard 2000 V1.0
+	00e1  Wireless Laser Mouse 6000 Receiver
+	00f4  LifeCam VX-6000 (SN9C20x + OV9650)
+	00f5  LifeCam VX-3000
+	00f6  Comfort Optical Mouse 1000
+	00f7  LifeCam VX-1000
+	00f8  LifeCam NX-6000
+	00f9  Wireless Desktop Receiver 3.1
+	0202  Xbox Controller
+	0280  Xbox Memory Unit (8MB)
+	0283  Xbox Communicator
+	0284  Xbox DVD Playback Kit
+	0285  Xbox Controller S
+	0288  Xbox Controller S Hub
+	0289  Xbox Controller S
+	028b  Xbox360 DVD Emulator
+	028d  Xbox360 Memory Unit 64MB
+	028e  Xbox360 Controller
+	028f  Xbox360 Wireless Controller
+	0290  Xbox360 Performance Pipe (PIX)
+	0291  Xbox 360 Wireless Receiver for Windows
+	0292  Xbox360 Wireless Networking Adapter
+	029c  Xbox360 HD-DVD Drive
+	029d  Xbox360 HD-DVD Drive
+	029e  Xbox360 HD-DVD Memory Unit
+	02a0  Xbox360 Big Button IR
+	02a1  Xbox 360 Wireless Receiver for Windows
+	02a8  Xbox360 Wireless N Networking Adapter [Atheros AR7010+AR9280]
+	02ad  Xbox NUI Audio
+	02ae  Xbox NUI Camera
+	02b0  Xbox NUI Motor
+	02b6  Xbox360 Bluetooth Wireless Headset
+	02bb  Kinect Audio
+	02be  Kinect for Windows NUI Audio
+	02bf  Kinect for Windows NUI Camera
+	02c2  Kinect for Windows NUI Motor
+	02d1  Xbox One Controller
+	02d5  Xbox One Digital TV Tuner
+	02dd  Xbox One Controller (Firmware 2015)
+	02e3  Xbox One Elite Controller
+	02e6  Wireless XBox Controller Dongle
+	02ea  Xbox One S Controller
+	02fd  Xbox One S Controller [Bluetooth]
+	0400  Windows Powered Pocket PC 2002
+	0401  Windows Powered Pocket PC 2002
+	0402  Windows Powered Pocket PC 2002
+	0403  Windows Powered Pocket PC 2002
+	0404  Windows Powered Pocket PC 2002
+	0405  Windows Powered Pocket PC 2002
+	0406  Windows Powered Pocket PC 2002
+	0407  Windows Powered Pocket PC 2002
+	0408  Windows Powered Pocket PC 2002
+	0409  Windows Powered Pocket PC 2002
+	040a  Windows Powered Pocket PC 2002
+	040b  Windows Powered Pocket PC 2002
+	040c  Windows Powered Pocket PC 2002
+	040d  Windows Powered Pocket PC 2002
+	040e  Windows Powered Pocket PC 2002
+	040f  Windows Powered Pocket PC 2002
+	0410  Windows Powered Pocket PC 2002
+	0411  Windows Powered Pocket PC 2002
+	0412  Windows Powered Pocket PC 2002
+	0413  Windows Powered Pocket PC 2002
+	0414  Windows Powered Pocket PC 2002
+	0415  Windows Powered Pocket PC 2002
+	0416  Windows Powered Pocket PC 2002
+	0417  Windows Powered Pocket PC 2002
+	0432  Windows Powered Pocket PC 2003
+	0433  Windows Powered Pocket PC 2003
+	0434  Windows Powered Pocket PC 2003
+	0435  Windows Powered Pocket PC 2003
+	0436  Windows Powered Pocket PC 2003
+	0437  Windows Powered Pocket PC 2003
+	0438  Windows Powered Pocket PC 2003
+	0439  Windows Powered Pocket PC 2003
+	043a  Windows Powered Pocket PC 2003
+	043b  Windows Powered Pocket PC 2003
+	043c  Windows Powered Pocket PC 2003
+	043d  Becker Traffic Assist Highspeed 7934
+	043e  Windows Powered Pocket PC 2003
+	043f  Windows Powered Pocket PC 2003
+	0440  Windows Powered Pocket PC 2003
+	0441  Windows Powered Pocket PC 2003
+	0442  Windows Powered Pocket PC 2003
+	0443  Windows Powered Pocket PC 2003
+	0444  Windows Powered Pocket PC 2003
+	0445  Windows Powered Pocket PC 2003
+	0446  Windows Powered Pocket PC 2003
+	0447  Windows Powered Pocket PC 2003
+	0448  Windows Powered Pocket PC 2003
+	0449  Windows Powered Pocket PC 2003
+	044a  Windows Powered Pocket PC 2003
+	044b  Windows Powered Pocket PC 2003
+	044c  Windows Powered Pocket PC 2003
+	044d  Windows Powered Pocket PC 2003
+	044e  Windows Powered Pocket PC 2003
+	044f  Windows Powered Pocket PC 2003
+	0450  Windows Powered Pocket PC 2003
+	0451  Windows Powered Pocket PC 2003
+	0452  Windows Powered Pocket PC 2003
+	0453  Windows Powered Pocket PC 2003
+	0454  Windows Powered Pocket PC 2003
+	0455  Windows Powered Pocket PC 2003
+	0456  Windows Powered Pocket PC 2003
+	0457  Windows Powered Pocket PC 2003
+	0458  Windows Powered Pocket PC 2003
+	0459  Windows Powered Pocket PC 2003
+	045a  Windows Powered Pocket PC 2003
+	045b  Windows Powered Pocket PC 2003
+	045c  Windows Powered Pocket PC 2003
+	045d  Windows Powered Pocket PC 2003
+	045e  Windows Powered Pocket PC 2003
+	045f  Windows Powered Pocket PC 2003
+	0460  Windows Powered Pocket PC 2003
+	0461  Windows Powered Pocket PC 2003
+	0462  Windows Powered Pocket PC 2003
+	0463  Windows Powered Pocket PC 2003
+	0464  Windows Powered Pocket PC 2003
+	0465  Windows Powered Pocket PC 2003
+	0466  Windows Powered Pocket PC 2003
+	0467  Windows Powered Pocket PC 2003
+	0468  Windows Powered Pocket PC 2003
+	0469  Windows Powered Pocket PC 2003
+	046a  Windows Powered Pocket PC 2003
+	046b  Windows Powered Pocket PC 2003
+	046c  Windows Powered Pocket PC 2003
+	046d  Windows Powered Pocket PC 2003
+	046e  Windows Powered Pocket PC 2003
+	046f  Windows Powered Pocket PC 2003
+	0470  Windows Powered Pocket PC 2003
+	0471  Windows Powered Pocket PC 2003
+	0472  Windows Powered Pocket PC 2003
+	0473  Windows Powered Pocket PC 2003
+	0474  Windows Powered Pocket PC 2003
+	0475  Windows Powered Pocket PC 2003
+	0476  Windows Powered Pocket PC 2003
+	0477  Windows Powered Pocket PC 2003
+	0478  Windows Powered Pocket PC 2003
+	0479  Windows Powered Pocket PC 2003
+	047a  Windows Powered Pocket PC 2003
+	047b  Windows Powered Pocket PC 2003
+	04c8  Windows Powered Smartphone 2002
+	04c9  Windows Powered Smartphone 2002
+	04ca  Windows Powered Smartphone 2002
+	04cb  Windows Powered Smartphone 2002
+	04cc  Windows Powered Smartphone 2002
+	04cd  Windows Powered Smartphone 2002
+	04ce  Windows Powered Smartphone 2002
+	04d7  Windows Powered Smartphone 2003
+	04d8  Windows Powered Smartphone 2003
+	04d9  Windows Powered Smartphone 2003
+	04da  Windows Powered Smartphone 2003
+	04db  Windows Powered Smartphone 2003
+	04dc  Windows Powered Smartphone 2003
+	04dd  Windows Powered Smartphone 2003
+	04de  Windows Powered Smartphone 2003
+	04df  Windows Powered Smartphone 2003
+	04e0  Windows Powered Smartphone 2003
+	04e1  Windows Powered Smartphone 2003
+	04e2  Windows Powered Smartphone 2003
+	04e3  Windows Powered Smartphone 2003
+	04e4  Windows Powered Smartphone 2003
+	04e5  Windows Powered Smartphone 2003
+	04e6  Windows Powered Smartphone 2003
+	04e7  Windows Powered Smartphone 2003
+	04e8  Windows Powered Smartphone 2003
+	04e9  Windows Powered Smartphone 2003
+	04ea  Windows Powered Smartphone 2003
+	04ec  Windows Phone (Zune)
+	063e  Zune HD Media Player
+	0640  KIN Phone
+	0641  KIN Phone
+	0642  KIN Phone
+	0707  Wireless Laser Mouse 8000
+	0708  Transceiver v 3.0 for Bluetooth
+	070a  Charon Bluetooth Dongle (DFU)
+	070f  LifeChat LX-3000 Headset
+	0710  Zune Media Player
+	0713  Wireless Presenter Mouse 8000
+	0719  Xbox 360 Wireless Adapter
+	071f  Mouse/Keyboard 2.4GHz Transceiver V2.0
+	0721  LifeCam NX-3000 (UVC-compliant)
+	0723  LifeCam VX-7000 (UVC-compliant)
+	0724  SideWinder Mouse
+	0728  LifeCam VX-5000
+	0730  Digital Media Keyboard 3000
+	0734  Wireless Optical Desktop 700
+	0736  Sidewinder X5 Mouse
+	0737  Compact Optical Mouse 500
+	0745  Nano Transceiver v1.0 for Bluetooth
+	074a  LifeCam VX-500 [1357]
+	0750  Wired Keyboard 600
+	0752  Wired Keyboard 400
+	075d  LifeCam Cinema
+	0761  LifeCam VX-2000
+	0765  Xbox360 Slim Internal Wireless Module (1400) [Marvell 88W8786U]
+	0766  LifeCam VX-800
+	0768  Sidewinder X4
+	076c  Comfort Mouse 4500
+	076d  LifeCam HD-5000
+	0770  LifeCam VX-700
+	0772  LifeCam Studio
+	0779  LifeCam HD-3000
+	077f  LifeChat LX-6000 Headset
+	0780  Comfort Curve Keyboard 3000
+	0797  Optical Mouse 200
+	0799  Surface Pro embedded keyboard
+	07a5  Wireless Receiver 1461C
+	07b2  2.4GHz Transceiver v8.0 used by mouse Wireless Desktop 900
+	07b6  Comfort Curve Keyboard 3000
+	07b9  Wired Keyboard 200
+	07c6  RTL8153 GigE [Surface Ethernet Adapter]
+	07ca  Surface Pro 3 Docking Station Audio Device
+	07cd  Surface Keyboard
+	07f8  Wired Keyboard 600 (model 1576)
+	07fd  Nano Transceiver 1.1
+	0800  Wireless keyboard (All-in-One-Media)
+	0810  LifeCam HD-3000
+	0823  Classic IntelliMouse
+	0900  Surface Dock Hub
+	0901  Surface Dock Hub
+	0902  Surface Dock Hub
+	0903  Surface Dock Hub
+	0904  Surface Dock Extender
+	0905  Surface Dock Audio
+	090b  Hub
+	090c  SD Card
+	091a  Hub
+	0927  RTL8153B GigE [Surface Ethernet Adapter]
+	0955  Hub
+	0957  Hub
+	09a0  RTL8153B GigE [Surface Ethernet Adapter]
+	09c0  Surface Type Cover
+	0a00  Lumia 950 Dual SIM (RM-1118)
+	0b12  Xbox Wireless Controller (model 1914)
+	930a  ISOUSB.SYS Intel 82930 Isochronous IO Test Board
+	ffca  Catalina
+	fff8  Keyboard
+	ffff  Windows CE Mass Storage
+0460  Ace Cad Enterprise Co., Ltd
+	0004  Tablet (5x3.75)
+	0006  LCD Tablet (12x9)
+	0008  Tablet (3x2.25)
+0461  Primax Electronics, Ltd
+	0010  HP PR1101U / Primax PMX-KPR1101U Keyboard
+	0300  G2-300 Scanner
+	0301  G2E-300 Scanner
+	0302  G2-300 #2 Scanner
+	0303  G2E-300 #2 Scanner
+	0340  Colorado 9600 Scanner
+	0341  Colorado 600u Scanner
+	0345  Visioneer 6200 Scanner
+	0346  Memorex Maxx 6136u Scanner
+	0347  Primascan Colorado 2600u/Visioneer 4400 Scanner
+	0360  Colorado 19200 Scanner
+	0361  Colorado 1200u Scanner
+	0363  VistaScan Astra 3600(ENG)
+	0364  LG Electronics Scanworks 600U Scanner
+	0365  VistaScan Astra 3600(ENG)
+	0366  6400
+	0367  VistaScan Astra 3600(ENG)
+	0371  Visioneer Onetouch 8920 Scanner
+	0374  UMAX Astra 2500
+	0375  VistaScan Astra 3600(ENG)
+	0377  Medion MD 5345 Scanner
+	0378  VistaScan Astra 3600(ENG)
+	037b  Medion MD 6190 Scanner
+	037c  VistaScan Astra 3600(ENG)
+	0380  G2-600 Scanner
+	0381  ReadyScan 636i Scanner
+	0382  G2-600 #2 Scanner
+	0383  G2E-600 Scanner
+	038a  UMAX Astra 3000/3600
+	038b  Xerox 2400 Onetouch
+	038c  UMAX Astra 4100
+	0392  Medion/Lifetec/Tevion/Cytron MD 6190
+	03a8  9420M
+	0813  IBM UltraPort Camera
+	0815  Micro Innovations IC200 Webcam
+	0819  Fujifilm IX-30 Camera [webcam mode]
+	081a  Fujifilm IX-30 Camera [storage mode]
+	081c  Elitegroup ECS-C11 Camera
+	081d  Elitegroup ECS-C11 Storage
+	0a00  Micro Innovations Web Cam 320
+	4d01  Comfort Keyboard / Kensington Orbit Elite
+	4d02  Mouse-in-a-Box
+	4d03  Kensington Mouse-in-a-box
+	4d04  Mouse
+	4d06  Balless Mouse (HID)
+	4d0f  HP Optical Mouse
+	4d15  Dell Optical Mouse
+	4d17  Optical Mouse
+	4d20  HP Optical Mouse
+	4d2a  PoPo Elixir Mouse (HID)
+	4d2b  Wireless Laser Mini Mouse (HID)
+	4d2c  PoPo Mini Pointer Mouse (HID)
+	4d2e  Optical Mobile Mouse (HID)
+	4d51  0Y357C PMX-MMOCZUL (B) [Dell Laser Mouse]
+	4d62  HP Laser Mobile Mini Mouse
+	4d75  Rocketfish RF-FLBTAD Bluetooth Adapter
+	4d81  Dell N889 Optical Mouse
+	4d8a  HP Multimedia Keyboard
+	4d91  Laser mouse M-D16DL
+	4d92  Optical mouse M-D17DR
+	4db1  Dell Laptop Integrated Webcam 2Mpix
+	4de3  HP 5-Button Optical Comfort Mouse
+	4de7  webcam
+	4e04  Lenovo Keyboard KB1021
+	4e22  Dell Mouse, 2 Buttons, Modell: MS111-P
+	4e6f  Acer Wired Keyboard Model KBAY211
+	4e72  Acer Wired Keyboard Model KBAY211
+0463  MGE UPS Systems
+	0001  UPS
+	ffff  UPS
+0464  AMP/Tycoelectronics Corp.
+0467  AT&T Paradyne
+0468  Wieson Technologies Co., Ltd
+046a  Cherry GmbH
+	0001  Keyboard
+	0003  My3000 Hub
+	0004  CyBoard Keyboard
+	0005  XX33 SmartCard Reader Keyboard
+	0008  Wireless Keyboard and Mouse
+	0010  SmartBoard XX44
+	0011  G83 (RS 6000) Keyboard
+	0021  CyMotion Expert Combo
+	0023  Keyboard
+	0027  CyMotion Master Solar Keyboard
+	002a  Wireless Mouse & Keyboard
+	002d  SmartTerminal XX44
+	003c  Raptor Gaming Keyboard
+	003d  Raptor Gaming Keyboard Integrated Hub
+	003e  SmartTerminal ST-2xxx
+	0041  G86 6240 Keyboard
+	0080  eHealth Terminal ST 1503
+	0081  eHealth Keyboard G87 1504
+	00a1  SmartCard Reader Keyboard KC 1000 SC
+	0106  R-300 Wireless Mouse Receiver
+	010d  MX-Board 3.0 Keyboard
+	0180  Strait 3.0
+	b090  Keyboard
+	b091  Mouse
+046b  American Megatrends, Inc.
+	0001  Keyboard
+	0101  PS/2 Keyboard, Mouse & Joystick Ports
+	0301  USB 1.0 Hub
+	0500  Serial & Parallel Ports
+	ff10  Virtual Keyboard and Mouse
+046c  Toshiba Corp., Digital Media Equipment
+046d  Logitech, Inc.
+	0082  Acer Aspire 5672 Webcam
+	0200  WingMan Extreme Joystick
+	0203  M2452 Keyboard
+	0242  Chillstream for Xbox 360
+	0301  M4848 Mouse
+	0401  HP PageScan
+	0402  NEC PageScan
+	040f  Logitech/Storm PageScan
+	0430  Mic (Cordless)
+	0801  QuickCam Home
+	0802  Webcam C200
+	0804  Webcam C250
+	0805  Webcam C300
+	0807  Webcam B500
+	0808  Webcam C600
+	0809  Webcam Pro 9000
+	080a  Portable Webcam C905
+	080f  Webcam C120
+	0810  QuickCam Pro
+	0819  Webcam C210
+	081a  Webcam C260
+	081b  Webcam C310
+	081d  HD Webcam C510
+	0820  QuickCam VC
+	0821  HD Webcam C910
+	0823  HD Webcam B910
+	0825  Webcam C270
+	0826  HD Webcam C525
+	0828  HD Webcam B990
+	082b  Webcam C170
+	082c  HD Webcam C615
+	082d  HD Pro Webcam C920
+	0830  QuickClip
+	0836  B525 HD Webcam
+	0837  BCC950 ConferenceCam
+	0840  QuickCam Express
+	0843  Webcam C930e
+	0845  ConferenceCam CC3000e Camera
+	0846  ConferenceCam CC3000e Speakerphone
+	084b  ConferenceCam Connect Video
+	0850  QuickCam Web
+	0857  Logi Group Speakerphone
+	085c  C922 Pro Stream Webcam
+	085e  BRIO Ultra HD Webcam
+	0870  QuickCam Express
+	0882  Logi Group Speakerphone
+	0890  QuickCam Traveler
+	0892  C920 HD Pro Webcam
+	0893  StreamCam
+	0894  CrystalCam
+	0895  QuickCam for Dell Notebooks
+	0896  OrbiCam
+	0897  QuickCam for Dell Notebooks
+	0899  QuickCam for Dell Notebooks
+	089d  QuickCam E2500 series
+	08a0  QuickCam IM
+	08a1  QuickCam IM with sound
+	08a2  Labtec Webcam Pro
+	08a3  QuickCam QuickCam Chat
+	08a6  QuickCam IM
+	08a7  QuickCam Image
+	08a9  Notebook Deluxe
+	08aa  Labtec Notebooks
+	08ac  QuickCam Cool
+	08ad  QuickCam Communicate STX
+	08ae  QuickCam for Notebooks
+	08af  QuickCam Easy/Cool
+	08b0  QuickCam 3000 Pro [pwc]
+	08b1  QuickCam Notebook Pro
+	08b2  QuickCam Pro 4000
+	08b3  QuickCam Zoom
+	08b4  QuickCam Zoom
+	08b5  QuickCam Sphere
+	08b9  QuickCam IM
+	08bd  Microphone (Pro 4000)
+	08c0  QuickCam Pro 3000
+	08c1  QuickCam Fusion
+	08c2  QuickCam PTZ
+	08c3  Camera (Notebooks Pro)
+	08c5  QuickCam Pro 5000
+	08c6  QuickCam for DELL Notebooks
+	08c7  QuickCam OEM Cisco VT Camera II
+	08c9  QuickCam Ultra Vision
+	08ca  Mic (Fusion)
+	08cb  Mic (Notebooks Pro)
+	08cc  Mic (PTZ)
+	08ce  QuickCam Pro 5000
+	08cf  QuickCam UpdateMe
+	08d0  QuickCam Express
+	08d7  QuickCam Communicate STX
+	08d8  QuickCam for Notebook Deluxe
+	08d9  QuickCam IM/Connect
+	08da  QuickCam Messanger
+	08dd  QuickCam for Notebooks
+	08e0  QuickCam Express
+	08e1  Labtec Webcam
+	08e5  C920 PRO HD Webcam
+	08f0  QuickCam Messenger
+	08f1  QuickCam Express
+	08f2  Microphone (Messenger)
+	08f3  QuickCam Express
+	08f4  Labtec Webcam
+	08f5  QuickCam Messenger Communicate
+	08f6  QuickCam Messenger Plus
+	0900  ClickSmart 310
+	0901  ClickSmart 510
+	0903  ClickSmart 820
+	0905  ClickSmart 820
+	0910  QuickCam Cordless
+	0920  QuickCam Express
+	0921  Labtec Webcam
+	0922  QuickCam Live
+	0928  QuickCam Express
+	0929  Labtec Webcam Pro
+	092a  QuickCam for Notebooks
+	092b  Labtec Webcam Plus
+	092c  QuickCam Chat
+	092d  QuickCam Express / Go
+	092e  QuickCam Chat
+	092f  QuickCam Express Plus
+	0950  Pocket Camera
+	0960  ClickSmart 420
+	0970  Pocket750
+	0990  QuickCam Pro 9000
+	0991  QuickCam Pro for Notebooks
+	0992  QuickCam Communicate Deluxe
+	0994  QuickCam Orbit/Sphere AF
+	09a1  QuickCam Communicate MP/S5500
+	09a2  QuickCam Communicate Deluxe/S7500
+	09a4  QuickCam E 3500
+	09a5  Quickcam 3000 For Business
+	09a6  QuickCam Vision Pro
+	09b0  Acer OrbiCam
+	09b2  Fujitsu Webcam
+	09c0  QuickCam for Dell Notebooks Mic
+	09c1  QuickCam Deluxe for Notebooks
+	0a01  USB Headset
+	0a02  Premium Stereo USB Headset 350
+	0a03  Logitech USB Microphone
+	0a04  V20 portable speakers (USB powered)
+	0a07  Z-10 Speakers
+	0a0b  ClearChat Pro USB
+	0a0c  Clear Chat Comfort USB Headset
+	0a10  V10 Notebook Speakers
+	0a13  Z-5 Speakers
+	0a14  USB Headset
+	0a15  G35 Headset
+	0a17  G330 Headset
+	0a1f  G930
+	0a29  H600 [Wireless Headset]
+	0a37  USB Headset H540
+	0a38  Headset H340
+	0a44  Headset H390
+	0a45  960 Headset
+	0a4d  G430 Surround Sound Gaming Headset
+	0a5b  G933 Wireless Headset Dongle
+	0a5d  G933 Headset Battery Charger
+	0a66  [G533 Wireless Headset Dongle]
+	0a8f  H390 headset with microphone
+	0aaa  Logitech G PRO X Gaming Headset
+	0b02  C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode)
+	8801  Video Camera
+	b014  Bluetooth Mouse M336/M337/M535
+	b305  BT Mini-Receiver
+	bfe4  Premium Optical Wheel Mouse
+	c000  N43 [Pilot Mouse]
+	c001  N48/M-BB48/M-UK96A [FirstMouse Plus]
+	c002  M-BA47 [MouseMan Plus]
+	c003  MouseMan
+	c004  WingMan Gaming Mouse
+	c005  WingMan Gaming Wheel Mouse
+	c00b  MouseMan Wheel
+	c00c  Optical Wheel Mouse
+	c00d  MouseMan Wheel+
+	c00e  M-BJ58/M-BJ69 Optical Wheel Mouse
+	c00f  MouseMan Traveler/Mobile
+	c011  Optical MouseMan
+	c012  Mouseman Dual Optical
+	c014  Corded Workstation Mouse
+	c015  Corded Workstation Mouse
+	c016  Optical Wheel Mouse
+	c018  Optical Wheel Mouse
+	c019  Optical Tilt Wheel Mouse
+	c01a  M-BQ85 Optical Wheel Mouse
+	c01b  MX310 Optical Mouse
+	c01c  Optical Mouse
+	c01d  MX510 Optical Mouse
+	c01e  MX518 Optical Mouse
+	c024  MX300 Optical Mouse
+	c025  MX500 Optical Mouse
+	c030  iFeel Mouse
+	c031  iFeel Mouse+
+	c032  MouseMan iFeel
+	c033  iFeel MouseMan+
+	c034  MouseMan Optical
+	c035  Mouse
+	c036  Mouse
+	c037  Mouse
+	c038  Mouse
+	c03d  M-BT96a Pilot Optical Mouse
+	c03e  Premium Optical Wheel Mouse (M-BT58)
+	c03f  M-BT85 [UltraX Optical Mouse]
+	c040  Corded Tilt-Wheel Mouse
+	c041  G5 Laser Mouse
+	c042  G3 Laser Mouse
+	c043  MX320/MX400 Laser Mouse
+	c044  LX3 Optical Mouse
+	c045  Optical Mouse
+	c046  RX1000 Laser Mouse
+	c047  Laser Mouse M-UAL120
+	c048  G9 Laser Mouse
+	c049  G5 Laser Mouse
+	c050  RX 250 Optical Mouse
+	c051  G3 (MX518) Optical Mouse
+	c053  Laser Mouse
+	c054  Bluetooth mini-receiver
+	c058  M115 Mouse
+	c05a  M90/M100 Optical Mouse
+	c05b  M-U0004 810-001317 [B110 Optical USB Mouse]
+	c05d  Optical Mouse
+	c05f  M115 Optical Mouse
+	c061  RX1500 Laser Mouse
+	c062  M-UAS144 [LS1 Laser Mouse]
+	c063  DELL Laser Mouse
+	c064  M110 corded optical mouse (M-B0001)
+	c066  G9x Laser Mouse
+	c068  G500 Laser Mouse
+	c069  M-U0007 [Corded Mouse M500]
+	c06a  USB Optical Mouse
+	c06b  G700 Wireless Gaming Mouse
+	c06c  Optical Mouse
+	c077  M105 Optical Mouse
+	c07c  M-R0017 [G700s Rechargeable Gaming Mouse]
+	c07d  G502 Mouse
+	c07e  G402 Gaming Mouse
+	c080  G303 Gaming Mouse
+	c083  G403 Prodigy Gaming Mouse
+	c084  G203 Gaming Mouse
+	c08b  G502 SE HERO Gaming Mouse
+	c092  G203 LIGHTSYNC Gaming Mouse
+	c101  UltraX Media Remote
+	c110  Harmony 785/880/885 Remote
+	c111  Harmony 525 Remote
+	c112  Harmony 890 Remote
+	c11f  Harmony 900/1100 Remote
+	c121  Harmony One Remote
+	c122  Harmony 650/700 Remote
+	c124  Harmony 300/350 Remote
+	c125  Harmony 200 Remote
+	c126  Harmony Link
+	c129  Harmony Hub
+	c12b  Harmony Touch/Ultimate Remote
+	c201  WingMan Extreme Joystick with Throttle
+	c202  WingMan Formula
+	c207  WingMan Extreme Digital 3D
+	c208  WingMan Gamepad Extreme
+	c209  WingMan Gamepad
+	c20a  WingMan RumblePad
+	c20b  WingMan Action Pad
+	c20c  WingMan Precision
+	c20d  WingMan Attack 2
+	c20e  WingMan Formula GP
+	c211  iTouch Cordless Receiver
+	c212  WingMan Extreme Digital 3D
+	c213  J-UH16 (Freedom 2.4 Cordless Joystick)
+	c214  ATK3 (Attack III Joystick)
+	c215  Extreme 3D Pro
+	c216  F310 Gamepad [DirectInput Mode]
+	c218  F510 Gamepad [DirectInput Mode]
+	c219  F710 Gamepad [DirectInput Mode]
+	c21a  Precision Gamepad
+	c21c  G13 Advanced Gameboard
+	c21d  F310 Gamepad [XInput Mode]
+	c21e  F510 Gamepad [XInput Mode]
+	c21f  F710 Wireless Gamepad [XInput Mode]
+	c221  G11/G15 Keyboard / Keyboard
+	c222  G15 Keyboard / LCD
+	c223  G11/G15 Keyboard / USB Hub
+	c225  G11/G15 Keyboard / G keys
+	c226  G15 Refresh Keyboard
+	c227  G15 Refresh Keyboard
+	c228  G19 Gaming Keyboard
+	c229  G19 Gaming Keyboard Macro Interface
+	c22a  Gaming Keyboard G110
+	c22b  Gaming Keyboard G110 G-keys
+	c22d  G510 Gaming Keyboard
+	c22e  G510 Gaming Keyboard onboard audio
+	c231  G13 Virtual Mouse
+	c232  Gaming Virtual Keyboard
+	c245  G400 Optical Mouse
+	c246  Gaming Mouse G300
+	c247  G100S Optical Gaming Mouse
+	c248  G105 Gaming Keyboard
+	c24a  G600 Gaming Mouse
+	c24c  G400s Optical Mouse
+	c24d  G710 Gaming Keyboard
+	c24e  G500s Laser Gaming Mouse
+	c24f  G29 Driving Force Racing Wheel [PS3]
+	c260  G29 Driving Force Racing Wheel [PS4]
+	c262  G920 Driving Force Racing Wheel
+	c281  WingMan Force
+	c283  WingMan Force 3D
+	c285  WingMan Strike Force 3D
+	c286  Force 3D Pro
+	c287  Flight System G940
+	c291  WingMan Formula Force
+	c293  WingMan Formula Force GP
+	c294  Driving Force
+	c295  Momo Force Steering Wheel
+	c298  Driving Force Pro
+	c299  G25 Racing Wheel
+	c29b  G27 Racing Wheel
+	c29c  Speed Force Wireless Wheel for Wii
+	c2a0  Wingman Force Feedback Mouse
+	c2a1  WingMan Force Feedback Mouse
+	c2ab  G13 Joystick
+	c301  iTouch Keyboard
+	c302  iTouch Pro Keyboard
+	c303  iTouch Keyboard
+	c305  Internet Keyboard
+	c307  Internet Keyboard
+	c308  Internet Navigator Keyboard
+	c309  Y-BF37 [Internet Navigator Keyboard]
+	c30a  iTouch Composite
+	c30b  NetPlay Keyboard
+	c30c  Internet Keys (X)
+	c30d  Internet Keys
+	c30e  UltraX Keyboard (Y-BL49)
+	c30f  Logicool HID-Compliant Keyboard (106 key)
+	c311  Y-UF49 [Internet Pro Keyboard]
+	c312  DeLuxe 250 Keyboard
+	c313  Internet 350 Keyboard
+	c315  Classic Keyboard 200
+	c316  HID-Compliant Keyboard
+	c317  Wave Corded Keyboard
+	c318  Illuminated Keyboard
+	c31a  Comfort Wave 450
+	c31b  Compact Keyboard K300
+	c31c  Keyboard K120
+	c31d  Media Keyboard K200
+	c31f  Comfort Keyboard K290
+	c326  Washable Keyboard K310
+	c328  Corded Keyboard K280e
+	c32b  G910 Orion Spark Mechanical Keyboard
+	c332  G502 Proteus Spectrum Optical Mouse
+	c335  G910 Orion Spectrum Mechanical Keyboard
+	c336  G213 Prodigy Gaming Keyboard
+	c33a  G413 Gaming Keyboard
+	c33f  G815 Mechanical Keyboard
+	c401  TrackMan Marble Wheel
+	c402  Marble Mouse (2-button)
+	c403  Turbo TrackMan Marble FX
+	c404  TrackMan Wheel
+	c408  Marble Mouse (4-button)
+	c501  Cordless Mouse Receiver
+	c502  Cordless Mouse & iTouch Keys
+	c503  Cordless Mouse+Keyboard Receiver
+	c504  Cordless Mouse+Keyboard Receiver
+	c505  Cordless Mouse+Keyboard Receiver
+	c506  MX700 Cordless Mouse Receiver
+	c508  Cordless Trackball
+	c509  Cordless Keyboard & Mouse
+	c50a  Cordless Mouse
+	c50b  Cordless Desktop Optical
+	c50c  Cordless Desktop S510
+	c50d  Cordless Mouse
+	c50e  Cordless Mouse Receiver
+	c510  Cordless Mouse
+	c512  LX-700 Cordless Desktop Receiver
+	c513  MX3000 Cordless Desktop Receiver
+	c514  Cordless Mouse
+	c515  Cordless 2.4 GHz Presenter Presentation remote control
+	c517  LX710 Cordless Desktop Laser
+	c518  MX610 Laser Cordless Mouse
+	c51a  MX Revolution/G7 Cordless Mouse
+	c51b  V220 Cordless Optical Mouse for Notebooks
+	c521  Cordless Mouse Receiver
+	c525  MX Revolution Cordless Mouse
+	c526  Nano Receiver
+	c529  Logitech Keyboard + Mice
+	c52b  Unifying Receiver
+	c52d  R700 Remote Presenter receiver
+	c52e  MK260 Wireless Combo Receiver
+	c52f  Unifying Receiver
+	c531  C-U0007 [Unifying Receiver]
+	c532  Unifying Receiver
+	c534  Unifying Receiver
+	c537  Cordless Mouse Receiver
+	c53a  PowerPlay Wireless Charging System
+	c53d  G631 Keyboard
+	c603  3Dconnexion Spacemouse Plus XT
+	c605  3Dconnexion CADman
+	c606  3Dconnexion Spacemouse Classic
+	c621  3Dconnexion Spaceball 5000
+	c623  3Dconnexion Space Traveller 3D Mouse
+	c625  3Dconnexion Space Pilot 3D Mouse
+	c626  3Dconnexion Space Navigator 3D Mouse
+	c627  3Dconnexion Space Explorer 3D Mouse
+	c628  3Dconnexion Space Navigator for Notebooks
+	c629  3Dconnexion SpacePilot Pro 3D Mouse
+	c62b  3Dconnexion Space Mouse Pro
+	c640  NuLOOQ navigator
+	c702  Cordless Presenter
+	c703  Elite Keyboard Y-RP20 + Mouse MX900 (Bluetooth)
+	c704  diNovo Wireless Desktop
+	c705  MX900 Bluetooth Wireless Hub (C-UJ16A)
+	c707  Bluetooth wireless hub
+	c708  Bluetooth wireless hub
+	c709  BT Mini-Receiver (HCI mode)
+	c70a  MX5000 Cordless Desktop
+	c70b  BT Mini-Receiver (HID proxy mode)
+	c70c  BT Mini-Receiver (HID proxy mode)
+	c70d  Bluetooth wireless hub
+	c70e  MX1000 Bluetooth Laser Mouse
+	c70f  Bluetooth wireless hub
+	c712  Bluetooth wireless hub
+	c714  diNovo Edge Keyboard
+	c715  Bluetooth wireless hub
+	c71a  Bluetooth wireless hub
+	c71d  Bluetooth wireless hub
+	c71f  diNovo Mini Wireless Keyboard
+	c720  Bluetooth wireless hub
+	ca03  MOMO Racing
+	ca04  Formula Vibration Feedback Wheel
+	ca84  Cordless Controller for Xbox
+	ca88  Thunderpad for Xbox
+	ca8a  Precision Vibration Feedback Wheel for Xbox
+	caa3  DriveFX Racing Wheel
+	cab1  Cordless Keyboard for Wii HID Receiver
+	d001  QuickCam Pro
+	f301  Controller
+046e  Behavior Tech. Computer Corp.
+	0100  Keyboard
+	3001  Mass Storage Device
+	3002  Mass Storage Device
+	3003  Mass Storage Device
+	3005  Mass Storage Device
+	3008  Mass Storage Device
+	5250  KeyMaestro Multimedia Keyboard
+	5273  KeyMaestro Multimedia Keyboard
+	52e6  Cordless Mouse
+	5308  KeyMaestro Keyboard
+	5408  KeyMaestro Multimedia Keyboard/Hub
+	5500  Portable Keyboard 86+9 keys (Model 6100C US)
+	5550  5 button optical mouse model M873U
+	5720  Smart Card Reader
+	6782  BTC 7932 mouse+keyboard
+046f  Crystal Semiconductor
+0471  Philips (or NXP)
+	0101  DSS350 Digital Speaker System
+	0104  DSS330 Digital Speaker System [uda1321]
+	0105  UDA1321
+	014f  GoGear SA9200
+	0160  MP3 Player
+	0161  MP3 Player
+	0163  GoGear SA1100
+	0164  GoGear SA1110/02
+	0165  GoGear SA1330
+	0201  Hub
+	0222  Creative Nomad Jukebox
+	0302  PCA645VC Webcam [pwc]
+	0303  PCA646VC Webcam [pwc]
+	0304  Askey VC010 Webcam [pwc]
+	0307  PCVC675K Webcam [pwc]
+	0308  PCVC680K Webcam [pwc]
+	030b  PC VGA Camera (Vesta Fun)
+	030c  PCVC690K Webcam [pwc]
+	0310  PCVC730K Webcam [pwc]
+	0311  PCVC740K ToUcam Pro [pwc]
+	0312  PCVC750K Webcam [pwc]
+	0314  DMVC 1000K
+	0316  DMVC 2000K Video Capture
+	0321  FunCam
+	0322  DMVC1300K PC Camera
+	0325  SPC 200NC PC Camera
+	0326  SPC 300NC PC Camera
+	0327  Webcam SPC 6000 NC (Webcam w/ mic)
+	0328  SPC 700NC PC Camera
+	0329  SPC 900NC PC Camera / ORITE CCD Webcam(PC370R)
+	032d  SPC 210NC PC Camera
+	032e  SPC 315NC PC Camera
+	0330  SPC 710NC PC Camera
+	0331  SPC 1300NC PC Camera
+	0332  SPC 1000NC PC Camera
+	0333  SPC 620NC PC Camera
+	0334  SPC 520/525NC PC Camera
+	0401  Semiconductors CICT Keyboard
+	0402  PS/2 Mouse on Semiconductors CICT Keyboard
+	0406  15 inch Detachable Monitor
+	0407  10 inch Mobile Monitor
+	0408  SG3WA1/74 802.11b WLAN Adapter [Atmel AT76C503A]
+	0471  Digital Speaker System
+	0601  OVU1020 IR Dongle (Kbd+Mouse)
+	0602  ATI Remote Wonder II Input Device
+	0603  ATI Remote Wonder II Controller
+	0608  eHome Infrared Receiver
+	060a  TSU9600 Remote Control
+	060c  Consumer Infrared Transceiver (HP)
+	060d  Consumer Infrared Transceiver (SRM5100)
+	060e  RF Dongle
+	060f  Consumer Infrared Transceiver
+	0613  Infrared Transceiver
+	0617  IEEE802.15.4 RF Dongle
+	0619  TSU9400 Remote Control
+	0666  Hantek DDS-3005 Arbitrary Waveform Generator
+	0700  Semiconductors CICT Hub
+	0701  150P1 TFT Display
+	0809  AVNET Bluetooth Device
+	0811  JR24 CDRW
+	0814  DCCX38/P data cable
+	0815  eHome Infrared Receiver
+	0844  SA2111/02 1GB Flash Audio Player
+	084a  GoGear SA3125
+	084e  GoGear SA60xx (mtp)
+	0888  Hantek DDS-3005 Arbitrary Waveform Generator
+	1103  Digital Speaker System
+	1120  Creative Rhomba MP3 player
+	1125  Nike psa[128max Player
+	1137  HDD065 MP3 player
+	1201  Arima Bluetooth Device
+	1230  Wireless Adapter 11g
+	1232  SNU6500 Wireless Adapter
+	1233  Wireless Adapter Bootloader Download
+	1236  SNU5600 802.11bg
+	1237  TalkTalk SNU5630NS/05 802.11bg
+	1552  ISP 1581 Hi-Speed USB MPEG2 Encoder Reference Kit
+	1801  Diva MP3 player
+	200a  Wireless Network Adapter
+	200f  802.11n Wireless Adapter
+	2021  SDE3273FC/97 2.5" SATA HDD Enclosure [INIC-1608L]
+	2022  GoGear SA52XX
+	2034  Webcam SPC530NC
+	2036  Webcam SPC1030NC
+	203f  TSU9200 Remote Control
+	2046  TSU9800 Remote Control
+	204e  GoGear RaGa (SA1942/02)
+	205e  TSU9300 Remote Control
+	206c  MCE IR Receiver - Spinel plusf0r ASUS
+	2070  GoGear Mix
+	2076  GoGear Aria
+	2079  GoGear Opus
+	2088  MCE IR Receiver with ALS- Spinel plus for ASUS
+	209e  PTA01 Wireless Adapter
+	20b6  GoGear Vibe
+	20d0  SPZ2000 Webcam [PixArt PAC7332]
+	20e3  GoGear Raga
+	20e4  GoGear ViBE 8GB
+	2160  Mio LINK Heart Rate Monitor
+	21e0  GoGEAR Raga
+	262c  SPC230NC Webcam
+	2721  PTA 317 TV Camera
+	485d  Senselock SenseIV v2.x
+	df55  LPCXpresso LPC-Link
+0472  Chicony Electronics Co., Ltd
+	0065  PFU-65 Keyboard [Chicony]
+	b086  Asus USB2.0 Webcam
+	b091  Webcam
+0473  Sanyo Information Business Co., Ltd
+0474  Sanyo Electric Co., Ltd
+	0110  Digital Voice Recorder R200
+	0217  Xacti J2
+	022f  C5 Digital Media Camera (mass storage mode)
+	0230  C5 Digital Media Camera (PictBridge mode)
+	0231  C5 Digital Media Camera (PC control mode)
+	0401  Optical Drive
+	0701  SCP-4900 Cellphone
+	071f  Usb Com Port Enumerator
+	0722  W33SA Camera
+0475  Relisys/Teco Information System
+	0100  NEC Petiscan
+	0103  Eclipse 1200U/Episode
+	0210  Scorpio Ultra 3
+0476  AESP
+0477  Seagate Technology, Inc.
+0478  Connectix Corp.
+	0001  QuickCam
+	0002  QuickClip
+	0003  QuickCam Pro
+0479  Advanced Peripheral Laboratories
+047a  Semtech Corp.
+	0004  ScreenCoder UR7HCTS2-USB
+047b  Silitek Corp.
+	0001  Keyboard
+	0002  Keyboard and Mouse
+	0011  SK-1688U Keyboard
+	00f9  SK-1789u Keyboard
+	0101  BlueTooth Keyboard and Mouse
+	020b  SK-3105 SmartCard Reader
+	050e  Internet Compact Keyboard
+	1000  Trust Office Scan USB 19200
+	1002  HP ScanJet 4300c Parallel Port
+047c  Dell Computer Corp.
+	ffff  UPS Tower 500W LV
+047d  Kensington
+	1001  Mouse*in*a*Box
+	1002  Expert Mouse Pro
+	1003  Orbit TrackBall
+	1004  MouseWorks
+	1005  TurboBall
+	1006  TurboRing
+	1009  Orbit TrackBall for Mac
+	1012  PocketMouse
+	1013  Mouse*in*a*Box Optical Pro
+	1014  Expert Mouse Pro Wireless
+	1015  Expert Mouse
+	1016  ADB/USB Orbit
+	1018  Studio Mouse
+	101d  Mouse*in*a*Box Optical Pro
+	101e  Studio Mouse Wireless
+	101f  PocketMouse Pro
+	1020  Expert Mouse Trackball
+	1021  Expert Mouse Wireless
+	1022  Orbit Optical
+	1023  Pocket Mouse Pro Wireless
+	1024  PocketMouse
+	1025  Mouse*in*a*Box Optical Elite Wireless
+	1026  Pocket Mouse Pro
+	1027  StudioMouse
+	1028  StudioMouse Wireless
+	1029  Mouse*in*a*Box Optical Elite
+	102a  Mouse*in*a*Box Optical
+	102b  PocketMouse
+	102c  Iridio
+	102d  Pilot Optical
+	102e  Pilot Optical Pro
+	102f  Pilot Optical Pro Wireless
+	1042  Ci25m Notebook Optical Mouse [Diamond Eye Precision]
+	1043  Ci65m Wireless Notebook Optical Mouse
+	104a  PilotMouse Mini Retractable
+	105d  PocketMouse Bluetooth
+	105e  Bluetooth EDR Dongle
+	1061  PocketMouse Grip
+	1062  PocketMouse Max
+	1063  PocketMouse Max Wireless
+	1064  PocketMouse 2.0 Wireless
+	1065  PocketMouse 2.0
+	1066  PocketMouse Max Glow
+	1067  ValueMouse
+	1068  ValueOpt White
+	1069  ValueOpt Black
+	106a  PilotMouse Laser Wireless Mini
+	106b  PilotMouse Laser - 3 Button
+	106c  PilotMouse Laser - Gaming
+	106d  PilotMouse Laser - Wired
+	106e  PilotMouse Micro Laser
+	1070  ValueOpt Travel
+	1071  ValueOpt RF TX
+	1072  PocketMouse Colour
+	1073  PilotMouse Laser - 6 Button
+	1074  PilotMouse Laser Wireless Mini
+	1075  SlimBlade Presenter Media Mouse
+	1076  SlimBlade Media Mouse
+	1077  SlimBlade Presenter Mouse
+	1152  Bluetooth EDR Dongle
+	2002  Optical Elite Wireless
+	2010  Wireless Presentation Remote
+	2012  Wireless Presenter with Laser Pointer
+	2021  PilotBoard Wireless
+	2030  PilotBoard Wireless
+	2034  SlimBlade Media Notebook Set
+	2041  SlimBlade Trackball
+	2048  Orbit Trackball with Scroll Ring
+	4003  Gravis Xterminator Digital Gamepad
+	4005  Gravis Eliminator GamePad Pro
+	4006  Gravis Eliminator AfterShock
+	4007  Gravis Xterminator Force
+	4008  Gravis Destroyer TiltPad
+	5001  Cabo I Camera
+	5002  VideoCam CABO II
+	5003  VideoCam
+	8018  Expert Wireless Trackball Mouse (K72359WW)
+	8068  Pro Fit Ergo Vertical Wireless Trackball
+047e  Agere Systems, Inc. (Lucent)
+	0300  ORiNOCO Card
+	1001  USS720 Parallel Port
+	2892  Systems Soft Modem
+	bad1  Lucent 56k Modem
+	f101  Atlas Modem
+047f  Plantronics, Inc.
+	0101  Bulk Driver
+	02ee  BT600
+	0301  Bulk Driver
+	0411  Savi Office Base Station
+	0ca1  USB DSP v4 Audio Interface
+	4254  BUA-100 Bluetooth Adapter
+	aa05  DA45
+	ac01  Savi 7xx
+	ad01  GameCom 777 5.1 Headset
+	af01  DA80
+	c008  Audio 655 DSP
+	c00e  Blackwire C310 headset
+	c03b  HD1
+	ca01  Calisto 800 Series
+	da60  DA60
+0480  Toshiba America Inc
+	0001  InTouch Module
+	0004  InTouch Module
+	0011  InTouch Module
+	0014  InTouch Module
+	0100  Stor.E Slim USB 3.0
+	0200  External Disk
+	0212  Toshiba Canvio Connect II 500GB Portable Hard Drive
+	0820  Canvio Advance Disk
+	0821  Canvio Advance 2TB model DTC920
+	0900  MQ04UBF100
+	a006  External Disk 1.5TB
+	a007  External Disk USB 3.0
+	a009  Stor.E Basics
+	a00d  STOR.E BASICS 500GB
+	a100  Canvio Alu 2TB 2.5" Black External Disk Model HDTH320EK3CA
+	a102  Canvio Alu 2TB 2.5" Black External Disk Model HDTH320EK3CA
+	a202  Canvio Basics HDD
+	a208  Canvio Basics 2TB USB 3.0 Portable Hard Drive
+	b001  Stor.E Partner
+	b207  Canvio Ready
+	d000  External Disk 2TB Model DT01ABA200
+	d010  External Disk 3TB
+	d011  Canvio Desk
+0481  Zenith Data Systems
+0482  Kyocera Corp.
+	000e  FS-1020D Printer
+	000f  FS-1920 Mono Printer
+	0015  FS-1030D printer
+	0100  Finecam S3x
+	0101  Finecam S4
+	0103  Finecam S5
+	0105  Finecam L3
+	0106  Finecam
+	0107  Digital Camera Device
+	0108  Digital Camera Device
+	0203  AH-K3001V
+	0204  iBurst Terminal
+	0408  FS-1320D Printer
+	0640  ECOSYS M6026cdn
+	069b  ECOSYS M2635dn
+	06b4  ECOSYS M5526cdw
+0483  STMicroelectronics
+	0137  BeWAN ADSL USB ST (blue or green)
+	0138  Unicorn II (ST70138B + MTC-20174TQ chipset)
+	0adb  Android Debug Bridge (ADB) device
+	0afb  Android Fastboot device
+	1307  Cytronix 6in1 Card Reader
+	163d  Cool Icam Digi-MP3
+	2015  TouchChip® Fingerprint Reader
+	2016  Fingerprint Reader
+	2017  Biometric Smart Card Reader
+	2018  BioSimKey
+	2302  Portable Flash Device (PFD)
+	3744  ST-LINK/V1
+	3747  ST Micro Connect Lite
+	3748  ST-LINK/V2
+	374b  ST-LINK/V2.1
+	374d  STLINK-V3 Loader
+	374e  STLINK-V3
+	374f  STLINK-V3
+	3752  ST-LINK/V2.1
+	3753  STLINK-V3
+	4810  ISDN adapter
+	481d  BT Digital Access adapter
+	5000  ST Micro/Ergenic ERG BT-002 Bluetooth Adapter
+	5001  ST Micro Bluetooth Device
+	5710  Joystick in FS Mode
+	5720  Mass Storage Device
+	5721  Interrupt Demo
+	5722  Bulk Demo
+	5730  Audio Speaker
+	5731  Microphone
+	5740  Virtual COM Port
+	5750  LED badge -- mini LED display -- 11x44
+	7270  ST Micro Serial Bridge
+	7554  56k SoftModem
+	8213  ThermaData Logger Cradle
+	8259  Probe
+	91d1  Sensor Hub
+	a171  ThermaData WiFi
+	a2e0  BMeasure instrument
+	df11  STM Device in DFU Mode
+	ff10  Swann ST56 Modem
+0484  Specialix
+0485  Nokia Monitors
+0486  ASUS Computers, Inc.
+	0185  EeePC T91MT HID Touch Panel
+0487  Stewart Connector
+0488  Cirque Corp.
+0489  Foxconn / Hon Hai
+	0502  SmartMedia Card Reader Firmware Loader
+	0503  SmartMedia Card Reader
+	d00c  Rollei Compactline (Storage Mode)
+	d00e  Rollei Compactline (Video Mode)
+	e000  T-Com TC 300
+	e003  Pirelli DP-L10
+	e00d  Broadcom Bluetooth 2.1 Device
+	e00f  Foxconn T77H114 BCM2070 [Single-Chip Bluetooth 2.1 + EDR Adapter]
+	e011  Acer Bluetooth module
+	e016  Ubee PXU1900 WiMAX Adapter [Beceem BCSM250]
+	e02c  Atheros AR5BBU12 Bluetooth Device
+	e032  Broadcom BCM20702 Bluetooth
+	e042  Broadcom BCM20702 Bluetooth
+	e04d  Atheros AR3012 Bluetooth
+	e055  BCM43142A0 broadcom bluetooth
+048a  S-MOS Systems, Inc.
+048c  Alps Electric Ireland, Ltd
+048d  Integrated Technology Express, Inc.
+	1165  IT1165 Flash Controller
+	1172  Flash Drive
+	1234  Chipsbank CBM2199 Flash Drive
+	1336  SD/MMC Cardreader
+	1345  Multi Cardreader
+	8297  IT8297 RGB LED Controller
+	9006  IT9135 BDA Afatech DVB-T HDTV Dongle
+	9009  Zolid HD DVD Maker
+	9135  Zolid Mini DVB-T Stick
+	9306  IT930x DVB stick
+	9503  ITE it9503 feature-limited DVB-T transmission chip [ccHDtv]
+	9507  ITE it9507 full featured DVB-T transmission chip [ccHDtv]
+	9910  IT9910 chipset based grabber
+	ff59  Hdmi-CEC Bridge
+048f  Eicon Tech.
+0490  United Microelectronics Corp.
+0491  Capetronic
+	0003  Taxan Monitor Control
+0492  Samsung SemiConductor, Inc.
+	0140  MP3 player
+	0141  MP3 Player
+0493  MAG Technology Co., Ltd
+0495  ESS Technology, Inc.
+0496  Micron Electronics
+0497  Smile International
+	c001  Camera Device
+0498  Capetronic (Kaohsiung) Corp.
+0499  Yamaha Corp.
+	1000  UX256 MIDI I/F
+	1001  MU1000
+	1002  MU2000
+	1003  MU500
+	1004  UW500
+	1005  MOTIF6
+	1006  MOTIF7
+	1007  MOTIF8
+	1008  UX96 MIDI I/F
+	1009  UX16 MIDI I/F
+	100a  EOS BX
+	100c  UC-MX
+	100d  UC-KX
+	100e  S08
+	100f  CLP-150
+	1010  CLP-170
+	1011  P-250
+	1012  TYROS
+	1013  PF-500
+	1014  S90
+	1015  MOTIF-R
+	1016  MDP-5
+	1017  CVP-204
+	1018  CVP-206
+	1019  CVP-208
+	101a  CVP-210
+	101b  PSR-1100
+	101c  PSR-2100
+	101d  CLP-175
+	101e  PSR-K1
+	101f  EZ-J24
+	1020  EZ-250i
+	1021  MOTIF ES 6
+	1022  MOTIF ES 7
+	1023  MOTIF ES 8
+	1024  CVP-301
+	1025  CVP-303
+	1026  CVP-305
+	1027  CVP-307
+	1028  CVP-309
+	1029  CVP-309GP
+	102a  PSR-1500
+	102b  PSR-3000
+	102e  ELS-01/01C
+	1030  PSR-295/293
+	1031  DGX-205/203
+	1032  DGX-305
+	1033  DGX-505
+	1037  PSR-E403
+	103c  MOTIF-RACK ES
+	1054  S90XS Keyboard/Music Synthesizer
+	160f  P-105
+	1613  Clavinova CLP535
+	1617  PSR-E353 digital keyboard
+	1704  Steinberg UR44
+	2000  DGP-7
+	2001  DGP-5
+	3001  YST-MS55D USB Speaker
+	3003  YST-M45D USB Speaker
+	4000  NetVolante RTA54i Broadband&ISDN Router
+	4001  NetVolante RTW65b Broadband Wireless Router
+	4002  NetVolante RTW65i Broadband&ISDN Wireless Router
+	4004  NetVolante RTA55i Broadband VoIP Router
+	5000  CS1D
+	5001  DSP1D
+	5002  DME32
+	5003  DM2000
+	5004  02R96
+	5005  ACU16-C
+	5006  NHB32-C
+	5007  DM1000
+	5008  01V96
+	5009  SPX2000
+	500a  PM5D
+	500b  DME64N
+	500c  DME24N
+	6001  CRW2200UX Lightspeed 2 External CD-RW Drive
+	7000  DTX
+	7010  UB99
+049a  Gandalf Technologies, Ltd
+049b  Curtis Computer Products
+049c  Acer Advanced Labs, Inc.
+	0002  Keyboard (???)
+049d  VLSI Technology
+049f  Compaq Computer Corp.
+	0002  InkJet Color Printer
+	0003  iPAQ PocketPC
+	000e  Internet Keyboard
+	0012  InkJet Color Printer
+	0018  PA-1/PA-2 MP3 Player
+	0019  InkJet Color Printer
+	001a  S4 100 Scanner
+	001e  IJ650 Inkjet Printer
+	001f  WL215 Adapter
+	0021  S200 Scanner
+	0027  Bluetooth Multiport Module by Compaq
+	002a  1400P Inkjet Printer
+	002b  A3000
+	002c  Lexmark X125
+	0032  802.11b Adapter [ipaq h5400]
+	0033  Wireless LAN MultiPort W100 [Intersil PRISM 2.5]
+	0036  Bluetooth Multiport Module
+	0051  KU-0133 Easy Access Interner Keyboard
+	0076  Wireless LAN MultiPort W200
+	0080  GPRS Multiport
+	0086  Bluetooth Device
+	504a  Personal Jukebox PJB100
+	505a  Linux-USB "CDC Subset" Device, or Itsy (experimental)
+	8511  iPAQ Networking 10/100 Ethernet [pegasus2]
+04a0  Digital Equipment Corp.
+04a1  SystemSoft Corp.
+	fff0  Telex Composite Device
+04a2  FirePower Systems
+04a3  Trident Microsystems, Inc.
+04a4  Hitachi, Ltd
+	0004  DVD-CAM DZ-MV100A Camcorder
+	001e  DVDCAM USB HS Interface
+04a5  Acer Peripherals Inc. (now BenQ Corp.)
+	0001  Keyboard
+	0002  API Ergo K/B
+	0003  API Generic K/B Mouse
+	12a6  AcerScan C310U
+	1a20  Prisa 310U
+	1a2a  Prisa 620U
+	2022  Prisa 320U/340U
+	2040  Prisa 620UT
+	205e  ScanPrisa 640BU
+	2060  Prisa 620U+/640U
+	207e  Prisa 640BU
+	209e  ScanPrisa 640BT
+	20ae  S2W 3000U
+	20b0  S2W 3300U/4300U
+	20be  Prisa 640BT
+	20c0  Prisa 1240UT
+	20de  S2W 4300U+
+	20f8  Benq 5000
+	20fc  Benq 5000
+	20fe  SW2 5300U
+	2137  Benq 5150/5250
+	2202  Benq 7400UT
+	2311  Benq 5560
+	3003  Benq Webcam
+	3008  Benq 1500
+	300a  Benq 3410
+	300c  Benq 1016
+	3019  Benq DC C40
+	4000  P30 Composite Device
+	4013  BenQ-Siemens EF82/SL91
+	4044  BenQ-Siemens SF71
+	4045  BenQ-Siemens E81
+	4048  BenQ M7
+	6001  Mass Storage Device
+	6002  Mass Storage Device
+	6003  ATA/ATAPI Adapter
+	6004  Mass Storage Device
+	6005  Mass Storage Device
+	6006  Mass Storage Device
+	6007  Mass Storage Device
+	6008  Mass Storage Device
+	6009  Mass Storage Device
+	600a  Mass Storage Device
+	600b  Mass Storage Device
+	600c  Mass Storage Device
+	600d  Mass Storage Device
+	600e  Mass Storage Device
+	600f  Mass Storage Device
+	6010  Mass Storage Device
+	6011  Mass Storage Device
+	6012  Mass Storage Device
+	6013  Mass Storage Device
+	6014  Mass Storage Device
+	6015  Mass Storage Device
+	6125  MP3 Player
+	6180  MP3 Player
+	6200  MP3 Player
+	7500  Hi-Speed Mass Storage Device
+	8001  BenQ ZOWIE Gaming Mouse
+	9000  AWL300 Wireless Adapter
+	9001  AWL400 Wireless Adapter
+	9213  Kbd Hub
+04a6  Nokia Display Products
+	00b9  Audio
+	0180  Hub Type P
+	0181  HID Monitor Controls
+04a7  Visioneer
+	0100  StrobePro
+	0101  Strobe Pro Scanner (1.01)
+	0102  StrobePro Scanner
+	0211  OneTouch 7600 Scanner
+	0221  OneTouch 5300 Scanner
+	0223  OneTouch 8200
+	0224  OneTouch 4800 USB/Microtek Scanport 3000
+	0225  VistaScan Astra 3600(ENG)
+	0226  OneTouch 5300 USB
+	0229  OneTouch 7100
+	022a  OneTouch 6600
+	022c  OneTouch 9000/9020
+	0231  6100 Scanner
+	0311  6200 EPP/USB Scanner
+	0321  OneTouch 8100 EPP/USB Scanner
+	0331  OneTouch 8600 EPP/USB Scanner
+	0341  6400
+	0361  VistaScan Astra 3600(ENG)
+	0362  OneTouch 9320
+	0371  OneTouch 8700/8920
+	0380  OneTouch 7700
+	0382  Photo Port 7700
+	0390  9650
+	03a0  Xerox 4800 One Touch
+	0410  OneTouch Pro 8800/8820
+	0421  9450 USB
+	0423  9750 Scanner
+	0424  Strobe XP 450
+	0425  Strobe XP 100
+	0426  Strobe XP 200
+	0427  Strobe XP 100
+	0444  OneTouch 7300
+	0445  CardReader 100
+	0446  Xerox DocuMate 510
+	0447  XEROX DocuMate 520
+	0448  XEROX DocuMate 250
+	0449  Xerox DocuMate 252
+	044a  Xerox 6400
+	044c  Xerox DocuMate 262
+	0474  Strobe XP 300
+	0475  Xerox DocuMate 272
+	0478  Strobe XP 220
+	0479  Strobe XP 470
+	047a  9450
+	047b  9650
+	047d  9420
+	0480  9520
+	048f  Strobe XP 470
+	0491  Strobe XP 450
+	0493  9750
+	0494  Strobe XP 120
+	0497  Patriot 430
+	0498  Patriot 680
+	0499  Patriot 780
+	049b  Strobe XP 100
+	04a0  7400
+	04ac  Xerox Travel Scanner 100
+	04bb  strobe 400 scanner
+	04cd  Xerox Travel Scanner 150
+	04ee  Duplex Combo Scanner
+04a8  Multivideo Labs, Inc.
+	0101  Hub
+	0303  Peripheral Switch
+	0404  Peripheral Switch
+04a9  Canon, Inc.
+	1005  BJ Printer Hub
+	1035  PD Printer Storage
+	1050  BJC-8200
+	1051  BJC-3000 Color Printer
+	1052  BJC-6100
+	1053  BJC-6200
+	1054  BJC-6500
+	1055  BJC-85
+	1056  BJC-2110 Color Printer
+	1057  LR1
+	105a  BJC-55
+	105b  S600 Printer
+	105c  S400
+	105d  S450 Printer
+	105e  S800
+	1062  S500 Printer
+	1063  S4500
+	1064  S300 Printer
+	1065  S100
+	1066  S630
+	1067  S900
+	1068  S9000
+	1069  S820
+	106a  S200 Printer
+	106b  S520 Printer
+	106d  S750 Printer
+	106e  S820D
+	1070  S530D
+	1072  I850 Printer
+	1073  I550 Printer
+	1074  S330 Printer
+	1076  i70
+	1077  i950
+	107a  S830D
+	107b  i320
+	107c  i470D
+	107d  i9100
+	107e  i450
+	107f  i860
+	1082  i350
+	1084  i250
+	1085  i255
+	1086  i560
+	1088  i965
+	108a  i455
+	108b  i900D
+	108c  i475D
+	108d  PIXMA iP2000
+	108f  i80
+	1090  i9900 Photo Printer
+	1091  PIXMA iP1500
+	1093  PIXMA iP4000
+	1094  PIXMA iP3000x Printer
+	1095  PIXMA iP6000D
+	1097  PIXMA iP5000
+	1098  PIXMA iP1000
+	1099  PIXMA iP8500
+	109c  PIXMA iP4000R
+	109d  iP90
+	10a0  PIXMA iP1600 Printer
+	10a2  iP4200
+	10a4  iP5200R
+	10a5  iP5200
+	10a7  iP6210D
+	10a8  iP6220D
+	10a9  iP6600D
+	10b6  PIXMA iP4300 Printer
+	10b7  PIXMA iP5300 Printer
+	10c2  PIXMA iP1800 Printer
+	10c4  Pixma iP4500 Printer
+	10c9  PIXMA iP4600 Printer
+	10ca  PIXMA iP3600 Printer
+	10e3  PIXMA iX6850 Printer
+	12fe  Printer in service mode
+	1404  W6400PG
+	1405  W8400PG
+	150f  BIJ2350 PCL
+	1510  BIJ1350 PCL
+	1512  BIJ1350D PCL
+	1601  DR-2080C Scanner
+	1607  DR-6080 Scanner
+	1608  DR-2580C Scanner
+	1609  DR-3080CII
+	160a  DR-2050C Scanner
+	1700  PIXMA MP110 Scanner
+	1701  PIXMA MP130 Scanner
+	1702  MP410 Composite
+	1703  MP430 Composite
+	1704  MP330 Composite
+	1706  PIXMA MP750 Scanner
+	1707  PIXMA MP780/MP790
+	1708  PIXMA MP760/MP770
+	1709  PIXMA MP150 Scanner
+	170a  PIXMA MP170 Scanner
+	170b  PIXMA MP450 Scanner
+	170c  PIXMA MP500 Scanner
+	170d  PIXMA MP800 Scanner
+	170e  PIXMA MP800R
+	1710  MP950
+	1712  PIXMA MP530
+	1713  PIXMA MP830 Scanner
+	1714  MP160
+	1715  PIXMA MP180
+	1716  PIXMA MP460
+	1717  PIXMA MP510
+	1718  PIXMA MP600
+	1719  PIXMA MP600R
+	171a  PIXMA MP810
+	171b  PIXMA MP960
+	171c  PIXMA MX7600
+	1721  PIXMA MP210
+	1722  PIXMA MP220
+	1723  PIXMA MP470
+	1724  PIXMA MP520 series
+	1725  PIXMA MP610
+	1726  PIXMA MP970
+	1727  PIXMA MX300
+	1728  PIXMA MX310 series
+	1729  PIXMA MX700
+	172b  MP140 ser
+	172c  PIXMA MX850
+	172d  PIXMA MP980
+	172e  PIXMA MP630
+	172f  PIXMA MP620
+	1730  PIXMA MP540
+	1731  PIXMA MP480
+	1732  PIXMA MP240
+	1733  PIXMA MP260
+	1734  PIXMA MP190
+	1735  PIXMA MX860
+	1736  PIXMA MX320 series
+	1737  PIXMA MX330
+	173a  PIXMA MP250
+	173b  PIXMA MP270 All-In-One Printer
+	173c  PIXMA MP490
+	173d  PIXMA MP550
+	173e  PIXMA MP560
+	173f  PIXMA MP640
+	1740  PIXMA MP990
+	1741  PIXMA MX340
+	1742  PIXMA MX350
+	1743  PIXMA MX870
+	1746  PIXMA MP280
+	1747  PIXMA MP495
+	1748  PIXMA MG5100 Series
+	1749  PIXMA MG5200 Series
+	174a  PIXMA MG6100 Series
+	174b  PIXMA MG8100 Series
+	174d  PIXMA MX360
+	174e  PIXMA MX410
+	174f  PIXMA MX420
+	1750  PIXMA MX880 Series
+	1752  PIXMA MG3100 Series
+	1753  PIXMA MG4100 Series
+	1754  PIXMA MG5300 Series
+	1755  PIXMA MG6200 Series
+	1756  PIXMA MG8200 Series
+	1757  PIXMA MP493
+	1759  PIXMA MX370 Series
+	175b  PIXMA MX430 Series
+	175c  PIXMA MX510 Series
+	175d  PIXMA MX710 Series
+	175e  PIXMA MX890 Series
+	175f  PIXMA MP230
+	1762  PIXMA MG3200 Series
+	1763  PIXMA MG4200 Series
+	1764  PIXMA MG5400 Series
+	1765  PIXMA MG6300 Series
+	1766  PIXMA MX390 Series
+	1768  PIXMA MX450 Series
+	1769  PIXMA MX520 Series
+	176a  PIXMA MX720 Series
+	176b  PIXMA MX920 Series
+	176d  PIXMA MG2500 Series
+	176e  PIXMA MG3500 Series
+	176f  PIXMA MG6500 Series
+	1770  PIXMA MG6400 Series
+	1771  PIXMA MG5500 Series
+	1772  PIXMA MG7100 Series
+	1774  PIXMA MX470 Series
+	1775  PIXMA MX530 Series
+	177c  PIXMA MG7500 Series
+	177e  PIXMA MG6600 Series
+	177f  PIXMA MG5600 Series
+	1780  PIXMA MG2900 Series
+	1787  PIXMA MX490 Series
+	178a  PIXMA MG3600 Series
+	178d  PIXMA MG6853
+	180b  PIXMA MG3000 series
+	1856  PIXMA TS6250
+	1900  CanoScan LiDE 90
+	1901  CanoScan 8800F
+	1904  CanoScan LiDE 100
+	1905  CanoScan LiDE 200
+	1906  CanoScan 5600F
+	1907  CanoScan LiDE 700F
+	1909  CanoScan LiDE 110
+	190a  CanoScan LiDE 210
+	190d  CanoScan 9000F Mark II
+	190e  CanoScan LiDE 120
+	190f  CanoScan LiDE 220
+	1913  CanoScan LiDE 300
+	2200  CanoScan LiDE 25
+	2201  CanoScan FB320U
+	2202  CanoScan FB620U
+	2204  CanoScan FB630U
+	2205  CanoScan FB1210U
+	2206  CanoScan N650U/N656U
+	2207  CanoScan 1220U
+	2208  CanoScan D660U
+	220a  CanoScan D2400UF
+	220b  CanoScan D646U
+	220c  CanoScan D1250U2
+	220d  CanoScan N670U/N676U/LiDE 20
+	220e  CanoScan N1240U/LiDE 30
+	220f  CanoScan 8000F
+	2210  CanoScan 9900F
+	2212  CanoScan 5000F
+	2213  CanoScan LiDE 50/LiDE 35/LiDE 40
+	2214  CanoScan LiDE 80
+	2215  CanoScan 3000/3000F/3000ex
+	2216  CanoScan 3200F
+	2217  CanoScan 5200F
+	2219  CanoScan 9950F
+	221b  CanoScan 4200F
+	221c  CanoScan LiDE 60
+	221e  CanoScan 8400F
+	221f  CanoScan LiDE 500F
+	2220  CanoScan LIDE 25
+	2224  CanoScan LiDE 600F
+	2225  CanoScan LiDE 70
+	2228  CanoScan 4400F
+	2229  CanoScan 8600F
+	2602  MultiPASS C555
+	2603  MultiPASS C755
+	260a  LBP810
+	260e  LBP-2000
+	2610  MPC600F
+	2611  SmartBase MPC400
+	2612  MultiPASS C855
+	2617  LBP1210
+	261a  iR1600
+	261b  iR1610
+	261c  iC2300
+	261f  MPC200 Printer
+	2621  iR2000
+	2622  iR2010
+	2623  FAX-B180C
+	2629  FAXPHONE L75
+	262b  LaserShot LBP-1120 Printer
+	262c  imageCLASS D300
+	262d  iR C3200
+	262f  PIXMA MP730
+	2630  PIXMA MP700
+	2631  LASER CLASS 700
+	2632  FAX-L2000
+	2633  LASERCLASS 500
+	2634  PC-D300/FAX-L400/ICD300
+	2635  MPC190
+	2636  LBP3200
+	2637  iR C6800
+	2638  iR C3100
+	263c  PIXMA MP360
+	263d  PIXMA MP370
+	263e  PIXMA MP390
+	263f  PIXMA MP375R
+	2646  MF5530 Scanner Device V1.9.1
+	2647  MF5550 Composite
+	264c  PIXMA MP740
+	264d  PIXMA MP710
+	264e  MF5630
+	264f  MF5650 (FAX)
+	2650  iR 6800C EUR
+	2651  iR 3100C EUR
+	2654  LBP3600
+	2655  FP-L170/MF350/L380/L398
+	2656  iR1510-1670 CAPT Printer
+	2657  LBP3210
+	2659  MF8100
+	265b  CAPT Printer
+	265c  iR C3220
+	265d  MF5730
+	265e  MF5750
+	265f  MF5770
+	2660  MF3110
+	2663  iR3570/iR4570
+	2664  iR2270/iR2870
+	2665  iR C2620
+	2666  iR C5800
+	2667  iR85PLUS
+	2669  iR105PLUS
+	266a  LBP3000
+	266b  iR8070
+	266c  iR9070
+	266d  iR 5800C EUR
+	266e  CAPT Device
+	266f  iR2230
+	2670  iR3530
+	2671  iR5570/iR6570
+	2672  iR C3170
+	2673  iR 3170C EUR
+	2674  FAX-L120
+	2675  iR2830
+	2676  LBP2900
+	2677  iR C2570
+	2678  iR 2570C EUR
+	2679  LBP5000
+	267a  iR2016
+	267b  iR2020
+	267d  MF7100 series
+	267e  LBP3300
+	2684  MF3200 series
+	2686  MF6500 series
+	2687  iR4530
+	2688  LBP3460
+	2689  FAX-L180/L380S/L398S
+	268a  LC310/L390/L408S
+	268b  LBP3500
+	268c  iR C6870
+	268d  iR 6870C EUR
+	268e  iR C5870
+	268f  iR 5870C EUR
+	2691  iR7105
+	26a1  LBP5300
+	26a3  MF4100 series
+	26a4  LBP5100
+	26b0  MF4600 series
+	26b4  MF4010 series
+	26b5  MF4200 series
+	26b6  FAX-L140/L130
+	26b9  LBP3310
+	26ba  LBP5050
+	26da  LBP3010/LBP3018/LBP3050
+	26db  LBP3100/LBP3108/LBP3150
+	26e6  iR1024
+	26ea  LBP9100C
+	26ee  MF4320-4350
+	26f1  LBP7200C
+	26ff  LBP6300
+	271a  LBP6000
+	271b  LBP6200
+	271c  LBP7010C/7018C
+	2736  I-SENSYS MF4550d
+	2737  MF4410
+	2742  imageRUNNER1133 series
+	2771  LBP6020
+	2796  LBP6230/6240
+	3041  PowerShot S10
+	3042  CanoScan FS4000US Film Scanner
+	3043  PowerShot S20
+	3044  EOS D30
+	3045  PowerShot S100
+	3046  IXY Digital
+	3047  Digital IXUS
+	3048  PowerShot G1
+	3049  PowerShot Pro90 IS
+	304a  CP-10
+	304b  IXY Digital 300
+	304c  PowerShot S300
+	304d  Digital IXUS 300
+	304e  PowerShot A20
+	304f  PowerShot A10
+	3050  PowerShot unknown 1
+	3051  PowerShot S110
+	3052  Digital IXUS V
+	3055  PowerShot G2
+	3056  PowerShot S40
+	3057  PowerShot S30
+	3058  PowerShot A40
+	3059  PowerShot A30
+	305b  ZR45MC Digital Camcorder
+	305c  PowerShot unknown 2
+	3060  EOS D60
+	3061  PowerShot A100
+	3062  PowerShot A200
+	3063  CP-100
+	3065  PowerShot S200
+	3066  Digital IXUS 330
+	3067  MV550i Digital Video Camera
+	3069  PowerShot G3
+	306a  Digital unknown 3
+	306b  MVX2i Digital Video Camera
+	306c  PowerShot S45
+	306d  PowerShot S45 PtP Mode
+	306e  PowerShot G3 (normal mode)
+	306f  PowerShot G3 (ptp)
+	3070  PowerShot S230
+	3071  PowerShot S230 (ptp)
+	3072  PowerShot SD100 / Digital IXUS II (ptp)
+	3073  PowerShot A70 (ptp)
+	3074  PowerShot A60 (ptp)
+	3075  IXUS 400 Camera
+	3076  PowerShot A300
+	3077  PowerShot S50
+	3078  ZR70MC Digital Camcorder
+	307a  MV650i (normal mode)
+	307b  MV630i Digital Video Camera
+	307c  CP-200
+	307d  CP-300
+	307f  Optura 20
+	3080  MVX150i (normal mode) / Optura 20 (normal mode)
+	3081  Optura 10
+	3082  MVX100i / Optura 10
+	3083  EOS 10D
+	3084  EOS 300D / EOS Digital Rebel
+	3085  PowerShot G5
+	3087  Elura 50 (PTP mode)
+	3088  Elura 50 (normal mode)
+	308d  MVX3i
+	308e  FV M1 (normal mode) / MVX 3i (normal mode) / Optura Xi (normal mode)
+	3093  Optura 300
+	3096  IXY DV M2 (normal mode) / MVX 10i (normal mode)
+	3099  EOS 300D (ptp)
+	309a  PowerShot A80
+	309b  Digital IXUS (ptp)
+	309c  PowerShot S1 IS
+	309d  Powershot Pro 1
+	309f  Camera
+	30a0  Camera
+	30a1  Camera
+	30a2  Camera
+	30a8  Elura 60E/Optura 40 (ptp)
+	30a9  MVX25i (normal mode) / Optura 40 (normal mode)
+	30b1  PowerShot S70 (normal mode) / PowerShot S70 (PTP mode)
+	30b2  PowerShot S60 (normal mode) / PowerShot S60 (PTP mode)
+	30b3  PowerShot G6 (normal mode) / PowerShot G6 (PTP mode)
+	30b4  PowerShot S500
+	30b5  PowerShot A75
+	30b6  Digital IXUS II2  / Digital IXUS II2 (PTP mode) / PowerShot SD110 (PTP mode) / PowerShot SD110 Digital ELPH
+	30b7  PowerShot A400 / PowerShot A400 (PTP mode)
+	30b8  PowerShot A310 / PowerShot A310 (PTP mode)
+	30b9  Powershot A85
+	30ba  PowerShot S410 Digital Elph
+	30bb  PowerShot A95
+	30bd  CP-220
+	30be  CP-330
+	30bf  Digital IXUS 40
+	30c0  Digital IXUS 30 (PTP mode) / PowerShot SD200 (PTP mode)
+	30c1  Digital IXUS 50 (normal mode) / IXY Digital 55 (normal mode) / PowerShot A520 (PTP mode) / PowerShot SD400 (normal mode)
+	30c2  PowerShot A510 (normal mode) / PowerShot A510 (PTP mode)
+	30c4  Digital IXUS i5 (normal mode) / IXY Digital L2 (normal mode) / PowerShot SD20 (normal mode)
+	30ea  EOS 1D Mark II (PTP mode)
+	30eb  EOS 20D
+	30ec  EOS 20D (ptp)
+	30ee  EOS 350D
+	30ef  EOS 350D (ptp)
+	30f0  PowerShot S2 IS (PTP mode)
+	30f2  Digital IXUS 700 (normal mode) / Digital IXUS 700 (PTP mode) / IXY Digital 600 (normal mode) / PowerShot SD500 (normal mode) / PowerShot SD500 (PTP mode)
+	30f4  PowerShot SD30 / Ixus iZoom / IXY DIGITAL L3
+	30f5  SELPHY CP500
+	30f6  SELPHY CP400
+	30f8  Powershot A430
+	30f9  PowerShot A410 (PTP mode)
+	30fa  PowerShot S80
+	30fc  PowerShot A620 (PTP mode)
+	30fd  PowerShot A610 (normal mode)/PowerShot A610 (PTP mode)
+	30fe  Digital IXUS 65 (PTP mode)/PowerShot SD630 (PTP mode)
+	30ff  Digital IXUS 55 (PTP mode)/PowerShot SD450 (PTP mode)
+	3100  PowerShot TX1
+	310b  SELPHY CP600
+	310e  Digital IXUS 50 (PTP mode)
+	310f  PowerShot A420
+	3110  EOS Digital Rebel XTi
+	3115  PowerShot SD900 / Digital IXUS 900 Ti / IXY DIGITAL 1000
+	3116  Digital IXUS 750 / PowerShot SD550 (PTP mode)
+	3117  PowerShot A700
+	3119  PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS
+	311a  PowerShot S3 IS
+	311b  PowerShot A540
+	311c  PowerShot SD600 DIGITAL ELPH / DIGITAL IXUS 60 / IXY DIGITAL 70
+	3125  PowerShot G7
+	3126  PowerShot A530
+	3127  SELPHY CP710
+	3128  SELPHY CP510
+	312d  Elura 100
+	3136  PowerShot SD800 IS / Digital IXUS 850 IS / IXY DIGITAL 900 IS
+	3137  PowerShot SD40 / Digital IXUS i7 IXY / DIGITAL L4
+	3138  PowerShot A710 IS
+	3139  PowerShot A640
+	313a  PowerShot A630
+	3141  SELPHY ES1
+	3142  SELPHY CP730
+	3143  SELPHY CP720
+	3145  EOS 450D
+	3146  EOS 40D
+	3147  EOS 1Ds Mark III
+	3148  PowerShot S5 IS
+	3149  PowerShot A460
+	314b  PowerShot SD850 IS DIGITAL ELPH / Digital IXUS 950 IS / IXY DIGITAL 810 IS
+	314c  PowerShot A570 IS
+	314d  PowerShot A560
+	314e  PowerShot SD750 DIGITAL ELPH / DIGITAL IXUS 75 / IXY DIGITAL 90
+	314f  PowerShot SD1000 DIGITAL ELPH / DIGITAL IXUS 70 / IXY DIGITAL 10
+	3150  PowerShot A550
+	3155  PowerShot A450
+	315a  PowerShot G9
+	315b  PowerShot A650 IS
+	315d  PowerShot A720
+	315e  PowerShot SX100 IS
+	315f  PowerShot SD950 IS DIGITAL ELPH / DIGITAL IXUS 960 IS / IXY DIGITAL 2000 IS
+	3160  Digital IXUS 860 IS
+	3170  SELPHY CP750
+	3171  SELPHY CP740
+	3172  SELPHY CP520
+	3173  PowerShot SD890 IS DIGITAL ELPH / Digital IXUS 970 IS / IXY DIGITAL 820 IS
+	3174  PowerShot SD790 IS DIGITAL ELPH / Digital IXUS 90 IS / IXY DIGITAL 95 IS
+	3175  IXY Digital 25 IS
+	3176  PowerShot A590
+	3177  PowerShot A580
+	317a  PC1267 [Powershot A470]
+	3184  Digital IXUS 80 IS (PTP mode)
+	3185  SELPHY ES2
+	3186  SELPHY ES20
+	318d  PowerShot SX100 IS
+	318e  PowerShot A1000 IS
+	318f  PowerShot G10
+	3191  PowerShot A2000 IS
+	3192  PowerShot SX110 IS
+	3193  PowerShot SD990 IS DIGITAL ELPH / Digital IXUS 980 IS / IXY DIGITAL 3000 IS
+	3195  PowerShot SX1 IS
+	3196  PowerShot SD880 IS DIGITAL ELPH / Digital IXUS 870 IS / IXY DIGITAL 920 IS
+	3199  EOS 5D Mark II
+	319a  EOS 7D
+	319b  EOS 50D
+	31aa  SELPHY CP770
+	31ab  SELPHY CP760
+	31ad  PowerShot E1
+	31af  SELPHY ES3
+	31b0  SELPHY ES30
+	31b1  SELPHY CP530
+	31bc  PowerShot D10
+	31bd  PowerShot SD960 IS DIGITAL ELPH / Digital IXUS 110 IS / IXY DIGITAL 510 IS
+	31be  PowerShot A2100 IS
+	31bf  PowerShot A480
+	31c0  PowerShot SX200 IS
+	31c1  PowerShot SD970 IS DIGITAL ELPH / Digital IXUS 990 IS / IXY DIGITAL 830 IS
+	31c2  PowerShot SD780 IS DIGITAL ELPH / Digital IXUS 100 IS / IXY DIGITAL 210 IS
+	31c3  PowerShot A1100 IS
+	31c4  PowerShot SD1200 IS DIGITAL ELPH / Digital IXUS 95 IS / IXY DIGITAL 110 IS
+	31cf  EOS Rebel T1i / EOS 500D / EOS Kiss X3
+	31dd  SELPHY CP780
+	31df  PowerShot G11
+	31e0  PowerShot SX120 IS
+	31e1  PowerShot S90
+	31e4  PowerShot SX20 IS
+	31e5  Digital IXUS 200 IS
+	31e6  PowerShot SD940 IS DIGITAL ELPH / Digital IXUS 120 IS / IXY DIGITAL 220 IS
+	31e7  SELPHY CP790
+	31ea  EOS Rebel T2i / EOS 550D / EOS Kiss X4
+	31ee  SELPHY ES40
+	31ef  PowerShot A495
+	31f0  PowerShot A490
+	31f1  PowerShot A3100 IS / PowerShot A3150 IS
+	31f2  PowerShot A3000 IS
+	31f3  PowerShot Digital ELPH SD1400 IS
+	31f4  PowerShot SD1300 IS / IXUS 105
+	31f5  Powershot SD3500 IS / IXUS 210 IS
+	31f6  PowerShot SX210 IS
+	31f7  Powershot SD4000 IS / IXUS 300 HS / IXY 30S
+	31f8  Powershot SD4500 IS / IXUS 1000 HS / IXY 50S
+	31ff  Digital IXUS 55
+	3209  Vixia HF S21 A
+	320f  PowerShot G12
+	3210  Powershot SX30 IS
+	3211  PowerShot SX130 IS
+	3212  Powershot S95
+	3214  SELPHY CP800
+	3215  EOS 60D
+	3218  EOS 600D / Rebel T3i (ptp)
+	3219  EOS 1D X
+	3223  PowerShot A3300 IS
+	3224  PowerShot A3200 IS
+	3225  PowerShot ELPH 500 HS / IXUS 310 HS
+	3226  PowerShow A800
+	3227  PowerShot ELPH 100 HS / IXUS 115 HS
+	3228  PowerShot SX230 HS
+	3229  PowerShot ELPH 300 HS / IXUS 220 HS
+	322a  PowerShot A2200
+	322b  Powershot A1200
+	322c  PowerShot SX220 HS
+	3233  PowerShot G1 X
+	3234  PowerShot SX150 IS
+	3235  PowerShot ELPH 510 HS / IXUS 1100 HS
+	3236  PowerShot S100
+	3237  PowerShot ELPH 310 HS / IXUS 230 HS
+	3238  PowerShot SX40 HS
+	323a  EOS 5D Mark III
+	323b  EOS Rebel T4i
+	323d  EOS M
+	323e  PowerShot A1300
+	323f  PowerShot A810
+	3240  PowerShot ELPH 320 HS / IXUS 240 HS
+	3241  PowerShot ELPH 110 HS / IXUS 125 HS
+	3242  PowerShot D20
+	3243  PowerShot A4000 IS
+	3244  PowerShot SX260 HS
+	3245  PowerShot SX240 HS
+	3246  PowerShot ELPH 530 HS / IXUS 510 HS
+	3247  PowerShot ELPH 520 HS / IXUS 500 HS
+	3248  PowerShot A3400 IS
+	3249  PowerShot A2400 IS
+	324a  PowerShot A2300
+	3250  EOS 6D
+	3252  EOS 1D C
+	3253  EOS 70D
+	3255  SELPHY CP900
+	3256  SELPHY CP810
+	3258  PowerShot G15
+	3259  PowerShot SX50 HS
+	325a  PowerShot SX160 IS
+	325b  PowerShot S110
+	325c  PowerShot SX500 IS
+	325e  PowerShot N
+	325f  PowerShot SX280 HS
+	3260  PowerShot SX270 HS
+	3261  PowerShot A3500 IS
+	3262  PowerShot A2600
+	3263  PowerShot SX275 HS
+	3264  PowerShot A1400
+	3265  Powershot ELPH 130 IS / IXUS 140
+	3266  Powershot ELPH 120 IS / IXUS 135
+	3268  PowerShot ELPH 330 HS / IXUS 255 HS
+	326f  EOS 7D Mark II
+	3270  EOS 100D
+	3271  PowerShot A2500
+	3272  EOS 700D
+	3274  PowerShot G16
+	3275  PowerShot S120
+	3276  PowerShot SX170 IS
+	3277  PowerShot SX510 HS
+	3278  PowerShot S200
+	327a  SELPHY CP910
+	327b  SELPHY CP820
+	327d  Powershot ELPH 115 IS / IXUS 132
+	327f  EOS Rebel T5 / EOS 1200D / EOS Kiss X70
+	3284  PowerShot D30
+	3285  PowerShot SX700 HS
+	3286  PowerShot SX600 HS
+	3287  PowerShot ELPH 140 IS / IXUS 150
+	3288  Powershot ELPH 135 / IXUS 145
+	3289  PowerShot ELPH 340 HS / IXUS 265 HS
+	328a  PowerShot ELPH 150 IS / IXUS 155
+	328b  PowerShot N Facebook(R) Ready
+	3299  EOS M3
+	329a  PowerShot SX60 HS
+	329b  PowerShot SX520 HS
+	329c  PowerShot SX400 IS
+	329d  PowerShot G7 X
+	329f  PowerShot SX530 HS
+	32a0  EOS M10
+	32a6  PowerShot SX710 HS
+	32a7  PowerShot SX610 HS
+	32a8  PowerShot G3 X
+	32aa  Powershot ELPH 160 / IXUS 160
+	32ab  PowerShot ELPH 350HS / IXUS 275 HS
+	32ac  PowerShot ELPH 170 IS / IXUS 170
+	32ad  PowerShot SX410 IS
+	32b1  SELPHY CP1200
+	32b2  PowerShot G9 X
+	32b3  PowerShot G5 X
+	32b4  EOS Rebel T6
+	32bb  EOS M5
+	32bf  PowerShot SX420 IS
+	32c0  PowerShot ELPH 190IS
+	32c1  PowerShot ELPH 180 / IXUS 175
+	32c2  PowerShot SX720 HS
+	32c5  EOS M6
+	32cc  EOS 200D
+	32d1  EOS M100
+	32d2  EOS M50
+	32d4  Powershot ELPH 185 / IXUS 185 / IXY 200
+	32d5  PowerShot SX430 IS
+	32db  SELPHY CP1300
+04aa  DaeWoo Telecom, Ltd
+04ab  Chromatic Research
+04ac  Micro Audiometrics Corp.
+04ad  Dooin Electronics
+	2501  Bluetooth Device
+04af  Winnov L.P.
+04b0  Nikon Corp.
+	0102  Coolpix 990
+	0103  Coolpix 880
+	0104  Coolpix 995
+	0106  Coolpix 775
+	0107  Coolpix 5000
+	0108  Coolpix 2500
+	0109  Coolpix 2500 (ptp)
+	010a  Coolpix 4500
+	010b  Coolpix 4500 (ptp)
+	010d  Coolpix 5700 (ptp)
+	010e  Coolpix 4300 (storage)
+	010f  Coolpix 4300 (ptp)
+	0110  Coolpix 3500 (Sierra Mode)
+	0111  Coolpix 3500 (ptp)
+	0112  Coolpix 885 (ptp)
+	0113  Coolpix 5000 (ptp)
+	0114  Coolpix 3100 (storage)
+	0115  Coolpix 3100 (ptp)
+	0117  Coolpix 2100 (ptp)
+	0119  Coolpix 5400 (ptp)
+	011d  Coolpix 3700 (ptp)
+	0121  Coolpix 3200 (ptp)
+	0122  Coolpix 2200 (ptp)
+	0124  Coolpix 8400 (mass storage mode)
+	0125  Coolpix 8400 (ptp)
+	0126  Coolpix 8800
+	0129  Coolpix 4800 (ptp)
+	012c  Coolpix 4100 (storage)
+	012d  Coolpix 4100 (ptp)
+	012e  Coolpix 5600 (ptp)
+	0130  Coolpix 4600 (ptp)
+	0135  Coolpix 5900 (ptp)
+	0136  Coolpix 7900 (storage)
+	0137  Coolpix 7900 (ptp)
+	013a  Coolpix 100 (storage)
+	013b  Coolpix 100 (ptp)
+	0141  Coolpix P2 (storage)
+	0142  Coolpix P2 (ptp)
+	0163  Coolpix P5100 (ptp)
+	0169  Coolpix P50 (ptp)
+	0202  Coolpix SQ (ptp)
+	0203  Coolpix 4200 (mass storage mode)
+	0204  Coolpix 4200 (ptp)
+	0205  Coolpix 5200 (storage)
+	0206  Coolpix 5200 (ptp)
+	0301  Coolpix 2000 (storage)
+	0302  Coolpix 2000 (ptp)
+	0317  Coolpix L20 (ptp)
+	0402  DSC D100 (ptp)
+	0403  D2H (mass storage mode)
+	0404  D2H SLR (ptp)
+	0405  D70 (mass storage mode)
+	0406  DSC D70 (ptp)
+	0408  D2X SLR (ptp)
+	0409  D50 digital camera
+	040a  D50 (ptp)
+	040c  D2Hs
+	040e  DSC D70s (ptp)
+	040f  D200 (mass storage mode)
+	0410  D200 (ptp)
+	0411  D80 (mass storage mode)
+	0412  D80 (MTP/PTP mode)
+	0413  D40 (mass storage mode)
+	041e  D60 digital camera (mass storage mode)
+	0422  D700 (ptp)
+	0423  D5000
+	0424  D3000
+	0425  D300S
+	0428  D7000
+	0429  D5100
+	042a  D800 (ptp)
+	0430  D7100
+	0436  D810
+	043f  D5600
+	0f03  PD-10 Wireless Printer Adapter
+	4000  Coolscan LS 40 ED
+	4001  LS 50 ED/Coolscan V ED
+	4002  Super Coolscan LS-5000 ED
+04b1  Pan International
+04b3  IBM Corp.
+	3003  Rapid Access III Keyboard
+	3004  Media Access Pro Keyboard
+	300a  Rapid Access IIIe Keyboard
+	3016  UltraNav Keyboard Hub
+	3018  UltraNav Keyboard
+	301a  2-port low-power hub
+	301b  SK-8815 Keyboard
+	301c  Enhanced Performance Keyboard
+	3020  Enhanced Performance Keyboard
+	3025  NetVista Full Width Keyboard
+	3100  NetVista Mouse
+	3103  ScrollPoint Pro Mouse
+	3104  ScrollPoint Wireless Mouse
+	3105  ScrollPoint Optical (HID)
+	3107  ThinkPad 800dpi Optical Travel Mouse
+	3108  800dpi Optical Mouse w/ Scroll Point
+	3109  Optical ScrollPoint Pro Mouse
+	310b  Red Wheel Mouse
+	310c  Wheel Mouse
+	4427  Portable CD ROM
+	4482  Serial Converter
+	4484  SMSC USB20H04 3-Port Hub [ThinkPad X4 UltraBase, Wistron S Note-3 Media Slice]
+	4485  ThinkPad Dock Hub
+	4524  40 Character Vacuum Fluorescent Display
+	4525  Double sided CRT
+	4535  4610 Suremark Printer
+	4550  NVRAM (128 KB)
+	4554  Cash Drawer
+	4580  Hub w/ NVRAM
+	4581  4800-2xx Hub w/ Cash Drawer
+	4604  Keyboard w/ Card Reader
+	4671  4820 LCD w/ MSR/KB
+04b4  Cypress Semiconductor Corp.
+	0001  Mouse
+	0002  CY7C63x0x Thermometer
+	0008  CDC ACM serial port
+	0033  Mouse
+	0060  Wireless optical mouse
+	00f3  FX3 micro-controller (DFU mode)
+	0100  Cino FuzzyScan F760-B
+	0101  Keyboard/Hub
+	0102  Keyboard with APM
+	0130  MyIRC Remote Receiver
+	0306  Telephone Receiver
+	0407  Optical Skype Mouse
+	0818  AE-SMKD92-* [Thumb Keyboard]
+	0bad  MetaGeek Wi-Spy
+	1002  CY7C63001 R100 FM Radio
+	1006  Human Interface Device
+	2050  hub
+	2830  Opera1 DVB-S (cold state)
+	3813  NANO BIOS Programmer
+	4235  Monitor 02 Driver
+	4381  SCAPS USC-1 Scanner Controller
+	4611  Storage Adapter FX2 (CY)
+	4616  Flash Disk (TPP)
+	4624  DS-Xtreme Flash Card
+	4717  West Bridge
+	5201  Combi Keyboard-Hub (Hub)
+	5202  Combi Keyboard-Hub (Keyboard)
+	5500  HID->COM RS232 Adapter
+	5a9b  Dacal CD/DVD Library D-101/DC-300/DC-016RW
+	6022  Hantek DSO-6022BE
+	602a  Hantek DSO-6022BL
+	6370  ViewMate Desktop Mouse CC2201
+	6502  CY4609
+	6506  CY4603
+	650a  CY4613
+	6560  CY7C65640 USB-2.0 "TetraHub"
+	6570  Unprogrammed CY7C65632/34 hub HX2VL
+	6572  Unprogrammed CY7C65642 hub
+	6830  CY7C68300A EZ-USB AT2 USB 2.0 to ATA/ATAPI
+	6831  Storage Adapter ISD-300LP (CY)
+	7417  Wireless PC Lock/Ultra Mouse
+	8329  USB To keyboard/Mouse Converter
+	8613  CY7C68013 EZ-USB FX2 USB 2.0 Development Kit
+	8614  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
+	861f  Anysee E30 USB 2.0 DVB-T Receiver
+	bca1  Barcode Reader
+	cc04  Centor USB RACIA-ALVAR USB PORT
+	cc06  Centor-P RACIA-ALVAR USB PORT
+	d5d5  CY7C63x0x Zoltrix Z-Boxer GamePad
+	de61  Barcode Reader
+	de64  Barcode Reader
+	f000  CY30700 Licorice evaluation board
+	f111  CY8CKIT-002 PSoC MiniProg3 Rev A Program and debug kit
+	f115  PSoC FirstTouch Programmer
+	f139  KitProg
+	f231  DELLY Changer 4in1 universal IR remote
+	f232  Mono embedded computer
+	fd10  Gembird MSIS-PM
+	fd13  Energenie EG-PMS
+	fd15  Energenie EG-PMS2
+04b5  ROHM LSI Systems USA, LLC
+	3064  Hantek DSO-3064
+	6022  Hantek DSO-6022BE
+	602a  Hantek DSO-6022BL
+04b6  Hint Corp.
+04b7  Compal Electronics, Inc.
+04b8  Seiko Epson Corp.
+	0001  Stylus Color 740 / Photo 750
+	0002  ISD Smart Cable for Mac
+	0003  ISD Smart Cable
+	0004  Printer
+	0005  Printer
+	0006  Printer
+	0007  Printer
+	0015  Stylus Photo R3000
+	0080  SC-P400 Series
+	0101  GT-7000U [Perfection 636]
+	0102  GT-2200
+	0103  GT-6600U [Perfection 610]
+	0104  GT-7600UF [Perfection 1200U/1200U Photo]
+	0105  Stylus Scan 2000
+	0106  Stylus Scan 2500
+	0107  ES-2000 [Expression 1600U]
+	0108  CC-700
+	0109  ES-8500 [Expression 1640 XL]
+	010a  GT-8700/GT-8700F [Perfection 1640SU/1640SU PHOTO]
+	010b  GT-7700U [Perfection 1240U]
+	010c  GT-6700U [Perfection 640]
+	010d  CC-500L
+	010e  ES-2200 [Perfection 1680]
+	010f  GT-7200U [Perfection 1250/1250 PHOTO]
+	0110  GT-8200U/GT-8200UF [Perfection 1650/1650 PHOTO]
+	0112  GT-9700F [Perfection 2450 PHOTO]
+	0114  Perfection 660
+	0116  GT-9400UF [Perfection 3170]
+	0118  GT-F600 [Perfection 4180]
+	0119  GT-X750 [Perfection 4490 Photo]
+	011a  CC-550L [1000 ICS]
+	011b  GT-9300UF [Perfection 2400 PHOTO]
+	011c  GT-9800F [Perfection 3200]
+	011d  GT-7300U [Perfection 1260/1260 PHOTO]
+	011e  GT-8300UF [Perfection 1660 PHOTO]
+	011f  GT-8400UF [Perfection 1670/1670 PHOTO]
+	0120  GT-7400U [Perfection 1270]
+	0121  GT-F500/GT-F550 [Perfection 2480/2580 PHOTO]
+	0122  GT-F520/GT-F570 [Perfection 3590 PHOTO]
+	0126  ES-7000H [GT-15000]
+	0128  GT-X700 [Perfection 4870]
+	0129  ES-10000G [Expression 10000XL]
+	012a  GT-X800 [Perfection 4990 PHOTO]
+	012b  ES-H300 [GT-2500]
+	012c  GT-X900 [Perfection V700/V750 Photo]
+	012d  GT-F650 [GT-S600/Perfection V10/V100]
+	012e  GT-F670 [Perfection V200 Photo]
+	012f  GT-F700 [Perfection V350]
+	0130  GT-X770 [Perfection V500]
+	0131  GT-F720 [GT-S620/Perfection V30/V300 Photo]
+	0133  GT-1500 [GT-D1000]
+	0135  GT-X970
+	0136  ES-D400 [GT-S80]
+	0137  ES-D200 [GT-S50]
+	0138  ES-H7200 [GT-20000]
+	013a  GT-X820 [Perfection V600 Photo]
+	0142  GT-F730 [GT-S630/Perfection V33/V330 Photo]
+	0143  GT-S55
+	0144  GT-S85
+	0151  Perfection V800 Photo
+	0202  Interface Card UB-U05 for Thermal Receipt Printers [M129C/TM-T70/TM-T88IV]
+	0401  CP 800 Digital Camera
+	0402  PhotoPC 850z
+	0403  PhotoPC 3000z
+	0509  JVC PIX-MC10
+	0601  Stylus Photo 875DC Card Reader
+	0602  Stylus Photo 895 Card Reader
+	0801  CC-600PX [Stylus CX5200/CX5400/CX6600]
+	0802  CC-570L [Stylus CX3100/CX3200]
+	0803  Printer (Composite Device)
+	0804  Storage Device
+	0805  Stylus CX6300/CX6400
+	0806  PM-A850 [Stylus Photo RX600/610]
+	0807  Stylus Photo RX500/510
+	0808  Stylus CX5200/CX5300/CX5400
+	0809  Storage Device
+	080a  F-3200
+	080c  ME100 [Stylus CX1500]
+	080d  Stylus CX4500/4600
+	080e  PX-A550 [CX-3500/3600/3650 MFP]
+	080f  Stylus Photo RX420/RX425/RX430
+	0810  PM-A900 [Stylus Photo RX700]
+	0811  PM-A870 [Stylus Photo RX620/RX630]
+	0812  MFP Composite Device
+	0813  Stylus CX6500/6600
+	0814  PM-A700
+	0815  LP-A500 [AcuLaser CX1]
+	0816  Printer (Composite Device)
+	0817  LP-M5500/LP-M5500F
+	0818  Stylus CX3700/CX3800/DX3800
+	0819  PX-A650 [Stylus CX4700/CX4800/DX4800/DX4850]
+	081a  PM-A750 [Stylus Photo RX520/RX530]
+	081b  MFP Composite Device
+	081c  PM-A890 [Stylus Photo RX640/RX650]
+	081d  PM-A950
+	081e  MFP Composite Device
+	081f  Stylus CX7700/7800
+	0820  Stylus CX4100/CX4200/DX4200
+	0821  Stylus CX5700F/CX5800F
+	0822  Storage Device
+	0823  MFP Composite Device
+	0824  Storage Device
+	0825  MFP Composite Device
+	0826  Storage Device
+	0827  PM-A820 [Stylus Photo RX560/RX580/RX585/RX590]
+	0828  PM-A970
+	0829  PM-T990
+	082a  PM-A920
+	082b  Stylus CX5900/CX5000/DX5000/DX5050
+	082c  Storage Device
+	082d  Storage Device
+	082e  PX-A720 [Stylus CX5900/CX6000/DX6000]
+	082f  PX-A620 [Stylus CX3900/DX4000/DX4050]
+	0830  ME 200 [Stylus CX2800/CX2900]
+	0831  Stylus CX6900F/CX7000F/DX7000F
+	0832  MFP Composite Device
+	0833  LP-M5600
+	0834  LP-M6000
+	0835  AcuLaser CX21
+	0836  PM-T960
+	0837  PM-A940 [Stylus Photo RX680/RX685/RX690]
+	0838  PX-A640 [CX7300/CX7400/DX7400]
+	0839  PX-A740 [CX8300/CX8400/DX8400]
+	083a  PX-FA700 [CX9300F/CX9400Fax/DX9400F]
+	083b  MFP Composite Device
+	083c  PM-A840S [Stylus Photo RX595/RX610]
+	083d  MFP Composite Device
+	083e  MFP Composite Device
+	083f  Stylus CX4300/CX4400/CX5500/CX5600/DX4400/DX4450
+	0841  PX-401A [ME 300/Stylus NX100]
+	0843  LP-M5000
+	0844  EP-901A/EP-901F [Artisan 800/Stylus Photo PX800FW]
+	0846  EP-801A [Artisan 700/Stylus Photo PX700W/TX700W]
+	0847  PX-601F [ME Office 700FW/Stylus Office BX600FW/TX600FW]
+	0848  ME Office 600F/Stylus Office BX300F/TX300F
+	0849  Stylus SX205
+	084a  PX-501A [Stylus NX400]
+	084d  PX-402A [Stylus SX115/Stylus NX110 Series]
+	084f  Multifunctional Printer Scanner [ME Office 510 / Epson Stylus SX215]
+	0850  EP-702A [Stylus Photo PX650/TX650 Series]
+	0851  Stylus SX410
+	0852  EP-802A [Artisan 710 Series/Stylus Photo PX710W/TX720W Series]
+	0853  EP-902A [Artisan 810 Series/Stylus Photo PX810FW Series]
+	0854  ME OFFICE 650FN Series/Stylus Office BX310FN/TX520FN Series
+	0855  PX-602F [Stylus Office BX610FW/TX620FW Series]
+	0856  PX-502A [Stylus SX515W]
+	085c  ME 320/330 Series [Stylus SX125]
+	085d  PX-603F [ME OFFICE 960FWD Series/Stylus Office BX625FWD/TX620FWD Series]
+	085e  PX-503A [ME OFFICE 900WD Series/Stylus Office BX525WD]
+	085f  Stylus Office BX320FW/TX525FW Series
+	0860  EP-903A/EP-903F [Artisan 835/Stylus Photo PX820FWD Series]
+	0861  EP-803A/EP-803AW [Artisan 725/Stylus Photo PX720WD/TX720WD Series]
+	0862  EP-703A [Stylus Photo PX660 Series]
+	0863  ME OFFICE 620F Series/Stylus Office BX305F/BX305FW/TX320F
+	0864  ME OFFICE 560W Series
+	0865  ME OFFICE 520 Series
+	0866  AcuLaser MX20DN/MX20DNF/MX21DNF
+	0869  PX-1600F
+	086a  PX-673F [Stylus Office BX925FWD]
+	0870  Stylus Office BX305FW Plus
+	0871  K200 Series
+	0872  K300 Series
+	0873  L200 Series
+	0878  EP-704A
+	0879  EP-904A/EP-904F [Artisan 837/Stylus Photo PX830FWD Series]
+	087b  EP-804A/EP-804AR/EP-804AW [Stylus Photo PX730WD/Artisan 730 Series]
+	087c  PX-1700F
+	087d  PX-B750F/WP-4525 Series
+	087f  PX-403A
+	0880  PX-434A [Stylus NX330 Series]
+	0881  PX-404A [ME OFFICE 535]
+	0883  ME 340 Series/Stylus NX130 Series
+	0884  Stylus NX430W Series
+	0885  Stylus NX230/SX235W Series
+	088f  Stylus Office BX635FWD
+	0890  ME OFFICE 940FW Series/Stylus Office BX630FW Series
+	0891  Stylus Office BX535WD
+	0892  Stylus Office BX935FWD
+	0893  EP-774A
+	0e03  Thermal Receipt Printer [TM-T20]
+	1114  XP-440 [Expression Home Small-in-One Printer]
+	1129  ET-4750 [WorkForce ET-4750 EcoTank All-in-One]
+	1168  Workforce WF-7820/7840 Series
+04b9  Rainbow Technologies, Inc.
+	0300  SafeNet USB SuperPro/UltraPro
+	1000  iKey 1000 Token
+	1001  iKey 1200 Token
+	1002  iKey Token
+	1003  iKey Token
+	1004  iKey Token
+	1005  iKey Token
+	1006  iKey Token
+	1200  iKey 2000 Token
+	1201  iKey Token
+	1202  iKey 2032 Token
+	1203  iKey Token
+	1204  iKey Token
+	1205  iKey Token
+	1206  iKey 4000 Token
+	1300  iKey 3000 Token
+	1301  iKey 3000
+	1302  iKey Token
+	1303  iKey Token
+	1304  iKey Token
+	1305  iKey Token
+	1306  iKey Token
+	8000  SafeNet Sentinel Hardware Key
+04ba  Toucan Systems, Ltd
+04bb  I-O Data Device, Inc.
+	0101  USB2-IDE/ATAPI Bridge Adapter
+	014a  HDCL-UT
+	0201  USB2-IDE/ATAPI Bridge Adapter
+	0204  DVD Multi-plus unit iU-CD2
+	0206  DVD Multi-plus unit DVR-UEH8
+	0301  Storage Device
+	0314  USB-SSMRW SD-card
+	0319  USB2-IDE/ATAPI Bridge Adapter
+	031a  USB2-IDE/ATAPI Bridge Adapter
+	031b  USB2-IDE/ATAPI Bridge Adapter
+	031e  USB-SDRW SD-card
+	0502  Nogatech Live! (BT)
+	0528  GV-USB Video Capture
+	0901  USB ETT
+	0904  ET/TX Ethernet [pegasus]
+	0913  ET/TX-S Ethernet [pegasus2]
+	0919  USB WN-B11
+	0922  IOData AirPort WN-B11/USBS 802.11b
+	0930  ETG-US2
+	0937  WN-WAG/USL Wireless LAN Adapter
+	0938  WN-G54/USL Wireless LAN Adapter
+	093b  WN-GDN/USB
+	093f  WNGDNUS2 802.11n
+	0944  WHG-AGDN/US Wireless LAN Adapter
+	0945  WN-GDN/US3 Wireless LAN Adapter
+	0947  WN-G150U Wireless LAN Adapter
+	0948  WN-G300U Wireless LAN Adapter
+	0a03  Serial USB-RSAQ1
+	0a07  USB2-iCN Adapter
+	0a08  USB2-iCN Adapter
+	0c01  FM-10 Pro Disk
+04bd  Toshiba Electronics Taiwan Corp.
+04be  Telia Research AB
+04bf  TDK Corp.
+	0100  MediaReader CF
+	0115  USB-PDC Adapter UPA9664
+	0116  USB-cdmaOne Adapter UCA1464
+	0117  USB-PHS Adapter UHA6400
+	0118  USB-PHS Adapter UPA6400
+	0135  MediaReader Dual
+	0202  73S1121F Smart Card Reader-
+	0309  Bluetooth USB dongle
+	030a  IBM Bluetooth Ultraport Module
+	030b  Bluetooth Device
+	030c  Ultraport Bluetooth Device
+	0310  Integrated Bluetooth
+	0311  Integrated Bluetooth Device
+	0317  Bluetooth UltraPort Module from IBM
+	0318  IBM Integrated Bluetooth
+	0319  Bluetooth Adapter
+	0320  Bluetooth Adapter
+	0321  Bluetooth Device
+	0a28  INDI AV-IN Device
+04c1  U.S. Robotics (3Com)
+	0020  56K Voice Pro
+	0022  56K Voice Pro
+	007e  ISDN TA
+	0082  OfficeConnect Analog Modem
+	008f  Pro ISDN TA
+	0097  OfficeConnect Analog
+	009d  HomeConnect Webcam [vicam]
+	00a9  ISDN Pro TA-U
+	00b9  HomeConnect IDSL Modem
+	3021  56k Voice FaxModem Pro
+04c2  Methode Electronics Far East PTE, Ltd
+04c3  Maxi Switch, Inc.
+	1102  Mouse
+	2102  Mouse
+04c4  Lockheed Martin Energy Research
+04c5  Fujitsu, Ltd
+	1029  fi-4010c Scanner
+	1033  fi-4110CU
+	1041  fi-4120c Scanner
+	1042  fi-4220c Scanner
+	105b  AH-F401U Air H device
+	1084  PalmSecure Sensor V2
+	1096  fi-5110EOX
+	1097  fi-5110C
+	10ae  fi-4120C2
+	10af  fi-4220C2
+	10c7  fi-60f scanner
+	10e0  fi-5120c Scanner
+	10e1  fi-5220C
+	10e7  fi-5900C
+	10fe  S500
+	1104  KD02906 Line Thermal Printer
+	114f  fi-6130
+	1150  fi-6230
+	11f3  fi-6130Z
+	125a  PalmSecure Sensor Device - MP
+	132e  fi-7160
+	159f  ScanSnap iX1500
+	200f  Sigma DP2 (Mass Storage)
+	2010  Sigma DP2 (PictBridge)
+	201d  SATA 3.0 6Gbit/s Adaptor [GROOVY]
+04c6  Toshiba America Electronic Components
+04c7  Micro Macro Technologies
+04c8  Konica Corp.
+	0720  Digital Color Camera
+	0721  e-miniD Camera
+	0722  e-mini
+	0723  KD-200Z Camera
+	0726  KD-310Z Camera
+	0728  Revio C2 Mass Storage Device
+	0729  Revio C2 Digital Camera
+	072c  Revio KD20M
+	072d  Revio KD410Z
+04ca  Lite-On Technology Corp.
+	0020  USB Keyboard
+	004b  Keyboard
+	004f  SK-9020 keyboard
+	008a  Acer Wired Mouse Model SM-9023
+	1766  HID Monitor Controls
+	2004  Bluetooth 4.0 [Broadcom BCM20702A0]
+	2006  Broadcom BCM43142A0 Bluetooth Device
+	2007  Broadcom BCM43142A0 Bluetooth Device
+	3005  Atheros Bluetooth
+	300b  Atheros AR3012 Bluetooth
+	300d  Atheros AR3012 Bluetooth
+	300f  Atheros AR3012 Bluetooth
+	3014  Qualcomm Atheros Bluetooth
+	3015  Qualcomm Atheros QCA9377 Bluetooth
+	7022  HP HD Webcam
+	7025  HP HD Webcam
+	7046  TOSHIBA Web Camera - HD
+	7054  HP HD Webcam
+	9304  Hub
+	f01c  TT1280DA DVB-T TV Tuner
+04cb  Fuji Photo Film Co., Ltd
+	0100  FinePix 30i/40i/50i, A101/201, 1300/2200, 1400/2400/2600/2800/4500/4700/4800/4900/6800/6900 Zoom
+	0103  FinePix NX-500/NX-700 printer
+	0104  FinePix A101, 2600/2800/4800/6800 Zoom (PC CAM)
+	0108  FinePix F601 Zoom (DSC)
+	0109  FinePix F601 Zoom (PC CAM)
+	010a  FinePix S602 (Pro) Zoom (DSC)
+	010b  FinePix S602 (Pro) Zoom (PC CAM)
+	010d  FinePix S2 pro
+	010e  FinePix F402 Zoom (DSC)
+	010f  FinePix F402 Zoom (PC CAM)
+	0110  FinePix M603 Zoom (DSC)
+	0111  FinePix M603 Zoom (PC CAM)
+	0112  FinePix A202, A200 Zoom (DSC)
+	0113  FinePix A202, A200 Zoom (PC CAM)
+	0114  FinePix F401 Zoom (DSC)
+	0115  FinePix F401 Zoom (PC CAM)
+	0116  FinePix A203 Zoom (DSC)
+	0117  FinePix A203 Zoom (PC CAM)
+	0118  FinePix A303 Zoom (DSC)
+	0119  FinePix A303 Zoom (PC CAM)
+	011a  FinePix S304/3800 Zoom (DSC)
+	011b  FinePix S304/3800 Zoom (PC CAM)
+	011c  FinePix A204/2650 Zoom (DSC)
+	011d  FinePix A204/2650 Zoom (PC CAM)
+	0120  FinePix F700 Zoom (DSC)
+	0121  FinePix F700 Zoom (PC CAM)
+	0122  FinePix F410 Zoom (DSC)
+	0123  FinePix F410 Zoom (PC CAM)
+	0124  FinePix A310 Zoom (DSC)
+	0125  FinePix A310 Zoom (PC CAM)
+	0126  FinePix A210 Zoom (DSC)
+	0127  FinePix A210 Zoom (PC CAM)
+	0128  FinePix A205(S) Zoom (DSC)
+	0129  FinePix A205(S) Zoom (PC CAM)
+	012a  FinePix F610 Zoom (DSC)
+	012b  FinePix Digital Camera 030513
+	012c  FinePix S7000 Zoom (DSC)
+	012d  FinePix S7000 Zoom (PC CAM)
+	012f  FinePix Digital Camera 030731
+	0130  FinePix S5000 Zoom (DSC)
+	0131  FinePix S5000 Zoom (PC CAM)
+	013b  FinePix Digital Camera 030722
+	013c  FinePix S3000 Zoom (DSC)
+	013d  FinePix S3000 Zoom (PC CAM)
+	013e  FinePix F420 Zoom (DSC)
+	013f  FinePix F420 Zoom (PC CAM)
+	0142  FinePix S7000 Zoom (PTP)
+	0148  FinePix A330 Zoom (DSC)
+	0149  FinePix A330 Zoom (UVC)
+	014a  FinePix A330 Zoom (PTP)
+	014b  FinePix A340 Zoom (DSC)
+	014c  FinePix A340 Zoom (UVC)
+	0159  FinePix F710 Zoom (DSC)
+	0165  FinePix S3500 Zoom (DSC)
+	0168  FinePix E500 Zoom (DSC)
+	0169  FinePix E500 Zoom (UVC)
+	016b  FinePix E510 Zoom (DSC)
+	016c  FinePix E510 Zoom (PC CAM)
+	016e  FinePix S5500 Zoom (DSC)
+	016f  FinePix S5500 Zoom (UVC)
+	0171  FinePix E550 Zoom (DSC)
+	0172  FinePix E550 Zoom (UVC)
+	0177  FinePix F10 (DSC)
+	0179  Finepix F10 (PTP)
+	0186  FinePix S5200/S5600 Zoom (DSC)
+	0188  FinePix S5200/S5600 Zoom (PTP)
+	018e  FinePix S9500 Zoom (DSC)
+	018f  FinePix S9500 Zoom (PTP)
+	0192  FinePix E900 Zoom (DSC)
+	0193  FinePix E900 Zoom (PTP)
+	019b  FinePix F30 (PTP)
+	01af  FinePix A700 (PTP)
+	01bf  FinePix F6000fd/S6500fd Zoom (PTP)
+	01c0  FinePix F20 (PTP)
+	01c1  FinePix F31fd (PTP)
+	01c3  FinePix S5 Pro
+	01c4  FinePix S5700 Zoom (PTP)
+	01c5  FinePix F40fd (PTP)
+	01c6  FinePix A820 Zoom (PTP)
+	01d2  FinePix A800 Zoom (PTP)
+	01d3  FinePix A920 (PTP)
+	01d4  FinePix F50fd (PTP)
+	01d5  FinePix F47 (PTP)
+	01e7  Fujifilm A850 Digital Camera
+	01f7  FinePix J250 (PTP)
+	01fd  A160
+	023e  FinePix AX300
+	0240  FinePix S2950 Digital Camera
+	0241  FinePix S3200 Digital Camera
+	0278  FinePix JV300
+	02c5  FinePix S9900W Digital Camera (PTP)
+	02e0  X-T200 Digital Camera
+	5006  ASK-300
+	5007  DX100
+04cc  ST-Ericsson
+	1122  Hub
+	1520  USB 2.0 Hub (Avocent KVM)
+	1521  USB 2.0 Hub
+	1a62  GW Instek GSP-830 Spectrum Analyzer (HID)
+	2323  Ux500 serial debug port
+	2533  NFC device (PN533)
+	8116  Camera
+04cd  Tatung Co. Of America
+04ce  ScanLogic Corp.
+	0002  SL11R-IDE IDE Bridge
+	0100  USB2PRN Printer Class
+	0300  Phantom 336CX - C3 scanner
+	04ce  SL11DEMO, VID: 0x4ce, PID: 0x4ce
+	07d1  SL11R, VID: 0x4ce, PID: 0x07D1
+04cf  Myson Century, Inc.
+	0022  OCZ Alchemy Series Elixir II Keyboard
+	0800  MTP800 Mass Storage Device
+	8810  CS8810 Mass Storage Device
+	8811  CS8811 Mass Storage Device
+	8813  CS8813 Mass Storage Device
+	8818  USB2.0 to ATAPI Bridge Controller
+	8819  USB 2.0 SD/MMC Reader
+	9920  CS8819A2-114 Mass Storage Device
+04d0  Digi International
+04d1  ITT Canon
+04d2  Altec Lansing Technologies
+	0070  ADA70 Speakers
+	0305  Non-Compliant Audio Device
+	0311  ADA-310 Speakers
+	2060  Claritel-i750 - vp
+	ff05  ADA-305 Speakers
+	ff47  Lansing HID Audio Controls
+	ff49  Lansing HID Audio Controls
+04d3  VidUS, Inc.
+04d4  LSI Logic, Inc.
+04d5  Forte Technologies, Inc.
+04d6  Mentor Graphics
+04d7  Oki Semiconductor
+	1be4  Bluetooth Device
+04d8  Microchip Technology, Inc.
+	0002  PicoLCD 20x2
+	0003  PICkit 2 Microcontroller Programmer
+	000a  CDC RS-232 Emulation Demo
+	000b  PIC18F2550 (32K Flashable 10 Channel, 10 Bit A/D USB Microcontroller)
+	0032  PICkit1
+	0033  PICkit2
+	0036  PICkit Serial Analyzer
+	00e0  PIC32 Starter Board
+	04cd  28Cxxx EEPROM Programmer
+	0a04  AGP LIN Serial Analyzer
+	8000  In-Circuit Debugger
+	8001  ICD2 in-circuit debugger
+	8101  PIC24F Starter Kit
+	8107  Microstick II
+	8108  ChipKit Pro MX7 (PIC32MX)
+	9004  Microchip REAL ICE
+	9009  ICD3
+	900a  PICkit3
+	9012  PICkit4
+	9015  ICD 4 In-Circuit Debugger
+	c001  PicoLCD 20x4
+	e11c  TL866CS EEPROM Programmer [MiniPRO]
+	ed16  BeamiRC 2.0 CNC remote controller analoge
+	edb4  micro PLC (ATSAMD51G19A) [Black Brix ECU II]
+	edb5  ATMEGA32U4 [Black Brix ECU]
+	f2c4  Macareux-labs Hygrometry Temperature Sensor
+	f2f7  Yepkit YKUSH
+	f3aa  Macareux-labs Usbce Bootloader mode
+	f437  SBE Tech Ultrasonic Anemometer
+	f4b5  SmartScope
+	f5fe  TrueRNG
+	f8da  Hughski Ltd. ColorHug
+	f8e8  Harmony 300/350 Remote
+	f91c  SPROG IIv3
+	faff  Dangerous Prototypes BusPirate v4 Bootloader mode
+	fb00  Dangerous Prototypes BusPirate v4
+	fbb2  GCUSB-nStep stepper motor controller
+	fbba  DiscFerret Magnetic Disc Analyser (bootloader mode)
+	fbbb  DiscFerret Magnetic Disc Analyser (active mode)
+	fc1e  Bachrus Speedometer Interface
+	fc92  Open Bench Logic Sniffer
+	ffee  Devantech USB-ISS
+	ffef  PICoPLC [APStech]
+04d9  Holtek Semiconductor, Inc.
+	0006  Wired Keyboard (78/79 key) [RPI Wired Keyboard 5]
+	0022  Portable Keyboard
+	0129  Keyboard [KBPV8000]
+	0348  Keyboard
+	0407  Keyboard [TEX Shinobi]
+	048e  Optical Mouse
+	0499  Optical Mouse
+	1135  Mouse [MGK-15BU/MLK-15BU]
+	1203  Keyboard
+	1400  PS/2 keyboard + mouse controller
+	1503  Keyboard
+	1603  Keyboard
+	1702  Keyboard LKS02
+	1818  Keyboard [Diatec Filco Majestouch 2]
+	2011  Keyboard [Diatec Filco Majestouch 1]
+	2013  Keyboard [Das Keyboard]
+	2206  Fujitsu Siemens Mouse Esprimo Q
+	2221  Keyboard
+	2323  Keyboard
+	2519  Shenzhen LogoTech 2.4GHz receiver
+	2832  HT82A832R Audio MCU
+	2834  HT82A834R Audio MCU
+	4545  Keyboard [Diatec Majestouch 2 Tenkeyless]
+	a01c  wireless multimedia keyboard with trackball [Trust ADURA 17911]
+	a050  Chatman V1
+	a052  USB-zyTemp
+	a055  Keyboard
+	a075  Optical Gaming Mouse
+	a096  Keyboard
+	a09f  E-Signal LUOM G10 Mechanical Gaming Mouse
+	a100  Mouse [HV-MS735]
+	a11b  Mouse [MX-3200]
+	a153  Optical Gaming Mouse
+	a29f  Microarray fingerprint reader
+	b534  LGT8F328P Microprocessor
+	e002  MCU
+	fc2a  Gaming Mouse [Redragon M709]
+	fc30  Gaming Mouse [Redragon M711]
+	fc38  Gaming Mouse [Redragon M602-RGB]
+	fc4d  Gaming Mouse [Redragon M908]
+	fc55  Venus MMO Gaming Mouse
+04da  Panasonic (Matsushita)
+	0901  LS-120 Camera
+	0912  SDR-S10
+	0b01  CD-R/RW Drive
+	0b03  SuperDisk 240MB
+	0d01  CD-R Drive KXL-840AN
+	0d09  CD-R Drive KXL-RW32AN
+	0d0a  CD-R Drive KXL-CB20AN
+	0d0d  CDRCB03
+	0d0e  DVD-ROM & CD-R/RW
+	0d14  DVD-RAM MLT08
+	0f07  KX-MB2030 Multifunction Laser Printer
+	0f40  Printer
+	104d  Elite Panaboard UB-T880 (HID)
+	104e  Elite Panaboard Pen Adaptor (HID)
+	1500  MFSUSB Driver
+	1800  DY-WL10 802.11abgn Adapter [Broadcom BCM4323]
+	1b00  MultiMediaCard
+	2121  EB-VS6
+	2316  DVC Mass Storage Device
+	2317  DVC USB-SERIAL Driver for WinXP
+	2318  NV-GS11/230/250 (webcam mode)
+	2319  NV-GS15 (webcam mode)
+	231a  NV-GS11/230/250 (DV mode)
+	231d  DVC Web Camera Device
+	231e  DVC DV Stream Device
+	2372  Lumix Camera (Storage mode)
+	2374  Lumix Camera (PTP mode)
+	2451  HDC-SD9
+	245b  HC-X920K (3MOS Full HD video camcorder)
+	2477  SDR-H85 Camcorder (PC mode)
+	2478  SDR-H85 Camcorder (recorder mode - SD card)
+	2479  SDR-H85 Camcorder (recorder mode - HDD)
+	2497  HDC-TM700
+	250c  Gobi Wireless Modem (QDL mode)
+	250d  Gobi Wireless Modem
+	3904  N5HBZ0000055 802.11abgn Wireless Adapter [Atheros AR7010+AR9280]
+	3908  N5HBZ0000062 802.11abgn Wireless Adapter [Atheros AR9374v1.1]
+	3c04  JT-P100MR-20 [ePassport Reader]
+04db  Hypertec Pty, Ltd
+04dc  Huan Hsin Holdings, Ltd
+04dd  Sharp Corp.
+	13a6  MFC2000
+	6006  AL-1216
+	6007  AL-1045
+	6008  AL-1255
+	6009  AL-1530CS
+	600a  AL-1540CS
+	600b  AL-1456
+	600c  AL-1555
+	600d  AL-1225
+	600e  AL-1551CS
+	600f  AR-122E
+	6010  AR-152E
+	6011  AR-157E
+	6012  SN-1045
+	6013  SN-1255
+	6014  SN-1456
+	6015  SN-1555
+	6016  AR-153E
+	6017  AR-122E N
+	6018  AR-153E N
+	6019  AR-152E N
+	601a  AR-157E N
+	601b  AL-1217
+	601c  AL-1226
+	601d  AR-123E
+	6021  IS01
+	7002  DVC Ver.1.0
+	7004  VE-CG40U Digital Still Camera
+	7005  VE-CG30 Digital Still Camera
+	7007  VL-Z7S Digital Camcorder
+	8004  Zaurus SL-5000D/SL-5500 PDA
+	8005  Zaurus A-300
+	8006  Zaurus SL-B500/SL-5600 PDA
+	8007  Zaurus C-700 PDA
+	9009  AR-M160
+	9014  IM-DR80 Portable NetMD Player
+	9031  Zaurus C-750/C-760/C-860/SL-C3000 PDA
+	9032  Zaurus SL-6000
+	903a  GSM GPRS
+	9050  Zaurus C-860 PDA
+	9056  Viewcam Z
+	9073  AM-900
+	9074  GSM GPRS
+	90a9  Sharp Composite
+	90d0  USB-to-Serial Comm. Port
+	90f2  Sharp 3G GSM USB Control
+	9120  WS004SH
+	9122  WS007SH
+	9123  W-ZERO3 ES Smartphone
+	91a3  922SH Internet Machine
+	939a  IS03
+04de  MindShare, Inc.
+04df  Interlink Electronics
+04e1  Iiyama North America, Inc.
+	0201  Monitor Hub
+04e2  Exar Corp.
+	1410  XR21V1410 USB-UART IC
+04e3  Zilog, Inc.
+04e4  ACC Microelectronics
+04e5  Promise Technology
+04e6  SCM Microsystems, Inc.
+	0001  E-USB ATA Bridge
+	0002  eUSCSI SCSI Bridge
+	0003  eUSB SmartMedia Card Reader
+	0005  eUSB SmartMedia/CompactFlash Card Reader
+	0006  eUSB SmartMedia Card Reader
+	0007  Hifd
+	0009  eUSB ATA/ATAPI Adapter
+	000a  eUSB CompactFlash Adapter
+	000b  eUSCSI Bridge
+	000c  eUSCSI Bridge
+	000d  Dazzle MS
+	0012  Dazzle SD/MMC
+	0101  eUSB ATA Bridge (Sony Spressa USB CDRW)
+	0311  Dazzle DM-CF
+	0312  Dazzle DM-SD/MMC
+	0313  Dazzle SM
+	0314  Dazzle MS
+	0322  e-Film Reader-5
+	0325  eUSB ORCA Quad Reader
+	0327  Digital Media Reader
+	03fe  DMHS2 DFU Adapter
+	0406  eUSB SmartDM Reader
+	04e6  eUSB DFU Adapter
+	04e7  STCII DFU Adapter
+	04e8  eUSBDM DFU Adapter
+	04e9  DM-E DFU Adapter
+	0500  Veridicom 5thSense Fingerprint Sensor and eUSB SmartCard
+	0701  DCS200 Loader Device
+	0702  DVD Creation Station 200
+	0703  DVC100 Loader Device
+	0704  Digital Video Creator 100
+	1001  SCR300 Smart Card Reader
+	1010  USBAT-2 CompactFlash Card Reader
+	1014  e-Film Reader-3
+	1020  USBAT ATA/ATAPI Adapter
+	2007  RSA SecurID ComboReader
+	2009  Citibank Smart Card Reader
+	200a  Reflex v.2 Smart Card Reader
+	200d  STR391 Reader
+	5111  SCR331-DI SmartCard Reader
+	5113  SCR333 SmartCard Reader
+	5114  SCR331-DI SmartCard Reader
+	5115  SCR335 SmartCard Reader
+	5116  SCR331-LC1 / SCR3310 SmartCard Reader
+	5117  SCR3320 - Smart Card Reader
+	5118  Expresscard SIM Card Reader
+	5119  SCR3340 - ExpressCard54 Smart Card Reader
+	511b  SmartCard Reader
+	511d  SCR3311 Smart Card Reader
+	5120  SCR331-DI SmartCard Reader
+	5121  SDI010 Smart Card Reader
+	5151  SCR338 Keyboard Smart Card Reader
+	5292  SCL011 RFID reader
+	5410  SCR35xx Smart Card Reader
+	5591  SCL3711-NFC&RW
+	5810  uTrust 2700 R Smart Card Reader
+	e000  SCRx31 Reader
+	e001  SCR331 SmartCard Reader
+	e003  SPR532 PinPad SmartCard Reader
+04e7  Elo TouchSystems
+	0001  TouchScreen
+	0002  Touchmonitor Interface 2600 Rev 2
+	0004  4000U CarrollTouch® Touchmonitor Interface
+	0007  2500U IntelliTouch® Touchmonitor Interface
+	0008  3000U AccuTouch® Touchmonitor Interface
+	0009  4000U CarrollTouch® Touchmonitor Interface
+	0020  Touchscreen Interface (2700)
+	0021  Touchmonitor Interface
+	0030  4500U CarrollTouch® Touchmonitor Interface
+	0032  Touchmonitor Interface
+	0033  Touchmonitor Interface
+	0041  5010 Surface Capacitive Touchmonitor Interface
+	0042  Touchmonitor Interface
+	0050  2216 AccuTouch® Touchmonitor Interface
+	0071  Touchmonitor Interface
+	0072  Touchmonitor Interface
+	0081  Touchmonitor Interface
+	0082  Touchmonitor Interface
+	00ff  Touchmonitor Interface
+04e8  Samsung Electronics Co., Ltd
+	0001  Printer Bootloader
+	0100  Kingston Flash Drive (128MB)
+	0110  Connect3D Flash Drive
+	0111  Connect3D Flash Drive
+	0300  E2530 / GT-C3350 Phones (Mass storage mode)
+	04e8  Galaxy (MIDI mode)
+	1003  MP3 Player and Recorder
+	1006  SDC-200Z
+	130c  NX100
+	1323  WB700 Camera
+	1f05  S2 Portable [JMicron] (500GB)
+	1f06  HX-MU064DA portable harddisk
+	2018  WIS09ABGN LinkStick Wireless LAN Adapter
+	2035  Digital Photo Frame Mass Storage
+	2036  Digital Photo Frame Mini Monitor
+	3004  ML-4600
+	3005  Docuprint P1210
+	3008  ML-6060 laser printer
+	300c  ML-1210 Printer
+	300e  Laser Printer
+	3104  ML-3550N
+	3210  ML-5200A Laser Printer
+	3226  Laser Printer
+	3228  Laser Printer
+	322a  Laser Printer
+	322c  Laser Printer
+	3230  ML-1440
+	3232  Laser Printer
+	3236  ML-1450
+	3238  ML-1430
+	323a  ML-1710 Printer
+	323b  Phaser 3130
+	323c  Laser Printer
+	323d  Phaser 3120
+	323e  Laser Printer
+	3240  Laser Printer
+	3242  ML-1510 Laser Printer
+	3248  Color Laser Printer
+	324a  Laser Printer
+	324c  ML-1740 Printer
+	324d  Phaser 3121
+	3256  ML-1520 Laser Printer
+	325b  Xerox Phaser 3117 Laser Printer
+	325f  Phaser 3425 Laser Printer
+	3260  CLP-510 Color Laser Printer
+	3268  ML-1610 Mono Laser Printer
+	326c  ML-2010P Mono Laser Printer
+	3276  ML-3050/ML-3051 Laser Printer
+	327e  ML-2510 Series
+	328e  CLP-310 Color Laser Printer
+	3292  ML-1640 Series Laser Printer
+	3296  ML-2580N Mono Laser Printer
+	3297  ML-191x/ML-252x Laser Printer
+	329f  CLP-325 Color Laser Printer
+	3301  ML-1660 Series
+	330c  ML-1865
+	330f  ML-216x Series Laser Printer
+	3310  ML-331x Series Laser Printer
+	3315  ML-2540 Series Laser Printer
+	331e  M262x/M282x Xpress Series Laser Printer
+	3409  SCX-4216F Scanner
+	340c  SCX-5x15 series
+	340d  SCX-6x20 series
+	340e  MFP 560 series
+	340f  Printing Support
+	3412  SCX-4x20 series
+	3413  SCX-4100 Scanner
+	3415  Composite Device
+	3419  Composite Device
+	341a  Printing Support
+	341b  SCX-4200 series
+	341c  Composite Device
+	341d  Composite Device
+	341f  Composite Device
+	3420  Composite Device
+	3426  SCX-4500 Laser Printer
+	342d  SCX-4x28 Series
+	344f  SCX-3400 Series
+	347e  C48x Series Color Laser Multifunction Printer
+	3605  InkJet Color Printer
+	3606  InkJet Color Printer
+	3609  InkJet Color Printer
+	3902  InkJet Color Printer
+	3903  Xerox WorkCentre XK50cx
+	390f  InkJet Color Printer
+	3911  SCX-1020 series
+	4001  PSSD T7
+	4005  GT-S8000 Jet (msc)
+	4f1f  GT-S8000 Jet (mtp)
+	5000  YP-MF series
+	5001  YP-100
+	5002  YP-30
+	5003  YP-700
+	5004  YP-30
+	5005  YP-300
+	5006  YP-750
+	500d  MP3 Player
+	5010  Yepp YP-35
+	5011  YP-780
+	5013  YP-60
+	5015  yepp upgrade
+	501b  MP3 Player
+	5021  Yepp YP-ST5
+	5026  YP-MT6V
+	5027  YP-T7
+	502b  YP-F1
+	5032  YP-J70
+	503b  YP-U1 MP3 Player
+	503d  YP-T7F
+	5041  YP-Z5
+	5050  YP-U2 MP3 Player
+	5051  YP-F2R
+	5055  YP-T9
+	507d  YP-U3 (mtp)
+	507f  YP-T9J
+	5080  Yepp YP-K3 (msc)
+	5081  Yepp YP-K3 (mtp)
+	5082  YP-P2 (msc)
+	5083  YP-P2 (mtp)
+	508a  YP-T10
+	508b  YP-S5 MP3 Player
+	508c  YP-S5
+	5090  YP-S3 (msc)
+	5091  YP-S3 (mtp)
+	5092  YP-U4 (msc)
+	5093  YP-U4 (mtp)
+	5095  YP-S2
+	510f  YP-R1
+	5119  Yepp YP-P3
+	511c  YP-Q2
+	5121  YP-U5
+	5123  Yepp YP-M1
+	5a00  YP-NEU
+	5a01  YP-NDU
+	5a03  Yepp MP3 Player
+	5a04  YP-800
+	5a08  YP-90
+	5a0f  Meizu M6 MiniPlayer
+	5b01  Memory Stick Reader/Writer
+	5b02  Memory Stick Reader/Writer
+	5b03  Memory Stick Reader/Writer
+	5b04  Memory Stick Reader/Writer
+	5b05  Memory Stick Reader/Writer
+	5b11  SEW-2001u Card
+	5f00  NEXiO Sync
+	5f01  NEXiO Sync
+	5f02  NEXiO Sync
+	5f03  NEXiO Sync
+	5f04  NEXiO Sync
+	5f05  STORY Station 1TB
+	6032  G2 Portable hard drive
+	6033  G2 Portable device
+	6034  G2 Portable hard drive
+	60b3  M2 Portable Hard Drive
+	60c4  M2 Portable Hard Drive USB 3.0
+	6124  D3 Station External Hard Drive
+	6125  D3 Station External Hard Drive
+	61b5  M3 Portable Hard Drive 2TB
+	61b6  M3 Portable Hard Drive 1TB
+	61b7  M3 Portable Hard Drive 4TB
+	61f3  Portable SSD T3 (MU-PT250B, MU-PT500B)
+	61f5  Portable SSD T5
+	6601  Mobile Phone
+	6602  Galaxy
+	6603  Galaxy
+	6611  MITs Sync
+	6613  MITs Sync
+	6615  MITs Sync
+	6617  MITs Sync
+	6619  MITs Sync
+	661b  MITs Sync
+	661e  Handheld
+	6620  Handheld
+	6622  Handheld
+	6624  Handheld
+	662e  MITs Sync
+	6630  MITs Sync
+	6632  MITs Sync
+	663e  D900e/B2100 Phone
+	663f  SGH-E720/SGH-E840
+	6640  Usb Modem Enumerator
+	6651  i8510 Innov8
+	6702  X830
+	6708  U600 Phone
+	6709  U600
+	6734  Juke
+	6759  D900e/B2100 Media Player
+	675a  D900e/B2100 Mass Storage
+	675b  D900e Camera
+	6772  Standalone LTE device (Trial)
+	6795  S5230
+	6802  Standalone HSPA device
+	6806  Composite LTE device (Trial)
+	6807  Composite HSPA device
+	681c  Galaxy Portal/Spica/S
+	681d  Galaxy Portal/Spica Android Phone
+	6843  E2530 Phone (Samsung Kies mode)
+	684e  Wave (GT-S8500)
+	685b  GT-I9100 Phone [Galaxy S II] (mass storage mode)
+	685c  GT-I9250 Phone [Galaxy Nexus] (Mass storage mode)
+	685d  GT-I9100 Phone [Galaxy S II] (Download mode)
+	685e  GT-I9100 / GT-C3350 Phones (USB Debugging mode)
+	6860  Galaxy A5 (MTP)
+	6863  Galaxy series, misc. (tethering mode)
+	6864  GT-I9070 (network tethering, USB debugging enabled)
+	6865  Galaxy (PTP mode)
+	6866  Galaxy (debugging mode)
+	6868  Escape Composite driver for Android Phones: Modem+Diagnostic+ADB
+	6875  GT-B3710 Standalone LTE device (Commercial)
+	6876  GT-B3710 LTE Modem
+	6877  Galaxy S
+	687a  GT-E2370 mobile phone
+	6888  GT-B3730 Composite LTE device (Commercial)
+	6889  GT-B3730 Composite LTE device (Commercial)
+	689a  LTE Storage Driver [CMC2xx]
+	689e  GT-S5670 [Galaxy Fit]
+	68aa  Reality
+	7011  SEW-2003U Card
+	7021  Bluetooth Device
+	7061  eHome Infrared Receiver
+	7080  Anycall SCH-W580
+	7081  Human Interface Device
+	7301  Fingerprint Device
+	8001  Handheld
+	8002  Portable SSD 500GB Model Number: MU - P8500B
+	8003  Portable SSD T1
+	d003  GT-I9003
+	e020  SERI E02 SCOM 6200 UMTS Phone
+	e021  SERI E02 SCOM 6200 Virtual UARTs
+	e022  SERI E02 SCOM 6200 Flash Load Disk
+	f000  Intensity 3 (Mass Storage Mode)
+	ff30  SG_iMON
+04e9  PC-Tel, Inc.
+04ea  Brooktree Corp.
+04eb  Northstar Systems, Inc.
+	e004  eHome Infrared Transceiver
+04ec  Tokyo Electron Device, Ltd
+04ed  Annabooks
+04ef  Pacific Electronic International, Inc.
+04f0  Daewoo Electronics Co., Ltd
+04f1  Victor Company of Japan, Ltd
+	0001  GC-QX3 Digital Still Camera
+	0004  GR-DVL815U Digital Video Camera
+	0006  DV Camera Storage
+	0008  GZ-MG30AA/MC500E Digital Video Camera
+	0009  GR-DX25EK Digital Video Camera
+	000a  GR-D72 Digital Video Camera
+	1001  GC-A50 Camera Device
+	3008  MP-PRX1 Ethernet
+	3009  MP-XP7250 WLAN Adapter
+04f2  Chicony Electronics Co., Ltd
+	0001  KU-8933 Keyboard
+	0002  NT68P81 Keyboard
+	0110  KU-2971 Keyboard
+	0111  KU-9908 Keyboard
+	0112  KU-8933 Keyboard with PS/2 Mouse port
+	0116  KU-2971/KU-0325 Keyboard
+	0200  KBR-0108
+	0201  Gaming Keyboard KPD0250
+	0220  Wireless HID Receiver
+	0402  Genius LuxeMate i200 Keyboard
+	0403  KU-0420 keyboard
+	0418  KU-0418 Tactical Pad
+	0618  RG-0618U Wireless HID Receiver & KG-0609 Wireless Keyboard with Touchpad
+	0718  wired mouse
+	0760  Acer KU-0760 Keyboard
+	0833  KU-0833 Keyboard
+	0841  HP Multimedia Keyboard
+	0860  2.4G Multimedia Wireless Kit
+	0939  Amazon Basics mouse
+	1061  HP KG-1061 Wireless Keyboard+Mouse
+	1121  Periboard 717 Mini Wireless Keyboard
+	a001  E-Video DC-100 Camera
+	a120  ORITE CCD Webcam(PC370R)
+	a121  ORITE CCD Webcam(PC370R)
+	a122  ORITE CCD Webcam(PC370R)
+	a123  ORITE CCD Webcam(PC370R)
+	a124  ORITE CCD Webcam(PC370R)
+	a128  PC Camera (SN9C202 + OV7663 + EEPROM)
+	a133  Gateway Webcam
+	a136  LabTec Webcam 5500
+	a147  Medion Webcam
+	a204  DSC WIA Device (1300)
+	a208  DSC WIA Device (2320)
+	a209  Labtec DC-2320
+	a20a  DSC WIA Device (3310)
+	a20c  DSC WIA Device (3320)
+	a210  Audio Device
+	b008  USB 2.0 Camera
+	b009  Integrated Camera
+	b010  Integrated Camera
+	b012  1.3 MPixel UVC Webcam
+	b013  USB 2.0 Camera
+	b015  VGA 24fps UVC Webcam
+	b016  VGA 30fps UVC Webcam
+	b018  2M UVC Webcam
+	b021  ViewSonic 1.3M, USB2.0 Webcam
+	b022  Gateway USB 2.0 Webcam
+	b023  Gateway USB 2.0 Webcam
+	b024  USB 2.0 Webcam
+	b025  Camera
+	b027  Gateway USB 2.0 Webcam
+	b028  VGA UVC Webcam
+	b029  1.3M UVC Webcam
+	b036  Asus Integrated 0.3M UVC Webcam
+	b044  Acer CrystalEye Webcam
+	b057  integrated USB webcam
+	b059  CKF7037 HP webcam
+	b064  CNA7137 Integrated Webcam
+	b070  Camera
+	b071  2.0M UVC Webcam / CNF7129
+	b083  CKF7063 Webcam (HP)
+	b091  Webcam
+	b104  CNF7069 Webcam
+	b107  CNF7070 Webcam
+	b14c  CNF8050 Webcam
+	b159  CNF8243 Webcam
+	b15c  Sony Vaio Integrated Camera
+	b175  4-Port Hub
+	b1aa  Webcam-101
+	b1ac  HP Laptop Integrated Webcam [2 MP Fixed]
+	b1b4  Lenovo Integrated Camera
+	b1b9  Asus Integrated Webcam
+	b1bb  2.0M UVC WebCam
+	b1cf  Lenovo Integrated Camera
+	b1d6  CNF9055 Toshiba Webcam
+	b1d8  1.3M Webcam
+	b1e4  Toshiba Integrated Webcam
+	b213  Fujitsu Integrated Camera
+	b217  Lenovo Integrated Camera (0.3MP)
+	b221  integrated camera
+	b230  Integrated HP HD Webcam
+	b249  HP Integrated Webcam
+	b257  Lenovo Integrated Camera
+	b26b  Sony Visual Communication Camera
+	b272  Lenovo EasyCamera
+	b2b0  Camera
+	b2b9  Lenovo Integrated Camera UVC
+	b2da  thinkpad t430s camera
+	b2db  Thinkpad T430 camera
+	b2ea  Integrated Camera [ThinkPad]
+	b2f4  HP Webcam-50
+	b330  Asus 720p CMOS webcam
+	b354  UVC 1.00 device HD UVC WebCam
+	b394  Integrated Camera
+	b3eb  HP 720p HD Monitor Webcam
+	b3f6  HD WebCam (Acer)
+	b3fd  HD WebCam (Asus N-series)
+	b40e  HP Truevision HD camera
+	b420  Lenovo EasyCamera
+	b444  Lenovo Integrated Webcam
+	b49f  Bluetooth (RTL8723BE)
+	b563  Integrated Camera
+	b5ab  Integrated Camera
+	b5ac  Integrated IR Camera
+	b5ce  Integrated Camera
+	b5cf  Integrated IR Camera
+	b5db  HP Webcam
+	b604  Integrated Camera (1280x720@30)
+	b681  ThinkPad T490 Webcam
+04f3  Elan Microelectronics Corp.
+	000a  Touchscreen
+	0103  ActiveJet K-2024 Multimedia Keyboard
+	016f  Touchscreen
+	01a4  Wireless Keyboard
+	0201  Touchscreen
+	0210  Optical Mouse
+	0212  Laser Mouse
+	0214  Lynx M9 Optical Mouse
+	0230  3D Optical Mouse
+	0232  Mouse
+	0234  Optical Mouse
+	0235  Optical Mouse
+	02f4  2.4G Cordless Mouse
+	0381  Touchscreen
+	04a0  Dream Cheeky Stress/Panic Button
+	0c28  fingerprint sensor [FeinTech FPS00200]
+	2234  Touchscreen
+04f4  Harting Elektronik, Inc.
+04f5  Fujitsu-ICL Systems, Inc.
+04f6  Norand Corp.
+04f7  Newnex Technology Corp.
+04f8  FuturePlus Systems
+04f9  Brother Industries, Ltd
+	0002  HL-1050 Laser Printer
+	0005  Printer
+	0006  HL-1240 Laser Printer
+	0007  HL-1250 Laser Printer
+	0008  HL-1270 Laser Printer
+	0009  Printer
+	000a  P2500 series
+	000b  Printer
+	000c  Printer
+	000d  HL-1440 Laser Printer
+	000e  HL-1450 series
+	000f  HL-1470N series
+	0010  Printer
+	0011  Printer
+	0012  Printer
+	0013  Printer
+	0014  Printer
+	0015  Printer
+	0016  Printer
+	0017  Printer
+	0018  Printer
+	001a  HL-1430 Laser Printer
+	001c  Printer
+	001e  Printer
+	0020  HL-5130 series
+	0021  HL-5140 series
+	0022  HL-5150D series
+	0023  HL-5170DN series
+	0024  Printer
+	0025  Printer
+	0027  HL-2030 Laser Printer
+	0028  Printer
+	0029  Printer
+	002a  HL-52x0 series
+	002b  HL-5250DN Printer
+	002c  Printer
+	002d  Printer
+	0037  HL-3040CN series
+	0038  HL-3070CW series
+	0039  HL-5340 series
+	0041  HL-2250DN Laser Printer
+	0042  HL-2270DW Laser Printer
+	004d  HL-6180DW series
+	0080  HL-L6250DN series
+	0100  MFC8600/9650 series
+	0101  MFC9600/9870 series
+	0102  MFC9750/1200 series
+	0104  MFC-8300J
+	0105  MFC-9600J
+	0106  MFC-7300C
+	0107  MFC-7400C
+	0108  MFC-9200C
+	0109  MFC-830
+	010a  MFC-840
+	010b  MFC-860
+	010c  MFC-7400J
+	010d  MFC-9200J
+	010e  MFC-3100C Scanner
+	010f  MFC-5100C
+	0110  MFC-4800 Scanner
+	0111  MFC-6800
+	0112  DCP1000 Port(FaxModem)
+	0113  MFC-8500
+	0114  MFC9700 Port(FaxModem)
+	0115  MFC-9800 Scanner
+	0116  DCP1400 Scanner
+	0119  MFC-9660
+	011a  MFC-9860
+	011b  MFC-9880
+	011c  MFC-9760
+	011d  MFC-9070
+	011e  MFC-9180
+	011f  MFC-9160
+	0120  MFC580 Port(FaxModem)
+	0121  MFC-590
+	0122  MFC-5100J
+	0124  MFC-4800J
+	0125  MFC-6800J
+	0127  MFC-9800J
+	0128  MFC-8500J
+	0129  Imagistics 2500 (MFC-8640D clone)
+	012b  MFC-9030
+	012e  FAX4100e IntelliFax 4100e
+	012f  FAX-4750e
+	0130  FAX-5750e
+	0132  MFC-5200C RemovableDisk
+	0135  MFC-100 Scanner
+	0136  MFC-150CL Scanner
+	013c  MFC-890 Port
+	013d  MFC-5200J
+	013e  MFC-4420C RemovableDisk
+	013f  MFC-4820C RemovableDisk
+	0140  DCP-8020
+	0141  DCP-8025D
+	0142  MFC-8420
+	0143  MFC-8820D
+	0144  DCP-4020C RemovableDisk
+	0146  MFC-3220C
+	0147  FAX-1820C Printer
+	0148  MFC-3320CN
+	0149  FAX-1920CN Printer
+	014a  MFC-3420C
+	014b  MFC-3820CN
+	014c  DCP-3020C
+	014d  FAX-1815C Printer
+	014e  MFC-8820J
+	014f  DCP-8025J
+	0150  MFC-8220 Port(FaxModem)
+	0151  MFC-8210J
+	0153  DCP-1000J
+	0157  MFC-3420J Printer
+	0158  MFC-3820JN Port(FaxModem)
+	015d  MFC Composite Device
+	015e  DCP-8045D
+	015f  MFC-8440
+	0160  MFC-8840D
+	0161  MFC-210C
+	0162  MFC-420CN Remote Setup Port
+	0163  MFC-410CN RemovableDisk
+	0165  MFC-620CN
+	0166  MFC-610CLN RemovableDisk
+	0168  MFC-620CLN
+	0169  DCP-110C RemovableDisk
+	016b  DCP-310CN RemovableDisk
+	016c  FAX-2440C Printer
+	016d  MFC-5440CN
+	016e  MFC-5840CN Remote Setup Port
+	0170  FAX-1840C Printer
+	0171  FAX-1835C Printer
+	0172  FAX-1940CN Printer
+	0173  MFC-3240C Remote Setup Port
+	0174  MFC-3340CN RemovableDisk
+	017b  Imagistics sx2100
+	0180  MFC-7420
+	0181  MFC-7820N Port(FaxModem)
+	0182  DCP-7010
+	0183  DCP-7020
+	0184  DCP-7025 Printer
+	0185  MFC-7220 Printer
+	0186  Composite Device
+	0187  FAX-2820 Printer
+	0188  FAX-2920 Printer
+	018a  MFC-9420CN
+	018c  DCP-115C
+	018d  DCP-116C
+	018e  DCP-117C
+	018f  DCP-118C
+	0190  DCP-120C
+	0191  DCP-315CN
+	0192  DCP-340CW
+	0193  MFC-215C
+	0194  MFC-425CN
+	0195  MFC-820CW Remote Setup Port
+	0196  MFC-820CN Remote Setup Port
+	0197  MFC-640CW
+	019a  MFC-840CLN Remote Setup Port
+	01a2  MFC-8640D
+	01a3  Composite Device
+	01a4  DCP-8065DN Printer
+	01a5  MFC-8460N Port(FaxModem)
+	01a6  MFC-8860DN Port(FaxModem)
+	01a7  MFC-8870DW Printer
+	01a8  DCP-130C
+	01a9  DCP-330C
+	01aa  DCP-540CN
+	01ab  MFC-240C
+	01ae  DCP-750CW RemovableDisk
+	01af  MFC-440CN
+	01b0  MFC-660CN
+	01b1  MFC-665CW
+	01b2  MFC-845CW
+	01b4  MFC-460CN
+	01b5  MFC-630CD
+	01b6  MFC-850CDN
+	01b7  MFC-5460CN
+	01b8  MFC-5860CN
+	01ba  MFC-3360C
+	01bd  MFC-8660DN
+	01be  DCP-750CN RemovableDisk
+	01bf  MFC-860CDN
+	01c0  DCP-128C
+	01c1  DCP-129C
+	01c2  DCP-131C
+	01c3  DCP-329C
+	01c4  DCP-331C
+	01c5  MFC-239C
+	01c9  DCP-9040CN
+	01ca  MFC-9440CN
+	01cb  DCP-9045CDN
+	01cc  MFC-9840CDW
+	01ce  DCP-135C
+	01cf  DCP-150C
+	01d0  DCP-350C
+	01d1  DCP-560CN
+	01d2  DCP-770CW
+	01d3  DCP-770CN
+	01d4  MFC-230C
+	01d5  MFC-235C
+	01d6  MFC-260C
+	01d7  MFC-465CN
+	01d8  MFC-680CN
+	01d9  MFC-685CW
+	01da  MFC-885CW
+	01db  MFC-480CN
+	01dc  MFC-650CD
+	01dd  MFC-870CDN
+	01de  MFC-880CDN
+	01df  DCP-155C
+	01e0  MFC-265C
+	01e1  DCP-153C
+	01e2  DCP-157C
+	01e3  DCP-353C
+	01e4  DCP-357C
+	01e7  MFC-7340
+	01e9  DCP-7040
+	01ea  DCP-7030
+	01eb  MFC-7320
+	01ec  MFC-9640CW
+	01f4  MFC-5890CN
+	0204  DCP-165C
+	020a  MFC-8670DN
+	020c  DCP-9042CDN
+	020d  MFC-9450CDN
+	0216  MFC-8880DN
+	0217  MFC-8480DN
+	0219  MFC-8380DN
+	021a  MFC-8370DN
+	021b  DCP-8070D
+	021c  MFC-9320CW
+	021d  MFC-9120CN
+	021e  DCP-9010CN
+	021f  DCP-8085DN
+	0220  MFC-9010CN
+	0222  DCP-195C
+	0223  DCP-365CN
+	0224  DCP-375CW
+	0225  DCP-395CN
+	0227  DCP-595CN
+	0228  MFC-255CW
+	0229  MFC-295CN
+	022a  MFC-495CW
+	022b  MFC-495CN
+	022c  MFC-795CW
+	022d  MFC-675CD
+	022e  MFC-695CDN
+	022f  MFC-735CD
+	0230  MFC-935CDN
+	0234  DCP-373CW
+	0235  DCP-377CW
+	0236  DCP-390CN
+	0239  MFC-253CW
+	023a  MFC-257CW
+	023e  DCP-197C
+	023f  MFC-8680DN
+	0240  MFC-J950DN
+	0245  MFC-9560CDW
+	0248  DCP-7055 scanner/printer
+	024e  MFC-7460DN
+	0253  DCP-J125
+	0254  DCP-J315W
+	0255  DCP-J515W
+	0256  DCP-J515N
+	0257  DCP-J715W
+	0258  DCP-J715N
+	0259  MFC-J220
+	025a  MFC-J410
+	025b  MFC-J265W
+	025c  MFC-J415W
+	025d  MFC-J615W
+	025e  MFC-J615N
+	025f  MFC-J700D
+	0260  MFC-J800D
+	0261  MFC-J850DN
+	026b  MFC-J630W
+	026d  MFC-J805D
+	026e  MFC-J855DN
+	026f  MFC-J270W
+	0270  MFC-7360N
+	0273  DCP-7057 scanner/printer
+	0276  MFC-5895CW
+	0278  MFC-J410W
+	0279  DCP-J525W
+	027a  DCP-J525N
+	027b  DCP-J725DW
+	027c  DCP-J725N
+	027d  DCP-J925DW
+	027e  MFC-J955DN
+	027f  MFC-J280W
+	0280  MFC-J435W
+	0281  MFC-J430W
+	0282  MFC-J625DW
+	0283  MFC-J825DW
+	0284  MFC-J825N
+	0285  MFC-J705D
+	0287  MFC-J860DN
+	0288  MFC-J5910DW
+	0289  MFC-J5910CDW
+	028a  DCP-J925N
+	028d  MFC-J835DW
+	028f  MFC-J425W
+	0290  MFC-J432W
+	0291  DCP-8110DN
+	0292  DCP-8150DN
+	0293  DCP-8155DN
+	0294  DCP-8250DN
+	0295  MFC-8510DN
+	0296  MFC-8520DN
+	0298  MFC-8910DW
+	0299  MFC-8950DW
+	029a  MFC-8690DW
+	029c  MFC-8515DN
+	029e  MFC-9125CN
+	029f  MFC-9325CW
+	02a0  DCP-J140W
+	02a5  MFC-7240
+	02a6  FAX-2940
+	02a7  FAX-2950
+	02a8  MFC-7290
+	02ab  FAX-2990
+	02ac  DCP-8110D
+	02ad  MFC-9130CW
+	02ae  MFC-9140CDN
+	02af  MFC-9330CDW
+	02b0  MFC-9340CDW
+	02b1  DCP-9020CDN
+	02b2  MFC-J810DN
+	02b3  MFC-J4510DW
+	02b4  MFC-J4710DW
+	02b5  DCP-8112DN
+	02b6  DCP-8152DN
+	02b7  DCP-8157DN
+	02b8  MFC-8512DN
+	02ba  MFC-8912DW
+	02bb  MFC-8952DW
+	02bc  DCP-J540N
+	02bd  DCP-J740N
+	02be  MFC-J710D
+	02bf  MFC-J840N
+	02c0  DCP-J940N
+	02c1  MFC-J960DN
+	02c2  DCP-J4110DW
+	02c3  MFC-J4310DW
+	02c4  MFC-J4410DW
+	02c5  MFC-J4610DW
+	02c6  DCP-J4210N
+	02c7  MFC-J4510N
+	02c8  MFC-J4910CDW
+	02c9  MFC-J4810DN
+	02ca  MFC-8712DW
+	02cb  MFC-8710DW
+	02cc  MFC-J2310
+	02cd  MFC-J2510
+	02ce  DCP-7055W
+	02cf  DCP-7057W
+	02d0  DCP-1510
+	02d1  MFC-1810
+	02d3  DCP-9020CDW
+	02d4  MFC-8810DW
+	02dd  DCP-J4215N
+	02de  DCP-J132W
+	02df  DCP-J152W
+	02e0  DCP-J152N
+	02e1  DCP-J172W
+	02e2  DCP-J552DW
+	02e3  DCP-J552N
+	02e4  DCP-J752DW
+	02e5  DCP-J752N
+	02e6  DCP-J952N
+	02e7  MFC-J245
+	02e8  MFC-J470DW
+	02e9  MFC-J475DW
+	02ea  MFC-J285DW
+	02eb  MFC-J650DW
+	02ec  MFC-J870DW
+	02ed  MFC-J870N
+	02ee  MFC-J720D
+	02ef  MFC-J820DN
+	02f0  MFC-J980DN
+	02f1  MFC-J890DN
+	02f2  MFC-J6520DW
+	02f3  MFC-J6570CDW
+	02f4  MFC-J6720DW
+	02f5  MFC-J6920DW
+	02f6  MFC-J6970CDW
+	02f7  MFC-J6975CDW
+	02f8  MFC-J6770CDW
+	02f9  DCP-J132N
+	02fa  MFC-J450DW
+	02fb  MFC-J875DW
+	02fc  DCP-J100
+	02fd  DCP-J105
+	02fe  MFC-J200
+	02ff  MFC-J3520
+	0300  MFC-J3720
+	030f  DCP-L8400CDN
+	0310  DCP-L8450CDW
+	0311  MFC-L8600CDW
+	0312  MFC-L8650CDW
+	0313  MFC-L8850CDW
+	0314  MFC-L9550CDW
+	0318  MFC-7365DN
+	0320  MFC-L2740DW
+	0321  DCP-L2500D
+	0322  DCP-L2520DW
+	0324  DCP-L2520D
+	0326  DCP-L2540DN
+	0328  DCP-L2540DW
+	0329  DCP-L2560DW
+	0330  HL-L2380DW
+	0331  MFC-L2700DW
+	0335  FAX-L2700DN
+	0337  MFC-L2720DW
+	0338  MFC-L2720DN
+	0339  DCP-J4120DW
+	033a  MFC-J4320DW
+	033c  MFC-J2320
+	033d  MFC-J4420DW
+	0340  MFC-J4620DW
+	0341  MFC-J2720
+	0342  MFC-J4625DW
+	0343  MFC-J5320DW
+	0346  MFC-J5620DW
+	0347  MFC-J5720DW
+	0349  DCP-J4220N
+	034b  MFC-J4720N
+	034e  MFC-J5720CDW
+	034f  MFC-J5820DN
+	0350  MFC-J5620CDW
+	0351  DCP-J137N
+	0353  DCP-J557N
+	0354  DCP-J757N
+	0355  DCP-J957N
+	0356  MFC-J877N
+	0357  MFC-J727D
+	0358  MFC-J987DN
+	0359  MFC-J827DN
+	035a  MFC-J897DN
+	035b  DCP-1610W
+	035c  DCP-1610NW
+	035d  MFC-1910W
+	035e  MFC-1910NW
+	0360  DCP-1618W
+	0361  MFC-1919NW
+	0364  MFC-J5625DW
+	0365  MFC-J4520DW
+	0366  MFC-J5520DW
+	0367  DCP-7080D
+	0368  DCP-7080
+	0369  DCP-7180DN
+	036a  DCP-7189DW
+	036b  MFC-7380
+	036c  MFC-7480D
+	036d  MFC-7880DN
+	036e  MFC-7889DW
+	036f  DCP-9022CDW
+	0370  MFC-9142CDN
+	0371  MFC-9332CDW
+	0372  MFC-9342CDW
+	0373  MFC-L2700D
+	0376  DCP-1600
+	0377  MFC-1900
+	0378  DCP-1608
+	0379  DCP-1619
+	037a  MFC-1906
+	037b  MFC-1908
+	037c  ADS-2000e
+	037d  ADS-2100e
+	037e  ADS-2500We
+	037f  ADS-2600We
+	0380  DCP-J562DW
+	0381  DCP-J562N
+	0383  DCP-J962N
+	0384  MFC-J480DW
+	0385  MFC-J485DW
+	0386  MFC-J460DW
+	0388  MFC-J680DW
+	0389  MFC-J880DW
+	038a  MFC-J885DW
+	038b  MFC-J880N
+	038c  MFC-J730DN
+	038d  MFC-J990DN
+	038e  MFC-J830DN
+	038f  MFC-J900DN
+	0390  MFC-J5920DW
+	0392  MFC-L2705DW
+	0393  DCP-T300
+	0394  DCP-T500W
+	0395  DCP-T700W
+	0396  MFC-T800W
+	0397  DCP-J963N
+	03b3  MFC-J6925DW
+	03b4  MFC-J6573CDW
+	03b5  MFC-J6973CDW
+	03b6  MFC-J6990CDW
+	03bb  MFC-L2680W
+	03bc  MFC-L2700DN
+	03bd  DCP-J762N
+	03fd  ADS-2700W
+	043f  MFC-L3770CDW
+	0440  MFC-9350CDW
+	0441  MFC-L3750CDW
+	0442  MFC-L3745CDW
+	0443  MFC-L3735CDN
+	0444  MFC-9150CDN
+	0445  MFC-L3730CDN
+	0446  MFC-L3710CW
+	0447  DCP-9030CDN
+	0448  DCP-L3550CDW
+	044a  HL-L3290CDW
+	044b  DCP-L3510CDW
+	044c  DCP-L3551CDW
+	1000  Printer
+	1002  Printer
+	2002  PTUSB Printing
+	2004  PT-2300/2310 p-Touch Laber Printer
+	2007  PT-2420PC P-touch Label Printer
+	2015  QL-500 label printer
+	2016  QL-550 printer
+	201a  PT-18R P-touch label printer
+	201b  QL-650TD Label Printer
+	2020  QL-1050 Label Printer
+	2027  QL-560 Label Printer
+	2028  QL-570 Label Printer
+	202a  QL-1060N Label Printer
+	202b  PT-7600 P-touch Label Printer
+	202c  PT-1230PC P-touch Label Printer E mode
+	202d  PT-2430PC P-touch Label Printer
+	2030  PT-1230PC P-touch Label Printer EL mode
+	2041  PT-2730 P-touch Label Printer
+	2042  QL-700 Label Printer
+	2043  QL-710W Label Printer
+	2044  QL-720NW Label Printer
+	204d  QL-720NW Label Printer (mass storage mode)
+	2061  PT-P700 P-touch Label Printer
+	2064  PT-P700 P-touch Label Printer RemovableDisk
+	2074  PT-D600 P-touch Label Printer
+	209b  QL-800 Label Printer
+	209c  QL-810W Label Printer
+	209d  QL-820NWB Label Printer
+	20a7  QL-1100 Label Printer
+	20a8  QL-1110NWB Label Printer
+	20a9  QL-1100 Label Printer (mass storage)
+	20aa  QL-1110NWB Label Printer (mass storage)
+	20ab  QL-1115NWB Label Printer
+	20ac  QL-1115NWB Label Printer (mass storage)
+	20c0  QL-600 Label Printer
+	2100  Card Reader Writer
+	2102  Sewing machine
+	60a0  ADS-2000
+	60a1  ADS-2100
+	60a4  ADS-2500W
+	60a5  ADS-2600W
+	60a6  ADS-1000W
+	60a7  ADS-1100W
+	60a8  ADS-1500W
+	60a9  ADS-1600W
+04fa  Dallas Semiconductor
+	2490  DS1490F 2-in-1 Fob, 1-Wire adapter
+	4201  DS4201 Audio DAC
+04fb  Biostar Microtech International Corp.
+04fc  Sunplus Technology Co., Ltd
+	0003  CM1092 / Wintech CM-5098 Optical Mouse
+	0005  USB OpticalWheel Mouse
+	0013  ViewMate Desktop Mouse CC2201
+	0015  ViewMate Desktop Mouse CC2201
+	00d3  00052486 / Laser Mouse M1052 [hama]
+	0171  SPCA1527A/SPCA1528 SD card camera (Mass Storage mode)
+	0201  SPCP825 RS232C Adapter
+	0232  Fingerprint
+	0538  Wireless Optical Mouse 2.4G [Bright]
+	0561  Flexcam 100
+	05d8  Wireless keyboard/mouse
+	05da  SPEEDLINK SNAPPY Wireless Mouse Nano
+	0c15  SPIF215A SATA bridge
+	0c25  SATALink SPIF225A
+	1528  SPCA1527A/SPCA1528 SD card camera (webcam mode)
+	1533  Mass Storage
+	2080  ASUS Webcam
+	500c  CA500C Digital Camera
+	504a  Aiptek Mini PenCam 1.3
+	504b  Aiptek Mega PockerCam 1.3/Maxell MaxPocket LE 1.3
+	5330  Digitrex 2110
+	5331  Vivitar Vivicam 10
+	5360  Sunplus Generic Digital Camera
+	5563  Digital Media Player MP3/WMA [The Sharper Image]
+	5720  Card Reader Driver
+	6333  Siri A9 UVC chipset
+	7333  Finet Technology Palmpix DC-85
+	757a  Aiptek, MP315 MP3 Player
+	ffff  PureDigital Ritz Disposable
+04fd  Soliton Systems, K.K.
+	0003  Smart Card Reader II
+04fe  PFU, Ltd
+	0006  Happy Hacking Keyboard Lite2
+04ff  E-CMOS Corp.
+0500  Siam United Hi-Tech
+	0001  DART Keyboard Mouse
+	0002  DART-2 Keyboard
+0501  Fujikura DDK, Ltd
+0502  Acer, Inc.
+	0001  Handheld
+	0736  Handheld
+	15b1  PDA n311
+	1631  c10 Series
+	1632  c20 Series
+	16e1  n10 Handheld Sync
+	16e2  n20 Pocket PC Sync
+	16e3  n30 Handheld Sync
+	2008  Liquid Gallant Duo E350 (preloader)
+	3202  Liquid
+	3203  Liquid (Debug mode)
+	3230  BeTouch E120
+	3317  Liquid
+	3325  Iconia tablet A500
+	3341  Iconia tablet A500
+	33c3  Liquid Gallant Duo E350
+	33c4  Liquid Gallant Duo E350 (debug mode)
+	33c7  Liquid Gallant Duo E350 (USB tethering)
+	33c8  Liquid Gallant Duo E350 (debug mode, USB tethering)
+	d001  Divio NW801/DVC-V6+ Digital Camera
+0503  Hitachi America, Ltd
+0504  Hayes Microcomputer Products
+0506  3Com Corp.
+	009d  HomeConnect Camera
+	00a0  3CREB96 Bluetooth Adapter
+	00a1  Bluetooth Device
+	00a2  Bluetooth Device
+	00df  3Com Home Connect lite
+	0100  HomeConnect ADSL Modem Driver
+	03e8  3C19250 Ethernet [klsi]
+	0a01  3CRSHEW696 Wireless Adapter
+	0a11  3CRWE254G72 802.11g Adapter
+	11f8  HomeConnect 3C460
+	2922  HomeConnect Cable Modem External with
+	3021  U.S.Robotics 56000 Voice FaxModem Pro
+	4601  3C460B 10/100 Ethernet Adapter
+	f002  3CP4218 ADSL Modem (pre-init)
+	f003  3CP4218 ADSL Modem
+	f100  3CP4218 ADSL Modem (pre-init)
+0507  Hosiden Corp.
+	0011  Konami ParaParaParadise Controller
+0508  Clarion Co., Ltd
+0509  Aztech Systems, Ltd
+	0801  ADSL Modem
+	0802  ADSL Modem (RFC1483)
+	0806  DSL Modem
+	080f  Binatone ADSL500 Modem Network Interface
+	0812  Pirelli ADSL Modem Network Interface
+050a  Cinch Connectors
+050b  Cable System International
+050c  InnoMedia, Inc.
+050d  Belkin Components
+	0004  Direct Connect
+	0012  F8T012 Bluetooth Adapter
+	0013  F8T013 Bluetooth Adapter
+	0017  B8T017 Bluetooth+EDR 2.1 / F4U017 USB 2.0 7-port Hub
+	003a  Universal Media Reader
+	0050  F5D6050 802.11b Wireless Adapter v2000 [Atmel at76c503a]
+	0081  F8T001v2 Bluetooth
+	0083  Bluetooth Device
+	0084  F8T003v2 Bluetooth
+	0102  Flip KVM
+	0103  F5U103 Serial Adapter [etek]
+	0106  VideoBus II Adapter, Video
+	0108  F1DE108B KVM
+	0109  F5U109/F5U409 PDA Adapter
+	0115  SCSI Adapter
+	0119  F5U120-PC Dual PS/2 Ports / F5U118-UNV ADB Adapter
+	0121  F5D5050 100Mbps Ethernet
+	0122  Ethernet Adapter
+	0131  Bluetooth Device with trace filter
+	016a  Bluetooth Mini Dongle
+	0200  Nostromo SpeedPad n52te Gaming Keyboard
+	0201  Peripheral Switch
+	0208  USBView II Video Adapter [nt1004]
+	0210  F5U228 Hi-Speed USB 2.0 DVD Creator
+	0211  F5U211 USB 2.0 15-in-1 Media Reader & Writer
+	0224  F5U224 USB 2.0 4-Port Hub
+	0234  F5U234 USB 2.0 4-Port Hub
+	0237  F5U237 USB 2.0 7-Port Hub
+	0240  F5U240 USB 2.0 CF Card Reader
+	0249  USB 2 Flash Media Device
+	0257  F5U257 Serial
+	0304  FSU304 USB 2.0 - 4 Ports Hub
+	0307  USB 2.0 - 7 ports Hub [FSU307]
+	038c  F2CU038 HDMI Adapter
+	0409  F5U409 Serial
+	0416  Staples 12416 7 port desktop hub
+	0551  F6C550-AVR UPS
+	065a  F8T065BF Mini Bluetooth 4.0 Adapter
+	0706  2-N-1 7-Port Hub (Lower half)
+	0802  Nostromo n40 Gamepad
+	0803  Nostromo 1745 GamePad
+	0805  Nostromo N50 GamePad
+	0815  Nostromo n52 HID SpeedPad Mouse Wheel
+	0826  ErgoFit Wireless Optical Mouse (HID)
+	0980  HID UPS Battery
+	1004  F9L1004 802.11n Surf N300 XR Wireless Adapter [Realtek RTL8192CU]
+	1102  F7D1102 N150/Surf Micro Wireless Adapter v1000 [Realtek RTL8188CUS]
+	1103  F9L1103 N750 DB 802.11abgn 2x3:3 [Ralink RT3573]
+	1106  F9L1106v1 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526]
+	1109  F9L1109v1 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU]
+	110a  F9L1101v2 802.11abgn Wireless Adapter [Realtek RTL8192DU]
+	11f2  ISY Wireless Micro Adapter IWL 2000 [RTL8188CUS]
+	1202  F5U120-PC Parallel Printer Port
+	1203  F5U120-PC Serial Port
+	2103  F7D2102 802.11n N300 Micro Wireless Adapter v3000 [Realtek RTL8192CU]
+	21f1  N300 WLAN N Adapter [ISY]
+	21f2  RTL8192CU 802.11n WLAN Adapter [ISY IWL 4000]
+	258a  F5U258 Host to Host cable
+	3101  F1DF102U/F1DG102U Flip Hub
+	3201  F1DF102U/F1DG102U Flip KVM
+	4050  ZD1211B
+	5055  F5D5055 Gigabit Network Adapter [AX88xxx]
+	6050  F6D6050 802.11abgn Wireless Adapter [Broadcom BCM4323]
+	6051  F5D6051 802.11b Wireless Network Adapter [ZyDAS ZD1201]
+	615a  F7D4101 / F9L1101v1 802.11abgn Wireless Adapter [Broadcom BCM4323]
+	7050  F5D7050 Wireless G Adapter v1000/v2000 [Intersil ISL3887]
+	7051  F5D7051 802.11g Adapter v1000 [Broadcom 4320 USB]
+	705a  F5D7050 Wireless G Adapter v3000 [Ralink RT2571W]
+	705b  Wireless G Adapter
+	705c  F5D7050 Wireless G Adapter v4000 [Zydas ZD1211B]
+	705e  F5D7050 Wireless G Adapter v5000 [Realtek RTL8187B]
+	706a  2-N-1 7-Port Hub (Upper half)
+	8053  F5D8053 N Wireless USB Adapter v1000/v4000 [Ralink RT2870]
+	805c  F5D8053 N Wireless Adapter v3000 [Ralink RT2870]
+	805e  F5D8053 N Wireless USB Adapter v5000 [Realtek RTL8192U]
+	815c  F5D8053 N Wireless USB Adapter v3000 [Ralink RT2870]
+	815f  F5D8053 N Wireless USB Adapter v6000 [Realtek RTL8192SU]
+	825a  F5D8055 N+ Wireless Adapter v1000 [Ralink RT2870]
+	825b  F5D8055 N+ Wireless Adapter v2000 [Ralink RT3072]
+	845a  F7D2101 802.11n Surf & Share Wireless Adapter v1000 [Realtek RTL8192SU]
+	905b  F5D9050 Wireless G+ MIMO Network Adapter v3000 [Ralink RT2573]
+	905c  F5D9050 Wireless G+ MIMO Network Adapter v4000 [Ralink RT2573]
+	935a  F6D4050 N150 Enhanced Wireless Network Adapter v1000 [Ralink RT3070]
+	935b  F6D4050 N150 Enhanced Wireless Network Adapter v2000 [Ralink RT3070]
+	945a  F7D1101 v1 Basic Wireless Adapter [Realtek RTL8188SU]
+	945b  F7D1101 v2 Basic Wireless Adapter [Ralink RT3370]
+	d321  Dynex DX-NUSB 802.11bgn Wireless Adapter [Broadcom BCM43231]
+050e  Neon Technology, Inc.
+050f  KC Technology, Inc.
+	0001  Hub
+	0003  KC82C160S Hub
+	0180  KC-180 IrDA Dongle
+	0190  KC2190 USB Host-to-Host cable
+0510  Sejin Electron, Inc.
+	0001  Keyboard
+	1000  Keyboard with PS/2 Mouse Port
+	e001  Mouse
+0511  N'Able (DataBook) Technologies, Inc.
+	002b  AOC DVB
+0512  Hualon Microelectronics Corp.
+0513  digital-X, Inc.
+0514  FCI Electronics
+0515  ACTC
+0516  Longwell Electronics
+0517  Butterfly Communications
+0518  EzKEY Corp.
+	0001  USB to PS2 Adaptor v1.09
+	0002  EZ-9900C Keyboard
+0519  Star Micronics Co., Ltd
+	0003  TSP100ECO/TSP100II
+	c002  Xlive Bluetooth XBM-100S MP3 Player
+051a  WYSE Technology
+	a005  Smart Display Version 9973
+051b  Silicon Graphics
+051c  Shuttle, Inc.
+	0005  VFD Module
+	c001  eHome Infrared Receiver
+	c002  eHome Infrared Receiver
+051d  American Power Conversion
+	0001  UPS
+	0002  Uninterruptible Power Supply
+	0003  UPS
+051e  Scientific Atlanta, Inc.
+051f  IO Systems (Elite Electronics), Inc.
+0520  Taiwan Semiconductor Manufacturing Co.
+0521  Airborn Connectors
+0522  Advanced Connectek, Inc.
+0523  ATEN GmbH
+0524  Sola Electronics
+0525  Netchip Technology, Inc.
+	100d  RFMD Bluetooth Device
+	1080  NET1080 USB-USB Bridge
+	1200  SSDC Adapter II
+	1265  File-backed Storage Gadget
+	3424  V30x/V4xx fingerprint sensor [Lumidigm]
+	a0f0  Cambridge Electronic Devices Power1401 mk 2
+	a140  USB Clik! 40
+	a141  (OME) PocketZip 40 MP3 Player Driver
+	a220  GVC Bluetooth Wireless Adapter
+	a4a0  Linux-USB "Gadget Zero"
+	a4a1  Linux-USB Ethernet Gadget
+	a4a2  Linux-USB Ethernet/RNDIS Gadget
+	a4a3  Linux-USB user-mode isochronous source/sink
+	a4a4  Linux-USB user-mode bulk source/sink
+	a4a5  Linux-USB File-backed Storage Gadget
+	a4a6  Linux-USB Serial Gadget
+	a4a7  Linux-USB Serial Gadget (CDC ACM mode)
+	a4a8  Linux-USB Printer Gadget
+	a4a9  Linux-USB OBEX Gadget
+	a4aa  Linux-USB CDC Composite Gadge (Ethernet and ACM)
+	a4ab  Linux-USB Multifunction Composite Gadget
+	a4ac  Linux-USB HID Gadget
+0526  Temic MHS S.A.
+0527  ALTRA
+0528  ATI Technologies, Inc.
+	7561  TV Wonder
+	7562  TV Wonder, Edition (FN5)
+	7563  TV Wonder, Edition (FI)
+	7564  TV Wonder, Edition (FQ)
+	7565  TV Wonder, Edition (NTSC+)
+	7566  TV Wonder, Edition (FN5)
+	7567  TV Wonder, Edition (FI)
+	7568  TV Wonder, Edition (FQ)
+	7569  Live! Pro (A)
+	756a  Live! Pro Audio (O)
+0529  Aladdin Knowledge Systems
+	0001  HASP copy protection dongle
+	030b  eToken R1 v3.1.3.x
+	0313  eToken R1 v3.2.3.x
+	031b  eToken R1 v3.3.3.x
+	0323  eToken R1 v3.4.3.x
+	0412  eToken R2 v2.2.4.x
+	041a  eToken R2 v2.2.4.x
+	0422  eToken R2 v2.4.4.x
+	042a  eToken R2 v2.5.4.x
+	050c  eToken Pro v4.1.5.x
+	0514  eToken Pro v4.2.5.4
+	0600  eToken Pro 64k (4.2)
+	0620  Token JC
+052a  Crescent Heart Software
+052b  Tekom Technologies, Inc.
+	0102  Ca508A HP1020 Camera v.1.3.1.6
+	0801  Yakumo MegaImage 37
+	1512  Yakumo MegaImage IV
+	1513  Aosta CX100 Webcam
+	1514  Aosta CX100 Webcam Storage
+	1905  Yakumo MegaImage 47
+	1911  Yakumo MegaImage 47 SL
+	2202  WDM Still Image Capture
+	2203  Sound Vision Stream Driver
+	3a06  DigiLife DDV-5120A
+	d001  P35U Camera Capture
+052c  Canon Information Systems, Inc.
+052d  Avid Electronics Corp.
+052e  Standard Microsystems Corp.
+052f  Unicore Software, Inc.
+0530  American Microsystems, Inc.
+0531  Wacom Technology Corp.
+0532  Systech Corp.
+0533  Alcatel Mobile Phones
+0534  Motorola, Inc.
+0535  LIH TZU Electric Co., Ltd
+0536  Hand Held Products (Welch Allyn, Inc.)
+	01a0  PDT
+0537  Inventec Corp.
+0538  Caldera International, Inc. (SCO)
+0539  Shyh Shiun Terminals Co., Ltd
+053a  PrehKeyTec GmbH
+	0b00  Hub
+	0b01  Preh MCI 3100
+053b  Global Village Communication
+053c  Institut of Microelectronic & Mechatronic Systems
+053d  Silicon Architect
+053e  Mobility Electronics
+053f  Synopsys, Inc.
+0540  UniAccess AB
+	0101  Panache Surf ISDN TA
+0541  Sirf Technology, Inc.
+0543  ViewSonic Corp.
+	00fe  G773 Monitor Hub
+	00ff  P815 Monitor Hub
+	0bf2  airpanel V150 Wireless Smart Display
+	0bf3  airpanel V110 Wireless Smart Display
+	0ed9  Color Pocket PC V35
+	0f01  airsync Wi-Fi Wireless Adapter
+	1527  Color Pocket PC V36
+	1529  Color Pocket PC V37
+	152b  Color Pocket PC V38
+	152e  Pocket PC
+	1921  Communicator Pocket PC
+	1922  Smartphone
+	1923  Pocket PC V30
+	1a11  Wireless 802.11g Adapter
+	1e60  TA310 - ATSC/NTSC/PAL Driver(PCM4)
+	4153  ViewSonic G773 Control (?)
+0544  Cristie Electronics, Ltd
+0545  Xirlink, Inc.
+	7333  Trution Web Camera
+	8002  IBM NetCamera
+	8009  Veo PC Camera
+	800c  Veo Stingray
+	800d  Veo PC Camera
+	8080  IBM C-It Webcam
+	808a  Veo PC Camera
+	808b  Veo Stingray
+	808d  Veo PC Camera
+	810a  Veo Advanced Connect Webcam
+	810b  Veo PC Camera
+	810c  Veo PC Camera
+	8135  Veo Mobile/Advanced Web Camera
+	813a  Veo PC Camera
+	813b  Veo PC Camera
+	813c  Veo Mobile/Advanced Web Camera
+	8333  Veo Stingray/Connect Web Camera
+	888c  eVision 123 digital camera
+	888d  eVision 123 digital camera
+0546  Polaroid Corp.
+	0daf  PDC 2300Z
+	1bed  PDC 1320 Camera
+	3097  PDC 310
+	3155  PDC 3070 Camera
+	3187  Digital Camera
+	3191  Ion 80 Camera
+	3273  PDC 2030 Camera
+	3304  a500 Digital Camera
+	dccf  Sound Vision Stream Driver
+0547  Anchor Chips, Inc.
+	0001  ICSI Bluetooth Device
+	0080  I3SYSTEM HYUNY
+	1002  Python2 WDM Encoder
+	1006  Hantek DSO-2100 UF
+	2131  AN2131 EZUSB Microcontroller
+	2235  AN2235 EZUSB-FX Microcontroller
+	2710  EZ-Link Loader (EZLNKLDR.SYS)
+	2720  AN2720 USB-USB Bridge
+	2727  Xircom PGUNET USB-USB Bridge
+	2750  EZ-Link (EZLNKUSB.SYS)
+	2810  Cypress ATAPI Bridge
+	4018  AmScope MU1803
+	4d90  AmScope MD1900 camera
+	6010  AmScope MU1000 camera
+	6510  Touptek UCMOS05100KPA
+	7000  PowerSpec MCE460 Front Panel LED Display
+	7777  Bluetooth Device
+	9999  AN2131 uninitialized (?)
+0548  Tyan Computer Corp.
+	1005  EZ Cart II GameBoy Flash Programmer
+0549  Pixera Corp.
+054a  Fujitsu Microelectronics, Inc.
+054b  New Media Corp.
+054c  Sony Corp.
+	0001  HUB
+	0002  Standard HUB
+	0010  Cyber-shot, Mavica (msc)
+	0014  Nogatech USBVision (SY)
+	0022  Storage Adapter V2 (TPP)
+	0023  CD Writer
+	0024  Mavica CD-1000 Camera
+	0025  NW-MS7 Walkman MemoryStick Reader
+	002b  Portable USB Harddrive V2
+	002c  USB Floppy Disk Drive
+	002d  MSAC-US1 MemoryStick Reader
+	002e  HandyCam MemoryStick Reader
+	0030  Storage Adapter V2 (TPP)
+	0032  MemoryStick MSC-U01 Reader
+	0035  Network Walkman (E)
+	0036  Net MD
+	0037  MG Memory Stick Reader/Writer
+	0038  Clie PEG-S300/D PalmOS PDA
+	0039  Network Walkman (MS)
+	003c  VAIO-MX LCD Control
+	0045  Digital Imaging Video
+	0046  Network Walkman
+	0049  UP-D895
+	004a  Memory Stick Hi-Fi System
+	004b  Memory Stick Reader/Writer
+	004e  DSC-xxx (ptp)
+	0056  MG Memory Stick Reader/Writer
+	0058  Clie PEG-N7x0C PalmOS PDA Mass Storage
+	0066  Clie PEG-N7x0C/PEG-T425 PalmOS PDA Serial
+	0067  CMR-PC3 Webcam
+	0069  Memorystick MSC-U03 Reader
+	006c  FeliCa S310 [PaSoRi]
+	006d  Clie PEG-T425 PDA Mass Storage
+	006f  Network Walkman (EV)
+	0073  Storage CRX1750U
+	0075  Net MD
+	0076  Storage Adapter ACR-U20
+	007c  Net MD
+	007f  IC Recorder (MS)
+	0080  Net MD
+	0081  Net MD
+	0084  Net MD
+	0085  Net MD
+	0086  Net MD
+	008b  Micro Vault 64M Mass Storage
+	0095  Clie s360
+	0099  Clie NR70 PDA Mass Storage
+	009a  Clie NR70 PDA Serial
+	00ab  Visual Communication Camera (PCGA-UVC10)
+	00af  DPP-EX Series Digital Photo Printer
+	00bf  IC Recorder (S)
+	00c0  Handycam DCR-30
+	00c6  Net MD
+	00c7  Net MD
+	00c8  MZ-N710 Minidisc Walkman
+	00c9  Net MD
+	00ca  MZ-DN430 Minidisc Walkman
+	00cb  MSAC-US20 Memory Stick Reader
+	00da  Clie nx60
+	00e8  Network Walkman (MS)
+	00e9  Handheld
+	00eb  Net MD
+	0101  Net MD
+	0103  IC Recorder (ST)
+	0105  Micro Vault Hub
+	0107  VCC-U01 Visual Communication Camera
+	0110  Digital Imaging Video
+	0113  Net MD
+	0116  IC Recorder (P)
+	0144  Clie PEG-TH55 PDA
+	0147  Visual Communication Camera (PCGA-UVC11)
+	014c  Aiwa AM-NX9 Net MD Music Recorder MDLP
+	014d  Memory Stick Reader/Writer
+	0154  Eyetoy Audio Device
+	0155  Eyetoy Video Device
+	015f  IC Recorder (BM)
+	0169  Clie PEG-TJ35 PDA Serial
+	016a  Clie PEG-TJ35 PDA Mass Storage
+	016b  Mobile HDD
+	016d  IC Recorder (SX)
+	016e  DPP-EX50 Digital Photo Printer
+	0171  Fingerprint Sensor 3500
+	017e  Net MD
+	017f  Hi-MD WALKMAN
+	0180  Net MD
+	0181  Hi-MD WALKMAN
+	0182  Net MD
+	0183  Hi-MD WALKMAN
+	0184  Net MD
+	0185  Hi-MD WALKMAN
+	0186  Net MD
+	0187  Hi-MD MZ-NH600 WALKMAN
+	0188  Net MD
+	018a  Net MD
+	018b  Hi-MD SOUND GATE
+	019e  Micro Vault 1.0G Mass Storage
+	01ad  ATRAC HDD PA
+	01bb  FeliCa S320 [PaSoRi]
+	01bd  MRW62E Multi-Card Reader/Writer
+	01c3  NW-E55 Network Walkman
+	01c6  MEMORY P-AUDIO
+	01c7  Printing Support
+	01c8  PSP Type A
+	01c9  PSP Type B
+	01d0  DVD+RW External Drive DRU-700A
+	01d5  IC RECORDER
+	01de  VRD-VC10 [Video Capture]
+	01e7  UP-D897
+	01e8  UP-DR150 Photo Printer
+	01e9  Net MD
+	01ea  Hi-MD WALKMAN
+	01ee  IC RECORDER
+	01fa  IC Recorder (P)
+	01fb  NW-E405 Network Walkman
+	020f  Device
+	0210  ATRAC HDD PA
+	0219  Net MD
+	021a  Hi-MD WALKMAN
+	021b  Net MD
+	021c  Hi-MD WALKMAN
+	021d  Net MD
+	0226  UP-CR10L
+	0227  Printing Support
+	022c  Net MD
+	022d  Hi-MD AUDIO
+	0233  ATRAC HDD PA
+	0236  Mobile HDD
+	023b  DVD+RW External Drive DRU-800UL
+	023c  Net MD
+	023d  Hi-MD WALKMAN
+	0243  MicroVault Flash Drive
+	024b  Vaio VGX Mouse
+	0257  IFU-WLM2 USB Wireless LAN Module (Wireless Mode)
+	0258  IFU-WLM2 USB Wireless LAN Module (Memory Mode)
+	0259  IC RECORDER
+	0267  Tachikoma Device
+	0268  Batoh Device / PlayStation 3 Controller
+	0269  HDD WALKMAN
+	026a  HDD WALKMAN
+	0271  IC Recorder (P)
+	027c  NETWORK WALKMAN
+	027e  SONY Communicator
+	027f  IC RECORDER
+	0286  Net MD
+	0287  Hi-MD WALKMAN
+	0290  VGP-UVC100 Visual Communication Camera
+	029b  PRS-500 eBook reader
+	02a5  MicroVault Flash Drive
+	02af  Handycam DCR-DVD306E
+	02c4  Device
+	02d1  DVD RW
+	02d2  PSP Slim
+	02d4  UP-CX1
+	02d8  SBAC-US10 SxS PRO memory card reader/writer
+	02e1  FeliCa S330 [PaSoRi]
+	02ea  PlayStation 3 Memory Card Adaptor
+	02f9  DSC-H9
+	0317  WALKMAN
+	031a  Walkman NWD-B103F
+	031e  PRS-300/PRS-505 eBook reader
+	0325  NWZ-A818
+	033e  DSC-W120/W290
+	0346  Handycam DCR-SR55E
+	0348  HandyCam HDR-TG3E
+	035b  Walkman NWZ-A828
+	035c  NWZ-A726/A728/A729
+	035f  UP-DR200 Photo Printer
+	0360  M2 Card Reader
+	0382  Memory Stick PRO-HG Duo Adaptor (MSAC-UAH1)
+	0385  Walkman NWZ-E436F
+	0387  IC Recorder (P)
+	03bc  Webbie HD - MHS-CM1
+	03c3  UP-DR80MD
+	03c4  Stryker SDP1000
+	03c5  UP-DR80
+	03cc  SD Card Reader
+	03d1  DPF-X95
+	03d3  DR-BT100CX
+	03d5  PlayStation Move motion controller
+	03fc  WALKMAN [NWZ-E345]
+	03fd  Walkman NWZ-E443
+	042f  PlayStation Move navigation controller
+	0440  DSC-H55
+	0485  MHS-PM5 HD camcorder
+	04cb  WALKMAN NWZ-E354
+	0541  DSC-HX100V [Cybershot Digital Still Camera]
+	05c4  DualShock 4 [CUH-ZCT1x]
+	0689  Walkman NWZ-B173F
+	06bb  WALKMAN NWZ-F805
+	06c3  RC-S380
+	07c3  ILCE-6000 (aka Alpha-6000) in Mass Storage mode
+	07c4  ILCE-6000 (aka Alpha-6000) in Mass Storage mode
+	082f  Walkman NWZW Series
+	0847  WG-C10 Portable Wireless Server
+	0873  UP-971AD
+	0877  UP-D898/X898 series
+	0884  MDR-ZX770BN [Wireless Noise Canceling Stereo Headset]
+	088c  Portable Headphone Amplifier
+	08b7  ILCE-6000 (aka Alpha-6000) in MTP mode
+	094e  ILCE-6000 (aka Alpha-6000) in PC Remote mode
+	0994  ILCE-6000 (aka Alpha-6000) in charging mode
+	09cc  DualShock 4 [CUH-ZCT2x]
+	0ba0  Dualshock4 Wireless Adaptor
+	0bb5  Headset MDR-1000X
+	0c02  ILCE-7M3 [A7III] in Mass Storage mode
+	0c03  ILCE-7M3 [A7III] in MTP mode
+	0c34  ILCE-7M3 [A7III] in PC Remote mode
+	0c7f  WH-CH700N [Wireless Noise-Canceling Headphones]
+	0cd3  WH-1000XM3 [Wireless Noise-Canceling Headphones]
+	0cda  PlayStation Classic controller
+	0ce0  WF-1000XM3 [Wireless Noise-Canceling Headphones]
+	0ce6  DualSense wireless controller (PS5)
+	0cf0  MRW-G1
+	0d58  WH-1000XM4 [Wireless Noise-Canceling Headphones]
+	1000  Wireless Buzz! Receiver
+054d  Try Corp.
+054e  Proside Corp.
+054f  WYSE Technology Taiwan
+0550  Fuji Xerox Co., Ltd
+	0002  InkJet Color Printer
+	0004  InkJet Color Printer
+	0005  InkJet Color Printer
+	000b  Workcentre 24
+	014e  CM215b Printer
+	0165  DocuPrint M215b
+0551  CompuTrend Systems, Inc.
+0552  Philips Monitors
+0553  STMicroelectronics Imaging Division (VLSI Vision)
+	0001  TerraCAM
+	0002  CPiA Webcam
+	0100  STV0672 Camera
+	0140  Video Camera
+	0150  CDE CAM 100
+	0151  Digital Blue QX5 Microscope
+	0200  Dual-mode Camera0
+	0201  Dual-mode Camera1
+	0202  STV0680 Camera
+	0674  Multi-mode Camera
+	0679  NMS Video Camera (Webcam)
+	1002  Che-ez! Splash
+0554  Dictaphone Corp.
+0555  ANAM S&T Co., Ltd
+0556  Asahi Kasei Microsystems Co., Ltd
+	0001  AK5370 I/F A/D Converter
+0557  ATEN International Co., Ltd
+	2001  UC-1284 Printer Port
+	2002  10Mbps Ethernet [klsi]
+	2004  UC-100KM PS/2 Mouse and Keyboard adapter
+	2006  UC-1284B Printer Port
+	2007  UC-110T 100Mbps Ethernet [pegasus]
+	2008  UC-232A Serial Port [pl2303]
+	2009  UC-210T Ethernet
+	2011  UC-2324 4xSerial Ports [mos7840]
+	2202  CS124U Miniview II KVM Switch
+	2212  Keyboard/Mouse
+	2213  CS682 2-Port USB 2.0 DVI KVM Switch
+	2221  Winbond Hermon
+	2404  4-port switch
+	2419  Virtual mouse/keyboard device
+	2600  IDE Bridge
+	2701  CE700A KVM Extender
+	4000  DSB-650 10Mbps Ethernet [klsi]
+	7000  Hub
+	7820  UC-2322 2xSerial Ports [mos7820]
+	8021  Hub
+0558  Truevision, Inc.
+	1009  GW Instek GDS-1000 Oscilloscope
+	100a  GW Instek GDS-1000A Oscilloscope
+	2009  GW Instek GDS-2000 Oscilloscope
+0559  Cadence Design Systems, Inc.
+055a  Kenwood USA
+055b  KnowledgeTek, Inc.
+055c  Proton Electronic Ind.
+055d  Samsung Electro-Mechanics Co.
+	0001  Keyboard
+	0bb1  Bluetooth Device
+	1030  Optical Wheel Mouse (OMS3CB/OMGB30)
+	1031  Optical Wheel Mouse (OMA3CB/OMGI30)
+	1040  Mouse HID Device
+	1050  E-Mail Optical Wheel Mouse (OMS3CE)
+	1080  Optical Wheel Mouse (OMS3CH)
+	2020  Floppy Disk Drive
+	6780  Keyboard V1
+	6781  Keyboard Mouse
+	8001  E.M. Hub
+	9000  AnyCam [pwc]
+	9001  MPC-C30 AnyCam Premium for Notebooks [pwc]
+	a000  SWL-2100U
+	a010  WLAN Adapter(SWL-2300)
+	a011  Boot Device
+	a012  WLAN Adapter(SWL-2300)
+	a013  WLAN Adapter(SWL-2350)
+	a230  Boot Device
+	b000  11Mbps WLAN Mini Adapter
+	b230  Netopia 802.11b WLAN Adapter
+	b231  LG Wireless LAN 11b Adapter
+055e  CTX Opto-Electronics Corp.
+055f  Mustek Systems, Inc.
+	0001  ScanExpress 1200 CU
+	0002  ScanExpress 600 CU
+	0003  ScanExpress 1200 USB
+	0006  ScanExpress 1200 UB
+	0007  ScanExpress 1200 USB Plus
+	0008  ScanExpress 1200 CU Plus
+	0010  BearPaw 1200F
+	0210  ScanExpress A3 USB
+	0218  BearPaw 2400 TA
+	0219  BearPaw 2400 TA Plus
+	021a  BearPaw 2448 TA Plus
+	021b  BearPaw 1200 CU Plus
+	021c  BearPaw 1200 CU Plus
+	021d  BearPaw 2400 CU Plus
+	021e  BearPaw 1200 TA/CS
+	021f  SNAPSCAN e22
+	0400  BearPaw 2400 TA Pro
+	0401  P 3600 A3 Pro
+	0408  BearPaw 2448 CU Pro
+	0409  BearPaw 2448 TA Pro
+	040b  ScanExpress A3 USB 1200 PRO
+	0501  ScanExpress A3 2400 Pro
+	0873  ScanExpress 600 USB
+	1000  BearPaw 4800 TA Pro
+	a350  gSmart 350 Camera
+	a800  MDC 800 Camera
+	b500  MDC 3000 Camera
+	c005  PC CAM 300A
+	c200  gSmart 300
+	c211  Kowa Bs888e Microcamera
+	c220  gSmart mini
+	c230  Digicam 330K
+	c232  MDC3500 Camera
+	c360  DV 4000 Camera
+	c420  gSmart mini 2 Camera
+	c430  gSmart LCD 2 Camera
+	c440  DV 3000 Camera
+	c520  gSmart mini 3 Camera
+	c530  gSmart LCD 2 Camera
+	c540  gSmart D30 Camera
+	c630  MDC 4000 Camera
+	c631  MDC 4000 Camera
+	c650  MDC 5500Z Camera
+	d001  WCam 300
+	d003  WCam 300A
+	d004  WCam 300AN
+0560  Interface Corp.
+0561  Oasis Design, Inc.
+0562  Telex Communications, Inc.
+	0001  Enhanced Microphone
+	0002  Telex Microphone
+0563  Immersion Corp.
+0564  Kodak Digital Product Center, Japan Ltd. (formerly Chinon Industries Inc.)
+0565  Peracom Networks, Inc.
+	0001  Serial Port [etek]
+	0002  Enet Ethernet [klsi]
+	0003  @Home Networks Ethernet [klsi]
+	0005  Enet2 Ethernet [klsi]
+	0041  Peracom Remote NDIS Ethernet Adapter
+0566  Monterey International Corp.
+	0110  ViewMate Desktop Mouse CC2201
+	1001  ViewMate Desktop Mouse CC2201
+	1002  ViewMate Desktop Mouse CC2201
+	1003  ViewMate Desktop Mouse CC2201
+	1004  ViewMate Desktop Mouse CC2201
+	1005  ViewMate Desktop Mouse CC2201
+	1006  ViewMate Desktop Mouse CC2201
+	1007  ViewMate Desktop Mouse CC2201
+	2800  MIC K/B
+	2801  MIC K/B Mouse
+	2802  Kbd Hub
+	3002  Keyboard
+	3004  Genius KB-29E
+	3013  BakkerElkhuizen Wired Keyboard S-board 840 Design
+	3020  BakkerElkhuizen Wired Keyboard S-board 840 Design USB-Hub
+	3027  Sun-Flex ProTouch
+	3107  Keyboard
+	3132  Optical mouse M-DY4DR / M-DY6DR
+	4006  FID 638 Mouse (Sun Microsystems)
+0567  Xyratex International, Ltd
+0568  Quartz Ingenierie
+0569  SegaSoft
+056a  Wacom Co., Ltd
+	0000  PenPartner
+	0001  PenPartner 4x5
+	0002  PenPartner 6x8
+	0003  PTU-600 [Cintiq Partner]
+	0010  ET-0405 [Graphire]
+	0011  ET-0405A [Graphire2 (4x5)]
+	0012  ET-0507A [Graphire2 (5x7)]
+	0013  CTE-430 [Graphire3 (4x5)]
+	0014  CTE-630 [Graphire3 (6x8)]
+	0015  CTE-440 [Graphire4 (4x5)]
+	0016  CTE-640 [Graphire4 (6x8)]
+	0017  CTE-450 [Bamboo Fun (small)]
+	0018  CTE-650 [Bamboo Fun (medium)]
+	0019  CTE-631 [Bamboo One]
+	0020  GD-0405 [Intuos (4x5)]
+	0021  GD-0608 [Intuos (6x8)]
+	0022  GD-0912 [Intuos (9x12)]
+	0023  GD-1212 [Intuos (12x12)]
+	0024  GD-1218 [Intuos (12x18)]
+	0026  PTH-450 [Intuos5 touch (S)]
+	0027  PTH-650 [Intuos5 touch (M)]
+	0028  PTH-850 [Intuos5 touch (L)]
+	0029  PTK-450 [Intuos5 (S)]
+	002a  PTK-650 [Intuos5 (M)]
+	0030  PL400
+	0031  PL500
+	0032  PL600
+	0033  PL600SX
+	0034  PL550
+	0035  PL800
+	0037  PL700
+	0038  PL510
+	0039  DTU-710
+	003a  DTI-520
+	003b  Integrated Hub
+	003f  DTZ-2100 [Cintiq 21UX]
+	0041  XD-0405-U [Intuos2 (4x5)]
+	0042  XD-0608-U [Intuos2 (6x8)]
+	0043  XD-0912-U [Intuos2 (9x12)]
+	0044  XD-1212-U [Intuos2 (12x12)]
+	0045  XD-1218-U [Intuos2 (12x18)]
+	0047  Intuos2 6x8
+	0057  DTK-2241
+	0059  DTH-2242 tablet
+	005b  DTH-2200 [Cintiq 22HD Touch] tablet
+	005d  DTH-2242 touchscreen
+	005e  DTH-2200 [Cintiq 22HD Touch] touchscreen
+	0060  FT-0405 [Volito, PenPartner, PenStation (4x5)]
+	0061  FT-0203 [Volito, PenPartner, PenStation (2x3)]
+	0062  CTF-420 [Volito2]
+	0063  CTF-220 [BizTablet]
+	0064  CTF-221 [PenPartner2]
+	0065  MTE-450 [Bamboo]
+	0069  CTF-430 [Bamboo One]
+	006a  CTE-460 [Bamboo One Pen (S)]
+	006b  CTE-660 [Bamboo One Pen (M)]
+	0081  CTE-630BT [Graphire Wireless (6x8)]
+	0084  ACK-40401 [Wireless Accessory Kit]
+	0090  TPC90
+	0093  TPC93
+	0097  TPC97
+	009a  TPC9A
+	00a2  STU-300B [LCD signature pad]
+	00b0  PTZ-430 [Intuos3 (4x5)]
+	00b1  PTZ-630 [Intuos3 (6x8)]
+	00b2  PTZ-930 [Intuos3 (9x12)]
+	00b3  PTZ-1230 [Intuos3 (12x12)]
+	00b4  PTZ-1231W [Intuos3 (12x19)]
+	00b5  PTZ-631W [Intuos3 (6x11)]
+	00b7  PTZ-431W [Intuos3 (4x6)]
+	00b8  PTK-440 [Intuos4 (4x6)]
+	00b9  PTK-640 [Intuos4 (6x9)]
+	00ba  PTK-840 [Intuos4 (8x13)]
+	00bb  PTK-1240 [Intuos4 (12x19)]
+	00c0  DTF-521
+	00c4  DTF-720
+	00c5  DTZ-2000W [Cintiq 20WSX]
+	00c6  DTZ-1200W [Cintiq 12WX]
+	00c7  DTU-1931
+	00cc  DTK-2100 [Cintiq 21UX]
+	00ce  DTU-2231
+	00d0  CTT-460 [Bamboo Touch]
+	00d1  CTH-460 [Bamboo Pen & Touch]
+	00d2  CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)]
+	00d3  CTH-661 [Bamboo Fun/Comic Pen & Touch (M)]
+	00d4  CTL-460 [Bamboo Pen (S)]
+	00d5  CTL-660 [Bamboo Pen (M)]
+	00d6  CTH-460 [Bamboo Pen & Touch]
+	00d7  CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)]
+	00d8  CTH-661 [Bamboo Fun/Comic Pen & Touch (M)]
+	00d9  CTT-460 [Bamboo Touch]
+	00da  CTH-461SE [Bamboo Pen & Touch Special Edition (S)]
+	00db  CTH-661SE [Bamboo Pen & Touch Special Edition (M)]
+	00dc  CTT-470 [Bamboo Touch]
+	00dd  CTL-470 [Bamboo Connect]
+	00de  CTH-470 [Bamboo Fun Pen & Touch]
+	00df  CTH-670 [Bamboo Create/Fun]
+	00e2  TPCE2
+	00e3  TPCE3
+	00e5  TPCE5
+	00e6  TPCE6
+	00ec  TPCEC
+	00ed  TPCED
+	00ef  TPCEF
+	00f0  DTU-1631
+	00f4  DTK-2400 [Cintiq 24HD] tablet
+	00f6  DTH-2400 [Cintiq 24HD touch] touchscreen
+	00f8  DTH-2400 [Cintiq 24HD touch] tablet
+	00f9  DTK-2200 [Cintiq 22HD] hub
+	00fa  DTK-2200 [Cintiq 22HD] tablet
+	00fb  DTU-1031
+	0100  TPC100
+	0101  TPC101
+	010d  TPC10D
+	010e  TPC10E
+	010f  TPC10F
+	0116  TPC116
+	012c  TPC12C
+	0221  MDP-123 [Inkling]
+	0300  CTL-471 [Bamboo Splash, One by Wacom (S)]
+	0301  CTL-671 [One by Wacom (M)]
+	0302  CTH-480 [Intuos Pen & Touch (S)]
+	0303  CTH-680 [Intuos Pen & Touch (M)]
+	0304  DTK-1300 [Cintiq 13HD]
+	0307  DTH-A1300 [Cintiq Companion Hybrid] tablet
+	0309  DTH-A1300 [Cintiq Companion Hybrid] touchscreen
+	030e  CTL-480 [Intuos Pen (S)]
+	0314  PTH-451 [Intuos pro (S)]
+	0315  PTH-651 [Intuos pro (M)]
+	0317  PTH-851 [Intuos pro (L)]
+	0318  CTH-301 [Bamboo]
+	0319  CTH-300 [Bamboo Pad wireless]
+	0323  CTL-680 [Intuos Pen (M)]
+	032a  DTK-2700 [Cintiq 27QHD]
+	032b  DTH-2700 [Cintiq 27QHD touch] tablet
+	032c  DTH-2700 [Cintiq 27QHD touch] touchscreen
+	032f  DTU-1031X
+	0331  ACK-411050 [ExpressKey Remote]
+	0333  DTH-1300 [Cintiq 13HD Touch] tablet
+	0335  DTH-1300 [Cintiq 13HD Touch] touchscreen
+	0336  DTU-1141
+	033b  CTL-490 [Intuos Draw (S)]
+	033c  CTH-490 [Intuos Art/Photo/Comic (S)]
+	033d  CTL-690 [Intuos Draw (M)]
+	033e  CTH-690 [Intuos Art (M)]
+	0343  DTK-1651
+	0347  DTH-W1620 [MobileStudio Pro 16] internal hub
+	0348  DTH-W1620 [MobileStudio Pro 16] external hub
+	034a  DTH-W1320 [MobileStudio Pro 13] touchscreen
+	034b  DTH-W1620 [MobileStudio Pro 16] touchscreen
+	034d  DTH-W1320 [MobileStudio Pro 13] tablet
+	034e  DTH-W1620 [MobileStudio Pro 16] tablet
+	034f  DTH-1320 [Cintiq Pro 13] tablet
+	0350  DTH-1620 [Cintiq Pro 16] tablet
+	0351  DTH-2420 [Cintiq Pro 24 PT] tablet
+	0352  DTH-3220 [Cintiq Pro 32] tablet
+	0353  DTH-1320 [Cintiq Pro 13] touchscreen
+	0354  DTH-1620 [Cintiq Pro 16] touchscreen
+	0355  DTH-2420 [Cintiq Pro 24 PT] touchscreen
+	0356  DTH-3220 [Cintiq Pro 32] touchscreen
+	0357  PTH-660 [Intuos Pro (M)]
+	0358  PTH-860 [Intuos Pro (L)]
+	0359  DTU-1141B
+	035a  DTH-1152 tablet
+	0368  DTH-1152 touchscreen
+	0374  CTL-4100 [Intuos (S)]
+	0375  CTL-6100 [Intuos (M)]
+	0376  CTL-4100WL [Intuos BT (S)]
+	0378  CTL-6100WL [Intuos BT (M)]
+	037a  CTL-472 [One by Wacom (S)]
+	037b  CTL-672 [One by Wacom (M)]
+	037c  DTK-2420 [Cintiq Pro 24 P]
+	037d  DTH-2452 tablet
+	037e  DTH-2452 touchscreen
+	0382  DTK-2451 tablet
+	038a  DTH-3220 [Cintiq Pro 32] internal hub
+	038d  DTH-3220 [Cintiq Pro 32] internal hub
+	038e  DTH-3220 [Cintiq Pro 32] external hub
+	038f  DTH-3220 [Cintiq Pro 32] internal hub
+	0390  DTK-1660 [Cintiq 16]
+	0392  PTH-460 [Intuos Pro (S)]
+	0396  DTK-1660E
+	0398  DTH-W1320 [MobileStudio Pro 13] tablet
+	0399  DTH-W1620 [MobileStudio Pro 16] tablet
+	039a  DTH-W1320 [MobileStudio Pro 13] touchscreen
+	039b  DTH-W1620 [MobileStudio Pro 16] touchscreen
+	039c  DTH-W1320 [MobileStudio Pro 16] external hub
+	039d  DTH-W1320 [MobileStudio Pro 16] internal hub
+	03aa  DTH-W1620 [MobileStudio Pro 16] tablet
+	03ac  DTH-W1620 [MobileStudio Pro 16] touchscreen
+	03c5  CTL-4100WL [Intuos BT (S)]
+	03c7  CTL-6100WL [Intuos BT (M)]
+	0400  PenPartner 4x5
+	4001  TPC4001
+	4004  TPC4004
+	4850  PenPartner 6x8
+	5000  TPC5000
+	5002  TPC5002
+	5010  TPC5010
+056b  Decicon, Inc.
+056c  eTEK Labs
+	0006  KwikLink Host-Host Connector
+	8007  Kwik232 Serial Port
+	8100  KwikLink Host-Host Connector
+	8101  KwikLink USB-USB Bridge
+056d  EIZO Corp.
+	0000  Hub
+	0001  Monitor
+	0002  HID Monitor Controls
+	0003  Device Bay Controller
+	4000  FlexScan EV3237
+	4001  Monitor
+	4002  USB HID Monitor
+	4014  FlexScan EV2750
+	4026  FlexScan EV2451
+	4027  FlexScan EV2456
+	4036  FlexScan EV2785
+	4037  FlexScan EV3285
+	4044  FlexScan EV2457
+	4059  FlexScan EV2760
+	405b  FlexScan EV2460
+	405f  FlexScan EV2795
+	4065  FlexScan EV3895
+056e  Elecom Co., Ltd
+	0002  29UO Mouse
+	0057  Micro Grast Pop M-PGDL
+	005c  Micro Grast Pop M-PG2DL
+	005d  Micro Grast Fit M-FGDL
+	005e  Micro Grast Fit M-FG2DL
+	0062  Optical mouse M-D18DR
+	0063  Laser mouse M-SODL
+	0069  Laser mouse M-GE1UL
+	0071  Laser mouse M-GE3DL
+	0072  Laser mouse M-LS6UL
+	0073  Laser mouse M-LS7UL
+	0074  Optical mouse M-FW1UL
+	0075  Laser mouse M-FW2DL
+	0077  Laser mouse M-LY2UL
+	0079  Laser mouse M-D21DL
+	007b  Laser mouse M-D20DR
+	007c  Laser Bluetooth mouse M-BT5BL
+	007e  Option mouse M-M8UR
+	007f  Option mouse M-M9UR
+	0081  Option mouse M-DY6DR
+	0082  Laser mouse M-D22DR
+	0088  Micro Grast2 Bit M-BG3DL
+	0089  Micro Grast2 Pop M-PG3DL
+	008c  M-NE3DL Mouse
+	008d  ORIME M-NE4DR
+	008f  M-BT8BL Bluetooth Mouse
+	0092  Wireless BlueLED Mouse (M-BL2DB)
+	009c  IR Mouse M-IR02DR
+	009d  IR Mouse M-IR03DR
+	009f  BlueLED Mouse M-HS1DB
+	00a1  IR Mouse M-IR05DR
+	00a4  Blue LED Mouse M-BL06DB
+	00a5  M-NV1BR Bluetooth Mouse
+	00a7  Blue LED Mouse M-BL08DB
+	00a8  M-BL09DB Mouse
+	00a9  M-BL10UB Mouse
+	00aa  M-BL11DB Mouse
+	00ac  M-A-BL01UL / M-BL15DB Mouse
+	00b4  Track on Glass Mouse M-TG02DL
+	00b5  Track on Glass Mouse M-TG03UL
+	00b6  Track on Glass Mouse M-TG04DL
+	00b8  M-A-BL01UL or M-ASKL2 Mouse
+	00b9  M-A-BL02DB or M-ASKL Mouse
+	00cb  M-BL21DB Mouse
+	00cd  M-XG1UB Mouse
+	00ce  M-XG1DB Mouse
+	00cf  M-XG1BB Bluetooth Mouse
+	00d0  M-XG2UB Mouse
+	00d1  M-XG2DB Mouse
+	00d2  M-XG2BB Bluetooth Mouse
+	00d3  M-XG3DL Mouse
+	00d4  M-LS11DL Mouse
+	00da  M-XG4UB Mouse
+	00db  M-XG4DB Mouse
+	00dc  M-XG4BB Bluetooth Mouse
+	00dd  M-LS12UL Mouse
+	00de  M-LS13UL Mouse
+	00df  M-BL22DB Mouse
+	00e1  M-WK01DB or M-A-BL04DB
+	00e2  M-A-BL03DB
+	00e3  M-XGx10UB
+	00e4  M-XGx10DB
+	00e5  M-XGx10BB
+	00e6  M-XGx20DL or M-XGx20DB UltimateLaser Mouse
+	00f1  M-XT1DRBK USB EX-G Wireless Optical TrackBall
+	00f2  M-XT1URBK EX-G Optical Trackball
+	00f3  M-BL23DB
+	00f4  M-BT13BL LBT-UAN05C2
+	00f7  M-KN1DB
+	00f8  M-BL22DB Mouse (other version)
+	00f9  M-XT2URBK EX-G Optical TrackBall
+	00fa  M-XT2DRBK EX-G Wireless Optical TrackBall
+	00fb  M-XT3URBK EX-G Optical TrackBall
+	00fc  M-XT3DRBK EX-G Wireless Optical TrackBall
+	00fd  M-XT4DRBK EX-G Wireless Optical TrackBall
+	00fe  M-DT1URBK or M-DT2URBK DEFT Optical TrackBall
+	00ff  M-DT1DRBK or M-DT2DRBK DEFT Wireless Optical Mouse
+	0101  M-BL25UBS
+	0103  M-BT16BBS
+	0104  M-BL26UBC
+	0105  M-BL26DBC
+	0107  M-LS15UL
+	0108  M-LS15DL
+	0109  M-LS16UL Mouse
+	010a  M-LS16DL / M-KN2DLS
+	010b  M-BL21DB Mouse
+	010c  M-HT1URBK HUGE Optical TrackBall
+	010d  M-HT1DRBK HUGE Wireless Optical TrackBall
+	010e  M-KS1DBS / M-FPG3DBS
+	010f  M-FBG3DB
+	0115  M-BT13BL
+	0121  M-ED01DB
+	0122  M-NK01DB
+	0124  Dual connect Mouse M-DC01MB Bluetooth
+	0128  TrackBall Mouse M-XPT1MR Wired
+	0129  TrackBall Mouse M-XPT1MR Wireless
+	0130  TrackBall Mouse M-XPT1MR Bluetooth
+	0131  TrackBall Mouse M-DPT1MR Wired
+	0132  TrackBall Mouse M-DPT1MR Wireless
+	0133  TrackBall Mouse M-DPT1MR Bluetooth
+	0136  M-BT20BB
+	0137  BlueTooth 4.0 Mouse M-BT21BB
+	0138  M-A-BL07DB
+	0140  M-G01UR
+	0141  M-Y9UB
+	0142  M-DY13DB
+	0144  M-FBL01DB
+	1055  TK-DCP03 WIRED
+	1057  TK-DCP03 BT
+	2003  JC-U3613M
+	2004  JC-U3613M
+	200c  LD-USB/TX
+	200f  JC-U4013S Gamepad
+	2012  JC-U4013S Gamepad
+	4002  Laneed 100Mbps Ethernet LD-USB/TX [pegasus]
+	4005  LD-USBL/TX
+	400b  LD-USB/TX
+	4010  LD-USB20
+	5003  UC-SGT
+	5004  UC-SGT
+	6008  Flash Disk
+	abc1  LD-USB/TX
+056f  Korea Data Systems Co., Ltd
+	cd00  CDM-751 CD organizer
+0570  Epson America
+0571  Interex, Inc.
+	0002  echoFX InterView Lite
+0572  Conexant Systems (Rockwell), Inc.
+	0001  Ezcam II Webcam
+	0002  Ezcam II Webcam
+	0040  Wondereye CP-115 Webcam
+	0041  Webcam Notebook
+	0042  Webcam Notebook
+	0320  DVBSky T330 DVB-T2/C tuner
+	1232  V.90 modem
+	1234  Typhoon Redfun Modem V90 56k
+	1252  HCF V90 Data Fax Voice Modem
+	1253  Zoom V.92 Faxmodem
+	1300  SoftK56 Data Fax Voice CARP
+	1301  Modem Enumerator
+	1328  TrendNet TFM-561 modem
+	1804  HP Dock Audio
+	2000  SoftGate 802.11 Adapter
+	2002  SoftGate 802.11 Adapter
+	262a  tm5600 Video & Audio Grabber Capture
+	680c  DVBSky T680C DVB-T2/C tuner
+	6831  DVBSky S960 DVB-S2 tuner
+	8390  WinFast PalmTop/Novo TV Video
+	8392  WinFast PalmTop/Novo TV Video
+	960c  DVBSky S960C DVB-S2 tuner
+	c686  Geniatech T220A DVB-T2 TV Stick
+	c688  Geniatech T230 DVB-T2 TV Stick
+	cafc  CX861xx ROM Boot Loader
+	cafd  CX82310 ROM Boot Loader
+	cafe  AccessRunner ADSL Modem
+	cb00  ADSL Modem
+	cb01  ADSL Modem
+	cb06  StarModem Network Interface
+0573  Zoran Co. Personal Media Division (Nogatech)
+	0003  USBGear USBG-V1
+	0400  D-Link V100
+	0600  Dazzle USBVision (1006)
+	1300  leadtek USBVision (1006)
+	2000  X10 va10a Wireless Camera
+	2001  Dazzle EmMe (2001)
+	2101  Zoran Co. PMD (Nogatech) AV-grabber Manhattan
+	2d00  Osprey 50
+	2d01  Hauppauge USB-Live Model 600
+	3000  Dazzle MicroCam (NTSC)
+	3001  Dazzle MicroCam (PAL)
+	4000  Nogatech TV! (NTSC)
+	4001  Nogatech TV! (PAL)
+	4002  Nogatech TV! (PAL-I-)
+	4003  Nogatech TV! (MF-)
+	4008  Nogatech TV! (NTSC) (T)
+	4009  Nogatech TV! (PAL) (T)
+	4010  Nogatech TV! (NTSC) (A)
+	4100  USB-TV FM (NTSC)
+	4110  PNY USB-TV (NTSC) FM
+	4400  Nogatech TV! Pro (NTSC)
+	4401  Nogatech TV! Pro (PAL)
+	4450  PixelView PlayTv-USB PRO (PAL) FM
+	4451  Nogatech TV! Pro (PAL+)
+	4452  Nogatech TV! Pro (PAL-I+)
+	4500  Nogatech TV! Pro (NTSC)
+	4501  Nogatech TV! Pro (PAL)
+	4550  ZTV ZT-721 2.4GHz A/V Receiver
+	4551  Dazzle TV! Pro Audio (P+)
+	4d00  Hauppauge WinTV-USB USA
+	4d01  Hauppauge WinTV-USB
+	4d02  Hauppauge WinTV-USB UK
+	4d03  Hauppauge WinTV-USB France
+	4d04  Hauppauge WinTV (PAL D/K)
+	4d10  Hauppauge WinTV-USB with FM USA radio
+	4d11  Hauppauge WinTV-USB (PAL) with FM radio
+	4d12  Hauppauge WinTV-USB UK with FM Radio
+	4d14  Hauppauge WinTV (PAL D/K FM)
+	4d20  Hauppauge WinTV-USB II (PAL) with FM radio
+	4d21  Hauppauge WinTV-USB II (PAL)
+	4d22  Hauppauge WinTV-USB II (PAL) Model 566
+	4d23  Hauppauge WinTV-USB France 4D23
+	4d24  Hauppauge WinTV Pro (PAL D/K)
+	4d25  Hauppauge WinTV-USB Model 40209 rev B234
+	4d26  Hauppauge WinTV-USB Model 40209 rev B243
+	4d27  Hauppauge WinTV-USB Model 40204 Rev B281
+	4d28  Hauppauge WinTV-USB Model 40204 rev B283
+	4d29  Hauppauge WinTV-USB Model 40205 rev B298
+	4d2a  Hauppague WinTV-USB Model 602 Rev B285
+	4d2b  Hauppague WinTV-USB Model 602 Rev B282
+	4d2c  Hauppauge WinTV Pro (PAL/SECAM)
+	4d30  Hauppauge WinTV-USB FM Model 40211 Rev B123
+	4d31  Hauppauge WinTV-USB III (PAL) with FM radio Model 568
+	4d32  Hauppauge WinTV-USB III (PAL) FM Model 573
+	4d34  Hauppauge WinTV Pro (PAL D/K FM)
+	4d35  Hauppauge WinTV-USB III (PAL) FM Model 597
+	4d36  Hauppauge WinTV Pro (PAL B/G FM)
+	4d37  Hauppauge WinTV-USB Model 40219 rev E189
+	4d38  Hauppauge WinTV Pro (NTSC FM)
+0574  City University of Hong Kong
+0575  Philips Creative Display Solutions
+0576  BAFO/Quality Computer Accessories
+0577  ELSA
+0578  Intrinsix Corp.
+0579  GVC Corp.
+057a  Samsung Electronics America
+057b  Y-E Data, Inc.
+	0000  FlashBuster-U Floppy
+	0001  Tri-Media Reader Floppy
+	0006  Tri-Media Reader Card Reader
+	0010  Memory Stick Reader Writer
+	0020  HEXA Media Drive 6-in-1 Card Reader Writer
+	0030  Memory Card Viewer (TV)
+057c  AVM GmbH
+	0b00  ISDN-Controller B1 Family
+	0c00  ISDN-Controller FRITZ!Card
+	1000  ISDN-Controller FRITZ!Card v2.0
+	1900  ISDN-Controller FRITZ!Card v2.1
+	2000  ISDN-Connector FRITZ!X
+	2200  BlueFRITZ!
+	2300  Teledat X130 DSL
+	2800  Teledat 2a/b / X120 / NetXXL ISDN Terminal Adapter
+	3200  Teledat X130 DSL
+	3500  FRITZ!Card DSL SL
+	3701  FRITZ!Box SL
+	3702  FRITZ!Box
+	3800  BlueFRITZ! Bluetooth Stick
+	3a00  FRITZ!Box Fon
+	3c00  FRITZ!Box WLAN
+	3d00  FRITZ!Box Fon WLAN 7050/7140/7170/IAD3331
+	3e01  FRITZ!Box (Annex A)
+	4001  FRITZ!Box Fon (Annex A)
+	4101  FRITZ!Box WLAN (Annex A)
+	4201  FRITZ!Box Fon WLAN (Annex A)
+	4601  Eumex 5520PC (WinXP/2000)
+	4602  Eumex 400 (WinXP/2000)
+	4701  AVM FRITZ!Box Fon ata
+	5401  Eumex 300 IP
+	5601  AVM Fritz!WLAN [Texas Instruments TNETW1450]
+	6201  AVM Fritz!WLAN v1.1 [Texas Instruments TNETW1450]
+	62ff  AVM Fritz!WLAN USB (in CD-ROM-mode)
+	8401  Fritz!WLAN N [Atheros AR9001U]
+	8402  Fritz!WLAN N 2.4 [Atheros AR9001U]
+	8403  Fritz!WLAN N v2 [Atheros AR9271]
+	84ff  AVM Fritz!WLAN USB N (in CD-ROM-mode)
+	8501  FRITZ WLAN N v2 [RT5572/rt2870.bin]
+057d  Shark Multimedia, Inc.
+057e  Nintendo Co., Ltd
+	0300  USB-EXI Adapter (GCP-2000)
+	0304  RVT-H Reader
+	0305  Broadcom BCM2045A Bluetooth Radio [Nintendo Wii]
+	0306  Wii Remote Controller RVL-003
+	0337  Wii U GameCube Controller Adapter
+	2000  Switch
+	2006  Joy-Con L
+	2007  Joy-Con R
+	2009  Switch Pro Controller
+	200e  Joy-Con Charging Grip
+	3000  SDK Debugger
+057f  QuickShot, Ltd
+	6238  USB StrikePad
+0580  Denron, Inc.
+0581  Racal Data Group
+	0107  Tera Barcode Scanner 2.4 GHz Receiver
+	020c  Tera 2D Barcode Scanner EVHK0012
+0582  Roland Corp.
+	0000  UA-100(G)
+	0002  UM-4/MPU-64 MIDI Interface
+	0003  SoundCanvas SC-8850
+	0004  U-8
+	0005  UM-2(C/EX)
+	0007  SoundCanvas SC-8820
+	0008  PC-300
+	0009  UM-1(E/S/X)
+	000b  SK-500
+	000c  SC-D70
+	0010  EDIROL UA-5
+	0011  Edirol UA-5 Sound Capture
+	0012  XV-5050
+	0013  XV-5050
+	0014  EDIROL UM-880 MIDI I/F (native)
+	0015  EDIROL UM-880 MIDI I/F (generic)
+	0016  EDIROL SD-90
+	0017  EDIROL SD-90
+	0018  UA-1A
+	001b  MMP-2
+	001c  MMP-2
+	001d  V-SYNTH
+	001e  V-SYNTH
+	0023  EDIROL UM-550
+	0024  EDIROL UM-550
+	0025  EDIROL UA-20
+	0026  EDIROL UA-20
+	0027  EDIROL SD-20
+	0028  EDIROL SD-20
+	0029  EDIROL SD-80
+	002a  EDIROL SD-80
+	002b  EDIROL UA-700
+	002c  EDIROL UA-700
+	002d  XV-2020 Synthesizer
+	002e  XV-2020 Synthesizer
+	002f  VariOS
+	0030  VariOS
+	0033  EDIROL PCR
+	0034  EDIROL PCR
+	0035  M-1000
+	0037  Digital Piano
+	0038  Digital Piano
+	003b  BOSS GS-10
+	003c  BOSS GS-10
+	0040  GI-20
+	0041  GI-20
+	0042  RS-70
+	0043  RS-70
+	0044  EDIROL UA-1000
+	0047  EDIROL UR-80 WAVE
+	0048  EDIROL UR-80 MIDI
+	0049  EDIROL UR-80 WAVE
+	004a  EDIROL UR-80 MIDI
+	004b  EDIROL M-100FX
+	004c  EDIROL PCR-A WAVE
+	004d  EDIROL PCR-A MIDI
+	004e  EDIROL PCR-A WAVE
+	004f  EDIROL PCR-A MIDI
+	0050  EDIROL UA-3FX
+	0052  EDIROL UM-1SX
+	0054  Digital Piano
+	0060  EXR Series
+	0064  EDIROL PCR-1 WAVE
+	0065  EDIROL PCR-1 MIDI
+	0066  EDIROL PCR-1 WAVE
+	0067  EDIROL PCR-1 MIDI
+	006a  SP-606
+	006b  SP-606
+	006d  FANTOM-X
+	006e  FANTOM-X
+	0073  EDIROL UA-25
+	0074  EDIROL UA-25
+	0075  BOSS DR-880
+	0076  BOSS DR-880
+	007a  RD
+	007b  RD
+	007d  EDIROL UA-101
+	0080  G-70
+	0081  G-70
+	0084  V-SYNTH XT
+	0089  BOSS GT-PRO
+	008b  EDIROL PC-50
+	008c  EDIROL PC-50
+	008d  EDIROL UA-101 USB1
+	0092  EDIROL PC-80 WAVE
+	0093  EDIROL PC-80 MIDI
+	0096  EDIROL UA-1EX
+	009a  EDIROL UM-3EX
+	009d  EDIROL UM-1
+	00a0  MD-P1
+	00a2  Digital Piano
+	00a3  EDIROL UA-4FX
+	00a6  Juno-G
+	00a9  MC-808
+	00ad  SH-201
+	00b2  VG-99
+	00b3  VG-99
+	00b7  BK-7m/VIMA JM-5/8
+	00c2  SonicCell
+	00c4  EDIROL M-16DX
+	00c5  SP-555
+	00c7  V-Synth GT
+	00d1  Music Atelier
+	00d3  M-380/400
+	00da  BOSS GT-10
+	00db  BOSS GT-10 Guitar Effects Processor
+	00dc  BOSS GT-10B
+	00de  Fantom G
+	00e6  EDIROL UA-25EX (Advanced mode)
+	00e7  EDIROL UA-25EX
+	00e9  UA-1G
+	00eb  VS-100
+	00f6  GW-8/AX-Synth
+	00f8  JUNO Series
+	00fc  VS-700C
+	00fd  VS-700
+	00fe  VS-700 M1
+	00ff  VS-700 M2
+	0100  VS-700
+	0101  VS-700 M2
+	0102  VB-99
+	0104  UM-1G
+	0106  UM-2G
+	0108  UM-3G
+	0109  eBand JS-8
+	010d  A-500S
+	010f  A-PRO
+	0110  A-PRO
+	0111  GAIA SH-01
+	0113  ME-25
+	0114  SD-50
+	0116  WAVE/MP3 RECORDER R-05
+	0117  VS-20
+	0119  OCTAPAD SPD-30
+	011c  Lucina AX-09
+	011e  BR-800
+	0120  OCTA-CAPTURE
+	0121  OCTA-CAPTURE
+	0123  JUNO-Gi
+	0124  M-300
+	0127  GR-55
+	012a  UM-ONE
+	012b  DUO-CAPTURE
+	012f  QUAD-CAPTURE
+	0130  MICRO BR BR-80
+	0132  TRI-CAPTURE
+	0134  V-Mixer
+	0138  Boss RC-300 (Audio mode)
+	0139  Boss RC-300 (Storage mode)
+	013a  JUPITER-80
+	013e  R-26
+	0145  SPD-SX
+	014b  eBand JS-10
+	014d  GT-100
+	0150  TD-15
+	0151  TD-11
+	0154  JUPITER-50
+	0156  A-Series
+	0158  TD-30
+	0159  DUO-CAPTURE EX
+	015b  INTEGRA-7
+	015d  R-88
+	01b5  Boutique Series Synthesizer (Normal mode)
+	01b6  Boutique Series Synthesizer (Storage mode)
+	01df  Rubix22
+	01e0  Rubix24
+	01e1  Rubix44
+	01ef  Go:KEYS MIDI
+	0505  EDIROL UA-101
+0583  Padix Co., Ltd (Rockfire)
+	0001  4 Axis 12 button +POV
+	0002  4 Axis 12 button +POV
+	2030  RM-203 USB Nest [mode 1]
+	2031  RM-203 USB Nest [mode 2]
+	2032  RM-203 USB Nest [mode 3]
+	2033  RM-203 USB Nest [mode 4]
+	2050  PX-205 PSX Bridge
+	205f  PSX/USB converter
+	2060  2-axis 8-button gamepad
+	206f  USB, 2-axis 8-button gamepad
+	3050  QF-305u Gamepad
+	3379  Rockfire X-Force
+	337f  Rockfire USB RacingStar Vibra
+	509f  USB,4-Axis,12-Button with POV
+	5259  Rockfire USB SkyShuttle Vibra
+	525f  USB Vibration Pad
+	5308  USB Wireless VibrationPad
+	5359  Rockfire USB SkyShuttle Pro
+	535f  USB,real VibrationPad
+	5659  Rockfire USB SkyShuttle Vibra
+	565f  USB VibrationPad
+	6009  Revenger
+	600f  USB,GameBoard II
+	6258  USB, 4-axis, 6-button joystick w/view finder
+	6889  Windstorm Pro
+	688f  QF-688uv Windstorm Pro Joystick
+	7070  QF-707u Bazooka Joystick
+	a000  MaxFire G-08XU Gamepad
+	a015  4-Axis,16-Button with POV
+	a019  USB, Vibration ,4-axis, 8-button joystick w/view finder
+	a020  USB,4-Axis,10-Button with POV
+	a021  USB,4-Axis,12-Button with POV
+	a022  USB,4-Axis,14-Button with POV
+	a023  USB,4-Axis,16-Button with POV
+	a024  4axis,12button vibrition audio gamepad
+	a025  4axis,12button vibrition audio gamepad
+	a130  USB Wireless 2.4GHz Gamepad
+	a131  USB Wireless 2.4GHz Joystick
+	a132  USB Wireless 2.4GHz Wheelpad
+	a133  USB Wireless 2.4GHz Wheel&Gamepad
+	a202  ForceFeedbackWheel
+	a209  MetalStrike FF
+	b000  USB,4-Axis,12-Button with POV
+	b001  USB,4-Axis,12-Button with POV
+	b002  Vibration,12-Button USB Wheel
+	b005  USB,12-Button Wheel
+	b008  USB Wireless 2.4GHz Wheel
+	b009  USB,12-Button  Wheel
+	b00a  PSX/USB converter
+	b00b  PSX/USB converter
+	b00c  PSX/USB converter
+	b00d  PSX/USB converter
+	b00e  4-Axis,12-Button with POV
+	b00f  USB,5-Axis,10-Button with POV
+	b010  MetalStrike Pro
+	b012  Wireless MetalStrike
+	b013  USB,Wiress  2.4GHZ Joystick
+	b016  USB,5-Axis,10-Button with POV
+	b018  TW6 Wheel
+	ff60  USB Wireless VibrationPad
+0584  RATOC System, Inc.
+	0008  Fujifilm MemoryCard ReaderWriter
+	0220  U2SCX SCSI Converter
+	0304  U2SCX-LVD (SCSI Converter)
+	b000  REX-USB60
+	b020  REX-USB60F
+0585  FlashPoint Technology, Inc.
+	0001  Digital Camera
+	0002  Digital Camera
+	0003  Digital Camera
+	0004  Digital Camera
+	0005  Digital Camera
+	0006  Digital Camera
+	0007  Digital Camera
+	0008  Digital Camera
+	0009  Digital Camera
+	000a  Digital Camera
+	000b  Digital Camera
+	000c  Digital Camera
+	000d  Digital Camera
+	000e  Digital Camera
+	000f  Digital Camera
+0586  ZyXEL Communications Corp.
+	0025  802.11b/g/n USB Wireless Network Adapter
+	0100  omni.net
+	0102  omni.net II ISDN TA [HFC-S]
+	0110  omni.net Plus
+	1000  omni.net LCD Plus - ISDN TA
+	1500  Omni 56K Plus
+	2011  Scorpion-980N keyboard
+	3304  LAN Modem
+	3309  ADSL Modem Prestige 600 series
+	330a  ADSL Modem Interface
+	330e  USB Broadband ADSL Modem Rev 1.10
+	3400  ZyAIR B-220 IEEE 802.11b Adapter
+	3401  ZyAIR G-220 802.11bg
+	3402  ZyAIR G-220F 802.11bg
+	3403  AG-200 802.11abg Wireless Adapter [Atheros AR5523]
+	3407  G-200 v2 802.11bg
+	3408  G-260 802.11bg
+	3409  AG-225H 802.11bg
+	340a  M-202 802.11bg
+	340c  G-270S 802.11bg Wireless Adapter [Atheros AR5523]
+	340f  G-220 v2 802.11bg
+	3410  ZyAIR G-202 802.11bg
+	3412  802.11bg
+	3413  ZyAIR AG-225H v2 802.11bg
+	3415  G-210H 802.11g Wireless Adapter
+	3416  NWD-210N 802.11b/g/n-draft wireless adapter
+	3417  NWD271N 802.11n Wireless Adapter [Atheros AR9001U-(2)NG]
+	3418  NWD211AN 802.11abgn Wireless Adapter [Ralink RT2870]
+	3419  G-220 v3 802.11bg Wireless Adapter [ZyDAS ZD1211B]
+	341a  NWD-270N Wireless N-lite USB Adapter
+	341e  NWD2105 802.11bgn Wireless Adapter [Ralink RT3070]
+	341f  NWD2205 802.11n Wireless N Adapter [Realtek RTL8192CU]
+	3425  NWD6505 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7610U]
+	343e  N220 802.11bgn Wireless Adapter
+0587  America Kotobuki Electronics Industries, Inc.
+0588  Sapien Design
+0589  Victron
+058a  Nohau Corp.
+058b  Infineon Technologies
+	0015  Flash Loader utility
+	001c  Flash Drive
+	0041  Flash Loader utility
+058c  In Focus Systems
+	0007  Flash
+	0008  LP130
+	000a  LP530
+	0010  Projector
+	0011  Projector
+	0012  Projector
+	0013  Projector
+	0014  Projector
+	0015  Projector
+	0016  Projector
+	0017  Projector
+	0018  Projector
+	0019  Projector
+	001a  Projector
+	001b  Projector
+	001c  Projector
+	001d  Projector
+	001e  Projector
+	001f  Projector
+	ffe5  IN34 Projector
+	ffeb  Projector IN76
+058d  Micrel Semiconductor
+058e  Tripath Technology, Inc.
+058f  Alcor Micro Corp.
+	1234  Flash Drive
+	198b  Webcam (Gigatech P-09)
+	2412  SCard R/W CSR-145
+	2802  Monterey Keyboard
+	5492  Hub
+	6232  Hi-Speed 16-in-1 Flash Card Reader/Writer
+	6254  USB Hub
+	6331  SD/MMC/MS Card Reader
+	6332  Multi-Function Card Reader
+	6335  SD/MMC Card Reader
+	6360  Multimedia Card Reader
+	6361  Multimedia Card Reader
+	6362  Flash Card Reader/Writer
+	6364  AU6477 Card Reader Controller
+	6366  Multi Flash Reader
+	6377  AU6375 4-LUN card reader
+	6386  Memory Card
+	6387  Flash Drive
+	6390  USB 2.0-IDE bridge
+	6391  IDE Bridge
+	6998  AU6998 Flash Disk Controller
+	9213  MacAlly Kbd Hub
+	9215  AU9814 Hub
+	9254  Hub
+	9310  Mass Storage (UID4/5A & UID7A)
+	9320  Micro Storage Driver for Win98
+	9321  Micro Storage Driver for Win98
+	9330  SD Reader
+	9331  Micro Storage Driver for Win98
+	9340  Delkin eFilm Reader-32
+	9350  Delkin eFilm Reader-32
+	9360  8-in-1 Media Card Reader
+	9361  Multimedia Card Reader
+	9368  Multimedia Card Reader
+	9380  Flash Drive
+	9381  Flash Drive
+	9382  Acer/Sweex Flash drive
+	9384  qdi U2Disk T209M
+	9410  Keyboard
+	9472  Keyboard Hub
+	9510  ChunghwaTL USB02 Smartcard Reader
+	9520  Watchdata W 1981
+	9540  AU9540 Smartcard Reader
+	9720  USB-Serial Adapter
+	a014  Asus Integrated Webcam
+	b002  Acer Integrated Webcam
+0590  Omron Corp.
+	0004  Cable Modem
+	000b  MR56SVS
+	0028  HJ-720IT / HEM-7080IT-E / HEM-790IT
+	0051  FT232BM [E58CIFQ1 with FTDI USB2Serial Converter]
+0591  Questra Consulting
+0592  Powerware Corp.
+	0002  UPS (X-Slot)
+0593  Incite
+0594  Princeton Graphic Systems
+0595  Zoran Microelectronics, Ltd
+	1001  Digitrex DSC-1300/DSC-2100 (mass storage mode)
+	2002  DIGITAL STILL CAMERA 6M 4X
+	4343  Digital Camera EX-20 DSC
+0596  MicroTouch Systems, Inc.
+	0001  Touchscreen
+	0002  Touch Screen Controller
+	0500  PCT Multitouch HID Controller
+	0543  DELL XPS touchscreen
+0597  Trisignal Communications
+0598  Niigata Canotec Co., Inc.
+0599  Brilliance Semiconductor, Inc.
+059a  Spectrum Signal Processing, Inc.
+059b  Iomega Corp.
+	0001  Zip 100 (Type 1)
+	000b  Zip 100 (Type 2)
+	0021  Win98 Disk Controller
+	0030  Zip 250 (Ver 1)
+	0031  Zip 100 (Type 3)
+	0032  Zip 250 (Ver 2)
+	0034  Zip 100 Driver
+	0037  Zip 750 MB
+	0040  SCSI Bridge
+	0042  Rev 70 GB
+	0050  Zip CD 650 Writer
+	0053  CDRW55292EXT CD-RW External Drive
+	0056  External CD-RW Drive Enclosure
+	0057  Mass Storage Device
+	005d  Mass Storage Device
+	005f  CDRW64892EXT3-C CD-RW 52x24x52x External Drive
+	0060  PCMCIA PocketZip Dock
+	0061  Varo PocketZip 40 MP3 Player
+	006d  HipZip MP3 Player
+	0070  eGo Portable Hard Drive
+	007c  Ultra Max USB/1394
+	007d  HTC42606 0G9AT00 [Iomega HDD]
+	007e  Mini 256MB/512MB Flash Drive [IOM2D5]
+	00db  FotoShow Zip 250 Driver
+	0150  Mass Storage Device
+	015d  Super DVD Writer
+	0173  Hi-Speed USB-to-IDE Bridge Controller
+	0174  Hi-Speed USB-to-IDE Bridge Controller
+	0176  Hi-Speed USB-to-IDE Bridge Controller
+	0177  Hi-Speed USB-to-IDE Bridge Controller
+	0178  Hi-Speed USB-to-IDE Bridge Controller
+	0179  Hi-Speed USB-to-IDE Bridge Controller
+	017a  HDD
+	017b  HDD/1394A
+	017c  HDD/1394B
+	0251  Optical
+	0252  Optical
+	0275  ST332082 0A
+	0278  LDHD-UPS [Professional Desktop Hard Drive eSATA / USB2.0]
+	027a  LPHD250-U [Portable Hard Drive Silver Series 250 Go]
+	0470  Prestige Portable Hard Drive
+	047a  Select Portable Hard Drive
+	0571  Prestige Portable Hard Drive
+	0579  eGo Portable Hard Drive
+	1052  DVD+RW External Drive
+059c  A-Trend Technology Co., Ltd
+059d  Advanced Input Devices
+059e  Intelligent Instrumentation
+059f  LaCie, Ltd
+	0201  StudioDrive USB2
+	0202  StudioDrive USB2
+	0203  StudioDrive USB2
+	0211  PocketDrive
+	0212  PocketDrive
+	0213  PocketDrive USB2
+	0323  LaCie d2 Drive USB2
+	0421  Big Disk G465
+	0525  BigDisk Extreme 500
+	0641  Mobile Hard Drive
+	0828  d2 Quadra
+	0829  BigDisk Extreme+
+	1004  Little Disk 20 GB
+	100c  Rugged Triple Interface Mobile Hard Drive
+	1010  Desktop Hard Drive
+	1016  Desktop Hard Drive
+	1018  Desktop Hard Drive
+	1019  Desktop Hard Drive
+	1021  Little Disk
+	1027  iamaKey V2
+	102a  Rikiki Hard Drive
+	103d  D2
+	1049  rikiki Harddrive
+	1052  P'9220 Mobile Drive
+	1053  P'9230 2TB [Porsche Design Desktop Drive 2TB]
+	1061  Rugged USB3-FW
+	1064  Rugged 16 and 32 GB
+	106b  Rugged Mini HDD
+	106d  Porsche Design Mobile Drive
+	106e  Porsche Design Desktop Drive
+	1094  Rugged THB
+	1095  Rugged
+	a601  HardDrive
+	a602  CD R/W
+05a0  Vetronix Corp.
+05a1  USC Corp.
+05a2  Fuji Film Microdevices Co., Ltd
+05a3  ARC International
+	8388  Marvell 88W8388 802.11a/b/g WLAN
+	9230  Camera
+	9320  Camera
+	9331  Camera
+	9332  Camera - 1080p
+	9422  Camera
+	9520  Camera
+05a4  Ortek Technology, Inc.
+	1000  WKB-1000S Wireless Ergo Keyboard with Touchpad
+	2000  WKB-2000 Wireless Keyboard with Touchpad
+	9720  Keyboard Mouse
+	9722  Keyboard
+	9731  MCK-600W/MCK-800USB Keyboard
+	9783  Wireless Keypad
+	9837  Targus Number Keypad
+	9862  Targus Number Keypad (Composite Device)
+	9881  IR receiver [VRC-1100 Vista MCE Remote Control]
+05a5  Sampo Technology Corp.
+05a6  Cisco Systems, Inc.
+	0001  CVA124 Cable Voice Adapter (WDM)
+	0002  CVA122 Cable Voice Adapter (WDM)
+	0003  CVA124E Cable Voice Adapter (WDM)
+	0004  CVA122E Cable Voice Adapter (WDM)
+	0008  STA1520 Tuning Adapter
+	0a00  Integrated Management Controller Hub
+	0a01  Virtual Keyboard/Mouse
+	0a02  Virtual Mass Storage
+	0a03  Virtual Ethernet/RNDIS
+05a7  Bose Corp.
+	4000  Bluetooth Headset
+	4001  Bluetooth Headset in DFU mode
+	4002  Bluetooth Headset Series 2
+	4003  Bluetooth Headset Series 2 in DFU mode
+	400d  SoundLink Color II speaker in DFU mode
+	40fe  SoundLink Color II speaker
+	bc50  SoundLink Wireless Mobile speaker
+	bc51  SoundLink Wireless Mobile speaker in DFU mode
+05a8  Spacetec IMC Corp.
+05a9  OmniVision Technologies, Inc.
+	0511  OV511 Webcam
+	0518  OV518 Webcam
+	0519  OV519 Microphone
+	1550  VEHO Filmscanner
+	2640  OV2640 Webcam
+	2642  Integrated Webcam for Dell XPS 2010
+	2643  Monitor Webcam
+	264b  Monitor Webcam
+	2800  SuperCAM
+	4519  Webcam Classic
+	7670  OV7670 Webcam
+	8065  GAIA Sensor FPGA Demo Board
+	8519  OV519 Webcam
+	a511  OV511+ Webcam
+	a518  D-Link DSB-C310 Webcam
+05aa  Utilux South China, Ltd
+05ab  In-System Design
+	0002  Parallel Port
+	0030  Storage Adapter V2 (TPP)
+	0031  ATA Bridge
+	0060  USB 2.0 ATA Bridge
+	0061  Storage Adapter V3 (TPP-I)
+	0101  Storage Adapter (TPP)
+	0130  Compact Flash and Microdrive Reader (TPP)
+	0200  USS725 ATA Bridge
+	0201  Storage Adapter (TPP)
+	0202  ATA Bridge
+	0300  Portable Hard Drive (TPP)
+	0301  Portable Hard Drive V2
+	0350  Portable Hard Drive (TPP)
+	0351  Portable Hard Drive V2
+	081a  ATA Bridge
+	0cda  ATA Bridge for CD-R/RW
+	1001  BAYI Printer Class Support
+	5700  Storage Adapter V2 (TPP)
+	5701  USB Storage Adapter V2
+	5901  Smart Board (TPP)
+	5a01  ATI Storage Adapter (TPP)
+	5d01  DataBook Adapter (TPP)
+05ac  Apple, Inc.
+	0201  USB Keyboard [Alps or Logitech, M2452]
+	0202  Keyboard [ALPS]
+	0205  Extended Keyboard [Mitsumi]
+	0206  Extended Keyboard [Mitsumi]
+	020b  Pro Keyboard [Mitsumi, A1048/US layout]
+	020c  Extended Keyboard [Mitsumi]
+	020d  Pro Keyboard [Mitsumi, A1048/JIS layout]
+	020e  Internal Keyboard/Trackpad (ANSI)
+	020f  Internal Keyboard/Trackpad (ISO)
+	0214  Internal Keyboard/Trackpad (ANSI)
+	0215  Internal Keyboard/Trackpad (ISO)
+	0216  Internal Keyboard/Trackpad (JIS)
+	0217  Internal Keyboard/Trackpad (ANSI)
+	0218  Internal Keyboard/Trackpad (ISO)
+	0219  Internal Keyboard/Trackpad (JIS)
+	021a  Internal Keyboard/Trackpad (ANSI)
+	021b  Internal Keyboard/Trackpad (ISO)
+	021c  Internal Keyboard/Trackpad (JIS)
+	021d  Aluminum Mini Keyboard (ANSI)
+	021e  Aluminum Mini Keyboard (ISO)
+	021f  Aluminum Mini Keyboard (JIS)
+	0220  Aluminum Keyboard (ANSI)
+	0221  Aluminum Keyboard (ISO)
+	0222  Aluminum Keyboard (JIS)
+	0223  Internal Keyboard/Trackpad (ANSI)
+	0224  Internal Keyboard/Trackpad (ISO)
+	0225  Internal Keyboard/Trackpad (JIS)
+	0229  Internal Keyboard/Trackpad (ANSI)
+	022a  Internal Keyboard/Trackpad (MacBook Pro) (ISO)
+	022b  Internal Keyboard/Trackpad (MacBook Pro) (JIS)
+	0230  Internal Keyboard/Trackpad (MacBook Pro 4,1) (ANSI)
+	0231  Internal Keyboard/Trackpad (MacBook Pro 4,1) (ISO)
+	0232  Internal Keyboard/Trackpad (MacBook Pro 4,1) (JIS)
+	0236  Internal Keyboard/Trackpad (ANSI)
+	0237  Internal Keyboard/Trackpad (ISO)
+	0238  Internal Keyboard/Trackpad (JIS)
+	023f  Internal Keyboard/Trackpad (ANSI)
+	0240  Internal Keyboard/Trackpad (ISO)
+	0241  Internal Keyboard/Trackpad (JIS)
+	0242  Internal Keyboard/Trackpad (ANSI)
+	0243  Internal Keyboard/Trackpad (ISO)
+	0244  Internal Keyboard/Trackpad (JIS)
+	0245  Internal Keyboard/Trackpad (ANSI)
+	0246  Internal Keyboard/Trackpad (ISO)
+	0247  Internal Keyboard/Trackpad (JIS)
+	024a  Internal Keyboard/Trackpad (MacBook Air) (ISO)
+	024d  Internal Keyboard/Trackpad (MacBook Air) (ISO)
+	024f  Aluminium Keyboard (ANSI)
+	0250  Aluminium Keyboard (ISO)
+	0252  Internal Keyboard/Trackpad (ANSI)
+	0253  Internal Keyboard/Trackpad (ISO)
+	0254  Internal Keyboard/Trackpad (JIS)
+	0259  Internal Keyboard/Trackpad
+	025a  Internal Keyboard/Trackpad
+	0263  Apple Internal Keyboard / Trackpad (MacBook Retina)
+	0267  Magic Keyboard A1644
+	0269  Magic Mouse 2 (Lightning connector)
+	0273  Internal Keyboard/Trackpad (ISO)
+	0301  USB Mouse [Mitsumi, M4848]
+	0302  Optical Mouse [Fujitsu]
+	0304  Mighty Mouse [Mitsumi, M1152]
+	0306  Optical USB Mouse [Fujitsu]
+	030a  Internal Trackpad
+	030b  Internal Trackpad
+	030d  Magic Mouse
+	030e  MC380Z/A [Magic Trackpad]
+	1000  Bluetooth HCI MacBookPro (HID mode)
+	1001  Keyboard Hub [ALPS]
+	1002  Extended Keyboard Hub [Mitsumi]
+	1003  Hub in Pro Keyboard [Mitsumi, A1048]
+	1006  Hub in Aluminum Keyboard
+	1008  Mini DisplayPort to Dual-Link DVI Adapter
+	1101  Speakers
+	1105  Audio in LED Cinema Display
+	1107  Thunderbolt Display Audio
+	1112  FaceTime HD Camera (Display)
+	1201  3G iPod
+	1202  iPod 2G
+	1203  iPod 4.Gen Grayscale 40G
+	1204  iPod [Photo]
+	1205  iPod Mini 1.Gen/2.Gen
+	1206  iPod '06'
+	1207  iPod '07'
+	1208  iPod '08'
+	1209  iPod Video
+	120a  iPod Nano
+	1223  iPod Classic/Nano 3.Gen (DFU mode)
+	1224  iPod Nano 3.Gen (DFU mode)
+	1225  iPod Nano 4.Gen (DFU mode)
+	1227  Mobile Device (DFU Mode)
+	1231  iPod Nano 5.Gen (DFU mode)
+	1240  iPod Nano 2.Gen (DFU mode)
+	1242  iPod Nano 3.Gen (WTF mode)
+	1243  iPod Nano 4.Gen (WTF mode)
+	1245  iPod Classic 3.Gen (WTF mode)
+	1246  iPod Nano 5.Gen (WTF mode)
+	1255  iPod Nano 4.Gen (DFU mode)
+	1260  iPod Nano 2.Gen
+	1261  iPod Classic
+	1262  iPod Nano 3.Gen
+	1263  iPod Nano 4.Gen
+	1265  iPod Nano 5.Gen
+	1266  iPod Nano 6.Gen
+	1267  iPod Nano 7.Gen
+	1281  Apple Mobile Device [Recovery Mode]
+	1290  iPhone
+	1291  iPod Touch 1.Gen
+	1292  iPhone 3G
+	1293  iPod Touch 2.Gen
+	1294  iPhone 3GS
+	1296  iPod Touch 3.Gen (8GB)
+	1297  iPhone 4
+	1299  iPod Touch 3.Gen
+	129a  iPad
+	129c  iPhone 4(CDMA)
+	129e  iPod Touch 4.Gen
+	129f  iPad 2
+	12a0  iPhone 4S
+	12a2  iPad 2 (3G; 64GB)
+	12a3  iPad 2 (CDMA)
+	12a4  iPad 3 (wifi)
+	12a5  iPad 3 (CDMA)
+	12a6  iPad 3 (3G, 16 GB)
+	12a8  iPhone 5/5C/5S/6/SE
+	12a9  iPad 2
+	12aa  iPod Touch 5.Gen [A1421]
+	12ab  iPad 4/Mini1
+	1300  iPod Shuffle
+	1301  iPod Shuffle 2.Gen
+	1302  iPod Shuffle 3.Gen
+	1303  iPod Shuffle 4.Gen
+	1392  Apple Watch charger
+	1393  AirPods case
+	1395  Smart Battery Case [iPhone 6]
+	1398  Smart Battery Case
+	1401  Modem
+	1402  Ethernet Adapter [A1277]
+	1500  SuperDrive [A1379]
+	8005  OHCI Root Hub Simulation
+	8006  EHCI Root Hub Simulation
+	8007  XHCI Root Hub USB 2.0 Simulation
+	8202  HCF V.90 Data/Fax Modem
+	8203  Bluetooth HCI
+	8204  Built-in Bluetooth 2.0+EDR HCI
+	8205  Bluetooth HCI
+	8206  Bluetooth HCI
+	8207  Built-in Bluetooth
+	820a  Bluetooth HID Keyboard
+	820b  Bluetooth HID Mouse
+	820f  Bluetooth HCI
+	8213  Bluetooth Host Controller
+	8215  Built-in Bluetooth 2.0+EDR HCI
+	8216  Bluetooth USB Host Controller
+	8217  Bluetooth USB Host Controller
+	8218  Bluetooth Host Controller
+	821a  Bluetooth Host Controller
+	821f  Built-in Bluetooth 2.0+EDR HCI
+	8233  iBridge
+	8240  Built-in IR Receiver
+	8241  Built-in IR Receiver
+	8242  Built-in IR Receiver
+	8281  Bluetooth Host Controller
+	8286  Bluetooth Host Controller
+	8289  Bluetooth Host Controller
+	828c  Bluetooth Host Controller
+	8290  Bluetooth Host Controller
+	8300  Built-in iSight (no firmware loaded)
+	8403  Internal Memory Card Reader
+	8404  Internal Memory Card Reader
+	8406  Internal Memory Card Reader
+	8501  Built-in iSight [Micron]
+	8502  Built-in iSight
+	8505  Built-in iSight
+	8507  Built-in iSight
+	8508  iSight in LED Cinema Display
+	8509  FaceTime HD Camera
+	850a  FaceTime Camera
+	8510  FaceTime HD Camera (Built-in)
+	8511  FaceTime HD Camera (Built-in)
+	8600  iBridge
+	911c  Hub in A1082 [Cinema HD Display 23"]
+	9127  Hub in Thunderbolt Display
+	912f  Hub in 30" Cinema Display
+	9210  Studio Display 21"
+	9215  Studio Display 15"
+	9217  Studio Display 17"
+	9218  Cinema Display 23"
+	9219  Cinema Display 20"
+	921c  A1082 [Cinema HD Display 23"]
+	921e  Cinema Display 24"
+	9221  30" Cinema Display
+	9226  LED Cinema Display
+	9227  Thunderbolt Display
+	9232  Cinema HD Display 30"
+	ffff  Bluetooth in DFU mode - Driver
+05ad  Y.C. Cable U.S.A., Inc.
+05ae  Synopsys, Inc.
+05af  Jing-Mold Enterprise Co., Ltd
+	0806  HP SK806A Keyboard
+	0809  Wireless Keyboard and Mouse
+	0821  IDE to
+	3062  Cordless Keyboard
+	9167  KB 9151B - 678
+	9267  KB 9251B - 678 Mouse
+05b0  Fountain Technologies, Inc.
+05b1  First International Computer, Inc.
+	1389  Bluetooth Wireless Adapter
+05b4  LG Semicon Co., Ltd
+	4857  M-Any DAH-210
+	6001  HYUNDAI GDS30C6001 SSFDC / MMC I/F Controller
+05b5  Dialogic Corp.
+05b6  Proxima Corp.
+05b7  Medianix Semiconductor, Inc.
+05b8  SYSGRATION
+	3002  Scroll Mouse
+	3126  APT-905 Wireless presenter
+	3223  ISY Wireless Presenter
+05b9  Philips Research Laboratories
+05ba  DigitalPersona, Inc.
+	0007  Fingerprint Reader
+	0008  Fingerprint Reader
+	000a  Fingerprint Reader
+05bb  Grey Cell Systems
+05bc  3G Green Green Globe Co., Ltd
+	0004  Trackball
+05bd  RAFI GmbH & Co. KG
+05be  Tyco Electronics (Raychem)
+05bf  S & S Research
+05c0  Keil Software
+05c1  Kawasaki Microelectronics, Inc.
+05c2  Media Phonics (Suisse) S.A.
+05c5  Digi International, Inc.
+	0002  AccelePort USB 2
+	0004  AccelePort USB 4
+	0008  AccelePort USB 8
+05c6  Qualcomm, Inc.
+	0114  Select RW-200 CDMA Wireless Modem
+	0a02  Jolla Device Developer Mode
+	0a07  Jolla Device MTP
+	0afe  Jolla Device Charging Only
+	1000  Mass Storage Device
+	3100  CDMA Wireless Modem/Phone
+	3196  CDMA Wireless Modem
+	3197  CDMA Wireless Modem/Phone
+	6000  Siemens SG75
+	6503  AnyData APE-540H
+	6613  Onda H600/N501HS ZTE MF330
+	6764  A0001 Phone [OnePlus One]
+	9000  SIMCom SIM5218 modem
+	9001  Gobi Wireless Modem
+	9002  Gobi Wireless Modem
+	9003  Quectel UC20
+	9008  Gobi Wireless Modem (QDL mode)
+	9018  Qualcomm HSUSB Device
+	9025  HSUSB Device
+	9090  Quectel UC15
+	9091  Intex Aqua Fish & Jolla C Diagnostic Mode
+	9092  Nokia 8110 4G
+	90ba  Audio 1.0 device
+	90bb  Snapdragon interface (MIDI + ADB)
+	90dc  Fairphone 2 (Charging & ADB)
+	9201  Gobi Wireless Modem (QDL mode)
+	9202  Gobi Wireless Modem
+	9203  Gobi Wireless Modem
+	9205  Gobi 2000
+	9211  Acer Gobi Wireless Modem (QDL mode)
+	9212  Acer Gobi Wireless Modem
+	9214  Acer Gobi 2000 Wireless Modem (QDL mode)
+	9215  Quectel EC20 LTE modem / Acer Gobi 2000 Wireless Modem
+	9221  Gobi Wireless Modem (QDL mode)
+	9222  Gobi Wireless Modem
+	9224  Sony Gobi 2000 Wireless Modem (QDL mode)
+	9225  Sony Gobi 2000 Wireless Modem
+	9231  Gobi Wireless Modem (QDL mode)
+	9234  Top Global Gobi 2000 Wireless Modem (QDL mode)
+	9235  Top Global Gobi 2000 Wireless Modem
+	9244  Samsung Gobi 2000 Wireless Modem (QDL mode)
+	9245  Samsung Gobi 2000 Wireless Modem
+	9264  Asus Gobi 2000 Wireless Modem (QDL mode)
+	9265  Asus Gobi 2000 Wireless Modem
+	9274  iRex Technologies Gobi 2000 Wireless Modem (QDL mode)
+	9275  iRex Technologies Gobi 2000 Wireless Modem
+	f000  TA-1004 [Nokia 8]
+	f003  Nokia 8110 4G
+05c7  Qtronix Corp.
+	0113  PC Line Mouse
+	1001  Lynx Mouse
+	2001  Keyboard
+	2011  SCorpius Keyboard
+	6001  Ten-Keypad
+05c8  Cheng Uei Precision Industry Co., Ltd (Foxlink)
+	0103  FO13FF-65 PC-CAM
+	010b  Webcam (UVC)
+	021a  HP Webcam
+	0233  HP Webcam
+	0318  Webcam
+	0361  SunplusIT INC. HP Truevision HD Webcam
+	036e  Webcam
+	0374  HP EliteBook integrated HD Webcam
+	038e  HP Wide Vision HD integrated webcam
+	03a1  XiaoMi Webcam
+	03b1  Webcam
+	03bc  HP Wide Vision HD Integrated Webcam
+	03cb  HP Wide Vision HD Integrated Webcam
+	0403  Webcam
+	041b  HP 2.0MP High Definition Webcam
+05c9  Semtech Corp.
+05ca  Ricoh Co., Ltd
+	0101  RDC-5300 Camera
+	0325  Caplio GX (ptp)
+	032d  Caplio GX 8 (ptp)
+	032f  Caplio R3 (ptp)
+	03a1  IS200e
+	0403  Printing Support
+	0405  Type 101
+	0406  Type 102
+	0437  Aficio SP 3510SF
+	044e  SP C250SF (multifunction device: printer, scanner, fax)
+	1803  V5 camera [R5U870]
+	1810  Pavilion Webcam [R5U870]
+	1812  Pavilion Webcam
+	1814  HD Webcam
+	1815  Dell Laptop Integrated Webcam
+	1820  Integrated Webcam
+	1830  Visual Communication Camera VGP-VCC2 [R5U870]
+	1832  Visual Communication Camera VGP-VCC3 [R5U870]
+	1833  Visual Communication Camera VGP-VCC2 [R5U870]
+	1834  Visual Communication Camera VGP-VCC2 [R5U870]
+	1835  Visual Communication Camera VGP-VCC5 [R5U870]
+	1836  Visual Communication Camera VGP-VCC4 [R5U870]
+	1837  Visual Communication Camera VGP-VCC4 [R5U870]
+	1839  Visual Communication Camera VGP-VCC6 [R5U870]
+	183a  Visual Communication Camera VGP-VCC7 [R5U870]
+	183b  Visual Communication Camera VGP-VCC8 [R5U870]
+	183d  Sony Vaio Integrated Webcam
+	183e  Visual Communication Camera VGP-VCC9 [R5U870]
+	183f  Sony Visual Communication Camera Integrated Webcam
+	1841  Fujitsu F01/ Lifebook U810 [R5U870]
+	1870  Webcam 1000
+	1880  R5U880
+	18b0  Sony Vaio Integrated Webcam
+	18b1  Sony Vaio Integrated Webcam
+	18b3  Sony Vaio Integrated Webcam
+	18b5  Sony Vaio Integrated Webcam
+	2201  RDC-7 Camera
+	2202  Caplio RR30
+	2203  Caplio 300G
+	2204  Caplio G3
+	2205  Caplio RR30 / Medion MD 6126 Camera
+	2206  Konica DG-3Z
+	2207  Caplio Pro G3
+	2208  Caplio G4
+	2209  Caplio 400G wide
+	220a  KONICA MINOLTA DG-4Wide
+	220b  Caplio RX
+	220c  Caplio GX
+	220d  Caplio R1/RZ1
+	220e  Sea & Sea 5000G
+	220f  Rollei dr5 / Rollei dr5 (PTP mode)
+	2211  Caplio R1S
+	2212  Caplio R1v Camera
+	2213  Caplio R2
+	2214  Caplio GX 8
+	2215  DSC 725
+	2216  Caplio R3
+	2222  RDC-i500
+05cb  PowerVision Technologies, Inc.
+	1483  PV8630 interface (scanners, webcams)
+05cc  ELSA AG
+	2100  MicroLink ISDN Office
+	2219  MicroLink ISDN
+	2265  MicroLink 56k
+	2267  MicroLink 56k (V.250)
+	2280  MicroLink 56k Fun
+	3000  Micolink USB2Ethernet [pegasus]
+	3100  AirLancer USB-11
+	3363  MicroLink ADSL Fun
+05cd  Silicom, Ltd
+05ce  sci-worx GmbH
+05cf  Sung Forn Co., Ltd
+05d0  GE Medical Systems Lunar
+05d1  Brainboxes, Ltd
+	0003  Bluetooth Adapter BL-554
+05d2  Wave Systems Corp.
+05d3  Tohoku Ricoh Co., Ltd
+05d5  Super Gate Technology Co., Ltd
+05d6  Philips Semiconductors, CICT
+05d7  Thomas & Betts Corp.
+	0099  10Mbps Ethernet [klsi]
+05d8  Ultima Electronics Corp.
+	4001  Artec Ultima 2000
+	4002  Artec Ultima 2000 (GT6801 based)/Lifetec LT9385/ScanMagic 1200 UB Plus Scanner
+	4003  Artec E+ 48U
+	4004  Artec E+ Pro
+	4005  MEM48U
+	4006  TRUST EASY WEBSCAN 19200
+	4007  TRUST 240H EASY WEBSCAN GOLD
+	4008  Trust Easy Webscan 19200
+	4009  Umax Astraslim
+	4013  IT Scan 1200
+	8105  Artec T1 USB TVBOX (cold)
+	8106  Artec T1 USB TVBOX (warm)
+	8107  Artec T1 USB TVBOX with AN2235 (cold)
+	8108  Artec T1 USB TVBOX with AN2235 (warm)
+	8109  Artec T1 USB2.0 TVBOX (cold
+05d9  Axiohm Transaction Solutions
+	a225  A225 Printer
+	a758  A758 Printer
+	a794  A794 Printer
+05da  Microtek International, Inc.
+	0091  ScanMaker X6u
+	0093  ScanMaker V6USL
+	0094  Phantom 336CX/C3
+	0099  ScanMaker X6/X6U
+	009a  Phantom C6
+	00a0  Phantom 336CX/C3 (#2)
+	00a3  ScanMaker V6USL
+	00ac  ScanMaker V6UL
+	00b6  ScanMaker V6UPL
+	00ef  ScanMaker V6UPL
+	1006  Jenoptik JD350 entrance
+	1011  NHJ Che-ez! Kiss Digital Camera
+	1018  Digital Dream Enigma 1.3
+	1020  Digital Dream l'espion xtra
+	1025  Take-it Still Camera Device
+	1026  Take-it
+	1043  Take-It 1300 DSC Bulk Driver
+	1045  Take-it D1
+	1047  Take-it Camera Composite Device
+	1048  Take-it Q3
+	1049  3M Still Camera Device
+	1051  Camcorder Series
+	1052  Mass Storage Device
+	1053  Take-it DV Composite Device
+	1054  Mass Storage Device
+	1055  Digital Camera Series(536)
+	1056  Mass Storage Device
+	1057  Take-it DSC Camera Device(536)
+	1058  Mass Storage Device
+	1059  Camcorder DSC Series
+	1060  Microtek Take-it MV500
+	2007  ArtixScan DI 1210
+	200c  1394_USB2 Scanner
+	200e  ArtixScan DI 810
+	2017  UF ICE Scanner
+	201c  4800 Scanner
+	201d  ArtixScan DI 1610
+	201f  4800 Scanner-ICE
+	202e  ArtixScan DI 2020
+	208b  ScanMaker 6800
+	208f  ArtixScan DI 2010
+	209e  ScanMaker 4700LP
+	20a7  ScanMaker 5600
+	20b0  ScanMaker X12USL
+	20b1  ScanMaker 8700
+	20b4  ScanMaker 4700
+	20bd  ScanMaker 5700
+	20c9  ScanMaker 6700
+	20d2  Microtek ArtixScan 1800f
+	20d6  PS4000
+	20de  ScanMaker 9800XL
+	20e0  ScanMaker 9700XL
+	20ed  ScanMaker 4700
+	20ee  Micortek ScanMaker X12USL
+	2838  RT2832U
+	3008  Scanner
+	300a  4800 ICE Scanner
+	300b  4800 Scanner
+	300f  MiniScan C5
+	3020  4800dpi Scanner
+	3021  1200dpi Scanner
+	3022  Scanner 4800dpi
+	3023  USB1200II Scanner
+	3025  ScanMaker S460
+	30c1  USB600 Scanner
+	30ce  ScanMaker 3800
+	30cf  ScanMaker 4800
+	30d4  USB1200 Scanner
+	30d8  Scanner
+	30d9  USB2400 Scanner
+	30e4  ScanMaker 4100
+	30e5  USB3200 Scanner
+	30e6  ScanMaker i320
+	40b3  ScanMaker 3600
+	40b8  ScanMaker 3700
+	40c7  ScanMaker 4600
+	40ca  ScanMaker 3600
+	40cb  ScanMaker 3700
+	40dd  ScanMaker 3750i
+	40ff  ScanMaker 3600
+	5003  Goya
+	5013  3200 Scanner
+	6072  XT-3500 A4 HD Scanner
+	80a3  ScanMaker V6USL (#2)
+	80ac  ScanMaker V6UL/SpicyU
+05db  Sun Corp. (Suntac?)
+	0003  SUNTAC U-Cable type D2
+	0005  SUNTAC U-Cable type P1
+	0009  SUNTAC Slipper U
+	000a  SUNTAC Ir-Trinity
+	000b  SUNTAC U-Cable type A3
+	0011  SUNTAC U-Cable type A4
+05dc  Lexar Media, Inc.
+	0001  jumpSHOT CompactFlash Reader
+	0002  JumpShot
+	0003  JumpShot
+	0080  Jumpdrive Secure 64MB
+	0081  RBC Compact Flash Drive
+	00a7  JumpDrive Impact
+	0100  JumpDrive PRO
+	0200  JumpDrive 2.0 Pro
+	0300  Jumpdrive Geysr
+	0301  JumpDrive Classic
+	0302  JD Micro
+	0303  JD Micro Pro
+	0304  JD Secure II
+	0310  JumpDrive
+	0311  JumpDrive Classic
+	0312  JD Micro
+	0313  JD Micro Pro
+	0320  JumpDrive
+	0321  JD Micro
+	0322  JD Micro Pro
+	0323  UFC
+	0330  JumpDrive Expression
+	0340  JumpDrive TAD
+	0350  Express Card
+	0400  UFDC
+	0401  UFDC
+	0403  Locked B Device
+	0405  Locked C Device
+	0407  Locked D Device
+	0409  Locked E Device
+	040b  Locked F Device
+	040d  Locked G Device
+	040f  Locked H Device
+	0410  JumpDrive
+	0411  JumpDrive
+	0413  Locked J Device
+	0415  Locked K Device
+	0417  Locked L Device
+	0419  Locked M Device
+	041b  Locked N Device
+	041d  Locked O Device
+	041f  Locked P Device
+	0420  JumpDrive
+	0421  JumpDrive
+	0423  Locked R Device
+	0425  Locked S Device
+	0427  Locked T Device
+	0429  Locked U Device
+	042b  Locked V Device
+	042d  Locked W Device
+	042f  Locked X Device
+	0431  Locked Y Device
+	0433  Locked Z Device
+	4d02  MP3 Player
+	4d12  MP3 Player
+	4d30  MP3 Player
+	a201  JumpDrive S70 4GB
+	a209  JumpDrive S70
+	a300  JumpDrive2
+	a400  JumpDrive trade; Pro 40-501
+	a410  JumpDrive 128MB/256MB
+	a411  JumpDrive Traveler
+	a420  JumpDrive Pro
+	a421  JumpDrive Pro II
+	a422  JumpDrive Micro Pro
+	a430  JumpDrive Secure
+	a431  JumpDrive Secure II
+	a432  JumpDrive Classic
+	a440  JumpDrive Lightning
+	a450  JumpDrive TouchGuard
+	a460  JD Mercury
+	a501  JumpDrive Classic
+	a510  JumpDrive Sport
+	a530  JumpDrive Expression
+	a531  JumpDrive Secure II
+	a560  JumpDrive FireFly
+	a701  JumpDrive FireFly
+	a731  JumpDrive FireFly
+	a762  JumpDrive FireFly
+	a768  JumpDrive Retrax
+	a790  JumpDrive 2GB
+	a811  16GB Gizmo!
+	a813  16gB flash thumb drive
+	a815  JumpDrive V10
+	a81d  LJDTT16G [JumpDrive 16GB]
+	a833  JumpDrive S23 64GB
+	a838  JumpDrive Tough
+	b002  USB CF Reader
+	b018  Multi-Card Reader
+	b047  SDHC Reader [RW047-7000]
+	b051  microSD RDR UHS-I Card Reader [LRWM03U-7000]
+	ba02  Workflow CFR1
+	ba0a  Workflow DD512
+	c753  JumpDrive TwistTurn
+	c75c  JumpDrive V10
+05dd  Delta Electronics, Inc.
+	a011  HID UPS Battery
+	ff31  AWU-120
+	ff32  FriendlyNET AeroLAN AL2011
+	ff35  PCW 100 - Wireless 802.11b Adapter
+	ff91  2Wire PC Port Phoneline 10Mbps Adapter
+05df  Silicon Vision, Inc.
+05e0  Symbol Technologies
+	0700  Bar Code Scanner (CS1504)
+	0800  Spectrum24 Wireless LAN Adapter
+	1200  Bar Code Scanner
+	1701  Bar Code Scanner (CDC)
+	1900  SNAPI Imaging Device
+	1a00  CS4070 Barcode Scanner
+	2000  MC3090 Rugged Mobile Computer
+	200d  MC70 Rugged Mobile Computer
+05e1  Syntek Semiconductor Co., Ltd
+	0100  802.11g + Bluetooth Wireless Adapter
+	0408  STK1160 Video Capture Device
+	0500  DC-112X Webcam
+	0501  DC-1125 Webcam
+	0890  STK011 Camera
+	0892  STK013 Camera
+	0895  STK016 Camera
+	0896  STK017 Camera
+	2010  ARCTIC Sound P261 Headphones
+05e2  ElecVision, Inc.
+05e3  Genesys Logic, Inc.
+	000a  Keyboard with PS/2 Port
+	000b  Mouse
+	0100  Nintendo Game Boy Advance SP
+	0120  Pacific Image Electronics PrimeFilm 1800u slide/negative scanner
+	0131  CF/SM Reader/Writer
+	0142  Multiple Slides Scanner-3600
+	0143  Multiple Frames Film Scanner-36series
+	0145  Reflecta CrystalScan 7200 Photo-Scanner
+	0180  Plustek Scanner
+	0182  Wize Media 1000
+	0189  ScanJet 4600 series
+	018a  Xerox 6400
+	0300  GLUSB98PT Parallel Port
+	0301  USB2LPT Cable Release2
+	0406  Hub
+	0501  GL620USB Host-Host interface
+	0502  GL620USB-A GeneLink USB-USB Bridge
+	0503  Webcam
+	0504  HID Keyboard Filter
+	0510  Camera
+	0604  USB 1.1 Hub
+	0605  Hub
+	0606  USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub
+	0607  Logitech G110 Hub
+	0608  Hub
+	0610  Hub
+	0612  Hub
+	0616  hub
+	0618  Hub
+	0620  GL3523 Hub
+	0626  Hub
+	0660  USB 2.0 Hub
+	0700  SIIG US2256 CompactFlash Card Reader
+	0701  USB 2.0 IDE Adapter
+	0702  USB 2.0 IDE Adapter [GL811E]
+	0703  Card Reader
+	0704  Card Reader
+	0705  Card Reader
+	0706  Card Reader
+	0707  Card Reader
+	0708  Card Reader
+	0709  Card Reader
+	070a  Pen Flash
+	070b  DMHS1B Rev 3 DFU Adapter
+	070e  USB 2.0 Card Reader
+	070f  Pen Flash
+	0710  USB 2.0 33-in-1 Card Reader
+	0711  Card Reader
+	0712  Delkin Mass Storage Device
+	0715  USB 2.0 microSD Reader
+	0716  Multislot Card Reader/Writer
+	0717  All-in-1 Card Reader
+	0718  IDE/SATA Adapter
+	0719  SATA adapter
+	0722  SD/MMC card reader
+	0723  GL827L SD/MMC/MS Flash Card Reader
+	0726  SD Card Reader
+	0727  microSD Reader/Writer
+	0731  GL3310 SATA 3Gb/s Bridge Controller
+	0732  All-in-One Cardreader
+	0736  Colour arc SD Card Reader [PISEN]
+	0738  Card reader
+	0741  microSD Card Reader
+	0743  SDXC and microSDXC CardReader
+	0745  Logilink CR0012
+	0748  All-in-One Cardreader
+	0749  SD Card Reader and Writer
+	0751  microSD Card Reader
+	0752  micros Reader
+	0760  USB 2.0 Card Reader/Writer
+	0761  Genesys Mass Storage Device
+	0780  USBFS DFU Adapter
+	07a0  Pen Flash
+	0880  Wasp (SL-6612)
+	0927  Card Reader
+	1205  Afilias Optical Mouse H3003 / Trust Optical USB MultiColour Mouse MI-2330
+	a700  Pen Flash
+	f102  VX7012 TV Box
+	f103  VX7012 TV Box
+	f104  VX7012 TV Box
+	f12a  Digital Microscope
+	fd21  3M TL20 Temperature Logger
+	fe00  Razer Mouse
+05e4  Red Wing Corp.
+05e5  Fuji Electric Co., Ltd
+05e6  Keithley Instruments
+05e8  ICC, Inc.
+05e9  Kawasaki LSI
+	0008  KL5KUSB101B Ethernet [klsi]
+	0009  Sony 10Mbps Ethernet [pegasus]
+	000c  USB-to-RS-232
+	000d  USB-to-RS-232
+	0014  RS-232 J104
+	0040  Ethernet Adapter
+	2008  Ethernet Adapter
+05eb  FFC, Ltd
+05ec  COM21, Inc.
+05ee  Cytechinfo Inc.
+05ef  AVB, Inc. [anko?]
+	020a  Top Shot Pegasus Joystick
+	8884  Mag Turbo Force Wheel
+	8888  Top Shot Force Feedback Racing Wheel
+05f0  Canopus Co., Ltd
+	0101  DA-Port DAC
+05f1  Compass Communications
+05f2  Dexin Corp., Ltd
+	0010  AQ Mouse
+05f3  PI Engineering, Inc.
+	0007  Kinesis Advantage PRO MPC/USB Keyboard
+	0081  Kinesis Integrated Hub
+	00ff  VEC Footpedal
+	0203  Y-mouse Keyboard & Mouse Adapter
+	020b  PS2 Adapter
+	0232  X-Keys Switch Interface, Programming Mode
+	0261  X-Keys Switch Interface, SPLAT Mode
+	0264  X-Keys Switch Interface, Composite Mode
+05f5  Unixtar Technology, Inc.
+05f6  AOC International
+05f7  RFC Distribution(s) PTE, Ltd
+05f9  PSC Scanning, Inc.
+	1104  Magellan 2200VS
+	1206  Gryphon series (OEM mode)
+	120c  Gryphon GD4430-BK
+	2202  Point of Sale Handheld Scanner
+	2206  Gryphon series (keyboard emulation mode)
+	220c  Datalogic Gryphon GD4430
+	2601  Datalogic Magellan 1000i Barcode Scanner
+	2602  Datalogic Magellan 1100i Barcode Scanner
+	4204  Gryphon series (RS-232 emulation mode)
+	5204  Datalogic Gryphon GFS4170 (config mode)
+05fa  Siemens Telecommunications Systems, Ltd
+	3301  Keyboard with PS/2 Mouse Port
+	3302  Keyboard
+	3303  Keyboard with PS/2 Mouse Port
+05fc  Harman
+	0001  Soundcraft Si Multi Digital Card
+	0010  Soundcraft Si MADI combo card
+	0021  Soundcraft Signature 12 MTK
+	7849  Harman/Kardon SoundSticks
+05fd  InterAct, Inc.
+	0239  SV-239 HammerHead Digital
+	0251  Raider Pro
+	0253  ProPad 8 Digital
+	0286  SV-286 Cyclone Digital
+	1007  Mad Catz Controller
+	107a  PowerPad Pro X-Box pad
+	262a  3dfx HammerHead FX
+	262f  HammerHead Fx
+	daae  Game Shark
+	dbae  Datel XBoxMC
+05fe  Chic Technology Corp.
+	0001  Mouse
+	0003  Cypress USB Mouse
+	0005  Viewmaster 4D Browser Mouse
+	0007  Twinhead Mouse
+	0009  Inland Pro 4500/5000 Mouse
+	0011  Browser Mouse
+	0014  Gamepad
+	1010  Optical Wireless
+	2001  Microsoft Wireless Receiver 700
+	3030  Controller
+	3031  Controller
+05ff  LeCroy Corp.
+0600  Barco Display Systems
+0601  Jazz Hipster Corp.
+	0003  Internet Security Co., Ltd. SecureKey
+0602  Vista Imaging, Inc.
+	1001  ViCam Webcam
+0603  Novatek Microelectronics Corp.
+	0002  Sino Wealth keyboard/mouse 2.4 GHz receiver
+	00f1  Keyboard (Labtec Ultra Flat Keyboard)
+	00f2  Keyboard (Labtec Ultra Flat Keyboard)
+	1002  Mobius actioncam (webcam mode)
+	6871  Mouse
+	8611  NTK96550 based camera
+0604  Jean Co., Ltd
+0605  Anchor C&C Co., Ltd
+0606  Royal Information Electronics Co., Ltd
+0607  Bridge Information Co., Ltd
+0608  Genrad Ads
+0609  SMK Manufacturing, Inc.
+	031d  eHome Infrared Receiver
+	0322  eHome Infrared Receiver
+	0334  eHome Infrared Receiver
+	ff12  SMK Bluetooth Device
+060a  Worthington Data Solutions, Inc.
+060b  Solid Year
+	0001  MacAlly Keyboard
+	0230  KSK-8003 UX Keyboard
+	0540  DeltaCo TB-106U Keyboard
+	1006  Japanese Keyboard - 260U
+	2101  Keyboard
+	2231  KSK-6001 UELX Keyboard
+	2270  Gigabyte K8100 Aivia Gaming Keyboard
+	500a  Cougar 500k Gaming Keyboard
+	5253  Thermaltake MEKA G-Unit Gaming Keyboard
+	5811  ACK-571U Wireless Keyboard
+	5903  Japanese Keyboard - 595U
+	6001  SolidTek USB 2p HUB
+	6002  SolidTek USB Keyboard
+	6003  Japanese Keyboard - 600HM
+	6231  Thermaltake eSPORTS Meka Keyboard
+	8007  P-W1G1F12 VER:1 [Macally MegaCam]
+	a001  Maxwell Compact Pc PM3
+060c  EEH Datalink GmbH
+060d  Auctor Corp.
+060e  Transmonde Technologies, Inc.
+060f  Joinsoon Electronics Mfg. Co., Ltd
+0610  Costar Electronics, Inc.
+0611  Totoku Electric Co., Ltd
+0613  TransAct Technologies, Inc.
+0614  Bio-Rad Laboratories
+0615  Quabbin Wire & Cable Co., Inc.
+0616  Future Techno Designs PVT, Ltd
+0617  Swiss Federal Insitute of Technology
+	000a  Thymio-II
+	000c  Thymio-II Wireless
+0618  MacAlly
+	0101  Mouse
+0619  Seiko Instruments, Inc.
+	0101  SLP-100 Driver
+	0102  SLP-200 Driver
+	0103  SLP-100N Driver
+	0104  SLP-200N Driver
+	0105  SLP-240 Driver
+	0501  SLP-440 Driver
+	0502  SLP-450 Driver
+061a  Veridicom International, Inc.
+	0110  5thSense Fingerprint Sensor
+	0200  FPS200 Fingerprint Sensor
+	8200  VKI-A Fingerprint Sensor/Flash Storage (dumb)
+	9200  VKI-B Fingerprint Sensor/Flash Storage (smart)
+061b  Promptus Communications, Inc.
+061c  Act Labs, Ltd
+061d  Quatech, Inc.
+	c020  SSU-100
+061e  Nissei Electric Co.
+	0001  nissei 128DE-USB -
+	0010  nissei 128DE-PNA -
+0620  Alaris, Inc.
+	0004  QuickVideo weeCam
+	0007  QuickVideo weeCam
+	000a  QuickVideo weeCam
+	000b  QuickVideo weeCam
+0621  ODU-Steckverbindungssysteme GmbH & Co. KG
+0622  Iotech, Inc.
+0623  Littelfuse, Inc.
+0624  Avocent Corp.
+	0013  SC Secure KVM
+	0248  Virtual Hub
+	0249  Virtual Keyboard/Mouse
+	0251  Virtual Mass Storage
+	0252  Virtual SD card reader
+	0294  Dell 03R874 KVM dongle
+	0402  Cisco Virtual Keyboard and Mouse
+	0403  Cisco Virtual Mass Storage
+	1774  Cybex SC985
+0625  TiMedia Technology Co., Ltd
+0626  Nippon Systems Development Co., Ltd
+0627  Adomax Technology Co., Ltd
+0628  Tasking Software, Inc.
+0629  Zida Technologies, Ltd
+062a  MosArt Semiconductor Corp.
+	0000  Optical mouse
+	0001  Notebook Optical Mouse
+	0020  Logic3 Gamepad
+	0033  Competition Pro Steering Wheel
+	0102  Wireless Keyboard/Mouse Combo [MK1152WC]
+	0201  Defender Office Keyboard (K7310) S Zodiak KM-9010
+	0252  Emerge Uni-retractable Laser Mouse
+	2410  Wireless PS3 gamepad
+	3286  Nano Receiver [Sandstrom Laser Mouse SMWLL11]
+	4101  Wireless Keyboard/Mouse
+	4102  Wireless Mouse
+	4106  Wireless Mouse 2.4G
+	4c01  2,4Ghz Wireless Transceiver [for Delux M618 Plus Wireless Vertical Mouse]
+	6301  Trust Wireless Optical Mouse MI-4150K
+	9003  VoIP Conference Hub (A16GH)
+	9004  USR9602 USB Internet Mini Phone
+062b  Greatlink Electronics Taiwan, Ltd
+062c  Institute for Information Industry
+062d  Taiwan Tai-Hao Enterprises Co., Ltd
+062e  Mainsuper Enterprises Co., Ltd
+062f  Sin Sheng Terminal & Machine, Inc.
+0631  JUJO Electronics Corp.
+0633  Cyrix Corp.
+0634  Micron Technology, Inc.
+	0655  Embedded Mass Storage Drive [RealSSD]
+0635  Methode Electronics, Inc.
+0636  Sierra Imaging, Inc.
+	0003  Vivicam 35Xx
+0638  Avision, Inc.
+	0268  iVina 1200U Scanner
+	026a  Minolta Dimage Scan Dual II AF-2820U (2886)
+	0a10  iVina FB1600/UMAX Astra 4500
+	0a13  AV600U
+	0a15  Konica Minolta SC-110
+	0a16  Konica Minolta SC-215
+	0a2a  AV220 C2
+	0a30  UMAX Astra 6700 Scanner
+	0a41  Avision AM3000/MF3000 Series
+	0f01  fi-4010CU
+# typo?
+	4004  Minolta Dimage Scan Elite II AF-2920 (2888)
+0639  Chrontel, Inc.
+063a  Techwin Corp.
+063b  Taugagreining HF
+063c  Yamaichi Electronics Co., Ltd (Sakura)
+063d  Fong Kai Industrial Co., Ltd
+063e  RealMedia Technology, Inc.
+063f  New Technology Cable, Ltd
+0640  Hitex Development Tools
+	0026  LPC-Stick
+0641  Woods Industries, Inc.
+0642  VIA Medical Corp.
+0644  TEAC Corp.
+	0000  Floppy
+	0200  All-In-One Multi-Card Reader CA200/B/S
+	1000  CD-ROM Drive
+	800d  TASCAM Portastudio DP-01FX
+	800e  TASCAM US-122L
+	801d  TASCAM DR-100
+	8021  TASCAM US-122mkII
+	d001  CD-R/RW Unit
+	d002  CD-R/RW Unit
+	d010  CD-RW/DVD Unit
+0645  Who? Vision Systems, Inc.
+0646  UMAX
+0647  Acton Research Corp.
+	0100  ARC SpectraPro UV/VIS/IR Monochromator/Spectrograph
+	0101  ARC AM-VM Mono Airpath/Vacuum Monochromator/Spectrograph
+	0102  ARC Inspectrum Mono
+	0103  ARC Filterwheel
+	03e9  Inspectrum 128x1024 F VIS Spectrograph
+	03ea  Inspectrum 256x1024 F VIS Spectrograph
+	03eb  Inspectrum 128x1024 B VIS Spectrograph
+	03ec  Inspectrum 256x1024 B VIS Spectrograph
+0648  Inside Out Networks
+0649  Weli Science Co., Ltd
+064b  Analog Devices, Inc. (White Mountain DSP)
+	0165  Blackfin 535 [ADZS HPUSB ICE]
+064c  Ji-Haw Industrial Co., Ltd
+064d  TriTech Microelectronics, Ltd
+064e  Suyin Corp.
+	2100  Sony Visual Communication Camera
+	3410  RGBIR Camera
+	9700  Asus Integrated Webcam
+	a100  Acer OrbiCam
+	a101  Acer CrystalEye Webcam
+	a102  Acer/Lenovo Webcam [CN0316]
+	a103  Acer/HP Integrated Webcam [CN0314]
+	a110  HP Webcam
+	a114  Lemote Webcam
+	a116  UVC 1.3MPixel WebCam
+	a127  HP Integrated Webcam
+	a136  Asus Integrated Webcam [CN031B]
+	a219  1.3M WebCam (notebook emachines E730, Acer sub-brand)
+	c107  HP webcam [dv6-1190en]
+	c335  HP TrueVision HD
+	d101  Acer CrystalEye Webcam
+	d213  UVC HD Webcam
+	d217  HP TrueVision HD
+	e201  Lenovo Integrated Webcam
+	e203  Lenovo Integrated Webcam
+	e258  HP TrueVision HD Integrated Webcam
+	e263  HP TrueVision HD Integrated Webcam
+	f102  Lenovo Integrated Webcam [R5U877]
+	f103  Lenovo Integrated Webcam [R5U877]
+	f207  Lenovo EasyCamera Integrated Webcam
+	f209  HP Webcam
+	f300  UVC 0.3M Webcam
+064f  WIBU-Systems AG
+	03e9  CmStick (MSD, article no. 1001-xx-xxx)
+	03f2  CmStick/M (MSD, article no. 1010-xx-xxx)
+	03f3  CmStick/M (MSD, article no. 1011-xx-xxx)
+	0bd7  Wibu-Box/U (article no. 3031-xx-xxx)
+	0bd8  Wibu-Box/RU (article no. 3032-xx-xxx)
+	2af9  CmStick (HID, article no. 1001-xx-xxx)
+	2b03  CmStick/M (HID, article no. 1011-xx-xxx)
+	5213  CmStick/M (COMPOSITE, article no. 1011-xx-xxx)
+0650  Dynapro Systems
+0651  Likom Technology Sdn. Bhd.
+0652  Stargate Solutions, Inc.
+0653  CNF, Inc.
+0654  Granite Microsystems, Inc.
+	0005  Device Bay Controller
+	0006  Hub
+	0007  Device Bay Controller
+	0016  Hub
+0655  Space Shuttle Hi-Tech Co., Ltd
+0656  Glory Mark Electronic, Ltd
+0657  Tekcon Electronics Corp.
+0658  Sigma Designs, Inc.
+	0200  Aeotec Z-Stick Gen5 (ZW090) - UZB
+0659  Aethra
+065a  Optoelectronics Co., Ltd
+	0001  Opticon OPR-2001 / NLV-1001 (keyboard mode)
+	0009  NLV-1001 (serial mode) / OPN-2001 [Opticon]
+065b  Tracewell Systems
+065e  Silicon Graphics
+065f  Good Way Technology Co., Ltd & GWC technology Inc.
+0660  TSAY-E (BVI) International, Inc.
+0661  Hamamatsu Photonics K.K.
+0662  Kansai Electric Co., Ltd
+0663  Topmax Electronic Co., Ltd
+	0103  CobraPad
+0664  ET&T Technology Co., Ltd.
+	0301  Groovy Technology Corp. GTouch Touch Screen
+	0302  Groovy Technology Corp. GTouch Touch Screen
+	0303  Groovy Technology Corp. GTouch Touch Screen
+	0304  Groovy Technology Corp. GTouch Touch Screen
+	0305  Groovy Technology Corp. GTouch Touch Screen
+	0306  Groovy Technology Corp. GTouch Touch Screen
+	0307  Groovy Technology Corp. GTouch Touch Screen
+	0309  Groovy Technology Corp. GTouch Touch Screen
+0665  Cypress Semiconductor
+	5161  USB to Serial
+0667  Aiwa Co., Ltd
+	0fa1  TD-U8000 Tape Drive
+0668  WordWand
+0669  Oce' Printing Systems GmbH
+066a  Total Technologies, Ltd
+066b  Linksys, Inc.
+	0105  SCM eUSB SmartMedia Card Reader
+	010a  Melco MCR-U2 SmartMedia / CompactFlash Reader
+	200c  USB10TX
+	2202  USB10TX Ethernet [pegasus]
+	2203  USB100TX Ethernet [pegasus]
+	2204  USB100TX HomePNA Ethernet [pegasus]
+	2206  USB Ethernet [pegasus]
+	2207  HomeLink Phoneline 10M Network Adapter
+	2211  WUSB11 802.11b Adapter
+	2212  WUSB11v2.5 802.11b Adapter
+	2213  WUSB12v1.1 802.11b Adapter
+	2219  Instant Wireless Network Adapter
+	400b  USB10TX
+066d  Entrega, Inc.
+066e  Acer Semiconductor America, Inc.
+066f  SigmaTel, Inc.
+	003b  MP3 Player
+	003e  MP3 Player
+	003f  MP3 Player
+	0040  MP3 Player
+	0041  MP3 Player
+	0042  MP3 Player
+	0043  MP3 Player
+	004b  A-Max PA11 MP3 Player
+	3400  STMP3400 D-Major MP3 Player
+	3410  STMP3410 D-Major MP3 Player
+	3500  Player Recovery Device
+	3780  STMP3780/i.MX23 SystemOnChip in RecoveryMode
+	4200  STIr4200 IrDA Bridge
+	4210  STIr4210 IrDA Bridge
+	8000  MSCN MP3 Player
+	8001  SigmaTel MSCN Audio Player
+	8004  MSCNMMC MP3 Player
+	8008  i-Bead 100 MP3 Player
+	8020  MP3 Player
+	8034  MP3 Player
+	8036  MP3 Player
+	8038  MP3 Player
+	8056  MP3 Player
+	8060  MP3 Player
+	8066  MP3 Player
+	807e  MP3 Player
+	8092  MP3 Player
+	8096  MP3 Player
+	809a  MP3 Player
+	80aa  MP3 Player
+	80ac  MP3 Player
+	80b8  MP3 Player
+	80ba  MP3 Player
+	80bc  MP3 Player
+	80bf  MP3 Player
+	80c5  MP3 Player
+	80c8  MP3 Player
+	80ca  MP3 Player
+	80cc  MP3 Player
+	8104  MP3 Player
+	8106  MP3 Player
+	8108  MP3 Player
+	810a  MP3 Player
+	810c  MP3 Player
+	8122  MP3 Player
+	8124  MP3 Player
+	8126  MP3 Player
+	8128  MP3 Player
+	8134  MP3 Player
+	8136  MP3 Player
+	8138  MP3 Player
+	813a  MP3 Player
+	813e  MP3 Player
+	8140  MP3 Player
+	8142  MP3 Player
+	8144  MP3 Player
+	8146  MP3 Player
+	8148  MP3 Player
+	814c  MP3 Player
+	8201  MP3 Player
+	8202  Jens of Sweden / I-BEAD 150M/150H MP3 player
+	8203  MP3 Player
+	8204  MP3 Player
+	8205  MP3 Player
+	8206  Digital MP3 Music Player
+	8207  MP3 Player
+	8208  MP3 Player
+	8209  MP3 Player
+	820a  MP3 Player
+	820b  MP3 Player
+	820c  MP3 Player
+	820d  MP3 Player
+	820e  MP3 Player
+	820f  MP3 Player
+	8210  MP3 Player
+	8211  MP3 Player
+	8212  MP3 Player
+	8213  MP3 Player
+	8214  MP3 Player
+	8215  MP3 Player
+	8216  MP3 Player
+	8217  MP3 Player
+	8218  MP3 Player
+	8219  MP3 Player
+	821a  MP3 Player
+	821b  MP3 Player
+	821c  MP3 Player
+	821d  MP3 Player
+	821e  MP3 Player
+	821f  MP3 Player
+	8220  MP3 Player
+	8221  MP3 Player
+	8222  MP3 Player
+	8223  MP3 Player
+	8224  MP3 Player
+	8225  MP3 Player
+	8226  MP3 Player
+	8227  MP3 Player
+	8228  MP3 Player
+	8229  MP3 Player
+	8230  MP3 Player
+	829c  MP3 Player
+	82e0  MP3 Player
+	8320  TrekStor i.Beat fun
+	835d  MP3 Player
+	83b5  Transcend T.sonic 530 MP3 Player
+	9000  MP3 Player
+	9001  MP3 Player
+	9002  MP3 Player
+0670  Sequel Imaging
+	0001  Calibrator
+	0005  Enable Cable
+0672  Labtec, Inc.
+	1041  LCS1040 Speaker System
+	5000  SpaceBall 4000 FLX
+0673  HCL
+	5000  Keyboard
+0674  Key Mouse Electronic Enterprise Co., Ltd
+0675  DrayTek Corp.
+	0110  Vigor 128 ISDN TA
+	0530  Vigor530 IEEE 802.11G Adapter (ISL3880+NET2280)
+	0550  Vigor550
+	1688  miniVigor 128 ISDN TA [HFC-S]
+	6694  miniVigor 128 ISDN TA
+0676  Teles AG
+0677  Aiwa Co., Ltd
+	07d5  TM-ED1285(USB)
+	0fa1  TD-U8000 Tape Drive
+0678  ACard Technology Corp.
+067b  Prolific Technology, Inc.
+	0000  PL2301 USB-USB Bridge
+	0001  PL2302 USB-USB Bridge
+	0307  Motorola Serial Adapter
+	04bb  PL2303 Serial (IODATA USB-RSAQ2)
+	0600  IDE Bridge
+	0610  Onext EG210U MODEM
+	0611  AlDiga AL-11U Quad-band GSM/GPRS/EDGE modem
+	1231  Orico SATA External Hard Disk Drive Lay-Flat Docking Station with USB 3.0 & eSATA interfaces.
+	2303  PL2303 Serial Port / Mobile Action MA-8910P
+	2305  PL2305 Parallel Port
+	2306  Raylink Bridge Controller
+	2307  PL2307 USB-ATAPI4 Bridge
+	2313  FITEL PHS U Cable Adaptor
+	2315  Flash Disk Embedded Hub
+	2316  Flash Disk Security Device
+	2317  Mass Storage Device
+	2501  PL2501 USB-USB Bridge (USB 2.0)
+	2506  Kaser 8gB micro hard drive
+	2507  PL2507 Hi-speed USB to IDE bridge controller
+	2515  Flash Disk Embedded Hub
+	2517  Flash Disk Mass Storage Device
+	2528  Storage device (8gB thumb drive)
+	2571  LG Electronics GE24LU21
+	25a1  PL25A1 Host-Host Bridge
+	2773  PL2773 SATAII bridge controller
+	3400  Hi-Speed Flash Disk with TruePrint AES3400
+	3500  Hi-Speed Flash Disk with TruePrint AES3500
+	3507  PL3507 ATAPI6 Bridge
+	aaa0  Prolific Pharos
+	aaa2  PL2303 Serial Adapter (IODATA USB-RSAQ3)
+	aaa3  PL2303x Serial Adapter
+067c  Efficient Networks, Inc.
+	1001  Siemens SpeedStream 100MBps Ethernet
+	1022  Siemens SpeedStream 1022 802.11b Adapter
+	1023  SpeedStream Wireless
+	4020  SpeedStream 4020 ATM/ADSL Installer
+	4031  Efficient ADSL Modem
+	4032  SpeedStream 4031 ATM/ADSL Installer
+	4033  SpeedStream 4031 ATM/ADSL Installer
+	4060  Alcatel Speedstream 4060 ADSL Modem
+	4062  Efficient Networks 4060 Loader
+	5667  Efficient Networks Virtual Bus for ADSL Modem
+	c031  SpeedStream 4031 ATM/ADSL Installer
+	c032  SpeedStream 4031 ATM/ADSL Installer
+	c033  SpeedStream 4031 ATM/ADSL Installer
+	c060  SpeedStream 4060 Miniport ATM/ADSL Adapter
+	d667  Efficient Networks Virtual Bus for ADSL Modem
+	e240  Speedstream Ethernet Adapter E240
+	e540  Speedstream Ethernet Adapter E240
+067d  Hohner Corp.
+067e  Intermec Technologies Corp.
+	0801  HID Keyboard, Barcode scanner
+	0803  VCP, Barcode scanner
+	0805  VCP + UVC, Barcode scanner
+	1001  Mobile Computer
+067f  Virata, Ltd
+	4552  DSL-200 ADSL Modem
+	6542  DSL Modem
+	6549  DSL Modem
+	7541  DSL Modem
+0680  Realtek Semiconductor Corp., CPP Div. (Avance Logic)
+	0002  Arowana Optical Wheel Mouse MSOP-01
+0681  Siemens Information and Communication Products
+	0001  Dect Base
+	0002  Gigaset 3075 Passive ISDN
+	0005  ID-Mouse with Fingerprint Reader
+	0012  I-Gate 802.11b Adapter
+	001b  WLL013
+	001d  Hipath 1000
+	0022  Gigaset SX353 ISDN
+	0026  DECT Data - Gigaset M34
+	002b  A-100-I ADSL Modem
+	002e  ADSL Router_S-141
+	0034  GSM module MC35/ES75 USB Modem
+	3c06  54g USB Network Adapter
+0682  Victor Company of Japan, Ltd
+0684  Actiontec Electronics, Inc.
+0685  ZD Incorporated
+	7000  HSDPA Modem
+0686  Minolta Co., Ltd
+	2001  PagePro 4110W
+	2004  PagePro 1200W
+	2005  Magicolor 2300 DL
+	3001  PagePro 4100
+	3005  PagePro 1250E
+	3006  PagePro 1250W
+	3009  Magicolor 2300W
+	300b  PagePro 1350W
+	300c  PagePro 1300W
+	301b  Develop D 1650iD
+	3023  Develop D 2050iD
+	302e  Develop D 1650iD PCL
+	3034  Develop D 2050iD PCL
+	4001  Dimage 2300
+	4003  Dimage 2330 Zoom Camera
+	4004  Dimage Scan Elite II AF-2920 (2888)
+	4005  Minolta DiMAGE E201 Mass Storage Device
+	4006  Dimage 7 Camera
+	4007  Dimage S304 Camera
+	4008  Dimage 5 Camera
+	4009  Dimage X Camera
+	400a  Dimage S404 Camera
+	400b  Dimage 7i Camera
+	400c  Dimage F100 Camera
+	400d  Dimage Scan Dual III AF-2840 (2889)
+	400e  Dimage Scan Elite 5400 (2890)
+	400f  Dimage 7Hi Camera
+	4010  Dimage Xi Camera
+	4011  Dimage F300 Camera
+	4012  Dimage F200 Camera
+	4014  Dimage S414 Camera
+	4015  Dimage XT Camera [storage]
+	4016  Dimage XT Camera [remote mode]
+	4017  Dimage E223
+	4018  Dimage Z1  Camera
+	4019  Dimage A1 Camera [remote mode]
+	401a  Dimage A1 Camera [storage]
+	401c  Dimage X20 Camera
+	401e  Dimage E323 Camera
+068a  Pertech, Inc.
+068b  Potrans International, Inc.
+068e  CH Products, Inc.
+	00d3  OEM 3 axis 5 button joystick
+	00e2  HFX OEM Joystick
+	00f0  Multi-Function Panel
+	00f1  Pro Throttle
+	00f2  Flight Sim Pedals
+	00f3  Fighterstick
+	00f4  Combatstick
+	00fa  Ch Throttle Quadrant
+	00ff  Flight Sim Yoke
+	0500  GameStick 3D
+	0501  CH Pro Pedals
+	0504  F-16 Combat Stick
+068f  Nihon KOHDEN
+	c00d  MEK-6500
+0690  Golden Bridge Electech, Inc.
+0693  Hagiwara Sys-Com Co., Ltd
+	0002  FlashGate SmartMedia Card Reader
+	0003  FlashGate CompactFlash Card Reader
+	0005  FlashGate
+	0006  SM PCCard R/W and SPD
+	0007  FlashGate ME (Authenticated)
+	000a  SDCard/MMC Reader/Writer
+0694  Lego Group
+	0001  Mindstorms Tower
+	0002  Mindstorms NXT
+	0005  Mindstorms EV3
+	0006  Mindstorms EV3 Firmware Update
+0698  Chuntex (CTX)
+	1786  1300ex Monitor
+	2003  CTX M730V built in Camera
+	9999  VLxxxx Monitor+Hub
+0699  Tektronix, Inc.
+	0347  AFG 3022B
+	0365  TDS 2004B
+	036a  TDS 2024B
+069a  Askey Computer Corp.
+	0001  VC010 Webcam [pwc]
+	0303  Cable Modem
+	0311  ADSL Router Remote NDIS Device
+	0318  Remote NDIS Device
+	0319  220V Remote NDIS Device
+	0320  IEEE 802.11b Wireless LAN Card
+	0321  Dynalink WLL013 / Compex WLU11A 802.11b Adapter
+	0402  Scientific Atlanta WebSTAR 100 & 200 series Cable Modem
+	0811  BT Virtual Bus for Helium
+	0821  BT Voyager 1010 802.11b Adapter
+	4402  Scientific Atlanta WebSTAR 2000 series Cable Modem
+	4403  Scientific Atlanta WebSTAR 300 series Cable Modem
+	4501  Scientific-Atlanta WebSTAR 2000 series Cable Modem
+069b  Thomson, Inc.
+	0704  DCM245 Cable Modem
+	0705  THG540K Cable Modem
+	0709  Lyra PDP2424
+	070c  MP3 Player
+	070d  MP3 Player
+	070e  MP3 Player
+	070f  RCA Lyra RD1071 MP3 Player
+	0731  Lyra M200E256
+	0761  RCA H100A
+	0778  PEARL USB Device
+	2220  RCA Kazoo RD1000 MP3 Player
+	300a  RCA Lyra MP3 Player
+	3012  MP3 Player
+	3013  MP3 Player
+	5557  RCA CDS6300
+069d  Hughes Network Systems (HNS)
+	0001  Satellite Receiver Device
+	0002  Satellite Device
+069e  Welcat Inc.
+	0005  Marx CryptoBox v1.2
+069f  Allied Data Technologies BV
+	0010  Tornado Speakerphone FaxModem 56.0
+	0011  Tornado Speakerphone FaxModem 56.0
+	1000  ADT VvBus for CopperJet
+	1004  CopperJet 821 RouterPlus
+06a2  Topro Technology, Inc.
+	0033  USB Mouse
+06a3  Saitek PLC
+	0006  Cyborg Gold Joystick
+	0109  P880 Pad
+	0160  ST290 Pro
+	0200  Racing Wheel
+	0201  Adrenalin Gamepad
+	0241  Xbox Adrenalin Gamepad
+	0255  X52 Flight Controller
+	040b  P990 Dual Analog Pad
+	040c  P2900 Wireless Pad
+	0422  ST90 Joystick
+	0460  ST290 Pro Flight Stick
+	0463  ST290
+	0464  Cyborg Evo
+	0471  Cyborg Graphite Stick
+	0501  R100 Sports Wheel
+	0502  ST200 Stick
+	0506  R220 Digital Wheel
+	051e  Cyborg Digital II Stick
+	052d  P750 Gamepad
+	053c  X45 Flight Controller
+	053f  X36F Flightstick
+	056c  P2000 Tilt Pad
+	056f  P2000 Tilt Pad
+	05d2  PC Dash 2
+	075c  X52 Flight Controller
+	0762  Saitek X52 Pro Flight Control System
+	0763  Pro Flight Rudder Pedals
+	0764  Flight Pro Combat Rudder
+	0805  R440 Force Wheel
+	0b4e  Pro Flight Backlit Information Panel
+	0bac  Pro Flight Yoke
+	0c2d  Pro Flight Quadrant
+	0d05  Pro Flight Radio Panel
+	0d06  Flight Pro Multi Panel
+	0d67  Pro Flight Switch Panel
+	1003  GM2 Action Pad
+	1009  Action Pad
+	100a  SP550 Pad and Joystick Combo
+	100b  SP550 Pad
+	1509  P3000 Wireless Pad
+	1589  P3000 Wireless Pad
+	2541  X45 Flight Controller
+	3509  P3000 RF GamePad
+	353e  Cyborg Evo Wireless
+	3589  P3000 Wireless Pad
+	35be  Cyborg Evo
+	5509  P3000 Wireless Pad
+	712c  Pro Flight Yoke integrated hub
+	8000  Gamers' Keyboard
+	801e  Cyborg 3D Digital Stick II
+	8020  Eclipse Keyboard
+	8021  Eclipse II Keyboard
+	802d  P750 Pad
+	803f  X36 Flight Controller
+	806f  P2000 Tilt Pad
+	80c0  Pro Gamer Command Unit
+	80c1  Cyborg Command Pad Unit
+	a2ae  Pro Flight Instrument Panel
+	a502  Gaming Mouse
+	f518  P3200 Rumble Force Game Pad
+	f51a  P3600
+	ff04  R440 Force Wheel
+	ff0c  Cyborg Force Rumble Pad
+	ff0d  P2600 Rumble Force Pad
+	ff12  Cyborg 3D Force Stick
+	ff17  ST 330 Rumble Force Stick
+	ff52  Cyborg 3D Rumble Force Joystick
+	ffb5  Cyborg Evo Force Joystick
+06a4  Xiamen Doowell Electron Co., Ltd
+06a5  Divio
+	0000  Typhoon Webcam 100k [nw8000]
+	d001  ProLink DS3303u Webcam
+	d800  Chicony TwinkleCam
+	d820  Wize Media 1000
+06a7  MicroStore, Inc.
+06a8  Topaz Systems, Inc.
+	0042  SignatureGem 1X5 Pad
+	0043  SignatureGem 1X5-HID Pad
+06a9  Westell
+	0005  WireSpeed Dual Connect Modem
+	0006  WireSpeed Dual Connect Modem
+	000a  WireSpeed Dual Connect Modem
+	000b  WireSpeed Dual Connect Modem
+	000e  A90-211WG-01 802.11g Adapter [Intersil ISL3887]
+06aa  Sysgration, Ltd
+06ac  Fujitsu Laboratories of America, Inc.
+06ad  Greatland Electronics Taiwan, Ltd
+06ae  Professional Multimedia Testing Centre
+06af  Harting, Inc. of North America
+06b8  Pixela Corp.
+06b9  Alcatel Telecom
+	0120  SpeedTouch 120g 802.11g Wireless Adapter [Intersil ISL3886]
+	0121  SpeedTouch 121g Wireless Dongle
+	2001  SPEED TOUCH Card
+	4061  SpeedTouch ISDN or ADSL Modem
+	4062  SpeedTouch ISDN or ADSL router
+	a5a5  DynaMiTe Modem
+06ba  Smooth Cord & Connector Co., Ltd
+06bb  EDA, Inc.
+06bc  Oki Data Corp.
+	000b  Okipage 14ex Printer
+	0027  Okipage 14e
+	00f7  OKI B4600 Mono Printer
+	015e  OKIPOS 411/412 POS Printer
+	01c9  OKI B430 Mono Printer
+	01db  MC860 Multifunction Printer
+	01dc  MC860 Multifunction Printer
+	01dd  MC860 Multifunction Printer
+	01de  MC860 Multifunction Printer
+	01df  CX2633 Multifunction Printer
+	01e0  ES8460 Multifunction Printer
+	020b  OKI ES4140 Mono Printer
+	021f  ES8460 Multifunction Printer
+	026f  MC351 Multifunction Printer
+	0270  MC351 Multifunction Printer
+	0271  MC351 Multifunction Printer
+	0272  MC351 Multifunction Printer
+	0273  MC351 Multifunction Printer
+	0274  ES3451 Multifunction Printer
+	0275  MC351 Multifunction Printer
+	0276  MC351 Multifunction Printer
+	0277  MC351 Multifunction Printer
+	0278  MC351 Multifunction Printer
+	0279  MC361 Multifunction Printer
+	027a  MC361 Multifunction Printer
+	027b  MC361 Multifunction Printer
+	027c  MC361 Multifunction Printer
+	027d  MC361 Multifunction Printer
+	027e  ES3461 Multifunction Printer
+	027f  MC361 Multifunction Printer
+	0280  MC361 Multifunction Printer
+	0281  MC361 Multifunction Printer
+	0282  MC361 Multifunction Printer
+	0283  MC561 Multifunction Printer
+	0284  MC561 Multifunction Printer
+	0285  MC561 Multifunction Printer
+	0286  MC561 Multifunction Printer
+	0287  CX2731 Multifunction Printer
+	0288  ES5461 Multifunction Printer
+	0289  ES5461 Multifunction Printer
+	028a  MC561 Multifunction Printer
+	028b  MC561 Multifunction Printer
+	028c  MC561 Multifunction Printer
+	02b4  MC861 Multifunction Printer
+	02b5  ES8461 Multifunction Printer
+	02b6  MC851 Multifunction Printer
+	02b7  ES8451 Multifunction Printer
+	02bb  OKI PT390 POS Printer
+	02bd  MB461 Multifunction Printer
+	02be  MB471 Multifunction Printer
+	02bf  MB491 Multifunction Printer
+	02ca  ES4161 Multifunction Printer
+	02cb  ES4191 Multifunction Printer
+	02d4  MPS4200mb Multifunction Printer
+	02e7  MC352 Multifunction Printer
+	02e8  MC362 Multifunction Printer
+	02e9  MC562 Multifunction Printer
+	02ea  ES3452 Multifunction Printer
+	02eb  ES5462 Multifunction Printer
+	02ee  MB451 Multifunction Printer
+	0383  MC563 Multifunction Printer
+	0a91  B2500MFP (printer+scanner)
+	3801  B6100 Laser Printer
+06bd  AGFA-Gevaert NV
+	0001  SnapScan 1212U
+	0002  SnapScan 1236U
+	0100  SnapScan Touch
+	0101  SNAPSCAN ELITE
+	0200  ScanMaker 8700
+	02bf  DUOSCAN f40
+	0400  CL30
+	0401  Mass Storage
+	0403  ePhoto CL18 Camera
+	0404  ePhoto CL20 Camera
+	2061  SnapScan 1212U (?)
+	208d  Snapscan e40
+	208f  SnapScan e50
+	2091  SnapScan e20
+	2093  SnapScan e10
+	2095  SnapScan e25
+	2097  SnapScan e26
+	20fd  SnapScan e52
+	20ff  SnapScan e42
+06be  AME Optimedia Technology Co., Ltd
+	0800  Optimedia Camera
+	1005  Dazzle DPVM! (1005)
+	d001  P35U Camera Capture
+06bf  Leoco Corp.
+06c2  Phidgets Inc. (formerly GLAB)
+	0030  PhidgetRFID
+	0031  RFID reader
+	0038  4-Motor PhidgetServo v3.0
+	0039  1-Motor PhidgetServo v3.0
+	003a  8-Motor PhidgetAvancedServo
+	0040  PhidgetInterface Kit 0-0-4
+	0044  PhidgetInterface Kit 0-16-16
+	0045  PhidgetInterface Kit 8-8-8
+	0048  PhidgetStepper (Under Development)
+	0049  PhidgetTextLED Ver 1.0
+	004a  PhidgetLED Ver 1.0
+	004b  PhidgetEncoder Ver 1.0
+	0051  PhidgetInterface Kit 0-5-7 (Custom)
+	0052  PhidgetTextLCD
+	0053  PhidgetInterfaceKit 0-8-8
+	0058  PhidgetMotorControl Ver 1.0
+	0070  PhidgetTemperatureSensor Ver 1.0
+	0071  PhidgetAccelerometer Ver 1.0
+	0072  PhidgetWeightSensor Ver 1.0
+	0073  PhidgetHumiditySensor
+	0074  PhidgetPHSensor
+	0075  PhidgetGyroscope
+06c4  Bizlink International Corp.
+06c5  Hagenuk, GmbH
+06c6  Infowave Software, Inc.
+06c8  SIIG, Inc.
+06c9  Taxan (Europe), Ltd
+	0005  Monitor Control
+	0007  Monitor Control
+	0009  Monitor Control
+06ca  Newer Technology, Inc.
+	2003  uSCSI
+06cb  Synaptics, Inc.
+	0001  TouchPad
+	0002  Integrated TouchPad
+	0003  cPad
+	0005  Touchpad/FPS
+	0006  TouchScreen
+	0007  USB Styk
+	0008  WheelPad
+	0009  Composite TouchPad and TrackPoint
+	000e  HID Device
+	0010  Wireless TouchPad
+	0013  DisplayPad
+	009a  Metallica MIS Touch Fingerprint Reader
+	00a2  Metallica MOH Touch Fingerprint Reader
+	00bd  Prometheus MIS Touch Fingerprint Reader
+	2970  touchpad
+06cc  Terayon Communication Systems
+	0101  Cable Modem
+	0102  Cable Modem
+	0103  Cable Modem
+	0104  Cable Modem
+	0304  Cable Modem
+06cd  Keyspan
+	0101  USA-28 PDA [no firmware]
+	0102  USA-28X PDA [no firmware]
+	0103  USA-19 PDA [no firmware]
+	0104  PDA [prerenum]
+	0105  USA-18X PDA [no firmware]
+	0106  USA-19W PDA [no firmware]
+	0107  USA-19 PDA
+	0108  USA-19W PDA
+	0109  USA-49W serial adapter [no firmware]
+	010a  USA-49W serial adapter
+	010b  USA-19Qi serial adapter [no firmware]
+	010c  USA-19Qi serial adapter
+	010d  USA-19Q serial Adapter (no firmware)
+	010e  USA-19Q serial Adapter
+	010f  USA-28 PDA
+	0110  USA-28Xb PDA
+	0111  USA-18 serial Adapter
+	0112  USA-18X PDA
+	0113  USA-28Xb PDA [no firmware]
+	0114  USA-28Xa PDA [no firmware]
+	0115  USA-28Xa PDA
+	0116  USA-18XA serial Adapter (no firmware)
+	0117  USA-18XA serial Adapter
+	0118  USA-19QW PDA [no firmware]
+	0119  USA-19QW PDA
+	011a  USA-49Wlc serial adapter [no firmware]
+	011b  MPR Serial Preloader (MPRQI)
+	011c  MPR Serial (MPRQI)
+	011d  MPR Serial Preloader (MPRQ)
+	011e  MPR Serial (MPRQ)
+	0121  USA-19hs serial adapter
+	012a  USA-49Wlc serial adapter
+	0201  UIA-10 Digital Media Remote [Cypress AN2131SC]
+	0202  UIA-11 Digital Media Remote
+06ce  Contec
+	8311  COM-1(USB)H
+06cf  SpheronVR AG
+	1010  PanoCam 10
+	1012  PanoCam 12/12X
+06d0  LapLink, Inc.
+	0622  LapLink Gold USB-USB Bridge [net1080]
+06d1  Daewoo Electronics Co., Ltd
+06d3  Mitsubishi Electric Corp.
+	0284  FX-USB-AW/-BD RS482 Converters
+	0380  CP8000D Port
+	0381  CP770D Port
+	0385  CP900D Port
+	0387  CP980D Port
+	038b  CP3020D Port
+	038c  CP900DW(ID) Port
+	0393  CP9500D/DW Port
+	0394  CP9000D/DW Port
+	0398  P93D
+	03a1  CP9550D/DW Port
+	03a5  CP9550DW-S
+	03a9  CP-9600DW
+	03aa  CP3020DA
+	03ad  CP-9800D/DW
+	03ae  CP-9800DW-S
+	0f10  Hori/Namco FlightStick 2
+	3b10  P95D
+	3b21  CP-9810D/DW
+	3b30  CP-D70DW / CP-D707DW
+	3b31  CP-K60DW-S
+	3b36  CP-D80DW
+	3b50  CP-W5000DW
+	3b60  CP-D90DW
+	3b80  CP-M1
+06d4  Cisco Systems
+06d5  Toshiba
+	4000  Japanese Keyboard
+06d6  Aashima Technology B.V.
+	0025  Gamepad
+	0026  Predator TH 400 Gamepad
+	002d  Trust PowerC@m 350FT
+	002e  Trust PowerC@m 350FS
+	0030  Trust 710 LCD POWERC@M ZOOM - MSD
+	0031  Trust 610/710 LCD POWERC@M ZOOM
+	003a  Trust PowerC@m 770Z (mass storage mode)
+	003b  Trust PowerC@m 770Z (webcam mode)
+	003c  Trust 910z PowerC@m
+	003f  Trust 735S POWERC@M ZOOM, WDM DSC Bulk Driver
+	0050  Trust 738AV LCD PV Digital Camera
+	0062  TRUST 782AV LCD P. V. Video Capture
+	0066  TRUST Digital PCTV and Movie Editor
+	0067  Trust 350FS POWERC@M FLASH
+	006b  TRUST AUDIO VIDEO EDITOR
+06d7  Network Computing Devices (NCD)
+06d8  Technical Marketing Research, Inc.
+06da  Phoenixtec Power Co., Ltd
+	0002  UPS
+	0003  1300VA UPS
+06db  Paradyne
+06dc  Foxlink Image Technology Co., Ltd
+	0012  Scan 1200c Scanner
+	0014  Prolink Winscan Pro 2448U
+06de  Heisei Electronics Co., Ltd
+06e0  Multi-Tech Systems, Inc.
+	0319  MT9234ZBA-USB MultiModem ZBA
+	f101  MT5634ZBA-USB MultiModemUSB (old firmware)
+	f103  MT5634MU MultiMobileUSB
+	f104  MT5634ZBA-USB MultiModemUSB (new firmware)
+	f107  MT5634ZBA-USB-V92 MultiModemUSB
+	f120  MT9234ZBA-USB-CDC-ACM-XR MultiModem ZBA CDC-ACM-XR
+06e1  ADS Technologies, Inc.
+	0008  UBS-10BT Ethernet [klsi]
+	0009  UBS-10BT Ethernet
+	0833  Mass Storage Device
+	a155  FM Radio Receiver/Instant FM Music (RDX-155-EF)
+	a160  Instant Video-To-Go RDX-160 (no firmware)
+	a161  Instant Video-To-Go RDX-160
+	a190  Instand VCD Capture
+	a191  Instant VideoXpress
+	a337  Mini DigitalTV
+	a701  DVD Xpress
+	a708  saa7114H video input card (Instant VideoMPX)
+	b337  Mini DigitalTV
+	b701  DVD Xpress B
+06e4  Alcatel Microelectronics
+06e6  Tiger Jet Network, Inc.
+	0200  Internet Phone
+	0201  Internet Phone
+	0202  Composite Device
+	0203  Internet Phone
+	0210  Composite Device
+	0211  Internet Phone
+	0212  Internet Phone
+	031c  Internet Phone
+	031d  Internet Phone
+	031e  Internet Phone
+	3200  Composite Device
+	3201  Internet Phone
+	3202  Composite Device
+	3203  Composite Device
+	7200  Composite Device
+	7210  Composite Device
+	7250  Composite Device
+	825c  Internet Phone
+	831c  Internet Phone
+	831d  Composite Device
+	831e  Composite Device
+	b200  Composite Device
+	b201  Composite Device
+	b202  Internet Phone
+	b210  Internet Phone
+	b211  Composite Device
+	b212  Composite Device
+	b250  Composite Device
+	b251  Internet Phone
+	b252  Internet Phone
+	c200  Internet Phone
+	c201  Internet Phone
+	c202  Composite Device
+	c203  Internet Phone
+	c210  Personal PhoneGateway
+	c211  Personal PhoneGateway
+	c212  Personal PhoneGateway
+	c213  PPG Device
+	c25c  Composite Device
+	c290  PPG Device
+	c291  PPG Device
+	c292  PPG Device
+	c293  Personal PhoneGateway
+	c31c  Composite Device
+	c39c  Personal PhoneGateway
+	c39d  PPG Device
+	c39e  PPG Device
+	c39f  PPG Device
+	c700  Internet Phone
+	c701  Internet Phone
+	c702  Composite Device
+	c703  Internet Phone
+	c710  VoIP Combo Device
+	c711  VoIP Combo
+	c712  VoIP Combo Device
+	c713  VoIP Combo Device
+	cf00  Composite Device
+	cf01  Internet Phone
+	cf02  Internet Phone
+	cf03  Composite Device
+	d210  Personal PhoneGateway
+	d211  PPG Device
+	d212  PPG Device
+	d213  Personal PhoneGateway
+	d700  Composite Device
+	d701  Composite Device
+	d702  Internet Phone
+	d703  Composite Device
+	d710  VoIP Combo
+	d711  VoIP Combo Device
+	d712  VoIP Combo
+	d713  VoIP Combo
+	df00  Composite Device
+	df01  Composite Device
+	df02  Internet Phone
+	df03  Internet Phone
+	f200  Internet Phone
+	f201  Internet Phone
+	f202  Composite Device
+	f203  Composite Device
+	f210  Internet Phone
+	f250  Composite Device
+	f252  Internet Phone
+	f310  Internet Phone
+	f350  Composite Device
+06ea  Sirius Technologies
+	0001  NetCom Roadster II 56k
+	0002  Roadster II 56k
+06eb  PC Expert Tech. Co., Ltd
+06ef  I.A.C. Geometrische Ingenieurs B.V.
+06f0  T.N.C Industrial Co., Ltd
+	de01  DualCam Video Camera
+	de02  DualCam Still Camera
+06f1  Opcode Systems, Inc.
+	a011  SonicPort
+	a021  SonicPort Optical
+06f2  Emine Technology Co.
+	0011  KVM Switch Keyboard
+06f6  Wintrend Technology Co., Ltd
+06f7  Wailly Technology Ltd
+	0003  USB->Din 4 Adaptor
+06f8  Guillemot Corp.
+	3002  Hercules Blog Webcam
+	3004  Hercules Classic Silver
+	3005  Hercules Dualpix Exchange
+	3007  Hercules Dualpix Chat and Show
+	3020  Hercules Webcam EC300
+	a300  Dual Analog Leader GamePad
+	b000  Hercules DJ Console
+	b121  Hercules P32 DJ
+	c000  Hercules Muse Pocket
+	d002  Hercules DJ Console
+	e000  HWGUSB2-54 WLAN
+	e010  HWGUSB2-54-LB
+	e020  HWGUSB2-54V2-AP
+	e031  Hercules HWNUm-300 Wireless N mini [Realtek RTL8191SU]
+	e032  HWGUm-54 [Hercules Wireless G Ultra Mini Key]
+	e033  Hercules HWNUp-150 802.11n Wireless N Pico [Realtek RTL8188CUS]
+06f9  ASYST electronic d.o.o.
+06fa  HSD S.r.L
+06fc  Motorola Semiconductor Products Sector
+06fd  Boston Acoustics
+	0101  Audio Device
+	0102  Audio Device
+	0201  2-piece Audio Device
+06fe  Gallant Computer, Inc.
+0701  Supercomal Wire & Cable SDN. BHD.
+0703  Bvtech Industry, Inc.
+0705  NKK Corp.
+0706  Ariel Corp.
+0707  Standard Microsystems Corp.
+	0100  2202 Ethernet [klsi]
+	0200  2202 Ethernet [pegasus]
+	0201  EZ Connect USB Ethernet
+	ee04  SMCWUSB32 802.11b Wireless LAN Card
+	ee06  SMC2862W-G v1 EZ Connect 802.11g Adapter [Intersil ISL3886]
+	ee13  SMC2862W-G v2 EZ Connect 802.11g Adapter [Intersil ISL3887]
+0708  Putercom Co., Ltd
+	047e  USB-1284 BRIDGE
+0709  Silicon Systems, Ltd (SSL)
+070a  Oki Electric Industry Co., Ltd
+	4002  Bluetooth Device
+	4003  Bluetooth Device
+070d  Comoss Electronic Co., Ltd
+070e  Excel Cell Electronic Co., Ltd
+0710  Connect Tech, Inc.
+	0001  WhiteHeat (fake ID)
+	8001  WhiteHeat
+0711  Magic Control Technology Corp.
+	0100  Hub
+	0180  IRXpress Infrared Device
+	0181  IRXpress Infrared Device
+	0200  BAY-3U1S1P Serial Port
+	0210  MCT1S Serial Port
+	0230  MCT-232 Serial Port
+	0231  PS/2 Mouse Port
+	0232  Serial On Port
+	0240  PS/2 to USB Converter
+	0260  PS/2 Keyboard and Mouse
+	0300  BAY-3U1S1P Parallel Port
+	0302  Parallel Port
+	0900  SVGA Adapter
+	5001  Trigger UV-002BD[Startech USBVGAE]
+	5100  Magic Control Technology Corp. (USB2VGA dongle)
+0713  Interval Research Corp.
+0714  NewMotion, Inc.
+	0003  ADB converter
+0717  ZNK Corp.
+0718  Imation Corp.
+	0002  SuperDisk 120MB
+	0003  SuperDisk 120MB (Authenticated)
+	0060  Flash Drive
+	0061  Flash Drive
+	0062  Flash Drive
+	0063  Swivel Flash Drive
+	0064  Flash Drive
+	0065  Flash Drive
+	0066  Flash Drive
+	0067  Flash Drive
+	0068  Flash Drive
+	0084  Flash Drive Mini
+	043c  Flash drive 16GB [Nano Pro]
+	0582  Revo Flash Drive
+	0622  TDK Trans-It 4GB
+	0624  TDK Trans-It 16GB
+	1120  RDX External dock (redbud)
+	4006  8x Slim DVD Multi-Format Recorder External
+	d000  Disc Stakka CD/DVD Manager
+0719  Tremon Enterprises Co., Ltd
+071b  Domain Technologies, Inc.
+	0002  DTI-56362-USB Digital Interface Unit
+	0101  Audio4-USB DSP Data Acquisition Unit
+	0184  Archos 2 8GB EM184RB
+	0201  Audio4-5410 DSP Data Acquisition Unit
+	0301  SB-USB JTAG Emulator
+	3203  Rockchip Media Player
+	32bb  Music Mediatouch
+071c  Xionics Document Technologies, Inc.
+071d  Eicon Networks Corp.
+	1000  Diva 2.01 S/T [PSB2115F]
+	1003  Diva ISDN 2.0
+	1005  Diva ISDN 4.0 [HFC-S]
+	2000  Teledat Surf
+071e  Ariston Technologies
+0720  Keyence Corp.
+	8001  LJ-V7001
+0723  Centillium Communications Corp.
+	0002  Palladia 300/400 Adsl Modem
+0726  Vanguard International Semiconductor-America
+0729  Amitm
+	1000  USC-1000 Serial Port
+072e  Sunix Co., Ltd
+072f  Advanced Card Systems, Ltd
+	0001  AC1030-based SmartCard Reader
+	0008  ACR 80 Smart Card Reader
+	0100  AET65
+	0101  AET65
+	0102  AET62
+	0103  AET62
+	0901  ACR1281U-C4 (BSI)
+	1000  PLDT Drive
+	1001  PLDT Drive
+	2011  ACR88U
+	2100  ACR128U
+	2200  ACR122U
+	220a  ACR1281U-C5 (BSI)
+	220c  ACR1283 Bootloader
+	220f  ACR1281U-C2 (qPBOC)
+	2211  ACR1261 1S Dual Reader
+	2214  ACR1222 1SAM PICC Reader
+	2215  ACR1281 2S CL Reader
+	221a  ACR1251U-A1
+	221b  ACR1251U-C
+	2224  ACR1281 1S Dual Reader
+	222b  ACR1222U-C8
+	222c  ACR1283L-D2
+	222d  [OEM Reader]
+	222e  ACR123U
+	2242  ACR1251 1S Dual Reader
+	8002  AET63 BioTRUSTKey
+	8003  ACR120
+	8103  ACR120
+	8201  APG8201
+	8900  ACR89U-A1
+	8901  ACR89U-A2
+	8902  ACR89U-A3
+	9000  ACR38 AC1038-based Smart Card Reader
+	9006  CryptoMate
+	90cc  ACR38 SmartCard Reader
+	90ce  [OEM Reader]
+	90cf  ACR38 SAM Smart Card Reader
+	90d0  PertoSmart EMV - Card Reader
+	90d2  ACR83U
+	90d8  ACR3801
+	90db  CryptoMate64
+	b000  ACR3901U
+	b100  ACR39U
+	b101  ACR39K
+	b102  ACR39T
+	b103  ACR39F
+	b104  ACR39U-SAM
+	b106  ACOS5T2
+	b200  ACOS5T1
+	b301  ACR32-A1
+0731  Susteen, Inc.
+	0528  SonyEricsson DCU-11 Cable
+0732  Goldfull Electronics & Telecommunications Corp.
+0733  ViewQuest Technologies, Inc.
+	0101  Digital Video Camera
+	0110  VQ110 Video Camera
+	0401  CS330 Webcam
+	0402  M-318B Webcam
+	0430  Intel Pro Share Webcam
+	0630  VQ630 Dual Mode Digital Camera(Bulk)
+	0631  Hercules Dualpix
+	0780  Smart Cam Deluxe(composite)
+	1310  Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 (mass storage mode)
+	1311  Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 (PC Cam mode)
+	1314  Mercury 2.1MEG Deluxe Classic Cam
+	2211  Jenoptik jdc 21 LCD Camera
+	2221  Mercury Digital Pro 3.1p
+	3261  Concord 3045 spca536a Camera
+	3281  Cyberpix S550V
+0734  Lasat Communications A/S
+	0001  560V Modem
+	0002  Lasat 560V Modem
+	043a  DVS Audio
+	043b  3DeMon USB Capture
+0735  Asuscom Network
+	2100  ISDN Adapter
+	2101  ISDN Adapter
+	6694  ISDNlink 128K
+	c541  ISDN TA 280
+0736  Lorom Industrial Co., Ltd
+0738  Mad Catz, Inc.
+	2215  X-55 Rhino Stick
+	2237  V.1 Stick
+	4506  Wireless Controller
+	4507  XBox Device
+	4516  Control Pad
+	4520  Control Pad Pro
+	4522  LumiCON
+	4526  Control Pad Pro
+	4530  Universal MC2 Racing Wheel and Pedals
+	4536  MicroCON
+	4540  Beat Pad
+	4556  Lynx Wireless Controller
+	4566  XBox Device
+	4576  XBox Device
+	4586  MicroCON Wireless Controller
+	4588  Blaster
+	45ff  Beat Pad
+	4716  Wired Xbox 360 Controller
+	4718  Street Fighter IV FightStick SE for Xbox 360
+	4726  Xbox 360 Controller
+	4728  Street Fighter IV FightPad for Xbox 360
+	4730  MC2 Racing Wheel for Xbox 360
+	4736  MicroCON for Xbox 360
+	4738  Street Fighter IV Wired Controller for Xbox 360
+	4740  Beat Pad for Xbox 360
+	4743  Beat Pad Pro
+	4758  Arcade Game Stick
+	4a01  FightStick TE 2 for Xbox One
+	6040  Beat Pad Pro
+	8818  Street Fighter IV Arcade FightStick (PS3)
+	9871  Portable Drum Kit
+	a109  S.T.R.I.K.E.7 Keyboard
+	a215  X-55 Rhino Throttle
+	b726  Modern Warfare 2 Controller for Xbox 360
+	b738  Marvel VS Capcom 2 TE FightStick for Xbox 360
+	beef  Joytech Neo SE Advanced Gamepad
+	cb02  Saitek Cyborg Rumble Pad
+	cb03  Saitek P3200 Rumble Pad
+	cb29  Saitek Aviator Stick AV8R02
+	f738  Super Street Fighter IV FightStick TE S for Xbox 360
+073a  Chaplet Systems, Inc.
+	2230  infrared dongle for remote
+073b  Suncom Technologies
+073c  Industrial Electronic Engineers, Inc.
+	0305  Pole Display (PC305-3415  2 x 20 Line Display)
+	0322  Pole Display (PC322-3415  2 x 20 Line Display)
+	0324  Pole Display (LB324-USB   4 x 20 Line Display)
+	0330  Pole Display (P330-3415   2 x 20 Line Display)
+	0424  Pole Display (SP324-4415  4 x 20 Line Display)
+	0450  Pole Display (L450-USB   Graphic Line Display)
+	0505  Pole Display (SPC505-3415 2 x 20 Line Display)
+	0522  Pole Display (SPC522-3415 2 x 20 Line Display)
+	0624  Pole Display (SP324-3415  4 x 20 Line Display)
+073d  Eutron S.p.a.
+	0000  SmartKey
+	0005  Crypto Token
+	0007  CryptoIdentity CCID
+	0025  SmartKey 3
+	0c00  Pocket Reader
+	0d00  StarSign Bio Token 3.0 EU
+073e  NEC, Inc.
+	0301  Game Pad
+0742  Stollmann
+	2008  ISDN TA [HFC-S]
+	2009  ISDN TA [HFC-S]
+	200a  ISDN TA [HFC-S]
+0745  Syntech Information Co., Ltd
+0746  Onkyo Corp.
+	4700  Integra MZA-4.7
+	5500  SE-U55 Audio Device
+0747  Labway Corp.
+0748  Strong Man Enterprise Co., Ltd
+0749  EVer Electronics Corp.
+074a  Ming Fortune Industry Co., Ltd
+074b  Polestar Tech. Corp.
+074c  C-C-C Group PLC
+074d  Micronas GmbH
+	3553  Composite USB-Device
+	3554  Composite USB-Device
+	3556  Composite USB-Device
+074e  Digital Stream Corp.
+	0001  PS/2 Adapter
+	0002  PS/2 Adapter
+0755  Aureal Semiconductor
+0757  Network Technologies, Inc.
+	0a00  SUN Adapter
+0758  Carl Zeiss Microscopy GmbH
+075b  Sophisticated Circuits, Inc.
+	0001  Kick-off! Watchdog
+0763  M-Audio
+	0115  O2 / KeyRig 25
+	0117  Trigger Finger
+	0119  MidAir
+	0150  M-Audio Uno
+	0160  M-Audio 1x1
+	0192  M-Audio Keystation 88es
+	0193  ProKeys 88
+	0194  ProKeys 88sx
+	0195  Oxygen 8 v2
+	0196  Oxygen 49
+	0197  Oxygen 61
+	0198  Axiom 25
+	0199  Axiom 49
+	019a  Axiom 61
+	019b  KeyRig 49
+	019c  KeyStudio
+	1001  MidiSport 2x2
+	1002  MidiSport 2x2
+	1003  MidiSport 2x2
+	1010  MidiSport 1x1
+	1011  MidiSport 1x1
+	1014  M-Audio Keystation Loader
+	1015  M-Audio Keystation
+	1020  Midisport 4x4
+	1021  MidiSport 4x4
+	1030  M-Audio MIDISPORT 8x8
+	1031  MidiSport 8x8/s Loader
+	1033  MidiSport 8x8/s
+	1040  M-Audio MidiSport 2x4 Loader
+	1041  M-Audio MidiSport 2x4
+	1110  MidiSport 1x1
+	2001  M Audio Quattro
+	2002  M Audio Duo
+	2003  M Audio AudioPhile
+	2004  M-Audio MobilePre
+	2006  M-Audio Transit
+	2007  M-Audio Sonica Theater
+	2008  M-Audio Ozone
+	200d  M-Audio OmniStudio
+	200f  M-Audio MobilePre
+	2010  M-Audio Fast Track
+	2012  M-Audio Fast Track Pro
+	2013  M-Audio JamLab
+	2015  M-Audio RunTime DFU
+	2016  M-Audio RunTime DFU
+	2019  M-Audio Ozone Academic
+	201a  M-Audio Micro
+	201b  M-Audio RunTime DFU
+	201d  M-Audio Producer
+	2024  M-Audio Fast Track MKII
+	2080  M-Audio Fast Track Ultra
+	2081  M-Audio RunTime DFU / Fast Track Ultra 8R
+	2803  M-Audio Audiophile DFU
+	2804  M-Audio MobilePre DFU
+	2806  M-Audio Transit DFU
+	2815  M-Audio DFU
+	2816  M-Audio DFU
+	281b  M-Audio DFU
+	2880  M-Audio DFU
+	2881  M-Audio DFU
+0764  Cyber Power System, Inc.
+	0005  Cyber Power UPS
+	0501  CP1500 AVR UPS
+	0601  PR1500LCDRT2U UPS
+0765  X-Rite, Inc.
+	5001  Huey PRO Colorimeter
+	5010  X-Rite Pantone Color Sensor
+	5020  i1 Display Pro
+	6003  ColorMunki Smile
+	d094  X-Rite DTP94 [Quato Silver Haze Pro]
+0766  Jess-Link Products Co., Ltd
+	0017  Packard Bell Carbon
+	001b  Packard Bell Go
+	0204  TopSpeed Cyberlink Remote Control
+0767  Tokheim Corp.
+0768  Camtel Technology Corp.
+	0006  Camtel Technology USB TV Genie Pro FM Model TVB330
+	0023  eHome Infrared Receiver
+0769  Surecom Technology Corp.
+	11f2  EP-9001-g 802.11g 54M WLAN Adapter
+	11f3  RT2570
+	11f7  802.11g 54M WLAN Adapter
+	31f3  RT2573
+076a  Smart Technology Enablers, Inc.
+076b  OmniKey AG
+	0596  CardMan 2020
+	1021  CardMan 1021
+	1221  CardMan 1221
+	1784  CardMan 6020
+	3021  CardMan 3021 / 3121
+	3022  CardMan 3121 (HID Technologies)
+	3610  CardMan 3620
+	3621  CardMan 3621
+	3821  CardMan 3821
+	4321  CardMan 4321
+	5121  CardMan 5121
+	5125  CardMan 5125
+	5321  CardMan 5321
+	5340  CardMan 5021 CL
+	6622  CardMan 6121
+	a011  CCID Smart Card Reader Keyboard
+	a021  CCID Smart Card Reader
+	a022  CardMan Smart@Link
+	c000  CardMan 3x21 CS
+	c001  CardMan 5121 CS
+076c  Partner Tech
+	0204  CD7220 Communications Port
+	0302  RP-600
+076d  Denso Corp.
+076e  Kuan Tech Enterprise Co., Ltd
+076f  Jhen Vei Electronic Co., Ltd
+0770  Welch Allyn, Inc - Medical Division
+0771  Observator Instruments BV
+	4455  OMC45III
+	ae0f  OMC45III
+0772  Your data Our Care
+0774  AmTRAN Technology Co., Ltd
+0775  Longshine Electronics Corp.
+0776  Inalways Corp.
+0777  Comda Enterprise Corp.
+0778  Volex, Inc.
+0779  ON Semiconductor (formerly Fairchild)
+	0133  FUSB307B
+	0134  FUSB308B
+077a  Sankyo Seiki Mfg. Co., Ltd
+077b  Linksys
+	08be  BEFCMU10 v4 Cable Modem
+	2219  WUSB11 V2.6 802.11b Adapter
+	2226  USB200M 100baseTX Adapter
+	2227  Network Everywhere NWU11B
+077c  Forward Electronics Co., Ltd
+	0005  NEC Keyboard
+077d  Griffin Technology
+	0223  IMic Audio In/Out
+	0405  iMate, ADB Adapter
+	0410  PowerMate
+	041a  PowerWave
+	04aa  SoundKnob
+	07af  iMic
+	1016  AirClick
+	627a  Radio SHARK
+077e  Softing AG
+	008a  NetLink Compact MPI/Profibus adapter
+	0160  EDICblue
+	0220  VAS5054A
+077f  Well Excellent & Most Corp.
+0780  Sagem Monetel GmbH
+	1202  ORGA 900 Smart Card Terminal Virtual Com Port
+	1302  ORGA 6000 Smart Card Terminal Virtual Com Port
+	1303  ORGA 6000 Smart Card Terminal USB RNDIS
+	df55  ORGA 900/6000 Smart Card Terminal DFU
+0781  SanDisk Corp.
+	0001  SDDR-05a ImageMate CompactFlash Reader
+	0002  SDDR-31 ImageMate II CompactFlash Reader
+	0005  SDDR-05b (CF II) ImageMate CompactFlash Reader
+	0100  ImageMate SDDR-12
+	0200  SDDR-09 (SSFDC) ImageMate SmartMedia Reader [eusb]
+	0400  SecureMate SD/MMC Reader
+	0621  SDDR-86 Imagemate 6-in-1 Reader
+	0720  Sansa C200 series in recovery mode
+	0729  Sansa E200 series in recovery mode
+	0810  SDDR-75 ImageMate CF-SM Reader
+	0830  ImageMate CF/MMC/SD Reader
+	1234  Cruzer Mini Flash Drive
+	5150  SDCZ2 Cruzer Mini Flash Drive (thin)
+	5151  Cruzer Micro Flash Drive
+	5153  Cruzer Flash Drive
+	5204  Cruzer Crossfire
+	5402  U3 Cruzer Micro
+	5406  Cruzer Micro U3
+	5408  Cruzer Titanium U3
+	540e  Cruzer Contour Flash Drive
+	5530  Cruzer
+	5567  Cruzer Blade
+	556b  Cruzer Edge
+	556c  Ultra
+	556d  Memory Vault
+	5571  Cruzer Fit
+	5575  Cruzer Glide
+	5576  Cruzer Facet
+	5577  Cruzer Pop (8GB)
+	557d  Cruzer Force
+	5580  SDCZ80 Flash Drive
+	5581  Ultra
+	5583  Ultra Fit
+	5588  Extreme Pro
+	5589  SD8SB8U512G[Extreme 500]
+	558c  Extreme Portable SSD
+	5590  Ultra Dual
+	5591  Ultra Flair
+	5e10  Encrypted
+	6100  Ultra II SD Plus 2GB
+	6500  uSSD 5000
+	7100  Cruzer Mini
+	7101  Pen Flash
+	7102  Cruzer Mini
+	7103  Cruzer Mini
+	7104  Cruzer Micro Mini 256MB Flash Drive
+	7105  Cruzer Mini
+	7106  Cruzer Mini
+	7112  Cruzer Micro 128MB Flash Drive
+	7113  Cruzer Micro 256MB Flash Drive
+	7114  Cruzer Mini
+	7115  Cruzer Mini
+	7301  Sansa e100 series (mtp)
+	7302  Sansa e100 series (msc)
+	7400  Sansa M200 series (mtp)
+	7401  Sansa M200 series (msc)
+	7420  Sansa E200 series (mtp)
+	7421  Sansa E200 Series (msc)
+	7422  Sansa E200 series v2 (mtp)
+	7423  Sansa E200 series v2 (msc)
+	7430  Sansa M200 series
+	7431  Sansa M200 series V4 (msc)
+	7432  Sansa Clip (mtp)
+	7433  Sansa Clip (msc)
+	7434  Sansa Clip V2 (mtp)
+	7435  Sansa Clip V2 (msc)
+	7450  Sansa C250
+	7451  Sansa C240
+	7460  Sansa Express
+	7480  Sansa Connect
+	7481  Sansa Connect (in recovery mode)
+	74b0  Sansa View (msc)
+	74b1  Sansa View (mtp)
+	74c0  Sansa Fuze (mtp)
+	74c1  Sansa Fuze (msc)
+	74c2  Sansa Fuze V2 (mtp)
+	74c3  Sansa Fuze V2 (msc)
+	74d0  Sansa Clip+ (mtp)
+	74d1  Sansa Clip+ (msc)
+	74e5  Sansa Clip Zip
+	8181  Pen Flash
+	8183  Hi-Speed Mass Storage Device
+	8185  SDCZ2 Cruzer Mini Flash Drive (older, thick)
+	8888  Card Reader
+	8889  SDDR-88 Imagemate 8-in-1 Reader
+	8919  Card Reader
+	8989  ImageMate 12-in-1 Reader
+	9191  ImageMate CF
+	9219  Card Reader
+	9292  ImageMate CF Reader/Writer
+	9393  ImageMate SD-MMC
+	9595  ImageMate xD-SM
+	9797  ImageMate MS-PRO
+	9919  Card Reader
+	9999  SDDR-99 5-in-1 Reader
+	a7c1  Storage device (SD card reader)
+	a7e8  SDDR-113 MicroMate SDHC Reader
+	b2b3  SDDR-103 MobileMate SD+ Reader
+	b2b5  SDDR-104 MobileMate SD+ Reader
+	b4b5  SDDR-89 V4 ImageMate 12-in-1 Reader
+	b6b7  SDDR-99 V4 ImageMate 5-in-1 Reader
+	b6ba  CF SDDR-289
+	cfc9  SDDR-489 ImageMate Pro Reader
+0782  Trackerball
+0783  C3PO
+	0003  LTC31 SmartCard Reader
+	0006  LTC31v2
+	0009  KBR36
+	0010  LTC32
+0784  Vivitar, Inc.
+	0100  Vivicam 2655
+	1310  Vivicam 3305
+	1688  Vivicam 3665
+	1689  Gateway DC-M42/Labtec DC-505/Vivitar Vivicam 3705
+	2620  AOL Photocam Plus
+	2888  Polaroid DC700
+	3330  Nytec ND-3200 Camera
+	4300  Traveler D1
+	5260  Werlisa Sport PX 100 / JVC GC-A33 Camera
+	5300  Pretec dc530
+0785  NTT-ME
+	0001  MN128mini-V ISDN TA
+	0003  MN128mini-J ISDN TA
+0789  Logitec Corp.
+	0026  LHD Device
+	0033  DVD Multi-plus unit LDR-H443SU2
+	0063  LDR Device
+	0064  LDR-R Device
+	00b3  DVD Multi-plus unit LDR-H443U2
+	00cc  LHD Device
+	0105  LAN-TX/U1H2 10/100 Ethernet Adapter [pegasus II]
+	010c  Realtek RTL8187 Wireless 802.11g 54Mbps Network Adapter
+	0160  LAN-GTJ/U2A
+	0162  LAN-WN22/U2 Wireless LAN Adapter
+	0163  LAN-WN12/U2 Wireless LAN Adapter
+	0164  LAN-W150/U2M Wireless LAN Adapter
+	0166  LAN-W300N/U2 Wireless LAN Adapter
+	0168  LAN-W150N/U2 Wireless LAN Adapter
+	0170  LAN-W300AN/U2 Wireless LAN Adapter
+078b  Happ Controls, Inc.
+	0010  Driving UGCI
+	0020  Flying UGCI
+	0030  Fighting UGCI
+078c  GTCO/CalComp
+	0090  Tablet Adapter
+	0100  Tablet Adapter
+	0200  Tablet Adapter
+	0300  Tablet Adapter
+	0400  Digitizer (Whiteboard)
+078e  Brincom, Inc.
+0790  Pro-Image Manufacturing Co., Ltd
+0791  Copartner Wire and Cable Mfg. Corp.
+0792  Axis Communications AB
+0793  Wha Yu Industrial Co., Ltd
+0794  ABL Electronics Corp.
+0795  RealChip, Inc.
+0796  Certicom Corp.
+0797  Grandtech Semiconductor Corp.
+	6801  Flatbed Scanner
+	6802  InkJet Color Printer
+	8001  SmartCam
+	801a  Typhoon StyloCam
+	801c  Meade Binoculars/Camera
+	8901  ScanHex SX-35a
+	8909  ScanHex SX-35b
+	8911  ScanHex SX-35c
+0798  Optelec
+	0001  Braille Voyager
+	0640  BC640
+	0680  BC680
+0799  Altera
+	7651  Programming Unit
+079b  Sagem
+	0024  MSO300/MSO301 Fingerprint Sensor
+	0026  MSO350/MSO351 Fingerprint Sensor & SmartCard Reader
+	0027  USB-Serial Controller
+	002f  Mobile
+	0030  Mobile Communication Device
+	0042  Mobile
+	0047  CBM/MSO1300 Fingerprint Sensor
+	004a  XG-760A 802.11bg
+	004b  Wi-Fi 11g adapter
+	0052  MSO1350 Fingerprint Sensor & SmartCard Reader
+	0056  Agfa AP1100 Photo Printer
+	005d  Mobile Mass Storage
+	0062  XG-76NA 802.11bg
+	0078  Laser Pro Monochrome MFP
+079d  Alfadata Computer Corp.
+	0201  GamePort Adapter
+07a1  Digicom S.p.A.
+	d952  Palladio USB V.92 Modem
+07a2  National Technical Systems
+07a3  Onnto Corp.
+07a4  Be, Inc.
+07a6  ADMtek, Inc.
+	07c2  AN986A Ethernet
+	0986  AN986 Pegasus Ethernet
+	8266  Infineon WildCard-USB Wireless LAN Adapter
+	8511  ADM8511 Pegasus II Ethernet
+	8513  ADM8513 Pegasus II Ethernet
+	8515  ADM8515 Pegasus II Ethernet
+07aa  Corega K.K.
+	0001  Ether USB-T Ethernet [klsi]
+	0004  FEther USB-TX Ethernet [pegasus]
+	000c  WirelessLAN USB-11
+	000d  FEther USB-TXS
+	0011  Wireless LAN USB-11 mini
+	0012  Stick-11 802.11b Adapter
+	0017  FEther USB2-TX
+	0018  Wireless LAN USB-11 mini 2
+	001a  ULUSB-11 Key
+	001c  CG-WLUSB2GT 802.11g Wireless Adapter [Intersil ISL3880]
+	0020  CG-WLUSB2GTST 802.11g Wireless Adapter [Intersil ISL3887]
+	002e  CG-WLUSB2GPX [Ralink RT2571W]
+	002f  CG-WLUSB2GNL
+	0031  CG-WLUSB2GS 802.11bg [Atheros AR5523]
+	003c  CG-WLUSB2GNL
+	003f  CG-WLUSB300AGN
+	0041  CG-WLUSB300GNS
+	0042  CG-WLUSB300GNM
+	0043  CG-WLUSB300N rev A2 [Realtek RTL8192U]
+	0047  CG-WLUSBNM
+	0051  CG-WLUSB300NM
+	7613  Stick-11 V2 802.11b Adapter
+	9601  FEther USB-TXC
+07ab  Freecom Technologies
+	fc01  IDE bridge
+	fc02  Cable II USB-2
+	fc03  USB2-IDE IDE bridge
+	fc77  Quattro 3.0
+	fcd6  Freecom HD Classic
+	fcf6  DataBar
+	fcf8  Freecom Classic SL Network Drive
+	fcfe  Hard Drive 80GB
+07af  Microtech
+	0004  SCSI-DB25 SCSI Bridge [shuttle]
+	0005  SCSI-HD50 SCSI Bridge [shuttle]
+	0006  CameraMate SmartMedia and CompactFlash Card Reader [eusb/shuttle]
+	fc01  Freecom USB-IDE
+07b0  Trust Technologies
+	0001  ISDN TA
+	0002  ISDN TA128 Plus
+	0003  ISDN TA128 Deluxe
+	0005  ISDN TA128 SE
+	0006  ISDN TA 128 [HFC-S]
+	0007  ISDN TA [HFC-S]
+	0008  ISDN TA
+07b1  IMP, Inc.
+07b2  Motorola BCS, Inc.
+	0100  SURFboard Voice over IP Cable Modem
+	0900  SURFboard Gateway
+	0950  SURFboard SBG950 Gateway
+	1000  SURFboard SBG1000 Gateway
+	4100  SurfBoard SB4100 Cable Modem
+	4200  SurfBoard SB4200 Cable Modem
+	4210  SurfBoard 4210 Cable Modem
+	4220  SURFboard SB4220 Cable Modem
+	4500  CG4500 Communications Gateway
+	450b  CG4501 Communications Gateway
+	450e  CG4500E Communications Gateway
+	5100  SurfBoard SB5100 Cable Modem
+	5101  SurfBoard SB5101 Cable Modem
+	5120  SurfBoard SB5120 Cable Modem (RNDIS)
+	5121  Surfboard 5121 Cable Modem
+	6002  MTR7000 Cable Tuning Adapter
+	7030  WU830G 802.11bg Wireless Adapter [Envara WiND512]
+07b3  Plustek, Inc.
+	0001  OpticPro 1212U Scanner
+	0003  Scanner
+	0010  OpticPro U12 Scanner
+	0011  OpticPro U24 Scanner
+	0013  OpticPro UT12 Scanner
+	0014  Scanner
+	0015  OpticPro U24 Scanner
+	0017  OpticPro UT12/16/24 Scanner
+	0204  Scanner
+	0400  OpticPro 1248U Scanner
+	0401  OpticPro 1248U Scanner #2
+	0403  OpticPro U16B Scanner
+	0404  Scanner
+	0405  A8 Namecard-s Controller
+	0406  A8 Namecard-D Controller
+	0410  Scanner
+	0412  Scanner
+	0413  OpticSlim 1200 Scanner
+	0601  OpticPro ST24 Scanner
+	0800  OpticPro ST48 Scanner
+	0807  OpticFilm 7200 scanner
+	0900  OpticBook 3600 Scanner
+	090c  OpticBook 3600 Plus Scanner
+	0a06  TVcam VD100
+	0b00  SmartPhoto F50
+	0c00  OpticPro ST64 Scanner
+	0c03  OpticPro ST64+ Scanner
+	0c04  Optic Film 7200i scanner
+	0c0c  PL806 Scanner
+	0c26  OpticBook 4600 Scanner
+	0c2b  Mobile Office D428 Scanner
+	0e08  OpticBook A300 Scanner
+	1300  OpticBook 3800 Scanner
+	1301  OpticBook 4800 Scanner
+	130f  Bookreader v200
+07b4  Olympus Optical Co., Ltd
+	0100  Camedia C-2100/C-3000 Ultra Zoom Camera
+	0102  Camedia E-10/C-220/C-50 Camera
+	0105  Camedia C-310Z/C-700/C-750UZ/C-755/C-765UZ/C-3040/C-4000/C-5050Z/D-560/C-3020Z Zoom Camera
+	0109  C-370Z/C-500Z/D-535Z/X-450
+	010a  MAUSB-10 xD and SmartMedia Card Reader
+	0112  MAUSB-100 xD Card Reader
+	0113  Mju 500 / Stylus Digital Camera (PTP)
+	0114  C-350Z Camera
+	0118  Mju Mini Digital/Mju Digital 500 Camera / Stylus 850 SW
+	0125  Tough TG-1 Camera
+	0126  VR340/D750 Digital Camera
+	0184  P-S100 port
+	0202  Foot Switch RS-26
+	0203  Digital Voice Recorder DW-90
+	0206  Digital Voice Recorder DS-330
+	0207  Digital Voice Recorder & Camera W-10
+	0209  Digital Voice Recorder DM-20
+	020b  Digital Voice Recorder DS-4000
+	020d  Digital Voice Recorder VN-240PC
+	0211  Digital Voice Recorder DS-2300
+	0218  Foot Switch RS-28
+	0244  Digital Voice Recorder VN-8500PC
+	024f  Digital Voice Recorder DS-7000
+	0280  m:robe 100
+	0295  Digital Voice Recorder VN-541PC
+07b5  Mega World International, Ltd
+	0017  Joystick
+	0213  Thrustmaster Firestorm Digital 3 Gamepad
+	0312  Gamepad
+	9902  GamePad
+07b6  Marubun Corp.
+07b7  TIME Interconnect, Ltd
+07b8  AboCom Systems Inc
+	110c  XX1
+	1201  IEEE 802.11b Adapter
+	200c  XX2
+	2573  Wireless LAN Card
+	2770  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
+	2870  802.11n/b/g Wireless LAN USB2.0 Adapter
+	3070  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
+	3071  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
+	3072  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
+	4000  DU-E10 Ethernet [klsi]
+	4002  DU-E100 Ethernet [pegasus]
+	4003  1/10/100 Ethernet Adapter
+	4004  XX4
+	4007  XX5
+	400b  XX6
+	400c  XX7
+	401a  RTL8151
+	4102  USB 1.1 10/100M Fast Ethernet Adapter
+	4104  XX9
+	420a  UF200 Ethernet
+	5301  GW-US54ZGL 802.11bg
+	6001  WUG2690 802.11bg Wireless Module [ZyDAS ZD1211+AL2230]
+	8188  AboCom Systems Inc [WN2001 Prolink Wireless-N Nano Adapter]
+	a001  WUG2200 802.11g Wireless Adapter [Envara WiND512]
+	abc1  DU-E10 Ethernet [pegasus]
+	b000  BWU613
+	b02a  AboCom Bluetooth Device
+	b02b  Bluetooth dongle
+	b02c  BCM92045DG-Flash with trace filter
+	b02d  BCM92045DG-Flash with trace filter
+	b02e  BCM92045DG-Flash with trace filter
+	b030  BCM92045DG-Flash with trace filter
+	b031  BCM92045DG-Flash with trace filter
+	b032  BCM92045DG-Flash with trace filter
+	b033  BCM92045DG-Flash with trace filter
+	b21a  WUG2400 802.11g Wireless Adapter [Texas Instruments TNETW1450]
+	b21b  HWU54DM
+	b21c  RT2573
+	b21d  RT2573
+	b21e  RT2573
+	b21f  WUG2700
+	d011  MP3 Player
+	e001  Mass Storage Device
+	e002  Mass Storage Device
+	e003  Mass Storage Device
+	e004  Mass Storage Device
+	e005  Mass Storage Device
+	e006  Mass Storage Device
+	e007  Mass Storage Device
+	e008  Mass Storage Device
+	e009  Mass Storage Device
+	e00a  Mass Storage Device
+	e4f0  Card Reader Driver
+	f101  DSB-560 Modem [atlas]
+07bc  Canon Computer Systems, Inc.
+07bd  Webgear, Inc.
+07be  Veridicom
+	1935  Elektron Music Machines
+07c0  Code Mercenaries Hard- und Software GmbH
+	1113  JoyWarrior24F8
+	1116  JoyWarrior24F14
+	1121  The Claw
+	1500  IO-Warrior 40
+	1501  IO-Warrior 24
+	1502  IO-Warrior 48
+	1503  IO-Warrior 28
+	1511  IO-Warrior 24 Power Vampire
+	1512  IO-Warrior 24 Power Vampire
+07c1  Keisokugiken
+	0068  HKS-0200 USBDAQ
+07c4  Datafab Systems, Inc.
+	0102  USB to LS120
+	0103  USB to IDE
+	1234  USB to ATAPI
+	a000  CompactFlash Card Reader
+	a001  CompactFlash & SmartMedia Card Reader [eusb]
+	a002  Disk Drive
+	a003  Datafab-based Reader
+	a004  USB to MMC Class Drive
+	a005  CompactFlash & SmartMedia Card Reader
+	a006  SmartMedia Card Reader
+	a007  Memory Stick Class Drive
+	a103  MDSM-B reader
+	a107  USB to Memory Stick (LC1) Drive
+	a109  LC1 CompactFlash & SmartMedia Card Reader
+	a10b  USB to CF+MS(LC1)
+	a200  DF-UT-06 Hama MMC/SD Reader
+	a400  CompactFlash & Microdrive Reader
+	a600  Card Reader
+	a604  12-in-1 Card Reader
+	ad01  Mass Storage Device
+	ae01  Mass Storage Device
+	af01  Mass Storage Device
+	b000  USB to CF(LC1)
+	b001  USB to CF+PCMCIA
+	b004  MMC/SD Reader
+	b006  USB to PCMCIA
+	b00a  USB to CF+SD Drive(LC1)
+	b00b  USB to Memory Stick(LC1)
+	c010  Kingston FCR-HS2/ATA Card Reader
+07c5  APG Cash Drawer
+	0500  Cash Drawer
+07c6  ShareWave, Inc.
+	0002  Bodega Wireless Access Point
+	0003  Bodega Wireless Network Adapter
+07c7  Powertech Industrial Co., Ltd
+07c8  B.U.G., Inc.
+	0202  MN128-SOHO PAL
+07c9  Allied Telesyn International
+	b100  AT-USB100
+07ca  AVerMedia Technologies, Inc.
+	0002  AVerTV PVR USB/EZMaker Pro Device
+	0026  AVerTV
+	0337  A867 DVB-T dongle
+	0837  H837 Hybrid ATSC/QAM
+	1228  MPEG-2 Capture Device (M038)
+	1830  AVerTV Volar Video Capture (H830)
+	1871  TD310 DVB-T/T2/C dongle
+	3835  AVerTV Volar Green HD (A835B)
+	850a  AverTV Volar Black HD (A850)
+	850b  AverTV Red HD+ (A850T)
+	a309  AVerTV DVB-T (A309)
+	a801  AVerTV DVB-T (A800)
+	a815  AVerTV DVB-T Volar X (A815)
+	a827  AVerTV Hybrid Volar HX (A827)
+	a867  AVerTV DVB-T (A867)
+	b300  A300 DVB-T TV receiver
+	b800  MR800 FM Radio
+	e880  MPEG-2 Capture Device (E880)
+	e882  MPEG-2 Capture Device (E882)
+07cb  Kingmax Technology, Inc.
+07cc  Carry Computer Eng., Co., Ltd
+	0000  CF Card Reader
+	0001  Reader (UICSE)
+	0002  Reader (UIS)
+	0003  SM Card Reader
+	0004  SM/CF/PCMCIA Card Reader
+	0005  Reader (UISA2SE)
+	0006  SM/CF/PCMCIA Card Reader
+	0007  Reader (UISA6SE)
+	000c  SM/CF Card Reader
+	000d  SM/CF Card Reader
+	000e  Reader (UISDA)
+	000f  Reader (UICLIK)
+	0010  Reader (UISMA)
+	0012  Reader (UISC6SE-FLASH)
+	0014  Litronic Fortezza Reader
+	0030  Mass Storage (UISDMC12S)
+	0040  Mass Storage (UISDMC13S)
+	0100  Reader (UID)
+	0101  Reader (UIM)
+	0102  Reader (UISDMA)
+	0103  Reader (UISDMC)
+	0104  Reader (UISDM)
+	0200  6-in-1 Card Reader
+	0201  Mass Storage (UISDMC1S & UISDMC3S)
+	0202  Mass Storage (UISDMC5S)
+	0203  Mass Storage (UISMC5S)
+	0204  Mass Storage (UIM4/5S & UIM7S)
+	0205  Mass Storage (UIS4/5S & UIS7S)
+	0206  Mass Storage (UISDMC10S & UISDMC11S)
+	0207  Mass Storage (UPIDMA)
+	0208  Mass Storage (UCFC II)
+	0210  Mass Storage (UPIXXA)
+	0213  Mass Storage (UPIDA)
+	0214  Mass Storage (UPIMA)
+	0215  Mass Storage (UPISA)
+	0217  Mass Storage (UPISDMA)
+	0223  Mass Storage (UCIDA)
+	0224  Mass Storage (UCIMA)
+	0225  Mass Storage (UIS7S)
+	0227  Mass Storage (UCIDMA)
+	0234  Mass Storage (UIM7S)
+	0235  Mass Storage (UIS4S-S)
+	0237  Velper (UISDMC4S)
+	0300  6-in-1 Card Reader
+	0301  6-in-1 Card Reader
+	0303  Mass Storage (UID10W)
+	0304  Mass Storage (UIM10W)
+	0305  Mass Storage (UIS10W)
+	0308  Mass Storage (UIC10W)
+	0309  Mass Storage (UISC3W)
+	0310  Mass Storage (UISDMA2W)
+	0311  Mass Storage (UISDMC14W)
+	0320  Mass Storage (UISDMC4W)
+	0321  Mass Storage (UISDMC37W)
+	0330  WINTERREADER Reader
+	0350  9-in-1 Card Reader
+	0500  Mass Storage
+	0501  Mass Storage
+07cd  Elektor
+	0001  USBuart Serial Port
+07ce  Nidec Copal
+	c007  DPB-4000
+	c009  DPB-6000
+	c010  CPB-7000
+07cf  Casio Computer Co., Ltd
+	1001  QV-8000SX/5700/3000EX Digicam; Exilim EX-M20
+	1003  Exilim EX-S500
+	1004  Exilim EX-Z120
+	1011  USB-CASIO PC CAMERA
+	1116  EXILIM EX-Z19
+	1125  Exilim EX-H10 Digital Camera (mass storage mode)
+	1133  Exilim EX-Z350 Digital Camera (mass storage mode)
+	1225  Exilim EX-H10 Digital Camera (PictBridge mode)
+	1233  Exilim EX-Z350 Digital Camera (PictBridge mode)
+	2002  E-125 Cassiopeia Pocket PC
+	3801  WMP-1 MP3-Watch
+	4001  Label Printer KL-P1000
+	4007  CW50 Device
+	4104  Cw75 Device
+	4107  CW-L300 Device
+	4500  LV-20 Digital Camera
+	6101  fx-9750gII
+	6102  fx-CP400
+	6801  PL-40R
+	6802  MIDI Keyboard
+	6803  CTK-3500 (MIDI keyboard)
+07d0  Dazzle
+	0001  Digital Video Creator I
+	0002  Global Village VideoFX Grabber
+	0003  Fusion Model DVC-50 Rev 1 (NTSC)
+	0004  DVC-800 (PAL) Grabber
+	0005  Fusion Video and Audio Ports
+	0006  DVC 150 Loader Device
+	0007  DVC 150
+	0327  Fusion Digital Media Reader
+	1001  DM-FLEX DFU Adapter
+	1002  DMHS2 DFU Adapter
+	1102  CF Reader/Writer
+	1103  SD Reader/Writer
+	1104  SM Reader/Writer
+	1105  MS Reader/Writer
+	1106  xD/SM Reader/Writer
+	1202  MultiSlot Reader/Writer
+	2000  FX2 DFU Adapter
+	2001  eUSB CompactFlash Reader
+	4100  Kingsun SF-620 Infrared Adapter
+	4101  Connectivity Cable (CA-42 clone)
+	4959  Kingsun KS-959 Infrared Adapter
+07d1  D-Link System
+	13ec  VvBus for Helium 2xx
+	13ed  VvBus for Helium 2xx
+	13f1  DSL-302G Modem
+	13f2  DSL-502G Router
+	3300  DWA-130 802.11n Wireless N Adapter(rev.E) [Realtek RTL8191SU]
+	3302  DWA-130 802.11n Wireless N Adapter(rev.C2) [Realtek RTL8191SU]
+	3303  DWA-131 802.11n Wireless N Nano Adapter(rev.A1) [Realtek RTL8192SU]
+	3304  FR-300USB 802.11bgn Wireless Adapter
+	3a07  WUA-2340 RangeBooster G Adapter(rev.A) [Atheros AR5523]
+	3a08  WUA-2340 RangeBooster G Adapter(rev.A) (no firmware) [Atheros AR5523]
+	3a09  DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A2) [Atheros AR9170+AR9104]
+	3a0d  DWA-120 802.11g Wireless 108G Adapter [Atheros AR5523]
+	3a0f  DWA-130 802.11n Wireless N Adapter(rev.D) [Atheros AR9170+AR9102]
+	3a10  DWA-126 802.11n Wireless Adapter [Atheros AR9271]
+	3b01  AirPlus G DWL-G122 Wireless Adapter(rev.D) [Marvell 88W8338+88W8010]
+	3b10  DWA-142 RangeBooster N Adapter [Marvell 88W8362+88W8060]
+	3b11  DWA-130 802.11n Wireless N Adapter(rev.A1) [Marvell 88W8362+88W8060]
+	3c03  AirPlus G DWL-G122 Wireless Adapter(rev.C1) [Ralink RT2571W]
+	3c04  WUA-1340
+	3c05  EH103 Wireless G Adapter
+	3c06  DWA-111 802.11bg Wireless Adapter [Ralink RT2571W]
+	3c07  DWA-110 Wireless G Adapter(rev.A1) [Ralink RT2571W]
+	3c09  DWA-140 RangeBooster N Adapter(rev.B1) [Ralink RT2870]
+	3c0a  DWA-140 RangeBooster N Adapter(rev.B2) [Ralink RT3072]
+	3c0b  DWA-110 Wireless G Adapter(rev.B) [Ralink RT2870]
+	3c0d  DWA-125 Wireless N 150 Adapter(rev.A1) [Ralink RT3070]
+	3c0e  WUA-2340 RangeBooster G Adapter(rev.B) [Ralink RT2070]
+	3c0f  AirPlus G DWL-G122 Wireless Adapter(rev.E1) [Ralink RT2070]
+	3c10  DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A1) [Atheros AR9170+AR9104]
+	3c11  DWA-160 Xtreme N Dual Band USB Adapter(rev.B) [Ralink RT2870]
+	3c13  DWA-130 802.11n Wireless N Adapter(rev.B) [Ralink RT2870]
+	3c15  DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT2870]
+	3c16  DWA-125 Wireless N 150 Adapter(rev.A2) [Ralink RT3070]
+	3e02  DWM-156 3.75G HSUPA Adapter
+	5100  Remote NDIS Device
+	a800  DWM-152 3.75G HSUPA Adapter
+	f101  DBT-122 Bluetooth
+	fc01  DBT-120 Bluetooth Adapter
+07d2  Aptio Products, Inc.
+07d3  Cyberdata Corp.
+07d5  Radiant Systems
+07d7  GCC Technologies, Inc.
+07da  Arasan Chip Systems
+07de  Diamond Multimedia
+	2820  VC500 Video Capture Dongle
+07df  David Electronics Co., Ltd
+07e0  NCP engineering GmbH
+	4742  VPN GovNet Box
+07e1  Ambient Technologies, Inc.
+	5201  V.90 Modem
+07e2  Elmeg GmbH & Co., Ltd
+07e3  Planex Communications, Inc.
+07e4  Movado Enterprise Co., Ltd
+	0967  SCard R/W CSR-145
+	0968  SCard R/W CSR-145
+07e5  QPS, Inc.
+	05c2  IDE-to-USB2.0 PCA
+	5c01  Que! CDRW
+07e6  Allied Cable Corp.
+07e7  Mirvo Toys, Inc.
+07e8  Labsystems
+07ea  Iwatsu Electric Co., Ltd
+07eb  Double-H Technology Co., Ltd
+07ec  Taiyo Electric Wire & Cable Co., Ltd
+07ee  Torex Retail (formerly Logware)
+	0002  Cash Drawer I/F
+07ef  STSN
+	0001  Internet Access Device
+07f2  Microcomputer Applications, Inc.
+	0001  KEYLOK II
+07f6  Circuit Assembly Corp.
+07f7  Century Corp.
+	0005  ScanLogic/Century Corporation uATA
+	011e  Century USB Disk Enclosure
+07f9  Dotop Technology, Inc.
+07fa  DrayTek Corp.
+	0778  miniVigor 128 ISDN TA
+	0846  ISDN TA [HFC-S]
+	0847  ISDN TA [HFC-S]
+	1012  BeWAN ADSL USB ST (grey)
+	1196  BWIFI-USB54AR 802.11bg
+	a904  BeWAN ADSL
+	a905  BeWAN ADSL ST
+07fc  Thomann
+	1113  SWISSONIC EasyKeys61 Midikeyboard
+07fd  Mark of the Unicorn
+	0000  FastLane MIDI Interface
+	0001  MIDI Interface
+	0002  MOTU Audio for 64 bit
+	0004  MicroBook
+	0008  M Series
+07ff  Unknown
+	00ff  Portable Hard Drive
+	ffff  Mad Catz Gamepad
+0801  MagTek
+	0001  Mini Swipe Reader (Keyboard Emulation)
+	0002  Mini Swipe Reader
+	0003  Magstripe Insert Reader
+0802  Mako Technologies, LLC
+0803  Zoom Telephonics, Inc.
+	1300  V92 Faxmodem
+	3095  V.92 56K Mini External Modem Model 3095
+	4310  4410a Wireless-G Adapter [Intersil ISL3887]
+	4410  4410b Wireless-G Adapter [ZyDAS ZD1211B]
+	5241  Cable Modem
+	5551  DSL Modem
+	9700  2986L FaxModem
+	9800  Cable Modem
+	a312  Wireless-G
+0809  Genicom Technology, Inc.
+080a  Evermuch Technology Co., Ltd
+080b  Cross Match Technologies
+	0002  Fingerprint Scanner (After ReNumeration)
+	0010  300LC Series Fingerprint Scanner (Before ReNumeration)
+080c  Datalogic S.p.A.
+	0300  Gryphon D120 Barcode Scanner
+	0400  Gryphon D120 Barcode Scanner
+	0500  Gryphon D120 Barcode Scanner
+	0600  Gryphon M100 Barcode Scanner
+080d  Teco Image Systems Co., Ltd
+	0102  Hercules Scan@home 48
+	0104  3.2Slim
+	0110  UMAX AstraSlim 1200 Scanner
+0810  Personal Communication Systems, Inc.
+	0001  Dual PSX Adaptor
+	0002  Dual PCS Adaptor
+	0003  PlayStation Gamepad
+	e001  Twin controller
+	e501  SNES Gamepad
+0813  Mattel, Inc.
+	0001  Intel Play QX3 Microscope
+	0002  Dual Mode Camera Plus
+0819  eLicenser
+	0101  License Management and Copy Protection
+081a  MG Logic
+	1000  Duo Pen Tablet
+081b  Indigita Corp.
+	0600  Storage Adapter
+	0601  Storage Adapter
+081c  Mipsys
+081e  AlphaSmart, Inc.
+	df00  Handheld
+081f  Manta
+	e401  MM812
+0822  Reudo Corp.
+	2001  IRXpress Infrared Device
+0825  GC Protronics
+0826  Data Transit
+0827  BroadLogic, Inc.
+0828  Sato Corp.
+0829  DirecTV Broadband, Inc. (Telocity)
+082d  Handspring
+	0100  Visor
+	0200  Treo
+	0300  Treo 600
+	0400  Handheld
+	0500  Handheld
+	0600  Handheld
+0830  Palm, Inc.
+	0001  m500
+	0002  m505
+	0003  m515
+	0004  Handheld
+	0005  Handheld
+	0006  Handheld
+	0010  Handheld
+	0011  Handheld
+	0012  Handheld
+	0013  Handheld
+	0014  Handheld
+	0020  i705
+	0021  Handheld
+	0022  Handheld
+	0023  Handheld
+	0024  Handheld
+	0030  Handheld
+	0031  Tungsten W
+	0032  Handheld
+	0033  Handheld
+	0034  Handheld
+	0040  m125
+	0041  Handheld
+	0042  Handheld
+	0043  Handheld
+	0044  Handheld
+	0050  m130
+	0051  Handheld
+	0052  Handheld
+	0053  Handheld
+	0054  Handheld
+	0060  Tungsten C/E/T/T2/T3 / Zire 71
+	0061  Lifedrive / Treo 650/680 / Tunsten E2/T5/TX / Centro / Zire 21/31/72 / Z22
+	0062  Handheld
+	0063  Handheld
+	0064  Handheld
+	0070  Zire
+	0071  Handheld
+	0072  Handheld
+	0080  Serial Adapter [for Palm III]
+	0081  Handheld
+	0082  Handheld
+	00a0  Treo 800w
+	0101  Pre
+0832  Kouwell Electronics Corp.
+	5850  Cable
+0833  Sourcenext Corp.
+	012e  KeikaiDenwa 8 with charger
+	039f  KeikaiDenwa 8
+0835  Action Star Enterprise Co., Ltd
+0836  TrekStor
+	2836  i.Beat mood
+0839  Samsung Techwin Co., Ltd
+	0005  Digimax Camera
+	0008  Digimax 230 Camera
+	0009  Digimax 340
+	000a  Digimax 410
+	000e  Digimax 360
+	0010  Digimax 300
+	1003  Digimax 210SE
+	1005  Digimax 220
+	1009  Digimax V4
+	1012  6500 Document Camera
+	103f  Digimax S500
+	1058  S730 Camera
+	1064  Digimax D830 Camera
+	1542  Digimax 50 Duo
+	3000  Digimax 35 MP3
+083a  Accton Technology Corp.
+	1046  10/100 Ethernet [pegasus]
+	1060  HomeLine Adapter
+	1f4d  SMC8013WG Broadband Remote NDIS Device
+	3046  10/100 Series Adapter
+	3060  1/10/100 Adapter
+	3501  2664W
+	3502  WN3501D Wireless Adapter
+	3503  T-Sinus 111 Wireless Adapter
+	4501  T-Sinus 154data
+	4502  Siemens S30853-S1016-R107 802.11g Wireless Adapter [Intersil ISL3886]
+	4505  SMCWUSB-G 802.11bg
+	4507  SMCWUSBT-G2 802.11g Wireless Adapter [Atheros AR5523]
+	4521  Siemens S30863-S1016-R107-2 802.11g Wireless Adapter [Intersil ISL3887]
+	4531  T-Com Sinus 154 data II [Intersil ISL3887]
+	5046  SpeedStream 10/100 Ethernet [pegasus]
+	5501  Wireless Adapter 11g
+	6500  Cable Modem
+	6618  802.11n Wireless Adapter
+	7511  Arcadyan 802.11N Wireless Adapter
+	7512  Arcadyan 802.11N Wireless Adapter
+	7522  Arcadyan 802.11N Wireless Adapter
+	8522  Arcadyan 802.11N Wireless Adapter
+	8541  WN4501F 802.11g Wireless Adapter [Intersil ISL3887]
+	a512  Arcadyan 802.11N Wireless Adapter
+	a618  SMCWUSBS-N EZ Connect N Draft 11n Wireless Adapter [Ralink RT2870]
+	a701  SMCWUSBS-N3 EZ Connect N Wireless Adapter [Ralink RT3070]
+	b004  CPWUE001 USB/Ethernet Adapter
+	b522  SMCWUSBS-N2 EZ Connect N Wireless Adapter [Ralink RT2870]
+	bb01  BlueExpert Bluetooth Device
+	c003  802.11b Wireless Adapter
+	c501  Zoom 4410 Wireless-G [Intersil ISL3887]
+	c561  802.11a/g Wireless Adapter
+	d522  Speedport W 102 Stick IEEE 802.11n USB 2.0 Adapter
+	e501  ZD1211B
+	e503  Arcadyan WN4501 802.11b/g
+	e506  WUS-201 802.11bg
+	f501  802.11g Wireless Adapter
+	f502  802.11g Wireless Adapter
+	f522  Arcadyan WN7512 802.11n
+083f  Global Village
+	b100  TelePort V.90 Fax/Modem
+0840  Argosy Research, Inc.
+	0060  Storage Adapter Bridge Module
+0841  Rioport.com, Inc.
+	0001  Rio 500
+0844  Welland Industrial Co., Ltd
+0846  NetGear, Inc.
+	1001  EA101 10 Mbps 10BASE-T Ethernet [Kawasaki LSI KL5KLUSB101B]
+	1002  Ethernet
+	1020  FA101 Fast Ethernet USB 1.1
+	1040  FA120 Fast Ethernet USB 2.0 [Asix AX88172 / AX8817x]
+	1100  Managed Switch M4100 series, M5300 series, M7100 series
+	4110  MA111(v1) 802.11b Wireless [Intersil Prism 3.0]
+	4200  WG121(v1) 54 Mbps Wireless [Intersil ISL3886]
+	4210  WG121(v2) 54 Mbps Wireless [Intersil ISL3886]
+	4220  WG111(v1) 54 Mbps Wireless [Intersil ISL3886]
+	4230  MA111(v2) 802.11b Wireless [SIS SIS 162]
+	4240  WG111(v1) rev 2 54 Mbps Wireless [Intersil ISL3887]
+	4260  WG111v3 54 Mbps Wireless [realtek RTL8187B]
+	4300  WG111U Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX]
+	4301  WG111U (no firmware) Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX]
+	5f00  WPN111 802.11g Wireless Adapter [Atheros AR5523]
+	68e1  LB1120-100NAS
+	6a00  WG111v2 54 Mbps Wireless [RealTek RTL8187L]
+	7100  WN121T RangeMax Next Wireless-N [Marvell TopDog]
+	9000  WN111(v1) RangeMax Next Wireless [Marvell 88W8362+88W8060]
+	9001  WN111(v2) RangeMax Next Wireless [Atheros AR9170+AR9101]
+	9010  WNDA3100v1 802.11abgn [Atheros AR9170+AR9104]
+	9011  WNDA3100v2 802.11abgn [Broadcom BCM4323]
+	9012  WNDA4100 802.11abgn 3x3:3 [Ralink RT3573]
+	9014  WNDA3100v3 802.11abgn 2x2:2 [MediaTek MT7632U]
+	9018  WNDA3200 802.11abgn Wireless Adapter [Atheros AR7010+AR9280]
+	9020  WNA3100(v1) Wireless-N 300 [Broadcom BCM43231]
+	9021  WNA3100M(v1) Wireless-N 300 [Realtek RTL8192CU]
+	9030  WNA1100 Wireless-N 150 [Atheros AR9271]
+	9040  WNA1000 Wireless-N 150 [Atheros AR9170+AR9101]
+	9041  WNA1000M 802.11bgn [Realtek RTL8188CUS]
+	9042  On Networks N150MA 802.11bgn [Realtek RTL8188CUS]
+	9043  WNA1000Mv2 802.11bgn [Realtek RTL8188CUS?]
+	9050  A6200 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526]
+	9051  A6200v2 802.11a/b/g/n/ac (2x2) Wireless Adapter [Realtek RTL8812AU]
+	9052  A6100 AC600 DB Wireless Adapter [Realtek RTL8811AU]
+	9054  Nighthawk A7000 802.11ac Wireless Adapter AC1900 [Realtek 8814AU]
+	a001  PA101 10 Mbps HPNA Home Phoneline RJ-1
+	f001  On Networks N300MA 802.11bgn [Realtek RTL8192CU]
+084d  Minton Optic Industry Co., Inc.
+	0001  Jenoptik JD800i
+	0003  S-Cam F5/D-Link DSC-350 Digital Camera
+	0011  Argus DC3500 Digital Camera
+	0014  Praktica DC 32
+	0019  Praktica DPix3000
+	0025  Praktica DC 60
+	1001  ScanHex SX-35d
+084e  KB Gear
+	0001  JamCam Camera
+	1001  Jam Studio Tablet
+	1002  Pablo Tablet
+084f  Empeg
+	0001  Empeg-Car Mark I/II Player
+0850  Fast Point Technologies, Inc.
+0851  Macronix International Co., Ltd
+	1542  SiPix Blink
+	1543  Maxell WS30 Slim Digital Camera, or Pandigital PI8004W01 digital photo frame
+	a168  MXIC
+0852  CSEM
+0853  Topre Corporation
+	0100  HHKB Professional
+	0119  RealForce 105UB
+	0200  RealForce Compact Keyboard
+0854  ActiveWire, Inc.
+	0100  I/O Board
+	0101  I/O Board, rev1
+0856  B&B Electronics
+	ac01  uLinks USOTL4 RS422/485 Adapter
+0858  Hitachi Maxell, Ltd
+	3102  Bluetooth Device
+	ffff  Maxell module with BlueCore in DFU mode
+0859  Minolta Systems Laboratory, Inc.
+085a  Xircom
+	0001  Portstation Dual Serial Port
+	0003  Portstation Paraller Port
+	0008  Ethernet
+	0009  Ethernet
+	000b  Portstation Dual PS/2 Port
+	0021  1 port to Serial Converter
+	0022  Parallel Port
+	0023  2 port to Serial Converter
+	0024  Parallel Port
+	0026  PortGear SCSI
+	0027  1 port to Serial Converter
+	0028  PortGear to SCSI Converter
+	0032  PortStation SCSI Module
+	003c  Bluetooth Adapter
+	0299  Colorvision, Inc. Monitor Spyder
+	8021  1 port to Serial
+	8023  2 port to Serial
+	8027  PGSDB9 Serial Port
+085c  ColorVision, Inc.
+	0100  Spyder 1
+	0200  Spyder 2
+	0300  Spyder 3
+	0400  Spyder 4
+0862  Teletrol Systems, Inc.
+0863  Filanet Corp.
+0864  NetGear, Inc.
+	4100  MA101 802.11b Adapter
+	4102  MA101 802.11b Adapter
+0867  Data Translation, Inc.
+	9812  ECON Data acquisition unit
+	9816  DT9816 ECON data acquisition module
+	9836  DT9836 data acquisition card
+086a  Emagic Soft- und Hardware GmbH
+	0001  Unitor8
+	0002  AMT8
+	0003  MT4
+086c  DeTeWe - Deutsche Telephonwerke AG & Co.
+	1001  Eumex 504PC ISDN TA
+	1002  Eumex 504PC (FlashLoad)
+	1003  TA33 ISDN TA
+	1004  TA33 (FlashLoad)
+	1005  Eumex 604PC HomeNet
+	1006  Eumex 604PC HomeNet (FlashLoad)
+	1007  Eumex 704PC DSL
+	1008  Eumex 704PC DSL (FlashLoad)
+	1009  Eumex 724PC DSL
+	100a  Eumex 724PC DSL (FlashLoad)
+	100b  OpenCom 30
+	100c  OpenCom 30 (FlashLoad)
+	100d  BeeTel Home 100
+	100e  BeeTel Home 100 (FlashLoad)
+	1011  USB2DECT
+	1012  USB2DECT (FlashLoad)
+	1013  Eumex 704PC LAN
+	1014  Eumex 704PC LAN (FlashLoad)
+	1019  Eumex 504 SE
+	101a  Eumex 504 SE (Flash-Mode)
+	1021  OpenCom 40
+	1022  OpenCom 40 (FlashLoad)
+	1023  OpenCom 45
+	1024  OpenCom 45 (FlashLoad)
+	1025  Sinus 61 data
+	1029  dect BOX
+	102c  Eumex 604PC HomeNet [FlashLoad]
+	1030  Eumex 704PC DSL [FlashLoad]
+	1032  OpenCom 40 [FlashLoad]
+	1033  OpenCom 30 plus
+	1034  OpenCom 30 plus (FlashLoad)
+	1041  Eumex 220PC
+	1042  Eumex 220PC (FlashMode)
+	1055  Eumex 220 Version 2 ISDN TA
+	1056  Eumex 220 Version 2 ISDN TA (Flash-Mode)
+	2000  OpenCom 1000
+086e  System TALKS, Inc.
+	1920  SGC-X2UL
+086f  MEC IMEX, Inc.
+0870  Metricom
+	0001  Ricochet GS
+0871  SanDisk, Inc.
+	0001  SDDR-01 Compact Flash Reader
+	0002  SDDR-31 Compact Flash Reader
+	0005  SDDR-05 Compact Flash Reader
+0873  Xpeed, Inc.
+0874  A-Tec Subsystem, Inc.
+0879  Comtrol Corp.
+087c  Adesso/Kbtek America, Inc.
+087d  Jaton Corp.
+	5704  Ethernet
+087e  Fujitsu Computer Products of America
+087f  QualCore Logic Inc.
+0880  APT Technologies, Inc.
+0883  Recording Industry Association of America (RIAA)
+0885  Boca Research, Inc.
+0886  XAC Automation Corp.
+	0630  Intel PC Camera CS630
+0887  Hannstar Electronics Corp.
+088a  TechTools
+	1002  DigiView DV3100
+088b  MassWorks, Inc.
+	4944  MassWorks ID-75 TouchScreen
+088c  Swecoin AB
+	2030  Ticket Printer TTP 2030
+088e  iLok
+	5036  Portable secure storage for software licenses
+0892  DioGraphy, Inc.
+	0101  Smartdio Reader/Writer
+0894  TSI Incorporated
+	0010  Remote NDIS Network Device
+0897  Lauterbach
+	0001  ICE In-Circuit Emulator
+	0002  Power Debug/Power Debug II
+	0004  PowerDebug
+	0005  PowerDebug PRO
+089c  United Technologies Research Cntr.
+089d  Icron Technologies Corp.
+089e  NST Co., Ltd
+089f  Primex Aerospace Co.
+08a5  e9, Inc.
+08a6  Toshiba TEC
+	0051  B-SV4
+08a8  Andrea Electronics
+08a9  CWAV Inc.
+	0005  USBee ZX
+	0009  USBee SX
+	0012  USBee AX-Standard
+	0013  USBee AX-Plus
+	0014  USBee AX-Pro
+	0015  USBee DX
+08ac  Macraigor Systems LLC
+	2024  usbWiggler
+08ae  Macally (Mace Group, Inc.)
+08b0  Metrohm
+	0006  814 Sample Processor
+	0015  857 Titrando
+	001a  852 Titrando
+08b4  Sorenson Vision, Inc.
+08b7  NATSU
+	0001  Playstation adapter
+08b8  J. Gordon Electronic Design, Inc.
+	01f4  USBSIMM1
+08b9  RadioShack Corp. (Tandy)
+08bb  Texas Instruments
+	2702  PCM2702 16-bit stereo audio DAC
+	2704  PCM2704 16-bit stereo audio DAC
+	2705  PCM2705 stereo audio DAC
+	2706  PCM2706 stereo audio DAC
+	2707  PCM2707 stereo audio DAC
+	27c4  PCM2704C stereo audio DAC
+	27c5  PCM2705C stereo audio DAC
+	27c6  PCM2706C stereo audio DAC
+	27c7  PCM2707C stereo audio DAC
+	2900  PCM2900 Audio Codec
+	2901  PCM2901 Audio Codec
+	2902  PCM2902 Audio Codec
+	2904  PCM2904 Audio Codec
+	2910  PCM2912 Audio Codec
+	2912  PCM2912A Audio Codec
+	29b0  PCM2900B Audio CODEC
+	29b2  PCM2902 Audio CODEC
+	29b3  PCM2903B Audio CODEC
+	29b6  PCM2906B Audio CODEC
+	29c0  PCM2900C Audio CODEC
+	29c2  PCM2902C Audio CODEC
+	29c3  PCM2903C Audio CODEC
+	29c6  PCM2906C Audio CODEC
+08bd  Citizen Watch Co., Ltd
+	0208  CLP-521 Label Printer
+	1100  X1-USB Floppy
+08c3  Precise Biometrics
+	0001  100 SC
+	0002  100 A
+	0003  100 SC BioKeyboard
+	0006  100 A BioKeyboard
+	0100  100 MC ISP
+	0101  100 MC FingerPrint and SmartCard Reader
+	0300  100 AX
+	0400  100 SC
+	0401  150 MC
+	0402  200 MC FingerPrint and SmartCard Reader
+	0404  100 SC Upgrade
+	0405  150 MC Upgrade
+	0406  100 MC Upgrade
+08c4  Proxim, Inc.
+	0100  Skyline 802.11b Wireless Adapter
+	02f2  Farallon Home Phoneline Adapter
+08c7  Key Nice Enterprise Co., Ltd
+08c8  2Wire, Inc.
+08c9  Nippon Telegraph and Telephone Corp.
+08ca  Aiptek International, Inc.
+	0001  Tablet
+	0010  Tablet
+	0020  APT-6000U Tablet
+	0021  APT-2 Tablet
+	0022  Tablet
+	0023  Tablet
+	0024  Tablet
+	0100  Pen Drive
+	0102  DualCam
+	0103  Pocket DV Digital Camera
+	0104  Pocket DVII
+	0105  Mega DV(Disk)
+	0106  Pocket DV3100+
+	0107  Pocket DV3100
+	0109  Nisis DV4 Digital Camera
+	010a  Trust 738AV LCD PV Mass Storage
+	0111  PenCam VGA Plus
+	2008  Mini PenCam 2
+	2010  Pocket CAM 3 Mega (webcam)
+	2011  Pocket CAM 3 Mega (storage)
+	2016  PocketCam 2 Mega
+	2018  Pencam SD 2M
+	2019  Pencam SD 2M (mass storage mode)
+	2020  Slim 3000F
+	2022  Slim 3200
+	2024  Pocket DV3500
+	2028  Pocket Cam4M
+	2040  Pocket DV4100M
+	2042  Pocket DV5100M Composite Device
+	2043  Pocket DV5100M (Disk)
+	2060  Pocket DV5300
+08cd  Jue Hsun Ind. Corp.
+08ce  Long Well Electronics Corp.
+08cf  Productivity Enhancement Products
+08d1  smartBridges, Inc.
+	0001  smartNIC Ethernet [catc]
+	0003  smartNIC 2 PnP Ethernet
+08d3  Virtual Ink
+08d4  Fujitsu Siemens Computers
+	0009  SCR SmartCard Reader
+08d8  IXXAT Automation GmbH
+	0002  USB-to-CAN compact
+	0003  USB-to-CAN II
+	0100  USB-to-CAN
+08d9  Increment P Corp.
+08dd  Billionton Systems, Inc.
+	0112  Wireless LAN Adapter
+	0113  Wireless LAN Adapter
+	0986  USB-100N Ethernet [pegasus]
+	0987  USBLP-100 HomePNA Ethernet [pegasus]
+	0988  USBEL-100 Ethernet [pegasus]
+	1986  10/100 LAN Adapter
+	2103  DVB-T TV-Tuner Card-R
+	8511  USBE-100 Ethernet [pegasus2]
+	90ff  USB2AR Ethernet
+08de  ???
+	7a01  802.11b Adapter
+08df  Spyrus, Inc.
+	0001  Rosetta Token V1
+	0002  Rosetta Token V2
+	0003  Rosetta Token V3
+	0a00  Lynks Interface
+08e3  Olitec, Inc.
+	0002  USB-RS232 Bridge
+	0100  Interface ADSL
+	0101  Interface ADSL
+	0102  ADSL
+	0301  RNIS ISDN TA [HFC-S]
+08e4  Pioneer Corp.
+	0184  DDJ-WeGO
+	0185  DDJ-WeGO2
+08e5  Litronic
+08e6  Gemalto (was Gemplus)
+	0001  GemPC-Touch 430
+	0430  GemPC430 SmartCard Reader
+	0432  GemPC432 SmartCard Reader
+	0435  GemPC435 SmartCard Reader
+	0437  GemPC433 SL SmartCard Reader
+	1359  UA SECURE STORAGE TOKEN
+	2202  Gem e-Seal Pro Token
+	3437  GemPC Twin SmartCard Reader
+	3438  GemPC Key SmartCard Reader
+	3478  PinPad Smart Card Reader
+	34ec  Compact Smart Card Reader Writer
+	4433  GemPC433-Swap
+	5501  GemProx-PU Contactless Smart Card Reader
+	5503  Prox-DU Contactless Interface
+	ace0  UA HYBRID TOKEN
+08e7  Pan-International Wire & Cable
+08e8  Integrated Memory Logic
+08e9  Extended Systems, Inc.
+	0100  XTNDAccess IrDA Dongle
+08ea  Ericsson, Inc., Blue Ridge Labs
+	00c9  ADSL Modem HM120dp Loader
+	00ca  ADSL WAN Modem HM120dp
+	00ce  HM230d Virtual Bus for Helium
+	abba  USB Driver for Bluetooth Wireless Technology
+	abbb  Bluetooth Device in DFU State
+08ec  M-Systems Flash Disk Pioneers
+	0001  TravelDrive 2C
+	0002  TravelDrive 2C
+	0005  TravelDrive 2C
+	0008  TravelDrive 2C
+	0010  DiskOnKey
+	0011  DiskOnKey
+	0012  TravelDrive 2C
+	0014  TravelDrive 2C
+	0015  Kingston DataTraveler ELITE
+	0016  Kingston DataTraveler U3
+	0020  TravelDrive Intuix U3 2GB
+	0021  TravelDrive
+	0022  TravelDrive
+	0023  TravelDrive
+	0024  TravelDrive
+	0025  TravelDrive
+	0026  TravelDrive
+	0027  TravelDrive
+	0028  TravelDrive
+	0029  TravelDrive
+	0030  TravelDrive
+	0822  TravelDrive 2C
+	0832  Hi-Speed Mass Storage Device
+	0834  M-Disk 220
+	0998  Kingston Data Traveler2.0 Disk Driver
+	0999  Kingston Data Traveler2.0 Disk Driver
+	1000  TravelDrive 2C
+	2000  TravelDrive 2C
+	2038  TravelDrive
+	2039  TravelDrive
+	204a  TravelDrive
+	204b  TravelDrive
+08ed  MediaTek Inc.
+	0002  CECT M800 memory card
+08ee  CCSI/Hesso
+08f0  Corex Technologies
+	0005  CardScan 800c
+08f1  CTI Electronics Corp.
+08f2  Gotop Information Inc.
+	007f  Super Q2 Tablet
+08f5  SysTec Co., Ltd
+08f6  Logic 3 International, Ltd
+08f7  Vernier
+	0001  LabPro
+	0002  EasyTemp/Go!Temp
+	0003  Go!Link
+	0004  Go!Motion
+08f8  Keen Top International Enterprise Co., Ltd
+08f9  Wipro Technologies
+08fa  Caere
+08fb  Socket Communications
+08fc  Sicon Cable Technology Co., Ltd
+08fd  Digianswer A/S
+	0001  Bluetooth Device
+08ff  AuthenTec, Inc.
+	1600  AES1600
+	1610  AES1600
+	1660  AES1660 Fingerprint Sensor
+	1680  AES1660 Fingerprint Sensor
+	168f  AES1660 Fingerprint Sensor
+	2500  AES2501
+	2501  AES2501
+	2502  AES2501
+	2503  AES2501
+	2504  AES2501
+	2505  AES2501
+	2506  AES2501
+	2507  AES2501
+	2508  AES2501
+	2509  AES2501
+	250a  AES2501
+	250b  AES2501
+	250c  AES2501
+	250d  AES2501
+	250e  AES2501
+	250f  AES2501
+	2510  AES2510
+	2550  AES2550 Fingerprint Sensor
+	2580  AES2501 Fingerprint Sensor
+	2588  AES2501
+	2589  AES2501
+	258a  AES2501
+	258b  AES2501
+	258c  AES2501
+	258d  AES2501
+	258e  AES2501
+	258f  AES2501
+	2660  AES2660 Fingerprint Sensor
+	2680  AES2660 Fingerprint Sensor
+	268f  AES2660 Fingerprint Sensor
+	2810  AES2810
+	3400  AES3400 TruePrint Sensor
+	3401  AES3400 Sensor
+	3402  AES3400 Sensor
+	3403  AES3400 Sensor
+	3404  AES3400 TruePrint Sensor
+	3405  AES3400 TruePrint Sensor
+	3406  AES3400 TruePrint Sensor
+	3407  AES3400 TruePrint Sensor
+	4902  BioMV with TruePrint AES3500
+	4903  BioMV with TruePrint AES3400
+	5500  AES4000
+	5501  AES4000 TruePrint Sensor
+	5503  AES4000 TruePrint Sensor
+	5505  AES4000 TruePrint Sensor
+	5507  AES4000 TruePrint Sensor
+	55ff  AES4000 TruePrint Sensor.
+	5700  AES3500 Fingerprint Reader
+	5701  AES3500 TruePrint Sensor
+	5702  AES3500 TruePrint Sensor
+	5703  AES3500 TruePrint Sensor
+	5704  AES3500-BZ TruePrint Sensor
+	5705  AES3500-BZ TruePrint Sensor
+	5706  AES3500-BZ TruePrint Sensor
+	5707  AES3500-BZ TruePrint Sensor
+	5710  AES3500 TruePrint Sensor
+	5711  AES3500 TruePrint Sensor
+	5712  AES3500 TruePrint Sensor
+	5713  AES3500 TruePrint Sensor
+	5714  AES3500-BZ TruePrint Sensor
+	5715  AES3500-BZ TruePrint Sensor
+	5716  AES3500-BZ TruePrint Sensor
+	5717  AES3500-BZ TruePrint Sensor
+	5730  AES3500 TruePrint Sensor
+	5731  AES3500 TruePrint Sensor
+	5732  AES3500 TruePrint Sensor
+	5733  AES3500 TruePrint Sensor
+	5734  AES3500-BZ TruePrint Sensor
+	5735  AES3500-BZ TruePrint Sensor
+	5736  AES3500-BZ TruePrint Sensor
+	5737  AES3500-BZ TruePrint Sensor
+	afe3  FingerLoc Sensor Module (Anchor)
+	afe4  FingerLoc Sensor Module (Anchor)
+	afe5  FingerLoc Sensor Module (Anchor)
+	afe6  FingerLoc Sensor Module (Anchor)
+	fffd  AES2510 Sensor (USB Emulator)
+	ffff  Sensor (Emulator)
+0900  Pinnacle Systems, Inc.
+0901  VST Technologies
+	0001  Hard Drive Adapter (TPP)
+	0002  SigmaDrive Adapter (TPP)
+0906  Faraday Technology Corp.
+0908  Siemens AG
+	01f4  SIMATIC NET CP 5711
+	01fe  SIMATIC NET PC Adapter A2
+	04b1  MediSET
+	04b2  NC interface
+	04b3  keyboard front panel Cockpit
+	04b4  SCR_CCID
+	2701  ShenZhen SANZHAI Technology Co.,Ltd Spy Pen VGA
+0909  Audio-Technica Corp.
+090a  Trumpion Microelectronics, Inc.
+	1001  T33520 Flash Card Controller
+	1100  Comotron C3310 MP3 player
+	1200  MP3 player
+	1540  Digitex Container Flash Disk
+090b  Neurosmith
+090c  Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.)
+	0371  Silicon Motion SM371 Camera
+	0373  Silicon Motion Camera
+	037a  Silicon Motion Camera
+	037b  Silicon Motion Camera
+	037c  300k Pixel Camera
+	1000  Flash Drive
+	1132  5-in-1 Card Reader
+	337b  Silicon Motion Camera
+	3710  Silicon Motion Camera
+	3720  Silicon Motion Camera
+	37bc  HP Webcam-101 Integrated Camera
+	37c0  Silicon Motion Camera
+	6000  SD/SDHC Card Reader (SG365 / FlexiDrive XC+)
+	6200  microSD card reader
+	71b3  SM731 Camera
+	837b  Silicon Motion Camera
+	937b  Silicon Motion Camera
+	b370  Silicon Motion SM370 Camera
+	b371  Silicon Motion SM371 Camera
+	f37d  Endoscope camera
+090d  Multiport Computer Vertriebs GmbH
+090e  Shining Technology, Inc.
+090f  Fujitsu Devices, Inc.
+0910  Alation Systems, Inc.
+0911  Philips Speech Processing
+	0c1c  SpeechMike III
+	149a  SpeechMike II Pro Plus LFH5276
+	2512  SpeechMike Pro
+0912  Voquette, Inc.
+0915  GlobeSpan, Inc.
+	0001  DSL Modem
+	0002  ADSL ATM Modem
+	0005  LAN Modem
+	2000  802.11 Adapter
+	2002  802.11 Adapter
+	8000  ADSL LAN Modem
+	8005  DSL-302G Modem
+	8101  ADSL WAN Modem
+	8102  DSL-200 ADSL Modem
+	8103  DSL-200 ADSL Modem
+	8104  DSL-200 Modem
+	8400  DSL Modem
+	8401  DSL Modem
+	8402  DSL Modem
+	8500  DSL Modem
+	8501  DSL Modem
+0917  SmartDisk Corp.
+	0001  eFilm Reader-11 SM/CF
+	0002  eFilm Reader-11 SM
+	0003  eFilm Reader-11 CF
+	0200  FireFly
+	0201  FireLite
+	0202  STORAGE ADAPTER (FirePower)
+	0204  FlashTrax Storage
+	0205  STORAGE ADAPTER (CrossFire)
+	0206  FireFly 20G HDD
+	0207  FireLite
+	020f  STORAGE ADAPTER (FireLite)
+	da01  eFilm Reader-11 Test
+	ffff  eFilm Reader-11 (Class/PDR)
+0919  Tiger Electronics
+	0100  Fast Flicks Digital Camera
+091e  Garmin International
+	0003  GPS (various models)
+	0004  iQue 3600
+	0200  Data Card Programmer (install)
+	086e  Forerunner 735XT
+	097f  Forerunner 235
+	1200  Data Card Programmer
+	21a5  etrex Cx (msc)
+	2236  nuvi 360
+	2271  Edge 605/705
+	2295  Colorado 300
+	22b6  eTrex Vista HCx (Mass Storage mode)
+	231b  Oregon 400t
+	2353  Nüvi 205T
+	2380  Oregon series
+	23cc  nüvi 1350
+	2459  GPSmap 62/78 series
+	2491  Edge 800
+	2518  eTrex 10
+	2519  eTrex 30
+	2535  Edge 800
+	253c  GPSmap 62sc
+	255b  Nuvi 2505LM
+	2613  Edge 200 TWN
+	26a1  Nuvi 55
+	2802  fenix 3
+	28db  Drive 5
+	47fb  nuviCam
+	4cdb  Fenix 6
+0920  Echelon Co.
+	7500  Network Interface
+0921  GoHubs, Inc.
+	1001  GoCOM232 Serial
+0922  Dymo-CoStar Corp.
+	0007  LabelWriter 330
+	0009  LabelWriter 310
+	0013  LabelManager 400
+	0019  LabelWriter 400
+	001a  LabelWriter 400 Turbo
+	0020  LabelWriter 450
+	0400  LabelWriter SE450
+	1001  LabelManager PnP
+	8003  M10 Digital Postal Scale
+	8004  M25 Digital Postal Scale
+	8009  S250 Digital Postal Scale
+0923  IC Media Corp.
+	010f  SIIG MobileCam
+0924  Xerox
+	23dd  DocuPrint M760 (X760_USB)
+	3ce8  Phaser 3428 Printer
+	3cea  Phaser 3125
+	3cec  Phaser 3250
+	3d5b  Phaser 6115MFP TWAIN Scanner
+	3d6d  WorkCentre 6015N/NI
+	420f  WorkCentre PE220 Series
+	421f  M20 Scanner
+	423b  Printing Support
+	4274  Xerox Phaser 3635MFPX
+	ffef  WorkCenter M15
+	fffb  DocuPrint M750 (X750_USB)
+0925  Lakeview Research
+	0005  Gamtec.,Ltd SmartJoy PLUS Adapter
+	03e8  Wii Classic Controller Adapter
+	1031  WiseGroup Ltd, Gameport Controller
+	1700  PS/SS/N64 Joypad
+	3881  Saleae Logic
+	8101  Phidgets, Inc., 1-Motor PhidgetServo v2.0
+	8104  Phidgets, Inc., 4-Motor PhidgetServo v2.0
+	8800  WiseGroup Ltd, MP-8800 Quad Joypad
+	8866  WiseGroup Ltd, MP-8866 Dual Joypad
+0927  Summus, Ltd
+0928  PLX Technology, Inc. (formerly Oxford Semiconductor, Ltd)
+	8000  Firmware uploader
+	ffff  Blank Oxford Device
+0929  American Biometric Co.
+092a  Toshiba Information & Industrial Sys. And Services
+092b  Sena Technologies, Inc.
+	4210  20S - Bluetooth Motorcycle headset & universal intercom
+092f  Northern Embedded Science/CAVNEX
+	0004  JTAG-4
+	0005  JTAG-5
+0930  Toshiba Corp.
+	0009  Gigabeat F/X (HDD audio player)
+	000c  Gigabeat F (mtp)
+	0010  Gigabeat S (mtp)
+	01bf  2.5"External Hard Disk
+	0200  Integrated Bluetooth (Taiyo Yuden)
+	021c  Atheros AR3012 Bluetooth
+	0301  PCX1100U Cable Modem (WDM)
+	0302  PCX2000 Cable Modem (WDM)
+	0305  Cable Modem PCX3000
+	0307  Cable Modem PCX2500
+	0308  PCX2200 Cable Modem (WDM)
+	0309  PCX5000 Cable Modem (WDM)
+	030b  Cable Modem PCX2600
+	0501  Bluetooth Controller
+	0502  Integrated Bluetooth
+	0503  Bluetooth Controller
+	0505  Integrated Bluetooth
+	0506  Integrated Bluetooth
+	0507  Bluetooth Adapter
+	0508  Integrated Bluetooth HCI
+	0509  BT EDR Dongle
+	0706  PocketPC e740
+	0707  Pocket PC e330 Series
+	0708  Pocket PC e350 Series
+	0709  Pocket PC e750 Series
+	070a  Pocket PC e400 Series
+	070b  Pocket PC e800 Series
+	0a07  WLM-10U1 802.11abgn Wireless Adapter [Ralink RT3572]
+	0a08  WLM-20U2/GN-1080 802.11abgn Wireless Adapter [Atheros AR7010+AR9280]
+	0a0b  WLU5053 802.11abgn Wireless Module [Broadcom BCM43236B]
+	0a13  AX88179 Gigabit Ethernet [Toshiba]
+	0b05  PX1220E-1G25 External hard drive
+	0b09  PX1396E-3T01 External hard drive
+	0b1a  STOR.E ALU 2S
+	1300  Wireless Broadband (CDMA EV-DO) SM-Bus Minicard Status Port
+	1301  Wireless Broadband (CDMA EV-DO) Minicard Status Port
+	1302  Wireless Broadband (3G HSDPA) SM-Bus Minicard Status Port
+	1303  Wireless Broadband (3G HSDPA) Minicard Status Port
+	1308  Broadband (3G HSDPA) SM-Bus Minicard Diagnostics Port
+	130b  F3507g Mobile Broadband Module
+	130c  F3607gw Mobile Broadband Module
+	1311  F3607gw v2 Mobile Broadband Module
+	1400  Memory Stick 2GB
+	140b  Memory Stick 64GB
+	642f  TravelDrive
+	6506  TravelDrive 2C
+	6507  TravelDrive 2C
+	6508  TravelDrive 2C
+	6509  TravelDrive 2C
+	6510  TravelDrive 2C
+	6517  TravelDrive 2C
+	6518  TravelDrive 2C
+	6519  Kingston DataTraveler 2.0 USB Stick
+	651a  TravelDrive 2C
+	651b  TravelDrive 2C
+	651c  TravelDrive 2C
+	651d  TravelDrive 2C
+	651e  TravelDrive 2C
+	651f  TravelDrive 2C
+	6520  TravelDrive 2C
+	6521  TravelDrive 2C
+	6522  TravelDrive 2C
+	6523  TravelDrive
+	6524  TravelDrive
+	6525  TravelDrive
+	6526  TravelDrive
+	6527  TravelDrive
+	6528  TravelDrive
+	6529  TravelDrive
+	652a  TravelDrive
+	652b  TravelDrive
+	652c  TravelDrive
+	652d  TravelDrive
+	652f  TravelDrive
+	6530  TravelDrive
+	6531  TravelDrive
+	6532  256M Stick
+	6533  512M Stick
+	6534  TravelDrive
+	653c  Kingston DataTraveler 2.0 Stick (512M)
+	653d  Kingston DataTraveler 2.0 Stick (1GB)
+	653e  Flash Memory
+	6540  TransMemory Flash Memory
+	6544  TransMemory-Mini / Kingston DataTraveler 2.0 Stick
+	6545  Kingston DataTraveler 102/2.0 / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick
+	a002  SunplusIT SATA bridge
+0931  Harmonic Data Systems, Ltd
+0932  Crescentec Corp.
+	0300  VideoAdvantage
+	0302  Syntek DC-112X
+	0320  VideoAdvantage
+	0482  USB2.0 TVBOX
+	1100  DC-1100 Video Enhamcement Device
+	1112  Veo Web Camera
+	a311  Video Enhancement Device
+0933  Quantum Corp.
+0934  Spirent Communications
+0936  NuTesla
+	000a  Moebius
+	000b  iMoebius
+	000c  Rhythmedics 6 BioData Integrator
+	000d  Hypurius
+	000e  Millennius
+	000f  Purius
+	0030  Composite Device, Mass Storage Device (Flash Drive) amd HID
+	003c  Rhythmedics HID Bootloader
+0939  Lumberg, Inc.
+	0b15  Toshiba Stor.E Alu 2
+	0b16  Toshiba StorE HDD
+093a  Pixart Imaging, Inc.
+	0007  CMOS 100K-R Rev. 1.90
+	010e  Digital camera, CD302N/Elta Medi@ digi-cam/HE-501A
+	010f  Argus DC-1610/DC-1620/Emprex PCD3600/Philips P44417B keychain camera/Precision Mini,Model HA513A/Vivitar Vivicam 55
+	020f  Bullet Line Photo Viewer
+	050f  Mars-Semi Pc-Camera
+	2460  Q-TEC WEBCAM 100
+	2468  SoC PC-Camera
+	2470  SoC PC-Camera
+	2471  SoC PC-Camera
+	2500  USB Optical Mouse
+	2510  Optical Mouse
+	2521  Optical Mouse
+	2600  Typhoon Easycam USB 330K (newer)/Typhoon Easycam USB 2.0 VGA 1.3M/Sansun SN-508
+	2601  SPC 610NC Laptop Camera
+	2603  PAC7312 Camera
+	2608  PAC7311 Trust WB-3300p
+	260e  PAC7311 Gigaware VGA PC Camera:Trust WB-3350p:SIGMA cam 2350
+	260f  PAC7311 SnakeCam
+	2621  PAC731x Trust Webcam
+	2622  Webcam Genius
+	2624  Webcam
+	2628  Webcam Genius iLook 300
+	2700  GE 1.3 MP MiniCam Pro
+093b  Plextor Corp.
+	0010  Storage Adapter
+	0011  PlexWriter 40/12/40U
+	0012  PlexWriter 48/24/48U
+	0041  PX-708A DVD RW
+	0042  PX-712UF DVD RW
+	a002  ConvertX M402U XLOADER
+	a003  ConvertX AV100U A/V Capture Audio
+	a004  ConvertX TV402U XLOADER
+	a005  ConvertX TV100U A/V Capture
+	a102  ConvertX M402U A/V Capture
+	a104  ConvertX PX-TV402U/NA
+093c  Intrepid Control Systems, Inc.
+	0601  ValueCAN
+	0701  NeoVI Blue vehicle bus interface
+093d  InnoSync, Inc.
+093e  J.S.T. Mfg. Co., Ltd
+093f  Olympia Telecom Vertriebs GmbH
+0940  Japan Storage Battery Co., Ltd
+0941  Photobit Corp.
+0942  i2Go.com, LLC
+0943  HCL Technologies India Private, Ltd
+0944  KORG, Inc.
+	0001  PXR4 4-Track Digital Recorder
+	0020  KAOSS Pad KP3 Dynamic Effect/Sampler
+	0023  KAOSSILATOR PRO Dynamic Phrase Synthesizer
+	010d  nanoKEY MIDI keyboard
+	010e  nanoPAD pad controller
+	010f  nanoKONTROL studio controller
+	0117  nanoKONTROL2 MIDI Controller
+	0f03  K-Series K61P MIDI studio controller
+0945  Pasco Scientific
+0948  Kronauer music in digital
+	0301  USB Pro (24/48)
+	0302  USB Pro (24/96 playback)
+	0303  USB Pro (24/96 record)
+	0304  USB Pro (16/48)
+	1105  USB One
+094b  Linkup Systems Corp.
+	0001  neonode N2
+094d  Cable Television Laboratories
+094f  Yano
+	0101  U640MO-03
+	05fc  METALWEAR-HDD
+0951  Kingston Technology
+	0008  Ethernet
+	000a  KNU101TX 100baseTX Ethernet
+	1539  Iron Key D300 (Virtual CD-ROM and USB Stick)
+	1600  DataTraveler II Pen Drive
+	1601  DataTraveler II+ Pen Drive
+	1602  DataTraveler Mini
+	1603  DataTraveler 1GB/2GB Pen Drive
+	1606  Eee PC 701 SD Card Reader [ENE UB6225]
+	1607  DataTraveler 100
+	160b  DataTraveler 2.0 (2GB)
+	160d  DataTraveler Vault Privacy
+	160e  DT110P/1GB Capless
+	1613  DataTraveler DT101C Flash Drive
+	1616  DataTraveler Locker 4GB
+	161a  Dell HyperVisor internal flash drive
+	1621  DataTraveler 150 (32GB)
+	1624  DataTraveler G2
+	1625  DataTraveler 101 II
+	162a  DataTraveler 112 4GB Pen Drive
+	162b  DataTraveler HyperX 3.0
+	162d  DataTraveler 102
+	1630  DataTraveler 200 (32GB)
+	1642  DT101 G2
+	1643  DataTraveler G3
+	1653  Data Traveler 100 G2 8 GiB
+	1656  DataTraveler Ultimate G2
+	1660  Data Traveller 108
+	1665  Digital DataTraveler SE9
+	1666  DataTraveler 100 G3/G4/SE9 G2/50
+	1689  DataTraveler SE9
+	168a  DataTraveler Micro
+	168c  DT Elite 3.0
+	16a4  HyperX 7.1 Audio
+	16b3  HyperX Savage
+	16d2  HX-KB4BL1-US [HYPERX Alloy FPS Pro]
+	16d4  HyperX SavageEXO [0382]
+	16d5  DataTraveler Elite G2
+	16df  HyperX QuadCast
+	16e4  HyperX Pulsefire Raid
+0954  RPM Systems Corp.
+0955  NVIDIA Corp.
+	7005  Bootloader
+	7018  T186 [Tegra Parker]
+	701a  U-Boot running on Tegra
+	7020  L4T (Linux for Tegra) running on Tegra
+	7030  T30 [Tegra 3] recovery mode
+	7100  Tegra Device
+	7140  T124 [Tegra K1/Logan 32-bit]
+	7210  SHIELD Controller
+	7321  Switch [Tegra Erista] recovery mode
+	7721  T210 [TX1 Tegra Erista] recovery mode
+	7820  T20 [Tegra 2] recovery mode
+	7c18  T186 [TX2 Tegra Parker] recovery mode
+	b400  SHIELD (debug)
+	b401  SHIELD
+	cf05  SHIELD Tablet (debug)
+	cf06  SHIELD Tablet
+	cf07  SHIELD Tablet
+	cf08  SHIELD Tablet
+	cf09  SHIELD Tablet
+0956  BSquare Corp.
+0957  Agilent Technologies, Inc.
+	0200  E-Video DC-350 Camera
+	0202  E-Video DC-350 Camera
+	0407  33220A Waveform Generator
+	0518  82357B GPIB Interface
+	0a07  34411A Multimeter
+	1507  33210A Waveform Generator
+	1745  Test and Measurement Device (IVI)
+	1f01  N5181A MXG Analog Signal Generator
+	2918  U2702A oscilloscope
+	fb18  LC Device
+0958  CompuLink Research, Inc.
+0959  Cologne Chip AG
+	2bd0  Intelligent ISDN (Ver. 3.60.04) [HFC-S]
+095a  Portsmith
+	3003  Express Ethernet
+095b  Medialogic Corp.
+095c  K-Tec Electronics
+095d  Polycom, Inc.
+	0001  Polycom ViaVideo
+0964  BITRAN
+0967  Acer NeWeb Corp.
+	0204  WarpLink 802.11b Adapter
+0968  Catalyst Enterprises, Inc.
+096e  Feitian Technologies, Inc.
+	0005  ePass2000
+	0006  HID Dongle (for OEMs - manufacturer string is "OEM")
+	0120  Microcosm Ltd Dinkey
+	0305  ePass2000Auto
+	0309  ePass3000GM
+	0401  ePass3000
+	0405  Zzkey Dongle
+	0608  SC Reader KP382
+	0702  ePass3003
+	0703  ePass3003Auto
+	0802  ePass2000 (G&D STARCOS SPK 2.4)
+	0807  ePass2003
+0971  Gretag-Macbeth AG
+	2000  i1 Pro
+	2001  i1 Monitor
+	2003  Eye-One display
+	2005  Huey
+	2007  ColorMunki Photo
+0973  Schlumberger
+	0001  e-gate Smart Card
+0974  Datagraphix, a business unit of Anacomp
+0975  OL'E Communications, Inc.
+0976  Adirondack Wire & Cable
+0977  Lightsurf Technologies
+0978  Beckhoff GmbH
+0979  Jeilin Technology Corp., Ltd
+	0222  Keychain Display
+	0224  JL2005A Toy Camera
+	0226  JL2005A Toy Camera
+	0227  JL2005B/C/D Toy Camera
+097a  Minds At Work LLC
+	0001  Digital Wallet
+097b  Knudsen Engineering, Ltd
+097c  Marunix Co., Ltd
+097d  Rosun Technologies, Inc.
+097e  Biopac Systems Inc.
+	0035  MP35 v1.0
+097f  Barun Electronics Co., Ltd
+0981  Oak Technology, Ltd
+0984  Apricorn
+	0040  SATA Wire (2.5")
+	0200  Hard Drive Storage (TPP)
+	1407  Secure Key 3.0
+0985  cab Produkttechnik GmbH & Co KG
+	0045  Mach4/200 Label Printer
+	00a3  A3/200 or A3/300 Label Printer
+0986  Matsushita Electric Works, Ltd.
+098c  Vitana Corp.
+098d  INDesign
+098e  Integrated Intellectual Property, Inc.
+098f  Kenwood TMI Corp.
+0993  Gemstar eBook Group, Ltd
+	0001  REB1100 eBook Reader
+	0002  eBook
+0996  Integrated Telecom Express, Inc.
+099a  Zippy Technology Corp.
+	0638  Sanwa Supply Inc. Small Keyboard
+	2620  Graphics tablet [Polostar PT1001, Zeniq PT1001, Leogics PT1001]
+	610c  EL-610 Super Mini Electron luminescent Keyboard
+	6330  SANWA Supply Inc. Slim Keyboard
+	713a  WK-713 Multimedia Keyboard
+	7160  Hyper Slim Keyboard
+099e  Trimble Navigation, Ltd
+09a3  PairGain Technologies
+09a4  Contech Research, Inc.
+09a5  VCON Telecommunications
+09a6  Poinchips
+	8001  Mass Storage Device
+09a7  Data Transmission Network Corp.
+09a8  Lin Shiung Enterprise Co., Ltd
+09a9  Smart Card Technologies Co., Ltd
+09aa  Intersil Corp.
+	1000  Prism GT 802.11b/g Adapter
+	3642  Prism 2.x 802.11b Adapter
+09ab  Japan Cash Machine Co., Ltd.
+09ae  Tripp Lite
+	0002  Any Device (see discussion)
+09b0  Fargo
+	2400  HDP5000
+09b2  Franklin Electronic Publishers, Inc.
+	0001  eBookman Palm Computer
+09b3  Altius Solutions, Inc.
+09b4  MDS Telephone Systems
+09b5  Celltrix Technology Co., Ltd
+09bc  Grundig
+	0002  MPaxx MP150 MP3 Player
+09be  MySmart.Com
+	0001  MySmartPad
+09bf  Auerswald GmbH & Co. KG
+	00c0  COMpact 2104 ISDN PBX
+	00db  COMpact 4410/2206 ISDN
+	00dc  COMpact 4406 DSL (PBX)
+	00dd  COMpact 2204 (PBX)
+	00de  COMpact 2104 (Rev.2 PBX)
+	00e0  COMmander Business (PBX)
+	00e2  COMmander Basic.2 (PBX)
+	00f1  COMfort 2000 (System telephone)
+	00f2  COMfort 1200 (System telephone)
+	00f5  COMfortel 2500 (System telephone)
+	8000  COMpact 2104 DSL (DSL modem)
+	8001  COMpact 4406 DSL (DSL modem)
+	8002  Analog/ISDN Converter (Line converter)
+	8005  WG-640 (Automatic event dialer)
+09c0  Genpix Electronics, LLC
+	0136  Axon CNS, MultiClamp 700B
+	0202  8PSK DVB-S tuner
+	0203  Skywalker-1 DVB-S tuner
+	0204  Skywalker-CW3K DVB-S tuner
+	0205  Skywalker-CW3K DVB-S tuner
+	0206  Skywalker-2 DVB-S tuner
+09c1  Arris Interactive LLC
+	1337  TOUCHSTONE DEVICE
+09c2  Nisca Corp.
+09c3  HID Global
+	0007  Reader V2
+	0008  ZFG-9800-AC SmartCard Reader
+	0014  ActivIdentity ActivKey SIM USB Token
+	0028  Crescendo Key
+	0029  Crescendo Key
+	002a  Crescendo Key
+	002b  Crescendo Key
+	002c  Crescendo Key
+	002e  Crescendo Key
+09c4  ACTiSYS Corp.
+	0011  ACT-IR2000U IrDA Dongle
+09c5  Memory Corp.
+09ca  BMC Messsysteme GmbH
+	5544  PIO
+09cb  FLIR Systems
+	1001  Network Adapter
+	1002  Ex-Series RNDIS interface
+	1004  Ex-Series UVC interface
+	1005  Ex-Series RNDIS and UVC interface
+	1006  Ex-Series RNDIS and MSD interface
+	1007  Ex-Series UVC and MSD interface
+	1008  Serial Port
+	1996  FLIR ONE Camera
+	4007  Breach
+09cc  Workbit Corp.
+	0404  BAFO USB-ATA/ATAPI Bridge Controller
+09cd  Psion Dacom Home Networks, Ltd
+	2001  Psion WaveFinder DAB radio receiver
+09ce  City Electronics, Ltd
+09cf  Electronics Testing Center, Taiwan
+09d1  NeoMagic, Inc.
+09d2  Vreelin Engineering, Inc.
+09d3  Com One
+	0001  ISDN TA / Light Rider 128K
+	000b  Bluetooth Adapter class 2
+09d7  Hexagon NovAtel Inc.
+	0100  GPS/GNSS/SPAN sensor
+09d8  ELATEC GmbH
+	0320  TWN3 Multi125
+	0406  TWN4 MIFARE NFC
+09d9  KRF Tech, Ltd
+09da  A4Tech Co., Ltd.
+	0006  Optical Mouse WOP-35 / Trust 450L Optical Mouse
+	000a  Optical Mouse Opto 510D / OP-620D
+	000e  X-F710F Optical Mouse 3xFire Gaming Mouse
+	0018  Trust Human Interface Device
+	001a  Wireless Mouse & RXM-15 Receiver
+	002a  Wireless Optical Mouse NB-30
+	022b  Wireless Mouse (Battery Free)
+	024f  RF Receiver and G6-20D Wireless Optical Mouse
+	0260  KV-300H Isolation Keyboard
+	032b  Wireless Mouse (Battery Free)
+	09da  Bloody V8 Mouse
+	1068  Bloody A90 Mouse
+	112c  Bloody V5 Mouse
+	3a60  Bloody V8M Core 2 Mouse
+	8090  X-718BK Oscar Optical Gaming Mouse
+	9033  X-718BK Optical Mouse
+	9066  F3 V-Track Gaming Mouse
+	9090  XL-730K / XL-750BK / XL-755BK Mice
+	f613  Bloody V7M Mouse
+09db  Measurement Computing Corp.
+	0075  MiniLab 1008
+	0076  PMD-1024
+	007a  PMD-1208LS
+	0081  USB-1616FS
+	0082  USB-1208FS
+	0088  USB-1616FS internal hub
+09dc  Aimex Corp.
+09dd  Fellowes, Inc.
+09df  Addonics Technologies Corp.
+09e1  Intellon Corp.
+	5121  MicroLink dLAN
+09e5  Jo-Dan International, Inc.
+09e6  Silutia, Inc.
+09e7  Real 3D, Inc.
+09e8  AKAI  Professional M.I. Corp.
+	0045  MPK Mini Mk II MIDI Controller
+	0062  MPD16 MIDI Pad Controller Unit
+	006d  EWI electronic wind instrument
+	0071  MPK25 MIDI Keyboard
+	0076  LPK25 MIDI Keyboard
+09e9  Chen-Source, Inc.
+09eb  IM Networks, Inc.
+	4331  iRhythm Tuner Remote
+09ef  Xitel
+	0101  MD-Port DG2 MiniDisc Interface
+09f3  GoFlight, Inc.
+	0018  GF-46 Multi-Mode Display Module
+	0028  RP-48 Combination Pushbutton-Rotary Module
+	0048  LGTII - Landing Gear and Trim Control Module
+	0064  MCPPro - Airliner Mode Control Panel (Autopilot)
+	0300  EFIS - Electronic Flight Information System
+09f5  AresCom
+	0168  Network Adapter
+	0188  LAN Adapter
+	0850  Adapter
+09f6  RocketChips, Inc.
+09f7  Edu-Science (H.K.), Ltd
+09f8  SoftConnex Technologies, Inc.
+09f9  Bay Associates
+09fa  Mtek Vision
+09fb  Altera
+	6001  Blaster
+09ff  Gain Technology Corp.
+0a00  Liquid Audio
+0a01  ViA, Inc.
+0a05  Unknown Manufacturer
+	0001  Hub
+	7211  hub
+0a07  Ontrak Control Systems Inc.
+	0064  ADU100 Data Acquisition Interface
+	0078  ADU120 Data Acquisition Interface
+	0082  ADU130 Data Acquisition Interface
+	00c8  ADU200 Relay I/O Interface
+	00d0  ADU208 Relay I/O Interface
+	00da  ADU218 Solid-State Relay I/O Interface
+0a0b  Cybex Computer Products Co.
+0a0d  Servergy, Inc
+	2514  CTS-1000 Internal Hub
+0a11  Xentec, Inc.
+0a12  Cambridge Silicon Radio, Ltd
+	0001  Bluetooth Dongle (HCI mode)
+	0002  Frontline Test Equipment Bluetooth Device
+	0003  Nanosira
+	0004  Nanosira WHQL Reference Radio
+	0005  Nanosira-Multimedia
+	0006  Nanosira-Multimedia WHQL Reference Radio
+	0007  Nanosira3-ROM
+	0008  Nanosira3-ROM
+	0009  Nanosira4-EDR WHQL Reference Radio
+	000a  Nanosira4-EDR-ROM
+	000b  Nanosira5-ROM
+	0042  SPI Converter
+	0043  Bluetooth Device
+	0100  Casira with BlueCore2-External Module
+	0101  Casira with BlueCore2-Flash Module
+	0102  Casira with BlueCore3-Multimedia Module
+	0103  Casira with BlueCore3-Flash Module
+	0104  Casira with BlueCore4-External Module
+	0105  Casira with BlueCore4-Multimedia Module
+	1000  Bluetooth Dongle (HID proxy mode)
+	1010  Bluetooth Device
+	1011  Bluetooth Device
+	1012  Bluetooth Device
+	ffff  USB Bluetooth Device in DFU State
+0a13  Telebyte, Inc.
+0a14  Spacelabs Medical, Inc.
+0a15  Scalar Corp.
+0a16  Trek Technology (S) PTE, Ltd
+	1111  ThumbDrive
+	8888  IBM USB Memory Key
+	9988  Trek2000 TD-G2
+0a17  Pentax Corp.
+	0004  Optio 330
+	0006  Optio S / S4
+	0007  Optio 550
+	0009  Optio 33WR
+	000a  Optio 555
+	000c  Optio 43WR (mass storage mode)
+	000d  Optio 43WR
+	0015  Optio S40/S5i
+	003b  Optio 50 (mass storage mode)
+	003d  Optio S55
+	0041  Optio S5z
+	0043  *ist DL
+	0047  Optio S60
+	0052  Optio 60 Digital Camera
+	006e  K10D
+	0070  K100D
+	0093  K200D
+	00a7  Optio E50
+	1001  EI2000 Camera powered by Digita!
+0a18  Heidelberger Druckmaschinen AG
+0a19  Hua Geng Technologies, Inc.
+0a21  Medtronic Physio Control Corp.
+	8001  MMT-7305WW [Medtronic Minimed CareLink]
+0a22  Century Semiconductor USA, Inc.
+0a27  Datacard Group
+	0102  SP35
+0a2c  AK-Modul-Bus Computer GmbH
+	0008  GPIO Ports
+0a34  TG3 Electronics, Inc.
+	0101  TG82tp
+	0110  Deck 82-key backlit keyboard
+0a35  Radikal Technologies
+	002a  SAC - Software Assigned Controller
+	008a  SAC Hub
+0a39  Gilat Satellite Networks, Ltd
+0a3a  PentaMedia Co., Ltd
+	0163  KN-W510U 1.0 Wireless LAN Adapter
+0a3c  NTT DoCoMo, Inc.
+0a3d  Varo Vision
+0a3f  Swissonic AG
+0a43  Boca Systems, Inc.
+0a46  Davicom Semiconductor, Inc.
+	0268  ST268
+	6688  ZT6688 Fast Ethernet Adapter
+	8515  ADMtek ADM8515 NIC
+	9000  DM9000E Fast Ethernet Adapter
+	9601  DM9601 Fast Ethernet Adapter
+0a47  Hirose Electric
+0a48  I/O Interconnect
+	3233  Multimedia Card Reader
+	3239  Multimedia Card Reader
+	3258  Dane Elec zMate SD Reader
+	3259  Dane Elec zMate CF Reader
+	5000  MediaGear xD-SM
+	500a  Mass Storage Device
+	500f  Mass Storage Device
+	5010  Mass Storage Device
+	5011  Mass Storage Device
+	5014  Mass Storage Device
+	5020  Mass Storage Device
+	5021  Mass Storage Device
+	5022  Mass Storage Device
+	5023  Mass Storage Device
+	5024  Mass Storage Device
+	5025  Mass Storage Device
+0a4a  Ploytec GmbH
+	a400  AUDIO JUNCTION 2.0
+0a4b  Fujitsu Media Devices, Ltd
+0a4c  Computex Co., Ltd
+	15d9  OPTICAL MOUSE
+0a4d  Evolution Electronics, Ltd
+	0064  MK-225 Driver
+	0065  MK-225C Driver
+	0066  MK-225C Driver
+	0067  MK-425C Driver
+	0078  MK-37 Driver
+	0079  MK-37C Driver
+	007a  MK-37C Driver
+	008c  TerraTec MIDI MASTER
+	008d  MK-249C Driver
+	008e  MK-249C MIDI Keyboard
+	008f  MK-449C Driver
+	0090  Keystation 49e Driver
+	0091  Keystation 61es Driver
+	00a0  MK-361 Driver
+	00a1  MK-361C Driver
+	00a2  MK-361C Driver
+	00a3  MK-461C MIDI Keyboard
+	00b5  Keystation Pro 88 Driver
+	00d2  E-Keys Driver
+	00f0  UC-16 Driver
+	00f1  X-Session Driver
+	00f5  UC-33e MIDI Controller
+0a4e  Steinberg Soft-und Hardware GmbH
+0a4f  Litton Systems, Inc.
+0a50  Mimaki Engineering Co., Ltd
+0a51  Sony Electronics, Inc.
+0a52  Jebsee Electronics Co., Ltd
+0a53  Portable Peripheral Co., Ltd
+	1000  Scanner
+	2000  Q-Scan A6 Scanner
+	2001  Q-Scan A6 Scanner
+	2013  Media Drive A6 Scanner
+	2014  Media Drive A6 Scanner
+	2015  BizCardReader 600C
+	2016  BizCardReader 600C
+	202a  Scanshell-CSSN
+	3000  Q-Scan A8 Scanner
+	3002  Q-Scan A8 Reader
+	3015  BizCardReader 300G
+	302a  LM9832 - PA570 Mini Business Card Scanner [Targus]
+	5001  BizCardReader 900C
+0a5a  Electronics For Imaging, Inc.
+0a5b  EAsics NV
+0a5c  Broadcom Corp.
+	0201  iLine10(tm) Network Adapter
+	0bdc  802.11a/b/g/n/ac Wireless Adapter
+	2000  Bluetooth Device
+	2001  Bluetooth Device
+	2009  BCM2035 Bluetooth
+	200a  BCM2035 Bluetooth dongle
+	200f  Bluetooth Controller
+	201d  Bluetooth Device
+	201e  IBM Integrated Bluetooth IV
+	2020  Bluetooth dongle
+	2021  BCM2035B3 Bluetooth Adapter
+	2033  BCM2033 Bluetooth
+	2035  BCM2035 Bluetooth
+	2038  Blutonium Device
+	2039  BCM2045 Bluetooth
+	2045  Bluetooth Controller
+	2046  Bluetooth Device
+	2047  Bluetooth Device
+	205e  Bluetooth Device
+	2100  Bluetooth 2.0+eDR dongle
+	2101  BCM2045 Bluetooth
+	2102  ANYCOM Blue USB-200/250
+	2110  BCM2045B (BDC-2) [Bluetooth Controller]
+	2111  ANYCOM Blue USB-UHE 200/250
+	2120  2045 Bluetooth 2.0 USB-UHE Device with trace filter
+	2121  BCM2210 Bluetooth
+	2122  Bluetooth 2.0+EDR dongle
+	2123  Bluetooth dongle
+	2130  2045 Bluetooth 2.0 USB-UHE Device with trace filter
+	2131  2045 Bluetooth 2.0 Device with trace filter
+	2145  BCM2045B (BDC-2.1) [Bluetooth Controller]
+	2148  BCM92046DG-CL1ROM Bluetooth 2.1 Adapter
+	2150  BCM2046 Bluetooth Device
+	2151  Bluetooth
+	2154  BCM92046DG-CL1ROM Bluetooth 2.1 UHE Dongle
+	216a  BCM43142A0 Bluetooth
+	216c  BCM43142A0 Bluetooth Device
+	216d  BCM43142A0 Bluetooth 4.0
+	216f  BCM20702A0 Bluetooth
+	217d  HP Bluethunder
+	217f  BCM2045B (BDC-2.1)
+	2198  Bluetooth 3.0 Device
+	219b  Bluetooth 2.1 Device
+	21b1  HP Bluetooth Module
+	21b4  BCM2070 Bluetooth 2.1 + EDR
+	21b9  BCM2070 Bluetooth 2.1 + EDR
+	21ba  BCM2070 Bluetooth 2.1 + EDR
+	21bb  BCM2070 Bluetooth 2.1 + EDR
+	21bc  BCM2070 Bluetooth 2.1 + EDR
+	21bd  BCM2070 Bluetooth 2.1 + EDR
+	21d7  BCM43142 Bluetooth 4.0
+	21e1  HP Portable SoftSailing
+	21e3  HP Portable Valentine
+	21e6  BCM20702 Bluetooth 4.0 [ThinkPad]
+	21e8  BCM20702A0 Bluetooth 4.0
+	21ec  BCM20702A0 Bluetooth 4.0
+	21f1  HP Portable Bumble Bee
+	22be  BCM2070 Bluetooth 3.0 + HS
+	4500  BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth)
+	4502  Keyboard (Boot Interface Subclass)
+	4503  Mouse (Boot Interface Subclass)
+	5800  BCM5880 Secure Applications Processor
+	5801  BCM5880 Secure Applications Processor with fingerprint swipe sensor
+	5802  BCM5880 Secure Applications Processor with fingerprint touch sensor
+	5803  BCM5880 Secure Applications Processor with secure keyboard
+	5804  BCM5880 Secure Applications Processor with fingerprint swipe sensor
+	6300  Pirelli Remote NDIS Device
+	6410  BCM20703A1 Bluetooth 4.1 + LE
+	bd11  BCM4320 802.11bg Wireless Adapter
+	bd12  BCM4326U 802.11bg Wireless Adapter
+	bd13  BCM4323 802.11abgn Wireless Adapter
+	bd16  BCM4319 802.11bgn Wireless Adapter
+	bd17  BCM43236 802.11abgn Wireless Adapter
+	bd1d  BCM43526 802.11a/b/g/n/ac (2x2) Wireless Adapter
+	bd1e  BCM43143 802.11bgn (1x1) Wireless Adapter
+	bd1f  BCM43242 802.11abgn Wireless Adapter
+	d11b  Eminent EM4045 [Broadcom 4320 USB]
+0a5d  Diatrend Corp.
+0a5f  Zebra
+	0009  LP2844 Printer
+	0050  P120i / WM120i
+	0080  GK420d Label Printer
+	0081  GK420t Label Printer
+	0084  GX420d Desktop Label Printer
+	008b  HC100 wristbands Printer
+	008c  ZP 450 Printer
+	00d1  Zebra GC420d Label Printer
+	0110  ZD500 Desktop Label Printer
+	930a  Printer
+0a62  MPMan
+	0010  MPMan MP-F40 MP3 Player
+0a66  ClearCube Technology
+0a67  Medeli Electronics Co., Ltd
+0a68  Comaide Corp.
+0a69  Chroma ate, Inc.
+0a6b  Green House Co., Ltd
+	0001  Compact Flash R/W with MP3 player
+	000f  FlashDisk
+0a6c  Integrated Circuit Systems, Inc.
+0a6d  UPS Manufacturing
+0a6e  Benwin
+0a6f  Core Technology, Inc.
+	0400  Xanboo
+0a70  International Game Technology
+0a71  VIPColor Technologies USA, Inc.
+	0001  VP485 Printer
+0a72  Sanwa Denshi
+0a73  Mackie Designs
+	0002  XD-2 [Spike]
+0a7d  NSTL, Inc.
+0a7e  Octagon Systems Corp.
+0a80  Rexon Technology Corp., Ltd
+0a81  Chesen Electronics Corp.
+	0101  Keyboard
+	0103  Keyboard
+	0203  Mouse
+	0205  PS/2 Keyboard+Mouse Adapter
+	0701  USB Missile Launcher
+	ff01  Wireless Missile Launcher
+0a82  Syscan
+	4600  TravelScan 460/464
+	6605  ScanShell 800N
+0a83  NextComm, Inc.
+0a84  Maui Innovative Peripherals
+0a85  Idexx Labs
+0a86  NITGen Co., Ltd
+0a89  Aktiv
+	0001  Guardant Stealth/Net
+	0002  Guardant ID
+	0003  Guardant Stealth 2
+	0004  Rutoken
+	0005  Guardant Fidus
+	0006  Guardant Stealth 3
+	0007  Guardant Stealth 2
+	0008  Guardant Stealth 3 Sign/Time
+	0009  Guardant Code
+	000a  Guardant Sign Pro
+	000b  Guardant Sign Pro HID
+	000c  Guardant Stealth 3 Sign/Time
+	000d  Guardant Code HID
+	000f  Guardant System Firmware Update
+	0020  Rutoken S
+	0025  Rutoken lite
+	0026  Rutoken lite HID
+	002a  Rutoken Mass Storage
+	002b  Guardant Mass Storage
+	0030  Rutoken ECP
+	0040  Rutoken ECP HID
+	0060  Rutoken Magistra
+	0061  Rutoken Magistra
+	0069  Reader
+	0080  Rutoken PinPad Ex
+	0081  Rutoken PinPad In
+	0082  Rutoken PinPad 2
+0a8d  Picturetel
+0a8e  Japan Aviation Electronics Industry, Ltd
+	2011  Filter Driver For JAE XMC R/W
+0a90  Candy Technology Co., Ltd
+0a91  Globlink Technology, Inc.
+	3801  Targus PAKP003 Mouse
+0a92  EGO SYStems, Inc.
+	0011  SYS WaveTerminal U2A
+	0021  GIGAPort
+	0031  GIGAPortAG
+	0053  AudioTrak Optoplay
+	0061  Waveterminal U24
+	0071  MAYA EX7
+	0091  Maya 44
+	00b1  MAYA EX5
+	1000  MIDI Mate
+	1010  RoMI/O
+	1020  M4U
+	1030  M8U
+	1090  KeyControl49
+	10a0  KeyControl25
+0a93  C Technologies AB
+	0002  C-Pen 10
+	0005  MyPen Light
+	000d  Input Pen
+	0010  C-Pen 20
+	0a93  PayPen
+0a94  Intersense
+0aa3  Lava Computer Mfg., Inc.
+0aa4  Develco Elektronik
+0aa5  First International Digital
+	0002  irock! 500 Series
+	0801  MP3 Player
+0aa6  Perception Digital, Ltd
+	0101  Hercules Jukebox
+	1501  Store 'n' Go HD Drive
+0aa7  Wincor Nixdorf International GmbH
+	0100  POS Keyboard, TA58P-USB
+	0101  POS Keyboard, TA85P-USB
+	0102  POS Keyboard, TA59-USB
+	0103  POS Keyboard, TA60-USB
+	0104  SNIkey Keyboard, SNIKey-KB-USB
+	0200  Operator Display, BA63-USB
+	0201  Operator Display, BA66-USB
+	0202  Operator Display & Scanner, XiCheck-BA63
+	0203  Operator Display & Scanner, XiCheck-BA66
+	0204  Graphics Operator Display, BA63GV
+	0300  POS Printer (printer class mode), TH210
+	0301  POS Printer (native mode), TH210
+	0302  POS Printer (printer class mode), TH220
+	0303  POS Printer (native mode), TH220
+	0304  POS Printer, TH230
+	0305  Lottery Printer, XiPrintPlus
+	0306  POS Printer (printer class mode), TH320
+	0307  POS Printer (native mode), TH320
+	0308  POS Printer (printer class mode), TH420
+	0309  POS Printer (native mode), TH420
+	030a  POS Printer, TH200B
+	0400  Lottery Scanner, Xiscan S
+	0401  Lottery Scanner, Xiscan 3
+	0402  Programmable Magnetic Swipe Card Reader, MSRP-USB
+	0500  IDE Adapter
+	0501  Hub Printer Interface
+	0502  Hub SNIKey Keyboard
+	4304  Banking Printer TP07
+	4305  Banking Printer TP07c
+	4500  WN Central Special Electronics
+0aa8  TriGem Computer, Inc.
+	0060  TG 11Mbps WLAN Mini Adapter
+	1001  DreamComboM4100
+	3002  InkJet Color Printer
+	8001  TG_iMON
+	8002  TG_KLOSS
+	a001  TG_X2
+	a002  TGVFD_KLOSS
+	ffda  iMON_VFD
+0aa9  Baromtec Co.
+	f01b  Medion MD 6242 MP3 Player
+0aaa  Japan CBM Corp.
+0aab  Vision Shape Europe SA
+0aac  iCompression, Inc.
+0aad  Rohde & Schwarz GmbH & Co. KG
+	0003  NRP-Z21
+	000c  NRP-Z11
+	0013  NRP-Z22
+	0014  NRP-Z23
+	0015  NRP-Z24
+	0016  NRP-Z51
+	0017  NRP-Z52
+	0018  NRP-Z55
+	0019  NRP-Z56
+	0021  NRP-Z91
+	0023  NRP-Z81
+	002c  NRP-Z31
+	002d  NRP-Z37
+	002f  NRP-Z27
+	0051  NRP-Z28
+	0052  NRP-Z98
+	0062  NRP-Z92
+	0070  NRP-Z57
+	0083  NRP-Z85
+	0095  NRP-Z86
+	0117  HMF / HMP / HMS-X / HMO series Oscilloscopes
+	0118  HMF / HMP / HMS-X / HMO series Oscilloscopes
+	0119  HMF / HMP / HMS-X / HMO series Oscilloscopes
+0aae  NEC infrontia Corp. (Nitsuko)
+0aaf  Digitalway Co., Ltd
+0ab0  Arrow Strong Electronics Co., Ltd
+0ab1  FEIG ELECTRONIC GmbH
+	0002  OBID RFID-Reader
+	0004  OBID classic-pro
+0aba  Ellisys
+	8001  Tracker 110 Protocol Analyzer
+	8002  Explorer 200 Protocol Analyzer
+0abe  Stereo-Link
+	0101  SL1200 DAC
+0abf  Diolan
+	3370  I2C/SPI Adapter - U2C-12
+0ac3  Sanyo Semiconductor Company Micro
+0ac4  Leco Corp.
+0ac5  I & C Corp.
+0ac6  Singing Electrons, Inc.
+0ac7  Panwest Corp.
+0ac8  Z-Star Microelectronics Corp.
+	0301  Web Camera
+	0302  ZC0302 Webcam
+	0321  Vimicro generic vc0321 Camera
+	0323  Luxya WC-1200 USB 2.0 Webcam
+	0328  A4Tech PK-130MG
+	0336  Elecom UCAM-DLQ30
+	301b  ZC0301 Webcam
+	303b  ZC0303 Webcam
+	305b  ZC0305 Webcam
+	307b  USB 1.1 Webcam
+	332d  Vega USB 2.0 Camera
+	3343  Sirius USB 2.0 Camera
+	3370  Traveler TV 6500 SF Dia-scanner
+	3420  Venus USB2.0 Camera
+	c001  Sony embedded vimicro Camera
+	c002  Visual Communication Camera VGP-VCC1
+	c302  Vega USB 2.0 Camera
+	c303  Saturn USB 2.0 Camera
+	c326  Namuga 1.3M Webcam
+	c33f  Webcam
+	c412  Lenovo IdeaCentre Web Camera
+	c429  Lenovo ThinkCentre Web Camera
+	c42d  Lenovo IdeaCentre Web Camera
+0ac9  Micro Solutions, Inc.
+	0000  Backpack CD-ReWriter
+	0001  BACKPACK  2 Cable
+	0010  BACKPACK
+	0011  Backpack 40GB Hard Drive
+	0110  BACKPACK
+	0111  BackPack
+	1234  BACKPACK
+0aca  OPEN Networks Ltd
+	1060  OPEN NT1 Plus II
+0acc  Koga Electronics Co.
+0acd  ID Tech
+	0300  IDT1221U RS-232 Adapter
+	0401  Spectrum III Hybrid Smartcard Reader
+	0630  Spectrum III Mag-Only Insert Reader (SPT3-355 Series) USB-CDC
+	0810  SecurePIN (IDPA-506100Y) PIN Pad
+	2030  ValueMag Magnetic Stripe Reader
+	3710  ViVOpay Kiosk III
+0ace  ZyDAS
+	1201  ZD1201 802.11b
+	1211  ZD1211 802.11g
+	1215  ZD1211B 802.11g
+	1221  ZD1221 802.11n
+	1602  ZyXEL Omni FaxModem 56K
+	1608  ZyXEL Omni FaxModem 56K UNO
+	1611  ZyXEL Omni FaxModem 56K Plus
+	2011  Virtual media for 802.11bg
+	20ff  Virtual media for 802.11bg
+	a211  ZD1211 802.11b/g Wireless Adapter
+	b215  802.11bg
+0acf  Intoto, Inc.
+0ad0  Intellix Corp.
+0ad1  Remotec Technology, Ltd
+0ad2  Service & Quality Technology Co., Ltd
+0ada  Data Encryption Systems Ltd.
+	0005  DK2
+0ae3  Allion Computer, Inc.
+0ae4  Taito Corp.
+0ae7  Neodym Systems, Inc.
+0ae8  System Support Co., Ltd
+0ae9  North Shore Circuit Design L.L.P.
+0aea  SciEssence, LLC
+0aeb  TTP Communications, Ltd
+0aec  Neodio Technologies Corp.
+	2101  SmartMedia Card Reader
+	2102  CompactFlash Card Reader
+	2103  MMC/SD Card Reader
+	2104  MemoryStick Card Reader
+	2201  SmartMedia+CompactFlash Card Reader
+	2202  SmartMedia+MMC/SD Card Reader
+	2203  SmartMedia+MemoryStick Card Reader
+	2204  CompactFlash+MMC/SD Card Reader
+	2205  CompactFlash+MemoryStick Card Reader
+	2206  MMC/SD+MemoryStick Card Reader
+	2301  SmartMedia+CompactFlash+MMC/SD Card Reader
+	2302  SmartMedia+CompactFlash+MemoryStick Card Reader
+	2303  SmartMedia+MMC/SD+MemoryStick Card Reader
+	2304  CompactFlash+MMC/SD+MemoryStick Card Reader
+	3016  MMC/SD+Memory Stick Card Reader
+	3050  ND3050 8-in-1 Card Reader
+	3060  1.1 FS Card Reader
+	3101  MMC/SD Card Reader
+	3102  MemoryStick Card Reader
+	3201  MMC/SD+MemoryStick Card Reader
+	3216  HS Card Reader
+	3260  7-in-1 Card Reader
+	5010  ND5010 Card Reader
+0af0  Option
+	5000  UMTS Card
+	6000  GlobeTrotter 3G datacard
+	6300  GT 3G Quad UMTS/GPRS Card
+	6600  GlobeTrotter 3G+ datacard
+	6711  GlobeTrotter Express 7.2 v2
+	6971  Globetrotter HSDPA Modem
+	7251  Globetrotter HSUPA Modem (aka iCON HSUPA E)
+	7501  Globetrotter HSUPA Modem (icon 411 aka "Vodafone K3760")
+	7601  Globetrotter MO40x 3G Modem (GTM 382)
+	7701  Globetrotter HSUPA Modem (aka icon 451)
+	d055  Globetrotter GI0505 [iCON 505]
+0af6  Silver I Co., Ltd
+0af7  B2C2, Inc.
+	0101  Digital TV USB Receiver (DVB-S/T/C / ATSC)
+0af9  Hama, Inc.
+	0010  USB SightCam 100
+	0011  Micro Innovations IC50C Webcam
+0afa  DMC Co., Ltd.
+	07d2  Controller Board for Projected Capacitive Touch Screen DUS3000
+0afc  Zaptronix Ltd
+0afd  Tateno Dennou, Inc.
+0afe  Cummins Engine Co.
+0aff  Jump Zone Network Products, Inc.
+0b00  INGENICO
+0b05  ASUSTek Computer, Inc.
+	0001  MeMO Pad HD 7 (CD-ROM mode)
+	0301  MyPal A696 GPS PDA
+	1101  Mass Storage (UISDMC4S)
+	1706  WL-167G v1 802.11g Adapter [Ralink RT2571]
+	1707  WL-167G v1 802.11g Adapter [Ralink RT2571]
+	1708  Mass Storage Device
+	170b  Multi card reader
+	170c  WL-159g 802.11bg [ZyDAS ZD1211B+AL2230]
+	170d  802.11b/g Wireless Network Adapter
+	1712  BT-183 Bluetooth 2.0+EDR adapter
+	1715  2045 Bluetooth 2.0 Device with trace filter
+	1716  Bluetooth Device
+	1717  WL169gE 802.11g Adapter [Broadcom 4320 USB]
+	171b  A9T wireless 802.11bg
+	171c  802.11b/g Wireless Network Adapter
+	171f  My Cinema U3000 Mini [DiBcom DiB7700P]
+	1723  WL-167G v2 802.11g Adapter [Ralink RT2571W]
+	1724  RT2573
+	1726  Laptop OLED Display
+	172a  802.11n Network Adapter
+	172b  802.11n Network Adapter
+	1731  802.11n Network Adapter
+	1732  802.11n Network Adapter
+	1734  AF-200
+	173c  BT-183 Bluetooth 2.0
+	173f  My Cinema U3100 Mini
+	1742  802.11n Network Adapter
+	1743  Xonar U1 Audio Station
+	1751  BT-253 Bluetooth Adapter
+	175b  Laptop OLED Display
+	1760  802.11n Network Adapter
+	1761  USB-N11 802.11n Network Adapter [Ralink RT2870]
+	1774  Gobi Wireless Modem (QDL mode)
+	1776  Gobi Wireless Modem
+	1779  My Cinema U3100 Mini Plus [AF9035A]
+	1784  USB-N13 802.11n Network Adapter (rev. A1) [Ralink RT3072]
+	1786  USB-N10 802.11n Network Adapter [Realtek RTL8188SU]
+	1788  BT-270 Bluetooth Adapter
+	1791  WL-167G v3 802.11n Adapter [Realtek RTL8188SU]
+	179c  Bluetooth Adapter
+	179d  USB-N53 802.11abgn Network Adapter [Ralink RT3572]
+	179e  Eee Note EA800 (network mode)
+	179f  Eee Note EA800 (tablet mode)
+	17a0  Xonar U3 sound card
+	17a1  Eee Note EA800 (mass storage mode)
+	17ab  USB-N13 802.11n Network Adapter (rev. B1) [Realtek RTL8192CU]
+	17ba  N10 Nano 802.11n Network Adapter [Realtek RTL8192CU]
+	17c2  ROG Spitfire
+	17c7  WL-330NUL
+	17c9  USB-AC53 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526]
+	17cb  Broadcom BCM20702A0 Bluetooth
+	17d1  AC51 802.11a/b/g/n/ac Wireless Adapter [Mediatek MT7610U]
+	17d2  USB-AC56 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU]
+	17d3  USB-N10 v2 802.11b/g/n Wireless Adapter [MediaTek MT7601U]
+	17db  USB-AC50 802.11a/b/g/n/ac (1x1) Wireless Adapter [MediaTek MT7610U]
+	17e8  USB-N14 802.11b/g/n (2x2) Wireless Adapter [Ralink RT5372]
+	17eb  USB-AC55 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7612U]
+	17f5  Xonar U5 sound card
+	180a  Broadcom BCM20702 Single-Chip Bluetooth 4.0 + LE
+	1817  USB-AC68 802.11a/b/g/n/ac (4x4) Wireless Adapter [Realtek RTL8814AU]
+	1825  Qualcomm Bluetooth 4.1
+	18f0  Realtek 8188EUS [USB-N10 Nano]
+	4c80  Transformer Pad TF300TG
+	4c90  Transformer Pad Infinity TF700
+	4c91  Transformer Pad Infinity TF700 (Debug mode)
+	4ca0  Transformer Pad TF701T
+	4ca1  Transformer Pad TF701T (Debug mode)
+	4d00  Transformer Prime TF201
+	4d01  Transformer Prime TF201 (debug mode)
+	4daf  Transformer Pad Infinity TF700 (Fastboot)
+	5410  MeMO Pad HD 7 (MTP mode)
+	5412  MeMO Pad HD 7 (PTP mode)
+	550f  Fonepad 7
+	6101  Cable Modem
+	620a  Remote NDIS Device
+	7772  Zenfone GO (ZB500KL) (MTP mode)
+	7773  Zenfone GO (ZB500KL) (Debug, MTP mode)
+	7774  Zenfone GO (ZB500KL) (RNDIS mode)
+	7775  Zenfone GO (ZB500KL) (Debug, RNDIS mode)
+	7776  Zenfone GO (ZB500KL) (PTP mode)
+	7777  Zenfone GO (ZB500KL) (Debug, PTP mode)
+	b700  Broadcom Bluetooth 2.1
+0b0b  Datamax-O'Neil
+	106e  Datamax E-4304
+0b0c  Todos AB
+	0009  Todos Argos Mini II Smart Card Reader
+	001e  e.dentifier2 (ABN AMRO electronic banking card reader NL)
+	002e  C200 smartcard controller (Nordea card reader)
+	003f  Todos C400 smartcard controller (Handelsbanken card reader)
+	0050  Argos Mini II Smart Card Reader (CCID)
+0b0d  ProjectLab
+	0000  CenturyCD
+0b0e  GN Netcom
+	0305  Jabra EVOLVE Link MS
+	0311  Jabra EVOLVE 65
+	0312  enc060:Buttons Volume up/down/mute + phone [Jabra]
+	0343  Jabra UC VOICE 150a
+	0348  Jabra UC VOICE 550a MS
+	034c  Jabra UC Voice 750 MS
+	034d  Jabra UC VOICE 750
+	0410  Jabra SPEAK 410
+	0420  Jabra SPEAK 510
+	0422  Jabra SPEAK 510 USB
+	0933  Jabra Freeway
+	094d  GN Netcom / Jabra REVO Wireless
+	1017  Jabra PRO 930
+	1022  Jabra PRO 9450, Type 9400BS (DECT Headset)
+	1041  Jabra PRO 9460
+	1900  Jabra Biz 1900
+	2007  GN 2000 Stereo Corded Headset
+	2456  Jabra SPEAK 810
+	245e  Jabra Link 370
+	620c  Jabra BT620s
+	9330  Jabra GN9330 Headset
+	a346  Jabra Engage 75 Stereo
+	a50a  Alienware Wireless Gaming Headset AW988
+0b0f  AVID Technology
+	0400  DNxID
+0b10  Pcally
+0b11  I Tech Solutions Co., Ltd
+0b1e  Electronic Warfare Assoc., Inc. (EWA)
+	8007  Blackhawk USB560-BP JTAG Emulator
+0b1f  Insyde Software Corp.
+0b20  TransDimension, Inc.
+0b21  Yokogawa Electric Corp.
+0b22  Japan System Development Co., Ltd
+0b23  Pan-Asia Electronics Co., Ltd
+0b24  Link Evolution Corp.
+0b27  Ritek Corp.
+0b28  Kenwood Corp.
+0b2c  Village Center, Inc.
+0b30  PNY Technologies, Inc.
+	0006  SM Media-Shuttle Card Reader
+0b33  Contour Design, Inc.
+	0020  ShuttleXpress
+	0030  ShuttlePro v2
+	0401  RollerMouse Free 2
+	0700  RollerMouse Pro
+	08a0  Perfit Mouse
+	1000  RollerMouse Red
+	1010  Vidamic Technomouse IQ
+0b37  Hitachi ULSI Systems Co., Ltd
+0b38  Gear Head
+	0003  Keyboard
+	0010  107-Key Keyboard
+0b39  Omnidirectional Control Technology, Inc.
+	0001  Composite USB PS2 Converter
+	0109  USB TO Ethernet
+	0421  Serial
+	0801  USB-Parallel Bridge
+	0901  OCT To Fast Ethernet Converter
+	0c03  LAN DOCK Serial Converter
+0b3a  IPaxess
+0b3b  Tekram Technology Co., Ltd
+	0163  TL-WN320G 1.0 WLAN Adapter
+	1601  Allnet 0193 802.11b Adapter
+	1602  ZyXEL ZyAIR B200 802.11b Adapter
+	1612  AIR.Mate 2@net 802.11b Adapter
+	1613  802.11b Wireless LAN Adapter
+	1620  Allnet Wireless Network Adapter [Envara WiND512]
+	1630  QuickWLAN 802.11bg
+	5630  802.11bg
+	6630  ZD1211
+0b3c  Olivetti Techcenter
+	a010  Simple_Way Printer/Scanner/Copier
+	c000  Olicard 100
+	c700  Olicard 100 (Mass Storage mode)
+0b3e  Kikusui Electronics Corp.
+0b41  Hal Corp.
+	0011  Crossam2+USB IR commander
+0b43  Play.com, Inc.
+	0003  PS2 Controller Converter
+	0005  GameCube Adaptor
+0b47  Sportbug.com, Inc.
+0b48  TechnoTrend AG
+	1003  Technotrend/Hauppauge USB-Nova
+	1004  TT-PCline
+	1005  Technotrend/Hauppauge USB-Nova
+	1006  Technotrend/Hauppauge DEC3000-s
+	1007  TT-micro plus Device
+	1008  Technotrend/Hauppauge DEC2000-t
+	1009  Technotrend/Hauppauge DEC2540-t
+	3001  DVB-S receiver
+	3002  DVB-C receiver
+	3003  DVB-T receiver
+	3004  TT TV-Stick
+	3005  TT TV-Stick (8kB EEPROM)
+	3006  TT-connect S-2400 DVB-S receiver
+	3007  TT-connect S2-3600
+	3008  TT-connect
+	3009  TT-connect S-2400 DVB-S receiver (8kB EEPROM)
+	300a  TT-connect S2-3650 CI
+	300b  TT-connect C-3650 CI
+	300c  TT-connect T-3650 CI
+	300d  TT-connect CT-3650 CI
+	300e  TT-connect C-2400
+	3011  TT-connect S2-4600
+	3012  TT-connect CT2-4650 CI
+	3014  TT-TVStick CT2-4400
+	3015  TT-connect CT2-4650 CI
+	3017  TT-connect S2-4650 CI
+0b49  ASCII Corp.
+	064f  Trance Vibrator
+0b4b  Pine Corp. Ltd.
+	0100  D'music MP3 Player
+0b4d  Graphtec America, Inc.
+	110a  Graphtec CC200-20
+	1123  Electronic Cutting Tool [Silhouette Portrait]
+0b4e  Musical Electronics, Ltd
+	6500  MP3 Player
+	8028  MP3 Player
+	8920  MP3 Player
+0b50  Dumpries Co., Ltd
+0b51  Comfort Keyboard Co.
+	0020  Comfort Keyboard
+0b52  Colorado MicroDisplay, Inc.
+0b54  Sinbon Electronics Co., Ltd
+0b56  TYI Systems, Ltd
+0b57  Beijing HanwangTechnology Co., Ltd
+0b59  Lake Communications, Ltd
+0b5a  Corel Corp.
+0b5f  Green Electronics Co., Ltd
+0b60  Nsine, Ltd
+0b61  NEC Viewtechnology, Ltd
+0b62  Orange Micro, Inc.
+	000b  Bluetooth Device
+	0059  iBOT2 Webcam
+0b63  ADLink Technology, Inc.
+0b64  Wonderful Wire Cable Co., Ltd
+0b65  Expert Magnetics Corp.
+0b66  Cybiko Inc.
+	0041  Xtreme
+0b67  Fairbanks Scales
+	555e  SCB-R9000
+0b69  CacheVision
+0b6a  Maxim Integrated Products
+	a132  WUP-005 [Nintendo Wii U Pro Controller]
+0b6f  Nagano Japan Radio Co., Ltd
+0b70  PortalPlayer, Inc.
+	00ba  iRiver H10 20GB
+0b71  SHIN-EI Sangyo Co., Ltd
+0b72  Embedded Wireless Technology Co., Ltd
+0b73  Computone Corp.
+0b75  Roland DG Corp.
+0b79  Sunrise Telecom, Inc.
+0b7a  Zeevo, Inc.
+	07d0  Bluetooth Dongle
+0b7b  Taiko Denki Co., Ltd
+0b7c  ITRAN Communications, Ltd
+0b7d  Astrodesign, Inc.
+0b81  id3 Technologies
+	0001  Biothentic II smartcard reader with fingerprint sensor
+	0002  DFU-Enabled Devices (DFU)
+	0012  BioPAD biometric module (DFU + CDC)
+	0102  Certis V1 fingerprint reader
+	0103  Certis V2 fingerprint reader
+	0200  CL1356T / CL1356T5 / CL1356A smartcard readers (CCID)
+	0201  CL1356T / CL1356T5 / CL1356A smartcard readers (DFU + CCID)
+	0220  CL1356A FFPJP smartcard reader (CCID + HID)
+	0221  CL1356A smartcard reader (DFU + CCID + HID)
+0b84  Rextron Technology, Inc.
+0b85  Elkat Electronics, Sdn., Bhd.
+0b86  Exputer Systems, Inc.
+	5100  XMC5100 Zippy Drive
+	5110  XMC5110 Flash Drive
+	5200  XMC5200 Zippy Drive
+	5201  XMC5200 Zippy Drive
+	5202  XMC5200 Zippy Drive
+	5280  XMC5280 Storage Drive
+	fff0  ISP5200 Debugger
+0b87  Plus-One I & T, Inc.
+0b88  Sigma Koki Co., Ltd, Technology Center
+0b89  Advanced Digital Broadcast, Ltd
+0b8c  SMART Technologies Inc.
+	0001  Interactive Whiteboard Controller (SB6) (HID)
+	00c3  Sympodium ID350
+0b95  ASIX Electronics Corp.
+	1720  10/100 Ethernet
+	1780  AX88178
+	1790  AX88179 Gigabit Ethernet
+	6802  AX68002 KVM Switch SoC
+	7720  AX88772
+	772a  AX88772A Fast Ethernet
+	772b  AX88772B
+	7e2b  AX88772B Fast Ethernet Controller
+0b96  Sewon Telecom
+0b97  O2 Micro, Inc.
+	7732  Smart Card Reader
+	7761  Oz776 1.1 Hub
+	7762  Oz776 SmartCard Reader
+	7772  OZ776 CCID Smartcard Reader
+0b98  Playmates Toys, Inc.
+0b99  Audio International, Inc.
+0b9b  Dipl.-Ing. Stefan Kunde
+	4012  Reflex RC-controller Interface
+0b9d  Softprotec Co.
+0b9f  Chippo Technologies
+0baf  U.S. Robotics
+	00e5  USR6000
+	00eb  USR1120 802.11b Adapter
+	00ec  56K Faxmodem
+	00f1  SureConnect ADSL ATM Adapter
+	00f2  SureConnect ADSL Loader
+	00f5  SureConnect ADSL ATM Adapter
+	00f6  SureConnect ADSL Loader
+	00f7  SureConnect ADSL ATM Adapter
+	00f8  SureConnect ADSL Loader
+	00f9  SureConnect ADSL ATM Adapter
+	00fa  SureConnect ADSL Loader
+	00fb  SureConnect ADSL Ethernet/USB Router
+	0111  USR5420 802.11g Adapter [Broadcom 4320 USB]
+	0118  U5 802.11g Adapter
+	011b  Wireless MAXg Adapter [Broadcom 4320]
+	0121  USR5423 802.11bg Wireless Adapter [ZyDAS ZD1211B]
+	0303  USR5637 56K Faxmodem
+	6112  FaxModem Model 5633
+0bb0  Concord Camera Corp.
+	0100  Sound Vision Stream
+	5007  3340z/Rollei DC3100
+0bb1  Infinilink Corp.
+0bb2  Ambit Microsystems Corp.
+	0302  U10H010 802.11b Wireless Adapter [Intersil PRISM 3]
+	6098  USB Cable Modem
+0bb3  Ofuji Technology
+0bb4  HTC (High Tech Computer Corp.)
+	0001  Android Phone via mass storage [Wiko Cink Peax 2]
+	00ce  mmO2 XDA GSM/GPRS Pocket PC
+	00cf  SPV C500 Smart Phone
+	0306  Vive Hub Bluetooth 4.1 (Broadcom BCM920703)
+	0a01  PocketPC Sync
+	0a02  Himalaya GSM/GPRS Pocket PC
+	0a03  PocketPC Sync
+	0a04  PocketPC Sync
+	0a05  PocketPC Sync
+	0a06  PocketPC Sync
+	0a07  Magician PocketPC SmartPhone / O2 XDA
+	0a08  PocketPC Sync
+	0a09  PocketPC Sync
+	0a0a  PocketPC Sync
+	0a0b  PocketPC Sync
+	0a0c  PocketPC Sync
+	0a0d  PocketPC Sync
+	0a0e  PocketPC Sync
+	0a0f  PocketPC Sync
+	0a10  PocketPC Sync
+	0a11  PocketPC Sync
+	0a12  PocketPC Sync
+	0a13  PocketPC Sync
+	0a14  PocketPC Sync
+	0a15  PocketPC Sync
+	0a16  PocketPC Sync
+	0a17  PocketPC Sync
+	0a18  PocketPC Sync
+	0a19  PocketPC Sync
+	0a1a  PocketPC Sync
+	0a1b  PocketPC Sync
+	0a1c  PocketPC Sync
+	0a1d  PocketPC Sync
+	0a1e  PocketPC Sync
+	0a1f  PocketPC Sync
+	0a20  PocketPC Sync
+	0a21  PocketPC Sync
+	0a22  PocketPC Sync
+	0a23  PocketPC Sync
+	0a24  PocketPC Sync
+	0a25  PocketPC Sync
+	0a26  PocketPC Sync
+	0a27  PocketPC Sync
+	0a28  PocketPC Sync
+	0a29  PocketPC Sync
+	0a2a  PocketPC Sync
+	0a2b  PocketPC Sync
+	0a2c  PocketPC Sync
+	0a2d  PocketPC Sync
+	0a2e  PocketPC Sync
+	0a2f  PocketPC Sync
+	0a30  PocketPC Sync
+	0a31  PocketPC Sync
+	0a32  PocketPC Sync
+	0a33  PocketPC Sync
+	0a34  PocketPC Sync
+	0a35  PocketPC Sync
+	0a36  PocketPC Sync
+	0a37  PocketPC Sync
+	0a38  PocketPC Sync
+	0a39  PocketPC Sync
+	0a3a  PocketPC Sync
+	0a3b  PocketPC Sync
+	0a3c  PocketPC Sync
+	0a3d  PocketPC Sync
+	0a3e  PocketPC Sync
+	0a3f  PocketPC Sync
+	0a40  PocketPC Sync
+	0a41  PocketPC Sync
+	0a42  PocketPC Sync
+	0a43  PocketPC Sync
+	0a44  PocketPC Sync
+	0a45  PocketPC Sync
+	0a46  PocketPC Sync
+	0a47  PocketPC Sync
+	0a48  PocketPC Sync
+	0a49  PocketPC Sync
+	0a4a  PocketPC Sync
+	0a4b  PocketPC Sync
+	0a4c  PocketPC Sync
+	0a4d  PocketPC Sync
+	0a4e  PocketPC Sync
+	0a4f  PocketPC Sync
+	0a50  SmartPhone (MTP)
+	0a51  SPV C400 / T-Mobile SDA GSM/GPRS Pocket PC
+	0a52  SmartPhone Sync
+	0a53  SmartPhone Sync
+	0a54  SmartPhone Sync
+	0a55  SmartPhone Sync
+	0a56  SmartPhone Sync
+	0a57  SmartPhone Sync
+	0a58  SmartPhone Sync
+	0a59  SmartPhone Sync
+	0a5a  SmartPhone Sync
+	0a5b  SmartPhone Sync
+	0a5c  SmartPhone Sync
+	0a5d  SmartPhone Sync
+	0a5e  SmartPhone Sync
+	0a5f  SmartPhone Sync
+	0a60  SmartPhone Sync
+	0a61  SmartPhone Sync
+	0a62  SmartPhone Sync
+	0a63  SmartPhone Sync
+	0a64  SmartPhone Sync
+	0a65  SmartPhone Sync
+	0a66  SmartPhone Sync
+	0a67  SmartPhone Sync
+	0a68  SmartPhone Sync
+	0a69  SmartPhone Sync
+	0a6a  SmartPhone Sync
+	0a6b  SmartPhone Sync
+	0a6c  SmartPhone Sync
+	0a6d  SmartPhone Sync
+	0a6e  SmartPhone Sync
+	0a6f  SmartPhone Sync
+	0a70  SmartPhone Sync
+	0a71  SmartPhone Sync
+	0a72  SmartPhone Sync
+	0a73  SmartPhone Sync
+	0a74  SmartPhone Sync
+	0a75  SmartPhone Sync
+	0a76  SmartPhone Sync
+	0a77  SmartPhone Sync
+	0a78  SmartPhone Sync
+	0a79  SmartPhone Sync
+	0a7a  SmartPhone Sync
+	0a7b  SmartPhone Sync
+	0a7c  SmartPhone Sync
+	0a7d  SmartPhone Sync
+	0a7e  SmartPhone Sync
+	0a7f  SmartPhone Sync
+	0a80  SmartPhone Sync
+	0a81  SmartPhone Sync
+	0a82  SmartPhone Sync
+	0a83  SmartPhone Sync
+	0a84  SmartPhone Sync
+	0a85  SmartPhone Sync
+	0a86  SmartPhone Sync
+	0a87  SmartPhone Sync
+	0a88  SmartPhone Sync
+	0a89  SmartPhone Sync
+	0a8a  SmartPhone Sync
+	0a8b  SmartPhone Sync
+	0a8c  SmartPhone Sync
+	0a8d  SmartPhone Sync
+	0a8e  SmartPhone Sync
+	0a8f  SmartPhone Sync
+	0a90  SmartPhone Sync
+	0a91  SmartPhone Sync
+	0a92  SmartPhone Sync
+	0a93  SmartPhone Sync
+	0a94  SmartPhone Sync
+	0a95  SmartPhone Sync
+	0a96  SmartPhone Sync
+	0a97  SmartPhone Sync
+	0a98  SmartPhone Sync
+	0a99  SmartPhone Sync
+	0a9a  SmartPhone Sync
+	0a9b  SmartPhone Sync
+	0a9c  SmartPhone Sync
+	0a9d  SmartPhone Sync
+	0a9e  SmartPhone Sync
+	0a9f  SmartPhone Sync
+	0b03  Ozone Mobile Broadband
+	0b04  Hermes / TyTN / T-Mobile MDA Vario II / O2 Xda Trion
+	0b05  P3600
+	0b06  Athena / Advantage x7500 / Dopod U1000 / T-Mobile AMEO
+	0b0c  Elf / Touch / P3450 / T-Mobile MDA Touch / O2 Xda Nova / Dopod S1
+	0b1f  Sony Ericsson XPERIA X1
+	0b2f  Rhodium
+	0b51  Qtek 8310 mobile phone [Tornado Noble]
+	0bce  Vario MDA
+	0c01  Dream / ADP1 / G1 / Magic / Tattoo / FP1
+	0c02  Dream / ADP1 / G1 / Magic / Tattoo (Debug)
+	0c03  Android Phone [Fairphone First Edition (FP1)]
+	0c13  Diamond
+	0c1f  Sony Ericsson XPERIA X1
+	0c5f  Snap
+	0c86  Sensation
+	0c87  Desire (debug)
+	0c8d  EVO 4G (debug)
+	0c91  Vision
+	0c94  Vision
+	0c97  Legend
+	0c99  Desire (debug)
+	0c9e  Incredible
+	0ca2  Desire HD (debug mode)
+	0ca5  Android Phone [Evo Shift 4G]
+	0cab  Desire / Desire HD / Hero / Thunderbolt (HTC Sync Mode)
+	0cae  T-Mobile MyTouch 4G Slide [Doubleshot]
+	0de5  One (M7)
+	0dea  M7_UL [HTC One]
+	0f25  One M8
+	0f63  Desire 610 Via MTP
+	0f64  Desire 601
+	0fb4  Remote NDIS based Device
+	0ff0  One Mini (M4)
+	0ff8  Desire HD (Tethering Mode)
+	0ff9  Desire / Desire HD / Hero / Thunderbolt (Charge Mode)
+	0ffe  Desire HD (modem mode)
+	0fff  Android Fastboot Bootloader
+	2008  Android Phone via MTP [MT65xx]
+	200b  Android Phone via PTP [Wiko Cink Peax 2]
+	2134  Vive Hub (SMSC USB2137B)
+	2744  Vive Hub (HTC CB USB2)
+	2c87  Vive
+0bb5  Murata Manufacturing Co., Ltd
+0bb6  Network Alchemy
+0bb7  Joytech Computer Co., Ltd
+0bb8  Hitachi Semiconductor and Devices Sales Co., Ltd
+0bb9  Eiger M&C Co., Ltd
+0bba  ZAccess Systems
+0bbb  General Meters Corp.
+0bbc  Assistive Technology, Inc.
+0bbd  System Connection, Inc.
+0bc0  Knilink Technology, Inc.
+0bc1  Fuw Yng Electronics Co., Ltd
+0bc2  Seagate RSS LLC
+	0502  ST3300601CB-RK 300 GB External Hard Drive
+	0503  ST3250824A [Barracuda 7200.9]
+	2000  Storage Adapter V3 (TPP)
+	2100  FreeAgent Go
+	2200  FreeAgent Go FW
+	2300  Expansion Portable
+	231a  Expansion Portable
+	231c  Expansion Portable
+	2320  USB 3.0 bridge [Portable Expansion Drive]
+	2321  Expansion Portable
+	2322  SRD0NF1 Expansion Portable (STEA)
+	2340  FreeAgent External Hard Drive
+	3000  FreeAgent Desktop
+	3008  FreeAgent Desk 1TB
+	3101  FreeAgent XTreme 640GB
+	3312  SRD00F2 Expansion Desktop Drive (STBV)
+	331a  Desktop HDD 5TB (ST5000DM000)
+	3320  SRD00F2 [Expansion Desktop Drive]
+	3322  SRD0NF2 [Expansion Desktop Drive]
+	3323  Seagate RSS LLC
+	3332  Expansion
+	3343  desktop drive stgy8000400
+	5020  FreeAgent GoFlex
+	5021  FreeAgent GoFlex USB 2.0
+	5030  FreeAgent GoFlex Upgrade Cable STAE104
+	5031  FreeAgent GoFlex USB 3.0
+	5032  SATA cable
+	5070  FreeAgent GoFlex Desk
+	5071  FreeAgent GoFlex Desk
+	50a1  FreeAgent GoFlex Desk
+	50a5  FreeAgent GoFlex Desk USB 3.0
+	5121  FreeAgent GoFlex
+	5161  FreeAgent GoFlex dock
+	6126  Maxtor D3 Station 5TB
+	61b5  Maxtor HX-M201TCB [M3 Portable 2TB]
+	61b6  Maxtor HX-M101TCB/GM [M3 Portable 1TB]
+	61b7  Maxtor M3 Portable
+	a003  Backup Plus
+	a0a1  Backup Plus Desktop
+	a0a4  Backup Plus Desktop Drive
+	aa14  STJ4000400 [Seagate Basic Portable Drive 4TB]
+	ab00  Slim Portable Drive
+	ab1e  Backup Plus Portable Drive
+	ab20  Backup Plus Portable Drive
+	ab21  Backup Plus Slim
+	ab24  Backup Plus Portable Drive
+	ab26  Backup Plus Slim Portable Drive 1 TB
+	ab28  Seagate Backup Plus Portable 5TB SRD00F1
+	ab2d  SRD00F1 [Backup Plus Ultra Slim]
+	ab31  Backup Plus Desktop Drive (5TB)
+	ab34  Backup Plus
+	ab38  Backup Plus Hub (Mass Storage)
+	ab44  Backup Plus Hub
+	ac20  Backup Plus Slim 2TB
+0bc3  IPWireless, Inc.
+	0001  UMTS-TDD (TD-CDMA) modem
+0bc4  Microcube Corp.
+0bc5  JCN Co., Ltd
+0bc6  ExWAY, Inc.
+0bc7  X10 Wireless Technology, Inc.
+	0001  ActiveHome (ACPI-compliant)
+	0002  Firecracker Interface (ACPI-compliant)
+	0003  VGA Video Sender (ACPI-compliant)
+	0004  X10 Receiver
+	0005  Wireless Transceiver (ACPI-compliant)
+	0006  Wireless Transceiver (ACPI-compliant)
+	0007  Wireless Transceiver (ACPI-compliant)
+	0008  Wireless Transceiver (ACPI-compliant)
+	0009  Wireless Transceiver (ACPI-compliant)
+	000a  Wireless Transceiver (ACPI-compliant)
+	000b  Transceiver (ACPI-compliant)
+	000c  Transceiver (ACPI-compliant)
+	000d  Transceiver (ACPI-compliant)
+	000e  Transceiver (ACPI-compliant)
+	000f  Transceiver (ACPI-compliant)
+0bc8  Telmax Communications
+0bc9  ECI Telecom, Ltd
+0bca  Startek Engineering, Inc.
+0bcb  Perfect Technic Enterprise Co., Ltd
+0bd7  Andrew Pargeter & Associates
+	a021  Amptek DP4 multichannel signal analyzer
+0bda  Realtek Semiconductor Corp.
+	0103  USB 2.0 Card Reader
+	0104  Mass Storage Device
+	0106  Mass Storage Device
+	0107  Mass Storage Device
+	0108  Mass Storage Device
+	0109  microSDXC Card Reader [Hama 00091047]
+	0111  RTS5111 Card Reader Controller
+	0113  Mass Storage Device
+	0115  Mass Storage Device (Multicard Reader)
+	0116  RTS5116 Card Reader Controller
+	0117  Mass Storage Device
+	0118  Mass Storage Device
+	0119  Storage Device (SD card reader)
+	0129  RTS5129 Card Reader Controller
+	0138  RTS5138 Card Reader Controller
+	0139  RTS5139 Card Reader Controller
+	0151  Mass Storage Device (Multicard Reader)
+	0152  Mass Storage Device
+	0153  3-in-1 (SD/SDHC/SDXC) Card Reader
+	0156  Mass Storage Device
+	0157  Mass Storage Device
+	0158  USB 2.0 multicard reader
+	0159  RTS5159 Card Reader Controller
+	0161  Mass Storage Device
+	0168  Mass Storage Device
+	0169  Mass Storage Device
+	0171  Mass Storage Device
+	0176  Mass Storage Device
+	0178  Mass Storage Device
+	0179  RTL8188ETV Wireless LAN 802.11n Network Adapter
+	0184  RTS5182 Card Reader
+	0186  Card Reader
+	0301  multicard reader
+	0307  Card Reader
+	0316  Card Reader
+	0326  Card reader
+	0411  Hub
+	0811  Realtek 8812AU/8821AU 802.11ac WLAN Adapter [USB Wireless Dual-Band Adapter 2.4/5Ghz]
+	0821  RTL8821A Bluetooth
+	1724  RTL8723AU 802.11n WLAN Adapter
+	1a2b  RTL8188GU 802.11n WLAN Adapter (Driver CDROM Mode)
+	2831  RTL2831U DVB-T
+	2832  RTL2832U DVB-T
+	2838  RTL2838 DVB-T
+	5401  RTL 8153 USB 3.0 hub with gigabit ethernet
+	5411  RTS5411 Hub
+	568c  Integrated Webcam HD
+	570c  Asus laptop camera
+	5730  HP 2.0MP High Definition Webcam
+	5751  Integrated Webcam
+	5775  HP "Truevision HD" laptop camera
+	5776  HP Truevision HD integrated webcam
+	57b3  Acer 640 × 480 laptop camera
+	57cc  HD Webcam - Realtek Semiconductor
+	57cf  HD WebCam
+	57da  Built-In Video Camera
+	58c2  Integrated Webcam HD
+	58c8  Integrated Webcam HD
+	8150  RTL8150 Fast Ethernet Adapter
+	8151  RTL8151 Adapteon Business Mobile Networks BV
+	8152  RTL8152 Fast Ethernet Adapter
+	8153  RTL8153 Gigabit Ethernet Adapter
+	8171  RTL8188SU 802.11n WLAN Adapter
+	8172  RTL8191SU 802.11n WLAN Adapter
+	8174  RTL8192SU 802.11n WLAN Adapter
+	8176  RTL8188CUS 802.11n WLAN Adapter
+	8178  RTL8192CU 802.11n WLAN Adapter
+	8179  RTL8188EUS 802.11n Wireless Network Adapter
+	817f  RTL8188RU 802.11n WLAN Adapter
+	8187  RTL8187 Wireless Adapter
+	8189  RTL8187B Wireless 802.11g 54Mbps Network Adapter
+	818b  RTL8192EU 802.11b/g/n WLAN Adapter
+	8192  RTL8191SU 802.11n Wireless Adapter
+	8193  RTL8192DU 802.11an WLAN Adapter
+	8197  RTL8187B Wireless Adapter
+	8198  RTL8187B Wireless Adapter
+	8199  RTL8187SU 802.11g WLAN Adapter
+	8723  RTL8723A Bluetooth
+	8812  RTL8812AU 802.11a/b/g/n/ac 2T2R DB WLAN Adapter
+	8813  RTL8814AU 802.11a/b/g/n/ac Wireless Adapter
+	881a  RTL8812AU-VS 802.11a/b/g/n/ac 2T2R DB WLAN Adapter
+	8821  RTL8821A Bluetooth
+	9210  RTL9210 M.2 NVME Adapter
+	a811  RTL8811AU 802.11a/b/g/n/ac WLAN Adapter
+	b009  Realtek Bluetooth 4.2 Adapter
+	b00a  Realtek Bluetooth 4.2 Adapter
+	b00b  Realtek Bluetooth 4.2 Adapter
+	b023  RTL8822BE Bluetooth 4.2 Adapter
+	b711  RTL8188GU 802.11n WLAN Adapter (After Modeswitch)
+	b720  RTL8723BU 802.11b/g/n WLAN Adapter
+	b723  RTL8723B Bluetooth
+	b728  RTL8723B Bluetooth
+	b72a  RTL8723B Bluetooth
+	b812  RTL88x2bu [AC1200 Techkey]
+	f179  RTL8188FTV 802.11b/g/n 1T1R 2.4G WLAN Adapter
+0bdb  Ericsson Business Mobile Networks BV
+	1000  BV Bluetooth Device
+	1002  Bluetooth Device 1.2
+	1049  C3607w Mobile Broadband Module
+	1900  F3507g Mobile Broadband Module
+	1902  F3507g v2 Mobile Broadband Module
+	1904  F3607gw Mobile Broadband Module
+	1905  F3607gw v2 Mobile Broadband Module
+	1906  F3607gw v3 Mobile Broadband Module
+	1909  F3307 v2 Mobile Broadband Module
+	190a  F3307 Mobile Broadband Module
+	190b  C3607w v2 Mobile Broadband Module
+	1926  H5321 gw Mobile Broadband Module
+0bdc  Y Media Corp.
+0bdd  Orange PCS
+0be2  Kanda Tsushin Kogyo Co., Ltd
+0be3  TOYO Corp.
+0be4  Elka International, Ltd
+0be5  DOME imaging systems, Inc.
+0be6  Dong Guan Humen Wonderful Wire Cable Factory
+0bed  MEI
+	1100  CASHFLOW SC
+	1101  Series 2000 Combo Acceptor
+0bee  LTK Industries, Ltd
+0bef  Way2Call Communications
+0bf0  Pace Micro Technology PLC
+	c010  EHD100SD
+0bf1  Intracom S.A.
+	0001  netMod Driver Ver 2.4.17 (CAPI)
+	0002  netMod Driver Ver 2.4 (CAPI)
+	0003  netMod Driver Ver 2.4 (CAPI)
+0bf2  Konexx
+0bf6  Addonics Technologies, Inc.
+	0103  Storage Device
+	1234  Storage Device
+	a000  Cable 205 (TPP)
+	a001  Cable 205
+	a002  IDE Bridge
+0bf7  Sunny Giken, Inc.
+0bf8  Fujitsu Siemens Computers
+	1001  Fujitsu Pocket Loox 600 PDA
+	1006  SmartCard Reader 2A
+	1007  Connect2Air E-5400 802.11g Wireless Adapter
+	1009  Connect2Air E-5400 D1700 802.11g Wireless Adapter [Intersil ISL3887]
+	100c  Keyboard FSC KBPC PX
+	100f  miniCard D2301 802.11bg Wireless Module [SiS 163U]
+	1017  Keyboard KB SCR
+	101f  Fujitsu Full HD Pro Webcam
+0bfb  Grass Valley Group
+	0200  TURBO iDDR Front Panel
+0bfd  Kvaser AB
+	0004  USBcan II
+	000b  Leaf Light HS
+	000e  Leaf SemiPro HS
+0c00  FireFly Mouse Mat
+	1607  Apex M500
+0c04  MOTO Development Group, Inc.
+0c05  Appian Graphics
+0c06  Hasbro Games, Inc.
+0c07  Infinite Data Storage, Ltd
+0c08  Agate
+	0378  Q 16MB Storage Device
+0c09  Comjet Information System
+	a5a5  Litto Version USB2.0
+0c0a  Highpoint Technologies, Inc.
+	6124  RocketStor 6124V
+0c0b  Dura Micro, Inc. (Acomdata)
+	27cb  6-in-1 Flash Reader and Writer
+	27d7  Multi Memory reader/writer MD-005
+	27da  Multi Memory reader/writer MD-005
+	27dc  Multi Memory reader/writer MD-005
+	27e7  3,5'' HDD case MD-231
+	27ee  3,5'' HDD case MD-231
+	2814  3,5'' HDD case MD-231
+	2815  3,5'' HDD case MD-231
+	281d  3,5'' HDD case MD-231
+	5fab  Storage Adaptor
+	a109  CF/SM Reader and Writer
+	a10c  SD/MS Reader and Writer
+	b001  USB 2.0 Mass Storage IDE adapter
+	b004  MMC/SD Reader and Writer
+0c12  Zeroplus
+	0005  PSX Vibration Feedback Converter / Intec Wireless Controller for Xbox
+	0030  PSX Vibration Feedback Converter
+	700e  Logic Analyzer (LAP-C-16032)
+	8801  Nyko Xbox Controller
+	8802  Xbox Controller
+	8809  Red Octane Ignition Xbox DDR Pad
+	880a  Pelican Eclipse PL-2023
+	8810  Xbox Controller
+	9902  VibraX
+0c15  Iris Graphics
+0c16  Gyration, Inc.
+	0002  RF Technology Receiver
+	0003  RF Technology Receiver
+	0008  RF Technology Receiver
+	0080  eHome Infrared Receiver
+	0081  eHome Infrared Receiver
+0c17  Cyberboard A/S
+0c18  SynerTek Korea, Inc.
+0c19  cyberPIXIE, Inc.
+0c1a  Silicon Motion, Inc.
+0c1b  MIPS Technologies
+0c1c  Hang Zhou Silan Electronics Co., Ltd
+0c1f  Magicard
+	1800  Tango 2E
+0c22  Tally Printer Corp.
+0c23  Lernout + Hauspie
+0c24  Taiyo Yuden
+	0001  Bluetooth Adaptor
+	0002  Bluetooth Device2
+	0005  Bluetooth Device(BC04-External)
+	000b  Bluetooth Device(BC04-External)
+	000c  Bluetooth Adaptor
+	000e  Bluetooth Device(BC04-External)
+	000f  Bluetooth Device (V2.0+EDR)
+	0010  Bluetooth Device(BC04-External)
+	0012  Bluetooth Device(BC04-External)
+	0018  Bluetooth Device(BC04-External)
+	0019  Bluetooth Device
+	0021  Bluetooth Device (V2.1+EDR)
+	0c24  Bluetooth Device(SAMPLE)
+	ffff  Bluetooth module with BlueCore in DFU mode
+0c25  Sampo Corp.
+	0310  Scream Cam
+0c26  Prolific Technology Inc.
+	0018  USB-Serial Controller [Icom Inc. OPC-478UC]
+	002b  Icom Inc. IC-R30
+0c27  RFIDeas, Inc
+	232a  pcProx Plus RFID Reader (CDC serial)
+	3bfa  pcProx Card Reader
+0c2e  Metrologic Instruments
+	0007  Metrologic MS7120 Barcode Scanner (IBM SurePOS mode)
+	0200  MS7120 Barcode Scanner
+	0204  Metrologic MS7120 Barcode Scanner (keyboard mode)
+	0206  Metrologic MS4980 Barcode Scanner
+	0700  Metrologic MS7120 Barcode Scanner (uni-directional serial mode)
+	0720  Metrologic MS7120 Barcode Scanner (bi-directional serial mode)
+	0a64  [Stratos 2700]
+	0b61  Vuquest 3310g
+	0b6a  Vuquest 3310 Area-Imaging Scanner
+	0b81  Barcode scanner Voyager 1400g Series
+0c30  Mutoh Industries Ltd
+	6010  Kona 1400 Cutting Plotter
+0c35  Eagletron, Inc.
+0c36  E Ink Corp.
+0c37  e.Digital
+0c38  Der An Electric Wire & Cable Co., Ltd
+0c39  IFR
+0c3a  Furui Precise Component (Kunshan) Co., Ltd
+0c3b  Komatsu, Ltd
+0c3c  Radius Co., Ltd
+0c3d  Innocom, Inc.
+0c3e  Nextcell, Inc.
+0c40  ELMCU
+	8000  2.4GHz receiver
+0c44  Motorola iDEN
+	0021  iDEN P2k0 Device
+	0022  iDEN P2k1 Device
+	03a2  iDEN Smartphone
+	41d9  i1 phone
+0c45  Microdia
+	0011  EBUDDY
+	0520  MaxTrack Wireless Mouse
+	1018  Compact Flash storage memory card reader
+	1020  Mass Storage Reader
+	1028  Mass Storage Reader
+	1030  Mass Storage Reader
+	1031  Sonix Mass Storage Device
+	1032  Mass Storage Reader
+	1033  Sonix Mass Storage Device
+	1034  Mass Storage Reader
+	1035  Mass Storage Reader
+	1036  Mass Storage Reader
+	1037  Sonix Mass Storage Device
+	1050  CF Card Reader
+	1058  HDD Reader
+	1060  iFlash SM-Direct Card Reader
+	1061  Mass Storage Reader
+	1062  Mass Storage Reader
+	1063  Sonix Mass Storage Device
+	1064  Mass Storage Reader
+	1065  Mass Storage Reader
+	1066  Mass Storage Reader
+	1067  Mass Storage Reader
+	1158  A56AK
+	184c  VoIP Phone
+	1a90  2M pixel Microscope Camera (with capture button) [Andonstar V160]
+	5004  Redragon Mitra RGB Keyboard
+	5101  2.4G Wireless Device [Rii MX3]
+	6001  Genius VideoCAM NB
+	6005  Sweex Mini Webcam
+	6007  VideoCAM Eye
+	6009  VideoCAM ExpressII
+	600d  TwinkleCam USB camera
+	6011  PC Camera (SN9C102)
+	6019  PC Camera (SN9C102)
+	6024  VideoCAM ExpressII
+	6025  VideoCAM ExpressII
+	6028  Typhoon Easycam USB 330K (older)
+	6029  Triplex i-mini PC Camera
+	602a  Meade ETX-105EC Camera
+	602b  VideoCAM NB 300
+	602c  Clas Ohlson TWC-30XOP Webcam
+	602d  VideoCAM ExpressII
+	602e  VideoCAM Messenger
+	6030  VideoCAM ExpressII
+	603f  VideoCAM ExpressII
+	6040  CCD PC Camera (PC390A)
+	606a  CCD PC Camera (PC390A)
+	607a  CCD PC Camera (PC390A)
+	607b  Win2 PC Camera
+	607c  CCD PC Camera (PC390A)
+	607e  CCD PC Camera (PC390A)
+	6080  Audio (Microphone)
+	6082  VideoCAM Look
+	6083  VideoCAM Look
+	608c  VideoCAM Look
+	608e  VideoCAM Look
+	608f  PC Camera (SN9C103 + OV7630)
+	60a8  VideoCAM Look
+	60aa  VideoCAM Look
+	60ab  PC Camera
+	60af  VideoCAM Look
+	60b0  Genius VideoCam Look
+	60c0  PC Camera with Mic (SN9C105)
+	60c8  Win2 PC Camera
+	60cc  PC Camera with Mic (SN9C105)
+	60ec  PC Camera with Mic (SN9C105)
+	60ef  Win2 PC Camera
+	60fa  PC Camera with Mic (SN9C105)
+	60fb  Composite Device
+	60fc  PC Camera with Mic (SN9C105)
+	60fe  Audio (Microphone)
+	6108  Win2 PC Camera
+	6122  PC Camera (SN9C110)
+	6123  PC Camera (SN9C110)
+	6128  PC Camera (SN9C325 + OM6802)
+	612a  PC Camera (SN9C325)
+	612c  PC Camera (SN9C110)
+	612e  PC Camera (SN9C110)
+	612f  PC Camera (SN9C110)
+	6130  PC Camera (SN9C120)
+	6138  Win2 PC Camera
+	613a  PC Camera (SN9C120)
+	613b  Win2 PC Camera
+	613c  PC Camera (SN9C120)
+	613e  PC Camera (SN9C120)
+	6143  PC Camera (SN9C120 + SP80708)
+	6240  PC Camera (SN9C201 + MI1300)
+	6242  PC Camera (SN9C201 + MI1310)
+	6243  PC Camera (SN9C201 + S5K4AAFX)
+	6248  PC Camera (SN9C201 + OV9655)
+	624b  PC Camera (SN9C201 + CX1332)
+	624c  PC Camera (SN9C201 + MI1320)
+	624e  PC Camera (SN9C201 + SOI968)
+	624f  PC Camera (SN9C201 + OV9650)
+	6251  PC Camera (SN9C201 + OV9650)
+	6253  PC Camera (SN9C201 + OV9650)
+	6260  PC Camera (SN9C201 + OV7670ISP)
+	6262  PC Camera (SN9C201 + OM6802)
+	6270  PC Camera (SN9C201 + MI0360/MT9V011 or MI0360SOC/MT9V111) U-CAM PC Camera NE878, Whitcom WHC017, ...
+	627a  PC Camera (SN9C201 + S5K53BEB)
+	627b  PC Camera (SN9C201 + OV7660)
+	627c  PC Camera (SN9C201 + HV7131R)
+	627f  PC Camera (SN9C201 + OV965x + EEPROM)
+	6280  PC Camera with Microphone (SN9C202 + MI1300)
+	6282  PC Camera with Microphone (SN9C202 + MI1310)
+	6283  PC Camera with Microphone (SN9C202 + S5K4AAFX)
+	6288  PC Camera with Microphone (SN9C202 + OV9655)
+	628a  PC Camera with Microphone (SN9C202 + ICM107)
+	628b  PC Camera with Microphone (SN9C202 + CX1332)
+	628c  PC Camera with Microphone (SN9C202 + MI1320)
+	628e  PC Camera with Microphone (SN9C202 + SOI968)
+	628f  PC Camera with Microphone (SN9C202 + OV9650)
+	62a0  PC Camera with Microphone (SN9C202 + OV7670ISP)
+	62a2  PC Camera with Microphone (SN9C202 + OM6802)
+	62b0  PC Camera with Microphone (SN9C202 + MI0360/MT9V011 or MI0360SOC/MT9V111)
+	62b3  PC Camera with Microphone (SN9C202 + OV9655)
+	62ba  PC Camera with Microphone (SN9C202 + S5K53BEB)
+	62bb  PC Camera with Microphone (SN9C202 + OV7660)
+	62bc  PC Camera with Microphone (SN9C202 + HV7131R)
+	62be  PC Camera with Microphone (SN9C202 + OV7663)
+	62c0  Sonix USB 2.0 Camera
+	62e0  MSI Starcam Racer
+	6300  PC Microscope camera
+	6310  Sonix USB 2.0 Camera
+	6321  HP Integrated Webcam
+	6340  Camera
+	6341  Defender G-Lens 2577 HD720p Camera
+	6366  Webcam Vitade AF
+	63e0  Sonix Integrated Webcam
+	63f1  Integrated Webcam
+	63f8  Sonix Integrated Webcam
+	6409  Webcam
+	6413  Integrated Webcam
+	6417  Integrated Webcam
+	6419  Integrated Webcam
+	641d  1.3 MPixel Integrated Webcam
+	6433  Laptop Integrated Webcam HD (Composite Device)
+	643f  Dell Integrated HD Webcam
+	644d  1.3 MPixel Integrated Webcam
+	6480  Sonix 1.3 MP Laptop Integrated Webcam
+	648b  Integrated Webcam
+	64ad  Dell Laptop Integrated Webcam HD
+	64bd  Sony Visual Communication Camera
+	64d0  Integrated Webcam
+	64d2  Integrated Webcam
+	651b  HP Webcam
+	652f  Backlit Gaming Keyboard
+	6705  Integrated HD Webcam
+	670c  Integrated Webcam HD
+	6710  Integrated Webcam
+	6712  Integrated Webcam HD
+	671d  Integrated_Webcam_HD
+	7401  TEMPer Temperature Sensor
+	7402  TEMPerHUM Temperature & Humidity Sensor
+	7403  Foot Switch
+	7404  Foot switch FS1-P
+	8000  DC31VC
+	8006  Dual Mode Camera (8006 VGA)
+	800a  Vivitar Vivicam3350B
+0c46  WaveRider Communications, Inc.
+0c4a  ALGE-TIMING GmbH
+	0889  Timy
+	088a  Timy 2
+0c4b  Reiner SCT Kartensysteme GmbH
+	0100  cyberJack e-com/pinpad
+	0300  cyberJack pinpad(a)
+	0400  cyberJack e-com(a)
+	0401  cyberJack pinpad(a2)
+	0500  cyberJack RFID standard dual interface smartcard reader
+	0501  cyberJack RFID comfort dual interface smartcard reader
+	0502  cyberJack compact
+	0504  cyberJack go / go plus
+	0505  cyberJack wave
+	9102  cyberJack RFID basis contactless smartcard reader
+0c4c  Needham's Electronics
+	0021  EMP-21 Universal Programmer
+0c52  Sealevel Systems, Inc.
+	2101  SeaLINK+232
+	2102  SeaLINK+485
+	2103  SeaLINK+232I
+	2104  SeaLINK+485I
+	2211  SeaPORT+2/232 (Port 1)
+	2212  SeaPORT+2/485 (Port 1)
+	2213  SeaPORT+2 (Port 1)
+	2221  SeaPORT+2/232 (Port 2)
+	2222  SeaPORT+2/485 (Port 2)
+	2223  SeaPORT+2 (Port 2)
+	2411  SeaPORT+4/232 (Port 1)
+	2412  SeaPORT+4/485 (Port 1)
+	2413  SeaPORT+4 (Port 1)
+	2421  SeaPORT+4/232 (Port 2)
+	2422  SeaPORT+4/485 (Port 2)
+	2423  SeaPORT+4 (Port 2)
+	2431  SeaPORT+4/232 (Port 3)
+	2432  SeaPORT+4/485 (Port 3)
+	2433  SeaPORT+4 (Port 3)
+	2441  SeaPORT+4/232 (Port 4)
+	2442  SeaPORT+4/485 (Port 4)
+	2443  SeaPORT+4 (Port 4)
+	2811  SeaLINK+8/232 (Port 1)
+	2812  SeaLINK+8/485 (Port 1)
+	2813  SeaLINK+8 (Port 1)
+	2821  SeaLINK+8/232 (Port 2)
+	2822  SeaLINK+8/485 (Port 2)
+	2823  SeaLINK+8 (Port 2)
+	2831  SeaLINK+8/232 (Port 3)
+	2832  SeaLINK+8/485 (Port 3)
+	2833  SeaLINK+8 (Port 3)
+	2841  SeaLINK+8/232 (Port 4)
+	2842  SeaLINK+8/485 (Port 4)
+	2843  SeaLINK+8 (Port 4)
+	2851  SeaLINK+8/232 (Port 5)
+	2852  SeaLINK+8/485 (Port 5)
+	2853  SeaLINK+8 (Port 5)
+	2861  SeaLINK+8/232 (Port 6)
+	2862  SeaLINK+8/485 (Port 6)
+	2863  SeaLINK+8 (Port 6)
+	2871  SeaLINK+8/232 (Port 7)
+	2872  SeaLINK+8/485 (Port 7)
+	2873  SeaLINK+8 (Port 7)
+	2881  SeaLINK+8/232 (Port 8)
+	2882  SeaLINK+8/485 (Port 8)
+	2883  SeaLINK+8 (Port 8)
+	9020  SeaLINK+422
+	a02a  SeaLINK+8 (Port 1+2)
+	a02b  SeaLINK+8 (Port 3+4)
+	a02c  SeaLINK+8 (Port 5+6)
+	a02d  SeaLINK+8 (Port 7+8)
+0c53  ViewPLUS, Inc.
+0c54  Glory, Ltd
+0c55  Spectrum Digital, Inc.
+	0510  Spectrum Digital XDS510 JTAG Debugger
+	0540  SPI540
+	5416  TMS320C5416 DSK
+	6416  TMS320C6416 DDB
+0c56  Billion Bright, Ltd
+0c57  Imaginative Design Operation Co., Ltd
+0c58  Vidar Systems Corp.
+0c59  Dong Guan Shinko Wire Co., Ltd
+0c5a  TRS International Mfg., Inc.
+0c5e  Xytronix Research & Design
+0c60  Apogee Electronics Corp.
+	0001  MiniMe
+	0002  MiniDAC
+	0003  ONE
+	0004  GiO
+	0007  Duet
+	0009  Jam
+	000a  Jam Bootloader
+	000b  MiC
+	000c  MiC Bootloader
+	8007  Duet DFU Mode
+0c62  Chant Sincere Co., Ltd
+0c63  Toko, Inc.
+0c64  Signality System Engineering Co., Ltd
+0c65  Eminence Enterprise Co., Ltd
+0c66  Rexon Electronics Corp.
+0c67  Concept Telecom, Ltd
+0c6a  ACS
+	0005  Color 320 x 240 LCD Display Terminal with Touchscreen
+0c6c  JETI Technische Instrumente GmbH
+	04b2  Specbos 1201
+0c70  MCT Elektronikladen
+	0000  USB08 Development board
+	0747  Eye Movement Recorder [Visagraph]/[ReadAlyzer]
+0c72  PEAK System
+	000c  PCAN-USB
+	000d  PCAN Pro
+0c74  Optronic Laboratories Inc.
+	0002  OL 700-30 Goniometer
+0c76  JMTek, LLC.
+	0001  Mass Storage Controller
+	0002  Mass Storage Controller
+	0003  USBdisk
+	0004  Mass Storage Controller
+	0005  Transcend Flash disk
+	0006  Transcend JetFlash
+	0007  Mass Storage Device
+	1600  Ion Quick Play LP turntable
+	1605  SSS Headphone Set
+	1607  audio controller
+	5663  Audio Device
+0c77  Sipix Group, Ltd
+	1001  SiPix Web2
+	1002  SiPix SC2100
+	1010  SiPix Snap
+	1011  SiPix Blink 2
+	1015  SiPix CAMeleon
+0c78  Detto Corp.
+0c79  NuConnex Technologies Pte., Ltd
+0c7a  Wing-Span Enterprise Co., Ltd
+0c86  NDA Technologies, Inc.
+0c88  Kyocera Wireless Corp.
+	0021  Handheld
+	17da  Qualcomm Kyocera CDMA Technologies MSM
+0c89  Honda Tsushin Kogyo Co., Ltd
+0c8a  Pathway Connectivity, Inc.
+0c8b  Wavefly Corp.
+0c8c  Coactive Networks
+0c8d  Tempo
+0c8e  Cesscom Co., Ltd
+	6000  Luxian Series
+0c8f  Applied Microsystems
+0c94  Cryptera
+	a000  EPP 1217
+0c98  Berkshire Products, Inc.
+	1140  USB PC Watchdog
+0c99  Innochips Co., Ltd
+0c9a  Hanwool Robotics Corp.
+0c9b  Jobin Yvon, Inc.
+0c9c  Brand Innovators BV
+	1511  BI-1511 Laser Simulator
+	1512  BI-1512 Syncbus Monitor
+	1514  BI-1514 HPC
+	1532  BI-1532 GPC
+0c9d  SemTek
+	0170  3873 Manual Insert card reader
+0ca2  Zyfer
+0ca3  Sega Corp.
+0ca4  ST&T Instrument Corp.
+0ca5  BAE Systems Canada, Inc.
+0ca6  Castles Technology Co., Ltd
+	0010  EZUSB PC/SC Smart Card Reader
+	0050  EZ220PU Reader Controller
+	1077  Bludrive Family Smart Card Reader
+	107e  Reader Controller
+	2010  myPad110 PC/SC Smart Card Reader
+	3050  EZ710 Smart Card Reader
+0ca7  Information Systems Laboratories
+0caa  Allied Telesis KK.
+	3001  AT-VT-Kit3 Serial Adapter
+0cad  Motorola CGISS
+	1007  APX Series Consolette
+	1020  MOTOTRBO Series Radio (Portable)
+	1030  APX Series Radio (Portable)
+	1031  APX Series Radio (Mobile)
+	1602  IMPRES Battery Data Reader
+	9001  PowerPad Pocket PC Device
+0cae  Ascom Business Systems, Ltd
+0caf  Buslink
+	2507  Hi-Speed USB-to-IDE Bridge Controller
+	2515  Flash Disk Embedded Hub
+	2516  Flash Disk Security Device
+	2517  Flash Disk Mass Storage Device
+	25c7  Hi-Speed USB-to-IDE Bridge Controller
+	3a00  Hard Drive
+	3a20  Mass Storage Device
+	3acd  Mass Storage Device
+0cb0  Flying Pig Systems
+0cb1  Innovonics, Inc.
+0cb6  Celestix Networks, Pte., Ltd
+0cb7  Singatron Enterprise Co., Ltd
+0cb8  Opticis Co., Ltd
+0cba  Trust Electronic (Shanghai) Co., Ltd
+0cbb  Shanghai Darong Electronics Co., Ltd
+0cbc  Palmax Technology Co., Ltd
+	0101  Pocket PC P6C
+	0201  Personal Digital Assistant
+	0301  Personal Digital Assistant P6M+
+	0401  Pocket PC
+0cbd  Pentel Co., Ltd (Electronics Equipment Div.)
+0cbe  Keryx Technologies, Inc.
+0cbf  Union Genius Computer Co., Ltd
+0cc0  Kuon Yi Industrial Corp.
+0cc1  Given Imaging, Ltd
+0cc2  Timex Corp.
+0cc3  Rimage Corp.
+0cc4  emsys GmbH
+0cc5  Sendo
+0cc6  Intermagic Corp.
+0cc8  Technotools Corp.
+0cc9  BroadMAX Technologies, Inc.
+0cca  Amphenol
+0ccb  SKNet Co., Ltd
+0ccc  Domex Technology Corp.
+0ccd  TerraTec Electronic GmbH
+	0012  PHASE 26
+	0013  PHASE 26
+	0014  PHASE 26
+	0015  Flash Update for TerraTec PHASE 26
+	0021  Cameo Grabster 200
+	0023  Mystify Claw
+	0028  Aureon 5.1 MkII
+	0032  MIDI HUBBLE
+	0035  Miditech Play'n Roll
+	0036  Cinergy 250 Audio
+	0037  Cinergy 250 Audio
+	0038  Cinergy T² DVB-T Receiver
+	0039  Grabster AV 400
+	003b  Cinergy 400
+	003c  Grabster AV 250
+	0042  Cinergy Hybrid T XS
+	0043  Cinergy T XS
+	004e  Cinergy T XS
+	004f  Cinergy Analog XS
+	0055  Cinergy T XE (Version 1, AF9005)
+	005c  Cinergy T²
+	0069  Cinergy T XE (Version 2, AF9015)
+	006b  Cinergy HT PVR (EU)
+	0072  Cinergy Hybrid T
+	0077  Aureon Dual USB
+	0078  Cinergy T XXS
+	0086  Cinergy Hybrid XE
+	008e  Cinergy HTC XS
+	0096  Grabby
+	0097  Cinergy T RC MKII
+	0099  AfaTech 9015 [Cinergy T Stick Dual]
+	00a5  Cinergy Hybrid Stick
+	00a9  RTL2838 DVB-T COFDM Demodulator [TerraTec Cinergy T Stick Black]
+	00b3  NOXON DAB/DAB+ Stick
+	00b9  WDR DAB/DAB+ Stick
+	00e0  NOXON DAB/DAB+ Stick V2
+	0102  Cinergy S2 Stick
+	0105  Cinergy S2 Box
+	10a7  TerraTec G3
+	10ad   Cinergy H5 Rev. 2
+0cd4  Bang Olufsen
+	0101  BeolinkPC2
+0cd5  LabJack Corporation
+	0003  U3
+	0009  UE9
+0cd6  Scheidt & Bachmann
+	000c  S&B TPU
+	000e  S&B BKV
+	0011  Money Coin Unit
+0cd7  NewChip S.r.l.
+0cd8  JS Digitech, Inc.
+	2007  Smart Card Reader/JSTU-9700
+0cd9  Hitachi Shin Din Cable, Ltd
+0cde  Z-Com
+	0001  XI-750 802.11b Wireless Adapter [Atmel AT76C503A]
+	0002  XI-725/726 Prism2.5 802.11b Adapter
+	0003  Sagem 802.11b Dongle
+	0004  Sagem 802.11b Dongle
+	0005  XI-735 Prism3 802.11b Adapter
+	0006  XG-300 802.11b Adapter
+	0008  XG-703A 802.11g Wireless Adapter [Intersil ISL3887]
+	0009  (ZD1211)IEEE 802.11b+g Adapter
+	0011  ZD1211
+	0012  AR5523
+	0013  AR5523 driver (no firmware)
+	0014  NB 802.11g Wireless LAN Adapter(3887A)
+	0015  XG-705A 802.11g Wireless Adapter [Intersil ISL3887]
+	0016  NB 802.11g Wireless LAN Adapter(3887A)
+	0018  NB 802.11a/b/g Wireless LAN Adapter(3887A)
+	001a  802.11bg
+	001c  802.11b/g Wireless Network Adapter
+	0020  AG-760A 802.11abg Wireless Adapter [ZyDAS ZD1211B]
+	0022  802.11b/g/n Wireless Network Adapter
+	0023  UB81 802.11bgn
+	0025  802.11b/g/n USB Wireless Network Adapter
+	0026  UB82 802.11abgn
+	0027  Sphairon Homelink 1202 802.11n Wireless Adapter [Atheros AR9170]
+0ce5  Validation Technologies International
+	0003  Matrix
+0ce9  Pico Technology
+	1001  PicoScope3000 series PC Oscilloscope
+	1007  PicoScope 2000 series PC Oscilloscope
+	1008  PicoScope 5000 series PC Oscilloscope
+	1009  PicoScope 4000 series PC Oscilloscope
+	100e  PicoScope 6000 series PC Oscilloscope
+	1012  PicoScope 3000A series PC Oscilloscope
+	1016  PicoScope 2000A series PC Oscilloscope
+	1018  PicoScope 4000A series PC Oscilloscope
+	1200  PicoScope 2000 series PC Oscilloscope
+	1201  PicoScope 3000 series PC Oscilloscope
+	1202  PicoScope 4000 series PC Oscilloscope
+	1203  PicoScope 5000 series PC Oscilloscope
+	1204  PicoScope 6000 series PC Oscilloscope
+	1211  PicoScope 3000 series PC Oscilloscope
+	1212  PicoScope 4000 series PC Oscilloscope
+0cf1  e-Conn Electronic Co., Ltd
+0cf2  ENE Technology, Inc.
+	6220  SD Card Reader (SG361)
+	6225  SD card reader (UB6225)
+	6230  SD Card Reader (UB623X)
+	6250  SD card reader (UB6250)
+0cf3  Qualcomm Atheros Communications
+	0001  AR5523
+	0002  AR5523 (no firmware)
+	0003  AR5523
+	0004  AR5523 (no firmware)
+	0005  AR5523
+	0006  AR5523 (no firmware)
+	0036  AR9462 Bluetooth
+	1001  Thomson TG121N [Atheros AR9001U-(2)NG]
+	1002  TP-Link TL-WN821N v2 / TL-WN822N v1 802.11n [Atheros AR9170]
+	1006  TP-Link TL-WN322G v3 / TL-WN422G v2 802.11g [Atheros AR9271]
+	1010  3Com 3CRUSBN275 802.11abgn Wireless Adapter [Atheros AR9170]
+	20ff  AR7010 (no firmware)
+	3000  AR3011 Bluetooth (no firmware)
+	3002  AR3011 Bluetooth
+	3004  AR3012 Bluetooth 4.0
+	3005  AR3011 Bluetooth
+	3007  AR3012 Bluetooth 4.0 (no firmware)
+	3008  Bluetooth (AR3011)
+	311d  Bluetooth
+	311f  AR3012 Bluetooth
+	7015  TP-Link TL-WN821N v3 / TL-WN822N v2 802.11n [Atheros AR7010+AR9287]
+	9170  AR9170 802.11n
+	9271  AR9271 802.11n
+	9378  QCA9377-7
+	b002  Ubiquiti WiFiStation 802.11n [Atheros AR9271]
+	b003  Ubiquiti WiFiStationEXT 802.11n [Atheros AR9271]
+	e006  Dell Wireless 1802 Bluetooth 4.0 LE
+	e300  QCA61x4 Bluetooth 4.0
+0cf4  Fomtex Corp.
+0cf5  Cellink Co., Ltd
+0cf6  Compucable Corp.
+0cf7  ishoni Networks
+0cf8  Clarisys, Inc.
+	0750  Claritel-i750 - vp
+0cf9  Central System Research Co., Ltd
+0cfa  Inviso, Inc.
+0cfc  Minolta-QMS, Inc.
+	2301  Magicolor 2300 DL
+	2350  Magicolor 2350EN/3300
+	3100  Magicolor 3100
+	7300  Magicolor 5450/5550
+0cff  SAFA MEDIA Co., Ltd.
+	0320  SR-380N
+0d06  telos EDV Systementwicklung GmbH
+0d08  UTStarcom
+	0602  DV007 [serial]
+	0603  DV007 [storage]
+0d0b  Contemporary Controls
+0d0c  Astron Electronics Co., Ltd
+0d0d  MKNet Corp.
+0d0e  Hybrid Networks, Inc.
+0d0f  Feng Shin Cable Co., Ltd
+0d10  Elastic Networks
+	0001  StormPort (WDM)
+0d11  Maspro Denkoh Corp.
+0d12  Hansol Electronics, Inc.
+0d13  BMF Corp.
+0d14  Array Comm, Inc.
+0d15  OnStream b.v.
+0d16  Hi-Touch Imaging Technologies Co., Ltd
+	0001  PhotoShuttle
+	0002  Photo Printer 730 series
+	0004  Photo Printer 63xPL/PS
+	0007  P510K
+	0009  P72x Series
+	000a  P728L
+	000b  P510L
+	000d  P518A
+	000e  P910L
+	0010  M610
+	0100  Photo Printer 63xPL/PS
+	0102  Photo Printer 64xPS
+	0103  Photo Printer 730 series
+	0104  Photo Printer 63xPL/PS
+	0105  Photo Printer 64xPS
+	010e  P510S
+	0110  P110S
+	0111  P510Si
+	0112  P518S
+	0200  Photo Printer 64xDL
+	0309  CS-200e
+	030a  CS-220e
+	0501  P75x Series
+	0502  P52x Series
+	0503  P310L
+	050a  P310W
+	050f  P530D
+	0800  X610
+0d17  NALTEC, Inc.
+0d18  coaXmedia
+0d19  Hank Connection Industrial Co., Ltd
+0d28  NXP
+	0204  ARM mbed
+0d2f  Andamiro
+	0002  Pump It Up Pad
+0d32  Leo Hui Electric Wire & Cable Co., Ltd
+0d33  AirSpeak, Inc.
+0d34  Rearden Steel Technologies
+0d35  Dah Kun Co., Ltd
+0d3a  Posiflex Technologies, Inc.
+	0206  Series 3xxx Cash Drawer
+	0207  Series 3xxx Cash Drawer
+	0500  Magnetic Stripe Reader
+0d3c  Sri Cable Technology, Ltd
+0d3d  Tangtop Technology Co., Ltd
+	0001  HID Keyboard
+	0040  PS/2 Adapter
+0d3e  Fitcom, inc.
+0d3f  MTS Systems Corp.
+0d40  Ascor, Inc.
+0d41  Ta Yun Terminals Industrial Co., Ltd
+0d42  Full Der Co., Ltd
+0d46  Kobil Systems GmbH
+	2012  KAAN Standard Plus (Smartcard reader)
+	3003  mIDentity Light / KAAN SIM III
+	3014  Smart Token
+	4000  mIDentity (mass storage)
+	4001  mIDentity Basic/Classic (composite device)
+	4081  mIDentity Basic/Classic (installationless)
+0d48  Promethean Limited
+	0001  ACTIVboard
+	0004  ACTIVboard
+	0100  Audio
+0d49  Maxtor
+	3000  Drive
+	3005  Personal Storage 3000LS
+	3010  3000LE Drive
+	3100  Hi-Speed USB-IDE Bridge Controller
+	3200  Personal Storage 3200
+	5000  5000XT Drive
+	5010  5000LE Drive
+	5020  Mobile Hard Disk Drive
+	7000  OneTouch
+	7010  OneTouch
+	7100  OneTouch II 300GB External Hard Disk
+	7310  OneTouch 4
+	7410  Mobile Hard Disk Drive (1TB)
+	7450  Basics Portable USB Device
+0d4a  NF Corp.
+0d4b  Grape Systems, Inc.
+0d4c  Tedas AG
+0d4d  Coherent, Inc.
+0d4e  Agere Systems Netherland BV
+	047a  WLAN Card
+	1000  Wireless Card Model 0801
+	1001  Wireless Card Model 0802
+0d4f  EADS Airbus France
+0d50  Cleware GmbH
+	0011  USB-Temp2 Thermometer
+	0030  Multiplexer
+	0040  F4 foot switch
+0d51  Volex (Asia) Pte., Ltd
+0d53  HMI Co., Ltd
+0d54  Holon Corp.
+0d55  ASKA Technologies, Inc.
+0d56  AVLAB Technology, Inc.
+0d57  Solomon Microtech, Ltd
+0d59  TRC Simulators b.v.
+	02a8  Digital Clock
+0d5c  SMC Networks, Inc.
+	a001  SMC2662W (v1) EZ Connect 802.11b Wireless Adapter [Atmel AT76C503A]
+	a002  SMC2662W v2 / SMC2662W-AR / Belkin F5D6050 [Atmel at76c503a]
+0d5e  Myacom, Ltd
+	2346  BT Digital Access adapter
+0d5f  CSI, Inc.
+0d60  IVL Technologies, Ltd
+0d61  Meilu Electronics (Shenzhen) Co., Ltd
+0d62  Darfon Electronics Corp.
+	0003  Smartcard Reader
+	0004  Keyboard
+	001b  Keyboard
+	001c  Benq X120 Internet Keyboard Pro
+	0306  M530 Mouse
+	0800  Magic Wheel
+	2021  AM805 Keyboard
+	2026  TECOM Bluetooth Device
+	2050  Mouse
+	2106  Dell L20U Multimedia Keyboard
+	910e  HP Business Slim Keyboard
+	a100  Optical Mouse
+0d63  Fritz Gegauf AG
+0d64  DXG Technology Corp.
+	0105  Dual Mode Digital Camera 1.3M
+	0107  Horus MT-409 Camera
+	0108  Dual Mode Digital Camera
+	0202  Dual Mode Video Camera Device
+	0303  DXG-305V Camera
+	1001  SiPix Stylecam/UMAX AstraPix 320s
+	1002  Fashion Cam 01 Dual-Mode DSC (Video Camera)
+	1003  Fashion Cam Dual-Mode DSC (Controller)
+	1021  D-Link DSC 350F
+	1208  Dual Mode Still Camera Device
+	2208  Mass Storage
+	3105  Dual Mode Digital Camera Disk
+	3108  Digicam Mass Storage Device
+	5566  Contour Roam Model 1600
+0d65  KMJP Co., Ltd
+0d66  TMT
+0d67  Advanet, Inc.
+0d68  Super Link Electronics Co., Ltd
+0d69  NSI
+0d6a  Megapower International Corp.
+0d6b  And-Or Logic
+0d70  Try Computer Co., Ltd
+0d71  Hirakawa Hewtech Corp.
+0d72  Winmate Communication, Inc.
+0d73  Hit's Communications, Inc.
+0d76  MFP Korea, Inc.
+0d77  Power Sentry/Newpoint
+0d78  Japan Distributor Corp.
+0d7a  MARX Datentechnik GmbH
+	0001  CrypToken
+0d7b  Wellco Technology Co., Ltd
+0d7c  Taiwan Line Tek Electronic Co., Ltd
+0d7d  Phison Electronics Corp.
+	0100  PS1001/1011/1006/1026 Flash Disk
+	0110  Gigabyte FlexDrive
+	0120  Disk Pro 64MB
+	0124  GIGABYTE Disk
+	0240  I/O-Magic/Transcend 6-in-1 Card Reader
+	110e  NEC uPD720121/130 USB-ATA/ATAPI Bridge
+	1240  Apacer 6-in-1 Card Reader 2.0
+	1270  Wolverine SixPac 6000
+	1300  Flash Disk
+	1320  PS2031 Flash Disk
+	1400  Attache 256MB USB 2.0 Flash Drive
+	1420  PS2044 Pen Drive
+	1470  Vosonic X's-Drive II+ VP2160
+	1620  USB Disk Pro
+	1900  USB Thumb Drive
+0d7e  American Computer & Digital Components
+	2507  Hi-Speed USB-to-IDE Bridge Controller
+	2517  Hi-Speed Mass Storage Device
+	25c7  Hi-Speed USB-to-IDE Bridge Controller
+0d7f  Essential Reality LLC
+	0100  P5 Glove glove controller
+0d80  H.R. Silvine Electronics, Inc.
+0d81  TechnoVision
+0d83  Think Outside, Inc.
+0d87  Dolby Laboratories Inc.
+0d89  Oz Software
+0d8a  King Jim Co., Ltd
+	0101  TEPRA PRO
+0d8b  Ascom Telecommunications, Ltd
+0d8c  C-Media Electronics, Inc.
+	0001  Audio Device
+	0002  Composite Device
+	0003  Sound Device
+	0004  CM6631A Audio Processor
+	0005  Blue Snowball
+	0006  Storm HP-USB500 5.1 Headset
+	000c  Audio Adapter
+	000d  Composite Device
+	000e  Audio Adapter (Planet UP-100, Genius G-Talk)
+	0014  Audio Adapter (Unitek Y-247A)
+	001f  CM108 Audio Controller
+	0102  CM106 Like Sound Device
+	0103  CM102-A+/102S+ Audio Controller
+	0104  CM103+ Audio Controller
+	0105  CM108 Audio Controller
+	0107  CM108 Audio Controller
+	010f  CM108 Audio Controller
+	0115  CM108 Audio Controller
+	0139  Multimedia Headset [Gigaware by Ignition L.P.]
+	013c  CM108 Audio Controller
+	0201  CM6501
+	5000  Mass Storage Controller
+	5200  Mass Storage Controller(0D8C,5200)
+	b213  USB Phone CM109 (aka CT2000,VPT1000)
+0d8d  Promotion & Display Technology, Ltd
+	0234  V-234 Composite Device
+	0550  V-550 Composite Device
+	0551  V-551 Composite Device
+	0552  V-552 Composite Device
+	0651  V-651 Composite Device
+	0652  V-652 Composite Device
+	0653  V-653 Composite Device
+	0654  V-654 Composite Device
+	0655  V-655 Composite Device
+	0656  V-656 Composite Device
+	0657  V-657 Composite Device
+	0658  V-658 Composite Device
+	0659  V-659 Composite Device
+	0660  V-660 Composite Device
+	0661  V-661 Composite Device
+	0662  V-662 Composite Device
+	0850  V-850 Composite Device
+	0851  V-851 Composite Device
+	0852  V-852 Composite Device
+	0901  V-901 Composite Device
+	0902  V-902 Composite Device
+	0903  V-903 Composite Device
+	4754  Voyager DMP Composite Device
+	bb00  Bloomberg Composite Device
+	bb01  Bloomberg Composite Device
+	bb02  Bloomberg Composite Device
+	bb03  Bloomberg Composite Device
+	bb04  Bloomberg Composite Device
+	bb05  Bloomberg Composite Device
+	fffe  Global Tuner Composite Device
+	ffff  Voyager DMP Composite Device
+0d8e  Global Sun Technology, Inc.
+	0163  802.11g 54 Mbps Wireless Dongle
+	1621  802.11b Wireless Adapter
+	3762  Cohiba 802.11g Wireless Mini adapter [Intersil ISL3887]
+	3763  802.11g Wireless dongle
+	7100  802.11b Adapter
+	7110  WL-210 / WU210P 802.11b Wireless Adapter [Atmel AT76C503A]
+	7605  TRENDnet TEW-224UB 802.11b Wireless Adapter [Atmel AT76C503A]
+	7801  AR5523
+	7802  AR5523 (no firmware)
+	7811  AR5523
+	7812  AR5523 (no firmware)
+	7a01  PRISM25 802.11b Adapter
+0d8f  Pitney Bowes
+0d90  Sure-Fire Electrical Corp.
+0d96  Skanhex Technology, Inc.
+	0000  Jenoptik JD350 video
+	3300  SX330z Camera
+	4100  SX410z Camera
+	4102  MD 9700 Camera
+	4104  Jenoptik JD-4100z3s
+	410a  Medion 9801/Novatech SX-410z
+	5200  SX-520z Camera
+0d97  Santa Barbara Instrument Group
+	0001  SBIG Astronomy Camera (without firmware)
+	0101  SBIG Astronomy Camera (with firmware)
+0d98  Mars Semiconductor Corp.
+	0300  Avaya Wireless Card
+	1007  Discovery Kids Digital Camera
+0d99  Trazer Technologies, Inc.
+0d9a  RTX AS
+	0001  Bluetooth Device
+0d9b  Tat Shing Electrical Co.
+0d9c  Chee Chen Hi-Technology Co., Ltd
+0d9d  Sanwa Supply, Inc.
+0d9e  Avaya
+	0300  Wireless Card
+0d9f  Powercom Co., Ltd
+	0001  Uninterruptible Power Supply
+	0002  Black Knight PRO / WOW Uninterruptible Power Supply (Cypress HID->COM RS232)
+	00a2  Imperial Uninterruptible Power Supply (HID PDC)
+	00a3  Smart King PRO Uninterruptible Power Supply (HID PDC)
+	00a4  WOW Uninterruptible Power Supply (HID PDC)
+	00a5  Vanguard Uninterruptible Power Supply (HID PDC)
+	00a6  Black Knight PRO Uninterruptible Power Supply (HID PDC)
+0da0  Danger Research
+0da1  Suzhou Peter's Precise Industrial Co., Ltd
+0da2  Land Instruments International, Ltd
+0da3  Nippon Electro-Sensory Devices Corp.
+0da4  Polar Electro Oy
+	0001  Interface
+	0003  FlowLink
+	0008  Loop
+0da7  IOGear, Inc.
+0da8  softDSP Co., Ltd
+	0001  SDS 200A Oscilloscope
+0dab  Cubig Group
+	0100  DVR/CVR-M140 MP3 Player
+0dad  Westover Scientific
+0db0  Micro Star International
+	1020  PC2PC WLAN Card
+	1967  Bluetooth Dongle
+	3713  Primo 73
+	3801  Motorola Bluetooth 2.1+EDR Device
+	3870  MS-3870 802.11bgn Wireless Module [Ralink RT3070]
+	3871  MS-3871 802.11bgn Wireless Module [Ralink RT8070]
+	4011  Medion Flash XL V2.0 Card Reader
+	4023  Lexar Mobile Card Reader
+	4600  802.11b/g Turbo Wireless Adapter
+	5501  Mass Storage Device
+	5502  Mass Storage Device
+	5513  MP3 Player
+	5515  MP3 Player
+	5516  MP3 Player
+	5580  Mega Sky 580 DVB-T Tuner [M902x]
+	5581  Mega Sky 580 DVB-T Tuner [GL861]
+	6823  UB11B/MS-6823 802.11b Wi-Fi adapter
+	6826  IEEE 802.11g Wireless Network Adapter
+	6855  Bluetooth Device
+	6861  MSI-6861 802.11g WiFi adapter
+	6865  RT2570
+	6869  RT2570
+	6874  RT2573
+	6877  RT2573
+	6881  Bluetooth Class I EDR Device
+	688a  Bluetooth Class I EDR Device
+	6899  802.11bgn 1T1R Mini Card Wireless Adapter
+	6970  MS-6970 BToes Bluetooth adapter
+	697a  Bluetooth Dongle
+	6982  Medion Flash XL Card Reader
+	a861  RT2573
+	a874  RT2573
+	a970  Bluetooth dongle
+	a97a  Bluetooth EDR Device
+	b970  Bluetooth EDR Device
+	b97a  Bluetooth EDR Device
+	ffff  Bluetooth Adapter in DFU mode
+0db1  Wen Te Electronics Co., Ltd
+0db2  Shian Hwi Plug Parts, Plastic Factory
+0db3  Tekram Technology Co., Ltd
+0db4  Chung Fu Chen Yeh Enterprise Corp.
+0db5  Access IS
+	0139  Barcode Module - CDC serial
+	013a  Barcode Module - Virtual Keyboard
+	013b  Barcode Module - HID
+	0160  NFC and Smartcard Module (NSM)
+	0164  NFC and Smartcard Module (NSM)with 4 SAM slots
+0db7  ELCON Systemtechnik
+	0002  Goldpfeil P-LAN
+0dba  Digidesign
+	1000  Mbox 1 [Mbox]
+	3000  Mbox 2
+	b011  Eleven Rack
+0dbc  A&D Medical
+	0003  AND Serial Cable [AND Smart Cable]
+0dbe  Jiuh Shiuh Precision Industry Co., Ltd
+0dbf  Jess-Link International
+	0002  SmartDongle Security Key
+	0200  HDD Storage Solution
+	021b  USB-2.0 IDE Adapter
+	0300  Storage Adapter
+	0333  Storage Adapter
+	0502  FSC Storagebird XL hard disk
+	0707  ZIV Drive
+0dc0  G7 Solutions (formerly Great Notions)
+0dc1  Tamagawa Seiki Co., Ltd
+0dc3  Athena Smartcard Solutions, Inc.
+	0801  ASEDrive III
+	0802  ASEDrive IIIe
+	1104  ASEDrive IIIe KB
+	1701  ASEKey
+	1702  ASEKey
+0dc4  inXtron, Inc.
+	0040  Mass Storage Device
+	0041  Mass Storage Device
+	0042  Mass Storage Device
+	0101  Hi-Speed Mass Storage Device
+	0209  SK-3500 S2
+	020a  Oyen Digital MiniPro 2.5" hard drive enclosure
+	0290  Mass Storage Device [NT2 U3.1]
+0dc5  SDK Co., Ltd
+0dc6  Precision Squared Technology Corp.
+	2301  Wireless Touchpad Keyboard
+0dc7  First Cable Line, Inc.
+0dcd  NetworkFab Corp.
+	0001  Remote Interface Adapter
+	0002  High Bandwidth Codec
+0dd0  Access Solutions
+	1002  Triple Talk Speech Synthesizer
+0dd1  Contek Electronics Co., Ltd
+0dd2  Power Quotient International Co., Ltd
+	0003  Mass Storage (P)
+0dd3  MediaQ
+0dd4  Custom Engineering SPA
+	0237  K80 80mm Thermal Printer
+0dd5  California Micro Devices
+0dd7  Kocom Co., Ltd
+0dd8  Netac Technology Co., Ltd
+	0562  Netac Portable SSD Z6s
+	1060  USB-CF-Card
+	e007  OnlyDisk U222 Pendrive
+	f607  OnlyDisk U210 1G flash drive [U-SAFE]
+0dd9  HighSpeed Surfing
+0dda  Integrated Circuit Solution, Inc.
+	0001  Multi-Card Reader 6in1
+	0002  Multi-Card Reader 7in1
+	0003  Flash Disk
+	0005  Internal Multi-Card Reader 6in1
+	0008  SD single card reader
+	0009  MS single card reader
+	000a  MS+SD Dual Card Reader
+	000b  SM single card reader
+	0101  All-In-One Card Reader
+	0102  All-In-One Card Reader
+	0301  MP3 Player
+	0302  Multi-Card MP3 Player
+	1001  Multi-Flash Disk
+	2001  Multi-Card Reader
+	2002  Q018 default PID
+	2003  Multi-Card Reader
+	2005  Datalux DLX-1611 16in1 Card Reader
+	2006  All-In-One Card Reader
+	2007  USB to ATAPI bridge
+	2008  All-In-One Card Reader
+	2013  SD/MS Combo Card Reader
+	2014  SD/MS Single Card Reader
+	2023  card reader SD/MS DEMO board with ICSI brand name (MaskROM version)
+	2024  card reader SD/MS DEMO board with Generic brand name (MaskROM version)
+	2026  USB2.0 Card Reader
+	2027  USB 2.0 Card Reader
+	2315  UFD MP3 player (model 2)
+	2318  UFD MP3 player (model 1)
+	2321  UFD MP3 player
+0ddb  Tamarack, Inc.
+0ddd  Datelink Technology Co., Ltd
+0dde  Ubicom, Inc.
+0de0  BD Consumer Healthcare
+0de7  USBmicro
+	0191  U401 Interface card
+	01a5  U421 interface card
+	01c3  U451 relay interface card
+0dea  UTECH Electronic (D.G.) Co., Ltd.
+0ded  Novasonics
+0dee  Lifetime Memory Products
+	4010  Storage Adapter
+0def  Full Rise Electronic Co., Ltd
+0df4  NET&SYS
+	0201  MNG-2005
+0df6  Sitecom Europe B.V.
+	0001  C-Media VOIP Device
+	0004  Bluetooth 2.0 Adapter 100m
+	0007  Bluetooth 2.0 Adapter 10m
+	000b  Bluetooth 2.0 Adapter DFU
+	000d  WL-168 Wireless Network Adapter 54g
+	0017  WL-182 Wireless-N Network USB Card
+	0019  Bluetooth 2.0 adapter 10m CN-512v2 001
+	001a  Bluetooth 2.0 adapter 100m CN-521v2 001 
+	002b  WL-188 Wireless Network 300N USB Adapter
+	002c  WL-301 Wireless Network 300N USB Adapter
+	002d  WL-302 Wireless Network 300N USB dongle 
+	0036  WL-603 Wireless Adapter
+	0039  WL-315 Wireless-N USB Adapter
+	003b  WL-321 Wireless USB Gaming Adapter 300N
+	003c  WL-323 Wireless-N USB Adapter
+	003d  WL-324 Wireless USB Adapter 300N
+	003e  WL-343 Wireless USB Adapter 150N X1
+	003f  WL-608 Wireless USB Adapter 54g
+	0040  WL-344 Wireless Adapter 300N X2 [Ralink RT3071]
+	0041  WL-329 Wireless Dualband USB adapter 300N
+	0042  WL-345 Wireless USB adapter 300N X3
+	0045  WL-353 Wireless USB Adapter 150N Nano
+	0047  WL-352v1 Wireless USB Adapter 300N 002
+	0048  WL-349v1 Wireless Adapter 150N 002 [Ralink RT3070]
+	0049  WL-356 Wireless Adapter 300N
+	004a  WL-358v1 Wireless Micro USB Adapter 300N X3 002
+	004b  WL-349v3 Wireless Micro Adapter 150N X1 [Realtek RTL8192SU]
+	004c  WL-352 802.11n Adapter [Realtek RTL8191SU]
+	0050  WL-349v4 Wireless Micro Adapter 150N X1 [Ralink RT3370]
+	0056  LN-031 10/100/1000 Ethernet Adapter
+	005d  WLA-2000 v1.001 WLAN [RTL8191SU]
+	0060  WLA-4000 802.11bgn [Ralink RT3072]
+	0062  WLA-5000 802.11abgn [Ralink RT3572]
+	006f  WLA-5100
+	0072  AX88179 Gigabit Ethernet [Sitecom]
+	061c  LN-028 Network USB 2.0 Adapter
+	214a  IDE/SATA Combo Adapter [CN-330]
+	21f4  44 St Bluetooth Device
+	2200  Sitecom bluetooth2.0 class 2 dongle CN-512
+	2208  Sitecom bluetooth2.0 class 2 dongle CN-520
+	2209  Sitecom bluetooth2.0 class 1 dongle CN-521
+	3068  DC-104v2 ISDN Adapter [HFC-S]
+	9071  WL-113 rev 1 Wireless Network USB Adapter
+	9075  WL-117 Hi-Speed USB Adapter
+	90ac  WL-172 Wireless Network USB Adapter 54g Turbo
+	9712  WL-113 rev 2 Wireless Network USB Adapter
+0df7  Mobile Action Technology, Inc.
+	0620  MA-620 Infrared Adapter
+	0700  MA-700 Bluetooth Adapter
+	0720  MA-720 Bluetooth Adapter
+	0722  Bluetooth Dongle
+	0730  MA-730/MA-730G Bluetooth Adapter
+	0800  Data Cable
+	0820  Data Cable
+	0900  MA i-gotU Travel Logger GPS
+	1800  Generic Card Reader
+	1802  Card Reader
+0dfa  Toyo Communication Equipment Co., Ltd
+0dfc  GeneralTouch Technology Co., Ltd
+	0001  Touchscreen
+	0003  MultiTouch TouchScreen(Dualtouch)
+	0101  5-point Touch Screen
+	d107  MultiTouch TouchScreen
+0e03  Nippon Systemware Co., Ltd
+0e08  Winbest Technology Co., Ltd
+0e0b  Amigo Technology Inc.
+	9031  802.11n Wireless USB Card
+	9041  802.11n Wireless USB Card
+0e0c  Gesytec
+	0101  LonUSB LonTalk Network Adapter
+0e0d  PicoQuant GmbH
+	0003  PicoHarp 300
+0e0f  VMware, Inc.
+	0001  Device
+	0002  Virtual USB Hub
+	0003  Virtual Mouse
+	0004  Virtual CCID
+	0005  Virtual Mass Storage
+	0006  Virtual Keyboard
+	000a  Virtual Sensors
+	8001  Root Hub
+	8002  Root Hub
+	8003  Root Hub
+	f80a  Smoker FX2
+0e16  JMTek, LLC
+0e17  Walex Electronic, Ltd
+0e1a  Unisys
+0e1b  Crewave
+0e1e  Green Hills Software
+0e20  Pegasus Technologies Ltd.
+	0101  NoteTaker
+	0200  Seiko Instruments InkLink Handwriting System
+0e21  Cowon Systems, Inc.
+	0300  iAudio CW200
+	0400  MP3 Player
+	0500  iAudio M3
+	0510  iAudio X5, subpack USB port
+	0513  iAudio X5, side USB port
+	0520  iAudio M5, side USB port
+	0601  iAudio G3
+	0681  iAUDIO E2
+	0700  iAudio U3
+	0751  iAudio 7
+	0760  iAUDIO U5 / iAUDIO G2
+	0800  Cowon D2 (UMS mode)
+	0801  Cowon D2 (MTP mode)
+	0910  iAUDIO 9
+	0920  J3
+0e22  Symbian Ltd.
+0e23  Liou Yuane Enterprise Co., Ltd
+0e25  VinChip Systems, Inc.
+0e26  J-Phone East Co., Ltd
+0e30  HeartMath LLC
+0e34  Micro Computer Control Corp.
+0e35  3Pea Technologies, Inc.
+0e36  TiePie engineering
+	0009  Handyscope HS3
+	000b  Handyscope HS4
+	000f  Handyscope HS4-DIFF (br)
+	0010  Handyscope HS2
+	0011  TiePieSCOPE HS805 (br)
+	0012  TiePieSCOPE HS805
+	0013  Handyprobe HP3
+	0014  Handyprobe HP3
+	0018  Handyprobe HP2
+	001b  Handyscope HS5
+	0042  TiePieSCOPE HS801
+	00fd  USB To Parallel adapter
+	00fe  USB To Parallel adapter
+0e38  Stratitec, Inc.
+0e39  Smart Modular Technologies, Inc.
+	0137  Bluetooth Device
+0e3a  Neostar Technology Co., Ltd
+	1100  CW-1100 Wireless Network Adapter
+0e3b  Mansella, Ltd
+0e41  Line6, Inc.
+	4147  TonePort GX
+	414d  Pod HD500
+	4156  POD HD Desktop
+	4250  BassPODxt
+	4252  BassPODxt Pro
+	4642  BassPODxt Live
+	4650  PODxt Live
+	4750  GuitarPort
+	5044  PODxt
+	5050  PODxt Pro
+	534d  SeaMonkey
+0e44  Sun-Riseful Technology Co., Ltd.
+0e48  Julia Corp., Ltd
+	0100  CardPro SmartCard Reader
+0e4a  Shenzhen Bao Hing Electric Wire & Cable Mfr. Co.
+0e4c  Radica Games, Ltd
+	1097  Gamester Controller
+	1103  Gamester Reflex
+	2390  Jtech Controller
+	3510  Gamester for Xbox
+	7288  funkey reader
+0e50  TechnoData Interware
+	0001  Matrix USB-Key
+	0002  Matrixlock Dongle (HID)
+0e55  Speed Dragon Multimedia, Ltd
+	110a  Tanic S110-SG1 + ISSC IS1002N [Slow Infra-Red (SIR) & Bluetooth 1.2 (Class 2) Adapter]
+	110b  MS3303H USB-to-Serial Bridge
+0e56  Kingston Technology Company, Inc.
+	6021  K-PEX 100
+0e5a  Active Co., Ltd
+0e5b  Union Power Information Industrial Co., Ltd
+0e5c  Bitland Information Technology Co., Ltd
+	6118  LCD Device
+	6119  remote receive and control device
+	6441  C-Media Sound Device
+0e5d  Neltron Industrial Co., Ltd
+0e5e  Conwise Technology Co., Ltd.
+	6622  CW6622
+0e66  Hawking Technologies
+	0001  HWUN1 Hi-Gain Wireless-300N Adapter w/ Upgradable Antenna [Ralink RT2870]
+	0003  HWDN1 Hi-Gain Wireless-300N Dish Adapter [Ralink RT2870]
+	0009  HWUN2 Hi-Gain Wireless-150N Adapter w/ Upgradable Antenna [Ralink RT2770]
+	000b  HWDN2 Hi-Gain Wireless-150N Dish Adapter [Ralink RT2770]
+	0013  HWUN3 Hi-Gain Wireless-N Adapter [Ralink RT3070]
+	0015  HWDN2 Rev. E Hi-Gain Wireless-150N Dish Adapter [Realtek RTL8191SU]
+	0017  HAWNU1 Hi-Gain Wireless-150N Network Adapter with Range Amplifier [Ralink RT3070]
+	0018  Wireless-N Network Adapter [Ralink RT2870]
+	400b  UF100 10/100 Network Adapter
+	400c  UF100 Ethernet [pegasus2]
+0e67  Fossil, Inc.
+	0002  Wrist PDA
+0e6a  Megawin Technology Co., Ltd
+	0101  MA100 [USB-UART Bridge IC]
+	02c0  Defender Gaming Keyboard
+	030b  Truly Ergonomic Computer Keyboard (Device Firmware Update mode)
+	030c  Truly Ergonomic Computer Keyboard
+	6001  GEMBIRD Flexible keyboard KB-109F-B-DE
+	7f5c  BPF-015 Key Chain Photo Frame
+0e6f  Logic3
+	0003  Freebird wireless Controller
+	0005  Eclipse wireless Controller
+	0006  Edge wireless Controller
+	0008  After Glow Pro Controller
+	0105  Disney's High School Musical 3 Dance Pad for Xbox 360
+	0113  Afterglow AX.1 Gamepad
+	011f  Rock Candy Wired Controller for Xbox 360
+	0128  Wireless PS3 Controller
+	0131  PDP EA Sports Controller
+	0133  Wired Controller
+	0139  Afterglow Prismatic Wired Controller for Xbox One
+	013a  PDP Xbox One Controller
+	0146  Rock Candy Wired Controller for Xbox One
+	0147  PDP Marvel Controller for Xbox One
+	015c  PDP Arcade Stick for Xbox One
+	0161  Camo Wired Controller for Xbox One
+	0162  Xbox One Wired Controller
+	0163  Legendary Collection Deliverer of Truth
+	0164  Battlefield 1 Wired Controller for Xbox One
+	0165  Titanfall 2 Wired Controller for Xbox One
+	0201  Pelican PL-3601
+	0213  Afterglow Gamepad for Xbox 360
+	021f  Rock Candy Gamepad for Xbox 360
+	0246  Rock Candy Gamepad for Xbox One
+	0301  Controller
+	0346  Rock Candy Wired Controller for Xbox One
+	0401  Controller
+	0413  Afterglow AX.1 Gamepad for Xbox 360
+	0501  Wired Controller
+	f501  Hi-TEC Essentials Wired Gamepad
+	f900  Afterglow AX.1
+0e70  Tokyo Electronic Industry Co., Ltd
+0e72  Hsi-Chin Electronics Co., Ltd
+0e75  TVS Electronics, Ltd
+0e79  Archos, Inc.
+	1106  Pocket Media Assistant - PMA400
+	1204  Gmini XS 200
+	1306  504 Portable Multimedia Player
+	1330  5 Tablet
+	1332  5 IMT
+	1416  32 IT
+	1417  A43 IT
+	14ad  97 Titanium HD
+	150e  80 G9
+	3001  40 Titanium
+0e7b  On-Tech Industry Co., Ltd
+0e7e  Gmate, Inc.
+	0001  Yopy 3000 PDA
+	1001  YP3X00 PDA
+0e82  Ching Tai Electric Wire & Cable Co., Ltd
+0e83  Shin An Wire & Cable Co.
+0e8c  Well Force Electronic Co., Ltd
+0e8d  MediaTek Inc.
+	0002  phone (mass storage mode) [Doro Primo 413]
+	0003  MT6227 phone
+	0004  MT6227 phone
+	0023  S103 / Powertel M6200
+	00a5  GSM modem [Medion Surfstick Model:S4222]
+	1806  Samsung SE-208 Slim Portable DVD Writer
+	1836  Samsung SE-S084 Super WriteMaster Slim External DVD writer
+	1887  Slim Portable DVD Writer
+	1956  Samsung SE-506 Portable BluRay Disc Writer
+	2000  MT65xx Preloader
+	2008  Cyrus Technology CS 24
+	3329  Qstarz BT-Q1000XT
+	7612  MT7612U 802.11a/b/g/n/ac Wireless Adapter
+	763e  MT7630e Bluetooth Adapter
+	7668  MT7668 2x2 Dual Band Dual Concurrent 802.11a/b/g/n/ac WiFi with MU-MIMO and Bluetooth 5.0 Radios
+0e8f  GreenAsia Inc.
+	0003  MaxFire Blaze2
+	0012  Joystick/Gamepad
+	0016  4 port USB 1.1 hub UH-174
+	0020  USB to PS/2 Adapter
+	0021  Multimedia Keyboard Controller
+	0022  multimedia keyboard controller
+	0201  SmartJoy Frag Xpad/PS2 adaptor
+	3008  Xbox Controller
+	300a  steering Wheel
+0e90  WiebeTech, LLC
+	0100  Storage Adapter V1
+0e91  VTech Engineering Canada, Ltd
+0e92  C's Glory Enterprise Co., Ltd
+0e93  eM Technics Co., Ltd
+0e95  Future Technology Co., Ltd
+0e96  Aplux Communications, Ltd
+	c001  TRUST 380 USB2 SPACEC@M
+0e97  Fingerworks, Inc.
+	0908  Composite HID (Keyboard and Mouse)
+0e98  Advanced Analogic Technologies, Inc.
+0e99  Parallel Dice Co., Ltd
+0e9a  TA HSING Industries, Ltd
+0e9b  ADTEC Corp.
+0e9c  Streamzap, Inc.
+	0000  Streamzap Remote Control
+0e9f  Tamura Corp.
+0ea0  Ours Technology, Inc.
+	2126  7-in-1 Card Reader
+	2153  SD Card Reader Key
+	2168  Transcend JetFlash 2.0 / Astone USB Drive / Intellegent Stick 2.0
+	2213  WinDroid N287 AH7N2502.013317
+	6803  OTI-6803 Flash Disk
+	6808  OTI-6808 Flash Disk
+	6828  OTI-6828 Flash Disk
+	6858  OTi-6858 serial adapter
+0ea6  Nihon Computer Co., Ltd
+0ea7  MSL Enterprises Corp.
+0ea8  CenDyne, Inc.
+0ead  Humax Co., Ltd
+0eb0  NovaTech
+	9020  NovaTech NV-902W
+	9021  RT2573
+0eb1  WIS Technologies, Inc.
+	6666  WinFast WalkieTV TV Loader
+	6668  WinFast WalkieTV TV Loader
+	7007  WinFast WalkieTV WDM Capture
+0eb2  Y-S Electronic Co., Ltd
+0eb3  Saint Technology Corp.
+0eb7  Endor AG
+0eb8  Mettler Toledo
+	2200  Ariva Scale
+	f000  BC60 Scale
+0ebb  Thermo Fisher Scientific
+	0002  FT-IR Spectrometer
+0ebe  VWeb Corp.
+0ebf  Omega Technology of Taiwan, Inc.
+0ec0  LHI Technology (China) Co., Ltd
+0ec1  Abit Computer Corp.
+0ec2  Sweetray Industrial, Ltd
+0ec3  Axell Co., Ltd
+0ec4  Ballracing Developments, Ltd
+0ec5  GT Information System Co., Ltd
+0ec6  InnoVISION Multimedia, Ltd
+0ec7  Theta Link Corp.
+	1008  So., Show 301 Digital Camera
+0ecd  Lite-On IT Corp.
+	1400  CD\RW 40X
+	a100  LDW-411SX DVD/CD Rewritable Drive
+0ece  TaiSol Electronics Co., Ltd
+0ecf  Phogenix Imaging, LLC
+0ed1  WinMaxGroup
+	6660  Flash Disk 64M-C
+	6680  Flash Disk 64M-B
+	7634  MP3 Player
+0ed2  Kyoto Micro Computer Co., Ltd
+0ed3  Wing-Tech Enterprise Co., Ltd
+0ed5  Fiberbyte
+	e000  USB-inSync Device
+	f000  Fiberbyte USB-inSync Device
+	f201  Fiberbyte USB-inSync DAQ-2500X
+0eda  Noriake Itron Corp.
+0edf  e-MDT Co., Ltd
+	2060  FID irock! 100 Series
+0ee0  Shima Seiki Mfg., Ltd
+0ee1  Sarotech Co., Ltd
+0ee2  AMI Semiconductor, Inc.
+0ee3  ComTrue Technology Corp.
+	1000  Image Tank 1.5
+0ee4  Sunrich Technology, Ltd
+	0690  SATA 3 Adapter
+0eee  Digital Stream Technology, Inc.
+	8810  Mass Storage Drive
+0eef  D-WAV Scientific Co., Ltd
+	0001  Titan6001 Surface Acoustic Wave Touchscreen Controller [eGalax]
+	0002  Touchscreen Controller(Professional)
+	7200  Touchscreen Controller
+	7904  Multitouch Capacitive Touchscreen eGalaxTouch EXC7904-21v00_T13 [IIyama Prolite T1932-MSC]
+	a802  eGalaxTouch EXC7920
+	b10e  eGalaxTouch EXC3000
+	c000  Multitouch Capacitive Touchscreen eGalaxTouch EXC3188-4643-08.00.00.00 Sirius_4643 PCAP3188UR Series [IIyama Prolite PLT1932MSC]
+0ef0  Hitachi Cable, Ltd
+0ef1  Aichi Micro Intelligent Corp.
+0ef2  I/O Magic Corp.
+0ef3  Lynn Products, Inc.
+0ef4  DSI Datotech
+0ef5  PointChips
+	2202  Flash Disk
+	2366  Flash Disk
+0ef6  Yield Microelectronics Corp.
+0ef7  SM Tech Co., Ltd (Tulip)
+0efd  Oasis Semiconductor
+0efe  Wem Technology, Inc.
+0f03  Unitek UPS Systems
+	0001  Alpha 1200Sx
+0f06  Visual Frontier Enterprise Co., Ltd
+0f08  CSL Wire & Plug (Shen Zhen) Co.
+0f0c  CAS Corp.
+0f0d  Hori Co., Ltd
+	000a  Dead or Alive 4 FightStick for Xbox 360
+	000c  Horipad EX Turbo for Xbox 360
+	000d  Fighting Stick EX2 for Xbox 360
+	0011  Real Arcade Pro 3
+	0016  Real Arcade Pro.EX for Xbox 360
+	001b  Real Aracde Pro.VX
+	0063  Real Arcade Pro Hayabusa for Xbox One
+	0067  Horipad One
+	0078  Real Arcade Pro V Kai for Xbox One / Xbox 360
+	0090  Horipad Ultimate
+	00c1  HORIPAD for Nintendo Switch
+0f0e  Energy Full Corp.
+0f0f  Silego Technology Inc
+	0006  GreenPak Universal Dev Board (Active Mode)
+	8006  GreenPak Universal Dev Board (Reset Mode)
+0f11  LD Didactic GmbH
+	1000  CASSY-S
+	1010  Pocket-CASSY
+	1020  Mobile-CASSY
+	1080  Joule and Wattmeter
+	1081  Digital Multimeter P
+	1090  UMI P
+	1100  X-Ray Apparatus
+	1101  X-Ray Apparatus
+	1200  VideoCom
+	2000  COM3LAB
+	2010  Terminal Adapter
+	2020  Network Analyser
+	2030  Converter Control Unit
+	2040  Machine Test System
+0f12  Mars Engineering Corp.
+0f13  Acetek Technology Co., Ltd
+0f14  Ingenico
+	0012  Vital'Act 3S
+	0038  XIRING Smart Card Terminal LEO V2
+0f18  Finger Lakes Instrumentation
+	0002  CCD
+	0006  Focuser
+	0007  Filter Wheel
+	000a  ProLine CCD
+	000b  Color Filter Wheel 4
+	000c  PDF2
+	000d  Guider
+0f19  Oracom Co., Ltd
+0f1b  Onset Computer Corp.
+0f1c  Funai Electric Co., Ltd
+0f1d  Iwill Corp.
+0f21  IOI Technology Corp.
+0f22  Senior Industries, Inc.
+0f23  Leader Tech Manufacturer Co., Ltd
+0f24  Flex-P Industries, Snd., Bhd.
+0f2d  ViPower, Inc.
+0f2e  Geniality Maple Technology Co., Ltd
+0f2f  Priva Design Services
+0f30  Jess Technology Co., Ltd
+	001c  PS3 Guitar Controller Dongle
+	010b  Philips Recoil
+	0110  Dual Analog Rumble Pad
+	0111  Colour Rumble Pad
+	0202  Joytech Advanced Controller
+	0208  Xbox & PC Gamepad
+	8888  BigBen XBMiniPad Controller
+0f31  Chrysalis Development
+0f32  YFC-BonEagle Electric Co., Ltd
+0f37  Kokuyo Co., Ltd
+0f38  Nien-Yi Industrial Corp.
+0f39  TG3 Electronics
+	0404  Recreated ZX Spectrum Keyboard
+	0876  Keyboard [87 Francium Pro]
+	1086  DK2108SZ Keyboard [Ducky Zero]
+0f3d  Airprime, Incorporated
+	0112  CDMA 1xEVDO PC Card, PC 5220
+0f41  RDC Semiconductor Co., Ltd
+0f42  Nital Consulting Services, Inc.
+0f44  Polhemus
+	ef11  Patriot (firmware not loaded)
+	ef12  Patriot
+	ff11  Liberty (firmware not loaded)
+	ff12  Liberty
+0f49  Evolis SA
+	0a00  Zenius
+0f4b  St. John Technology Co., Ltd
+0f4c  WorldWide Cable Opto Corp.
+0f4d  Microtune, Inc.
+	1000  Bluetooth Dongle
+0f4e  Freedom Scientific
+0f52  Wing Key Electrical Co., Ltd
+0f53  Dongguan White Horse Cable Factory, Ltd
+0f54  Kawai Musical Instruments Mfg. Co., Ltd
+	0101  MP6 Stage Piano
+0f55  AmbiCom, Inc.
+0f5c  Prairiecomm, Inc.
+0f5d  NewAge International, LLC
+	9455  Compact Drive
+0f5f  Key Technology Corp.
+0f60  NTK, Ltd
+0f61  Varian, Inc.
+0f62  Acrox Technologies Co., Ltd
+	1001  Targus Mini Trackball Optical Mouse
+0f63  LeapFrog Enterprises
+	0010  Leapster Explorer
+	0022  Leap Reader
+	0500  Fly Fusion
+	0600  Leap Port Turbo
+	0700  POGO
+	0800  Didj
+	0900  TAGSchool
+	0a00  Leapster 2
+	0b00  Crammer
+	0c00  Tag Jr
+	0d00  My Pal Scout
+	0e00  Tag32
+	0f00  Tag64
+	1000  Kiwi16
+	1100  Leapster L2x
+	1111  Fly Fusion
+	1300  Didj UK/France (Leapster Advance)
+0f68  Kobe Steel, Ltd
+0f69  Dionex Corp.
+0f6a  Vibren Technologies, Inc.
+0f6e  INTELLIGENT SYSTEMS
+	0100  IS-CGB-EMULATOR
+	0201  GameBoy Advance Flash Gang Writer
+	0202  IS-AGB-CAPTURE
+	0300  IS-DOL-VIEWER
+	0400  IS-NITRO-EMULATOR
+	0401  IS-NITRO-UIC
+	0402  IS-NITRO-WRITER
+	0403  IS-NITRO-CAPTURE
+	0404  IS-NITRO-EMULATOR (DS Lite)
+	0500  IS-TWL-DEBUGGER
+	0501  IS-TWL-CAPTURE
+0f73  DFI
+0f78  Guntermann & Drunck GmbH
+0f7c  DQ Technology, Inc.
+0f7d  NetBotz, Inc.
+0f7e  Fluke Corp.
+0f88  VTech Holdings, Ltd
+	3012  RT2570
+	3014  ZD1211B
+0f8b  Yazaki Corp.
+0f8c  Young Generation International Corp.
+0f8d  Uniwill Computer Corp.
+0f8e  Kingnet Technology Co., Ltd
+0f8f  Soma Networks
+0f97  CviLux Corp.
+0f98  CyberBank Corp.
+0f9c  Hyun Won, Inc.
+	0301  M-Any Premium DAH-610 MP3/WMA Player
+	0332  mobiBLU DAH-1200 MP3/Ogg Player
+0f9e  Lucent Technologies
+0fa3  Starconn Electronic Co., Ltd
+0fa4  ATL Technology
+0fa5  Sotec Co., Ltd
+0fa7  Epox Computer Co., Ltd
+0fa8  Logic Controls, Inc.
+0faf  Winpoint Electronic Corp.
+0fb0  Haurtian Wire & Cable Co., Ltd
+0fb1  Inclose Design, Inc.
+0fb2  Juan-Chern Industrial Co., Ltd
+0fb6  Heber Ltd
+	3fc3  Firefly X10i I/O Board (with firmware)
+	3fc4  Firefly X10i I/O Board (without firmware)
+0fb8  Wistron Corp.
+	0002  eHome Infrared Receiver
+0fb9  AACom Corp.
+0fba  San Shing Electronics Co., Ltd
+0fbb  Bitwise Systems, Inc.
+0fc1  Mitac Internatinal Corp.
+0fc2  Plug and Jack Industrial, Inc.
+0fc5  Delcom Engineering
+	1222  I/O Development Board
+0fc6  Dataplus Supplies, Inc.
+0fca  Research In Motion, Ltd.
+	0001  Blackberry Handheld
+	0004  Blackberry Handheld
+	0006  Blackberry Pearl
+	0008  Blackberry Pearl
+	8001  Blackberry Handheld
+	8004  Blackberry
+	8007  Blackberry Handheld
+	8010  Blackberry Playbook (Connect to Windows mode)
+	8011  Blackberry Playbook (Connect to Mac mode)
+	8014  Blackberry Handheld Z30
+	8020  Blackberry Playbook (CD-Rom mode)
+	8037  Blackberry PRIV
+0fce  Sony Ericsson Mobile Communications AB
+	0076  W910i (Multimedia mode)
+	00af  V640i Phone [PTP Camera]
+	00d4  C902 [MTP]
+	00d9  C702 Phone
+	0112  W995 Walkman Phone
+	014e  J108i Cedar (MTP mode)
+	015a  Xperia Pro [Media Transfer Protocol]
+	0166  Xperia Mini Pro
+	0167  ST15i (Xperia mini)
+	0169  Xperia S
+	0172  Xperia P
+	0177  Xperia Ion [Mass Storage]
+	0188  ST26i
+	019c  C6833
+	019e  C6903
+	01a5  SO-04F
+	01a7  D5503
+	01ba  D6603 [Xperia Z3]
+	01bb  D5803 [Xperia Z3 Compact] (MTP mode)
+	01e0  F5122 [Xperia X dual] (MTP mode)
+	01e8  F5321 [Xperia X Compact] (MTP mode)
+	01f9  H8314 [Xperia XZ2 Compact]
+	1010  WMC Modem
+	10af  V640i Phone [PictBridge]
+	10d4  C902 Phone [PictBridge]
+	2105  W715 Phone
+	2137  Xperia X10 mini (USB debug)
+	2138  Xperia X10 mini pro (Debug)
+	2149  Xperia X8 (debug)
+	214e  J108i Cedar (Windows-driver mode)
+	3137  Xperia X10 mini
+	3138  Xperia X10 mini pro
+	3149  Xperia X8
+	514f  Xperia arc S [Adb-Enable Mode]
+	5169  Xperia S [Adb-Enable Mode]
+	5177  Xperia Ion [Debug Mode]
+	518c  C1605 [Xperia E dual] MTD mode
+	51a7  D5503 (Xperia Z1 Compact)
+	51e0  F5122 [Xperia X dual] (developer mode)
+	614f  Xperia X12 (debug mode)
+	6166  Xperia Mini Pro
+	618c  C1605 [Xperia E dual] MSC mode
+	715a  Xperia Pro [Tethering]
+	7166  Xperia Mini Pro (Tethering mode)
+	7177  Xperia Ion [Tethering]
+	71f4  G8441 (Xperia XZ1 Compact) [Tethering]
+	71f9  H8314 [Xperia XZ2 Compact] (Tethering)
+	8004  9000 Phone [Mass Storage]
+	81f4  G8441 (Xperia XZ1 Compact) [Tethering]
+	adde  C2005 (Xperia M dual) in service mode
+	c1e0  F5122 [Xperia X dual] (MIDI mode)
+	c1e8  F5321 [Xperia X Compact] (MIDI mode)
+	c1f9  H8314 [Xperia XZ2 Compact] (MIDI)
+	d008  V800-Vodafone 802SE Phone
+	d016  K750i Phone
+	d017  K608i Phone
+	d019  VDC EGPRS Modem
+	d025  520 WMC Data Modem
+	d028  W800i
+	d038  W850i Phone
+	d039  K800i (phone mode)
+	d041  K510i Phone
+	d042  W810i Phone
+	d043  V630i Phone
+	d046  K610i Phone
+	d065  W960i Phone (PC Suite)
+	d076  W910i (Phone mode)
+	d079  K530 Phone
+	d089  W580i Phone (mass storage)
+	d0a1  K810
+	d0af  V640i Phone
+	d0cf  MD300 Mobile Broadband Modem
+	d0d4  C902 Phone [Modem]
+	d0e1  MD400 Mobile Broadband Modem
+	d12a  U100i Yari Phone
+	d12e  Xperia X10
+	d14e  J108i Cedar (modem mode)
+	e000  K810 (PictBridge mode)
+	e039  K800i (msc mode)
+	e042  W810i Phone
+	e043  V630i Phone [Mass Storage]
+	e075  K850i
+	e076  W910i (Mass storage)
+	e089  W580i Phone
+	e090  W200 Phone (Mass Storage)
+	e0a1  K810 (Mass Storage mode)
+	e0a3  W660i
+	e0af  V640i Phone [Mass Storage]
+	e0d4  C902 Phone [Mass Storage] 
+	e0ef  C905 Phone [Mass Storage]
+	e0f3  W595
+	e105  W705
+	e112  W995 Phone (Mass Storage)
+	e12e  X10i Phone
+	e133  Vivaz
+	e14e  J108i Cedar (mass-storage mode)
+	e14f  Xperia Arc/X12
+	e15a  Xperia Pro [Mass Storage Class]
+	e161  Xperia Ray
+	e166  Xperia Mini Pro
+	e167  XPERIA mini
+	e19b  C2005 [Xperia M dual] (Mass Storage)
+	e1a9  D5303
+	e1aa  D2303
+	e1ad  D5103
+	e1b0  D6708
+	e1b5  D2004
+	e1ba  D6683
+	e1bb  SO-02G
+	e1bc  D2203
+	e1c0  SGP621
+	e1c2  D2533
+	e1c9  E6553
+	e1cf  SGP771
+	f0fa  MN800 / Smartwatch 2 (DFU mode)
+0fcf  Dynastream Innovations, Inc.
+	1003  ANT Development Board
+	1004  ANTUSB Stick
+	1006  ANT Development Board
+	1008  ANTUSB2 Stick
+	1009  ANTUSB-m Stick
+0fd0  Tulip Computers B.V.
+0fd1  Giant Electronics Ltd.
+0fd2  Seac Banche
+	0001  RDS 6000
+0fd4  Tenovis GmbH & Co., KG
+0fd5  Direct Access Technology, Inc.
+0fd9  Elgato Systems GmbH
+	0011  EyeTV Diversity
+	0018  EyeTV Hybrid
+	0020  EyeTV DTT Deluxe
+	0021  EyeTV DTT
+	002a  EyeTV Sat
+	002c  EyeTV DTT Deluxe v2
+	0033  Video Capture
+	0037  Video Capture v2
+	0060  Stream Deck
+	0063  Stream Deck Mini
+	006c  Stream Deck XL
+	006d  Stream Deck original V2
+0fda  Quantec Networks GmbH
+	0100  quanton flight control
+0fdc  Micro Plus
+0fde  Oregon Scientific
+	ca01  WMRS200 weather station
+	ca05  CM160
+	ca08  WMR300 Professional Weather System
+0fe0  Osterhout Design Group
+	0100  Bluetooth Mouse
+	0101  Bluetooth IMU
+	0200  Bluetooth Keypad
+0fe2  Air Techniques
+0fe4  IN-Tech Electronics, Ltd
+0fe5  Greenconn (U.S.A.), Inc.
+0fe6  ICS Advent
+	8101  DM9601 Fast Ethernet Adapter
+	811e  Parallel Adapter
+	9700  DM9601 Fast Ethernet Adapter
+0fe9  DVICO
+	4020  TViX M-6500
+	9010  FusionRemote IR receiver
+	db00  FusionHDTV DVB-T (MT352+LgZ201) (uninitialized)
+	db01  FusionHDTV DVB-T (MT352+LgZ201) (initialized)
+	db10  FusionHDTV DVB-T (MT352+Thomson7579) (uninitialized)
+	db11  FusionHDTV DVB-T (MT352+Thomson7579) (initialized)
+	db78  FusionHDTV DVB-T Dual Digital 4 (ZL10353+xc2028/xc3028) (initialized)
+0fea  United Computer Accessories
+0feb  CRS Electronic Co., Ltd
+0fec  UMC Electronics Co., Ltd
+0fed  Access Co., Ltd
+0fee  Xsido Corp.
+0fef  MJ Research, Inc.
+0ff6  Core Valley Co., Ltd
+0ff7  CHI SHING Computer Accessories Co., Ltd
+0ffc  Clavia DMI AB
+	0021  Nord Stage 2
+	002a  Nord Piano 4
+0ffd  EarlySense
+	ff00  OEM
+0fff  Aopen, Inc.
+1000  Speed Tech Corp.
+	153b  TerraTec Electronic GmbH
+1001  Ritronics Components (S) Pte., Ltd
+1003  Sigma Corp.
+	0003  SD14
+	0100  SD9/SD10
+	8781  Dock UD-01
+1004  LG Electronics, Inc.
+	1fae  U8120 3G Cellphone
+	6000  Various Mobile Phones
+	6005  T5100
+	6018  GM360/GD510/GW520/KP501
+	618e  Ally/Optimus One/Vortex (debug mode)
+	618f  Ally/Optimus One
+	61c5  P880 / Charge only
+	61c6  Vortex (msc)
+	61cc  Optimus S
+	61da  G2 Android Phone [tethering mode]
+	61f1  Optimus Android Phone [LG Software mode]
+	61f9  Optimus (Various Models) MTP Mode
+	61fc  Optimus 3
+	61fe  Optimus Android Phone [USB tethering mode]
+	627f  G3 (VS985) Android Phone (MTP/Download mode)
+	6300  G2/Optimus Android Phone [Charge mode]
+	631c  LM-X420xxx/G2/Optimus Android Phone (charge mode)
+	631d  Optimus Android Phone (Camera/PTP Mode)
+	631e  LM-X420xxx/G2/Optimus Android Phone (PTP/camera mode)
+	631f  Optimus Android Phone (Charge Mode)
+	633a  Ultimate 2 Android Phone L41C
+	633e  LM-X420xxx/G2/G3 Android Phone (MTP/download mode)
+	6344  LM-X420xxx/G2 Android Phone (USB tethering mode)
+	6348  LM-X420xxx Android Phone (MIDI mode)
+	6356  Optimus Android Phone [Virtual CD mode]
+	6800  CDMA Modem
+	7000  LG LDP-7024D(LD)USB
+	91c8  P880 / USB tethering
+	a400  Renoir (KC910)
+1005  Apacer Technology, Inc.
+	1001  MP3 Player
+	1004  MP3 Player
+	1006  MP3 Player
+	b113  Handy Steno/AH123 / Handy Steno 2.0/HT203
+	b155  Disk Module
+	b223  CD-RW + 6in1 Card Reader Digital Storage / Converter
+1006  iRiver, Ltd.
+	3001  iHP-100
+	3002  iHP-120/140 MP3 Player
+	3003  H320/H340
+	3004  H340 (mtp)
+1009  Emuzed, Inc.
+	000e  eHome Infrared Receiver
+	0013  Angel MPEG Device
+	0015  Lumanate Wave PAL SECAM DVBT Device
+	0016  Lumanate Wave NTSC/ATSC Combo Device
+100a  AV Chaseway, Ltd
+	2402  MP3 Player
+	2404  MP3 Player
+	2405  MP3 Player
+	2406  MP3 Player
+	a0c0  MP3 Player
+100b  Chou Chin Industrial Co., Ltd
+100d  Netopia, Inc.
+	3342  Cayman 3352 DSL Modem
+	3382  3380 Series Network Interface
+	6072  DSL Modem
+	9031  Motorola 802.11n Dualband USB Wireless Adapter
+	9032  Motorola 802.11n 5G USB Wireless Adapter
+	cb01  Cayman 3341 Ethernet DSL Router
+1010  Fukuda Denshi Co., Ltd
+1011  Mobile Media Tech.
+	0001  AccFast Mp3
+1012  SDKM Fibres, Wires & Cables Berhad
+1013  TST-Touchless Sensor Technology AG
+1014  Densitron Technologies PLC
+1015  Softronics Pty., Ltd
+1016  Xiamen Hung's Enterprise Co., Ltd
+1017  Speedy Industrial Supplies, Pte., Ltd
+	9015  M625 [Vendor: DELUX]
+1019  Elitegroup Computer Systems (ECS)
+	0c55  Flash Reader, Desknote UCR-61S2B
+	0f38  Infrared Receiver
+1020  Labtec
+	0006  Wireless Keyboard
+	000a  Wireless Optical Mouse
+	0106  Wireless Optical Mouse/Keyboard
+1022  Shinko Shoji Co., Ltd
+1025  Hyper-Paltek
+	005e  USB DVB-T device
+	005f  USB DVB-T device
+	0300  MP3 Player
+	0350  MP3 Player
+1026  Newly Corp.
+1027  Time Domain
+1028  Inovys Corp.
+1029  Atlantic Coast Telesys
+102a  Ramos Technology Co., Ltd
+102b  Infotronic America, Inc.
+102c  Etoms Electronics Corp.
+	6151  Q-Cam Sangha CIF
+	6251  Q-Cam VGA
+	ff0c  Joytech Wireless Advanced Controller
+102d  Winic Corp.
+1031  Comax Technology, Inc.
+1032  C-One Technology Corp.
+1033  Nucam Corp.
+	0068  3,5'' HDD case MD-231
+1038  SteelSeries ApS
+	0100  Ideazon Zboard
+	1260  Arctis 7 wireless adapter
+	1361  Ideazon Sensei
+	1410  SRW-S1 [Simraceway Steering Wheel]
+	1720  Mouse
+1039  devolo AG
+	0824  1866 802.11bg [Texas Instruments TNETW1450]
+	2140  dsl+ 1100 duo
+103a  PSA
+	f000  Actia Evo XS
+103d  Stanton
+	0100  ScratchAmp
+	0101  ScratchAmp
+1043  iCreate Technologies Corp.
+	160f  Wireless Network Adapter
+	4901  AV-836 Video Capture Device
+	8006  Flash Disk 32-256 MB
+	8012  Flash Disk 256 MB
+1044  Chu Yuen Enterprise Co., Ltd
+	7001  Gigabyte U7000 DVB-T tuner
+	7002  Gigabyte U8000 DVB-T tuner
+	7004  Gigabyte U7100 DVB-T tuner
+	7005  Gigabyte U7200 DVB-T tuner [AF9035]
+	7006  Gigabyte U6000 DVB-T tuner [em2863]
+	8001  GN-54G
+	8002  GN-BR402W
+	8003  GN-WLBM101
+	8004  GN-WLBZ101 802.11b Adapter
+	8005  GN-WLBZ201 802.11b Adapter
+	8006  GN-WBZB-M 802.11b Adapter
+	8007  GN-WBKG
+	8008  GN-WB01GS
+	800a  GN-WI05GS
+	800b  GN-WB30N 802.11n WLAN Card
+	800c  GN-WB31N 802.11n USB WLAN Card
+	800d  GN-WB32L 802.11n USB WLAN Card
+1046  Winbond Electronics Corp. [hex]
+	6694  Generic W6694 USB
+	8901  Bluetooth Device
+	9967  W9967CF/W9968CF Webcam IC
+1048  Targus Group International
+	2010  4-Port hub
+104b  Mylex / Buslogic
+104c  AMCO TEC International, Inc.
+104d  Newport Corporation
+	1003  Model-52 LED Light Source Power Supply and Driver
+	3001  ESP301 3 Axis Motion Controller
+104f  WB Electronics
+	0001  Infinity Phoenix
+	0002  Smartmouse
+	0003  FunProgrammer
+	0004  Infinity Unlimited
+	0006  Infinity Smart
+	0007  Infinity Smart module
+	0008  Infinity CryptoKey
+	0009  RE-BL PlayStation 3 IR-to-Bluetooth converter
+1050  Yubico.com
+	0010  Yubikey (v1 or v2)
+	0110  Yubikey NEO(-N) OTP
+	0111  Yubikey NEO(-N) OTP+CCID
+	0112  Yubikey NEO(-N) CCID
+	0113  Yubikey NEO(-N) U2F
+	0114  Yubikey NEO(-N) OTP+U2F
+	0115  Yubikey NEO(-N) U2F+CCID
+	0116  Yubikey NEO(-N) OTP+U2F+CCID
+	0120  Yubikey Touch U2F Security Key
+	0200  Gnubby U2F
+	0211  Gnubby
+	0401  Yubikey 4/5 OTP
+	0402  Yubikey 4/5 U2F
+	0403  Yubikey 4/5 OTP+U2F
+	0404  Yubikey 4/5 CCID
+	0405  Yubikey 4/5 OTP+CCID
+	0406  Yubikey 4/5 U2F+CCID
+	0407  Yubikey 4/5 OTP+U2F+CCID
+	0410  Yubikey plus OTP+U2F
+1053  Immanuel Electronics Co., Ltd
+1054  BMS International Beheer N.V.
+	5004  DSL 7420 Loader
+	5005  DSL 7420 LAN Modem
+1055  Complex Micro Interconnection Co., Ltd
+1056  Hsin Chen Ent Co., Ltd
+1057  ON Semiconductor
+1058  Western Digital Technologies, Inc.
+	0200  FireWire USB Combo
+	0400  External HDD
+	0500  hub
+	0701  WD Passport (WDXMS)
+	0702  WD Passport (WDXMS)
+	0704  My Passport Essential (WDME)
+	0705  My Passport Elite (WDML)
+	070a  My Passport Essential (WDBAAA), My Passport for Mac (WDBAAB), My Passport Essential SE (WDBABM), My Passport SE for Mac (WDBABW)
+	070b  My Passport Elite (WDBAAC)
+	070c  My Passport Studio (WDBAAE)
+	071a  My Passport Essential (WDBAAA)
+	071d  My Passport Studio (WDBALG)
+	0730  My Passport Essential (WDBACY)
+	0732  My Passport Essential SE (WDBGYS)
+	0740  My Passport Essential (WDBACY)
+	0741  My Passport Ultra
+	0742  My Passport Essential SE (WDBGYS)
+	0748  My Passport (WDBKXH, WDBY8L)
+	07a8  My Passport (WDBBEP), My Passport for Mac (WDBLUZ)
+	07ae  My Passport Edge for Mac (WDBJBH)
+	07ba  PiDrive (WDLB)
+	0810  My Passport Ultra (WDBZFP)
+	0816  My Passport Air (WDBBLW)
+	0820  My Passport Ultra (WDBMWV, WDBZFP)
+	0822  My Passport Ultra (WDBBUZ)
+	0824  My Passport Slim (WDBPDZ)
+	0830  My Passport Ultra (WDBZFP)
+	0837  My Passport Ultra (WDBBKD)
+	0900  MyBook Essential External HDD
+	0901  My Book Essential Edition (Green Ring) (WDG1U)
+	0902  My Book Pro Edition (WDG1T)
+	0903  My Book Premium Edition
+	0905  My Book Pro Edition II (WD10000C033-001)
+	0910  My Book Essential Edition (Green Ring) (WDG1U)
+	1001  Elements Desktop (WDE1U)
+	1003  WD Elements Desktop (WDE1UBK)
+	1010  Elements Portable (WDBAAR)
+	1021  Elements Desktop (WDBAAU)
+	1023  Elements SE Portable (WDBABV)
+	1042  Elements SE Portable (WDBPCK)
+	1048  Elements Portable (WDBU6Y)
+	1078  Elements Portable (WDBUZG)
+	107c  Elements Desktop (WDBWLG)
+	10a2  Elements SE Portable (WDBPCK)
+	10a8  Elements Portable (WDBUZG)
+	10b8  Elements Portable (WDBU6Y, WDBUZG)
+	1100  My Book Essential Edition 2.0 (WDH1U)
+	1102  My Book Home Edition (WDH1CS)
+	1103  My Book Studio
+	1104  My Book Mirror Edition (WDH2U)
+	1105  My Book Studio II
+	1110  My Book Essential (WDBAAF), My Book for Mac (WDBAAG)
+	1111  My Book Elite (WDBAAH)
+	1112  My Book Studio (WDBAAJ), My Book Studio LX (WDBACH)
+	1123  My Book 3.0 (WDBABP)
+	1130  My Book Essential (WDBACW)
+	1140  My Book Essential (WDBACW)
+	1170  My Book Essential 3TB (WDBACW0030HBK)
+	1230  My Book (WDBFJK)
+	1235  My Book (WDBFJK0040HBK)
+	2599  My Passport Ultra (WD40NMZW)
+	259d  My Passport Ultra (WDBBKD)
+	259f  My Passport Ultra (WD10JMVW)
+	25a1  Elements / My Passport
+	25a2  Elements 25A2
+	25a3  Elements Desktop (WDBWLG)
+	25da  My Book (WDBFJK)
+	25e1  My Passport (WD20NMVW)
+	25e2  My Passport (WD40NMZW)
+	25ee  My Book 25EE
+	25f3  My Passport SSD (WDBK3E)
+	25fa  easystore Portable 5TB (WDBKUZ0050)
+	25fb  easystore Desktop (WDBCKA)
+	2603  My Passport Game Storage for PS4 4TB (WDBZGE0040)
+	2624  easystore Portable 5TB (WDBKUZ0050)
+	2626  My Passport (WDBPKJ)
+	30a0  SATA adapter cable
+1059  Giesecke & Devrient GmbH
+	000b  StarSign Bio Token 3.0
+105b  Foxconn International, Inc.
+	e065  BCM43142A0 Bluetooth module
+105c  Hong Ji Electric Wire & Cable (Dongguan) Co., Ltd
+105d  Delkin Devices, Inc.
+105e  Valence Semiconductor Design, Ltd
+105f  Chin Shong Enterprise Co., Ltd
+1060  Easthome Industrial Co., Ltd
+1063  Motorola Electronics Taiwan, Ltd [hex]
+	1555  MC141555 Hub
+	4100  SB4100 USB Cable Modem
+1065  CCYU Technology
+	0020  USB-DVR2 Dev Board
+	2136  EasyDisk ED1064
+1068  Micropi Elettronica
+	0001  CPUSB - V 1.8 - software-rights management key
+106a  Loyal Legend, Ltd
+106c  Curitel Communications, Inc.
+	1101  CDMA 2000 1xRTT USB modem (HX-550C)
+	1102  Packet Service
+	1103  Packet Service Diagnostic Serial Port (WDM)
+	1104  Packet Service Diagnostic Serial Port (WDM)
+	1105  Composite Device
+	1106  Packet Service Diagnostic Serial Port (WDM)
+	1301  Composite Device
+	1302  Packet Service Diagnostic Serial Port (WDM)
+	1303  Packet Service
+	1304  Packet Service
+	1401  Composite Device
+	1402  Packet Service
+	1403  Packet Service Diagnostic Serial Port (WDM)
+	1501  Packet Service
+	1502  Packet Service Diagnostic Serial Port (WDM)
+	1503  Packet Service
+	1601  Packet Service
+	1602  Packet Service Diagnostic Serial Port (WDM)
+	1603  Packet Service
+	2101  AudioVox 8900 Cell Phone
+	2102  Packet Service
+	2103  Packet Service Diagnostic Serial Port (WDM)
+	2301  Packet Service
+	2302  Packet Service Diagnostic Serial Port (WDM)
+	2303  Packet Service
+	2401  Packet Service Diagnostic Serial Port (WDM)
+	2402  Packet Service
+	2403  Packet Service Diagnostic Serial Port (WDM)
+	2501  Packet Service
+	2502  Packet Service Diagnostic Serial Port (WDM)
+	2503  Packet Service
+	2601  Packet Service
+	2602  Packet Service Diagnostic Serial Port (WDM)
+	2603  Packet Service
+	3701  Broadband Wireless modem
+	3702  Pantech PX-500
+	3714  PANTECH USB MODEM [UM175]
+	3716  UMW190 Modem
+	3721  Option Beemo (GI0801) LTE surfstick
+	3b14  Option Beemo (GI0801) LTE surfstick
+	3eb4  Packet Service Diagnostic Serial Port (WDM)
+	4101  Packet Service Diagnostic Serial Port (WDM)
+	4102  Packet Service
+	4301  Composite Device
+	4302  Packet Service Diagnostic Serial Port (WDM)
+	4401  Composite Device
+	4402  Packet Service
+	4501  Packet Service
+	4502  Packet Service Diagnostic Serial Port (WDM)
+	4601  Composite Device
+	4602  Packet Service Diagnostic Serial Port (WDM)
+	5101  Packet Service
+	5102  Packet Service Diagnostic Serial Port (WDM)
+	5301  Packet Service Diagnostic Serial Port (WDM)
+	5302  Packet Service
+	5401  Packet Service
+	5402  Packet Service Diagnostic Serial Port (WDM)
+	5501  Packet Service Diagnostic Serial Port (WDM)
+	5502  Packet Service
+	5601  Packet Service Diagnostic Serial Port (WDM)
+	5602  Packet Service
+	7101  Composite Device
+	7102  Packet Service
+	a000  Packet Service
+	a001  Packet Service Diagnostic Serial Port (WDM)
+	c100  Packet Service
+	c200  Packet Service
+	c500  Packet Service Diagnostic Serial Port (WDM)
+	e200  Packet Service
+106d  San Chieh Manufacturing, Ltd
+106e  ConectL
+106f  Money Controls
+	0009  CT10x Coin Transaction
+	000a  CR10x Coin Recycler
+	000c  Xchange
+1076  GCT Semiconductor, Inc.
+	0031  Bluetooth Device
+	0032  Bluetooth Device
+	8002  LU150 LTE Modem [Yota LU150]
+107b  Gateway, Inc.
+	3009  eHome Infrared Transceiver
+	55b2  WBU-110 802.11b Wireless Adapter [Intersil PRISM 3]
+	55f2  WGU-210 802.11g Adapter [Intersil ISL3886]
+107d  Arlec Australia, Ltd
+107e  Midoriya Electric Co., Ltd
+107f  KidzMouse, Inc.
+1082  Shin-Etsukaken Co., Ltd
+1083  Canon Electronics, Inc.
+	160c  CR-55
+	160f  DR-1210C
+	1614  DR-4010C
+	1617  DR-2510C
+	1618  DR-X10C
+	161a  CR-25
+	161b  DR-2010C Scanner
+	161d  DR-3010C
+	1620  DR-7090C
+	1622  DR-9050C
+	1623  DR-7550C
+	1624  DR-6050C
+	1626  DR-6010C
+	162c  P-150 Scanner
+	1638  DR-6030C
+	1639  CR-135i
+	163e  DR-M160
+	163f  DR-M140
+	1640  DR-C125
+	1641  DR-P215
+	1648  FSU-201
+	164a  DR-C130
+	164b  DR-P208
+	164f  DR-G1130
+	1650  DR-G1100
+	1651  DR-C120
+	1654  DR-F120
+	1657  DR-M1060
+	1658  DR-C225
+	1659  DR-P215II
+	165d  DR-P208II
+1084  Pantech Co., Ltd
+108a  Chloride Power Protection
+108b  Grand-tek Technology Co., Ltd
+	0005  HID Keyboard/Mouse PS/2 Translator
+108c  Robert Bosch GmbH
+	017e  GTC 400 C
+108e  Lotes Co., Ltd.
+1091  Numerik Jena
+	8101  Absoflex
+1099  Surface Optics Corp.
+109a  DATASOFT Systems GmbH
+109b  Hisense
+	9109  CROSSCALL Trekker-M1 Core (MTP-Mode)
+	9118  Medion P4013 Mobile
+	9119  CROSSCALL Trekker-M1 Core (PTP-Mode)
+	f009  CROSSCALL Trekker-M1 Core (CD-ROM-Mode)
+109f  eSOL Co., Ltd
+	3163  Trigem Mobile SmartDisplay84
+	3164  Trigem Mobile SmartDisplay121
+10a0  Hirotech, Inc.
+10a3  Mitsubishi Materials Corp.
+10a9  SK Teletech Co., Ltd
+	1102  Sky Love Actually IM-U460K
+	1104  Sky Vega IM-A650S
+	1105  VEGA Android composite
+	1106  VEGA Android composite
+	1107  VEGA Android composite
+	1108  VEGA Android composite
+	1109  VEGA Android composite
+	6021  SIRIUS alpha
+	6031  Pantech Android composite
+	6032  Pantech Android composite
+	6033  Pantech Android composite
+	6034  Pantech Android composite
+	6035  Pantech Android composite
+	6036  Pantech Android composite
+	6037  Pantech Android composite
+	6050  Pantech Android composite
+	6051  Pantech Android composite
+	6052  Pantech Android composite
+	6053  Pantech Android composite
+	6054  Pantech Android composite
+	6055  Pantech Android composite
+	6056  Pantech Android composite
+	6057  Pantech Android composite
+	6058  Pantech Android composite
+	6059  Pantech Android composite
+	6080  MHS291LVW LTE Modem [Verizon Jetpack 4G LTE Mobile Hotspot MHS291L] (Zero CD Mode)
+	6085  MHS291LVW LTE Modem [Verizon Jetpack 4G LTE Mobile Hotspot MHS291L] (Modem Mode)
+	7031  Pantech Android composite
+	7032  Pantech Android composite
+	7033  Pantech Android composite
+	7034  Pantech Android composite
+	7035  Pantech Android composite
+	7036  Pantech Android composite
+	7037  Pantech Android composite
+10aa  Cables To Go
+10ab  USI Co., Ltd
+	1002  Bluetooth Device
+	1003  BC02-EXT in DFU
+	1005  Bluetooth Adptr
+	1006  BC04-EXT in DFU
+	10c5  Sony-Ericsson / Samsung DataCable
+10ac  Honeywell, Inc.
+10ae  Princeton Technology Corp.
+10af  Liebert Corp.
+	0000  UPS
+	0001  PowerSure PSA UPS
+	0002  PowerSure PST UPS
+	0003  PowerSure PSP UPS
+	0004  PowerSure PSI UPS
+	0005  UPStation GXT 2U UPS
+	0006  UPStation GXT UPS
+	0007  Nfinity Power Systems UPS
+	0008  PowerSure Interactive UPS
+10b5  Comodo (PLX?)
+	9060  Test Board
+10b8  DiBcom
+	0bb8  DVB-T reference design (MOD300) (cold)
+	0bb9  DVB-T reference design (MOD300) (warm)
+	0bc6  DVB-T reference design (MOD3000P) (cold)
+	0bc7  DVB-T reference design (MOD3000P) (warm)
+10bb  TM Technology, Inc.
+10bc  Dinging Technology Co., Ltd
+10bd  TMT Technology, Inc.
+	1427  Ethernet
+10bf  SmartHome
+	0001  SmartHome PowerLinc
+10c3  Universal Laser Systems, Inc.
+	00a4  ULS PLS Series Laser Engraver Firmware Loader
+	00a5  ULS Print Support
+10c4  Silicon Labs
+	0002  F32x USBXpress Device
+	0003  CommandIR
+	800a  SPORTident
+	800b  AES
+	8030  K4JRG Ham Radio devices
+	8044  USB Debug Adapter
+	804e  Software Bisque Paramount ME
+	80a9  CP210x to UART Bridge Controller
+	80c4  Infrared Thermometer Adapter
+	80ca  ATM2400 Sensor Device
+	813f  tams EasyControl
+	8149  West Mountain Radio Computerized Battery Analyzer
+	814a  West Mountain Radio RIGblaster P&P
+	814b  West Mountain Radio RIGtalk
+	818a  Silicon Labs FM Radio Reference Design
+	81e8  Zephyr BioHarness
+	834b  Infrared Online Sensor Adapter
+	834e  Infrared Sensor Adapter
+	8460  Sangoma Wanpipe VoiceTime
+	8461  Sangoma U100
+	8470  Juniper Networks BX Series System Console
+	8477  Balluff RFID Reader
+	8496  SiLabs Cypress FW downloader
+	8497  SiLabs Cypress EVB
+	84fb  Infrared Blackbody Adapter
+	8508  RS485 Adapter
+	8605  dilitronics ESoLUX solar lighting controller
+	8660  Netronics CANdoISO
+	86bc  C8051F34x AudioDelay [AD-340]
+	8789  C8051F34x Extender & EDID MGR [EMX-DVI]
+	87be  C8051F34x HDMI Audio Extractor [EMX-HD-AUD]
+	8863  C8051F34x Bootloader
+	8897  C8051F38x HDMI Splitter [UHBX]
+	88c9  AES HID device
+	8918  C8051F38x HDMI Audio Extractor [VSA-HA-DP]
+	8973  C8051F38x HDMI Extender [UHBX-8X]
+	89c6  SPORTident HID device
+	89e1  C8051F38x HDMI Extender [UHBX-SW3-WP]
+	89fb  Qivicon ZigBee Stick
+	8a3c  C8051F38x HDBaseT Receiver [UHBX-R-XT]
+	8a6c  C8051F38x 4K HDMI Audio Extractor [EMX-AMP]
+	8acb  C8051F38x HDBaseT Wall Plate Receiver with IR, RS-232, and PoH [UHBX-R-WP]
+	8af8  C8051F38x 4K HDMI Audio Extractor w/Audio Amplifier, HDBT Input, Line Audio Input RS-232 Ports and IP Control [VSA-X21]
+	8b8c  C8051F38x 4K HDMI Audio Extractor w/Audio Amplifier, HDBT Input, Line Audio Input RS-232 Ports and IP Control [SC-3H]
+	8db5  C8051F38x CATx HDMI Receiver with USB [EX-HDU-R]
+	8db6  C8051F38x CATx HDMI Receiver
+	ea60  CP210x UART Bridge
+	ea61  CP210x UART Bridge
+	ea63  CP210x UART Bridge
+	ea70  CP2105 Dual UART Bridge
+	ea71  CP2108 Quad UART Bridge
+	ea80  CP2110 HID UART Bridge
+	ea90  CP2112 HID I2C Bridge
+	ea91  CP2112 HID SMBus/I2C Bridge for CP2614 Evaluation Kit
+	ea93  CP2112 HID SMBus/I2C Bridge for CP2615 Evaluation Kit
+	eab0  CP2114 I2S Audio Bridge
+	eac0  CP2614 MFi Accessory Digital Audio Bridge
+	eac1  CP2615 I2S Audio Bridge
+	eac9  EFM8UB1 Bootloader
+	eaca  EFM8UB2 Bootloader
+	eacb  EFM8UB3 Bootloader
+10c5  Sanei Electric, Inc.
+	819a  FM Radio
+10c6  Intec, Inc.
+10cb  Eratech
+10cc  GBM Connector Co., Ltd
+	1101  MP3 Player
+10cd  Kycon, Inc.
+10ce  Silicon Labs
+	0007  Shinko/Sinfonia CHC-S1245
+	000e  Shinko/Sinfonia CHC-S2145
+	0019  Shinko/Sinfonia CHC-S6145
+	001d  Shinko/Sinfonia CHC-S6245
+	001e  Ciaat Brava 21
+	0039  Sinfonia CHC-S2245
+	10ce  Sinfonia CHC-S2245
+	ea6a  MobiData EDGE USB Modem
+10cf  Velleman Components, Inc.
+	2011  R-Engine MPEG2 encoder/decoder
+	5500  8055 Experiment Interface Board (address=0)
+	5501  8055 Experiment Interface Board (address=1)
+	5502  8055 Experiment Interface Board (address=2)
+	5503  8055 Experiment Interface Board (address=3)
+10d1  Hottinger Baldwin Measurement
+	0101  USB-Module for Spider8, CP32
+	0202  CP22 - Communication Processor
+	0301  CP42 - Communication Processor
+10d2  RayComposer - R. Adams
+	5243  RayComposer
+10d4  Man Boon Manufactory, Ltd
+10d5  Uni Class Technology Co., Ltd
+	0004  PS/2 Converter
+	5552  KVM Human Interface Composite Device (Keyboard/Mouse ports)
+	55a2  2Port KVMSwitcher
+	5a08  Dual Bay Docking Station
+10d6  Actions Semiconductor Co., Ltd
+	0c02  BioniQ 1001 Tablet
+	1000  MP3 Player
+	1100  MPMan MP-Ki 128 MP3 Player/Recorder
+	1101  D-Wave 2GB MP4 Player / AK1025 MP3/MP4 Player
+	2200  Acer MP-120 MP3 player
+	8888  ADFU Device
+	ff51  ADFU Device
+	ff61  MP4 Player
+	ff66  Craig 2GB MP3/Video Player
+10de  Authenex, Inc.
+10df  In-Win Development, Inc.
+	0500  iAPP CR-e500 Card reader
+10e0  Post-Op Video, Inc.
+10e1  CablePlus, Ltd
+10e2  Nada Electronics, Ltd
+10ec  Vast Technologies, Inc.
+10f0  Nexio Co., Ltd
+	2002  iNexio Touchscreen controller
+10f1  Importek
+	1a08  Internal Webcam
+	1a1e  Laptop Integrated Webcam 1.3M
+	1a2a  Laptop Integrated Webcam
+	1a2e  HP Truevision HD Integrated Webcam
+10f5  Turtle Beach
+	0200  Audio Advantage Roadie
+	0231  Ear Force P11 Headset
+	10f5  EarForce PX21 Gaming Headset
+10f8  Cesys GmbH
+	3201  CeboLC
+	3202  CeboStick
+	3203  CeboMSA64
+	3204  CeboDFN
+	3205  PSAA2304W_CASC
+	c401  USBV4F unconfigured
+	c402  EFM01 unconfigured
+	c403  MISS2 unconfigured
+	c404  CID unconfigured
+	c405  USBS6 unconfigured
+	c406  OP_MISS2 unconfigured
+	c407  NanoUsb uncofigured
+	c481  USBV4F
+	c482  EFM01
+	c483  MISS2
+	c484  CID
+	c485  USBS6
+	c486  OP_MISS2
+	c487  NanoUsb
+	c501  EFM02 unconfigured
+	c502  EFM02/B unconfigured
+	c503  EFM03 unconfigured
+	c581  EFM02
+	c582  EFM02/B
+	c583  EFM03
+10fb  Pictos Technologies, Inc.
+10fd  Anubis Electronics, Ltd
+	7e50  FlyCam Usb 100
+	804d  Typhoon Webshot II Webcam [zc0301]
+	8050  FlyCAM-USB 300 XP2
+	de00  WinFast WalkieTV WDM Capture Driver.
+10fe  Thrane & Thrane
+	000c  TT-3750 BGAN-XL Radio Module
+1100  VirTouch, Ltd
+	0001  VTPlayer VTP-1 Braille Mouse
+1101  EasyPass Industrial Co., Ltd
+	0001  FSK Electronics Super GSM Reader
+1108  Brightcom Technologies, Ltd
+110a  Moxa Technologies Co., Ltd.
+	1110  UPort 1110
+	1150  UPort 1150 1-Port RS-232/422/485
+	1250  UPort 1250 2-Port RS-232/422/485
+	1251  UPort 1250I 2-Port RS-232/422/485 with Isolation
+	1410  UPort 1410 4-Port RS-232
+	1450  UPort 1450 4-Port RS-232/422/485
+	1451  UPort 1450I 4-Port RS-232/422/485 with Isolation
+	1613  UPort 1610-16 16-Port RS-232
+	1618  UPort 1610-8 8-Port RS-232
+	1653  UPort 1650-16 16-Port RS-232/422/485
+	1658  UPort 1650-8 8-Port RS-232/422/485
+1110  Analog Devices Canada, Ltd (Allied Telesyn)
+	5c01  Huawei MT-882 Remote NDIS Network Device
+	6489  ADSL ETH/USB RTR
+	9000  ADSL LAN Adapter
+	9001  ADSL Loader
+	900f  AT-AR215 DSL Modem
+	9010  AT-AR215 DSL Modem
+	9021  ADSL WAN Adapter
+	9022  ADSL Loader
+	9023  ADSL WAN Adapter
+	9024  ADSL Loader
+	9031  ADSL LAN Adapter
+	9032  ADSL Loader
+1111  Pandora International Ltd.
+	8888  Evolution Device
+1112  YM ELECTRIC CO., Ltd
+1113  Medion AG
+	a0a2  Active Sync device
+111e  VSO Electric Co., Ltd
+112a  RedRat
+	0001  RedRat3 IR Transceiver
+	0005  RedRat3II IR Transceiver
+112e  Master Hill Electric Wire and Cable Co., Ltd
+112f  Cellon International, Inc.
+1130  Tenx Technology, Inc.
+	0001  BlyncLight
+	0002  iBuddy
+	0004  iBuddy Twins
+	0202  Rocket Launcher
+	6604  MCE IR-Receiver
+	6606  U+P Mouse
+	660c  Foot Pedal/Thermometer
+	6626  Key
+	6806  Keychain photo frame
+	c301  Digital Photo viewer [Wallet Pix]
+	f211  TP6911 Audio Headset
+1131  Integrated System Solution Corp.
+	1001  KY-BT100 Bluetooth Adapter
+	1002  Bluetooth Device
+	1003  Bluetooth Device
+	1004  Bluetooth Device
+1132  Toshiba Corp., Digital Media Equipment [hex]
+	4331  PDR-M4/M5/M70 Digital Camera
+	4332  PDR-M60 Digital Camera
+	4333  PDR-M2300/PDR-M700
+	4334  PDR-M65
+	4335  PDR-M61
+	4337  PDR-M11
+	4338  PDR-M25
+1136  CTS Electronincs
+	3131  CTS LS515
+113c  Arin Tech Co., Ltd
+113d  Mapower Electronics Co., Ltd
+113f  Integrated Biometrics, LLC
+	1020  Watson Two-Finger Roll Scanner
+	1100  Columbo Single-Finger Scanner
+1141  V One Multimedia, Pte., Ltd
+1142  CyberScan Technologies, Inc.
+	0709  Cyberview High Speed Scanner
+1145  Japan Radio Company
+	0001  AirH PHONE AH-J3001V/J3002V
+1146  Shimane SANYO Electric Co., Ltd.
+1147  Ever Great Electric Wire and Cable Co., Ltd
+114b  Sphairon Access Systems GmbH
+	0110  Turbolink UB801R WLAN Adapter
+	0150  Turbolink UB801RE Wireless 802.11g 54Mbps Network Adapter [RTL8187]
+114c  Tinius Olsen Testing Machine Co., Inc.
+114d  Alpha Imaging Technology Corp.
+114f  Wavecom
+	1234  Fastrack Xtend FXT001 Modem
+115b  Salix Technology Co., Ltd.
+1162  Secugen Corp.
+1163  DeLorme Publishing, Inc.
+	0100  Earthmate GPS (orig)
+	0200  Earthmate GPS (LT-20, LT-40)
+	2020  Earthmate GPS (PN-40)
+1164  YUAN High-Tech Development Co., Ltd
+	0300  ELSAVISION 460D
+	0601  Analog TV Tuner
+	0900  TigerBird BMP837 USB2.0 WDM Encoder
+	0bc7  Digital TV Tuner
+	521b  MC521A mini Card ATSC Tuner
+	6601  Digital TV Tuner Card [RTL2832U]
+1165  Telson Electronics Co., Ltd
+1166  Bantam Interactive Technologies
+1167  Salient Systems Corp.
+1168  BizConn International Corp.
+116e  Gigastorage Corp.
+116f  Silicon 10 Technology Corp.
+	0005  Flash Card Reader
+	c108  Flash Card Reader
+	c109  Flash Card Reader
+1175  Shengyih Steel Mold Co., Ltd
+117d  Santa Electronic, Inc.
+117e  JNC, Inc.
+1182  Venture Corp., Ltd
+1183  Compaq Computer Corp. [hex] (Digital Dream ??)
+	0001  DigitalDream l'espion XS
+	19c7  ISDN TA
+	4008  56k FaxModem
+	504a  PJB-100 Personal Jukebox
+1184  Kyocera Elco Corp.
+1188  Bloomberg L.P.
+1189  Acer Communications & Multimedia
+	0893  EP-1427X-2 Ethernet Adapter [Acer]
+118f  You Yang Technology Co., Ltd
+1190  Tripace
+1191  Loyalty Founder Enterprise Co., Ltd
+1196  Yankee Robotics, LLC
+	0010  Trifid Camera without code
+	0011  Trifid Camera
+1197  Technoimagia Co., Ltd
+1198  StarShine Technology Corp.
+1199  Sierra Wireless, Inc.
+	0019  AC595U
+	0021  AC597E
+	0024  MC5727 CDMA modem
+	0110  Composite Device
+	0112  CDMA 1xEVDO PC Card, AirCard 580
+	0120  AC595U
+	0218  MC5720 Wireless Modem
+	6467  MP Series Network Adapter
+	6468  MP Series Network Adapter
+	6469  MP Series Network Adapter
+	6802  MC8755 Device
+	6803  MC8765 Device
+	6804  MC8755 Device
+	6805  MC8765 Device
+	6812  MC8775 Device
+	6820  AC875 Device
+	6832  MC8780 Device
+	6833  MC8781 Device
+	683a  MC8785 Device
+	683c  Mobile Broadband 3G/UMTS (MC8790 Device)
+	6850  AirCard 880 Device
+	6851  AirCard 881 Device
+	6852  AirCard 880E Device
+	6853  AirCard 881E Device
+	6854  AirCard 885 Device
+	6856  ATT "USB Connect 881"
+	6870  MC8780 Device
+	6871  MC8781 Device
+	6893  MC8777 Device
+	68a3  MC8700 Modem
+	68aa  4G LTE adapter
+	9000  Gobi 2000 Wireless Modem (QDL mode)
+	9001  Gobi 2000 Wireless Modem
+	9002  Gobi 2000 Wireless Modem
+	9003  Gobi 2000 Wireless Modem
+	9004  Gobi 2000 Wireless Modem
+	9005  Gobi 2000 Wireless Modem
+	9006  Gobi 2000 Wireless Modem
+	9007  Gobi 2000 Wireless Modem
+	9008  Gobi 2000 Wireless Modem
+	9009  Gobi 2000 Wireless Modem
+	900a  Gobi 2000 Wireless Modem
+	9011  MC8305 Modem
+	9013  Sierra Wireless Gobi 3000 Modem device (MC8355)
+	9041  EM7305 Modem
+	9055  Gobi 9x15 Multimode 3G/4G LTE Modem (NAT mode)
+	9057  Gobi 9x15 Multimode 3G/4G LTE Modem (IP passthrough mode)
+	9071  AirPrime MC7455 3G/4G LTE Modem
+	9079  EM7455
+119a  ZHAN QI Technology Co., Ltd
+119b  ruwido austria GmbH
+	0400  Infrared Keyboard V2.01
+11a0  Chipcon AS
+	eb11  CC2400EB 2.0 ZigBee Sniffer
+11a3  Technovas Co., Ltd
+	8031  MP3 Player
+	8032  MP3 Player
+11aa  GlobalMedia Group, LLC
+	1518  iREZ K2
+11ab  Exito Electronics Co., Ltd
+11ac  Nike
+	6565  FuelBand
+11b0  ATECH FLASH TECHNOLOGY
+	6208  PRO-28U
+	6298  Kingston SNA-DC/U
+11be  R&D International NV
+	f0a0  Martin Maxxyz DMX
+11c0  Betop
+	5506  Gamepad
+11c5  Inmax
+	0521  IMT-0521 Smartcard Reader
+11c9  Nacon
+	55f0  GC-100XF
+11ca  VeriFone Inc
+	0201  MX870/MX880
+	0207  PIN Pad VX 810
+	0220  PIN Pad VX 805
+11db  Topfield Co., Ltd.
+	1000  PVR
+	1100  PVR
+11e6  K.I. Technology Co. Ltd.
+11f5  Siemens AG
+	0001  SX1
+	0003  Mobile phone USB cable
+	0004  X75
+	0005  SXG75/EF81
+	0008  UMTS/HSDPA Data Card
+	0101  RCU Connect
+11f6  Prolific
+	2001  Willcom WSIM
+11f7  Alcatel (?)
+	02df  Serial cable (v2) for TD-10 Mobile Phone
+1203  TSC Auto ID Technology Co., Ltd
+	0140  TTP-245C
+1209  Generic
+	0001  pid.codes Test PID
+	0002  pid.codes Test PID
+	0003  pid.codes Test PID
+	0004  pid.codes Test PID
+	0005  pid.codes Test PID
+	0006  pid.codes Test PID
+	0007  pid.codes Test PID
+	0008  pid.codes Test PID
+	0009  pid.codes Test PID
+	000a  pid.codes Test PID
+	000b  pid.codes Test PID
+	000c  pid.codes Test PID
+	000d  pid.codes Test PID
+	000e  pid.codes Test PID
+	000f  pid.codes Test PID
+	0010  pid.codes Test PID
+	01c0  Input Club Kiibohd Device
+	01cb  Input Club Kiibohd Device Bootloader
+	0256  Schwalm & Tate LLC pISO Raspberry Pi Hat
+	053a  Hackerspace San Salvador HSSV SAMR21-Mote
+	0cbd  Andrzej Szombierski kuku.eu.org keyboard
+	0d32  ODrive Robotics ODrive v3
+	1001  InterBiometrics Hub
+	1002  InterBiometrics Relais
+	1003  InterBiometrics IBSecureCam-P
+	1004  InterBiometrics IBSecureCam-O
+	1005  InterBiometrics IBSecureCam-N
+	1006  InterBiometrics Mini IO-Board
+	1007  e-radionica.com Croduino SAMD
+	1986  dgrubb Jaguar Tap
+	1ab5  Arachnid Labs Tsunami
+	1ab6  Arachnid Labs Tsunami Bootloader
+	2000  Zygmunt Krynicki Lantern Brightness Sensor
+	2001  OSHEC Pi-pilot opensource and openhardware autopilot system
+	2002  Peter Lawrence PIC16F1-USB-DFU-Bootloader
+	2003  Peter Lawrence SAMDx1-USB-DFU-Bootloader
+	2004  GCBASIC Serial CDC Stack
+	2005  GCBASIC OakTree Stack
+	2006  GCBASIC Simulation Stack
+	2016  Cupkee
+	2017  Benjamin Shockley Mini SAM
+	2020  Captain Credible Gate Crystal
+	2048  Housedillon.com MRF49XA Transceiver
+	2100  TinyFPGA B1 and B2 Boards
+	2101  TinyFPGA A-Series Programmer
+	2200  Dygma Shortcut Bootloader
+	2201  Dygma Shortcut Keyboard
+	2222  LabConnect Signalgenerator
+	2300  Keyboardio Model 01 Bootloader
+	2301  Keyboardio Model 01
+	2323  bytewerk.org candleLight
+	2327  K.T.E.C. Bootloader Device
+	2328  K.T.E.C. Keyboard Device
+	2333  Kai Ryu Kimera
+	2334  Kai Ryu Staryu
+	2335  Portwell Sense8
+	2336  Portwell Sense8
+	2337  /Dev /Net
+	2342  Andreas Bogk Big Red Button
+	2345  VV-Soft Simple Generic HID IO
+	2357  KarolKucza TinyPassword
+	2400  phooky Snap-Pad
+	2488  Peter Lawrence CMSIS-DAP Dapper Miser
+	2552  ProjectIota Electrolink
+	2600  Majenko Technologies chipKIT Lenny
+	2635  Sevinz GameBot
+	2800  Entropic Engineering Triangulation
+	2801  Entropic Engineering Object Manipulation
+	2a00  mooware Wii adapter
+	2a01  mooware SNES adapter
+	3000  lloyd3000
+	3100  OpenSimHardware Pedals & Buttons Controller
+	317e  Codecrete Wirekite
+	3210  OSH Lab, LLC Magic Keys
+	3333  LabConnect Digitalnetzteil
+	345b  kinX Hub
+	345c  kinX Keyboard Controller
+	3690  Kigakudoh TouchMIDI32
+	4096  CynaraKrewe Cynara
+	414c  Adi Linden
+	414d  Adi Linden
+	4242  Komakallio Astrophotography Community KomaHub Remote Power Switch
+	4256  CuVoodoo BusVoodoo multi-protocol debugging adapter
+	4321  mooltipass Offline Password Keeper Bootloader
+	4322  mooltipass Arduino Sketch
+	4356  CuVoodoo firmware
+	4443  j1rie IRMP_STM32 Bootloader
+	4444  j1rie IRMP_STM32
+	4545  SlothCo Enterprises Teletype Adapter
+	4646  SmartPID SPC1000
+	4748  Kate Gray GHETT-iO Bootloader
+	4750  Chris Pavlina (c4757p) C4-x computer (development interface)
+	4757  Chris Pavlina (c4757p) WCP52 Gain/Phase Analyzer
+	4801  Wojciech Krutnik NVMemProg
+	4c60  MightyPork GEX module
+	4c61  MightyPork GEX wireless dongle
+	4d53  mindsensors.com NXTCam5
+	5038  frotz.net mdebug rswd protocol
+	5039  frotz.net lpcboot protocol
+	5050  trebb ISO50
+	5070  SoloHacker security key [SoloKey]
+	50b0  boot for security key [SoloKey]
+	5222  telavivmakers attami
+	53c0  SatoshiLabs TREZOR Bootloader
+	53c1  SatoshiLabs TREZOR
+	5432  Open Programmer
+	5457  Openlab.Taipei Taiwanduino
+	571c  StreetoArcade PancadariaStick
+	5a22  ikari_01 sd2snes
+	6000  Pulsar Heavy Industries Cenx4
+	600d  Makdaam N93 Interface
+	6464  Electric Exploits Shinewave
+	6502  jj1bdx avrhwrng v2rev1
+	6570  Iowa Scaled Engineering, LLC CKT-AVRPROGRAMMER
+	6666  Talpa Chen VSFLogic
+	6667  SensePost Universal Serial aBUSe - Generic HID
+	6742  NPK Cubitel Atomic Force Microscope
+	6809  Tach Radio Doppelganger
+	6948  MySensors Sensebender Gateway BootLoader
+	6949  MySensors Sensebender Gateway
+	6bcf  blaste Gameboy Cart Flasher
+	7000  Secalot Dongle
+	7001  Secalot Bootloader
+	70b1  Sutajio Ko-Usagi (Kosagi) Tomu
+	7331  Dangerous Prototypes Bus Pirate Next Gen CDC
+	7332  Dangerous Prototypes Bus Pirate Next Gen Logic Analyzer
+	7401  Beststream-jp Tool_CDC
+	7530  PotentialLabs Refflion - IoT Development Board - Bootloader
+	7531  PotentialLabs Refflion - IoT Development Board - Sketch
+	7551  The Tessel Project Tessel 2
+	7777  circuitvalley IO Board V3
+	7778  circuitvalley IO Board V3 Bootloader
+	7950  PIC18F87J94 Bootloader [GenII]
+	7951  PIC18F87J94 Application [GenII]
+	7952  PIC18F87J94 Bootloader [GenIII/IV]
+	7953  PIC18F87J94 Application [GenIII/IV]
+	7954  PIC18F87J94 Application [GenIII/IV]
+	7bd0  pokey9000 Tiny Bit Dingus
+	8000  Autonomii NODii 2
+	8086  MisfitTech Nano Zero Bootloader
+	8087  MisfitTech Nano Zero
+	8123  Danyboard M0 bootloader
+	812a  Danyboard M0
+	813a  MickMad HACK Bootloader
+	813b  MickMad HACK Sketch
+	8242  Tom Wimmenhove Electronics NBS-DAC 192/24 UAC1
+	8243  Tom Wimmenhove Electronics NBS-DAC 192/24 UAC2
+	8472  Shantea Controls OpenDeck
+	8661  ProgHQ TL866 programmer
+	8844  munia.io MUNIA
+	8888  Blinkinlabs POV Pendant
+	8889  Blinkinlabs POV Pendant (bootloader)
+	8b00  ReSwitched Libtransistor Serial Console
+	9021  Connected Community Hackerspace ESPlant
+	9317  Sutajio Ko-Usagi (Kosagi) Palawan-Tx
+	9999  Sandeepan Sengupta CodeBridge Infineo
+	9db5  PD Buddy Sink
+	a033  area0x33 Memtype
+	a100  KB LES Narsil analog breakout
+	a10c  KB LES Aminoacid Synthesizer
+	a1e5  Atreus Keyboards Atreus Keyboard
+	a3a4  MK::Box MK::Kbd
+	a3a5  MK::Box MK::Kbd Bootloader
+	a55a  Forever Young Software ATTINY2313
+	a602  Robotips RTBoard
+	a7ea  area3001 Knixx SW04
+	a800  sowbug.com WebLight
+	a8b0  Intelectron BootWare
+	a8b1  Intelectron FrameWare
+	aa00  Serg Oskin LinuxCNC HID Extender
+	aa0b  Open Bionics
+	ab3d  3DArtists Alligator board
+	abba  CoinWISE SafeWISE
+	abc0  Omzlo controller
+	abcd  Sandeepan Sengupta CodeBridge
+	abd1  OpenMV Cam
+	acdc  Gediminas Zukaitis midi-grid
+	ace5  SimAces Panel Ace
+	aced  Open Lighting Project Ja Rule Device
+	acee  Open Lighting Project Ja Rule Bootloader
+	adb0  tibounise ADB converter
+	adda  MicroPython Boards
+	b007  Konsgn Global_Boot
+	b00b  CrapLab Random Device
+	b010  IObitZ CodeBridge
+	b01d  WyoLum VeloKey
+	b058  Model B, LLC Holoseat
+	b0b0  Monero Hardware Monero Bootloader
+	b100  ptrandem iBizi
+	b101  IObitZ Infineo
+	b195  flehrad Big Switch PCB
+	bab1  ElectronicCats Meow Meow
+	babe  brunofreitas.com STM32 HID Bootloader
+	bad1  Gregory POTEAU CommLinkUSB
+	bad2  Gregory POTEAU XLinkUSB
+	bade  Semarme SemarmeHID
+	bb00  keyplus split keyboard firmware
+	bb01  keyplus xusb bootloader
+	bb02  keyplus nRF24 wireless keyboard dongle
+	bb03  keyplus nrf24lu1p-512 bootloader
+	bb05  keyplus kp_boot_32u4 bootloader
+	beba  serasidis.gr STM32 HID Bootloader
+	beef  Modal MC-USB
+	c001  Cynteract Alpha
+	c0c0  Geppetto_Electronics Orthrus
+	c0c1  Michael Bemmerl cookie-mouse
+	c0ca  Jean THOMAS DirtyJTAG
+	c0d3  Samy Kamkar USBdriveby
+	c0da  Monero Hardware Monero Firmware
+	c0de  KMRH Labs SBL Brain
+	c0f5  unethi PERswitch
+	c1aa  Proyecto CIAA Computadora Industrial Abierta Argentina
+	c1b1  Chibitronics Love-to-Code
+	c311  bg nerilex GB-USB-Link
+	ca1c  KnightOS Generic Hub
+	ca1d  KnightOS MTP Device
+	caea  Open Music Kontrollers Chimaera
+	cafe  ii iigadget
+	cc14  trebb NaN-15
+	cc86  Manfred's Technologies Anastasia Bootloader
+	ceb0  KG4LNE GE-FlashUSB
+	cf20  Smart Citizen SCK 2.0
+	d00d  Monero Hardware Monero Developer
+	d017  empiriKit empiriKit Controller
+	d11d  Koi Science DI-Lambda AVR
+	d3d8  Duet3d Duet 0.8.5
+	d706  SkyBean SkyDrop
+	da42  Devan Lai dap42 debug access probe
+	daa0  darknao btClubSportWheel
+	dada  Rebel Technology OWL
+	db42  Devan Lai dapboot DFU bootloader
+	dc21  FPGA-Computer Dual Charger
+	dddd  Stephan Electronics OpenCVMeter
+	dead  chaosfield.at AVR-Ruler
+	deaf  CrapLab 4chord MIDI
+	ded1  ManCave Made Quark One
+	deed  Kroneum Time Tracker
+	df00  D.F.Mac. @TripArts Music mi:muz:tuch
+	df01  D.F.Mac. @TripArts Music mi:muz:can
+	df02  D.F.Mac. @TripArts Music mi:muz:can-lite
+	e116  Elijah Motornyy open-oscilloscope-stm32f3
+	e1ec  FreeSRP
+	e4ee  trebb keytee
+	e500  GitleMikkelsen Helios Laser DAC
+	eaea  Pinscape Controller
+	eb01  RobotMaker.club EB1
+	eba7  VictorGrigoryev USBscope
+	ee00  Explore Embedded SODA(SWD OpenSource Debug Adapter)
+	ee02  Explore Embedded Explore M3 VCOM
+	ee03  Explore Embedded Explore M3 DFU
+	ee2c  jaka USB2RS485
+	effa  EffigyLabs atmega32u4-USB-LUFA-Bootloader
+	effe  EffigyLabs Control Pedal
+	f000  Uniti ARC
+	f00d  RomanStepanov Shifter/Pedals Adapter
+	f12e  Michael Bemmerl Feuermelder
+	f16a  uri_ba Cougar TQS adapter
+	f16c  uri_ba adapter for Vipercore's FCC3 Force Sensing Module
+	f380  Windsor Schmidt MD-380 Open Radio Firmware
+	f3fc  dRonin Flight controller-Lumenier Lux
+	f49a  TimVideos.us & HDMI2USB.tv Projects FPGA Programmer & UART Bridge (PIC based Firmware)
+	fa11  moonglow OpenXHC
+	fa57  3DRacers Pilot Board
+	fa58  3DRacers Pilot Board (Bootloader)
+	fab1  PAP Mechatronic Technology LamDiNao
+	face  Protean Synth Craft
+	fade  Open Collector dude
+	feed  ProgramGyar AVR-IR Sender
+	ffff  Life2Device Smart House
+120e  Hudson Soft Co., Ltd
+120f  Magellan
+	524e  RoadMate 1475T
+	5260  Triton Handheld GPS Receiver (300/400/500/1500/2000)
+1210  DigiTech
+	000d  RP250 Guitar Multi-Effects Processor
+	0016  RP500 Guitar Multi-Effects Processor
+	001b  RP155 Guitar Multi-Effects Processor
+	001c  RP255 Guitar Multi-Effects Processor
+121e  Jungsoft Co., Ltd
+	3403  Muzio JM250 Audio Player
+121f  Panini S.p.A.
+	0001  VisionX without Firmware
+	0002  VisionX with Firmware
+	0010  I-Deal
+	0020  wI-Deal
+	0021  VisionX Page Scanner Extension
+	0030  VisionNext
+	0040  mI:Deal Check Scanner
+	0041  EverNext Check Scanner
+1220  TC Electronic
+	000a  Hall of Fame Reverb
+	002a  Polytune
+	0032  Ditto X2 Looper
+	0039  Alter Ego X4 Vintage Echo
+1221  Unknown manufacturer
+	3234  Disk (Thumb drive)
+1222  TiPro
+	faca  programmable keyboard
+1223  SKYCABLE ENTERPRISE. CO., LTD.
+1228  Datapaq Limited
+	0012  Q18 Data Logger
+	0015  TPaq21/MPaq21 Datalogger
+	584c  XL2 Logger
+1230  Chipidea-Microelectronica, S.A.
+1233  Denver Electronics
+	5677  FUSB200 mp3 player
+1234  Brain Actuated Technologies
+	0000  Neural Impulse Actuator Prototype 1.0 [NIA]
+	4321  Human Interface Device
+	ed02  Emotiv EPOC Developer Headset Wireless Dongle
+1235  Focusrite-Novation
+	0001  ReMOTE Audio/XStation First Edition
+	0002  Speedio
+	0003  RemoteSL + ZeroSL
+	0004  ReMOTE LE
+	0005  XIOSynth [First Edition]
+	0006  XStation
+	0007  XIOSynth
+	0008  ReMOTE SL Compact
+	0009  nIO
+	000a  Nocturn
+	000b  ReMOTE SL MkII
+	000c  ZeRO MkII
+	000e  Launchpad
+	0010  Saffire 6
+	0011  Ultranova
+	0012  Nocturn Keyboard
+	0013  VRM Box
+	0014  VRM Box Audio Class (2-out)
+	0015  Dicer
+	0016  Ultranova
+	0018  Twitch
+	0019  Impulse 25
+	001a  Impulse 49
+	001b  Impulse 61
+	0032  Launchkey 61
+	0069  Launchpad MK2
+	0102  LaunchKey Mini MK3
+	4661  ReMOTE25
+	8000  Scarlett 18i6
+	8002  Scarlett 8i6
+	8006  Focusrite Scarlett 2i2
+	8008  Saffire 6
+	800a  Scarlett 2i4
+	800c  Scarlett 18i20
+	800e  iTrack Solo
+	8010  Forte
+	8012  Scarlett 6i6
+	8014  Scarlett 18i8
+	8016  Focusrite Scarlett 2i2
+	8202  Focusrite Scarlett 2i2 2nd Gen
+	8203  Focusrite Scarlett 6i6
+	8204  Scarlett 18i8 2nd Gen
+	8210  Scarlett 2i2 Camera
+	8211  Scarlett Solo (3rd Gen.)
+	8214  Scarlett 18i8 3rd Gen
+	8215  Scarlett 18i20 3rd Gen
+1241  Belkin
+	0504  Wireless Trackball Keyboard
+	1111  Mouse
+	1122  Typhoon Stream Optical Mouse USB+PS/2
+	1155  Memorex Optical ScrollPro Mouse SE MX4600
+	1166  MI-2150 Trust Mouse
+	1177  Mouse [HT82M21A]
+	1503  Keyboard
+	1603  Keyboard
+	f767  Keyboard
+1243  Holtek Semiconductor, Inc.
+	e000  Unique NFC/RFID reader (keyboard emulation)
+124a  AirVast
+	168b  PRISM3 WLAN Adapter
+	4017  PC-Chips 802.11b Adapter
+	4023  WM168g 802.11bg Wireless Adapter [Intersil ISL3886]
+	4025  IOGear GWU513 v2 802.11bg Wireless Adapter [Intersil ISL3887]
+124b  Nyko (Honey Bee)
+	4d01  Airflo EX Joystick
+124c  MXI - Memory Experts International, Inc.
+	3200  Stealth MXP 1GB
+125c  Apogee Inc.
+	0010  Alta series CCD
+125d  JMicron
+	0580  JM580
+125f  A-DATA Technology Co., Ltd.
+	312a  Superior S102
+	312b  Superior S102 Pro
+	a15a  DashDrive Durable HD710 portable HDD various size
+	a22a  DashDrive Elite HE720 500GB
+	a31a  HV620 Portable HDD
+	a91a  Portable HDD CH91
+	c08a  C008 Flash Drive
+	c81a  Flash drive
+	c93a  4GB Pen Drive
+	c96a  C906 Flash Drive
+	cb10  Dash Drive UV100
+	cb20  DashDrive UV110
+1260  Standard Microsystems Corp.
+	ee22  SMC2862W-G v3 EZ Connect 802.11g Adapter [Intersil ISL3887]
+1264  Covidien Energy-based Devices
+1266  Pirelli Broadband Solutions
+	6302  Fastweb DRG A226M ADSL Router
+1267  Logic3 / SpectraVideo plc
+	0103  G-720 Keyboard
+	0201  Mouse
+	0210  LG Optical Mouse 3D-310
+	a001  JP260 PC Game Pad
+	c002  Wireless Optical Mouse
+126c  Aristocrat Technologies
+126d  Bel Stewart
+126e  Strobe Data, Inc.
+126f  TwinMOS
+	0163  Storage device (2gB thumb drive)
+	1325  Mobile Disk
+	2168  Mobile Disk III
+	a006  G240 802.11bg
+1274  Ensoniq
+1275  Xaxero Marine Software Engineering, Ltd.
+	0002  WeatherFax 2000 Demodulator
+	0080  SkyEye Weather Satellite Receiver
+	0090  WeatherFax 2000 Demodulator
+1278  Starlight Xpress
+	0105  SXV-M5
+	0107  SXV-M7
+	0109  SXV-M9
+	0110  SXVF-H16
+	0115  SXVF-H5
+	0119  SXV-H9
+	0135  SXVF-H35
+	0136  SXVF-H36
+	0200  SXV interface for paraller MX cameras
+	0305  SXV-M5C
+	0307  SXV-M7C
+	0319  SXV-H9C
+	0325  SXV-M25C
+	0326  SXVR-M26C
+	0507  Lodestar autoguider
+	0517  CoStar
+1283  zebris Medical GmbH
+	0100  USB-RS232 Adaptor
+	0110  CMS20
+	0111  CMS 10
+	0112  CMS 05
+	0114  ARCUS digma PC-Interface
+	0115  SAM Axioquick recorder
+	0116  SAM Axioquick recorder
+	0120  emed-X
+	0121  emed-AT
+	0130  PDM
+	0150  CMS10GI (Golf)
+1286  Marvell Semiconductor, Inc.
+	00bc  Marvell JTAG Probe
+	1fab  88W8338 [Libertas] 802.11g
+	2001  88W8388 802.11a/b/g WLAN
+	2006  88W8362 802.11n WLAN
+	203c  K30326 802.11bgn Wireless Module [Marvell 88W8786U]
+	204c  Bluetooth and Wireless LAN Composite
+	8001  BLOB boot loader firmware
+1291  Qualcomm Flarion Technologies, Inc. / Leadtek Research, Inc.
+	0010  FDM 2xxx Flash-OFDM modem
+	0011  LR7F06/LR7F14 Flash-OFDM modem
+1292  Innomedia
+	0258  Creative Labs VoIP Blaster
+	4154  Retro Link Atari cable
+1293  Belkin Components [hex]
+	0002  F5U002 Parallel Port [uss720]
+	2101  104-key keyboard
+1294  RISO KAGAKU CORP.
+	1320  Webmail Notifier
+1297  DekTec
+	020f  DTU-215 Multi-Standard Modulator
+129b  CyberTAN Technology
+	160b  Siemens S30853-S1031-R351 802.11g Wireless Adapter [Atheros AR5523]
+	160c  Siemens S30853-S1038-R351 802.11g Wireless Adapter [Atheros AR5523]
+	1666  TG54USB 802.11bg
+	1667  802.11bg
+	1828  Gigaset USB Adapter 300
+12a7  Trendchip Technologies Corp.
+12ab  Honey Bee Electronic International Ltd.
+	0004  Dance Pad for Xbox 360
+	0301  Afterglow Wired Controller for Xbox 360
+	0303  Mortal Kombat Klassic FightStick for Xbox 360
+	8809  Dance Dance Revolution Dance Pad
+12b8  Zhejiang Xinya Electronic Technology Co., Ltd.
+12b9  E28
+12ba  Licensed by Sony Computer Entertainment America
+	0032  Wireless Stereo Headset
+	0042  Wireless Stereo Headset
+	00ff  Rocksmith Guitar Adapter
+	0100  RedOctane Guitar for PlayStation(R)3
+	0120  RedOctane Drum Kit for PlayStation(R)3
+	0200  Harmonix Guitar for PlayStation(R)3
+	0210  Harmonix Drum Kit for PlayStation(R)3
+12bd  Gembird
+	d012  JPD Shockforce gamepad
+	d015  Generic 4-button NES USB Controller
+12c4  Autocue Group Ltd
+	0006  Teleprompter Two-button Hand Control (v1)
+	0008  Teleprompter Foot Control (v1)
+12cf  DEXIN
+	0170  Tt eSPORTS BLACK Gaming mouse
+	600b  Cougar 600M Gaming Mouse
+12d1  Huawei Technologies Co., Ltd.
+	1001  E161/E169/E620/E800 HSDPA Modem
+	1003  E220 HSDPA Modem / E230/E270/E870 HSDPA/HSUPA Modem
+	1004  E220 (bis)
+	1009  U120
+	1010  ETS2252+ CDMA Fixed Wireless Terminal
+	1021  U8520
+	1035  U8120
+	1037  Ideos
+	1038  Ideos (debug mode)
+	1039  Ideos (tethering mode)
+	1052  MT7-L09 / P7-L10 / Y330-U01
+	1053  P7-L10 (PTP)
+	1054  P7-L10 (PTP + debug)
+	1079  GEM-703LT [Honor/MediaPad X2]
+	107e  P10 smartphone
+	1404  EM770W miniPCI WCDMA Modem
+	1406  E1750
+	140b  EC1260 Wireless Data Modem HSD USB Card
+	140c  E180v
+	1412  EC168c
+	1436  Broadband stick
+	1446  HSPA modem
+	1465  K3765 HSPA
+	14ac  E815
+	14c3  K5005 Vodafone LTE/UMTS/GSM Modem/Networkcard
+	14c8  K5005 Vodafone LTE/UMTS/GSM MOdem/Networkcard
+	14c9  K3770 3G Modem
+	14cf  K3772
+	14d1  K3770 3G Modem (Mass Storage Mode)
+	14db  E353/E3131
+	14dc  E3372 LTE/UMTS/GSM HiLink Modem/Networkcard
+	14f1  Gobi 3000 HSPA+ Modem
+	14fe  Modem (Mass Storage Mode)
+	1501  Pulse
+	1505  E398 LTE/UMTS/GSM Modem/Networkcard
+	1506  Modem/Networkcard
+	150a  E398 LTE/UMTS/GSM Modem/Networkcard
+	1520  K3765 HSPA
+	1521  K4505 HSPA+
+	155a  R205 Mobile WiFi (CD-ROM mode)
+	1573  ME909u-521 mPCIe LTE/GPS card
+	1575  K5150 LTE modem
+	15bb  ME936 LTE/HSDPA+ 4G modem
+	15c1  ME906s LTE M.2 Module
+	15ca  E3131 3G/UMTS/HSPA+ Modem (Mass Storage Mode)
+	1805  AT&T Go Phone U2800A phone
+	1c05  Broadband stick (modem on)
+	1c0b  E173s 3G broadband stick (modem off)
+	1c20  R205 Mobile WiFi (Charging)
+	1d50  ET302s TD-SCDMA/TD-HSDPA Mobile Broadband
+	1f01  E353/E3131 (Mass storage mode)
+	1f16  K5150 LTE modem (Mass Storage Mode)
+	360e  Y330-U01 (MTP Mode)
+	380b  WiMAX USB modem(s)
+12d2  LINE TECH INDUSTRIAL CO., LTD.
+12d3  LINAK
+	0002  DeskLine CBD Control Box
+12d6  EMS Dr. Thomas Wuensche
+	0444  CPC-USB/ARM7
+	0888  CPC-USB/M16C
+12d7  BETTER WIRE FACTORY CO., LTD.
+12d8  Araneus Information Systems Oy
+	0001  Alea I True Random Number Generator
+12e6  Waldorf Music GmbH
+	0013  Blofeld
+12ef  Tapwave, Inc.
+	0100  Tapwave Handheld [Tapwave Zodiac]
+12f2  ViewPlus Technologies, Inc.
+	000a  Braille embosser [SpotDot Emprint]
+12f5  Dynamic System Electronics Corp.
+12f7  Memorex Products, Inc.
+	1a00  TD Classic 003B
+	1e23  TravelDrive 2007 Flash Drive
+12fd  AIN Comm. Technology Co., Ltd
+	1001  AWU2000b 802.11b Stick
+12ff  Fascinating Electronics, Inc.
+	0101  Advanced RC Servo Controller
+1306  FM20 Barcode Scanner
+1307  Transcend Information, Inc.
+	0163  256MB/512MB/1GB Flash Drive
+	0165  2GB/4GB/8GB Flash Drive
+	0190  Ut190 8 GB Flash Drive with MicroSD reader
+	0310  SD/MicroSD CardReader [hama]/IT1327E [Basic Line flash drive]
+	0330  63-in-1 Multi-Card Reader/Writer
+	0361  CR-75: 51-in-1 Card Reader/Writer [Sakar]
+	1169  TS2GJF210 JetFlash 210 2GB
+	1171  Fingerprint Reader
+1308  Shuttle, Inc.
+	0003  VFD Module
+	c001  eHome Infrared Transceiver
+1310  Roper
+	0001  Class 1 Bluetooth Dongle
+1312  ICS Electronics
+1313  ThorLabs
+	0010  LC1 Linear Camera (Jungo)
+	0011  SP1 Spectrometer (Jungo)
+	0012  SP2 Spectrometer (Jungo)
+	0110  LC1 Linear Camera (VISA)
+	0111  SP1 Spectrometer (VISA)
+	0112  SP2 Spectrometer (VISA)
+	8001  TXP-Series Slot (TXP5001, TXP5004)
+	8011  BP1 Slit Beam Profiler
+	8012  BC106 Camera Beam Profiler
+	8013  WFS10 Wavefront Sensor
+	8016  DMP40 Deformable Mirror
+	8017  BC206 Camera Beam Profiler
+	8019  BP2 Multi Slit Beam Profiler
+	8020  PM300 Optical Power Meter
+	8021  PM300E Optical Power and Energy Meter
+	8022  PM320E Optical Power and Energy Meter
+	8025  WFS20 Wavefront Sensor
+	8030  ER100 Extinction Ratio Meter
+	8039  PAX1000 Rotating Waveplate Polarimeter
+	8047  CLD1000
+	8048  TED4000
+	8049  LDC4000
+	804a  ITC4000
+	8058  LC-100
+	8060  DC3100
+	8061  DC4100
+	8062  DC2100
+	8065  CS2010
+	8066  DC4104
+	8070  PM100D
+	8072  PM100USB Power and Energy Meter Interface
+	8073  PM106 Wireless Powermeter Photodiode Sensor
+	8074  PM160T Wireless Powermeter Thermal Sensor
+	8075  PM400 Handheld Optical Power/Energy Meter
+	8076  PM101 Serial PD Power Meter
+	8078  PM100D Compact Power and Energy Meter Console
+	8080  CCS100 - Compact Spectrometer
+	8081  CCS100 Compact Spectrometer
+	8083  CCS125 Spectrometer
+	8085  CCS150 UV Spectrometer
+	8087  CCS175 NIR Spectrometer
+	8089  CCS200 Wide Range Spectrometer
+	8090  SPCM Single Photon Counter
+	80a0  LC100 series smart line camera
+	80b0  PM200 Handheld Power and Energy Meter
+	80c0  DC2200
+	80c9  MTD Series
+	80f0  TSP01
+	80f1  M2SET Dongle
+	8180  OCT Probe Controller (OCTH-1300)
+	8181  OCT Device
+131d  Natural Point
+	0155  TrackIR 3 Pro Head Tracker
+	0156  TrackIR 4 Pro Head Tracker
+	0158  TrackIR 5 Pro Head Tracker
+1325  ams AG
+	00d6  I2C/SPI InterfaceBoard
+	0c08  Embedded Linux Sensor Bridge
+	4002  I2C Dongle
+132a  Envara Inc.
+	1502  WiND 802.11abg / 802.11bg WLAN
+132b  Konica Minolta
+	0000  Dimage A2 Camera
+	0001  Minolta DiMAGE A2 (ptp)
+	0003  Dimage Xg Camera
+	0006  Dimage Z2 Camera
+	0007  Minolta DiMAGE Z2 (PictBridge mode)
+	0008  Dimage X21 Camera
+	000a  Dimage Scan Dual IV AF-3200 (2891)
+	000b  Dimage Z10 Camera
+	000d  Dimage X50 Camera [storage?]
+	000f  Dimage X50 Camera [p2p?]
+	0010  Dimage G600 Camera
+	0012  Dimage Scan Elite 5400 II (2892)
+	0013  Dimage X31 Camera
+	0015  Dimage G530 Camera
+	0017  Dimage Z3 Camera
+	0018  Minolta DiMAGE Z3 (PictBridge mode)
+	0019  Dimage A200 Camera
+	0021  Dimage Z5 Camera
+	0022  Minolta DiMAGE Z5 (PictBridge mode)
+	002c  Dynax 5D camera
+	2001  Magicolor 2400w
+	2004  Magicolor 5430DL
+	2005  Magicolor 2430 DL
+	2029  Magicolor 5440DL
+	2030  PagePro 1350E(N)
+	2033  PagePro 1400W
+	2043  Magicolor 2530DL
+	2045  Magicolor 2500W
+	2049  Magicolor 2490MF
+133e  Kemper Digital GmbH
+	0815  Virus TI Desktop
+1342  Mobility
+	0200  EasiDock 200 Hub
+	0201  EasiDock 200 Keyboard and Mouse Port
+	0202  EasiDock 200 Serial Port
+	0203  EasiDock 200 Printer Port
+	0204  Ethernet
+	0304  EasiDock Ethernet
+1343  Citizen Systems
+	0002  CW-01
+	0003  CX / DNP DS40
+	0004  CX-W / DNP DS80 / Mitsubishi CP3800
+	0005  CY / DNP DSRX1
+	0006  CW-02 / OP900ii
+	0007  DNP DS80DX
+	0008  DNP DS620 (old)
+	000a  CX-02
+	000b  CX-02W
+1345  Sino Lite Technology Corp.
+	001c  Xbox Controller Hub
+	6006  Defender Wireless Controller
+1347  Moravian Instruments
+	0400  G2CCD USB 1.1 obsolete
+	0401  G2CCD-S with Sony ICX285 CCD
+	0402  G2CCD2
+	0403  G2/G3CCD-I KAI CCD
+	0404  G2/G3/G4 CCD-F KAF CCD
+	0405  Gx CCD-I CCD
+	0406  Gx CCD-F CCD
+	0410  G1-0400 CCD
+	0411  G1-0800 CCD
+	0412  G1-0300 CCD
+	0413  G1-2000 CCD
+	0414  G1-1400 CCD
+	0415  G1-1200 CCD
+	04b0  Gx CCD-B CCD
+	04b1  Gx CCD-BI CCD
+1348  Katsuragawa Electric Co., Ltd.
+134c  PanJit International Inc.
+	0001  Touch Panel Controller
+	0002  Touch Panel Controller
+	0003  Touch Panel Controller
+	0004  Touch Panel Controller
+134e  Digby's Bitpile, Inc. DBA D Bit
+1357  P&E Microcomputer Systems
+	0089  OpenSDA - CDC Serial Port
+	0503  USB-ML-12 HCS08/HCS12 Multilink
+	0504  DEMOJM
+	1000  Smart Control Touchpad
+135e  Insta GmbH
+	0021  Berker KNX Data Interface
+	0022  Gira KNX Data Interface
+	0023  JUNG KNX Data Interface
+	0024  Merten/Schneider Electric KNX Data Interface
+	0025  Hager KNX Data Interface
+	0026  Feller KNX Data Interface
+135f  Control Development Inc.
+	0110  Linear Spectrograph
+	0111  Spectrograph - Renumerated
+	0200  Linear Spectrograph
+	0201  Spectrograph - Renumerated
+	0240  MPP Spectrograph
+1366  SEGGER
+	0101  J-Link PLUS
+	1015  J-Link
+136b  STEC
+136e  Andor Technology Ltd.
+	0012  iXon Ultra CCD
+	0014  Zyla 5.5 sCMOS camera
+1370  Swissbit
+	0323  Swissmemory cirrusWHITE
+	6828  Victorinox Flash Drive
+1371  CNet Technology Inc.
+	0001  CNUSB-611AR Wireless Adapter-G [AT76C503]
+	0002  CNUSB-611AR Wireless Adapter-G [AT76C503] (FiberLine WL-240U)
+	0013  CNUSB-611 Wireless Adapter [AT76C505]
+	0014  CNUSB-611 Wireless Adapter [AT76C505] (FiberLine WL-240U)
+	5743  CNUSB-611 (D) Wireless Adapter [AT76C503]
+	9022  CWD-854 [RT2573]
+	9032  CWD-854 rev F
+	9401  CWD-854 Wireless 802.11g 54Mbps Network Adapter [RTL8187]
+1376  Vimtron Electronics Co., Ltd.
+1377  Sennheiser electronic GmbH & Co. KG
+	4000  HDVD800
+137b  SCAPS GmbH
+	0002  SCAPS USC-2 Scanner Controller
+137c  YASKAWA ELECTRIC CORP.
+	0220  MP Series
+	0250  SIGMA Series
+	0401  AC Drive
+1385  Netgear, Inc
+	4250  WG111T
+	4251  WG111T (no firmware)
+	5f00  WPN111 RangeMax(TM) Wireless USB 2.0 Adapter
+	5f01  WPN111 (no firmware)
+	5f02  WPN111 (no firmware)
+	6e00  WPNT121 802.11g 240Mbps Wireless Adapter [Airgo AGN300]
+138a  Validity Sensors, Inc.
+	0001  VFS101 Fingerprint Reader
+	0005  VFS301 Fingerprint Reader
+	0007  VFS451 Fingerprint Reader
+	0008  VFS300 Fingerprint Reader
+	0010  VFS Fingerprint sensor
+	0011  VFS5011 Fingerprint Reader
+	0015  VFS 5011 fingerprint sensor
+	0017  VFS 5011 fingerprint sensor
+	0018  Fingerprint scanner
+	003c  VFS471 Fingerprint Reader
+	003d  VFS491
+	003f  VFS495 Fingerprint Reader
+	0050  Swipe Fingerprint Sensor
+	0090  VFS7500 Touch Fingerprint Sensor
+	0091  VFS7552 Touch Fingerprint Sensor
+138e  Jungo LTD
+	9000  Raisonance S.A. STM32 ARM evaluation board / RLink dongle
+1390  TOMTOM B.V.
+	0001  GO 520 T / GO 630 / ONE / ONE XL
+	5454  Blue & Me 2
+	7474  GPS Sport Watch [Runner, Multi-Sport]
+	a001  Bandit Action Camera Batt-Stick
+1391  IdealTEK, Inc.
+	1000  URTC-1000
+1395  Sennheiser Communications
+	0025  Headset [PC 8]
+	0026  SC230
+	0027  SC260
+	0028  SC230 CTRL
+	0029  SC260 CTRL
+	002a  SC230 for Lync
+	002b  SC260 for Lync
+	002d  BTD-800
+	002e  Presence
+	0030  CEHS-CI 02
+	0031  U320 Gaming
+	0032  SC30 for Lync
+	0033  SC60 for Lync
+	0034  SC30 Control
+	0035  SC60 Control
+	0036  SC630 for Lync
+	0037  SC660 for Lync
+	0038  SC630 CTRL
+	0039  SC660 CTRL
+	003f  SP 20
+	0040  MB Pro 1/2
+	0041  SP 20 for Lync
+	0042  SP 10
+	0043  SP 10 for Lync
+	0046  PXC 550
+	004a  MOMENTUM M2 OEBT
+	004b  MOMENTUM M2 AEBT
+	004f  SC230 for MS II
+	0050  SC260 for MS II
+	0051  USB-ED CC 01
+	0058  USB-ED CC 01 for MS
+	0059  SC40 for MS
+	005a  SC70 for MS
+	005b  SC40 CTRL
+	005c  SC70 CTRL
+	0060  SCx5 MS
+	0061  SCx5 CTRL
+	0064  MB 660 MS
+	0065  MB 660
+	0066  SP 20 D UC
+	0067  SP 20 D MS
+	006b  SC5x5 MS
+	0072  Headset
+	3556  USB Headset
+1397  BEHRINGER International GmbH
+	0004  FCA1616
+	00bc  BCF2000
+1398  Q-tec
+	2103  USB 2.0 Storage Device
+13ad  Baltech
+	9999  Card reader
+13b0  PerkinElmer Optoelectronics
+	000a  Alesis Photon X25 MIDI Controller
+13b1  Linksys
+	000a  WUSB54G v2 802.11g Adapter [Intersil ISL3887]
+	000b  WUSB11 v4.0 802.11b Adapter [ALi M4301]
+	000c  WUSB54AG 802.11a/g Adapter [Intersil ISL3887]
+	000d  WUSB54G v4 802.11g Adapter [Ralink RT2500USB]
+	000e  WUSB54GS v1 802.11g Adapter [Broadcom 4320 USB]
+	0011  WUSB54GP v4.0 802.11g Adapter [Ralink RT2500USB]
+	0014  WUSB54GS v2 802.11g Adapter [Broadcom 4320 USB]
+	0018  USB200M 10/100 Ethernet Adapter
+	001a  HU200TS Wireless Adapter
+	001e  WUSBF54G 802.11bg
+	0020  WUSB54GC v1 802.11g Adapter [Ralink RT73]
+	0022  WUSB54GX4 802.11g 240Mbps Wireless Adapter [Airgo AGN300]
+	0023  WUSB54GR
+	0024  WUSBF54G v1.1 802.11bg
+	0026  WUSB54GSC v1 802.11g Adapter [Broadcom 4320 USB]
+	0028  WUSB200 802.11g Adapter [Ralink RT2671]
+	0029  WUSB300N 802.11bgn Wireless Adapter [Marvell 88W8362+88W8060]
+	002f  AE1000 v1 802.11n [Ralink RT3572]
+	0031  AM10 v1 802.11n [Ralink RT3072]
+	0039  AE1200 802.11bgn Wireless Adapter [Broadcom BCM43235]
+	003a  AE2500 802.11abgn Wireless Adapter [Broadcom BCM43236]
+	003b  AE3000 802.11abgn (3x3) Wireless Adapter [Ralink RT3573]
+	003e  AE6000 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7610U]
+	003f  WUSB6300 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU]
+	0041  Gigabit Ethernet Adapter
+	0042  WUSB6100M 802.11a/b/g/n/ac Wireless Adapter
+	13b1  WUSB200: Wireless-G Business Network Adapter with Rangebooster
+13b2  Alesis
+	0030  Multimix 8
+13b3  Nippon Dics Co., Ltd.
+13ba  PCPlay
+	0001  Konig Electronic CMP-KEYPAD12 Numeric Keypad
+	0017  PS/2 Keyboard+Mouse Adapter
+	0018  Barcode PCP-BCG4209
+13be  Ricoh Printing Systems, Ltd.
+13ca  JyeTai Precision Industrial Co., Ltd.
+13cf  Wisair Ltd.
+	1200  Olidata Wireless Multimedia Adapter
+13d0  Techsan Electronics Co., Ltd.
+	2282  TechniSat DVB-PC TV Star 2
+13d1  A-Max Technology Macao Commercial Offshore Co. Ltd.
+	7019  MD 82288
+	abe6  Wireless 802.11g 54Mbps Network Adapter [RTL8187]
+13d2  Shark Multimedia
+	0400  Pocket Ethernet [klsi]
+13d3  IMC Networks
+	3201  VisionDTV USB-Ter/HAMA USB DVB-T device cold
+	3202  VisionDTV USB-Ter/HAMA USB DVB-T device warm
+	3203  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
+	3204  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
+	3205  DNTV Live! Tiny USB2 BDA (No Remote)
+	3206  DNTV Live! Tiny USB2 BDA (No Remote)
+	3207  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
+	3208  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
+	3209  DTV-DVB UDST7022BDA DVB-S Box(Without HID)
+	3211  DTV-DVB Hybrid Analog/Capture / Pinnacle PCTV 310e
+	3212  DTV-DVB UDTT704C - DVBT/NTSC/PAL Driver(PCM4)
+	3213  DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver (PCM4)
+	3214  DTV-DVB UDTT704F -(MiniCard) DVBT/NTSC/PAL Driver(Without HID)
+	3215  DTV-DVB UDAT7240 - ATSC/NTSC/PAL Driver(PCM4)
+	3216  DTV-DVB UDTT 7047-USB 2.0 DVB-T Driver
+	3217  Digital-TV Receiver.
+	3219  DTV-DVB UDTT7049 - DVB-T Driver(Without HID)
+	3220  DTV-DVB UDTT 7047M-USB 2.0 DVB-T Driver
+	3223  DNTV Live! Tiny USB2 BDA (No Remote)
+	3224  DNTV Live! Tiny USB2 BDA (No Remote)
+	3226  DigitalNow TinyTwin DVB-T Receiver
+	3234  DVB-T FTA Half Minicard [RTL2832U]
+	3236  DTV-DVB UDTT 7047A-USB 2.0 DVB-T Driver
+	3237  DTV-DVB UDTT 704J - dual DVB-T Driver
+	3239  DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver(Without HID)
+	3240  DTV-DVB UDXTTM6010 - A/D Driver(Without HID)
+	3241  DTV-DVB UDXTTM6010 - A/D Driver(Without HID)
+	3242  DTV-DVB UDAT7240LP - ATSC/NTSC/PAL Driver(Without HID)
+	3243  DTV-DVB UDXTTM6010 - A/D Driver(Without HID)
+	3244  DTV-DVB UDTT 7047Z-USB 2.0 DVB-T Driver
+	3247  AW-NU222 802.11bgn Wireless Module [Ralink RT2770+RT2720]
+	3249  Internal Bluetooth
+	3250  Broadcom Bluetooth 2.1
+	3262  802.11 n/g/b Wireless LAN USB Adapter
+	3273  802.11 n/g/b Wireless LAN USB Mini-Card
+	3274  DVB-T Dongle [RTL2832U]
+	3282  DVB-T + GPS Minicard [RTL2832U]
+	3284  Wireless LAN USB Mini-Card
+	3304  Asus Integrated Bluetooth module [AR3011]
+	3306  Mediao 802.11n WLAN [Realtek RTL8191SU]
+	3315  Bluetooth module
+	3327  AW-NU137 802.11bgn Wireless Module [Atheros AR9271]
+	3362  Atheros AR3012 Bluetooth 4.0 Adapter
+	3375  Atheros AR3012 Bluetooth 4.0 Adapter
+	3392  Azurewave 43228+20702
+	3394  Bluetooth
+	3474  Atheros AR3012 Bluetooth
+	3526  Bluetooth Radio
+	5070  Webcam
+	5111  Integrated Webcam
+	5115  Integrated Webcam
+	5116  Integrated Webcam
+	5122  2M Integrated Webcam
+	5126  PC Cam
+	5130  Integrated Webcam
+	5134  Integrated Webcam
+	5615  Lenovo EasyCamera
+	5670  HP TrueVision HD
+	5682  SunplusIT Integrated Camera
+	5702  UVC VGA Webcam
+	5710  UVC VGA Webcam
+	5716  UVC VGA Webcam
+	5a07  VGA UVC WebCam
+	7020  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
+	7022  DTV-DVB UDST7022BDA DVB-S Box(Without HID)
+	784b  XHC Camera
+13d7  Guidance Software, Inc.
+	0001  T5 PATA forensic bridge
+	000c  T8-R2 forensic bridge
+13dc  ALEREON, INC.
+13dd  i.Tech Dynamic Limited
+13e1  Kaibo Wire & Cable (Shenzhen) Co., Ltd.
+13e5  Rane
+	0001  SL-1
+	0003  TTM 57SL
+13e6  TechnoScope Co., Ltd.
+13ea  Hengstler
+	0001  C-56 Thermal Printer
+13ec  Zydacron
+	0006  HID Remote Control
+13ee  MosArt
+	0001  Optical Mouse
+	0003  Optical Mouse
+13fd  Initio Corporation
+	0550  INIC-1530 PATA Bridge
+	0840  INIC-1618L SATA
+	0841  Samsung SE-T084M DVD-RW
+	0940  ASUS SBW-06D2X-U
+	1040  INIC-1511L PATA Bridge
+	1340  Hi-Speed USB to SATA Bridge
+	160f  RocketFish SATA Bridge [INIC-1611]
+	1640  INIC-1610L SATA Bridge
+	1669  INIC-1609PN
+	1840  INIC-1608 SATA bridge
+	1e40  INIC-1610P SATA bridge
+	2040  Samsung Writemaster external DVD writer
+	3920  INIC-3619PN SATA Bridge
+	3940  external DVD burner ECD819-SU3
+	3960  INIC-3639
+	3e40  ZALMAN ZM-VE350
+13fe  Kingston Technology Company Inc.
+	1a00  512MB/1GB Flash Drive
+	1a23  512MB Flash Drive
+	1d00  DataTraveler 2.0 1GB/4GB Flash Drive / Patriot Xporter 4GB Flash Drive
+	1e00  Flash Drive 2 GB [ICIDU 2 GB]
+	1e50  U3 Smart Drive
+	1f00  Kingston DataTraveler / Patriot Xporter
+	1f23  PS2232 flash drive controller
+	2240  microSD card reader
+	3100  2/4 GB stick
+	3123  Verbatim STORE N GO 4GB
+	3200  flash drive (2GB, EMTEC)
+	3600  flash drive (4GB, EMTEC)
+	3800  Rage XT Flash Drive
+	3d00  Flash Drive
+	3e00  Flash Drive
+	4100  Flash drive
+	4200  Platinum USB drive mini
+	5000  USB flash drive (32 GB SHARKOON Accelerate)
+	5100  Flash Drive
+	5200  DataTraveler R3.0
+	5500  Flash drive
+	6300  SP Mobile C31 (64GB)
+1400  Axxion Group Corp.
+1402  Bowe Bell & Howell
+1403  Sitronix
+	0001  Digital Photo Frame
+	0003  Digital Photo Frame (DPF-1104)
+1404  Fundamental Software, Inc.
+	cddc  Dongle
+1409  IDS Imaging Development Systems GmbH
+	1000  generic (firmware not loaded yet)
+	1485  uEye UI1485
+	3240  uEye UI3240
+140e  Telechips, Inc.
+	b011  TCC780X-based player (USB Boot mode)
+	b021  TCC77X-based players (USB Boot mode)
+1410  Novatel Wireless
+	1110  Merlin S620
+	1120  Merlin EX720
+	1130  Merlin S720
+	1400  Merlin U730/U740 (Vodafone)
+	1410  Merlin U740 (non-Vodafone)
+	1430  Merlin XU870
+	1450  Merlin X950D
+	2110  Ovation U720/MCD3000
+	2410  Expedite EU740
+	2420  Expedite EU850D/EU860D/EU870D
+	4100  U727
+	4400  Ovation MC930D/MC950D
+	9010  Expedite E362
+	a001  Gobi Wireless Modem
+	a008  Gobi Wireless Modem (QDL mode)
+	b001  Ovation MC551
+1415  Nam Tai E&E Products Ltd. or OmniVision Technologies, Inc.
+	0000  Sony SingStar USBMIC
+	0020  Sony Wireless SingStar
+	2000  Sony Playstation Eye
+1419  ABILITY ENTERPRISE CO., LTD.
+1421  Sensor Technology
+	0605  Sentech Camera
+1424  Posnet Polska S.A.
+	1001  Temo
+	1002  Thermal
+	1003  Neo
+	1004  Combo DF
+	1005  Thermal-A
+	1006  Thermal FV
+	1007  Bingo HS
+	1008  Thermal HS FV
+	1009  Thermal FV EJ
+	100a  Thermal HD
+	100b  Thermal
+	100c  Neo
+	100d  Ergo
+	100e  Trio
+	1010  Thermal HS FV EJ
+	1011  Neo EJ
+	1012  Thermal-A
+	1013  Thermal-A EJ
+	1014  Mobile
+	1015  Temo HS
+	1016  Mobile HS
+	1017  TH230+ FV EJ
+	1018  4610-1NR FV EJ
+1429  Vega Technologies Industrial (Austria) Co.
+142a  Thales E-Transactions
+	0003  Artema Hybrid
+	0005  Artema Modular
+	0043  medCompact
+142b  Arbiter Systems, Inc.
+	03a5  933A Portable Power Sentinel
+1430  RedOctane
+	0150  wireless receiver for skylanders wii
+	4734  Guitar Hero4 hub
+	4748  Guitar Hero X-plorer
+	474b  Guitar Hero MIDI interface
+	8888  TX6500+ Dance Pad
+	f801  Controller
+1431  Pertech Resources, Inc.
+1435  Wistron NeWeb
+	0427  UR054g 802.11g Wireless Adapter [Intersil ISL3887]
+	0711  UR055G 802.11bg
+	0804  AR9170+AR9104 802.11abgn Wireless Adapter
+	0826  AR5523
+	0827  AR5523 (no firmware)
+	0828  AR5523
+	0829  AR5523 (no firmware)
+1436  Denali Software, Inc.
+143c  Altek Corporation
+1443  Digilent
+	0007  Development board JTAG
+1446  X.J.GROUP
+	6a73  Stamps.com Model 510 5LB Scale
+	6a78  DYMO Endicia 75lb Digital Scale
+1451  Force Dimension
+	0301  haptic device
+	0302  haptic device
+	0400  haptic device
+	0401  delta.x haptic device
+	0402  omega.x haptic device
+	0403  sigma.x haptic device
+	0404  haptic controller
+	0405  dedicated haptic device
+	0406  dedicated haptic device
+	0407  dedicated haptic device
+	0408  dedicated haptic device
+1452  Dai Nippon Printing, Inc
+	8b01  DS620
+	9001  DS820
+1453  Radio Shack
+	4026  26-183 Serial Cable
+1456  Extending Wire & Cable Co., Ltd.
+1457  First International Computer, Inc.
+	5117  OpenMoko Neo1973 kernel usbnet (g_ether, CDC Ethernet) mode
+	5118  OpenMoko Neo1973 Debug board (V2+)
+	5119  OpenMoko Neo1973 u-boot cdc_acm serial port
+	511a  HXD8 u-boot usbtty CDC ACM Mode
+	511b  SMDK2440 u-boot usbtty CDC ACM mode
+	511c  SMDK2443 u-boot usbtty CDC ACM mode
+	511d  QT2410 u-boot usbtty CDC ACM mode
+	5120  OpenMoko Neo1973 u-boot usbtty generic serial
+	5121  OpenMoko Neo1973 kernel mass storage (g_storage) mode
+	5122  OpenMoko Neo1973 / Neo Freerunner kernel cdc_ether USB network
+	5123  OpenMoko Neo1973 internal USB CSR4 module
+	5124  OpenMoko Neo1973 Bluetooth Device ID service
+145f  Trust
+	0106  K56 V92 Modem
+	013d  PC Camera (SN9C201 + OV7660)
+	013f  Megapixel Auto Focus Webcam
+	0142  WB-6250X Webcam
+	015a  WB-8300X 2MP Webcam
+	0161  15901 802.11bg Wireless Adapter [Realtek RTL8187L]
+	0167  Widescreen 3MP Webcam
+	0176  Isla Keyboard
+	019f  17676 Webcam
+	01e5  Keyboard [GXT 830]
+	0212  Panora Widescreen Graphic Tablet
+	023f  Mouse [GXT 168]
+1460  Tatung Co.
+	9150  eHome Infrared Transceiver
+1461  Staccato Communications
+1462  Micro Star International
+	5512  MegaStick-1 Flash Stick
+	8807  DIGIVOX mini III [af9015]
+146b  BigBen Interactive
+	0601  Controller for Xbox 360
+	0902  Wired Mini PS3 Game Controller
+1472  Huawei-3Com
+	0007  Aolynk WUB300g [ZyDAS ZD1211]
+	0009  Aolynk WUB320g
+147a  Formosa Industrial Computing, Inc.
+	e015  eHome Infrared Receiver
+	e016  eHome Infrared Receiver
+	e017  eHome Infrared Receiver
+	e018  eHome Infrared Receiver
+	e02c  Infrared Receiver
+	e03a  eHome Infrared Receiver
+	e03c  eHome Infrared Receiver
+	e03d  2 Channel Audio
+	e03e  Infrared Receiver [IR605A/Q]
+147e  Upek
+	1000  Biometric Touchchip/Touchstrip Fingerprint Sensor
+	1001  TCS5B Fingerprint sensor
+	1002  Biometric Touchchip/Touchstrip Fingerprint Sensor
+	2016  Biometric Touchchip/Touchstrip Fingerprint Sensor
+	2020  TouchChip Fingerprint Coprocessor (WBF advanced mode)
+	3000  TCS1C EIM/Cypress Fingerprint sensor
+	3001  TCS1C EIM/STM32 Fingerprint sensor
+147f  Hama GmbH & Co., KG
+1482  Vaillant
+	1005  VRD PC-Interface
+1484  Elsa AG [hex]
+	1746  Ecomo 19H99 Monitor
+	7616  Elsa Hub
+1485  Silicom
+	0001  U2E
+	0002  Psion Gold Port Ethernet
+1487  DSP Group, Ltd.
+148e  EVATRONIX SA
+148f  Ralink Technology, Corp.
+	1000  Motorola BC4 Bluetooth 3.0+HS Adapter
+	1706  RT2500USB Wireless Adapter
+	2070  RT2070 Wireless Adapter
+	2570  RT2570 Wireless Adapter
+	2573  RT2501/RT2573 Wireless Adapter
+	2671  RT2601/RT2671 Wireless Adapter
+	2770  RT2770 Wireless Adapter
+	2870  RT2870 Wireless Adapter
+	3070  RT2870/RT3070 Wireless Adapter
+	3071  RT3071 Wireless Adapter
+	3072  RT3072 Wireless Adapter
+	3370  RT3370 Wireless Adapter
+	3572  RT3572 Wireless Adapter
+	3573  RT3573 Wireless Adapter
+	5370  RT5370 Wireless Adapter
+	5372  RT5372 Wireless Adapter
+	5572  RT5572 Wireless Adapter
+	7601  MT7601U Wireless Adapter
+	760b  MT7601U Wireless Adapter
+	761a  MT7610U ("Archer T2U" 2.4G+5G WLAN Adapter
+	9020  RT2500USB Wireless Adapter
+	9021  RT2501USB Wireless Adapter
+1491  Futronic Technology Co. Ltd.
+	0020  FS81 Fingerprint Scanner Module
+	0088  Fingerprint Scanner Model FS88
+1493  Suunto
+	0010  Bluebird [Ambit]
+	0019  Duck [Ambit2]
+	001a  Colibri [Ambit2 S]
+	001b  Emu [Ambit3 Peak]
+	001c  Finch [Ambit3 Sport]
+	001d  Greentit [Ambit2 R]
+	001e  Ibisbill [Ambit3 Run]
+1497  Panstrong Company Ltd.
+1498  Microtek International Inc.
+	a090  DVB-T Tuner
+149a  Imagination Technologies
+	069b  PURE Digital Evoke-1XT Tri-band
+	2107  DBX1 DSP core
+14aa  WideView Technology Inc.
+	0001  Avermedia AverTV DVBT USB1.1 (cold)
+	0002  Avermedia AverTV DVBT USB1.1 (warm)
+	0201  AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (cold)
+	0221  WT-220U DVB-T dongle
+	022b  WT-220U DVB-T dongle
+	0301  AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (warm)
+14ad  CTK Corporation
+14ae  Printronix Inc.
+14af  ATP Electronics Inc.
+14b0  StarTech.com Ltd.
+	3410  Serial Adapter ICUSB2321X [TUSB3410I]
+14b2  Ralink Technology, Corp.
+	3a93  Topcom 802.11bg Wireless Adapter [Atheros AR5523]
+	3a95  Toshiba WUS-G06G-JT 802.11bg Wireless Adapter [Atheros AR5523]
+	3a98  Airlink101 AWLL4130 802.11bg Wireless Adapter [Atheros AR5523]
+	3c02  Conceptronic C54RU v2 802.11bg Wireless Adapter [Ralink RT2571]
+	3c05  rt2570 802.11g WLAN
+	3c06  Conceptronic C300RU v1 802.11bgn Wireless Adapter [Ralink RT2870]
+	3c07  802.11n adapter
+	3c09  802.11n adapter
+	3c22  Conceptronic C54RU v3 802.11bg Wireless Adapter [Ralink RT2571W]
+	3c23  Airlink101 AWLL6080 802.11bgn Wireless Adapter [Ralink RT2870]
+	3c24  NEC NP01LM 802.11abg Wireless Adapter [Ralink RT2571W]
+	3c25  DrayTek Vigor N61 802.11bgn Wireless Adapter [Ralink RT2870]
+	3c27  Airlink101 AWLL6070 802.11bgn Wireless Adapter [Ralink RT2770]
+	3c28  Conceptronic C300RU v2 802.11bgn Wireless Adapter [Ralink RT2770]
+	3c2b  NEC NP02LM 802.11bgn Wireless Adapter [Ralink RT3072]
+	3c2c  Keebox W150NU 802.11bgn Wireless Adapter [Ralink RT3070]
+14c0  Rockwell Automation, Inc.
+14c2  Gemlight Computer, Ltd
+	0250  Storage Adapter V2
+	0350  Storage Adapter V2
+14c8  Zytronic
+	0005  Touchscreen Controller
+14cd  Super Top
+	1212  microSD card reader (SY-T18)
+	121c  microSD card reader
+	121f  microSD CardReader SY-T18
+	123a  SD/MMC/RS-MMC Card Reader
+	125c  SD card reader
+	127b  SDXC Reader
+	168a  Elecom Co., Ltd MR-K013 Multicard Reader
+	6116  M6116 SATA Bridge
+	6600  M110E PATA bridge
+	6700  Card Reader
+	6900  Card Reader
+	8123  SD MMC Reader
+	8125  SD MMC Reader
+	8601  4-Port hub
+	8608  Hub [Super Top]
+14d8  JAMER INDUSTRIES CO., LTD.
+14dd  Raritan Computer, Inc.
+	1007  D2CIM-VUSB KVM connector
+14e0  WiNRADiO Communications
+	0501  WR-G528e 'CHEETAH'
+14e1  Dialogue Technology Corp.
+	5000  PenMount 5000 Touch Controller
+14e5  SAIN Information & Communications Co., Ltd.
+14ea  Planex Communications
+	ab10  GW-US54GZ
+	ab11  GU-1000T
+	ab13  GW-US54Mini 802.11bg
+14ed  Shure Inc.
+	1000  MV5
+	1002  MV51
+	1003  MVi
+	1004  SHA900
+	1005  KSE1500
+	1011  MV88+
+	1100  ANIUSB-MATRIX
+	1101  P300
+	29b6  X2u Adapter
+	3000  RMCE-USB
+14f7  TechniSat Digital GmbH
+	0001  SkyStar 2 HD CI
+	0002  SkyStar 2 HD CI
+	0003  CableStar Combo HD CI
+	0004  AirStar TeleStick 2
+	0500  DVB-PC TV Star HD
+1500  Ellisys
+1501  Pine-Tum Enterprise Co., Ltd.
+1504  Bixolon CO LTD
+	001f  SRP-350II Thermal Receipt Printer
+1508  Fibocom
+1509  First International Computer, Inc.
+	0a01  LI-3100 Area Meter
+	0a02  LI-7000 CO2/H2O Gas Analyzer
+	0a03  C-DiGit Blot Scanner
+	9242  eHome Infrared Transceiver
+1513  medMobile
+	0444  medMobile
+1514  Actel
+	2003  FlashPro3 Programmer
+	2004  FlashPro3 Programmer
+	2005  FlashPro3 Programmer
+1516  CompUSA
+	1603  Flash Drive
+	8628  Pen Drive
+1518  Cheshire Engineering Corp.
+	0001  HDReye High Dynamic Range Camera
+	0002  HDReye (before firmware loads)
+1519  Comneon
+	0020  HSIC Device
+151f  Opal Kelly Incorporated
+	0020  XEM3001v1
+	0021  XEM3001v2
+	0022  XEM3010
+	0023  XEM3005
+	0028  XEM3050
+	002b  XEM5010
+	002c  XEM6001
+	002d  XEM6010-LX45
+	002e  XEM6010-LX150
+	0030  XEM6006-LX16
+	0033  XEM6002-LX9
+	0034  XEM7001-A15
+	0036  XEM7010-A50
+	0037  XEM7010-A200
+	0120  ZEM4310
+	0121  XEM6310-LX45
+	0122  XEM6310-LX150
+	0123  XEM6310MT-LX45T
+	0125  XEM7350-K70T
+	0126  XEM7350-K160T
+	0127  XEM7350-K410T
+	0128  XEM6310MT-LX150T
+	0129  ZEM5305-A2
+	012b  XEM7360-K160T
+	012c  XEM7360-K410T
+	012d  ZEM5310-A4
+	0130  XEM7310-A75
+	0131  XEM7310-A200
+1520  Bitwire Corp.
+1524  ENE Technology Inc
+	6680  UTS 6680
+1527  Silicon Portals
+	0200  YAP Phone (no firmware)
+	0201  YAP Phone
+1529  UBIQUAM Co., Ltd.
+	3100  CDMA 1xRTT USB Modem (U-100/105/200/300/520)
+152a  Thesycon Systemsoftware & Consulting GmbH
+	8350  NET Gmbh iCube Camera
+	8400  INI DVS128
+	840d  INI DAViS
+	841a  INI DAViS FX3
+152b  MIR Srl
+	0001  spirobank II
+	0002  spirolab III
+	0003  MiniSpir
+	0004  Oxi
+	0005  spiros II
+	0006  smiths spirobank II
+	0007  smiths spirobank G-USB
+	0008  smiths MiniSpir
+	0009  spirobank G-USB
+	000a  smiths Oxi
+	000b  smiths spirolab III
+	000c  chorus III
+	000d  spirolab III Bw
+	000e  spirolab III
+	000f  easySpiro
+	0010  Spirotel converter
+	0011  spirobank
+	0012  spiro3 Zimmer
+	0013  spirotel serial
+	0014  spirotel II
+	0015  spirodoc
+152d  JMicron Technology Corp. / JMicron USA Technology Corp.
+	0539  JMS539/567 SuperSpeed SATA II/III 3.0G/6.0G Bridge
+	0551  JMS551 SuperSpeed two ports SATA 3Gb/s bridge
+	0561  JMS551 - Sharkoon SATA QuickPort Duo
+	0562  JMS567 SATA 6Gb/s bridge
+	0567  JMS567 SATA 6Gb/s bridge
+	0576  Gen1 SATA 6Gb/s Bridge
+	0578  JMS578 SATA 6Gb/s
+	0583  JMS583Gen 2 to PCIe Gen3x2 Bridge
+	0770  Alienware Integrated Webcam
+	1561  JMS561U two ports SATA 6Gb/s bridge
+	1576  External Disk 3.0
+	2329  JM20329 SATA Bridge
+	2335  ATA/ATAPI Bridge
+	2336  Hard Disk Drive
+	2337  ATA/ATAPI Bridge
+	2338  JM20337 Hi-Speed USB to SATA & PATA Combo Bridge
+	2339  JM20339 SATA Bridge
+	2352  ATA/ATAPI Bridge
+	2509  JMS539, JMS551 SATA 3Gb/s bridge
+	2551  JMS551 SATA 3Gb/s bridge
+	2561  CEB-2235S-U3 external RAID box
+	2566  JMS566 SATA 3Gb/s bridge
+	2590  JMS567 SATA 6Gb/s bridge
+	3562  JMS567 SATA 6Gb/s bridge
+	3569  JMS566 SATA 3Gb/s bridge
+	578e  JMS578 SATA 6Gb/s bridge
+	8561  salcar docking station two disks
+152e  LG (HLDS)
+	1640  INIC-1605 SATA Bridge
+	2507  PL-2507 IDE Controller
+	2571  GP08NU6W DVD-RW
+	e001  GSA-5120D DVD-RW
+1532  Razer USA, Ltd
+	0001  RZ01-020300 Optical Mouse [Diamondback]
+	0002  Diamondback Optical Mouse
+	0003  Krait Mouse
+	0005  Boomslang CE
+	0007  DeathAdder Mouse
+	0009  Gaming Mouse [Tempest Habu]
+	000a  Mamba (Wired)
+	000c  Lachesis
+	000d  DiamondBack 3G
+	000e  Megalodon
+	000f  Mamba (Wireless)
+	0012  Gaming Mouse [Salmosa]
+	0013  Orochi 2011
+	0015  Naga Mouse
+	0016  DeathAdder 3.5G
+	0017  RZ01-0035 Laser Gaming Mouse [Imperator]
+	0019  Marauder
+	001a  Spectre
+	001b  Gaming Headset
+	001c  RZ01-0036 Optical Gaming Mouse [Abyssus]
+	001e  Lachesis (5600 DPI)
+	001f  Naga Epic (Wired)
+	0020  Abyssus 1800
+	0021  Naga Epic Dock (Wireless, Bluetooth)
+	0022  Gaming Mouse [TRON]
+	0023  Gaming Keyboard [TRON]
+	0024  Mamba 2012 (Wired)
+	0025  Mamba 2012 (Wireless)
+	0029  DeathAdder Black Edition
+	002a  Gaming Mouse [Star Wars: The Old Republic]
+	002b  Gaming Keyboard [Star Wars: The Old Republic]
+	002c  Gaming Headset [Star Wars: The Old Republic]
+	002e  RZ01-0058 Gaming Mouse [Naga 2012]
+	002f  Imperator 2012
+	0031  Gaming Mouse Dock [Star Wars: The Old Republic]
+	0032  Ouroboros 2012 (Wired)
+	0033  Ouroboros 2012 (Wireless)
+	0034  Taipan
+	0035  Krait 2013 Essential
+	0036  RZ01-0075, Gaming Mouse [Naga Hex (Red)]
+	0037  DeathAdder 2013
+	0038  DeathAdder 1800
+	0039  Orochi 2013
+	003e  Naga Epic Chroma (Wired)
+	003f  Naga Epic Chroma (Wireless)
+	0040  Naga 2014
+	0041  Naga Hex
+	0042  Abyssus 2014
+	0043  DeathAdder Chroma
+	0044  Mamba Chroma (Wired)
+	0045  Mamba Chroma (Wireless)
+	0046  Mamba 2015 Tournament Edition [RZ01-01370100-R3]
+	0048  Orochi 2015 (Wired)
+	004a  RZ03-0133 Gaming Lapboard, Keyboard Mouse Combo, Dongle [Turret Dongle]
+	004c  Diamondback Chroma
+	004d  DeathAdder 2000 (Cynosa Pro Bundle)
+	004f  RZ01-0145, Gaming Mouse [DeathAdder 2000 (Alternate)]
+	0050  Naga Hex V2
+	0053  Naga Chroma
+	0054  DeathAdder 3500
+	0056  Orochi 2015 (Wireless)
+	0059  RZ01-0212 Gaming Mouse [Lancehead (Wired)]
+	005a  RZ01-0212 Gaming Mouse [Lancehead (Wireless)]
+	005b  Abyssus V2
+	005c  DeathAdder Elite
+	005e  Abyssus 2000
+	005f  DeathAdder 2000
+	0060  RZ01-0213 Gaming Mouse [Lancehead Tournament Edition]
+	0062  Atheris
+	0064  Basilisk
+	0065  RZ01-0265, Gaming Mouse [Basilisk Essential]
+	0067  Naga Trinity
+	0068  Gaming Mouse Mat [Firefly Hyperflux]
+	0069  Gaming Mouse [Mamba Hyperflux]
+	006a  Abyssus Elite (D.Va Edition)
+	006b  Abyssus Essential
+	006c  Mamba Elite (Wired)
+	006e  DeathAdder Essential
+	006f  RZ01-0257 Gaming Mouse [Lancehead Wireless (2019, Wireless, Receiver)]
+	0070  RZ01-0257 Gaming Mouse [Lancehead Wireless (2019, Wired)]
+	0071  RZ01-0254 Gaming Mouse [DeathAdder Essential White Edition]
+	0072  Mamba 2018 (Wireless)
+	0073  Mamba 2018 (Wired)
+	0078  Viper (wired)
+	007a  RC30-0305 Gaming Mouse [Viper Ultimate (Wired)]
+	007b  RC30-0305 Gaming Mouse Dongle [Viper Ultimate (Wireless)]
+	007e  RC30-030502 Mouse Dock
+	0083  RC30-0315, Gaming Mouse [Basilisk X HyperSpeed]
+	0084  RZ01-0321 Gaming Mouse [DeathAdder V2]
+	0085  RZ01-0316 Gaming Mouse [Basilisk V2]
+	0086  Gaming Mouse [Basilisk Ultimate, Wired]
+	0088  Gaming Mouse [Basilisk Ultimate, Wireless, Receiver]
+	008a  RZ01-0325, Gaming Mouse [Viper Mini]
+	0101  Copperhead Mouse
+	0102  Tarantula Keyboard
+	0103  Gaming Keyboard [Reclusa]
+	0105  Gaming Keyboard [ProType]
+	0106  Gaming Keyboard [ProType]
+	0109  Lycosa Keyboard
+	010b  Gaming Keyboard [Arctosa]
+	010d  BlackWidow Ultimate 2012
+	010e  BlackWidow Classic (Alternate)
+	010f  Anansi
+	0110  Cyclosa
+	0111  Nostromo
+	0113  RZ07-0074 Gaming Keypad [Orbweaver]
+	0114  DeathStalker Ultimate
+	0116  Blade Pro (2015)
+	0118  RZ03-0080, Gaming Keyboard [Deathstalker Essential]
+	0119  Gaming Keyboard [Lycosa]
+	011a  BlackWidow Ultimate 2013
+	011b  BlackWidow Classic
+	011c  BlackWidow Tournament Edition Stealth
+	011d  Blade 2013
+	011e  Gaming Keyboard Dock [Edge Keyboard Dock]
+	011f  Deathstalker Essential 2014
+	0200  Gaming Keyboard [Reclusa]
+	0201  Tartarus
+	0202  DeathStalker Expert
+	0203  BlackWidow Chroma
+	0204  DeathStalker Chroma
+	0205  Blade Stealth
+	0207  Orbweaver Chroma keypad
+	0208  Tartarus Chroma
+	0209  BlackWidow Tournament Edition Chroma
+	020d  Cynosa Pro keyboard (Cynosa Pro Bundle)
+	020f  Blade QHD
+	0210  Blade Pro (Late 2016)
+	0211  BlackWidow Chroma (Overwatch)
+	0214  BlackWidow Ultimate 2016
+	0215  Core
+	0216  BlackWidow X Chroma
+	0217  BlackWidow X Ultimate
+	021a  BlackWidow X Tournament Edition Chroma
+	021b  Gaming Keyboard [BlackWidow X Tournament Edition]
+	021e  Ornata Chroma
+	021f  Ornata
+	0220  Blade Stealth (2016)
+	0221  RZ03-0203 Gaming Keyboard [BlackWidow Chroma V2]
+	0224  Blade (Late 2016)
+	0225  Blade Pro (2017)
+	0226  Huntsman Elite
+	0227  Huntsman
+	0228  BlackWidow Elite
+	022a  Cynosa Chroma
+	022b  Tartarus V2
+	022c  Cynosa Chroma Pro
+	022d  Blade Stealth (Mid 2017)
+	022f  Blade Pro FullHD (2017)
+	0232  Blade Stealth (Late 2017)
+	0233  Blade 15 (2018)
+	0234  Blade Pro 17 (2019)
+	0235  BlackWidow Lite (2018)
+	0237  BlackWidow Essential
+	0239  Blade Stealth (2019)
+	023a  Blade 15 (2019) Advanced
+	023b  Blade 15 (2018) Base Model
+	023f  RZ03-0274 Gaming Keyboard [Cynosa Lite]
+	0240  Blade 15 (2018) Mercury
+	0241  BlackWidow (2019)
+	0243  Huntsman Tournament Edition
+	0244  RZ07-0311 Gaming Keypad [Tartarus Pro]
+	0245  Blade 15 (Mid 2019) Mercury
+	0246  Blade 15 (Mid 2019) Base Model
+	024a  Blade Stealth (Late 2019)
+	024b  Gaming Laptop [Blade 15 Advanced (Late 2019)]
+	024c  Gaming Laptop [Blade Pro (Late 2019)]
+	024d  Blade 15 Studio Edition (2019)
+	0253  RZ09-0330, Gaming Laptop [Blade 15 Advanced (Early 2020)]
+	0255  RZ09-0328, Gaming Laptop [Blade 15 Base Model (2020)]
+	0256  RZ09--0329, Gaming Laptop [Blade Pro 17 Full HD (2020)]
+	025d  RZ03-0338, Gaming Keyboard [Ornata V2]
+	0300  RZ06-0063 Motion Sensing Controllers [Hydra]
+	0401  Gaming Arcade Stick [Panthera]
+	0501  Kraken 7.1
+	0502  Gaming Headset [Kraken USB]
+	0504  Kraken 7.1 Chroma
+	0506  Kraken 7.1 (Alternate Version)
+	0510  Kraken 7.1 V2
+	0511  RZ19-0229 Gaming Microphone
+	0514  Electra V2 USB
+	0517  Nommo Chroma
+	0518  Nommo Pro
+	051a  Nari Ultimate
+	051c  Nari (Wireless)
+	051d  Nari (Wired)
+	051e  RC30-026902, Gaming Headset [Nari Essential, Wireless, Receiver]
+	051f  RC30-026901, Gaming Headset [Nari Essential, Wired]
+	0520  Kraken Tournament Edition
+	0521  Kraken Kitty Edition
+	0527  RZ04-0318 Gaming Headset [Kraken Ultimate]
+	0904  R201-0282 Gaming Keyboard, Mouse Combination [Turret For Xbox One]
+	0a00  Atrox Arcade Stick for Xbox One
+	0a02  ManO'War
+	0a03  Wildcat
+	0a15  RZ06-0199, Gaming Controller [Wolverine Tournament Edition]
+	0c00  RZ02-0135 Hard Gaming Mouse Mat [Firefly]
+	0c01  Goliathus
+	0c02  Goliathus Extended
+	0c04  Firefly V2
+	0e03  Gaming Webcam [Kiyo]
+	0f03  Tiamat 7.1 V2
+	0f07  Chroma Mug Holder
+	0f08  Base Station Chroma
+	0f09  Chroma HDK
+	0f0d  Laptop Stand Chroma
+	0f13  Lian Li O11 Dynamic Razer Edition
+	0f1a  Core X Chroma
+	1000  Gaming Controller [Raiju]
+	1004  Gaming Controller [Raiju Ultimate Wired]
+	1007  Gaming Controller [Raiju 2 Tournament Edition (USB)]
+	1008  Gaming Flightstick [Panthera Evo]
+	1009  Gaming Controller [Raiju 2 Ultimate Edition (BT)]
+	100a  Gaming Controller [Raiju 2 Tournament Edition (BT)]
+	110d  Bootloader (Alternate)
+	800e  Bootloader
+153b  TerraTec Electronic GmbH
+	1181  Cinergy S2 PCIe Dual Port 1
+	1182  Cinergy S2 PCIe Dual Port 2
+1546  U-Blox AG
+	01a4  Antaris 4
+	01a5  [u-blox 5]
+	01a6  [u-blox 6]
+	01a7  [u-blox 7]
+	01a8  [u-blox 8]
+	1102  LISA-U2
+1547  SG Intec Ltd & Co KG
+	1000  SG-Lock[U2]
+154a  Celectronic GmbH
+	8180  CARD STAR/medic2
+154b  PNY
+	000f  Flash Drive
+	0010  USB 2.0 Flash Drive
+	0048  Flash Drive
+	004d  8 GB Flash Drive
+	0053  Flash Drive
+	0057  32GB Micro Slide Attache Flash Drive
+	005b  Flash Drive
+	0062  Flash Drive
+	007a  Classic Attache Flash Drive
+	5408  2.5in drive enclosure
+	6000  Flash Drive
+	6545  FD Device
+	fa05  Flash Drive
+154d  ConnectCounty Holdings Berhad
+154e  D&M Holdings, Inc. (Denon/Marantz)
+	3000  Marantz RC9001 Remote Control
+154f  SNBC CO., Ltd
+1554  Prolink Microsystems Corp.
+	5010  PV-D231U(RN)-F [PixelView PlayTV SBTVD Full-Seg]
+1557  OQO
+	0002  model 01 WiFi interface
+	0003  model 01 Bluetooth interface
+	0a80  Gobi Wireless Modem (QDL mode)
+	7720  model 01+ Ethernet
+	8150  model 01 Ethernet interface
+1568  Sunf Pu Technology Co., Ltd
+156f  Quantum Corporation
+1570  ALLTOP TECHNOLOGY CO., LTD.
+157b  Ketron SRL
+157e  TRENDnet
+	3006  TEW-444UB EU [TRENDnet]
+	3007  TEW-444UB EU (no firmware)
+	300a  TEW-429UB 802.11bg
+	300b  TEW-429UB 802.11bg
+	300c  TEW-429UF A1 802.11bg Wireless Adapter [ZyDAS ZD1211B]
+	300d  TEW-429UB C1 802.11bg
+	300e  SMC SMCWUSB-N 802.11bgn 2x2:2 Wireless Adapter [Ralink RT2870]
+	3012  TEW-604UB 802.11bg Wireless Adapter [Atheros AR5523]
+	3013  TEW-645UB 802.11bgn 1x2:2 Wireless Adapter [Ralink RT2770]
+	3204  Allnet ALL0298 v2 802.11bg
+	3205  Allnet ALL0283 [AR5523]
+	3206  Allnet ALL0283 [AR5523](no firmware)
+	3207  TEW-509UB A1 802.11abg Wireless Adapter [ZyDAS ZD1211]
+	3208  TEW-509UB 1.1R 802.11abg Wireless Adapter
+1582  Fiberline
+	6003  WL-430U 802.11bg
+1587  SMA Technologie AG
+158d  Oakley Inc.
+158e  JDS Uniphase Corporation (JDSU)
+	0820  SmartPocket Class Device
+1598  Kunshan Guoji Electronics Co., Ltd.
+15a2  Freescale Semiconductor, Inc.
+	0038  9S08JS Bootloader
+	003b  USB2CAN Application for ColdFire DEMOJM board
+	0041  i.MX51 SystemOnChip in RecoveryMode
+	0042  OSBDM - Debug Port
+	004e  i.MX53 SystemOnChip in RecoveryMode
+	004f  i.MX28 SystemOnChip in RecoveryMode
+	0052  i.MX50 SystemOnChip in RecoveryMode
+	0054  i.MX 6Dual/6Quad SystemOnChip in RecoveryMode
+	0061  i.MX 6Solo/6DualLite SystemOnChip in RecoveryMode
+	006a  Vybrid series SystemOnChip in RecoveryMode
+	0076  i.MX 7Solo/7Dual SystemOnChip in RecoveryMode
+	0080  i.MX 6ULL SystemOnChip in RecoveryMode
+15a4  Afatech Technologies, Inc.
+	1000  AF9015/AF9035 DVB-T stick
+	1001  AF9015/AF9035 DVB-T stick
+	1336  SDHC/MicroSD/MMC/MS/M2/CF/XD Flash Card Reader
+	9015  AF9015 DVB-T USB2.0 stick
+	9016  AF9015 DVB-T USB2.0 stick
+15a8  Teams Power Limited
+15a9  Gemtek
+	0002  SparkLAN WL-682 802.11bg Wireless Adapter [Intersil ISL3887]
+	0004  WUBR-177G [Ralink RT2571W]
+	0006  Wireless 11n USB Adapter
+	0010  802.11n USB Wireless Card
+	0012  WUBR-208N 802.11abgn Wireless Adapter [Ralink RT2870]
+	002d  WLTUBA-107 [Yota 4G LTE]
+15aa  Gearway Electronics (Dong Guan) Co., Ltd.
+15ad  VMware Inc.
+15ba  Olimex Ltd.
+	0003  OpenOCD JTAG
+	0004  OpenOCD JTAG TINY
+	002a  ARM-USB-TINY-H JTAG interface
+	002b  ARM-USB-OCD-H JTAG+RS232
+	003c  TERES Keyboard+Touchpad
+15c0  XL Imaging
+	0001  2M pixel Microscope Camera
+	0002  3M pixel Microscope Camera
+	0003  1.3M pixel Microscope Camera (mono)
+	0004  1.3M pixel Microscope Camera (colour)
+	0005  3M pixel Microscope Camera (Mk 2)
+	0006  2M pixel Microscope Camera (with capture button)
+	0007  3M pixel Microscope Camera (with capture button)
+	0008  1.3M pixel Microscope Camera (colour, with capture button)
+	0009  1.3M pixel Microscope Camera (colour, with capture button)
+	000a  2M pixel Microscope Camera (Mk 2)
+	0010  1.3M pixel "Tinycam"
+	0101  3M pixel Microscope Camera
+15c2  SoundGraph Inc.
+	0036  LC16M VFD Display/IR Receiver
+	0038  GD01 MX LCD Display/IR Receiver
+	0042  Antec Veris Multimedia Station E-Z IR Receiver
+	ffda  iMON PAD Remote Controller
+	ffdc  iMON PAD Remote Controller
+15c5  Pressure Profile Systems, Inc.
+	0008  Advance Multimedia Internet Technology Inc. (AMIT) WL532U 802.11g Adapter
+15c6  Laboratoires MXM
+	1000  DigistimSP (cold)
+	1001  DigistimSP (warm)
+	1002  DigimapSP USB (cold)
+	1003  DigimapSP USB (warm)
+	1004  DigistimSP (cold)
+	1005  DigistimSP (warm)
+	1100  Odyssee (cold)
+	1101  Odyssee (warm)
+	1200  Digispy
+15c8  KTF Technologies
+	3201  EVER EV-W100/EV-W250
+15c9  D-Box Technologies
+15ca  Textech International Ltd.
+	00c3  Mini Optical Mouse
+	0101  MIDI Interface cable
+	1806  MIDI Interface cable
+15d5  Coulomb Electronics Ltd.
+15d9  Trust International B.V.
+	0a33  Optical Mouse
+	0a37  Mouse
+	0a41  MI-2540D [Optical mouse]
+	0a4c  USB+PS/2 Optical Mouse
+	0a4d  Optical Mouse
+	0a4e  AM-5400 [Optical Mouse]
+	0a4f  Optical Mouse
+15dc  Hynix Semiconductor Inc.
+15e0  Seong Ji Industrial Co., Ltd.
+15e1  RSA
+	2007  RSA SecurID (R) Authenticator
+15e4  Numark
+	0024  Mixtrack
+	003c  DJ2GO2 Touch
+	0140  ION VCR 2 PC / Video 2 PC
+	3f00  Power A Mini Pro Elite
+	3f0a  Airflo Wired Controller for Xbox 360
+	3f10  Batarang controller for Xbox 360
+15e8  SohoWare
+	9100  NUB100 Ethernet [pegasus]
+	9110  10/100 USB Ethernet
+15e9  Pacific Digital Corp.
+	04ce  MemoryFrame MF-570
+	1968  MemoryFrame MF-570
+	1969  Digital Frame
+15ec  Belcarra Technologies Corp.
+15f4  HanfTek
+	0001  HanfTek UMT-010 USB2.0 DVB-T (cold)
+	0025  HanfTek UMT-010 USB2.0 DVB-T (warm)
+	0131  Astrometa DVB-T/T2/C FM & DAB receiver [RTL2832P]
+	0135  Astrometa T2hybrid
+1604  Tascam
+	10c0  Dell Integrated Hub
+	8000  US-428 Audio/Midi Controller (without fw)
+	8001  US-428 Audio/Midi Controller
+	8004  US-224 Audio/Midi Controller (without fw)
+	8005  US-224 Audio/Midi Controller
+	8006  US-122 Audio/Midi Interface (without fw)
+	8007  US-122 Audio/Midi Interface
+1605  ACCES I/O Products, Inc.
+	0001  DIO-32 (No Firmware Yet)
+	0002  USB-DIO-48 (No Firmware Yet)
+	0003  USB-DIO-96 (No Firmware Yet)
+	0004  USB-DIO-32I (No Firmware Yet)
+	0005  USB-DIO24 (based on -CTR6) (No Firmware Yet)
+	0006  USB-DIO24-CTR6 (No Firmware Yet)
+1606  Umax
+	0002  Astra 1236U Scanner
+	0010  Astra 1220U
+	0030  Astra 1600U/2000U
+	0050  Scanner
+	0060  Astra 3400/3450
+	0070  Astra 4400/4450
+	0130  Astra 2100U
+	0160  Astra 5400U
+	0170  Uniscan D50
+	0230  Astra 2200/2200SU
+	0350  Astra 4800/4850 Scanner
+	1030  Astra 4000U
+	1220  Genesys Logic Scanner Controller NT5.0
+	2010  AstraCam Digital Camera
+	2020  AstraCam 1000
+	2030  AstraCam 1800 Digital Camera
+1608  Inside Out Networks [hex]
+	0001  EdgePort/4 Serial Port
+	0002  Edgeport/8
+	0003  Rapidport/4
+	0004  Edgeport/4
+	0005  Edgeport/2
+	0006  Edgeport/4i
+	0007  Edgeport/2i
+	0008  Edgeport/8
+	000c  Edgeport/421
+	000d  Edgeport/21
+	000e  Edgeport/4
+	000f  Edgeport/8
+	0010  Edgeport/2
+	0011  Edgeport/4
+	0012  Edgeport/416
+	0014  Edgeport/8i
+	0018  Edgeport/412
+	0019  Edgeport/412
+	001a  Edgeport/2+2i
+	0101  Edgeport/4
+	0105  Edgeport/2
+	0106  Edgeport/4i
+	0107  Edgeport/2i
+	010c  Edgeport/421
+	010d  Edgeport/21
+	0110  Edgeport/2
+	0111  Edgeport/4
+	0112  Edgeport/416
+	0114  Edgeport/8i
+	0201  Edgeport/4
+	0203  Rapidport/4
+	0204  Edgeport/4
+	0205  Edgeport/2
+	0206  Edgeport/4i
+	0207  Edgeport/2i
+	020c  Edgeport/421
+	020d  Edgeport/21
+	020e  Edgeport/4
+	020f  Edgeport/8
+	0210  Edgeport/2
+	0211  Edgeport/4
+	0212  Edgeport/416
+	0214  Edgeport/8i
+	0215  Edgeport/1
+	0216  EPOS/44
+	0217  Edgeport/42
+	021a  Edgeport/2+2i
+	021b  Edgeport/2c
+	021c  Edgeport/221c
+	021d  Edgeport/22c
+	021e  Edgeport/21c
+	021f  Edgeport/62
+	0240  Edgeport/1
+	0241  Edgeport/1i
+	0242  Edgeport/4s
+	0243  Edgeport/8s
+	0244  Edgeport/8
+	0245  Edgeport/22c
+	0301  Watchport/P
+	0302  Watchport/M
+	0303  Watchport/W
+	0304  Watchport/T
+	0305  Watchport/H
+	0306  Watchport/E
+	0307  Watchport/L
+	0308  Watchport/R
+	0309  Watchport/A
+	030a  Watchport/D
+	030b  Watchport/D
+	030c  Power Management Port
+	030e  Power Management Port
+	030f  Watchport/G
+	0310  Watchport/Tc
+	0311  Watchport/Hc
+	1403  MultiTech Systems MT4X56 Modem
+	1a17  Agilent Technologies (E6473)
+160a  VIA Technologies, Inc.
+	3184  VIA VNT-6656 [WiFi 802.11b/g USB Dongle]
+160e  INRO
+	0001  E2USBKey
+1614  Amoi Electronics
+	0404  WMA9109 UMTS Phone
+	0600  Vodafone VDA GPS / Toschiba Protege G710
+	0804  WP-S1 Phone
+1617  Sony Corp.
+	2002  NVX-P1 Personal Navigation System
+1619  L & K Precision Technology Co., Ltd.
+161c  Digitech Systems
+	0002  DTC-02U [Digi Touch Controller]
+1621  Wionics Research
+1628  Stonestreet One, Inc.
+162a  Airgo Networks Inc.
+162f  WiQuest Communications, Inc.
+1630  2Wire, Inc.
+	0005  802.11g Wireless Adapter [Intersil ISL3886]
+	0011  PC Port 10 Mps Adapter
+	ff81  802.11b Wireless Adapter [Lucent/Agere Hermes I]
+1631  Good Way Technology
+	6200  GWUSB2E
+	c019  RT2573
+1633  AIM GmbH
+	4510  ASC1553
+	4520  ASC429
+	4560  ASC-FDX
+1645  Entrega [hex]
+	0001  1S Serial Port
+	0002  2S Serial Port
+	0003  1S25 Serial Port
+	0004  4S Serial Port
+	0005  E45 Ethernet [klsi]
+	0006  Parallel Port
+	0007  U1-SC25 SCSI
+	0008  Ethernet
+	0016  Bi-directional to Parallel Printer Converter
+	0080  1 port to Serial Converter
+	0081  1 port to Serial Converter
+	0093  1S9 Serial Port
+	8000  EZ-USB
+	8001  1 port to Serial
+	8002  2x Serial Port
+	8003  1 port to Serial
+	8004  2U4S serial/usb hub
+	8005  Ethernet
+	8080  1 port to Serial
+	8081  1 port to Serial
+	8093  PortGear Serial Port
+1649  SofTec Microsystems
+	0102  uDART In-Circuit Debugger
+	0200  SpYder USBSPYDER08
+164a  ChipX
+164c  Matrix Vision GmbH
+	0101  mvBlueFOX camera (no firmware)
+	0103  mvBlueFOX camera
+	0201  mvBlueLYNX-X intelligent camera (bootloader)
+	0203  mvBlueLYNX-X intelligent camera
+1657  Struck Innovative Systeme GmbH
+	3150  SIS3150 USB2.0 to VME interface
+165b  Frontier Design Group
+	8101  Tranzport Control Surface
+	fad1  Alphatrack Control Surface
+165c  Kondo Kagaku
+	0002  Serial Adapter
+	0006  FT232 [ICS adapter HS]
+	0008  FT232 [Dual adapter HS]
+1660  Creatix Polymedia GmbH
+1667  GIGA-TMS INC.
+	0005  PCR330A RFID Reader (125 kHz, keyboard emulation)
+1668  Actiontec Electronics, Inc. [hex]
+	0009  Gateway
+	0333  Modem
+	0358  InternetPhoneWizard
+	0405  Gateway
+	0408  Prism2.5 802.11b Adapter
+	0413  Gateway
+	0421  Prism2.5 802.11b Adapter
+	0441  IBM Integrated Bluetooth II
+	0500  BTM200B BlueTooth Adapter
+	1050  802UIG-1 802.11g Wireless Mini Adapter [Intersil ISL3887]
+	1200  802AIN Wireless N Network Adapter [Atheros AR9170+AR9101]
+	1441  IBM Integrated Bluetooth II
+	2441  BMDC-2 IBM Bluetooth III w.56k
+	3441  IBM Integrated Bluetooth III
+	6010  Gateway
+	6097  802.11b Wireless Adapter
+	6106  802UI3(B) 802.11b Wireless Adapter [Intersil PRISM 3]
+	7605  UAT1 Wireless Ethernet Adapter
+1669  PiKRON Ltd. [hex]
+	1001  uLan2USB Converter - PS1 protocol
+166a  Clipsal
+	0101  C-Bus Multi-room Audio Matrix Switcher
+	0201  C-Bus Pascal Automation Controller
+	0301  C-Bus Wireless PC Interface
+	0303  C-Bus interface
+	0304  C-Bus Black and White Touchscreen
+	0305  C-Bus Spectrum Colour Touchscreen
+	0401  C-Bus Architectural Dimmer
+1677  China Huada Integrated Circuit Design (Group) Co., Ltd. (CIDC Group)
+	0103  Token
+1679  Total Phase
+	2001  Beagle Protocol Analyzer
+	2002  Cheetah SPI Host Adapter
+167b  Pure Digital Technologies, Inc.
+	2009  Flip Ultra U1120
+1680  Golden Bridge Electech Inc.
+	a332  DVB-T Dongle [RTL2832U]
+1681  Prevo Technologies, Inc.
+	0001  Tuner's Dashboard
+	0002  DocuBrain(R) Tubachron
+	0003  DocuBrain(R) I2C
+	0004  DocuBrain(R) WWVB Receiver
+	0005  DocuBrain(R) WWVB Transmitter
+1682  Maxwise Production Enterprise Ltd.
+1684  Godspeed Computer Corp.
+1685  Delock
+	0200  Infrared adapter
+1686  ZOOM Corporation
+	0045  Handy Recorder stereo mix
+	01c0  Zoom Handy Recorder card reader
+	01c5  Zoom Handy Recorder multi track
+	03d5  LiveTrak L-12
+1687  Kingmax Digital Inc.
+	5289  FlashDisk
+	6211  FlashDisk
+	6213  FlashDisk
+1688  Saab AB
+1689  Razer USA, Ltd
+	fd00  Onza Tournament Edition controller
+	fd01  Onza Classic Edition
+	fe00  Sabertooth Elite
+168c  Atheros Communications
+	0001  AR5523
+	0002  AR5523 (no firmware)
+1690  Askey Computer Corp. [hex]
+	0001  Arcaze Gamepad
+	0101  Creative Modem Blaster DE5670
+	0102  V1456 VQE-R2 Modem [conexant]
+	0103  1456 VQE-R3 Modem [conexant]
+	0104  HCF V90 Data Fax RTAD Modem
+	0107  HCF V.90 Data,Fax,RTAD Modem
+	0109  MagicXpress V.90 Pocket Modem [conexant]
+	0203  Voyager ADSL Modem Loader
+	0204  Voyager ADSL Modem
+	0205  DSL Modem
+	0206  GlobeSpan ADSL WAN Modem
+	0208  DSL Modem
+	0209  Voyager 100 ADSL Modem
+	0211  Globespan Virata ADSL LAN Modem
+	0212  DSL Modem
+	0213  HM121d DSL Modem
+	0214  HM121d DSL Modem
+	0215  Voyager 105 ADSL Modem
+	0701  WLAN
+	0710  SMCWUSBT-G
+	0711  SMCWUSBT-G (no firmware)
+	0712  AR5523
+	0713  AR5523 (no firmware)
+	0715  Name: Voyager 1055 Laptop 802.11g Adapter [Broadcom 4320]
+	0722  RT2573
+	0726  Wi-Fi Wireless LAN Adapter
+	0740  802.11n Wireless LAN Card
+	0901  Voyager 205 ADSL Router
+	2000  naturaSign Pad Standard
+	2001  naturaSign Pad Standard
+	fe12  Bootloader
+1696  Hitachi Video and Information System, Inc.
+1697  VTec Test, Inc.
+16a5  Shenzhen Zhengerya Cable Co., Ltd.
+16a6  Unigraf
+	3000  VTG-3xxx Video Test Generator family
+	4000  VTG-4xxx Video Test Generator family
+	5000  VTG-5xxx Video Test Generator family
+	5001  VTG-5xxx Special (update) mode of VTG-5xxx family
+16ab  Global Sun Technology
+	7801  AR5523
+	7802  AR5523 (no firmware)
+	7811  AR5523
+	7812  AR5523 (no firmware)
+16ac  Dongguan ChingLung Wire & Cable Co., Ltd.
+16b4  iStation
+	0801  U43
+16b5  Persentec, Inc.
+	0002  Otto driving companion
+16c0  Van Ooijen Technische Informatica
+	03e8  free for internal lab use 1000
+	03e9  free for internal lab use 1001
+	03ea  free for internal lab use 1002
+	03eb  free for internal lab use 1003
+	03ec  free for internal lab use 1004
+	03ed  free for internal lab use 1005
+	03ee  free for internal lab use 1006
+	03ef  free for internal lab use 1007
+	03f0  free for internal lab use 1008
+	03f1  free for internal lab use 1009
+	0477  Teensy Rebootor
+	0478  Teensy Halfkay Bootloader
+	0479  Teensy Debug
+	047a  Teensy Serial
+	047b  Teensy Serial+Debug
+	047c  Teensy Keyboard
+	047d  Teensy Keyboard+Debug
+	047e  Teensy Mouse
+	047f  Teensy Mouse+Debug
+	0480  Teensy RawHID
+	0481  Teensy RawHID+Debug
+	0482  Teensyduino Keyboard+Mouse+Joystick
+	0483  Teensyduino Serial
+	0484  Teensyduino Disk
+	0485  Teensyduino MIDI
+	0486  Teensyduino RawHID
+	0487  Teensyduino Serial+Keyboard+Mouse+Joystick
+	0488  Teensyduino Flight Sim Controls
+	05b5  BU0836
+	05dc  shared ID for use with libusb
+	05dd  BlackcatUSB2
+	05de  Flashcat
+	05df  HID device except mice, keyboards, and joysticks
+	05e1  Free shared USB VID/PID pair for CDC devices
+	05e4  Free shared USB VID/PID pair for MIDI devices
+	06b4  USB2LPT with 2 interfaces
+	06b5  USB2LPT with 3 interfaces (native, HID, printer)
+	074e  DSP-Weuffen USB-HPI-Programmer
+	074f  DSP-Weuffen USB2-HPI-Programmer
+	0762  Osmocom SIMtrace
+	076b  OpenPCD 13.56MHz RFID Reader
+	076c  OpenPICC 13.56MHz RFID Simulator (native)
+	08ac  OpenBeacon USB stick
+	08ca  Alpermann+Velte Universal Display
+	08cb  Alpermann+Velte Studio Clock
+	08cc  Alpermann+Velte SAM7S MT Boot Loader
+	08cd  Alpermann+Velte SAM7X MT Boot Loader
+	09ce  LINKUSB
+	0a32  jbmedia Light-Manager Pro
+	27d8  libusb-bound devices
+	27d9  HID device except mice, keyboards, and joysticks
+	27da  Mouse
+	27db  Keyboard
+	27dc  Joystick
+	27dd  CDC-ACM class devices (modems)
+	27de  MIDI class devices
+	294a  Eye Movement Recorder [Visagraph]
+	294b  Eye Movement Recorder [ReadAlyzer]
+16ca  Wireless Cables, Inc.
+	1502  Bluetooth Dongle
+16cc  silex technology, Inc.
+16d0  MCS
+	0436  Xylanta Ltd, XSP Device
+	0498  Braintechnology USB-LPS
+	0504  RETRO Innovations ZoomFloppy
+	054b  GrauTec ReelBox OLED Display (external)
+	05be  EasyLogic Board
+	05f0  Superior Freedom Programmable IR Remote
+	06cc  Trinamic TMCM-3110
+	06f0  Axium AX-R4C Controller
+	06f1  Axium AX-R1D Controller
+	06f9  Gabotronics Xminilab
+	0726  Autonomic M400 Amplifier
+	0727  Autonomic M800 Amplifier
+	0753  Digistump DigiSpark
+	075c  AB-1.x UAC1 [Audio Widget]
+	075d  AB-1.x UAC2 [Audio Widget]
+	07cc  Xylanta Ltd, Saint3 Device
+	07f8  Axium AX-R4D Controller
+	080a  S2E1 Interface
+	0830  DMXControl Projects e.V., Nodle U1
+	0831  DMXControl Projects e.V., Desklamp
+	0832  DMXControl Projects e.V., Nodle U2
+	0833  DMXControl Projects e.V., Nodle R4S
+	0870  Kaufmann Automotive GmbH, RKS+CAN Interface
+	09f2  Axium AX-1250 Amplifier
+	09f4  Axium AX-Mini4 Amplifier
+	0b03  AIS Receiver [dAISy]
+	0b7d  Autonomic M801 Amplifier
+	0b7e  Autonomic M401 Amplifier
+	0b7f  Autonomic M120e Amplifier
+	0bd4  codesrc SCSI2SD
+	0c9b  Fermium LABS srl/LabTrek srl Hall Effect Apparatus
+	0d3c  InputStick BT4.0
+	0e1e  AtomMiner
+16d1  Suprema Inc.
+	0401  SUP-SFR400(A) BioMini Fingerprint Reader
+16d3  Frontline Test Equipment, Inc.
+16d5  AnyDATA Corporation
+	6202  CDMA/UMTS/GPRS modem
+	6501  CDMA 2000 1xRTT/EV-DO Modem
+	6502  CDMA/UMTS/GPRS modem
+	6603  ADU-890WH modem
+16d6  JABLOCOM s.r.o.
+	8000  GDP-04 desktop phone
+	8001  EYE-02
+	8003  GDP-04 modem
+	8004  Bootloader
+	8005  GDP-04i
+	8007  BTP-06 modem
+16d8  CMOTECH Co., Ltd.
+	5141  CMOTECH CDMA Technologies modem
+	5533  CCU-550 CDMA EV-DO modem
+	5543  CDMA 2000 1xRTT/1xEVDO modem
+	6280  CMOTECH CDMA Technologies modem
+	6803  CNU-680 CDMA EV-DO modem
+	8001  Gobi 2000 Wireless Modem (QDL mode)
+	8002  Gobi 2000 Wireless Modem
+16dc  Wiener, Plein & Baus
+	0001  CC
+	000b  VM
+	0010  PL512 Power Supply System
+	0011  MARATON Power Supply System
+	0012  MPOD Multi Channel Power Supply System
+	0015  CML Control, Measurement and Data Logging System
+16de  Telemecanique
+16df  King Billion Electronics Co., Ltd.
+16f0  GN Hearing A/S
+	0001  Speedlink Programming Interface
+	0003  Airlink Wireless Programming Interface
+	0004  Accessory Programming Interface
+16f5  Futurelogic Inc.
+1702  FDI-MATELEC
+	0002  Encodeur
+1706  BlueView Technologies, Inc.
+1707  ARTIMI
+170b  Swissonic
+	0011  MIDI-USB 1x1
+170d  Avnera
+1711  Leica Microsystems
+	0101  DFC-365FX camera
+	3020  IC80 HD Camera
+1724  Meyer Instruments (MIS)
+	0115  PAXcam5
+1725  Vitesse Semiconductor
+1726  Axesstel, Inc.
+	1000  wireless modem
+	2000  wireless modem
+	3000  wireless modem
+172f  Waltop International Corp.
+	0022  Tablet
+	0024  Tablet
+	0025  Tablet
+	0026  Tablet
+	0031  Slim Tablet 12.1"
+	0032  Slim Tablet 5.8"
+	0034  Slim Tablet 12.1"
+	0038  Genius G-Pen F509
+	0500  Media Tablet 14.1"
+	0501  Media Tablet 10.6"
+	0502  Sirius Battery Free Tablet
+1733  Cellink Technology Co., Ltd
+	0101  RF Wireless Optical Mouse OP-701
+1736  CANON IMAGING SYSTEM TECHNOLOGIES INC.
+1737  802.11g Adapter [Linksys WUSB54GC v3]
+	0039  USB1000 Gigabit Notebook Adapter
+	0070  WUSB100 v1 RangePlus Wireless Network Adapter [Ralink RT2870]
+	0071  WUSB600N v1 Dual-Band Wireless-N Network Adapter [Ralink RT2870]
+	0073  WUSB54GC v2 802.11g Adapter [Realtek RTL8187B]
+	0075  WUSB54GSC v2 802.11g Adapter [Broadcom 4326U]
+	0077  WUSB54GC v3 802.11g Adapter [Ralink RT2070L]
+	0078  WUSB100 v2 RangePlus Wireless Network Adapter [Ralink RT3070]
+	0079  WUSB600N v2 Dual-Band Wireless-N Network Adapter [Ralink RT3572]
+173a  Roche
+	2198  Accu-Chek Mobile
+	21ca  ACCU-CHEK Mobile Model U1
+173d  QSENN
+	0002  GP-K7000 keyboard
+1740  Senao
+	0100  EUB1200AC AC1200 DB Wireless Adapter [Realtek RTL8812AU]
+	0600  EUB600v1 802.11abgn Wireless Adapter [Ralink RT3572]
+	0605  LevelOne WUA-0605 N_Max Wireless USB Adapter
+	0615  LevelOne WUA-0615 N_Max Wireless USB Adapter
+	1000  NUB-350 802.11g Wireless Adapter [Intersil ISL3887]
+	2000  NUB-8301 802.11bg
+	3701  EUB-3701 EXT 802.11g Wireless Adapter [Ralink RT2571W]
+	9603  RTL8188S WLAN Adapter
+	9701  EnGenius 802.11n Wireless USB Adapter
+	9702  EnGenius 802.11n Wireless USB Adapter
+	9703  EnGenius 802.11n Wireless USB Adapter
+	9705  EnGenius 802.11n Wireless USB Adapter
+	9706  EUB9706 802.11n Wireless Adapter [Ralink RT3072]
+	9801  EUB9801 802.11abgn Wireless Adapter [Ralink RT3572]
+1743  General Atomics
+1748  MQP Electronics
+	0101  Packet-Master USB12
+174c  ASMedia Technology Inc.
+	07d1  Transcend ESD400 Portable SSD (USB 3.0)
+	1151  ASM1151W
+	1153  ASM1153 SATA 3Gb/s bridge
+	2074  ASM1074 High-Speed hub
+	3074  ASM1074 SuperSpeed hub
+	5106  ASM1051 SATA 3Gb/s bridge
+	5136  ASM1053 SATA 3Gb/s bridge
+	51d6  ASM1051W SATA 3Gb/s bridge
+	55aa  ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
+174f  Syntek
+	1105  SM-MS/Pro-MMC-XD Card Reader
+	110b  HP Webcam
+	1122  HP Webcam
+	1169  Lenovo EasyCamera
+	1403  Integrated Webcam
+	1404  USB Camera device, 1.3 MPixel Web Cam
+	1758  XYZ printing cameraR2
+	1759  XYZ printing cameraL2
+	5212  USB 2.0 UVC PC Camera
+	5a11  PC Camera
+	5a31  Sonix USB 2.0 Camera
+	5a35  Sonix 1.3MPixel USB 2.0 Camera
+	6a31  Web Cam - Asus A8J, F3S, F5R, VX2S, V1S
+	6a33  Web Cam - Asus F3SA, F9J, F9S
+	6a51  2.0MPixel Web Cam - Asus Z96J, Z96S, S96S
+	6a54  Web Cam
+	6d51  2.0Mpixel Web Cam - Eurocom D900C
+	8a12  Syntek 0.3MPixel USB 2.0 UVC PC Camera
+	8a33  Syntek USB 2.0 UVC PC Camera
+	a311  1.3MPixel Web Cam - Asus A3A, A6J, A6K, A6M, A6R, A6T, A6V, A7T, A7sv, A7U
+	a312  1.3MPixel Web Cam
+	a821  Web Cam - Packard Bell BU45, PB Easynote MX66-208W
+	aa11  Web Cam
+1753  GERTEC Telecomunicacoes Ltda.
+	c901  PPC900 Pinpad Terminal
+1756  ENENSYS Technologies
+	0006  DiviPitch
+1759  LucidPort Technology, Inc.
+1761  ASUSTek Computer, Inc. (wrong ID)
+	0b05  802.11n Network Adapter (wrong ID - swapped vendor and device)
+1770  MSI
+	ff00  steel series rgb keyboard
+1772  System Level Solutions, Inc.
+1776  Arowana
+	501c  300K CMOS Camera
+1777  Microscan Systems, Inc.
+	0003  MicroHAWK ID-20
+177f  Sweex
+	0004  MM004V5 Photo Key Chain (Digital Photo Frame) 1.5"
+	0153  LW153 802.11n Adapter [ralink rt3070]
+	0154  LW154 802.11bgn (1x1:1) Wireless Adapter [Realtek RTL8188SU]
+	0313  LW313 802.11n Adapter [ralink rt2770 + rt2720]
+1781  Multiple Vendors
+	07df  Axium AX-800DAV Amplifier
+	07e1  Axium AX-KPC Keypad
+	07e2  Axium AX-KPD Keypad
+	07e3  Axium AX-400DA Amplifier
+	083e  MetaGeek Wi-Spy
+	083f  MetaGeek Wi-Spy 2.4x
+	0938  Iguanaworks USB IR Transceiver
+	0941  qNimble Quark
+	0a96  raphnet.net usb_game12
+	0a97  raphnet.net SNES mouse adapter
+	0a98  raphnet.net USBTenki
+	0a99  raphnet.net NES
+	0a9a  raphnet.net Gamecube/N64 controller
+	0a9b  raphnet.net DB9Joy
+	0a9c  raphnet.net Intellivision
+	0a9d  raphnet.net 4nes4snes
+	0a9e  raphnet.net Megadrive multitap
+	0a9f  raphnet.net MultiDB9joy
+	0bad  Mantracourt Load Cell
+	0c30  Telldus TellStick
+	0c31  Telldus TellStick Duo
+	0c9f  USBtiny
+	1eef  OpenAPC SecuKey
+	1ef0  E1701 Modular Controller Card
+	1ef1  E1701 Modular Controller Card
+	1ef2  E1803 Compact Controller Card
+1782  Spreadtrum Communications Inc.
+	3d00  F200n mobile phone
+1784  TopSeed Technology Corp.
+	0001  eHome Infrared Transceiver
+	0004  RF Combo Device
+	0006  eHome Infrared Transceiver
+	0007  eHome Infrared Transceiver
+	0008  eHome Infrared Transceiver
+	000a  eHome Infrared Transceiver
+	0011  eHome Infrared Transceiver
+1787  ATI AIB
+1788  ShenZhen Litkconn Technology Co., Ltd.
+178e  ASUSTek Computer, Inc. (wrong ID)
+	0b05  CrossLink cable 2GB (wrong ID - swapped vendor and device)
+1796  Printrex, Inc.
+1797  JALCO CO., LTD.
+1799  Thales Norway A/S
+	7051  Belkin F5D7051 802.11g Adapter v1000 [Broadcom 4320]
+	8051  Belkin F5D8051 v2 802.11bgn Wireless Adapter [Marvell 88W8362]
+179d  Ricavision International, Inc.
+	0010  Internal Infrared Transceiver
+17a0  Samson Technologies Corp.
+	0001  C01U condenser microphone
+	0002  Q1U dynamic microphone
+	0100  C03U multi-pattern microphone
+	0101  UB1 boundary microphone
+	0120  Meteorite condenser microphone
+	0130  Go Mic Direct
+	0132  Go Mic Mobile wireless receiver
+	0200  StudioDock monitors (internal hub)
+	0201  StudioDock monitors (audio)
+	0210  StudioGT monitors
+	0211  StudioGT monitors [CM6400]
+	0240  Go Mic Connect
+	0241  G-Track Pro microphone
+	0301  Q2U handheld microphone with XLR
+	0302  GoMic compact condenser microphone
+	0303  C01U Pro condenser microphone
+	0304  Q2U handheld mic with XLR
+	0305  GoMic compact condenser mic
+	0310  Meteor condenser microphone
+	0311  Satellite condenser microphone
+	1616  RXD1 wireless receiver
+	b241  G-Track Pro firmware update
+	b311  Satellite firmware update
+17a4  Concept2
+	0001  Performance Monitor 3
+	0002  Performance Monitor 4
+17a5  Advanced Connection Technology Inc.
+17a7  MICOMSOFT CO., LTD.
+17a8  Kamstrup A/S
+	0001  Optical Eye/3-wire
+	0005  M-Bus Master MultiPort 250D
+	0010  444MHz Radio Mesh Frontend
+	0011  444MHz RF sniffer
+	0012  870MHz Radio Mesh Frontend
+	0013  870MHz RF sniffer
+17b3  Grey Innovation
+	0004  Linux-USB Midi Gadget
+17b5  Lunatone
+	0010  MFT Sensor
+17ba  SAURIS GmbH
+	0001  SAU510-USB [no firmware]
+	0510  SAU510-USB and SAU510-USB plus JTAG Emulators
+	0511  SAU510-USB Iso Plus JTAG Emulator
+	0520  SAU510-USB Nano JTAG Emulator
+	1511  Onboard Emulator on SAUModule development kit
+17c3  Singim International Corp.
+17cc  Native Instruments
+	041c  Audio 2 DJ
+	041d  Traktor Audio 2
+	0808  Maschine Controller
+	0815  Audio Kontrol 1
+	0839  Audio 4 DJ
+	0d8d  Guitarrig Mobile
+	1001  Komplete Audio 6
+	1110  Maschine Mikro
+	1915  Session I/O
+	1940  RigKontrol3
+	1969  RigKontrol2
+	1978  Audio 8 DJ
+	2280  Medion MDPNA1500 in card reader mode
+	2305  Traktor Kontrol X1
+	4711  Kore Controller
+	4712  Kore Controller 2
+	baff  Traktor Kontrol S4
+17cf  Hip Hing Cable & Plug Mfy. Ltd.
+17d0  Sanford L.P.
+17d3  Korea Techtron Co., Ltd.
+17e9  DisplayLink
+	0051  USB VGA Adaptor
+	0198  DisplayLink
+	019e  Overfly FY-1016A
+	028f  HIS Multi-View II
+	030b  HP T100
+	0377  Plugable UD-160-A (M)
+	0378  Plugable UGA-2K-A
+	0379  Plugable UGA-125
+	037a  Plugable UGA-165
+	037b  Plugable USB-VGA-165
+	037c  Plugable DC-125
+	037d  Plugable USB2-HDMI-165
+	410a  HDMI Adapter
+	430a  HP Port Replicator (Composite Device)
+	430f  Kensington Dock (Composite Device)
+	4312  S2340T
+	436e  Dell D3100 Docking Station
+	ff10  I1659FWUX {AOC Powered Monitor]
+17eb  Cornice, Inc.
+17ef  Lenovo
+	1000  ThinkPad X6 UltraBase
+	1003  Integrated Smart Card Reader
+	1004  Integrated Webcam
+	1005  ThinkPad X200 Ultrabase (42X4963 )
+	1008  Hub
+	100a  ThinkPad Mini Dock Plus Series 3
+	100f  ThinkPad Ultra Dock Hub
+	1010  ThinkPad Ultra Dock Hub
+	1020  ThinkPad Dock Hub
+	1021  ThinkPad Dock Hub [Cypress HX2VL]
+	3049  ThinkPad OneLink integrated audio
+	304b  AX88179 Gigabit Ethernet [ThinkPad OneLink GigaLAN]
+	304f  RTL8153 Gigabit Ethernet [ThinkPad OneLink Pro Dock]
+	3060  ThinkPad Dock
+	3062  ThinkPad Dock Ethernet [Realtek RTL8153B]
+	3063  ThinkPad Dock Audio
+	3066  ThinkPad Thunderbolt 3 Dock MCU
+	3069  ThinkPad TBT3 LAN
+	306a  ThinkPad Thunderbolt 3 Dock Audio
+	3815  ChipsBnk 2GB USB Stick
+	4802  Vc0323+MI1310_SOC Camera
+	4807  UVC Camera
+	480c  Integrated Webcam
+	480d  Integrated Webcam [R5U877]
+	480e  Integrated Webcam [R5U877]
+	480f  Integrated Webcam [R5U877]
+	4810  Integrated Webcam [R5U877]
+	4811  Integrated Webcam [R5U877]
+	4812  Integrated Webcam [R5U877]
+	4813  Integrated Webcam [R5U877]
+	4814  Integrated Webcam [R5U877]
+	4815  Integrated Webcam [R5U877]
+	4816  Integrated Webcam
+	481c  Integrated Webcam
+	481d  Integrated Webcam
+	6004  ISD-V4 Tablet Pen
+	6007  Smartcard Keyboard
+	6009  ThinkPad Keyboard with TrackPoint
+	600e  Optical Mouse
+	6014  Mini Wireless Keyboard N5901
+	6019  M-U0025-O Mouse
+	6022  Ultraslim Plus Wireless Keyboard and Mouse
+	6025  ThinkPad Travel Mouse
+	602d  Black Silk Keyboard
+	6032  Wireless Dongle for Keyboard and Mouse
+	6044  ThinkPad Laser Mouse
+	6047  ThinkPad Compact Keyboard with TrackPoint
+	604b  Precision Wireless Mouse
+	608d  Optical Mouse
+	609b  Professional Wireless Keyboard and Mouse Combo
+	609c  Professional Wireless Keyboard
+	7203  Ethernet adapter [U2L 100P-Y1]
+	7205  Thinkpad LAN
+	7217  VGA adapter
+	7423  IdeaPad A1 Tablet
+	7435  A789 (Mass Storage mode, with debug)
+	743a  A789 (Mass Storage mode)
+	7497  A789 (MTP mode)
+	7498  A789 (MTP mode, with debug)
+	749a  A789 (PTP mode)
+	749b  A789 (PTP mode, with debug)
+	7604  A760 (Mass Storage mode)
+	7605  A760 (Mass Storage mode, with debug)
+	760a  A760 (MTP mode)
+	760b  A760 (MTP mode, with debug)
+	760c  A760 (PTP mode)
+	760d  A760 (PTP mode, with debug)
+	76fc  B8000-H (Yoga Tablet 10) (mass storage)
+	76fd  B8000-H (Yoga Tablet 10) (debug , mass storage)
+	76fe  B8000-H (Yoga Tablet 10) (MTP)
+	76ff  B8000-H (Yoga Tablet 10) (debug , MTP)
+	7702  B8000-H (Yoga Tablet 10) (PTP)
+	7703  B8000-H (Yoga Tablet 10) (debug , PTP)
+	7704  B8000-H (Yoga Tablet 10) (USB tether)
+	7705  B8000-H (Yoga Tablet 10) (debug , USB tether)
+	7706  B8000-H (Yoga Tablet 10) (zerocd)
+	7707  B8000-H (Yoga Tablet 10) (debug , zerocd)
+	785f  TAB 2 A7-10 Tablet
+	b000  Virtual Keyboard and Mouse
+	b001  Ethernet
+	b003  Virtual Keyboard and Mouse / Mass Storage
+	f003  MEDION LIFETAB X10605 MTP mode
+17f4  WaveSense
+	aaaa  Jazz Blood Glucose Meter
+17f5  K.K. Rocky
+17f6  Unicomp, Inc.
+	0709  Model M Keyboard
+	0822  Ruffian 6 Keyboard v3 [Model M]
+1809  Advantech
+	4604  USB-4604
+	4761  USB-4761 Portable Data Acquisition Module
+1822  Twinhan
+	3201  VisionDTV USB-Ter/HAMA USB DVB-T device cold
+	3202  VisionDTV USB-Ter/HAMA USB DVB-T device warm
+1831  Gwo Jinn Industries Co., Ltd.
+1832  Huizhou Shenghua Industrial Co., Ltd.
+183d  VIVOphone
+	0010  VoiceKey
+1843  Vaisala
+1849  ASRock Incorporation
+184f  K2L GmbH
+	0012  MOCCA compact
+1852  GYROCOM C&C Co., LTD
+	7022  Fiio E10
+	7921  Audiotrak ProDigy CUBE
+	7922  Audiotrak DR.DAC2 DX [GYROCOM C&C]
+1854  Memory Devices Ltd.
+185b  Compro
+	3020  K100 Infrared Receiver
+	3082  K100 Infrared Receiver v2
+	d000  Compro Videomate DVB-U2000 - DVB-T USB cold
+	d001  Compro Videomate DVB-U2000 - DVB-T USB warm
+1861  Tech Technology Industrial Company
+1862  Teridian Semiconductor Corp.
+1870  Nexio Co., Ltd
+	0001  iNexio Touchscreen controller
+1871  Aveo Technology Corp.
+	0101  UVC camera (Bresser microscope)
+	0141  Camera
+	0d01  USB2.0 Camera
+1873  Navilock
+	ee93  EasyLogger
+187c  Alienware Corporation
+	0511  AlienFX Mobile lighting
+	0513  Gaming Desktop [Aurora R4]
+	0550  LED controller
+	0600  Dual Compatible Game Pad
+187f  Siano Mobile Silicon
+	0010  Stallar Board
+	0100  Stallar Board
+	0200  Nova A
+	0201  Nova B
+	0202  Nice
+	0300  Vega
+	0301  VeNice
+1892  Vast Technologies, Inc.
+1894  Topseed
+	5632  Atek Tote Remote
+	5641  TSAM-004 Presentation Remote
+1897  Evertop Wire Cable Co.
+189f  3Shape A/S
+	0002  Legato2 3D Scanner
+18a4  CSSN
+	0001  Snapshell IDR
+18a5  Verbatim, Ltd
+	0214  Portable Hard Drive
+	0216  External Hard Drive
+	0218  External Hard Drive
+	0224  Store 'n' Go Micro Plus
+	0227  Pocket Hard Drive
+	022b  Portable Hard Drive (Store'n'Go)
+	0237  Portable Harddrive
+	0243  Flash Drive (Store'n'Go)
+	0245  Store'n'Stay
+	0302  Flash Drive
+	0304  Store 'n' Go
+	0408  Store 'n' Go
+	4123  Store N Go
+18b1  Petalynx
+	0037  Maxter Remote Control
+18b4  e3C Technologies
+	1001  DUTV007
+	1002  EC168 (v5) based USB DVB-T receiver
+	1689  DUTV009
+	fffa  EC168 (v2) based USB DVB-T receiver
+	fffb  EC168 (v3) based USB DVB-T receiver
+18b6  Mikkon Technology Limited
+18b7  Zotek Electronic Co., Ltd.
+18c5  AMIT Technology, Inc.
+	0002  CG-WLUSB2GO
+	0008  CG-WLUSB2GNR Corega Wireless USB Adapter
+	0012  CG-WLUSB10 Corega Wireless USB Adapter
+18cd  Ecamm
+	cafe  Pico iMage
+18d1  Google Inc.
+	0001  Onda V972 (storage access)
+	0003  Android-powered device using AllWinner Technology SoC
+	0006  Onda V972 MTP
+	0008  Onda V972 PTP (camera)
+	0d02  Celkon A88
+	2d00  Android Open Accessory device (accessory)
+	2d01  Android Open Accessory device (accessory + ADB)
+	2d02  Android Open Accessory device (audio)
+	2d03  Android Open Accessory device (audio + ADB)
+	2d04  Android Open Accessory device (accessory + audio)
+	2d05  Android Open Accessory device (accessory + audio + ADB)
+	4e11  Nexus One
+	4e12  Nexus One (debug)
+	4e13  Nexus One (tether)
+	4e20  Nexus S (fastboot)
+	4e21  Nexus S
+	4e22  Nexus S (debug)
+	4e24  Nexus S (tether)
+	4e30  Galaxy Nexus (fastboot)
+	4e40  Nexus 7 (fastboot)
+	4e41  Nexus 7 (MTP)
+	4e42  Nexus 7 (debug)
+	4e43  Nexus 7 (PTP)
+	4e44  Nexus 7 2012 (PTP)
+	4ee0  Nexus/Pixel Device (fastboot)
+	4ee1  Nexus/Pixel Device (MTP)
+	4ee2  Nexus/Pixel Device (MTP + debug)
+	4ee3  Nexus/Pixel Device (tether)
+	4ee4  Nexus/Pixel Device (tether+ debug)
+	4ee5  Nexus/Pixel Device (PTP)
+	4ee6  Nexus/Pixel Device (PTP + debug)
+	4ee7  Nexus/Pixel Device (charging + debug)
+	4ee8  Nexus/Pixel Device (MIDI)
+	4ee9  Nexus/Pixel Device (MIDI + debug)
+	5033  Pixel earbuds
+	7102  Toshiba Thrive tablet
+	b004  Pandigital / B&N Novel 9" tablet
+	d001  Nexus 4 (fastboot)
+	d002  Nexus 4 (debug)
+	d00d  Xiaomi Mi/Redmi 2 (fastboot)
+	d109  LG G2x MTP
+	d10a  LG G2x MTP (debug)
+18d5  Starline International Group Limited
+18d9  Kaba
+	01a0  B-Net 91 07
+18dc  LKC Technologies, Inc.
+18dd  Planon System Solutions Inc.
+	1000  DocuPen RC800
+18e3  Fitipower Integrated Technology Inc
+	7102  Multi Card Reader (Internal)
+	9101  All-in-1 Card Reader
+	9102  Multi Card Reader
+	9512  Webcam
+18e8  Qcom
+	6144  LR802UA 802.11b Wireless Adapter [ALi M4301AU]
+	6196  RT2573
+	6229  RT2573
+	6232  Wireless 802.11g 54Mbps Network Adapter [RTL8187]
+18ea  Matrox Graphics, Inc.
+	0002  DualHead2Go [Analog Edition]
+	0004  TripleHead2Go [Digital Edition]
+18ec  Arkmicro Technologies Inc.
+	3118  USB to IrDA adapter [ARK3116T]
+	3188  ARK3188 UVC Webcam
+	3299  Webcam Carrefour
+	3366  Bresser Biolux NV
+	5850  CVBS / S-Video Capture Device [UVC]
+18ef  ELV Elektronik AG
+	e014  FS20PCE
+	e015  FS20PCS
+	e01a  Bedien-Anzeige-Terminal
+18f8  [Maxxter]
+	0f97  Optical Gaming Mouse [Xtrem]
+	0f99  Optical gaming mouse
+	1142  Optical gaming mouse
+	1486  X5s ZEUS Macro Pro Gaming Mouse
+18fb  Scriptel Corporation
+	01c0  ST1501-STN
+	01c1  ST1526-STN
+	01c2  ST1501-PYJ
+	01c3  ST1501B-PYJ
+	01c4  ST1501-PUN
+	01c5  ST1401-STN
+	01c7  ST1526-PYJ
+	01c8  ST1501-ECA
+	01c9  ST1476-STN
+	01cb  ST1571-STN
+	0200  ST1500
+	0201  ST1550
+	0202  ST1525
+	0204  ST1400
+	0206  ST1475
+	0207  ST1570
+18fd  FineArch Inc.
+1901  GE Healthcare
+	0015  Nemo Tracker
+1908  GEMBIRD
+	0102  Digital Photo Frame
+	0226  MicroSD Card Reader/Writer
+	1315  Digital Photo Frame
+	1320  DM8261 Flashdisc
+	2070  Honk HK-5002 USB Speaker
+	2220  Buildwin Media-Player
+	2311  Generic UVC 1.00 camera [AppoTech AX2311]
+190d  Motorola GSG
+1914  Alco Digital Devices Limited
+1915  Nordic Semiconductor ASA
+	000c  Wireless Desktop nRF24L01 CX-1766
+	0101  HP Prime Wireless Kit [FOK65AA] (Flash mode)
+	2233  Linksys WUSB11 v2.8 802.11b Adapter [Atmel AT76C505]
+	2234  Linksys WUSB54G v1 OEM 802.11g Adapter [Intersil ISL3886]
+	2235  Linksys WUSB54GP v1 OEM 802.11g Adapter [Intersil ISL3886]
+	2236  Linksys WUSB11 v3.0 802.11b Adapter [Intersil PRISM 3]
+	7777  Bitcraze Crazyradio (PA) dongle
+191c  Innovative Technology LTD
+	4104  Banknote validator NV-150
+1923  FitLinxx
+	0002  Personal SyncPoint
+1926  NextWindow
+	0003  1900 HID Touchscreen
+	0006  1950 HID Touchscreen
+	0064  1950 HID Touchscreen
+	0065  1950 HID Touchscreen
+	0066  1950 HID Touchscreen
+	0067  1950 HID Touchscreen
+	0068  1950 HID Touchscreen
+	0069  1950 HID Touchscreen
+	0071  1950 HID Touchscreen
+	0072  1950 HID Touchscreen
+	0073  1950 HID Touchscreen
+	0074  1950 HID Touchscreen
+	0075  1950 HID Touchscreen
+	0076  1950 HID Touchscreen
+	0077  1950 HID Touchscreen
+	0078  1950 HID Touchscreen
+	0079  1950 HID Touchscreen
+	007a  1950 HID Touchscreen
+	007e  1950 HID Touchscreen
+	007f  1950 HID Touchscreen
+	0080  1950 HID Touchscreen
+	0081  1950 HID Touchscreen
+	0082  1950 HID Touchscreen
+	0083  1950 HID Touchscreen
+	0084  1950 HID Touchscreen
+	0085  1950 HID Touchscreen
+	0086  1950 HID Touchscreen
+	0087  1950 HID Touchscreen
+	0dbf  HID Touchscreen
+	0dc2  HID Touchscreen
+1928  Proceq SA
+	0400  Equotip Piccolo
+192f  Avago Technologies, Pte.
+	0000  Mouse
+	0416  ADNS-5700 Optical Mouse Controller (3-button)
+	0616  ADNS-5700 Optical Mouse Controller (5-button)
+	0916  ADNS-2710 Optical Mouse Controller
+1930  Shenzhen Xianhe Technology Co., Ltd.
+1931  Ningbo Broad Telecommunication Co., Ltd.
+1934  Feature Integration Technology Inc. (Fintek)
+	0602  F71610 or F71612 Consumer Infrared Receiver/Transceiver
+	0702  Integrated Consumer Infrared Receiver/Transceiver
+	5168  F71610A or F71612A Consumer Infrared Receiver/Transceiver
+1935  Elektron Music Machines
+	000d  Elektron Digitakt
+1938  Meinberg Funkuhren GmbH & Co. KG
+	0501  TCR51USB IRIG Time Code Reader
+	0502  TCR600USB IRIG Time Code Reader
+1941  Dream Link
+	8021  WH1080 Weather Station / USB Missile Launcher
+1943  Sensoray Co., Inc.
+	2250  Model 2250 MPEG and JPEG Capture Card
+	2253  Model 2253 Audio/Video Codec Card
+	2255  Model 2255 4 Channel Capture Card
+	2257  Model 2257 4 Channel Capture Card
+	2263  Model 2263 UVC HD Audio/Video Codec Card
+	a250  Model 2250 MPEG and JPEG Capture Card (cold)
+	a253  Model 2253 Audio/Video Codec Card (cold)
+1949  Lab126, Inc.
+	0002  Amazon Kindle
+	0004  Amazon Kindle 3/4/Paperwhite
+	0006  Amazon Kindle Fire
+	0008  Amazon Kindle Fire HD 8.9"
+	000a  Amazon Kindle Fire 2nd generation (2012)
+	0331  Kindle Fire HD 8 (2018)
+	0417  Amazon Zukey; clone of Yubikey 4 OTP+U2F
+	0800  Fire Phone
+194f  PreSonus Audio Electronics, Inc.
+	0101  AudioBox 22 VSL
+	0102  AudioBox 44 VSL
+	0103  AudioBox 1818 VSL
+	0201  FaderPort
+	0301  AudioBox
+1951  Hyperstone AG
+1953  Ironkey Inc.
+	0202  S200 2GB Rev. 1
+1954  Radiient Technologies
+195d  Itron Technology iONE
+	2030  Func KB-460 Gaming Keyboard
+	7002  Libra-Q11 IR remote
+	7006  Libra-Q26 / 1.0 Remote
+	7777  Scorpius wireless keyboard
+	7779  Scorpius-P20MT
+1963  IK Multimedia
+	0005  iRig KEYS
+	0046  UNO Synth
+1965  Uniden Corporation
+	0016  HomePatrol-1
+	0018  UBC125XLT
+	001a  BCD436HP Scanner
+1967  CASIO HITACHI Mobile Communications Co., Ltd.
+196b  Wispro Technology Inc.
+1970  Dane-Elec Corp. USA
+	0000  Z Mate 16GB
+1973  Spectralink Corporation
+	0002  Pivot recovery
+	0003  Pivot Media Transfer Protocol
+	0004  Pivot Media Transfer Protocol
+1975  Dongguan Guneetal Wire & Cable Co., Ltd.
+1976  Chipsbrand Microelectronics (HK) Co., Ltd.
+	1307  microSD Card Reader
+	6025  CBM2090 Flash Drive
+1977  T-Logic
+	0111  TL203 MP3 Player and Voice Recorder
+197d  Leuze electronic
+	0222  BCL 508i
+1980  Storage Appliance Corporation
+	0808  Clickfree C2 Slimline (527SE)
+1989  Nuconn Technology Corp.
+198f  Beceem Communications Inc.
+	0210  BCS200 WiMAX Adapter
+	0220  BCSM250 WiMAX Adapter
+1990  Acron Precision Industrial Co., Ltd.
+1995  Trillium Technology Pty. Ltd.
+	3202  REC-ADPT-USB (recorder)
+	3203  REC-A-ADPT-USB (recorder)
+1996  PixeLINK
+	3010  Camera Release 4
+	3011  OEM Camera
+	3012  e-ImageData Corp. ScanPro
+1997  Shenzhen Riitek Technology Co., Ltd
+	0409  wireless mini keyboard with touchpad
+	2433  wireless mini keyboard with touchpad
+199b  MicroStrain, Inc.
+	3065  3DM-GX3-25 Orientation Sensor
+199e  The Imaging Source Europe GmbH
+	8101  DFx 21BU04 Camera
+	8457  DFK AFU130-L53 camera
+199f  Benica Corporation
+19a5  HARRIS Corp.
+	0004  Remote NDIS Network Device
+	0012  RF-7800S Secure Personal Radio
+	0401  Mass Storage Device
+	0402  Falcon III RF-7800V family RNDIS
+19a8  Biforst Technology Inc.
+19ab  Bodelin
+	1000  ProScope HR
+19af  S Life
+	6611  Celestia VoIP Phone
+19b2  Batronix
+	0010  BX32 Batupo
+	0011  BX32P Barlino
+	0012  BX40 Bagero
+	0013  BX48 Batego
+19b4  Celestron
+	0002  SkyScout Personal Planetarium
+	0101  Handheld Digital Microscope 44302
+19b5  B & W Group
+19b6  Infotech Logistic, LLC
+19b9  Data Robotics
+	4b10  Drobo
+	8d20  Drobo Elite
+19c2  Futuba
+	6a11  MDM166A Fluorescent Display
+19ca  Mindtribe
+	0001  Sandio 3D HID Mouse
+19cf  Parrot SA
+	0001  MiniKit Slim handsfree car kit in firmware update mode
+19d1  BYD
+19d2  ZTE WCDMA Technologies MSM
+	0001  CDMA Wireless Modem
+	0002  MF632/ONDA ET502HS/MT505UP
+	0007  TU25 WiMAX Adapter [Beceem BCS200]
+	0017  MF669
+	0031  MF110/MF627/MF636
+	0037  ONDA MC503HSA
+	0039  MF100
+	0063  K3565-Z HSDPA
+	0064  MF627 AU
+	0083  MF190
+	0103  MF112
+	0104  K4505-Z
+	0117  MF667
+	0146  MF 195E (HSPA+ Modem)
+	0167  MF820 4G LTE
+	0172  AX226 WIMAX MODEM (After Modeswitch)
+	0325  LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard
+	0326  LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard
+	0501  Lever Cell Phone Model Z936L
+	1001  K3805-Z vodafone WCDMA/GSM Modem - storage mode (made by ZTE)
+	1002  K3805-Z vodafone WCDMA/GSM Modem/Networkcard (made by ZTE)
+	1008  K3570-Z
+	1010  K3571-Z
+	1017  K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard
+	1018  K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard
+	1203  MF691 [ T-Mobile webConnect Rocket 2.0]
+	1217  MF652
+	1218  MF652
+	1270  MF667
+	2000  MF627/MF628/MF628+/MF636+ HSDPA/HSUPA
+	fff2  Gobi Wireless Modem (QDL mode)
+	fff3  Gobi Wireless Modem
+19db  KFI Printers
+	02f1  NAUT324C
+19e1  WeiDuan Electronic Accessory (S.Z.) Co., Ltd.
+19e8  Industrial Technology Research Institute
+19ef  Pak Heng Technology (Shenzhen) Co., Ltd.
+19f7  RODE Microphones
+	0001  Podcaster
+19fa  Gampaq Co.Ltd
+	0607  GAME CONTROLLER
+	0703  Steering Wheel
+19fd  MTI Instruments Inc.
+19ff  Dynex
+	0102  1.3MP Webcam
+	0201  Rocketfish Wireless 2.4G Laser Mouse
+	0220  RF-HDWEBLT RocketFish HD WebCam
+	0238  DX-WRM1401 Mouse
+	0239  Bluetooth 4.0 Adapter [Broadcom, 1.12, BCM20702A0]
+1a08  Bellwood International, Inc.
+1a0a  USB-IF non-workshop
+	badd  USB OTG Compliance test device
+1a12  KES Co., Ltd.
+1a1d  Veho
+	0407  Mimi WiFi speakers
+1a25  Amphenol East Asia Ltd.
+1a2a  Seagate Branded Solutions
+1a2c  China Resource Semico Co., Ltd
+	0021  Keyboard
+	0024  Multimedia Keyboard
+	2124  Keyboard
+	2d23  Keyboard
+	427c  Backlit Keyboard [Cougar Vantar]
+1a32  Quanta Microsystems, Inc.
+	0304  802.11n Wireless LAN Card
+1a34  ACRUX
+	0802  Gamepad
+1a36  Biwin Technology Ltd.
+1a40  Terminus Technology Inc.
+	0101  Hub
+	0201  FE 2.1 7-port Hub
+1a41  Action Electronics Co., Ltd.
+1a44  VASCO Data Security International
+	0001  Digipass 905 SmartCard Reader
+1a4a  Silicon Image
+1a4b  SafeBoot International B.V.
+1a5a  Tandberg Data
+1a61  Abbott Diabetes Care
+	3410  CoPilot System Cable
+	3650  FreeStyle Libre
+	3850  FreeStyle Optium/Precision Neo
+	3950  FreeStyle Libre 2
+1a64  Mastervolt
+	0000  MasterBus Link
+1a6a  Spansion Inc.
+1a6d  SamYoung Electronics Co., Ltd
+1a6e  Global Unichip Corp.
+1a6f  Sagem Orga GmbH
+1a72  Physik Instrumente
+	1008  E-861 PiezoWalk NEXACT Controller
+1a79  Bayer Health Care LLC
+	6002  Contour
+	6210  Contour Next Link 2.4 glucometer
+	6300  Contour next link
+	7410  Contour Next
+	7800  Contour Plus One
+1a7b  Lumberg Connect  GmbH & Co. KG
+1a7c  Evoluent
+	0068  VerticalMouse 3
+	0168  VerticalMouse 3 Wireless
+	0191  VerticalMouse 4
+	0195  VerticalMouse C Wireless
+1a7e  Meltec Systementwicklung
+	1001  UFT75, UT150, UT60
+	1003  Thermostick
+1a81  Holtek Semiconductor, Inc.
+	1004  Wireless Dongle 2.4 GHZ HT82D40REW
+	1701  Wireless dongle
+	2004  Keyboard
+	2203  Laser Gaming mouse
+	2204  Optical Mouse
+	2205  Laser Mouse
+	4001  Keyboard
+1a86  QinHeng Electronics
+	5512  CH341 in EPP/MEM/I2C mode, EPP/I2C adapter
+	5523  CH341 in serial mode, usb to serial port converter
+	5584  CH341 in parallel mode, usb to printer port converter
+	7523  CH340 serial converter
+	752d  CH345 MIDI adapter
+	7584  CH340S
+	e008  HID-based serial adapater
+1a89  Dynalith Systems Co., Ltd.
+1a8b  SGS Taiwan Ltd.
+1a8d  BandRich, Inc.
+	1002  BandLuxe 3.5G HSDPA Adapter
+	1009  BandLuxe 3.5G HSPA Adapter
+	100d  4G LTE adapter
+1a98  Leica Camera AG
+1aa4  Data Drive Thru, Inc.
+1aa5  UBeacon Technologies, Inc.
+1aa6  eFortune Technology Corp.
+1aab  Silvercreations Software AG
+	7736  sceye (Gen 2)
+	7737  sceye (Gen 3)
+	7738  sceye (Gen 4, 3 Mpix)
+	7750  sceyeS (Gen 5, 5 MPix)
+1aad  KeeTouch
+	0001  Touchscreen
+1ab1  Rigol Technologies
+	04b0  DS6000 SERIES
+	04be  DS4000 SERIES
+	04ce  DS1xx4Z/MSO1xxZ series
+	0588  DS1000 SERIES
+1ab2  Allied Vision
+	0001  Vision device
+1acb  Salcomp Plc
+1acc  Midiplus Co, Ltd.
+	0103  AudioLink plus 4x4 2.9.28
+1ad1  Desay Wire Co., Ltd.
+1ad4  APS
+	0002  KM290-HRS
+1adb  Schweitzer Engineering Laboratories, Inc
+	0001  C662 Serial Cable
+	0003  CDC Ethernet Gadget
+1ae4  ic-design Reinhard Gottinger GmbH
+1ae7  X-TENSIONS
+	0381  VS-DVB-T 380U (af9015 based)
+	0525  X-Tensions ISDN TA XC-525 [HFC-S USB]
+	2001  SpeedLink Snappy Mic webcam (SL-6825-SBK)
+	9003  SpeedLink Vicious And Devine Laplace webcam, white (VD-1504-SWT)
+	9004  SpeedLink Vicious And Devine Laplace webcam, black (VD-1504-SBK)
+1aed  High Top Precision Electronic Co., Ltd.
+1aef  Conntech Electronic (Suzhou) Corporation
+1af1  Connect One Ltd.
+1af3  Kingsis Technology Corporation
+	0001  ZOWIE Gaming mouse
+1afe  A. Eberle GmbH & Co. KG
+	0001  PQ Box 100
+1b04  Meilhaus Electronic GmbH
+	0630  ME-630
+	0940  ME-94
+	0950  ME-95
+	0960  ME-96
+	1000  ME-1000
+	100a  ME-1000
+	100b  ME-1000
+	1400  ME-1400
+	140a  ME-1400A
+	140b  ME-1400B
+	140c  ME-1400C
+	140d  ME-1400D
+	140e  ME-1400E
+	14ea  ME-1400EA
+	14eb  ME-1400EB
+	1604  ME-1600/4U
+	1608  ME-1600/8U
+	160c  ME-1600/12U
+	160f  ME-1600/16U
+	168f  ME-1600/16U8I
+	4610  ME-4610
+	4650  ME-4650
+	4660  ME-4660
+	4661  ME-4660I
+	4662  ME-4660
+	4663  ME-4660I
+	4670  ME-4670
+	4671  ME-4670I
+	4672  ME-4670S
+	4673  ME-4670IS
+	4680  ME-4680
+	4681  ME-4680I
+	4682  ME-4680S
+	4683  ME-4680IS
+	6004  ME-6000/4
+	6008  ME-6000/8
+	600f  ME-6000/16
+	6014  ME-6000I/4
+	6018  ME-6000I/8
+	601f  ME-6000I/16
+	6034  ME-6000ISLE/4
+	6038  ME-6000ISLE/8
+	603f  ME-6000ISLE/16
+	6044  ME-6000/4/DIO
+	6048  ME-6000/8/DIO
+	604f  ME-6000/16/DIO
+	6054  ME-6000I/4/DIO
+	6058  ME-6000I/8/DIO
+	605f  ME-6000I/16/DIO
+	6074  ME-6000ISLE/4/DIO
+	6078  ME-6000ISLE/8/DIO
+	607f  ME-6000ISLE/16/DIO
+	6104  ME-6100/4
+	6108  ME-6100/8
+	610f  ME-6100/16
+	6114  ME-6100I/4
+	6118  ME-6100I/8
+	611f  ME-6100I/16
+	6134  ME-6100ISLE/4
+	6138  ME-6100ISLE/8
+	613f  ME-6100ISLE/16
+	6144  ME-6100/4/DIO
+	6148  ME-6100/8/DIO
+	614f  ME-6100/16/DIO
+	6154  ME-6100I/4/DIO
+	6158  ME-6100I/8/DIO
+	615f  ME-6100I/16/DIO
+	6174  ME-6100ISLE/4/DIO
+	6178  ME-6100ISLE/8/DIO
+	617f  ME-6100ISLE/16/DIO
+	6259  ME-6200I/9/DIO
+	6359  ME-6300I/9/DIO
+	810a  ME-8100A
+	810b  ME-8100B
+	820a  ME-8200A
+	820b  ME-8200B
+1b0e  BLUTRONICS S.r.l.
+	1078  BLUDRIVE II CCID
+	1079  BLUDRIVE II CCID
+	1080  WRITECHIP II CCID
+1b12  Eventide
+	0011  ModFactor
+1b1c  Corsair
+	0890  Flash Padlock
+	0a00  SP2500 Speakers
+	0a60  Vengeance K60 Keyboard
+	0c04  Link Cooling Node
+	0c06  RM-Series C-Link Adapter
+	0c0a  Hydro Series H115i Liquid CPU Cooler
+	0c0b  Lighting Node Pro
+	0c0c  Lighting Node Loader
+	0c22  iCUE H150i RGB PRO XT Liquid CPU Cooler
+	1a01  Flash Voyager GT
+	1a03  Voyager 3.0
+	1a09  Voyager GT 3.0
+	1a0a  Survivor Stealth Flash Drive
+	1a0b  Flash Voyager LS
+	1a0e  Voyager GTX
+	1a14  Voyager Vega
+	1a15  Voyager Slider Flash Drive
+	1a90  Flash Voyager GT
+	1ab1  Voyager
+	1b04  Raptor K50 Keyboard
+	1b07  Vengeance K65 Gaming Keyboard
+	1b08  Vengeance K95 Keyboard
+	1b09  Vengeance K70R keyboard
+	1b11  K95 RGB Mechanical Gaming Keyboard
+	1b13  Vengeance K70RGB keyboard
+	1b20  STRAFE RGB Gaming Keyboard
+	1b2d  K95 RGB Platinum Keyboard [RGP0056]
+	1b2e  Corsair Corsair Gaming M65 Pro RGB Mouse
+	1b2f  Sabre RGB [CH-9303011-XX]
+	1b3d  Corsair Corsair Gaming K55 RGB Keyboard
+	1b5e  Harpoon Wireless Mouse
+	1b65  Harpoon Wireless Dongle
+	1c00  Controller for Corsair Link
+	1c02  AX1500i Power Supply
+	1c05  HX750i Power Supply
+	1c07  HX1000i Power Supply
+	1c08  HX1200i Power Supply
+	1c0b  RM750i Power Supply
+	1c0c  RM850i Power Supply
+	1c1a  Corsair CORSAIR Lighting Node CORE
+1b1e  General Imaging / General Electric
+	1003  A1250
+1b1f  eQ-3 Entwicklung GmbH
+	c00f  HM-CFG-USB/HM-CFG-USB-2 [HomeMatic Configuration adapter]
+	c020  HmIP-RFUSB
+1b20  MStar Semiconductor, Inc.
+1b22  WiLinx Corp.
+1b24  Telegent Systems, Inc.
+	4001  TLG2300 Hybrid TV Device
+1b26  Cellex Power Products, Inc.
+1b27  Current Electronics Inc.
+1b28  NAVIsis Inc.
+1b32  Ugobe Life Forms, Inc.
+	0064  Pleo robotic dinosaur
+1b36  ViXS Systems, Inc.
+1b3b  iPassion Technology Inc.
+	2933  PC Camera/Webcam controller
+	2935  PC Camera/Webcam controller
+	2936  PC Camera/Webcam controller
+	2937  PC Camera/Webcam controller
+	2938  PC Camera/Webcam controller
+	2939  PC Camera/Webcam controller
+	2950  PC Camera/Webcam controller
+	2951  PC Camera/Webcam controller
+	2952  PC Camera/Webcam controller
+	2953  PC Camera/Webcam controller
+	2955  PC Camera/Webcam controller
+	2956  PC Camera/Webcam controller
+	2957  PC Camera/Webcam controller
+	2958  PC Camera/Webcam controller
+	2959  PC Camera/Webcam controller
+	2960  PC Camera/Webcam controller
+	2961  PC Camera/Webcam controller
+	2962  PC Camera/Webcam controller
+	2963  PC Camera/Webcam controller
+	2965  PC Camera/Webcam controller
+	2966  PC Camera/Webcam controller
+	2967  PC Camera/Webcam controller
+	2968  PC Camera/Webcam controller
+	2969  PC Camera/Webcam controller
+1b3f  Generalplus Technology Inc.
+	0c52  808 Camera #9 (mass storage mode)
+	2002  808 Camera #9 (web-cam mode)
+	2003  GPD6000 [Digital MP3 Player]
+1b47  Energizer Holdings, Inc.
+	0001  CHUSB Duo Charger (NiMH AA/AAA USB smart charger)
+1b48  Plastron Precision Co., Ltd.
+1b52  ARH Inc.
+	2101  FXMC Neural Network Controller
+	2102  FXMC Neural Network Controller V2
+	2103  FXMC Neural Network Controller V3
+	4101  Passport Reader CLR device
+	4201  Passport Reader PRM device
+	4202  Passport Reader PRM extension device
+	4203  Passport Reader PRM DSP device
+	4204  Passport Reader PRMC device
+	4205  Passport Reader CSHR device
+	4206  Passport Reader PRMC V2 device
+	4301  Passport Reader MRZ device
+	4302  Passport Reader MRZ DSP device
+	4303  Passport Reader CSLR device
+	4401  Card Reader
+	4501  Passport Reader RFID device
+	4502  Passport Reader RFID AIG device
+	6101  Neural Network Controller
+	6202  Fingerprint Reader device
+	6203  Fingerprint Scanner device
+	8101  Camera V1
+	8102  Recovery / Camera V2
+	8103  Camera V3
+1b59  K.S. Terminals Inc.
+1b5a  Chao Zhou Kai Yuan Electric Co., Ltd.
+1b65  The Hong Kong Standards and Testing Centre Ltd.
+1b71  Fushicai
+	0050  Encore ENUTV-4 Analog TV Tuner
+	3002  USBTV007 Video Grabber [EasyCAP]
+1b72  ATERGI TECHNOLOGY CO., LTD.
+1b73  Fresco Logic
+	1000  xHC1 Controller
+1b75  Ovislink Corp.
+	3072  AirLive WN-360USB adapter
+	8171  WN-370USB 802.11bgn Wireless Adapter [Realtek RTL8188SU]
+	8187  AirLive WL-1600USB 802.11g Adapter [Realtek RTL8187L]
+	9170  AirLive X.USB 802.11abgn [Atheros AR9170+AR9104]
+	a200  AirLive WN-200USB wireless 11b/g/n dongle
+1b76  Legend Silicon Corp.
+1b80  Afatech
+	c810  MC810 [af9015]
+	d393  DVB-T receiver [RTL2832U]
+	d396  UB396-T [RTL2832U]
+	d397  DVB-T receiver [RTL2832U]
+	d398  DVB-T receiver [RTL2832U]
+	d700  FM Radio SnapMusic Mobile 700 (FM700)
+	e297  Conceptronic DVB-T CTVDIGRCU V3.0
+	e302  CVBS / S-Video Capture Device [Pinnacle Dazzle / UB315-E]
+	e34c  UB435-Q ATSC TV Stick
+	e383  DVB-T UB383-T [af9015]
+	e385  DVB-T UB385-T [af9015]
+	e386  DVB-T UB385-T [af9015]
+	e399  DVB-T KWorld PlusTV 399U [af9015]
+	e39a  DVB-T395U [af9015]
+	e39b  DVB-T395U [af9015]
+	e401  Sveon STV22 DVB-T [af9015]
+	e409  IT9137FN Dual DVB-T [KWorld UB499-2T]
+1b86  Dongguan Guanshang Electronics Co., Ltd.
+1b88  ShenMing Electron (Dong Guan) Co., Ltd.
+1b8c  Altium Limited
+1b8d  e-MOVE Technology Co., Ltd.
+1b8e  Amlogic, Inc.
+1b8f  MA LABS, Inc.
+1b96  N-Trig
+	0001  Duosense Transparent Electromagnetic Digitizer
+1b98  YMax Communications Corp.
+1b99  Shenzhen Yuanchuan Electronic
+1ba1  JINQ CHERN ENTERPRISE CO., LTD.
+1ba2  Lite Metals & Plastic (Shenzhen) Co., Ltd.
+1ba4  Ember Corporation
+	0001  InSight USB Link
+	0002  EM358 Virtual COM Port
+1ba6  Abilis Systems
+1ba8  China Telecommunication Technology Labs
+1bad  Harmonix Music
+	0002  Rock Band Guitar for Xbox 360
+	0003  Rock Band Drum Kit for Xbox 360
+	0130  Ion Drum Rocker for Xbox 360
+	028e  Controller
+	3330  Rock Band 3 Keyboard wii interface
+	f016  Controller
+	f018  Street Fighter IV SE FightStick for Xbox 360
+	f019  BrawlStick for Xbox 360
+	f021  Ghost Recon Future Soldier Gamepad for Xbox 360
+	f023  MLG Pro Circuit Controller for Xbox 360
+	f025  Call of Duty Controller for Xbox 360
+	f027  FPS Pro Controller for Xbox 360
+	f028  Street Fighter IV FightPad for Xbox 360
+	f02e  FightPad
+	f030  MC2 MicroCON Racing Wheel for Xbox 360
+	f036  MicroCON Gamepad Pro for Xbox 360
+	f038  Street Fighter IV FightStick TE for Xbox 360
+	f039  Marvel VS Capcom 2 Tournament Stick for Xbox 360
+	f03a  Street Fighter X Tekken FightStick Pro for Xbox 360
+	f03d  Street Fighter IV Arcade Stick TE for Xbox 360
+	f03e  MLG Arcade FightStick TE for Xbox 360
+	f03f  Soulcalibur FightStick for Xbox 360
+	f042  Arcade FightStick TE S+ for Xbox 360
+	f080  FightStick TE2 for Xbox 360
+	f501  Horipad EX2 Turbo for Xbox 360
+	f502  Real Arcade Pro.VX SA for Xbox 360
+	f503  Fighting Stick VX for Xbox 360
+	f504  Real Arcade Pro.EX
+	f505  Fighting Stick EX2B for Xbox 360
+	f506  Real Arcade Pro.EX Premium VLX for Xbox 360
+	f900  Controller
+	f901  GameStop Controller
+	f903  Tron Controller for Xbox 360
+	f904  PDP Versus Fighting Pad for Xbox 360
+	f906  Mortal Kombat FightStick for Xbox 360
+	f907  Afterglow Gamepad
+	fa01  Gamepad
+	fd00  Razer Onza Tournament Edition
+	fd01  Razer Onza Classic Edition
+1bae  Vuzix Corporation
+	0002  VR920 Immersive Eyewear
+1bbb  T & A Mobile Phones
+	0003  Alcatel one touch 4030D modem connection
+	0017  HSPA Data Card
+	007a  Alcatel OneTouch (firmware upgrade mode)
+	011e  Alcatel One Touch L100V / Telekom Speedstick LTE II
+	0169  Alcatel ONE TOUCH Fierce
+	0195  Alcatel OneTouch L850V / Telekom Speedstick LTE
+	a00e  Vodafone Smart Tab 4G
+	f000  Alcatel OneTouch (mass storage mode)
+	f017  Alcatel One Touch L100V / Telekom Speedstick LTE II
+1bbd  Videology Imaging Solutions, Inc.
+	0060  1.3MP Mono Camera
+	0066  1.3MP Mono Camera
+	0067  1.3MP Mono Camera
+1bc0  Beijing Senseshield Technology Co.,Ltd.
+	0013  Elitee-e
+	0014  Elite4
+	0020  iToken
+	0021  Mikey
+	0051  Elite5
+	0055  Elite5 v3.x
+	485d  EliteIV
+1bc4  Ford Motor Co.
+1bc5  AVIXE Technology (China) Ltd.
+1bc7  Telit Wireless Solutions
+	0020  HE863
+	0021  HE910
+	0022  GE910-QUAD
+	0023  HE910-D ECM
+	0032  LE910-EU V2
+	1003  UC864-E
+	1004  UC864-G
+	1005  CC864-DUAL
+	1006  CC864-SINGLE
+	1010  DE910-DUAL
+	1011  CE910-DUAL
+	1012  UE910 V2
+	1101  ME910C1
+	110a  ME310
+	1200  LE920 (old firmware)
+	1201  LE910 / LE920
+1bce  Contac Cable Industrial Limited
+1bcf  Sunplus Innovation Technology Inc.
+	0005  Optical Mouse
+	0007  Optical Mouse
+	053a  Targa Silvercrest OMC807-C optische Funkmaus
+	05c5  SPRF2413A [2.4GHz Wireless Keyboard/Mouse Receiver]
+	05cf  Micro keyboard & mouse receiver
+	08a0  Gaming mouse [Philips SPK9304]
+	0c31  SPIF30x Serial-ATA bridge
+	2281  SPCA2281 Web Camera
+	2880  Dell HD Webcam
+	2883  Asus Webcam
+	2885  ASUS Webcam
+	2888  HP Universal Camera
+	2895  Dell Integrated Webcam
+	28a2  Dell Integrated Webcam
+	28a6  DELL XPS Integrated Webcam
+	28ae  Laptop Integrated Webcam HD
+	28bd  Dell Integrated HD Webcam
+	2985  Laptop Integrated Webcam HD
+	2b83  Laptop Integrated Webcam FHD
+	2b91  Dell E5570 integrated webcam
+	2b97  Laptop Integrated Webcam FHD
+	2c6e  Laptop Integrated WebCam HD
+1bd0  Hangzhou Riyue Electronic Co., Ltd.
+1bd5  BG Systems, Inc.
+1bda  University Of Southampton
+	0010  Power Board v4 Rev B
+	0011  Student Robotics SBv4B
+1bde  P-TWO INDUSTRIES, INC.
+1bef  Shenzhen Tongyuan Network-Communication Cables Co., Ltd
+1bf0  RealVision Inc.
+1bf5  Extranet Systems Inc.
+1bf6  Orient Semiconductor Electronics, Ltd.
+1bfd  TouchPack
+	1268  Touch Screen
+	1368  Touch Screen
+	1568  Capacitive Touch Screen
+	1668  IR Touch Screen
+	1688  Resistive Touch Screen
+	2968  Touch Screen
+	5968  Touch Screen
+	6968  Touch Screen
+1c02  Kreton Corporation
+1c04  QNAP System Inc.
+	2074  ASM1074 High-Speed hub
+	3074  ASM1074 SuperSpeed hub
+1c05  Shenxhen Stager Electric
+	ea75  G540 Programmer
+1c0c  Ionics EMS, Inc.
+	0102  Plug Computer
+1c0d  Relm Wireless
+1c10  Lanterra Industrial Co., Ltd.
+1c11  Input Club Inc.
+	b04d  ErgoDox Infinity
+1c13  ALECTRONIC LIMITED
+1c1a  Datel Electronics Ltd.
+	0100  Action Replay DS "3DS/DSi/DS/Lite Compatible"
+1c1b  Volkswagen of America, Inc.
+1c1f  Goldvish S.A.
+1c20  Fuji Electric Device Technology Co., Ltd.
+1c21  ADDMM LLC
+1c22  ZHONGSHAN CHIANG YU ELECTRIC CO., LTD.
+1c26  Shanghai Haiying Electronics Co., Ltd.
+1c27  HuiYang D & S Cable Co., Ltd.
+1c28  PMD Technologies
+	c003  CamCube
+	c004  CamBoard
+	c005  ConceptCam
+	c006  CamBoard 22
+	c007  CamBoard nano
+	c008  CamBoard mod
+	c009  CamBoard plus
+	c00a  DigiCam
+	c00d  CamBoard pico LDD
+	c00f  CamBoard pico
+1c29  Elster GmbH
+	0001  ExMFE5 Simulator
+	10fc  enCore device
+1c31  LS Cable Ltd.
+1c34  SpringCard
+	7241  Prox'N'Roll RFID Scanner
+1c37  Authorizer Technologies, Inc.
+	6190  U2F Fido-compliant cryptotoken
+1c3d  NONIN MEDICAL INC.
+1c3e  Wep Peripherals
+1c40  EZPrototypes
+	0533  TiltStick
+	0534  i2c-tiny-usb interface
+	0535  glcd2usb interface
+	0536  Swiss ColorPAL
+	0537  MIST Board
+1c49  Cherng Weei Technology Corp.
+1c4b  Geratherm Medical AG
+	026f  Spirostik
+1c4f  SiGma Micro
+	0002  Keyboard TRACER Gamma Ivory
+	0003  HID controller
+	000e  Genius KB-120 Keyboard
+	0026  Keyboard
+	0032  Optical Mouse with Scroll Wheel
+	0034  XM102K Optical Wheel Mouse
+	0063  Touchpad (integrated in detachable keyboard of Chuwi SurBook)
+	0065  Optical Wheel Mouse [Rapoo N1130]
+	3000  Micro USB Web Camera
+	3002  WebCam SiGma Micro
+1c57  Zalman Tech Co., Ltd.
+	1e45  FPSGUN FG1000 Mouse
+1c6b  Philips & Lite-ON Digital Solutions Corporation
+	a220  DVD Writer Slimtype eSAU108
+	a222  DVD Writer Slimtype eTAU108
+	a223  DVD Writer Slimtype eUAU108
+1c6c  Skydigital Inc.
+1c71  Humanware Inc
+	c004  Braille Note Apex (braille terminal mode)
+1c73  AMT
+	861f  Anysee E30 USB 2.0 DVB-T Receiver
+1c75  Arturia
+	0288  KeyStep
+1c77  Kaetat Industrial Co., Ltd.
+1c78  Datascope Corp.
+1c79  Unigen Corporation
+1c7a  LighTuning Technology Inc.
+	0577  Fingerprint Sensor
+	0603  ES603 Swipe Fingerprint Sensor
+	0801  Fingerprint Reader
+1c7b  LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD.
+1c82  Atracsys
+	0200  spryTrac
+1c83  Schomaecker GmbH
+	0001  RS150 V2
+	0002  RFID card reader
+	0003  Communicator
+	0005  Mobile RFID Reader
+1c87  2N TELEKOMUNIKACE a.s.
+1c88  Somagic, Inc.
+	0007  SMI Grabber (EasyCAP DC60+ clone) (no firmware) [SMI-2021CBE]
+	003c  SMI Grabber (EasyCAP DC60+ clone) [SMI-2021CBE]
+1c89  HONGKONG WEIDIDA ELECTRON LIMITED
+1c8e  ASTRON INTERNATIONAL CORP.
+1c98  ALPINE ELECTRONICS, INC.
+1c9e  OMEGA TECHNOLOGY
+	6061  WL-72B 3.5G MODEM
+1ca0  ACCARIO Inc.
+1ca1  Symwave
+	18ab  SATA bridge
+1cac  Kinstone
+	a332  C8 Webcam
+	b288  C18 Webcam
+1cb3  Aces Electronic Co., Ltd.
+1cb4  OPEX CORPORATION
+1cb6  IdeaCom Technology Inc.
+	6681  IDC6681
+1cbe  Luminary Micro Inc.
+	0002  CDC serial port [TivaWare]
+	00fd  In-Circuit Debug Interface
+	00ff  Stellaris ROM DFU Bootloader
+	0166  CANAL USB2CAN
+	0240  McGill Robotics TM4C Microcontroller
+1cbf  FORTAT SKYMARK INDUSTRIAL COMPANY
+1cc0  PlantSense
+1cca  NextWave Broadband Inc.
+1ccd  Bodatong Technology (Shenzhen) Co., Ltd.
+1cd4  adp corporation
+1cd5  Firecomms Ltd.
+1cd6  Antonio Precise Products Manufactory Ltd.
+1cde  Telecommunications Technology Association (TTA)
+1cdf  WonTen Technology Co., Ltd.
+1ce0  EDIMAX TECHNOLOGY CO., LTD.
+1ce1  Amphenol KAE
+1cf1  Dresden Elektronik
+	0001  Sensor Terminal Board
+	0004  Wireless Handheld Terminal
+	0017  deRFusbSniffer 2.4 GHz
+	0018  deRFusb24E001
+	0019  deRFusb14E001
+	001a  deRFusb23E00
+	001b  deRFusb13E00
+	001c  deRFnode
+	001d  deRFnode / gateway
+	0022  deUSB level shifter
+	0023  deRFusbSniffer Sub-GHz
+	0025  deRFusb23E06
+	0027  deRFusb13E06
+	0030  ZigBee gateway [ConBee II]
+1cfc  ANDES TECHNOLOGY CORPORATION
+1cfd  Flextronics Digital Design Japan, LTD.
+1d03  iCON
+	0028  iCreativ MIDI Controller
+1d07  Solid-Motion
+1d08  NINGBO HENTEK DRAGON ELECTRONICS CO., LTD.
+1d09  TechFaith Wireless Technology Limited
+	1026  HSUPA Modem FLYING-LARK46-VER0.07 [Flying Angel]
+1d0a  Johnson Controls, Inc. The Automotive Business Unit
+1d0b  HAN HUA CABLE & WIRE TECHNOLOGY (J.X.) CO., LTD.
+1d0d  TDKMedia
+	0214  Trans-It Drive
+1d0f  Sonix Technology Co., Ltd.
+1d14  ALPHA-SAT TECHNOLOGY LIMITED
+1d17  C-Thru Music Ltd.
+	0001  AXiS-49 Harmonic Table MIDI Keyboard
+1d19  Dexatek Technology Ltd.
+	1101  DK DVB-T Dongle
+	1102  DK mini DVB-T Dongle
+	1103  DK 5217 DVB-T Dongle
+	1104  MSI DigiVox Micro HD
+	6105  Video grabber
+	610a  Video grabber
+	8202  DK DVBC/T DONGLE
+1d1f  Diostech Co., Ltd.
+1d20  SAMTACK INC.
+1d27  ASUS
+	0601  Xtion
+1d34  Dream Cheeky
+	0001  Fidget
+	0002  Fidget (Basketball)
+	0003  Fidget (Golf Ball)
+	0004  Webmail Notifier
+	0008  button
+	000a  Mailbox Friends Alert
+	000d  Big Red Button
+	0013  LED Message Board
+	0020  Stress Ball
+1d45  Touch
+	1d45  Foxlink Optical touch sensor
+	459d  BenQ F5
+	465c  Harrier Mini by EE
+1d4d  PEGATRON CORPORATION
+	0002  Ralink RT2770/2720 802.11b/g/n Wireless LAN Mini-USB Device
+	000c  Ralink RT3070 802.11b/g/n Wireless Lan USB Device
+	000e  Ralink RT3070 802.11b/g/n Wireless Lan USB Device
+1d50  OpenMoko, Inc.
+	1db5  IDBG (DFU)
+	1db6  IDBG
+	5117  Neo1973/FreeRunner kernel usbnet (g_ether, CDC Ethernet) mode
+	5118  Neo1973/FreeRunner Debug board (V2+)
+	5119  Neo1973/FreeRunner u-boot cdc_acm serial port
+	511a  HXD8 u-boot usbtty CDC ACM Mode
+	511b  SMDK2440 u-boot usbtty CDC ACM mode
+	511c  SMDK2443 u-boot usbtty CDC ACM mode
+	511d  QT2410 u-boot usbtty CDC ACM mode
+	5120  Neo1973/FreeRunner u-boot usbtty generic serial
+	5121  Neo1973/FreeRunner kernel mass storage (g_storage) mode
+	5122  Neo1973/FreeRunner kernel cdc_ether USB network
+	5123  Neo1973/FreeRunner internal USB CSR4 module
+	5124  Neo1973/FreeRunner Bluetooth Device ID service
+	5300  Rockbox
+	530e  iriver H10 20GB (Rockbox)
+	530f  iriver H10 5/6GB (Rockbox)
+	5314  Apple iPod Color/Photo (Rockbox)
+	5315  Apple iPod Nano 1g (Rockbox)
+	5316  Apple iPod Video (Rockbox)
+	5318  Apple iPod 4g Grayscale (Rockbox)
+	5319  Apple iPod Mini 1g (Rockbox)
+	531a  Apple iPod Mini 2g (Rockbox)
+	531c  Apple iPod Nano 2g (Rockbox)
+	531d  Apple iPod Classic/6G (Rockbox)
+	5321  Cowon D2 (Rockbox)
+	5329  Toshiba Gigabeat S (Rockbox)
+	5332  Sandisk Sansa e200 series (Rockbox)
+	5334  Sandisk Sansa c200 series (Rockbox)
+	5337  Sandisk Sansa Clip (Rockbox)
+	5338  Sandisk Sansa e200v2 series (Rockbox)
+	5339  Sandisk Sansa m200 v4 series (Rockbox)
+	533a  Sandisk Sansa Fuze (Rockbox)
+	533b  Sandisk Sansa c200v2 series (Rockbox)
+	533c  Sandisk Sansa Clipv2 (Rockbox)
+	533e  Sandisk Sansa Clip+ (Rockbox)
+	533f  Sandisk Sansa Fuze v2 (Rockbox)
+	5340  Sandisk Sansa Fuze+ (Rockbox)
+	5341  Sandisk Sansa Zip (Rockbox)
+	5342  Sandisk Sansa Connect (Rockbox)
+	5346  Olympus M:Robe 500i (Rockbox)
+	5347  Olympus m:robe MR-100 (Rockbox)
+	5359  Creative Zen X-Fi Style (Rockbox)
+	535d  Creative Zen X-Fi2 (Rockbox)
+	535e  Creative Zen X-Fi3 (Rockbox)
+	5360  Creative Zen X-Fi (Rockbox)
+	5361  Creative ZEN Mozaic (Rockbox)
+	5362  Creative Zen (Rockbox)
+	5364  Philips GoGear SA9200 (Rockbox)
+	5365  Philips GoGear HDD16x0 (Rockbox)
+	5366  Philips GoGear HDD63x0 (Rockbox)
+	5378  Onda VX747 (Rockbox)
+	5379  Onda VX767 (Rockbox)
+	537b  Onda VX777 (Rockbox)
+	538c  Samsung YH-820 (Rockbox)
+	538d  Samsung YH-920 (Rockbox)
+	538e  Samsung YH-925 (Rockbox)
+	53a0  Packard Bell Vibe 500 (Rockbox)
+	53b4  Rockchip 27xx generic (Rockbox)
+	53be  HiFiMAN HM-60x (Rockbox)
+	53bf  HiFiMAN HM-801 (Rockbox)
+	53d2  HiFi E.T. MA9 (Rockbox)
+	53d3  HiFi E.T. MA9C (Rockbox)
+	53d4  HiFi E.T. MA8 (Rockbox)
+	53d5  HiFi E.T. MA8C (Rockbox)
+	53dc  Sony NWZ-E370/E380 series (Rockbox)
+	53dd  Sony NWZ-E360 series (Rockbox)
+	53e6  IHIFI 760 (Rockbox)
+	53e7  IHIFI 960 (Rockbox)
+	53ff  Generic Rockbox device
+	6000  Ubertooth Zero
+	6001  Ubertooth Zero (DFU)
+	6002  Ubertooth One
+	6003  Ubertooth One (DFU)
+	6004  LeoLipo
+	6005  LED Flower S
+	6006  LED Cube
+	6007  LED Flower
+	6008  Kisbee 802.15.4 transceiver
+	6009  Adjacent Reality Tracker
+	600a  AVR Programmer
+	600b  Hypna Go Go
+	600c  CatNip LPC1343 development board
+	600d  Enhanced RoboBrrd Brain board
+	600e  OpenRISC Ordb2a-ep4ce22 development board
+	600f  Paparazzi Lisa/M (DFU)
+	6010  OpenPipe: OSHW Bagpipes MIDI controller
+	6011  LeoLipo (DFU)
+	6012  Universal C64 Cartridge
+	6013  DiscFerret magnetic disc analyser (bootloader)
+	6014  DiscFerret magnetic disc analyser
+	6015  Smoothieboard
+	6016  phInterface
+	6017  Black Magic Debug Probe (DFU)
+	6018  Black Magic Debug Probe (Application)
+	6019  4pi 5 axis motion controller
+	601a  Paparazzi Lisa/M
+	601b  IST-2 chronograph for bullet speeds
+	601c  EPOSMote II
+	601d  UDS18B20 temperature sensor
+	601e  5x5 STM32 prototyping board
+	601f  uNSF
+	6020  Toad3
+	6021  AlphaSphere
+	6022  LightPack
+	6023  Pixelkit
+	6024  Illucia
+	6025  Keyglove (HID)
+	6026  Keyglove (Serial)
+	6027  Key64 Keyboard
+	6028  Teensy 2.0 Development Board [ErgoDox Keyboard]
+	6029  Marlin 2.0 (Serial)
+	602a  Marlin 2.0 (Mass Storage)
+	602b  FPGALink
+	602c  5nes5snes (5x8)
+	602d  5nes5snes (4x12)
+	602e  Flexibity
+	602f  K-copter
+	6030  USB-oscope
+	6031  Handmade GSM GPS tracker
+	6032  ncrmnt.org uISP
+	6033  frobiac / adnw keyboard
+	6034  Tiflomag Ergo 2
+	6035  FreeLaserTag Gun
+	6036  FreeLaserTag Big Brother
+	6037  FreeLaserTag Node
+	6038  Monaka
+	6039  eXtreme Feedback Device
+	603a  TiLDA
+	603b  Raspiface
+	603c  Paparazzi (bootloader)
+	603d  Paparazzi (Serial)
+	603e  Paparazzi (Mass Storage)
+	603f  airGuitar
+	6040  moco
+	6041  AlphaSphere (bootloader)
+	6042  Dspace robot controller
+	6043  pc-power
+	6044  open-usb-can (DFU)
+	6045  open-usb-can
+	6046  mimus-weigand
+	6047  RfCat Chronos Dongle
+	6048  RfCat Dons Dongle
+	6049  RfCat Chronos bootloader
+	604a  RfCat Dons bootloader
+	604b  HackRF Jawbreaker Software-Defined Radio
+	604c  Makibox A6
+	604d  Paella Pulse height analyzer
+	604e  Miniscope v2b
+	604f  Miniscope v2c
+	6050  GoodFET
+	6051  pinocc.io
+	6052  APB Team Robotic Development Board
+	6053  Darkgame Controller
+	6054  Satlab/AAUSAT3 BlueBox
+	6055  RADiuS ER900TRS-02 transciever with SMA Connector
+	6056  The Glitch
+	6057  OpenPipe MIDI Shield
+	6058  Novena OTG port
+	6059  xser serial
+	605a  Daisho test
+	605b  RfCat YARD Stick One
+	605c  YARD Stick One bootloader
+	605d  Funky Sensor v2
+	605e  Blinkiverse Analog LED Fader
+	605f  Small DIP package Cypress FX2
+	6060  Data logger using the Cypress FX2
+	6061  Power Manager
+	6062  WhiteRabbit console and Wishbone bridge
+	6063  CPC FPGA
+	6064  CPC FPGA (DFU)
+	6065  CPC FPGA (Serial)
+	6066  Nuand BladeRF
+	6067  Orbotron 9000 (Serial)
+	6068  Orbotron 9000 (HID)
+	6069  xser (DFU)
+	606a  xser (legacy)
+	606b  S08-245, urJtag compatible firmware for S08JS
+	606c  Blinkytape full-color light tape
+	606d  TinyG open source motion controller
+	606e  Reefangel Evolution 1.0
+	606f  Geschwister Schneider CAN adapter
+	6070  Open Pinball Project
+	6071  The Glitch HID
+	6072  The Glitch Disk
+	6073  The Glitch Serial
+	6074  The Glitch MIDI
+	6075  The Glitch RawHID
+	6076  Vultureprog BIOS chip programmer
+	6077  PaintDuino
+	6078  DTplug
+	6079  Mood Light
+	607a  Fadecandy
+	607b  RCDongle for IR remote control
+	607c  OpenVizsla USB sniffer/analyzer
+	607d  Spark Core Arduino-compatible board with WiFi
+	607e  OSHUG Wuthering multi-tool
+	607f  Spark Core Arduino-compatible board with WiFi (bootloader)
+	6080  arcin arcade controller
+	6081  BladeRF (bootloader)
+	6082  Facecandy (DFU)
+	6083  LightUp (bootloader)
+	6084  arcin arcade controller (DFU)
+	6085  IRKit for controlloing home electronics from iOS devices
+	6086  OneRNG entropy device
+	6087  Blinkytape (alternate endpoint config)
+	6088  picp PIC16F145x based PIC16F145x programmer
+	6089  Great Scott Gadgets HackRF One SDR
+	608a  BLEduino
+	608b  Loctronix ASR-2300 SDR/motion sensing module
+	608c  Fx2lafw
+	608d  Fx2lafw
+	608e  Fx2lafw
+	608f  Fx2lafw
+	6090  Fx2lafw
+	6091  Fx2lafw
+	6092  Fx2lafw
+	6093  Fx2lafw
+	6094  Fx2lafw
+	6095  Fx2lafw
+	6096  LightUp (sketch)
+	6097  Tessel JavaScript enabled Microcontroller with built-in WiFi
+	6098  RFIDler
+	6099  RASDR Radio Astronomy SDR Rx Interface
+	609a  RASDR Radio Astronomy SDR Tx Interface
+	609b  RASDR Radio Astronomy SDR (bootloader)
+	609c  antiAFK keyboard
+	609d  PIC16F145x bootloader
+	609e  Clyde Lamp by Fabule (bootloader)
+	609f  Clyde Lamp by Fabule (sketch)
+	60a0  Smoothiepanel robotic control interface
+	60a1  Airspy
+	60a2  barebox (DFU)
+	60a3  keyboard (bootloader)
+	60a4  Papilio Duo (AVR)
+	60a5  Papilio Duo (FPGA)
+	60a6  HydraBus/HydraNFC (bootloader)
+	60a7  HydraBus/HydraNFC
+	60a8  reserved
+	60a9  Blinky Light Controller (DFU)
+	60aa  Blinky Light Controller
+	60ab  AllPixel
+	60ac  OpenBLT generic microcontroller (bootloader)
+	60ad  Clasic Gamepad Adapter (NES)
+	60ae  Clasic Gamepad Adapter (N64)
+	60af  Clasic Gamepad Adapter (DB9)
+	60b0  Waterott Arduino based Clock (caterina bootloader)
+	60b1  Drinkbot (processing)
+	60b2  Drinkbot (OTG-tablet support)
+	60b3  calc.pw password generator device (standard)
+	60b4  calc.pw password generator device (enhanced)
+	60b5  TimVideos' HDMI2USB (FX2) - Unconfigured device
+	60b6  TimVideos' HDMI2USB (FX2) - Firmware load/upgrade
+	60b7  TimVideos' HDMI2USB (FX2) - HDMI/DVI Capture Device
+	60b8  TimVideos' HDMI2USB (Soft+UTMI) - Unconfigured device
+	60b9  TimVideos' HDMI2USB (Soft+UTMI) - Firmware upgrade
+	60ba  TimVideos' HDMI2USB (Soft+UTMI) - HDMI/DVI Capture Device
+	60bc  Simple CC25xx programmer / serial board
+	60bd  Open Source control interface for multimedia applications
+	60be  Pixelmatix Aurora (bootloader)
+	60bf  Pixelmatix Aurora
+	60c0  Nucular Keyboard adapter
+	60c1  BrewBit Model-T pOSHW temperature controller for homebrewers (bootloader)
+	60c2  BrewBit Model-T pOSHW temperature controller for homebrewers
+	60c3  X Antenna Tracker arduino board
+	60c4  CAN bus communication device
+	60c5  PIC16F1 bootloader
+	60c6  USBtrng hardware random number generator
+	60c7  Zubax GNSS positioning module for light UAV systems
+	60c8  Xlink data transfer and control system for Commodore C64
+	60c9  random number generator
+	60ca  FinalKey password manager
+	60cb  PteroDAQ Data Acquisition on FRDM-KL25Z and future boards
+	60cc  LamDiNao
+	60cd  Open Lighting DMX512 / RDM widget
+	60de  Cryptech.is random number generator
+	60df  Numato Opsis HDMI2USB board (unconfigured)
+	60e0  Numato Opsis HDMI2USB board (JTAG Programming Mode)
+	60e1  Numato Opsis HDMI2USB board (User Mode)
+	60e2  Osmocom SIMtrace 2 (DFU)
+	60e3  Osmocom SIMtrace 2
+	60e4  3D printed racing game - (Catalina CDC bootloader)
+	60e5  3D printed racing game
+	60e6  replacement for GoodFET/FaceDancer - GreatFet
+	60e7  replacement for GoodFET/FaceDancer - GreatFet target
+	60e8  Alpen Clack keyboard
+	60e9  keyman64 keyboard itercepter
+	60ea  Wiggleport FPGA-based I/O board
+	60eb  candleLight CAN adapter
+	60ec  Duet 2 WiFi or Duet 2 Ethernet 3D printer control electronics
+	60ed  Duet 2 Maestro 3D printer control electronics
+	60ee  Duet 3 motion control electronics
+	60f0  UDAD-T1 data aquisition device (boot)
+	60f1  UDAD-T1 data aquisition device
+	60f2  UDAD-T2 data aquisition device (boot)
+	60f3  UDAD-T2 data aquisition device
+	60f4  Uniti ARC motor controller
+	60f5  EightByEight Blinky Badge (DFU)
+	60f6  EightByEight Blinky Badge
+	60f7  cardio NFC/RFID card reader (bootloader)
+	60f8  cardio NFC/RFID card reader
+	60fc  OnlyKey Two-factor Authentication and Password Solution
+	6100  overlay64 video overlay module
+	6104  ScopeFun open source instrumentation
+	6108  Myriad-RF LimeSDR
+	610c  Magic Keys (boot)
+	610d  Magic Keys
+	6114  MIDI key
+	6118  Thomson MO5 keyboard
+	6122  Ultimate Hacking Keyboard
+	614c  dwtk In-Circuit Emulator
+	8085  Box0 (box0-v5)
+	cc15  rad1o badge for CCC summer camp 2015
+1d57  Xenta
+	0005  Wireless Receiver (Keyboard and Mouse)
+	0006  Wireless Receiver (RC Laser Pointer)
+	000c  Optical Mouse
+	130f  2.4Ghz wireless optical mouse receiver
+	2400  Wireless Mouse Receiver
+	32da  2.4GHz Receiver (Keyboard and Mouse)
+	83d0  Click-mouse!
+	ac01  Wireless Receiver (Keyboard and Mouse)
+	ac02  ViFit Activity Tracker
+	ac08  RFID Receiver (Keyboard)
+	ad02  SE340D PC Remote Control
+	ad03  [T3] 2.4GHz and IR Air Mouse Remote Control
+	af01  AUVIO Universal Remote Receiver for PlayStation 3
+	af03  Wireless Receiver
+	fa20  2.4GHz Wireless Reciever (Mini Keyboard & Mouse)
+1d5b  Smartronix, Inc.
+1d5c  Fresco Logic
+	2000  FL2000/FL2000DX VGA/DVI/HDMI Adapter
+1d6b  Linux Foundation
+	0001  1.1 root hub
+	0002  2.0 root hub
+	0003  3.0 root hub
+	0100  PTP Gadget
+	0101  Audio Gadget
+	0102  EEM Gadget
+	0103  NCM (Ethernet) Gadget
+	0104  Multifunction Composite Gadget
+	0105  FunctionFS Gadget
+	0200  Qemu Audio Device
+1d88  Mahr GmbH
+	0001  Measurement Device [MarECon]
+	0002  Probe
+	0003  Surface Measurement [PS10]
+1d90  Citizen
+	201e  PPU-700
+	2037  CL-S631 Barcode Printer
+	20f0  Thermal Receipt Printer [CT-E351]
+1d9d  Sigma Sport
+	1010  Docking Station Topline 2009
+	1011  Docking Station Topline 2012
+	1012  Docking Station Topline 2016
+1dd2  Leo Bodnar Electronics Ltd
+1dd3  Dajc Inc.
+	0001  Expert I/O 1000
+1de1  Actions Microelectronics Co.
+	1101  Generic Display Device (Mass storage mode)
+	c101  Generic Display Device
+1de6  MICRORISC s.r.o.
+1df7  SDRplay
+	2500  RSP1
+	3000  RSP1a
+	3010  RSP2/RSP2pro
+	3020  RSPduo
+	3030  RSPdx
+1e0e  Qualcomm / Option
+	f000  iCON 210 UMTS Surfstick
+1e10  Point Grey Research, Inc.
+	2004  Sony 1.3MP 1/3" ICX445 IIDC video camera [Chameleon]
+1e17  Mirion Technologies Dosimetry Services Division
+	0001  instadose dosimeter
+1e1d  Kanguru Solutions
+	0165  Secure Pen drive
+	1101  FlashBlu Flash Drive
+1e1f  INVIA
+1e29  Festo AG & Co. KG
+	0101  CPX Adapter
+	0102  CPX Adapter >=HW10.09 [CP2102]
+	0401  iL3-TP [AT90USB646]
+	0402  FTDI232 [EasyPort]
+	0403  FTDI232 [EasyPort Mini]
+	0404  FTDI232 [Netzteil-GL]
+	0405  FTDI232 [MotorPrüfstand]
+	0406  STM32F103 [EasyKit]
+	0407  LPC2378 [Robotino]
+	0408  LPC2378 [Robotino-Arm]
+	0409  LPC2378 [Robotino-Arm Bootloader]
+	040a  LPC2378 [Robotino Bootloader]
+	040b  LPC2378 [Robotino XT]
+	040c  LPC2378 [Robotino XT Bootloader]
+	040d  LPC2378 [Robotino 3]
+	040e  LPC2378 [Robotino 3 Bootloader]
+	040f  LPC2148 [Robotino gripper]
+	0410  LPC2148 [Robotino IR panel]
+	0501  CP2102 [CMSP]
+	0601  CMMP-AS
+	0602  FTDI232 [CMMS]
+1e2d  Gemalto M2M GmbH
+	004f  EGS3 GSM/GPRS modem
+	0054  PH8 wireless module
+	0058  Wireless Module [Cinterion EHS6]
+	0059  Wireless Module [Cinterion BGx]
+	005b  Zoom 4625 Modem
+	0061  ALSx PLSx LTE modem
+	00a0  Cinterion ELS31-V
+1e3d  Chipsbank Microelectronics Co., Ltd
+	198a  Flash Disk
+	2093  CBM209x Flash Drive (OEM)
+	4082  CBM4082 SD Card Reader
+1e41  Cleverscope
+	0001  CS328A PC Oscilloscope
+	0004  CS448
+1e44  SHIMANO INC.
+	7220  SM-BCR2
+1e4e  Cubeternet
+	0100  WebCam
+	0102  GL-UPC822 UVC WebCam
+	0109  EtronTech CMOS based eSP570 WebCam [Onyx Titanium TC101]
+1e54  TypeMatrix
+	2030  2030 USB Keyboard
+1e68  TrekStor GmbH & Co. KG
+	001b  DataStation maxi g.u
+	004c  DataStation Pocket Click
+	0050  DataStation maxi light
+	1045  ST70408-3 [SurfTab breeze 7.0 quad 3G] (MTP Mode)
+	1046  ST70408-3 [SurfTab breeze 7.0 quad 3G] (PTP Mode)
+1e71  NZXT
+	0001  Avatar Optical Mouse
+	170e  Kraken X
+	1711  Grid+ V3
+	1714  Smart Device
+	1715  Kraken M22
+	2006  Smart Device V2
+1e74  Coby Electronics Corporation
+	2211  MP300
+	2647  2 GB 2 Go Video MP3 Player [MP601-2G]
+	2659  Coby 4GB Go Video MP3 Player [MP620-4G]
+	4641  A8705 MP3/Video Player
+	6511  MP705-8G MP3 player
+	6512  MP705-4G
+	7111  MP957 Music and Video Player
+1e7b  Zurich Instruments
+	0002  HF2
+	0003  UHF
+	0004  MFLI
+1e7d  ROCCAT
+	2c24  Pyra Mouse (wired)
+	2c2e  Lua Mouse
+	2c38  Kiro Mouse
+	2ced  Kone Mouse
+	2cee  Kova 2016 Gray Mouse
+	2cef  Kova 2016 White Mouse
+	2cf0  Kova 2016 Black Mouse
+	2cf6  Pyra Mouse (wireless)
+	2d50  Kova[+] Mouse
+	2d51  Kone[+] Mouse
+	2d5a  Savu Mouse
+	2db4  Kone Pure Optical Mouse
+	2dbe  Kone Pure Mouse
+	2dbf  Kone Pure Military Mouse
+	2dc2  Kone Pure Optical Black Mouse
+	2dcb  Kone Pure SE(L) Mouse
+	2e22  Kone XTD Mouse
+	2e23  Kone XTD Optical Mouse
+	2e27  Kone AIMO Mouse
+	2e4a  Tyon Black Mouse
+	2e4b  Tyon White Mouse
+	2e7c  Nyth Black Mouse
+	2e7d  Nyth White Mouse
+	2f76  Sova Keyboard
+	2f94  Sova MK Keyboard
+	2fa8  Suora Keyboard
+	2fc6  Skeltr Keyboard
+	2fda  Ryos MK FX Keyboard
+	30d4  Arvo Keyboard
+	3138  Ryos MK Keyboard
+	316a  Ryos TKL Keyboard
+	319c  Isku Keyboard
+	31ce  Ryos MK Glow Keyboard
+	3232  Ryos MK Pro Keyboard
+	3246  Suora FX Keyboard
+	3264  Isku FX Keyboard
+1e8e  Airbus Defence and Space
+	6001  P8GR
+1e91  Other World Computing
+	b0b1  miniStack
+1ea7  SHARKOON Technologies GmbH
+	0030  Trust GXT 158 Orna Laser Gaming Mouse
+	0064  2.4GHz Wireless rechargeable vertical mouse [More&Better]
+	0066  [Mediatrack Edge Mini Keyboard]
+	0907  Keyboard
+	1002  Vintorez Gaming Mouse
+	2007  SHARK ZONE K30 Illuminated Gaming Keyboard
+1eab  Fujian Newland Computer Co., Ltd
+	0103  HR200 Barcode scanner engine (HID keyboard)
+	0106  HR200 Barcode scanner engine (Serial CDC)
+	0110  HR200 Barcode scanner engine (HID Pos)
+	0c03  HR100/HR3260 cordless/HR3290 cordless/BS80 Barcode scanner engine (HID keyboard)
+	0c06  HR100/HR3260 cordless/HR3290 cordless/BS80 Barcode scanner engine (USB Serial CDC)
+	0c10  HR100/HR3260 cordless/HR3290 cordless/BS80 Barcode scanner engine (HID Pos)
+	0d03  EM2028 Barcode scanner engine (HID keyboard)
+	0d06  EM2028 Barcode scanner engine (Serial CDC)
+	0d10  EM2028 Barcode scanner engine (HID Pos)
+	1303  EM30xx/EM20xx/HR3260 corded/HR200C Barcode scanner engine (HID keyboard)
+	1306  EM30xx/EM20xx/HR3260 corded/HR200C Barcode scanner engine (USB serial CDC)
+	1310  EM30xx/EM20xx/HR3260 corded/HR200C Barcode scanner engine (HID Pos)
+	1403  HR15-xx Barcode scanner engine (HID keyboard)
+	1406  HR15-xx Barcode scanner engine (Serial CDC)
+	1410  HR15-xx Barcode scanner engine (HID Pos)
+	1603  FM100-M/3250 Barcode scanner engine (HID keyboard)
+	1606  FM100-M/3250 Barcode scanner engine (Serial CDC)
+	1610  FM100-M/3250 Barcode scanner engine (HID Pos)
+	1903  EM1300 Barcode scanner engine (HID keyboard)
+	1906  EM1300 Barcode scanner engine (Serial CDC)
+	1910  EM1300 Barcode scanner engine (HID Pos)
+	1a03  HR3290 corded/HR22 Barcode scanner engine (HID keyboard)
+	1a06  HR3290 corded/HR22 Barcode scanner engine (Serial CDC)
+	1a10  HR3290 corded/HR22 Barcode scanner engine (HID Pos)
+	1c03  HR2150 Barcode scanner engine (HID keyboard)
+	1c06  HR2150 Barcode scanner engine (Serial CDC)
+	1c10  HR2150 Barcode scanner engine (HID Pos)
+	1d03  FM430 Barcode scanner engine (HID keyboard)
+	1d06  FM430 Barcode scanner engine (Serial CDC)
+	1d10  FM430 Barcode scanner engine (HID Pos)
+	1e03  HR42 Barcode scanner engine (HID keyboard)
+	1e06  HR42 Barcode scanner engine (Serial CDC)
+	1e10  HR42 Barcode scanner engine (HID Pos)
+	1f03  HR11+ Barcode scanner engine (HID keyboard)
+	1f06  HR11+ Barcode scanner engine (Serial CDC)
+	1f10  HR11+ Barcode scanner engine (HID Pos)
+	2003  EM2037v2 Barcode scanner engine (HID keyboard)
+	2006  EM2037v2 Barcode scanner engine (Serial CDC)
+	2010  EM2037v2 Barcode scanner engine (HID Pos)
+	8003  EM13x5-LD/HR15-70/HR100-70/HR12/HR1150-70 Barcode scanner engine (HID keyboard)
+	8006  EM13x5-LD/HR15-70/HR100-70/HR12/HR1150-70 Barcode scanner engine (USB Serial CDC)
+	8010  EM13x5-LD/HR15-70/HR100-70/HR12/HR1150-70 Barcode scanner engine (HID Pos)
+	8203  EM3080-01/EM3095/FR20/FM30 Barcode scanner engine (HID keyboard)
+	8206  EM3080-01/EM3095/FR20/FM30 Barcode scanner engine (USB Serial CDC)
+	8210  EM3080-01/EM3095/FR20/FM30 Barcode scanner engine (HID Pos)
+	8303  HR2160 Barcode scanner engine (HID keyboard)
+	8306  HR2160 Barcode scanner engine (Serial CDC)
+	8310  HR2160 Barcode scanner engine (HID Pos)
+1eaf  Leaflabs
+	0003  Maple DFU interface
+	0004  Maple serial interface
+1eb8  Modacom Co., Ltd.
+	7f00  MW-U3500 WiMAX adapter
+1ebb  NuCORE Technology, Inc.
+1ecb  AMTelecom
+	02e2  JMR1140 [Jiofi]
+1ed8  FENDER MUSICAL INSTRUMENTS CORPORATION
+	0004  Mustang I/II
+	0005  Mustang III/IV/V
+	0006  Mustang I/II [Firmware Update]
+	0007  Mustang III/IV/V [Firmware Update]
+	0010  Mustang Mini
+	0011  Mustang Mini [Firmware Update]
+	0014  Mustang I (V.2)
+	0016  Mustang IV v.2
+1eda  AirTies Wireless Networks
+	2012  Air2210 54 Mbps Wireless Adapter
+	2210  Air2210 54 Mbps Wireless Adapter
+	2310  Air2310 150 Mbps Wireless Adapter
+	2410  Air2410 300 Mbps Wireless Adapter
+1edb  Blackmagic design
+	bd3b  Intensity Shuttle
+	bd46  Mini Converter Analog to SDI
+	bd75  2.5K Cinema Camera (BMCC)
+1ee8  ONDA COMMUNICATION S.p.a.
+	0014  MT833UP
+1ef6  EADS Deutschland GmbH
+	2233  Cassidian NH90 STTE
+	5064  FDR Interface
+	5523  Cassidian SSDC Adapter II
+	5545  Cassidian SSDC Adapter III
+	5648  RIU CSMU/BSD
+	564a  Cassidian RIU CSMU/BSD Simulator
+1f0c  CMX Systems
+	2000  HP StreamSmart 410 [NW278AA]
+1f28  Cal-Comp
+	0020  CDMA USB Modem A600
+	0021  CD INSTALLER USB Device
+1f3a  Allwinner Technology
+	1000  Prestigio PER3464B ebook reader (Mass storage mode)
+	1002  mediacom XPRO 415
+	1010  Android device in fastboot mode
+	efe8  sunxi SoC OTG connector in FEL/flashing mode
+1f44  The Neat Company
+	0001  NM-1000 scanner
+1f48  H-TRONIC GmbH
+	0627  Data capturing system
+	0628  Data capturing and control module
+1f4d  G-Tek Electronics Group
+	a115  EVOLVEO XtraTV stick [DVB-T]
+	b803  Lifeview LV5TDLX DVB-T [RTL2832U]
+	c803  NotOnlyTV (Lifeview) LV5TDLX DVB-T [RTL2832U]
+	d220  Geniatech T220 DVB-T2 TV Stick
+1f52  Systems & Electronic Development FZCO (SEDCO)
+	0001  Ultima 49 Printer
+	0002  Ultima 90 Printer
+	0003  FormsPro 50 Printer
+	0004  Ultima 90+ Printer
+1f6f  Aliph
+	0023  Jawbone Jambox
+	8000  Jawbone Jambox - Updating
+1f75  Innostor Technology Corporation
+	0611  IS611 SATA/PATA Bridge Controller
+	0621  IS621 SATA Storage Controller
+	0888  IS888 SATA Storage Controller
+	0902  IS902 UFD controller
+	0916  IS916 Flash Drive
+	0917  IS917 Mass storage
+	0918  IS918 Flash Drive
+1f82  TANDBERG
+	0001  PrecisionHD Camera
+1f84  Alere, Inc.
+	1f7e  Lateral Flow Engine
+1f87  Stantum
+	0002  Multi-touch HID Controller
+1f9b  Ubiquiti Networks, Inc.
+	0241  AirView2-EXT
+	b0b1  UniFi VoIP Phone
+1fab  Samsung Opto-Electroncs Co., Ltd.
+	104d  ES65
+1fac  Franklin Wireless
+	0232  U770 3G/4G Wimax/4G LTE Modem
+1fae  Lumidigm
+	0040  M311 Fingerprint Scanner
+	212c  M30x (Mercury) fingerprint sensor
+1fb2  Withings
+	0001  Wi-Fi Body Scale (WBS01)
+1fba  DERMALOG Identification Systems GmbH
+1fbd  Delphin Technology AG
+	0001  Expert Key - Data aquisition system
+1fc9  NXP Semiconductors
+	0003  LPC1343
+	000c  LPC4330FET180 [ARM Cortex M4 + M0] (device firmware upgrade mode)
+	0082  LPC4330FET180 [ARM Cortex M4 + M0] (mass storage controller mode)
+	010b  PR533
+	0126  i.MX 7ULP SystemOnChip in RecoveryMode
+	012b  i.MX 8M Dual/8M QuadLite/8M Quad Serial Downloader
+	5002  PTN5002 [Startech VGA/DVI-D adapter]
+	8124  SharkRF Bootloader
+	824c  LumiNode1
+1fde  ILX Lightwave Corporation
+	0001  UART Bridge
+1fe7  Vertex Wireless Co., Ltd.
+	1000  VW100 series CDMA EV-DO Rev.A modem
+1ff7  CVT Electronics.Co.,Ltd
+	0013  CVTouch Screen (HID)
+	001a  Human Interface Device
+1ffb  Pololu Corporation
+	0081  AVR Programmer
+	0083  Jrk 21v3 Motor Controller
+	0089  Micro Maestro 6-Servo Controller
+	008a  Mini Maestro 12-Channel Servo Controller
+	008b  Mini Maestro 18-Channel Servo Controller
+	008c  Mini Maestro 24-Channel Servo Controller
+	00b0  AVR Programmer v2
+1fff  Ideofy Inc.
+2000  CMX Systems
+	1f0c  HP StreamSmart 410 [NW278AA]
+2001  D-Link Corp.
+	0001  DWL-120 WIRELESS ADAPTER
+	0201  DHN-120 10Mb Home Phoneline Adapter
+	1a00  DUB-E100 Fast Ethernet Adapter(rev.A) [ASIX AX88172]
+	1a02  DUB-E100 Fast Ethernet Adapter(rev.C1) [ASIX AX88772]
+	200c  10/100 Ethernet
+	3101  DWA-182 AC1200 DB Wireless Adapter(rev.A1) [Broadcom BCM43526]
+	3200  DWL-120 802.11b Wireless Adapter(rev.E1) [Atmel at76c503a]
+	3301  DWA-130 802.11n Wireless N Adapter(rev.C1) [Realtek RTL8192U]
+	3306  DWL-G122 Wireless Adapter(rev.F1) [Realtek RTL8188SU]
+	3308  DWA-121 802.11n Wireless N 150 Pico Adapter [Realtek RTL8188CUS]
+	3309  DWA-135 802.11n Wireless N Adapter(rev.A1) [Realtek RTL8192CU]
+	330a  DWA-133 802.11n Wireless N Adapter [Realtek RTL8192CU]
+	330d  DWA-131 802.11n Wireless N Nano Adapter (rev.B1) [Realtek RTL8192CU]
+	330f  DWA-125 Wireless N 150 Adapter(rev.D1) [Realtek RTL8188ETV]
+	3310  DWA-123 Wireless N 150 Adapter (rev.D1)
+	3314  DWA-171 AC600 DB Wireless Adapter(rev.A1) [Realtek RTL8811AU]
+	3315  DWA-182 Wireless AC Dualband Adapter(rev.C) [Realtek RTL8812AU]
+	3317  DWA-137 Wireless N High-Gain Adapter [Ralink RT5372]
+	3319  DWA-131 Wireless N Nano Adapter (Rev. E1) [Realtek RTL8192EU]
+	3500  Elitegroup Computer Systems WLAN card WL-162
+	3700  DWL-122 802.11b [Intersil Prism 3]
+	3701  DWL-G120 Spinnaker 802.11g [Intersil ISL3886]
+	3702  DWL-120 802.11b Wireless Adapter(rev.F) [Intersil ISL3871]
+	3703  AirPlus G DWL-G122 Wireless Adapter(rev.A1) [Intersil ISL3880]
+	3704  AirPlus G DWL-G122 Wireless Adapter(rev.A2) [Intersil ISL3887]
+	3705  AirPlus G DWL-G120 Wireless Adapter(rev.C) [Intersil ISL3887]
+	3761  IEEE 802.11g USB2.0 Wireless Network Adapter-PN
+	3a00  DWL-AG132 [Atheros AR5523]
+	3a01  DWL-AG132 (no firmware) [Atheros AR5523]
+	3a02  DWL-G132 [Atheros AR5523]
+	3a03  DWL-G132 (no firmware) [Atheros AR5523]
+	3a04  DWL-AG122 [Atheros AR5523]
+	3a05  DWL-AG122 (no firmware) [Atheros AR5523]
+	3a80  AirPlus Xtreme G DWL-G132 Wireless Adapter
+	3a81  predator Bootloader Download
+	3a82  AirPremier AG DWL-AG132 Wireless Adapter
+	3a83  predator Bootloader Download
+	3b00  AirPlus DWL-120+ Wireless Adapter [Texas Instruments ACX100USB]
+	3b01  WLAN Boot Device
+	3c00  AirPlus G DWL-G122 Wireless Adapter(rev.B1) [Ralink RT2571]
+	3c01  AirPlus AG DWL-AG122 Wireless Adapter
+	3c02  AirPlus G DWL-G122 Wireless Adapter
+	3c05  DUB-E100 Fast Ethernet Adapter(rev.B1) [ASIX AX88772]
+	3c15  DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT5372]
+	3c17  DWA-123 Wireless N 150 Adapter(rev.A1) [Ralink RT3370]
+	3c19  DWA-125 Wireless N 150 Adapter(rev.A3) [Ralink RT5370]
+	3c1a  DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.B2) [Ralink RT5572]
+	3c1b  DWA-127 Wireless N 150 High-Gain Adapter(rev.A1) [Ralink RT3070]
+	3c1e  DWA-125 Wireless N 150 Adapter(rev.B1) [Ralink RT5370]
+	4000  DSB-650C Ethernet [klsi]
+	4001  DSB-650TX Ethernet [pegasus]
+	4002  DSB-650TX Ethernet [pegasus]
+	4003  DSB-650TX-PNA Ethernet [pegasus]
+	400b  10/100 Ethernet
+	4102  10/100 Ethernet
+	4a00  DUB-1312 Gigabit Ethernet Adapter
+	5100  DSL-200 ADSL ATM Modem
+	5102  DSL-200 ADSL Loader
+	5b00  Remote NDIS Network Device
+	9414  Cable Modem
+	9b00  Broadband Cable Modem Remote NDIS Device
+	abc1  DSB-650 Ethernet [pegasus]
+	f013  DLink 7 port USB2.0 Hub
+	f103  DUB-H7 7-port USB 2.0 hub
+	f10d  Accent Communications Modem
+	f110  DUB-AV300 A/V Capture
+	f111  DBT-122 Bluetooth adapter
+	f112  DUB-T210 Audio Device
+	f116  Formosa 2
+	f117  Formosa 3
+	f118  Formosa 4
+2002  DAP Technologies
+2003  detectomat
+	ea61  dc3500
+2006  LenovoMobile
+2009  iStorage
+	5004  datAshur 4GB
+	5016  datAshur 16GB
+	5032  datAshur 32GB
+200c  Reloop
+	100b  Play audio soundcard
+2013  PCTV Systems
+	0242  QuatroStick 510e
+	0245  PCTV 73ESE
+	0246  PCTV 74E
+	0248  PCTV 282E
+	024c  DVB-S2 Stick 460e
+	024f  nanoStick T2 290e
+	0251  QuatroStick nano 520e
+	0258  DVB-S2 Stick 461e
+	025a  AndroiDTV 78e
+	025f  tripleStick 292e
+	0262  microStick 79e
+2018  Deutsche Telekom AG
+	0406  Eumex 800
+	0408  Eumex 800
+2019  PLANEX
+	3220  GW-US11S WLAN [Atmel AT76C503A]
+	4901  GW-USSuper300 802.11bgn Wireless Adapter [Realtek RTL8191SU]
+	4903  GW-USFang300 802.11abgn Wireless Adapter [Realtek RTL8192DU]
+	4904  GW-USUltra300 802.11abgn Wireless Adapter [Realtek RTL8192DU]
+	5303  GW-US54GXS 802.11bg
+	5304  GWUS300 802.11n
+	ab01  GW-US54HP
+	ab24  GW-US300MiniS
+	ab25  GW-USMini2N 802.11n Wireless Adapter [Ralink RT2870]
+	ab28  GW-USNano
+	ab29  GW-USMicro300
+	ab2a  GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS]
+	ab2b  GW-USEco300 802.11bgn Wireless Adapter [Realtek RTL8192CU]
+	ab2c  GW-USDual300 802.11abgn Wireless Adapter [Realtek RTL8192DU]
+	ab50  GW-US54Mini2
+	c002  GW-US54SG
+	c007  GW-US54GZL
+	ed02  GW-USMM
+	ed06  GW-US300MiniW 802.11bgn Wireless Adapter
+	ed10  GW-US300Mini2
+	ed14  GW-USMicroN
+	ed16  GW-USMicroN2W 802.11bgn Wireless Adapter [Realtek RTL8188SU]
+	ed17  GW-USValue-EZ 802.11n Wireless Adapter [Realtek RTL8188CUS]
+	ed18  GW-USHyper300 / GW-USH300N 802.11bgn Wireless Adapter [Realtek RTL8191SU]
+201e  Haier
+	2009  CE100 CDMA EVDO
+203a  PARALLELS
+203d  Encore Electronics Inc.
+	1480  ENUWI-N3 [802.11n Wireless N150 Adapter]
+2040  Hauppauge
+	0265  WinTV-dualHD DVB
+	026d  WinTV-dualHD ATSC
+	0c80  Windham
+	0c90  Windham
+	1605  WinTV-HVR 930C HD
+	1700  CataMount
+	1800  Okemo A
+	1801  Okemo B
+	2000  Tiger Minicard
+	2009  Tiger Minicard R2
+	200a  Tiger Minicard
+	2010  Tiger Minicard
+	2011  WinTV MiniCard [Dell Digital TV Receiver]
+	2019  Tiger Minicard
+	2400  WinTV PVR USB2 (Model 24019)
+	4200  WinTV
+	4700  WinTV Nova-S-USB2
+	4902  HD PVR
+	4903  HS PVR
+	4982  HD PVR
+	5500  Windham
+	5510  Windham
+	5520  Windham
+	5530  Windham
+	5580  Windham
+	5590  Windham
+	6500  WinTV HVR-900
+	6502  WinTV HVR-900
+	6503  WinTV HVR-930
+	6513  WinTV HVR-950/HVR-980
+	6600  WinTV HVR-900H (Model 660xx)
+	7050  Nova-T Stick
+	7060  Nova-T Stick 2
+	7070  Nova-T Stick 3
+	7240  WinTV HVR-850
+	8400  WinTV Nova-T-500
+	9300  WinTV NOVA-T USB2 (cold)
+	9301  WinTV NOVA-T USB2 (warm)
+	9941  WinTV Nova-T-500
+	9950  WinTV Nova-T-500
+	b123  WinTV-HVR-955Q
+	b138  WinTV-HVR-900 model 00246 [WinTV-T Video]
+	b910  Windham
+	b980  Windham
+	b990  Windham
+	c000  Windham
+	c010  Windham
+2047  Texas Instruments
+	0013  MSP eZ-FET lite
+	0014  MSP-FET
+	0200  MSP430 Bootloader
+	0203  eZ-FET Bootloader
+	0204  MSP-FET Bootloader
+	0300  MSP430 CDC Example
+	0301  MSP430 HID Datapipe Example
+	0302  MSP430 CDC+HID Example
+	0309  MSP430 HID Mouse Example
+	0313  MSP430 CDC+CDC Example
+	0314  MSP430 HID+HID Example
+	0315  MSP430 HID Keyboard Example
+	0316  MSP430 MSC File System Emulation Example
+	0317  MSP430 MSC SD Card Example
+	0318  MSP430 MSC Multiple LUNs Example
+	0319  MSP430 MSC+CDC+HID Example
+	0320  MSP430 SYSBIOS Tasks MSC+CDC+HID Example
+	0321  MSP430 SYSBIOS SWIs MSC+CDC+HID Example
+	0322  MSP430 MSC Double-Buffering Example
+	0323  MSP430 MSC CD-ROM Example
+	03df  MSP430 User Experiment
+	03e0  MSP430 User Experiment
+	03e1  MSP430 User Experiment
+	03e2  MSP430 User Experiment
+	03e3  MSP430 User Experiment
+	03e4  MSP430 User Experiment
+	03e5  MSP430 User Experiment
+	03e6  MSP430 User Experiment
+	03e7  MSP430 User Experiment
+	03e8  MSP430 User Experiment
+	03e9  MSP430 User Experiment
+	03ea  MSP430 User Experiment
+	03eb  MSP430 User Experiment
+	03ec  MSP430 User Experiment
+	03ed  MSP430 User Experiment
+	03ee  MSP430 User Experiment
+	03ef  MSP430 User Experiment
+	03f0  MSP430 User Experiment
+	03f1  MSP430 User Experiment
+	03f2  MSP430 User Experiment
+	03f3  MSP430 User Experiment
+	03f4  MSP430 User Experiment
+	03f5  MSP430 User Experiment
+	03f6  MSP430 User Experiment
+	03f7  MSP430 User Experiment
+	03f8  MSP430 User Experiment
+	03f9  MSP430 User Experiment
+	03fa  MSP430 User Experiment
+	03fb  MSP430 User Experiment
+	03fc  MSP430 User Experiment
+	03fd  MSP430 User Experiment
+	0401  MSP430 Keyboard Example
+	0855  Invensense Embedded MotionApp HID Sensor
+	08f8  FDC2x14/LDC13xx/LDC16xx EVM
+	0964  Inventio Software MSP430
+	0a76  GEOKON S-3810A-5 USB-RS485 CONVERTER
+	ffe7  HID v1.00 Device [Improv Device]
+2058  Nano River Technology
+	2058  ViperBoard I2C, SPI, GPIO interface
+2077  Taicang T&W Electronics Co. Ltd
+	9002  W1M100 HSPA/WCDMA Module
+2080  Barnes & Noble
+	0001  nook
+	0002  NOOKcolor
+	0003  NOOK Simple Touch
+	0004  NOOK Tablet
+	0005  BNTV600 [Nook HD+]
+	0006  BNTV400 [Nook HD]
+	0007  BNRV500 [Nook Glowlight]
+	000a  BNRV510 [Nook Glowlight Plus]
+	000b  BNRV520 [Nook Glowlight 3]
+	000c  BNRV700 [Nook Glowlight Plus]
+2086  SIMPASS
+2087  Cando
+	0a01  Multi Touch Panel
+	0a02  Multi Touch Panel
+	0b03  Multi Touch Panel
+20a0  Clay Logic
+	0006  flirc
+	4107  GPF Crypto Stick V1.2
+	4123  IKALOGIC SCANALOGIC 2
+	414a  MDE SPI Interface
+	415a  OpenPilot
+	415b  CopterControl
+	415c  PipXtreme
+	41e5  BlinkStick
+	4211  Nitrokey Start
+	4223  ATSAMD21 [castAR]
+	428d  Electrosense wideband converter
+20b1  XMOS Ltd
+	10ad  XUSB Loader
+	f7d1  XTAG2 - JTAG Adapter
+20b3  Hanvon
+	0a18  10.1 Touch screen overlay
+20b7  Qi Hardware
+	0713  Milkymist JTAG/serial
+	1540  ben-wpan, AT86RF230-based
+	1db5  IDBG in DFU mode
+	1db6  IDBG in normal mode
+	9db1  Glasgow Debug Tool
+	c25b  C2 Dongle
+	cb72  ben-wpan, cntr
+20bc  ShenZhen ShanWan Technology Co., Ltd.
+	5500  Frostbite controller
+20ce  Minicircuits
+	0012  RF Sythesizer 250-4200MHz model SSG-4000LH
+	0021  RF Switch Matrix
+	0022  I/O Controller
+20df  Simtec Electronics
+	0001  Entropy Key [UDEKEY01]
+20f0  L3Harris Technologies
+	2102  EWLA V2 Module
+20f1  NET New Electronic Technology GmbH
+	0101  iCube3 Camera
+20f4  TRENDnet
+	646b  TEW-646UBH High Power 150Mbps Wireless N Adapter [Realtek RTL8188SU]
+	648b  TEW-648UBM 802.11n 150Mbps Micro Wireless N Adapter [Realtek RTL8188CUS]
+	664b  TEW-664UB H/W:V2.0R
+	804b  TEW-804UB 802.11a/b/g/n/ac (1x1) Wireless Adapter [Realtek RTL8811AU]
+	805b  TEW-805UB 300Mbps+867Mbps Wireless AC Adapter [Realtek RTL8812AU]
+	806b  TEW-806UBH 802.11a/b/g/n/ac (1x1) Wireless Adapter [MediaTek MT7610U]
+20f7  XIMEA
+	3001  MQ or MD camera
+	3002  MU camera
+	3021  MJ camera
+	30b3  MQ in U3V mode or MC camera
+	a003  MU camera
+2100  RT Systems
+	0e56  USB62C Radio Cable [Yaesu 857/D - 897/D]
+	9e50  USB-59 Radio Cable [Yaesu VX-8/D/DR]
+	9e52  Yaesu VX-7
+	9e54  CT29B Radio Cable
+	9e57  RTS01 Radio Cable
+	9e58  USB63C Radio Cable [Yaesu FTDX-1200]
+	9e5d  K4Y Radio Cable
+	9e5f  FT232RL [RTS05 Serial Cable]
+2101  ActionStar
+	0201  SIIG 4-to-2 Printer Switch
+	1402  Keyboard/Mouse Switch
+2104  Tobii Technology AB
+	0050  Eye tracker [EYEX2]
+	0124  Eyechip
+2107  RDING TECH CO.,LTD
+2109  VIA Labs, Inc.
+	0210  Hub
+	0700  VL700 SATA 3Gb/s bridge
+	0701  VL701 SATA 3Gb/s bridge
+	0711  VL711 SATA 6Gb/s bridge
+	0715  VL817 SATA Adaptor
+	0810  VL81x Hub
+	0811  Hub
+	0812  VL812 Hub
+	0813  VL813 Hub
+	0820  VL820 Hub
+	2210  Hub
+	2811  Hub
+	2812  VL812 Hub
+	2813  VL813 Hub
+	2820  VL820 Hub
+	3431  Hub
+	711f  External
+	8110  Hub
+2113  Softkinetic
+	0137  DepthSense 311 (3D)
+	0145  DepthSense 325
+	8000  DepthSense 311 (Color)
+2116  KT Tech
+	000a  IDE Hard Drive Enclosure
+211f  CELOT Corporation
+	6801  CDMA Products
+2123  Cheeky Dream
+	1010  Rocket Launcher
+2125  Fiberpro Inc.
+	0000  Bootloader
+	0010  MCB-100 Series
+2133  signotec GmbH
+	0001  LCD Signature Pad Sigma
+	0018  Delta Pen
+	0019  Delta Touch
+	001c  Kronos Pen
+	0022  Epsilon Pen
+2149  Advanced Silicon S.A.
+	211b  Touchscreen Controller
+	2306  TS58xxA/TC56xxA [CoolTouch]
+	2703  TS58xxA/TC56xxA [CoolTouch]
+214b  Huasheng Electronics
+	7000  4-port hub [Maxxter ACT-HUB2-4P, HS8836, iSoul ultra-slim]
+214e  Swiftpoint
+	0005  Z - Gaming mouse [SM700]
+2162  Broadxent (Creative Labs)
+	2031  Network Blaster Wireless Adapter
+	500c  DE5771 Modem Blaster
+	8001  Broadxent BritePort DSL Bridge 8010U
+2166  JVC Kenwood
+	600b  TH-D74
+2184  GW Instek
+	0005  GDS-3000 Oscilloscope
+	0006  GDS-3000 Oscilloscope
+	0011  AFG Function Generator (CDC)
+	0017  DSO
+	0018  DSO
+	0036  AFG-125 Function Generator (CDC)
+2188  No brand
+	0610  Hub
+	0611  Hub
+	0620  Hub
+	0625  Hub
+	0754  Card Reader
+	4042  CalDigit Pro Audio
+219c  Seal One AG
+	0010  USB 2200 K Secure Sign Token
+21a1  Emotiv Systems Pty. Ltd.
+	0001  EPOC Consumer Headset Wireless Dongle
+21a4  Electronic Arts Inc.
+	ac27  SPORTS Active 2 Wireless Controller for PS3
+	ac40  SPORTS Active 2 Wireless Controller for Wii
+21a9  Saleae, Inc.
+	1001  16-channel Logic Analyzer [Logic16]
+	1003  Logic 4
+	1004  Logic8
+	1005  Logic Pro 8
+	1006  Logic Pro 16
+21ab  Planeta Informatica
+	0010  RC700 NFC SmartCard Reader
+	0011  DSR700 SmartCard Reader
+21b4  AudioQuest
+	0081  DragonFly
+	0082  DragonFly Red
+21d6  Agecodagis SARL
+	0002  Seismic recorder [Tellus]
+2207  Fuzhou Rockchip Electronics Company
+	0010  GoClever Tab R83
+	0011  SmartTab
+	281a  RK2818 in Mask ROM mode
+	290a  RK2918 in Mask ROM mode
+	292a  RK2928 in Mask ROM mode
+	292c  RK3026 in Mask ROM mode
+	300a  RK3066 in Mask ROM mode
+	300b  RK3168 in Mask ROM mode
+	301a  RK3036 in Mask ROM mode
+	310a  RK3066B in Mask ROM mode
+	310b  RK3188 in Mask ROM mode
+	310c  RK3126/RK3128 in Mask ROM mode
+	310d  RK3126 in Mask ROM mode
+	320a  RK3288 in Mask ROM mode
+	320b  RK3228/RK3229 in Mask ROM mode
+	320c  RK3328 in Mask ROM mode
+	330a  RK3368 in Mask ROM mode
+	330c  RK3399 in Mask ROM mode
+221a  ZTEX GmbH
+	0100  FPGA Boards
+2222  MacAlly
+	0004  iWebKey Keyboard
+	0005  ICEKey Keyboard
+	1001  Generic Hub
+	2520  Mini Tablet
+	4050  AirStick joystick
+2226  Copper Mountain technologies
+2227  SAMWOO Enterprise
+	3105  SKYDATA SKD-U100
+222a  ILI Technology Corp.
+	0001  Multi-Touch Screen
+	0037  Multi-Touch Screen
+2230  Plugable
+	0001  UD-160-A / M Integrated Hub
+	0003  DC-125 / M Integrated Hub
+2232  Silicon Motion
+	1005  WebCam SCB-0385N
+	1024  Webcam SC-13HDL11624N [Namuga Co., Ltd.]
+	1028  WebCam SC-03FFL11939N
+	1029  WebCam SC-13HDL11939N
+	1037  WebCam SC-03FFM12339N
+	1045  WebCam SC-10HDP12631N
+2233  RadioShack Corporation
+	6323  USB Electronic Scale
+2237  Kobo Inc.
+	4161  eReader White
+	4163  Touch
+	4173  Glo
+2245  Aspeed Technology, Inc.
+	1500  AST1500/1510 PC-over-LAN Virtual Hub
+224f  APDM
+	0001  Access Point
+	0002  Docking Station
+	0004  V2 Opal ACM
+	0005  V2 Opal
+	0006  V2 Docking Station
+	0007  V2 Access Point ACM
+	0008  V2 Access Point
+2256  Faderfox
+	1007  LV3 MIDI Controller
+225d  Morpho
+	0001  FINGER VP Multimodal Biometric Sensor
+	0008  CBM-E3 Fingerprint Sensor
+	0009  CBM-V3 Fingerprint Sensor
+	000a  MSO1300-E3 Fingerprint Sensor
+	000b  MSO1300-V3 Fingerprint Sensor
+	000c  MSO1350-E3 Fingerprint Sensor & SmartCard Reader
+	000d  MSO1350-V3 Fingerprint Sensor & SmartCard Reader
+	000e  MorphoAccess SIGMA Biometric Access Control Terminal
+	9015  Tablet 2
+	9024  Tablet 2
+	9039  Tablet 2 secure multifunction biometric tablet
+	904d  Tablet 2 secure multifunction biometric tablet
+	904e  Tablet 2 secure multifunction biometric tablet
+	9091  Tablet 2 secure multifunction biometric tablet
+	9092  Tablet 2 secure multifunction biometric tablet
+	f000  Tablet 2 secure multifunction biometric tablet
+	f003  Tablet 2 secure multifunction biometric tablet
+	f006  Tablet 2 secure multifunction biometric tablet
+	f00e  Tablet 2 secure multifunction biometric tablet
+226e  DISPLAX
+228d  8D Technologies inc.
+	0001  Terminal Bike Key Reader
+22a4  VERZO Technology
+22a6  Pie Digital, Inc.
+	ffff  PieKey "beta" 4GB model 4E4F41482E4F5247 (SM3251Q BB)
+22a7  Fortinet Technologies
+	1001  FortiGate Device
+22b1  Secret Labs LLC
+	1000  Netduino MCU pcb
+22b8  Motorola PCS
+	0001  Wally 2.2 chipset
+	0002  Wally 2.4 chipset
+	0005  V.60c/V.60i GSM Phone
+	002e  XT1806
+	0830  2386C-HT820
+	0833  2386C-HT820 [Flash Mode]
+	0850  Bluetooth Device
+	1001  Patriot 1.0 (GSM) chipset
+	1002  Patriot 2.0 chipset
+	1005  T280e GSM/GPRS Phone
+	1101  Patriot 1.0 (TDMA) chipset
+	1801  Rainbow chipset flash
+	2035  Bluetooth Device
+	2805  GSM Modem
+	2821  T720 GSM Phone
+	2822  V.120e GSM Phone
+	2823  Flash Interface
+	2a01  MSM6050 chipset
+	2a02  CDMA modem
+	2a03  MSM6050 chipset flash
+	2a21  V710 GSM Phone (P2K)
+	2a22  V710 GSM Phone (AT)
+	2a23  MSM6100 chipset flash
+	2a41  MSM6300 chipset
+	2a42  Usb Modem
+	2a43  MSM6300 chipset flash
+	2a61  E815 GSM Phone (P2K)
+	2a62  E815 GSM Phone (AT)
+	2a63  MSM6500 chipset flash
+	2a81  MSM6025 chipset
+	2a83  MSM6025 chipset flash
+	2ac1  MSM6100 chipset
+	2ac3  MSM6100 chipset flash
+	2d78  XT300[SPICE]
+	2e82  XT1541 [Moto G 3rd Gen]
+	2e83  XT1033 [Moto G], PTP mode
+	3001  A835/E1000 GSM Phone (P2K)
+	3002  A835/E1000 GSM Phone (AT)
+	3801  C350L/C450 (P2K)
+	3802  C330/C350L/C450/EZX GSM Phone (AT)
+	3803  Neptune LT chipset flash
+	4001  OMAP 1.0 chipset
+	4002  A920/A925 UMTS Phone
+	4003  OMAP 1.0 chipset flash
+	4008  OMAP 1.0 chipset RDL
+	41d6  Droid X (Windows media mode)
+	41d9  Droid/Milestone
+	41db  Droid/Milestone (Debug mode)
+	41de  Droid X (PC mode)
+	4204  MPx200 Smartphone
+	4214  MPc GSM
+	4224  MPx220 Smartphone
+	4234  MPc CDMA
+	4244  MPx100 Smartphone
+	4285  Droid X (Mass storage)
+	42d9  XT910 [Droid RAZR]
+	4801  Neptune LTS chipset
+	4803  Neptune LTS chipset flash
+	4810  Triplet GSM Phone (storage)
+	4901  Triplet GSM Phone (P2K)
+	4902  Triplet GSM Phone (AT)
+	4903  Neptune LTE chipset flash
+	4a01  Neptune LTX chipset
+	4a03  Neptune LTX chipset flash
+	4a32  L6-imode Phone
+	5801  Neptune ULS chipset
+	5803  Neptune ULS chipset flash
+	5901  Neptune VLT chipset
+	5903  Neptune VLT chipset flash
+	6001  Dalhart EZX
+	6003  Dalhart flash
+	6004  EZX GSM Phone (CDC Net)
+	6006  MOTOROKR E6
+	6008  Dalhart RDL
+	6009  EZX GSM Phone (P2K)
+	600a  Dalhart EZX config 17
+	600b  Dalhart EZX config 18
+	600c  EZX GSM Phone (USBLAN)
+	6021  JUIX chipset
+	6023  JUIX chipset flash
+	6026  Flash RAM Downloader/miniOS
+	6027  USBLAN
+	604c  EZX GSM Phone (Storage)
+	6101  Talon integrated chipset
+	6401  Argon chipset
+	6403  Argon chipset flash
+	6411  ROKR Z6 (print mode)
+	6415  ROKR Z6 (MTP mode)
+	6422  ROKR Z6 (modem mode)
+	6426  ROKR Z6 (storage mode)
+	6604  Washington CDMA Phone
+	6631  CDC Modem
+	7001  Q Smartphone
+	7086  Atrix
+	70a8  Xoom Tablet
+	fe01  StarTAC III MS900
+22b9  eTurboTouch Technology, Inc.
+	0006  Touch Screen
+22ba  Technology Innovation Holdings, Ltd
+	0108  Double Shock Steering Wheel HID
+	0109  Double Shock Steering Wheel Hub
+22c9  StepOver GmbH
+	0601  naturaSign Pad Colour
+	0701  naturaSign Pad Mobile
+	0801  naturaSign Pad Comfort
+	0881  naturaSign Pad Flawless
+	0901  naturaSign Pad Classic
+	09e1  naturaSign Pad Biometric
+	0ce1  duraSign Pad Brilliance
+	0cf1  duraSign Pad Biometric 5.0
+	0d01  duraSign 10.0
+	0df1  duraSign Pad Biometric 10.0
+22cd  Kinova Robotics Inc.
+22d4  Laview Technology
+	1301  Mionix NAOS 8200 [STM32F103 MCU]
+	1308  Mionix Avior 7000
+	130c  Mionix Naos 7000
+	1316  Mionix Castor
+22d9  OPPO Electronics Corp.
+	2765  Oppo N1
+	2767  Oppo Find 5 (X909)
+22db  Phase One
+	0003  IQ3 100MP IG030372
+22dc  Mellanox Technologies
+	0004  BlueField SOC
+22de  WeTelecom Incorporated
+22df  Medicom MTD, Ltd
+22e0  secunet Security Networks AG
+	0002  SINA Flash Drive
+	0003  SINA ID Token A
+22e8  Cambridge Audio
+	6512  651N Audio
+	6969  Audio Prototype
+	7512  751R Audio
+	770a  X70A Audio
+	850c  851C Audio [Azur 850C]
+	851d  851D Audio [Azur 851D]
+	ca02  Audio
+	ca04  Audio
+	ca06  AmpMagic
+	dac2  DacMagic Plus
+	dac3  Azur DacMagic 100
+	dac4  Azur DacMagic 100
+	dac6  DacMagicXS 2.0
+	dac8  Audio
+2304  Pinnacle Systems, Inc.
+	0109  Studio PCTV USB (SECAM)
+	0110  Studio PCTV USB (PAL)
+	0111  Miro PCTV USB
+	0112  Studio PCTV USB (NTSC) with FM radio
+	0201  Systems MovieBox Device
+	0204  MovieBox USB_B
+	0205  DVC 150B
+	0206  Systems MovieBox Deluxe Device
+	0207  Dazzle DVC90 Video Device
+	0208  Studio PCTV USB2
+	020e  PCTV 200e
+	020f  PCTV 400e BDA Device
+	0210  Studio PCTV USB (PAL) with FM radio
+	0212  Studio PCTV USB (NTSC)
+	0213  500-USB Device
+	0214  Studio PCTV USB (PAL) with FM radio
+	0216  PCTV 60e
+	0219  PCTV 260e
+	021a  Dazzle DVC100 Audio Device
+	021b  Dazzle DVC130/DVC170
+	021d  Dazzle DVC130
+	021e  Dazzle DVC170
+	021f  PCTV Sat HDTV Pro BDA Device
+	0222  PCTV Sat Pro BDA Device
+	0223  DazzleTV Sat BDA Device
+	0225  Remote Kit Infrared Transceiver
+	0226  PCTV 330e
+	0227  PCTV for Mac, HD Stick
+	0228  PCTV DVB-T Flash Stick
+	0229  PCTV Dual DVB-T 2001e
+	022a  PCTV 160e
+	022b  PCTV 71e [Afatech AF9015]
+	0232  PCTV 170e
+	0236  PCTV 72e [DiBcom DiB7000PC]
+	0237  PCTV 73e [DiBcom DiB7000PC]
+	023a  PCTV 801e
+	023b  PCTV 801e SE
+	023d  PCTV 340e
+	023e  PCTV 340e SE
+	0300  Studio Linx Video input cable (NTSC)
+	0301  Studio Linx Video input cable (PAL)
+	0302  Dazzle DVC120
+	0419  PCTV Bungee USB (PAL) with FM radio
+	061d  PCTV Deluxe (NTSC) Device
+	061e  PCTV Deluxe (PAL) Device
+	2304  1689
+230d  Teracom
+	0103  Huwaii 3g wireless modem
+2314  INQ Mobile
+2318  Shining Technologies, Inc. [hex]
+	0011  CitiDISK Jr. IDE Enclosure
+2319  Tronsmart
+	0014  TSM01 Air Mouse + Keyboard
+232b  Pantum Ltd.
+	0810  P2000
+232e  EA Elektro-Automatik GmbH & Co. KG
+	0010  EA-PS-2000 B Series Power Supply
+2340  Teleepoch
+2341  Arduino SA
+	0001  Uno (CDC ACM)
+	0010  Mega 2560 (CDC ACM)
+	0036  Leonardo Bootloader
+	003b  Serial Adapter (CDC ACM)
+	003d  Due Programming Port
+	003e  Due
+	003f  Mega ADK (CDC ACM)
+	0042  Mega 2560 R3 (CDC ACM)
+	0043  Uno R3 (CDC ACM)
+	0044  Mega ADK R3 (CDC ACM)
+	0045  Serial R3 (CDC ACM)
+	0049  ISP
+	8036  Leonardo (CDC ACM, HID)
+	8038  Robot Control Board (CDC ACM, HID)
+	8039  Robot Motor Board (CDC ACM, HID)
+2349  P2 Engineering Group, LLC
+234b  Free Software Initiative of Japan
+	0000  Gnuk Token
+	0001  NeuG True RNG
+2357  TP-Link
+	0005  M7350 4G Mi-Fi Router
+	0100  TL-WN8200ND [Realtek RTL8192CU]
+	0101  RTL8812AU Archer T4U 802.11ac
+	0103  Archer T4UH wireless Realtek 8812AU
+	0105  Archer T1U 802.11a/n/ac Wireless Adapter [MediaTek MT7610U]
+	0106  Archer T9UH v1 [Realtek RTL8814AU]
+	0107  TL-WN821N v5/v6 [RTL8192EU]
+	0108  TL-WN822N Version 4 RTL8192EU
+	0109  TL-WN823N v2/v3 [Realtek RTL8192EU]
+	010b  Archer T2UHP [MediaTek MT7610U]
+	010c  TL-WN722N v2/v3 [Realtek RTL8188EUS]
+	010d  Archer T4U v2 [Realtek RTL8812AU]
+	010e  Archer T4UH v2 [Realtek RTL8812AU]
+	010f  Archer T4UHP [Realtek RTL8812AU]
+	0115  Archer T4U ver.3
+	011e  AC600 wireless Realtek RTL8811AU [Archer T2U Nano]
+	0120  Archer T2U PLUS [RTL8821AU]
+	012d  Archer T3U [Realtek RTL8812BU]
+	0200  MA 180 Zero CD
+	0201  HSUPA Modem MA180
+	0600  UE300 10/100/1000 LAN (mass storage CD-ROM mode) [Realtek RTL8153]
+	0601  UE300 10/100/1000 LAN (ethernet mode) [Realtek RTL8153]
+2366  Bitmanufaktur GmbH
+	0001  Reserved Prototyping PID
+	0002  OpenBeacon USB 2
+	0003  OpenPCD 2 RFID Reader for 13.56MHz
+	0004  OpenBeacon
+	0005  Blinkenlights WDIM
+	0006  Blinkenlights WMCU
+	0007  OpenBeacon Ethernet EasyReader PoE II - Active 2.4GHz RFID Reader
+	0008  OpenBeacon WLAN
+	0009  OpenPCD 2 RFID Reader for 13.56MHz
+	000a  OpenPCD 2 Audio & LCD Display
+2367  Teenage Engineering
+	0002  OP-1 Portable synthesizer
+	000c  OP-Z Portable synthesizer
+2368  Peterson Electro-Musical Products Inc.
+	0001  BBS-1 [BodyBeat Sync]
+236a  SiBEAM
+	1965  SB6501 802.11ad Wireless Network Adapter
+2373  Pumatronix Ltda
+	0001  5 MegaPixel Digital Still Camera [DSC5M]
+2375  Digit@lway, Inc.
+	0001  Digital Audio Player
+2378  OnLive
+	100a  Universal Wireless Controller
+237d  Cradlepoint
+	0400  MC400
+2386  Raydium Corporation
+	3125  Touch System
+	4328  Touch System
+	432f  Touch System
+238b  Hytera Communications
+	0a11  DMR Radio
+239a  Adafruit
+	0001  CDC Bootloader
+	801e  Trinket M0
+23a0  BIFIT
+	0001  Token iBank2key
+	0002  iBank2Key Type M Token
+	0003  iToken
+	0008  MS_KEY K - Angara
+23a6  Tronical Components GmbH
+	2000  Gibson Firebird X Pedal Board
+	2001  Gibson Firebird X Switch Board
+23b4  Dental Wings Inc.
+	0200  DW0200 Color Camera
+	0300  DW0300 Hight Speed Monochrome Camera
+23c7  Gemini
+	1021  FirstMix
+23fc  SesKion GmbH
+	0201  SPI-Simulyzer box for SPI data communication
+	0202  PSI5-Simulyzer box for PSI5 (Peripheral-Sensor-Interfacs) data communication
+	0203  SENT-Simulyzer box for SENT data communication
+	0204  DSI-Simulyzer box for DSI3 data communication
+2405  Custom Computer Services, Inc
+	0002  West Mountain Radio RIGblaster Advantage Audio
+	0003  West Mountain Radio RIGblaster Advantage
+2406  SANHO Digital Electronics Co., Ltd.
+	6688  PD7X Portable Storage
+2420  IRiver
+242e  Vossloh-Schwabe Deutschland GmbH
+	0001  DALI Master
+	0002  LiCS Bootloader Mode
+	0003  LiCS Running Mode
+	0004  iProgrammer
+	0005  NFC programming device
+2433  ASETEK
+	b200  [NZXT Kraken X60]
+2443  Aessent Technology Ltd
+	00dc  aes220 FPGA Mini-Module
+2457  Ocean Optics Inc.
+	100a  HR2000 Spectrometer 1.00.0
+	1012  HR4000 Spectrometer
+2458  Bluegiga Technologies
+	0001  BLED112 Bluetooth 4.0 Single Mode Dongle
+245f  Chord Electronics Limited
+2464  Nest
+	0001  Learning Thermostat
+	0002  Learning Thermostat (2nd Generation)
+	0010  Protect : Smoke + Carbon Monoxide
+	0020  Heat Link
+2466  Fractal Audio Systems
+	8003  Axe-Fx II
+	8010  Axe-FX III
+2476  YEI Technology
+	1040  3-Space Embedded Sensor
+2478  Tripp-Lite
+	2008  U209-000-R Serial Port
+248a  Maxxter
+	8366  Wireless Optical Mouse ACT-MUSW-002
+	8367  Telink Wireless Receiver
+249c  M2Tech s.r.l.
+24a4  Primare AB
+	0002  I15_v1.06 [Primare Audio DAC]
+24ae  Shenzhen Rapoo Technology Co., Ltd.
+	0001  KX Keyboard
+	0197  meva Barcode Scanner
+	1813  E9260 Wireless Multi-mode Keyboard
+	2000  2.4G Wireless Device Serial
+	2001  5 GHz Wireless Receiver
+	2003  5GHz Wireless Transceiver
+	4110  Optical Gaming Mouse [V280]
+	6000  Wireless Audio
+24c0  Chaney Instrument
+	0003  Model 01036 weather center
+24c6  ThrustMaster, Inc.
+	5000  Razer Atrox Gaming Arcade Stick
+	5300  PowerA Mini ProEX Controller for Xbox 360
+	5303  Airflo Wired Controller for Xbox 360
+	530a  ProEX Controller for Xbox 360
+	531a  Pro Ex mini for XBOX
+	5397  FUS1ON Tournament Controller
+	541a  PowerA CPFA115320-01 [Mini Controller for Xbox One]
+	542a  Spectra for Xbox One
+	543a  PowerA Wired Controller for Xbox One
+	5500  Horipad EX2 Turbo
+	5501  Hori Real Arcade Pro.VX-SA for Xbox 360
+	5502  Hori Fighting Stick VX Alt for Xbox 360
+	5503  Hori Fighting Edge for Xbox 360
+	5506  Hori Soulcalibur V Stick for Xbox 360
+	550d  Hori Gem Controller for Xbox 360
+	550e  Real Arcade Pro V Kai for Xbox One / Xbox 360
+	551a  Fusion Pro Controller
+	561a  Fusion Controller for Xbox One
+	5b00  Ferrari 458 Italia Racing Wheel
+	5b02  GPX Controller
+	5d04  Sabertooth Elite
+	fa00  INF-8032385 Disney Infinity Reader
+	fafb  Aplay Controller
+	fafd  Afterglow Gamepad for Xbox 360
+	fafe  Rock Candy Gamepad for Xbox 360
+24cf  Lytro, Inc.
+	00a1  Light Field Camera
+24dc  Aladdin R.D.
+	0406  JaCarta SF GOST
+24e0  Yoctopuce Sarl
+24e1  Paratronic
+	3001  Adp-usb
+	3005  Radius
+24e3  K-Touch
+24ea  Meva
+	0197  Barcode Scanner
+24ed  Zen Group
+	044d  Chat Headset
+24f0  Metadot
+	0105  Das Keyboard 4
+	0140  Das Keyboard 4
+	2020  Das Keyboard 5Q
+24ff  Acroname Inc.
+2500  Ettus Research LLC
+	0020  USRP B210
+	0021  USRP B200-mini
+	0022  USRP B205-mini
+	0200  USRP B200
+2516  Cooler Master Co., Ltd.
+	0003  Storm Xornet
+	0004  Storm QuickFire Rapid Mechanical Keyboard
+	0006  Storm Recon
+	0007  Storm Sentinel Advance II
+	0009  Storm Quick Fire PRO
+	0011  Storm Quick Fire TK 6keys
+	0014  Storm Quick Fire TK Nkeys
+	0015  Storm QuickFire Pro/Ultimate keyboard
+	0017  CM Storm Quick Fire Stealth
+	001a  Storm Quick Fire XT
+	0020  QuickFire Rapid-i Keyboard
+	0027  CM Storm Coolermaster Novatouch TKL
+	002d  Alcor mouse
+	0042  Masterkeys Lite L Combo RGB Keyboard
+	0044  Masterkeys Lite L Combo RGB Mouse
+	0046  Masterkeys PRO L
+	0047  MasterKeys Pro L
+	0055  MasterKeys L
+	1006  MasterCase SL600M
+	9494  Sirus Headset
+2520  ANA-U GmbH
+	0001  EasyPrinter S3
+2527  Software Bisque
+	1388  Paramount 5
+2537  Norelsys
+	1066  NS1066
+	1068  NS1068/NS1068X SATA Bridge Controller
+2544  Energy Micro AS
+2546  Ravensburger
+	e301  TipToi Pen
+2548  Pulse-Eight
+	1001  CEC Adapter
+	1002  CEC Adapter
+254e  SHF Communication Technologies AG
+	e2b3  SHF 58035 A BiasBoard
+2554  ASSA ABLOY AB
+2555  Basis Science Inc.
+	0001  B1 Fitness Band
+255e  Beijing Bonxeon Technology Co., Ltd.
+	0001  Device
+	0002  Dual
+2560  e-con Systems
+	c152  See3CAM_CU51 5 Mpx monochrome camera
+2563  ShenZhen ShanWan Technology Co., Ltd.
+	031d  DXT Mouse
+	0523  BM0523 WirelessGamepad
+	0575  ZD-V+ Wired Gaming Controller
+256b  Perreaux Industries Ltd
+	0121  Audiant 80i
+256f  3Dconnexion
+	c62e  SpaceMouse Wireless (cabled)
+	c62f  SpaceMouse Wireless Receiver
+	c631  SpaceMouse Pro Wireless (cabled)
+	c632  SpaceMouse Pro Wireless Receiver
+	c633  SpaceMouse Enterprise
+	c635  SpaceMouse Compact
+	c651  CadMouse Wireless
+	c652  Universal Receiver
+	c654  CadMouse Pro Wireless
+	c657  CadMouse Pro Wireless Left
+2573  ESI Audiotechnik GmbH
+	0017  MAYA22
+2574  AVer Information, Inc.
+	0901  VC520
+	0910  CAM520
+	0920  VC320
+	0930  CAM530
+	0940  CAM340
+	0950  VC322
+	0960  VB342
+2575  Weida Hi-Tech Co., Ltd.
+2576  AFO Co., Ltd.
+	0003  TCM
+	0005  BL [Boot Loader]
+	0011  THM
+2578  Pluscom
+	4168  2.4GHZ Wireless Arc Folding Mouse
+2581  Plug-up
+	1807  Generic HID Smartcard
+	1808  WinUSB Smartcard
+	f1d0  FIDO U2F Security Key
+258d  Sequans Communications
+259a  TriQuint Semiconductor
+25a7  Areson Technology Corp
+	2410  Laser mouse
+	fa23  2.4G Receiver
+	fa61  Elecom Co., Ltd MR-K013 Multicard Reader
+25b5  FlatFrog
+	0002  Multitouch 3200
+25bb  Brunner Elektronik AG
+	0063  PRT.5105 [Yoke]
+	0064  PRT.5105 [reserved]
+	0065  PRT.5096 [Battery Management System]
+	0066  PRT.5096 [Battery Management System]
+	0067  PRT.5094
+	0068  PRT.5094
+	0069  PRT.5119 [Ethernet2CAN LC Gateway]
+	006a  PRT.5113 [CLS CANaerospace Gateway]
+	006b  PRT.5123
+	006c  PRT.5123 [reserved]
+	006d  PRT.5127
+	00ff  MSP430 HID Update Agent
+25bf  Elegant Invention
+	0001  Isostick
+	0002  Isostick updater
+25c4  ARCAM
+25c6  Vitus Audio (AVA Group A/S)
+25c8  Visual Planet Ltd
+	0014  Single User touchfoil(tm) (SU2-80)
+25da  Netatmo
+	0001  Weather Station
+25dd  Bit4id Srl
+	1101  miniLector-s
+	1201  cryptokey
+	2221  iAM
+	2311  keyfour-a1
+	2321  CKey4
+	2341  tokenME FIPS v3
+	2351  Digital DNA Key
+	2354  Digital-DNA Key
+	2361  Digital-DNA Key BT
+	2362  Digital-DNA Key
+	2371  TokenME EVO v2
+	23b4  ArubaKey AK901
+	3111  miniLector EVO
+	3211  miniLector AIR EVO
+	3403  miniLector AIR NFC v3
+	3503  mLector AIR DI V3
+	b001  miniLector Blue
+25e3  Lumigon
+25f0  ShanWan
+	c131  Gioteck PS3 2.4G Wireless Controller
+25fb  Pentax Ricoh Imaging Co., Ltd
+	0102  K-5
+2604  Tenda
+	0012  U12
+2625  MilDef AB
+2626  Aruba Networks
+	ea60  UART Bridge Controller [cp210x]
+262a  SAVITECH Corp.
+	100e  SA9027 Audio Streaming Controller
+	10e0  SA9023 Audio Streaming Controller
+	9020  SA9020 audio controller
+	9023  SA9023 audio controller
+	9027  SA9027 audio controller
+	9226  SA9226 192KHz audio controller
+	9227  SA9227 384KHz audio controller
+	9228  SA9228 384KHz/DSD audio controller
+2632  TwinMOS
+	3209  7-in-1 Card Reader
+2639  Xsens
+	0001  MTi-10 IMU
+	0002  MTi-20 VRU
+	0003  MTi-30 AHRS
+	0011  MTi-100 IMU
+	0012  MTi-200 VRU
+	0013  MTi-300 AHRS
+	0017  MTi-G 7xx GNSS/INS
+	0100  Body Pack
+	0101  Awinda Station
+	0102  Awinda Dongle
+	0103  Sync Station
+	0200  MTw
+	0300  Motion Tracker Development Board
+	0301  MTi Converter
+	d00d  Wireless Receiver
+264a  Thermaltake
+	1004  Ventus
+2650  Electronics For Imaging, Inc. [hex]
+	1311  eBeam Classic [Luidia]
+2659  Sundtek
+	1101  TNT DVB-T/DAB/DAB+/FM
+	1201  FM Transmitter/Receiver
+	1202  MediaTV Analog/FM/DVB-T
+	1203  MediaTV Analog/FM/DVB-T MiniPCIe
+	1204  MediaTV Analog/FM/ATSC
+	1205  SkyTV Ultimate V
+	1206  MediaTV DVB-T MiniPCIe
+	1207  Sundtek HD Capture
+	1208  Sundtek SkyTV Ultimate III
+	1209  MediaTV Analog/FM/ATSC MiniPCIe
+	1210  MediaTV Pro III (EU)
+	1211  MediaTV Pro III (US)
+	1212  MediaTV Pro III MiniPCIe (EU)
+	1213  MediaTV Pro III MiniPCIe (US)
+2662  Moog Music Inc.
+266e  Silicon Integrated Systems
+2672  GoPro
+	0004  Hero 3
+	0006  HERO 3+ Silver Edition
+	0007  HERO 3+ Black
+	000e  HERO4 Black
+	0011  Hero 3+ Black
+2676  Basler AG
+	ba02  ace
+	ba03  ba03 dart Vision Caera
+	ba04  ba04 pulse Vision Camera
+	ba05  Vision Camera
+	ba06  Vision Camera
+	ba07  Vision Camera
+	ba08  Vision Camera
+	ba09  Vision Camera
+	ba0a  Vision Camera
+	ba0b  Vision Camera
+	ba0c  Vision Camera
+	ba0d  Vision Camera
+	ba0e  Vision Camera
+	ba0f  Vision Camera
+2685  Cardo Peripheral Systems LTD
+	0900  [Packtalk Bold Bluetooth Motorcycle Intercom]
+2687  Fitbit Inc.
+	fb01  Base Station
+2689  StepOver International GmbH
+	0601  naturaSign Pad POS
+	0901  naturaSign Pad Light
+	0ce1  Pad Vivid US
+	0cf1  Pad Biometric US 5.0
+	0d01  duraSign Pad US 10.0
+	0df1  duraSign Pad Biometric US 10.0
+268b  Dimension Engineering
+	0101  DELink 2
+	0201  Sabertooth 2x32
+	0405  Evolv DNA 200
+	0406  Evolv DNA 200
+	0407  Evolv DNA 200
+	0408  Evolv DNA 75
+	0409  Evolv DNA 250
+	0412  Evolv DNA 60
+	0413  Evolv DNA 200
+	0414  Evolv DNA 250
+	0415  Evolv DNA 75
+	0416  Evolv DNA 60
+	0417  Evolv DNA Go
+	0419  Evolv DNA 250 Color
+	0423  Evolv DNA 200
+	0424  Evolv DNA 250
+	0425  Evolv DNA 75
+	0426  Evolv DNA 60
+	8405  Evolv DNA 200 (recovery mode)
+	8406  Evolv DNA 200 (recovery mode)
+	8407  Evolv DNA 200 (recovery mode)
+	8408  Evolv DNA 75 (recovery mode)
+	8409  Evolv DNA 250 (recovery mode)
+	8412  Evolv DNA 60 (recovery mode)
+	8413  Evolv DNA 200 (recovery mode)
+	8414  Evolv DNA 250 (recovery mode)
+	8415  Evolv DNA 75 (recovery mode)
+	8416  Evolv DNA 60 (recovery mode)
+	8423  Evolv DNA 200 (recovery mode)
+	8424  Evolv DNA 250 (recovery mode)
+	8425  Evolv DNA 75 (recovery mode)
+	8426  Evolv DNA 60 (recovery mode)
+26a9  Research Industrial Systems Engineering
+	0001  Payment Terminal v1.0
+26aa  Yaesu Musen
+	0001  FT-1D
+	000e  FTA-550
+	000f  FTA-750
+26b5  Electrocompaniet
+	0002  ECD 2
+	0003  ECD 2 (Audio Class 1)
+	0004  PI 2D
+	0005  PI 2D (Audio Class 1)
+	0006  ECI 6
+	0007  ECI 6 (Audio Class 1)
+	0020  ECI 80
+26bd  Integral Memory
+	9917  Fusion Flash Drive
+26e2  Ingenieurbuero Dietzsch und Thiele, PartG
+26f2  Micromega
+	0200  MyDac
+2707  Bardac Corporation
+	0005  drive.web
+270d  Rosand Technologies
+	1001  R-Idge Bootloader
+	1002  R-Idge Router
+2717  Xiaomi Inc.
+	0011  100Mbps Network Card Adapter
+	0360  Mi3W
+	0368  Mi4 LTE
+	3801  Mi ANC & Type-C In-Ear Earphones
+	4106  MediaTek MT7601U [MI WiFi]
+	ff08  Redmi Note 3 (ADB Interface)
+	ff10  Mi/Redmi series (PTP)
+	ff18  Mi/Redmi series (PTP + ADB)
+	ff40  Mi/Redmi series (MTP)
+	ff48  Mi/Redmi series (MTP + ADB)
+	ff60  redmi prime 2
+	ff68  Mi-4c
+	ff80  Mi/Redmi series (RNDIS)
+	ff88  Mi/Redmi series (RNDIS + ADB)
+272a  StarLeaf Ltd.
+272c  Signum Systems
+	7d13  I-jet
+2730  Citizen
+	0fff  CT-S2000/4000/310/CLP-521/621/631/CL-S700 Series
+	1004  PPU-700
+	2002  CT-S2000 Thermal Printer (Parallel mode)
+	200f  CT-S310 Label printer
+2735  DigitalWay
+	0003  MPIO HS100
+	1001  MPIO FY200
+	1002  MPIO FL100
+	1003  MPIO FD100
+	1004  MPIO HD200
+	1005  MPIO HD300
+	1006  MPIO FG100
+	1007  MPIO FG130
+	1008  MPIO FY300
+	1009  MPIO FY400
+	100a  MPIO FL300
+	100b  MPIO HS200
+	100c  MPIO FL350
+	100d  MPIO FY500
+	100e  MPIO FY500
+	100f  MPIO FY600
+	1012  MPIO FL400
+	1013  MPIO HD400
+	1014  MPIO HD400
+	1016  MPIO FY700
+	1017  MPIO FY700
+	1018  MPIO FY800
+	1019  MPIO FY800
+	101a  MPIO FY900
+	101b  MPIO FY900
+	102b  MPIO FL500
+	102c  MPIO FL500
+	103f  MPIO FY570
+	1040  MPIO FY570
+	1041  MPIO FY670
+	1042  MPIO FY670
+	1043  HCT HMD-180A
+	1044  HCT HMD-180A
+273f  Hughski Limited
+	1000  ColorHug bootloader
+	1001  ColorHug
+	1002  ColorHug+
+	1003  ColorHug+ Bootloader
+	1004  ColorHug2
+	1005  ColorHug2 bootloader
+2756  Victor Hasselblad AB
+	0002  X1D Camera
+2759  Philip Morris Products S.A.
+	0003  IQOS Pocket Charger 2.4
+2765  Firstbeat Technologies, Ltd.
+	0004  Bodyguard 2
+2766  LifeScan
+	0000  OneTouch Verio
+2770  NHJ, Ltd
+	0a01  ScanJet 4600 series
+	905c  Che-Ez Snap SNAP-U/Digigr8/Soundstar TDC-35
+	9060  A130
+	9120  Che-ez! Snap / iClick Tiny VGA Digital Camera
+	9130  TCG 501
+	913c  Argus DC-1730
+	9150  Mini Cam
+	9153  iClick 5X
+	915d  Cyberpix S-210S / Little Tikes My Real Digital Camera
+	930b  CCD Webcam(PC370R)
+	930c  CCD Webcam(PC370R)
+27a8  Square, Inc.
+	a120  Contactless + Chip Reader
+27b8  ThingM
+	01ed  blink(1)
+27bd  Codethink Ltd.
+	0001  Slab Node Manager
+	0002  Slab Node Manager JTAG
+27c0  Cadwell Laboratories, Inc.
+	0818  Paperlike HD-FT
+27c6  Shenzhen Goodix Technology Co.,Ltd.
+	5117  Fingerprint Reader
+	5201  Fingerprint Reader
+	5301  Fingerprint Reader
+	530c  Fingerprint Reader
+	532d  Fingerprint
+	5381  Fingerprint Reader
+	5385  Fingerprint Reader
+	538c  Fingerprint Reader
+	5395  Fingerprint Reader
+	5584  Fingerprint Reader
+	55b4  Fingerprint Reader
+	5740  Fingerprint Reader
+27d4  Blackstar Amplification Limited
+27dd  Mindeo
+	0002  Mindeo Virtual COM Port
+27f2  Softnautics LLP
+2803  StarLine LLC.
+	0001  Controller Area Network car alarm module [SLCAN-2]
+2806  SIMPASS
+	0001  N-PASS X1
+2817  Signal Hound, Inc.
+	0002  BB60C Spectrum Analyzer
+	0004  SM200A Spectrum Analyzer
+2818  Codex Digital Limited
+	0001  Transfer Drive Dock
+2821  ASUSTek Computer Inc.
+	0161  WL-161 802.11b Wireless Adapter [SiS 162U]
+	160f  WL-160g 802.11g Wireless Adapter [Envara WiND512]
+	3300  WL-140 / Hawking HWU36D 802.11b Wireless Adapter [Intersil PRISM 3]
+2822  REFLEXdigital
+2833  Oculus VR, Inc.
+	0001  Rift Developer Kit 1
+	0021  Rift DK2
+	0031  Rift CV1
+	0101  Latency Tester
+	0137  Quest Headset
+	0201  Camera DK2
+	0211  Rift CV1 Sensor
+	0330  Rift CV1 Audio
+	1031  Rift CV1
+	2021  Rift DK2
+	2031  Rift CV1
+	3031  Rift CV1
+2836  OUYA
+286b  STANEO SAS
+	0003  D6BB/D9 seismic digitizer
+2886  Seeed Technology Co., Ltd.
+	0002  Seeeduino Lite
+2890  Teknic, Inc
+	0213  ClearPath 4-axis Comm Hub
+2899  Toptronic Industrial Co., Ltd
+	012c  Camera Device
+289b  Dracal/Raphnet technologies
+	0001  Gamecube/N64 controller v2.2
+	0002  2nes2snes
+	0003  4nes4snes
+	0004  Gamecube/N64 controller v2.3
+	0005  Saturn (Joystick mode)
+	0006  Saturn (Mouse mode)
+	0007  Famicom controller
+	0008  Dreamcast (Joystick mode)
+	0009  Dreamcast (Mouse mode)
+	000a  Dreamcast (Keyboard mode)
+	000b  Gamecube/N64 controller v2.9 (Keyboard mode)
+	000c  Gamecube/N64 controller v2.9 (Joystick mode)
+	000e  VirtualBoy controller
+	0010  WUSBMote v1.2 (Joystick mode)
+	0011  WUSBMote v1.2 (Mouse mode)
+	0012  WUSBMote v1.2.1 (Joystick mode)
+	0013  WUSBMote v1.2.1 (Mouse mode)
+	0014  WUSBMote v1.3 (Joystick mode)
+	0015  WUSBMote v1.3 (Mouse mode)
+	0016  WUSBMote v1.3 (I2C interface mode)
+	0017  Gamecube/N64 controller v3.0
+	0018  Atari Jaguar controller
+	0019  MultiDB9joy v3
+	001a  MultiDB9joy v3 (multitap mode)
+	0100  Dual-relay board
+	0500  Energy meter
+	0502  Precision barometer
+289d  Seek Thermal, Inc.
+	0010  PIR206 Thermal Camera [Seek Compact]
+28bd  XP-Pen
+	0920  Star G960 Graphic Tablet
+28c7  Ultimaker B.V.
+	0001  3D printer serial interface
+28d4  Devialet
+	0008  120/200/250/400/800/D-Premier
+28de  Valve Software
+	1102  Wired Controller
+	1142  Wireless Steam Controller
+	2000  Lighthouse FPGA RX
+	2012  Virtual Reality Controller [VRC]
+	2101  Watchman Dongle
+	2500  Lighthouse Base Station
+28e0  PT. Prasimax Inovasi Teknologi
+	1001  BTS Monitoring Config for Prototype
+	5740  TRUMON TS-107
+	5741  TRUMON TS-108
+28e9  GDMicroelectronics
+	0189  GD32 DFU Bootloader (Longan Nano)
+28f3  Clover Network, Inc.
+	2000  Mobile Wi-Fi (C200)
+	3000  Mini
+	4000  Flex
+28f9  Profitap HQ BV
+	0001  Profishark 1G Black
+	0003  Profishark 1G+
+	0004  Profishark 1G
+	0005  Profishark 10G
+	0006  Profishark 100M
+290c  R. Hamilton & Co. Ltd.
+	4b4d  Mercury iPod Dock
+2912  Audioengine
+	20c8  D1 24-bit DAC
+	30c8  D1 24-bit DAC
+2916  Yota Devices
+2931  Jolla Oy
+	0a01  Jolla Phone MTP
+	0a02  Jolla Phone Developer
+	0a05  Jolla PC connection
+	0a07  Phone MTP
+	0afe  Jolla charging only
+2939  Zaber Technologies Inc.
+	4959  A-MCB2
+	495a  X-MCB1
+	495b  X-MCB2
+	49b1  X-MCB1
+	49b2  X-MCB2
+	49c1  X-MCC1
+	49c2  X-MCC2
+	49c3  X-MCC3
+	49c4  X-MCC4
+2957  Obsidian Research Corporation
+	0001  Management Console
+2961  Miselu
+	0001  C.24 keyboard
+296b  Xacti Corporation
+	3917  CX-WE100 Camera
+2972  FiiO Electronics Technology
+	0007  X3 2nd gen audio player / DAC
+298d  Next Biometrics
+	2020  NB-2020-U Fingerprint Reader
+29bd  Silicon Works
+	4101  Multi-touch Device
+29c1  Taztag
+	1105  M17-G903-1 [Tazpad]
+	1107  M17-G903-A [Tazpad] (CCID)
+29c2  Lewitt GmbH
+	0001  DGT 650
+	0003  DGT 450
+	0009  DGT 260
+	0011  Stream 4x5
+29c3  Noviga
+29e2  Huatune Technology (Shanghai) Co., Ltd.
+29e7  Brunel University
+29e8  4Links Limited
+29ea  Kinesis Corporation
+	0102  Advantage2 Keyboard
+29f1  Canaan Creative Co., Ltd
+	33f1  Avalon nano 1.0
+	33f2  Avalon USB2IIC Converter
+	33f3  Avalon nano 2.0
+	40f1  Avalon4 mini
+2a03  dog hunter AG
+	0001  Linino ONE (bootloader)
+	0036  Arduino Leonardo (bootloader)
+	0037  Arduino Micro (bootloader)
+	0038  Arduino Robot Control (bootloader)
+	0039  Arduino Robot Motor (bootloader)
+	003a  Arduino Micro ADK rev3 (bootloader)
+	003b  Arduino usb2serial
+	003c  Arduino Explora (bootloader)
+	003d  Arduino Due (usb2serial)
+	003e  Arduino Due
+	0041  Arduino Yun (bootloader)
+	0042  Arduino Mega 2560 Rev3
+	0043  Arduino Uno Rev3
+	004d  Arduino Zero Pro (bootloader)
+	8001  Linino ONE (CDC ACM)
+	8036  Arduino Leonardo (CDC ACM)
+	8037  Arduino Micro (CDC ACM)
+	8038  Arduino Robot Control (CDC ACM)
+	8039  Arduino Robot Motor (CDC ACM)
+	803a  Arduino Micro ADK rev3 (CDC ACM)
+	803c  Arduino Explora (CDC ACM)
+	8041  Arduino Yun (CDC ACM)
+	804d  Arduino Zero Pro (CDC ACM)
+2a0e  Shenzhen DreamSource Technology Co., Ltd.
+2a13  Grabba International
+	0000  S-Series data capture device
+2a19  Numato Systems Pvt. Ltd
+	1002  Mimas V2 Spartan6 FPGA Development Board
+	5440  TimVideos' HDMI2USB Opsis (FX2) - Unconfigured device
+	5441  TimVideos' HDMI2USB Opsis (FX2) - Firmware load/upgrade
+	5442  TimVideos' HDMI2USB Opsis (FX2) - HDMI/DVI Capture Device
+2a1d  Oxford Nanopore Technologies, Ltd
+	0000  MinION
+	0001  MinION
+	0010  VolTRAX
+	0011  VolTRAX
+	0020  GridION
+	0021  GridION
+2a37  RTD Embedded Technologies, Inc.
+	5110  UPS35110/UPS25110
+2a39  RME
+	3fb0  Babyface Pro (Class Compliant Mode)
+	3fc0  Babyface Pro
+	3fc1  Fireface UFX+
+	3fc2  Fireface UFX+
+	3fd1  Fireface UFX+
+2a3c  Trinamic Motion Control GmbH & Co KG
+	0100  Stepper Device
+	0200  BLDC/PMSM Device
+	0300  Motor Control Device
+	0400  Motor Control Device
+	0500  PANdrive(TM)
+	0600  motionCookie(TM)
+	0700  Evaluation Device
+	0800  Interface Device
+	0900  Generic Device
+2a45  Meizu Corp.
+	0001  MX Phone (BICR)
+	0c02  MX Phone (MTP & ADB)
+	0c03  MX Phone (BICR & ADB)
+	2008  MX Phone (MTP)
+	200a  MX Phone (MTP & ACM & ADB)
+	200b  MX Phone (PTP)
+	200c  MX Phone (PTP & ADB)
+	2012  MX Phone (MTP & ACM)
+2a47  Mundo Reader, S.L.
+	0c02  bq Aquaris E4.5
+	201d  Tablet Edison 3
+	903a  bq Aquaris U
+2a4b  EMULEX Corporation
+	0400  Pilot4 Integrated Hub
+2a62  Flymaster Avionics
+	b301  LiveSD
+	b302  NavSD
+2a6e  Bare Conductive
+	0003  Touch Board
+	8003  Touch Board
+2a70  OnePlus Technology (Shenzhen) Co., Ltd.
+	4ee7  ONEPLUS A3010 [OnePlus 3T] / A5010 [OnePlus 5T] / A6003 [OnePlus 6] (Charging + USB debugging modes)
+	904d  A3000 phone (PTP mode) [3T]
+	904e  A3000 phone (PTP mode, with debug) [3T]
+2a88  DFU Technology Ltd
+	ffff  DFU
+2a8d  Keysight Technologies, Inc.
+2ab6  T+A elektroakustik GmbH & Co KG, Germany
+	0001  PDP3000HV DAC
+	0002  MP1000E, MP2000R, MP2500R, MP3100HV
+	0003  TA HD AUDIO V2
+2ac7  Ultrahaptics Ltd.
+	0101  Evaluation Kit [Dragonfly]
+	0102  UHDK5
+	0104  Touchbase
+	0110  STRATOS Explore
+	0111  STRATOS Explore DFU
+	0112  STRATOS Inspire
+	0113  STRATOS Inspire DFU
+	ffff  DFU
+2ad1  Picotronic GmbH
+	7ab8  Turningtable
+2ae5  Fairphone B.V.
+	9015  2 (Mass storage & ADB)
+	9024  2 (RNDIS & ADB)
+	9039  2 (MTP & ADB)
+	904d  2 (PTP)
+	904e  2 (PTP & ADB)
+	90de  2 (Charging)
+	f000  2 (Mass storage)
+	f003  2 (MTP)
+	f005  2 (tethering)
+	f00e  2 (RNDIS)
+2aec  Ambiq Micro, Inc.
+	6011  Converter
+2af4  ROLI Ltd.
+	0100  Seaboard GRAND
+	0200  Seaboard RISE
+	0300  BlueWing Proto
+	0400  VOICE
+	0500  BLOCKS
+2b03  STEREOLABS
+	f580  ZED camera
+	f582  ZED camera
+	f680  ZED-M camera
+	f681  ZED-M HID Interface
+	f682  ZED-M camera
+	f683  ZED-M HID Interface
+	f684  ZED-M camera
+2b0e  LeEco
+	171b  Le2
+	171e  Le2 in USB tethering mode
+	1830  Le1 Pro
+	1844  Le Max2
+	2b0e  LeEco
+	6108  Lex720 [LePro 3] in connection sharing usb
+	610b  Lex720 [LePro 3] in Camera mode
+	610c  Lex720 [LePro 3]
+	610d  Lex720 [LePro 3] in debug
+2b23  Red Hat, Inc.
+	cafe  UsbDk (USB Development Kit)
+2b24  KeepKey LLC
+	0001  Bitcoin Wallet [KeepKey]
+	0002  Bitcoin Wallet
+2b3e  NewAE Technology Inc.
+	ace2  CW1173 [ChipWhisperer-Lite]
+2b4c  ZUK
+	1004  Z1 MTP
+2bc5  Orbbec 3D Technology International, Inc
+	0401  Astra
+	0403  Astra Pro
+	0407  Astra Mini S
+2bcc  InoTec GmbH Organisationssysteme
+2bd6  Coroware, Inc.
+	4201  RS-485 Controller and Interface [Cypress Semiconductor]
+2bd8  ROPEX Industrie-Elektronik GmbH
+2c02  Planex Communications
+	14ea  GW-US11H WLAN
+2c1a  Dolphin Peripherals
+	0000  Wireless Optical Mouse
+2c23  Supermicro Computer Incorporated
+	1b83  NIC
+2c4e  Mercucys INC
+	0100  MW300UM RTL8192EU wifi
+2c4f  Canon Electronic Business Machines Co., Ltd.
+	3003  PR Wireless Presenter
+2c55  Magic Leap, Inc.
+	a100  ML1 Lightpack (MLDB)
+	b100  ML1 Lightpack (fastboot)
+	c001  ML1 Control (COM)
+	c002  ML1 Control (Bootloader)
+2c7c  Quectel Wireless Solutions Co., Ltd.
+	0121  EC21 LTE modem
+	0125  EC25 LTE modem
+	0191  EG91 LTE modem
+	0195  EG95 LTE modem
+	0296  BG96 CAT-M1/NB-IoT modem
+	0306  EG06/EP06/EM06 LTE-A modem
+	0435  AG35 LTE modem
+2c97  Ledger
+	0000  Blue
+	0001  Nano S
+	0004  Nano X
+2c99  Prusa
+	0001  i3 MK2S
+2c9c  Vayyar Imaging Ltd.
+	1000  Walabot Makers Series
+	1020  Walabot DIY
+	1022  Walabot DIY Plus
+	1030  Walabot Home (vHC)
+	9100  VNAKit
+2c9d  Nod Inc
+	90a0  Goa
+	bac5  Backspin
+2ca3  DJI Technology Co., Ltd.
+	0008  Mavic Mini MR1SD25 Remote controller
+2cb7  Fibocom
+	0210  L830-EB-00 LTE WWAN Modem
+2cc0  Hangzhou Zero Zero Infinity Technology Co., Ltd.
+2cc2  Lautsprecher Teufel GmbH
+2ccf  Hypersecu
+	0880  HyperFIDO
+2cd9  Cambrionix Ltd
+	0804  PowerSync4 USBPD Hub
+2cdc  Sea & Sun Technology GmbH
+	f232  CTD48Mc CTD Probe
+2ce5  InX8 Inc [AKiTiO]
+	0014  Mass Storage [NT2 U31C]
+2cf0  Nuand LLC
+	5246  bladeRF
+	5250  bladeRF 2.0 micro
+2d1f  Wacom Taiwan Information Co. Ltd.
+2d25  Kronegger GmbH.
+2d2d  proxmark.org
+	504d  Proxmark3
+2d37  Zhuhai Poskey Technology Co.,Ltd
+2d6b  NetUP Inc.
+	7777  Joker TV universal DTV receiver
+2d81  Evollve Inc.
+	4f01  Ozobot Evo
+2d84  Zhuhai Poskey Technology Co.,Ltd
+	b806  DT-108B Thermal Label Printer
+2dc8  8BitDo
+	5006  M30 Bluetooth gamepad
+	5750  Bootloader
+	6000  SF30 Pro gamepad
+	6001  SN30/SF30 Pro gamepad
+	ab11  F30 gamepad
+	ab12  N30 gamepad
+	ab20  SN30/SF30 gamepad
+	ab21  SF30 gamepad
+2dcf  Dialog Semiconductor
+	c951  Audio Class 1.0 Devices
+	c952  Audio Class 2.0 Devices
+2def  Kirale Technologies
+	0000  KiNOS Boot DFU
+	0102  KTWM102 Module
+2df2  LIPS Corporation
+	0213  LIPSedge DL 3D ToF Camera
+	0215  LIPSedge DL RGB Camera
+	2102  LIPSedge 5 Megapixel RGB Camera
+2e04  HMD Global
+	0001  Nokia 3310 3G
+	0002  Nokia 3310 3G
+	0a14  Nokia 3310 3G
+	c008  Tethering Network Interface
+	c009  Nokia 1 (bootloader)
+	c025  Nokia 8 (MTP mode)
+	c026  Nokia Smartphone
+	c029  Nokia 8 (PTP mode)
+	c031  Nokia 1 (PTP)
+	c03f  Nokia 8 (MIDI mode)
+2e0e  Hatteland Display AS
+	0001  CAN Gateway
+2e24  Hyperkin
+	0652  Duke Xbox One controller
+	1688  X91 Xbox One controller
+2e3b  uSens Inc.
+2e57  MEGWARE Computer Vertrieb und Service GmbH
+	454d  SlideSX EnergyMeter
+	454e  SlideSX EnergyMeter DFU
+	5cba  SlideSX / ClustSafe Bus Adapter
+2e69  Swift Navigation
+	1001  Piksi Multi
+2e95  SCUF Gaming
+	7725  Controller
+2f76  KeyXentic Inc.
+	0905  KX905 Smart Terminal
+	0906  KX906 Smart Card Reader
+	1906  KX906 Smart Token (Mass Storage)
+2fad  Definium Technologies
+2fb0  Infocrypt
+2fb2  Fujitsu, Ltd
+2fc0  Sensidyne, LP
+	0001  Project Archer
+2fc6  Comtrue Inc.
+	6012  UAC2 Device GB
+2fe0  Xaptum, Inc.
+	8b01  XAP-RC-001 ENF Router Card
+	8b02  XAP-RW-001 ENF Router Card with WiFi
+	8bde  XAP-EA-002 ENF Access Card
+	8bee  XAP-EA-003 ENF Access Card
+2fe3  NordicSemiconductor
+2fe7  ELGIN S.A.
+	0001  SMART S@T
+2feb  Beijing Veikk E-Commerce Co., Ltd.
+	0004  Veikk A15 Pen Tablet
+2ff4  Quixant Plc
+3016  Boundary Devices, LLC
+	0001  Nitrogen Bootloader
+3036  Control iD
+	0001  Print iD
+	0002  iDBio
+3037  Beijing Chushifengmang Technology Development Co.,Ltd.
+3057  Kingsis Corporation
+	0002  ZOWIE Gaming mouse
+308f  Input Club
+	0000  Infinity 60% Bootloader
+	0001  Infinity 60% - Standard
+	0002  Infinity 60% - Hacker
+	0003  Infinity Ergodox Bootloader
+	0004  Infinity Ergodox
+	0005  WhiteFox Bootloader
+	0006  WhiteFox - Vanilla
+	0007  WhiteFox - ISO
+	0008  WhiteFox - Aria
+	0009  WhiteFox - Winkeyless
+	000a  WhiteFox - True Fox
+	000b  WhiteFox - Jack of All Trades
+	000c  Infinity 60% LED Bootloader
+	000d  Infinity 60% LED - Standard
+	000e  Infinity 60% LED - Hacker
+	000f  Infinity 60% LED - Alphabet
+	0010  K-Type Bootloader
+	0011  K-Type
+	0012  Kira Bootloader
+	0013  Kira
+	0014  Gemini Dawn/Dusk Bootloader
+	0015  Gemini Dawn/Dusk
+	0016  Re:Type Bootloader
+	0017  Re:Type
+	0018  Re:Type USB Hub
+	0019  WhiteFox (SAM4S) Bootloader
+	001a  WhiteFox (SAM4S) - Vanilla
+	001b  WhiteFox (SAM4S) - ISO
+	001c  WhiteFox (SAM4S) - Aria
+	001d  WhiteFox (SAM4S) - Winkeyless
+	001e  WhiteFox (SAM4S) - True Fox
+	001f  WhiteFox (SAM4S) - Jack of All Trades
+30a4  Blues Wireless
+	0001  Notecard
+30c2  UNPARALLEL Innovation, Lda
+	1388  SPL Meter
+30c9  Luxvisions Innotech Limited
+30ee  Fujitsu Connected Technologies Limited
+	1001  F-01L
+30f2  Varex Imaging
+3111  Hiperscan GmbH
+	0000  SGS-NT Microspectrometer
+3112  Meteca SA
+	0001  MBC-WB01 (CDC-ACM)
+	0002  MBC-WB01 (Bootloader)
+	0003  ABC (CDC ACM)
+	0004  ABC (Bootloader)
+3125  Eagletron
+	0001  TrackerPod Camera Stand
+3136  Navini Networks
+3145  SafeLogic Inc.
+3147  Tanvas, Inc.
+316c  SigmaSense, LLC
+316d  Purism, SPC
+	4c4b  Librem Key
+316e  SPECINFOSYSTEMS
+	0001  DIAMOND token
+3171  8086 Consultancy
+	0011  ClusterCTRL DA
+	0012  ClusterCTRL pHAT
+	0013  ClusterCTRL A+6
+	0014  ClusterCTRL Triple
+	0015  ClusterCTRL Single
+3176  Whanam Electronics Co., Ltd
+3195  Link Instruments
+	f190  MSO-19
+	f280  MSO-28
+	f281  MSO-28
+31c9  BeiJing LanXum Computer Technology Co., Ltd.
+	1001  Printer
+	1301  Black and White Laser Printer
+	1501  LaserPrint GA50 series
+3200  Alcatel-Lucent Enterprise
+	2100  ALE 8058s
+	2101  ALE 8068s
+	2102  8078s
+3219  Smak Tecnologia e Automacao LTDA
+	0044  SKO44 Optical Keyboard
+321c  Premio, Inc.
+324c  CUPRIS Ltd.
+326d  Agile Display Solutions Co., Ltd
+	0001  Avocor USB Camera
+3275  VidzMedia Pte Ltd
+	4fb1  MonsterTV P2H
+3293  Unhuman Inc.
+32b3  TEXA
+	d1a6  TXT Multihub
+	d1a7  TXT Multihub
+3310  MUDITA Sp. z o.o.
+	0100  Pure
+	0101  Pure tethering
+3333  InLine
+	3333  2 port KVM switch model 60652K
+3334  AEI
+	1701  Fast Ethernet
+3340  Yakumo
+	043a  Mio A701 DigiWalker PPCPhone
+	0e3a  Pocket PC 300 GPS SL / Typhoon MyGuide 3500
+	a0a3  deltaX 5 BT (D) PDA
+	ffff  Mio DigiWalker Sync
+3344  Leaguer Microelectronics (LME)
+	3744  OEM PC Remote
+3384  System76
+	0000  Thelio Io (thelio-io)
+	0001  Launch Configurable Keyboard (launch_1)
+348f  ISY
+	2322  Wireless Presenter
+3504  Micro Star
+	f110  Security Key
+3538  Power Quotient International Co., Ltd
+	0001  Travel Flash
+	0015  Mass Storge Device
+	0022  Hi-Speed Mass Storage Device
+	0042  Cool Drive U339 Flash Disk
+	0054  Flash Drive (2GB)
+	0901  Traveling Disk U273 (4GB)
+3579  DIVA
+	6901  Media Reader
+357d  Sharkoon
+	7788  JMicron JMS567 ATA/ATAPI Bridge
+3636  InVibro
+3767  Fanatec
+	0101  Speedster 3 Forceshock Wheel
+3838  WEM
+	0001  5-in-1 Card Reader
+	1031  2.4G Wireless Mouse
+3923  National Instruments Corp.
+	12c0  DAQPad-6020E
+	12d0  DAQPad-6507
+	12e0  NI 4350
+	12f0  NI 5102
+	1750  DAQPad-6508
+	17b0  USB-ISA-Bridge
+	1820  DAQPad-6020E (68 pin I/O)
+	1830  DAQPad-6020E (BNC)
+	1f00  DAQPad-6024E
+	1f10  DAQPad-6024E
+	1f20  DAQPad-6025E
+	1f30  DAQPad-6025E
+	1f40  DAQPad-6036E
+	1f50  DAQPad-6036E
+	2f80  DAQPad-6052E
+	2f90  DAQPad-6052E
+	702a  GPIB-USB-B
+	702b  GPIB-USB-B Initialization
+	703c  USB-485 RS485 Cable
+	709b  GPIB-USB-HS
+	7166  USB-8451
+	716e  USB-8451 Firmware Loader
+	717a  USB-6008
+	717b  USB-6009
+	71d6  USB-6008 OEM
+	71d7  USB-6009 OEM
+	71d8  USB-6009 OEM
+	7254  NI MIO (data acquisition card) firmware updater
+	729e  USB-6251 (OEM) data acquisition card
+	7346  USB-6229
+	755b  myDAQ
+	76af  USB-6000
+	76b0  USB-6000 OEM
+	76bf  USB-6001
+	76c0  USB-6001 OEM
+	76c4  USB-6002
+	76c5  USB-6002 OEM
+	76c6  USB-6003
+	76c7  USB-6003 OEM
+40bb  I-O Data
+	0a09  USB2.0-SCSI Bridge USB2-SC
+4101  i-rocks
+	1301  IR-2510 usb phone
+4102  iRiver, Ltd.
+	1001  iFP-100 series mp3 player
+	1003  iFP-300 series mp3 player
+	1005  iFP-500 series mp3 player
+	1007  iFP-700 series mp3/ogg vorbis player
+	1008  iFP-800 series mp3/ogg vorbis player
+	100a  iFP-1000 series mp3/ogg vorbis player
+	1014  T20 series mp3/ogg vorbis player (ums firmware)
+	1019  T30
+	1034  T60
+	1040  M1Player
+	1041  E100 (ums)
+	1101  iFP-100 series mp3 player (ums firmware)
+	1103  iFP-300 series mp3 player (ums firmware)
+	1105  iFP-500 series mp3 player (ums firmware)
+	1113  T10 (alternate)
+	1117  T10
+	1119  T30 series mp3/ogg/wma player
+	1141  E100 (mtp)
+	2002  H10 6GB
+	2101  H10 20GB (mtp)
+	2102  H10 5GB (mtp)
+	2105  H10 5/6GB (mtp)
+413c  Dell Computer Corp.
+	0000  DRAC 5 Virtual Keyboard and Mouse
+	0001  DRAC 5 Virtual Media
+	0058  Port Replicator
+	1001  Keyboard Hub
+	1002  Keyboard Hub
+	1003  Keyboard Hub
+	1005  Multimedia Pro Keyboard Hub
+	2001  Keyboard HID Support
+	2002  SK-8125 Keyboard
+	2003  Keyboard SK-8115
+	2005  RT7D50 Keyboard
+	2010  Keyboard
+	2011  Multimedia Pro Keyboard
+	2100  SK-3106 Keyboard
+	2101  SK-3205 SmartCard Reader Keyboard
+	2105  Model L100 Keyboard
+	2106  QuietKey Keyboard
+	2107  KB212-B Quiet Key Keyboard
+	2113  KB216 Wired Keyboard
+	2134  Hub of E-Port Replicator
+	21d7  Dell Wireless 5560 HSPA+ Mobile Broadband Modem
+	2500  DRAC4 Remote Access Card
+	2501  Keyboard and mouse dongle
+	2513  internal USB Hub of E-Port Replicator
+	3010  Optical Wheel Mouse
+	3012  Optical Wheel Mouse
+	3016  Optical 5-Button Wheel Mouse
+	301a  Dell MS116 Optical Mouse
+	301b  Universal Bluetooth Receiver
+	3200  Mouse
+	4001  Axim X5
+	4002  Axim X3
+	4003  Axim X30
+	4004  Axim Sync
+	4005  Axim Sync
+	4006  Axim Sync
+	4007  Axim Sync
+	4008  Axim Sync
+	4009  Axim Sync
+	4011  Axim X51v
+	5103  AIO Printer A940
+	5105  AIO Printer A920
+	5107  AIO Printer A960
+	5109  Photo AIO Printer 922
+	5110  Photo AIO Printer 962
+	5111  Photo AIO Printer 942
+	5112  Photo AIO Printer 924
+	5113  Photo AIO Printer 944
+	5114  Photo AIO Printer 964
+	5115  Photo AIO Printer 926
+	5116  AIO Printer 946
+	5117  Photo AIO Printer 966
+	5118  AIO 810
+	5124  Laser MFP 1815
+	5128  Photo AIO 928
+	5133  968 AIO Printer
+	5200  Laser Printer
+	5202  Printing Support
+	5203  Printing Support
+	5210  Printing Support
+	5211  1110 Laser Printer
+	5220  Laser MFP 1600n
+	5225  Printing Support
+	5226  Printing Support
+	5228  Laser Printer 1720dn
+	5300  Laser Printer
+	5400  Laser Printer
+	5401  Laser Printer
+	5404  1250c Color Printer
+	5513  WLA3310 Wireless Adapter [Intersil ISL3887]
+	5534  Hub of E-Port Replicator
+	5601  Laser Printer 3100cn
+	5602  Laser Printer 3000cn
+	5607  MFP Color Laser Printer 3115cn
+	5631  Laser Printer 5100cn
+	564a  C1765 series Multifunction Color LaserPrinter, Scanner & Copier
+	5905  Printing Support
+	8000  BC02 Bluetooth Adapter
+	8010  TrueMobile Bluetooth Module in
+	8100  TrueMobile 1180 802.11b Adapter [Intersil PRISM 3]
+	8102  TrueMobile 1300 802.11g Wireless Adapter [Intersil ISL3880]
+	8103  Wireless 350 Bluetooth
+	8104  Wireless 1450 Dual-band (802.11a/b/g) Adapter [Intersil ISL3887]
+	8105  U2 in HID - Driver
+	8106  Wireless 350 Bluetooth Internal Card in
+	8110  Wireless 3xx Bluetooth Internal Card
+	8111  Wireless 3xx Bluetooth Internal Card in
+	8114  Wireless 5700 Mobile Broadband (CDMA EV-DO) Minicard Modem
+	8115  Wireless 5500 Mobile Broadband (3G HSDPA) Minicard Modem
+	8116  Wireless 5505 Mobile Broadband (3G HSDPA) Minicard Modem
+	8117  Wireless 5700 Mobile Broadband (CDMA EV-DO) Expresscard Modem
+	8118  Wireless 5510 Mobile Broadband (3G HSDPA) Expresscard Status Port
+	8120  Bluetooth adapter
+	8121  Eastfold in HID
+	8122  Eastfold in DFU
+	8123  eHome Infrared Receiver
+	8124  eHome Infrared Receiver
+	8126  Wireless 355 Bluetooth
+	8127  Wireless 355 Module with Bluetooth 2.0 + EDR Technology.
+	8128  Wireless 5700-Sprint Mobile Broadband (CDMA EV-DO) Mini-Card Status Port
+	8129  Wireless 5700-Telus Mobile Broadband (CDMA EV-DO) Mini-Card Status Port
+	8131  Wireless 360 Bluetooth 2.0 + EDR module.
+	8133  Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port
+	8134  Wireless 5720 Sprint Mobile Broadband (EVDO Rev-A) Minicard Status Port
+	8135  Wireless 5720 TELUS Mobile Broadband (EVDO Rev-A) Minicard Diagnostics Port
+	8136  Wireless 5520 Cingular Mobile Broadband (3G HSDPA) Minicard Diagnostics Port
+	8137  Wireless 5520 Voda L Mobile Broadband (3G HSDPA) Minicard Status Port
+	8138  Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard EAP-SIM Port
+	8140  Wireless 360 Bluetooth
+	8142  Mobile 360 in DFU
+	8143  Broadcom BCM20702A0 Bluetooth
+	8147  F3507g Mobile Broadband Module
+	8156  Wireless 370 Bluetooth Mini-card
+	8157  Integrated Keyboard
+	8158  Integrated Touchpad / Trackstick
+	8160  Wireless 365 Bluetooth
+	8161  Integrated Keyboard
+	8162  Integrated Touchpad [Synaptics]
+	8171  Gobi Wireless Modem (QDL mode)
+	8172  Gobi Wireless Modem
+	8183  F3607gw Mobile Broadband Module
+	8184  F3607gw v2 Mobile Broadband Module
+	8185  Gobi 2000 Wireless Modem (QDL mode)
+	8186  Gobi 2000 Wireless Modem
+	8187  DW375 Bluetooth Module
+	818e  DW5560 miniPCIe HSPA+ Mobile Broadband Modem
+	8197  BCM20702A0 Bluetooth Module
+	81a0  Wireless 5808 Mobile Broadband (Sierra Wireless MC7355 Mini PCIE, 4G UMTS,HSDPA,HSPA+,LTE,1xRTT,EVDO Rev A,GSM,GPRS)
+	81a3  Hub of E-Port Replicator
+	81a8  Wireless 5808 Mobile Broadband (Sierra Wireless Mini PCIE, 4G UMTS,HSDPA,HSPA+,LTE,1xRTT,EVDO Rev A,GSM,GPRS)
+	8501  Bluetooth Adapter
+	9001  ATA Bridge
+	9009  Portable Device
+	9500  USB CP210x UART Bridge Controller [DW700]
+	a001  Hub
+	a005  Internal 2.0 Hub
+	a101  Internal Dual SD Card module
+	a102  iDRAC Virtual NIC
+	a503  AC511 Sound Bar
+	a700  Hub (in 1905FP LCD Monitor)
+	b007  Streak 5 Android Tablet
+4146  USBest Technology
+	9281  Iomega Micro Mini 128MB Flash Drive
+	ba01  Intuix Flash Drive
+4168  Targus
+	1010  Wireless Compact Laser Mouse
+4242  USB Design by Example
+	4201  Buttons and Lights HID device
+	4220  Echo 1 Camera
+4255  GoPro
+	1000  9FF2 [Digital Photo Display]
+	2000  HD2-14 [Hero 2 Camera]
+4317  Broadcom Corp.
+	0700  U.S. Robotics USR5426 802.11g Adapter
+	0701  U.S. Robotics USR5425 Wireless MAXg Adapter
+	0711  Belkin F5D7051 v3000 802.11g
+	0720  Dynex DX-BUSB
+	0721  Dynex DX-EBUSB
+4348  WinChipHead
+	5523  USB->RS 232 adapter with Prolific PL 2303 chipset
+	5537  13.56Mhz RFID Card Reader and Writer
+	5584  CH34x printer adapter cable
+4572  Shuttle, Inc.
+	4572  Shuttle PN31 Remote
+4586  Panram
+	1026  Crystal Bar Flash Drive
+4670  EMS Production
+	9394  Game Cube USB Memory Adaptor 64M
+46f4  QEMU
+4752  Miditech
+	0011  Midistart-2
+4757  GW Instek
+	2009  PEL-2000 Series Electronic Load (CDC)
+	2010  PEL-2000 Series Electronic Load (CDC)
+4766  Aceeca
+	0001  MEZ1000 RDA
+4855  Memorex
+	7288  Ultra Traveldrive 160G 2.5" HDD
+4971  SimpleTech
+	1004  Hitachi LifeStudio Desk (3.5" HDD) [w/o flash key]
+	1013  Touro Desk Pro
+	1015  Touro Desk 3.0
+	8001  G-Tech G-DRIVE Mobile
+	cb01  SP-U25/120G
+	cd15  Simple Drive Mini (2.5" HDD)
+	ce07  SimpleDrive (3.5" HDD)
+	ce12  FV-U35
+	ce17  1TB SimpleDrive II USB External Hard Drive
+	ce18  (re)Drive
+	ce21  JMicron JM20329 SATA Bridge [eg. HITACHI SimpleDrive mini]
+	ce22  Hitachi SimpleTough (3.5" HDD)
+4d46  Musical Fidelity
+	0001  V-Link
+	0002  V-DAC II
+5032  Grandtec
+	0bb8  Grandtec USB1.1 DVB-T (cold)
+	0bb9  Grandtec USB1.1 DVB-T (warm)
+	0fa0  Grandtec USB1.1 DVB-T (cold)
+	0fa1  Grandtec USB1.1 DVB-T (warm)
+50c2  Averatec (?)
+	4013  WLAN Adapter
+5131  MSR
+	2007  MSR-101U Mini HID magnetic card reader
+5173  Sweex
+	1809  ZD1211
+5219  I-Tetra
+	1001  Cetus CDC Device
+5332  Clearly Superior Technologies, Inc.
+	1300  CST2545-5W (L-Trac)
+5345  Owon
+	1234  PDS6062T Oscilloscope
+534c  SatoshiLabs
+	0001  Bitcoin Wallet [TREZOR]
+	0002  Bitcoin Wallet [TREZOR v2]
+534d  MacroSilicon
+	0021  MS210x Video Grabber [EasierCAP]
+	6021  VGA Display Adapter
+5354  Meyer Instruments (MIS)
+	0017  PAXcam2
+544d  Transmeta Corp.
+5543  UC-Logic Technology Corp.
+	0002  SuperPen WP3325U Tablet
+	0003  Tablet WP4030U
+	0004  Tablet WP5540U
+	0005  Tablet WP8060U
+	0041  Genius PenSketch 6x8 Tablet
+	0042  Tablet PF1209
+	004a  XP-Pen Artist 10S tablet
+	004d  Tablet Monitor MSP19U
+	0064  Aiptek HyperPen 10000U
+	3031  Graphics tablet [DrawImage G3, Ugee G3]
+5555  Epiphan Systems Inc.
+	1110  VGA2USB
+	1120  KVM2USB
+	2222  DVI2USB
+	3333  VGA2USB Pro
+	3337  KVM2USB Pro
+	3340  VGA2USB LR
+	3344  KVM2USB LR
+	3411  DVI2USB Solo
+	3422  DVI2USB Duo
+	3500  DVI2USB3
+	3501  DVI2USB3 Rev3
+	3510  DVI2USB3_ET
+	3520  SDI2USB3
+55aa  OnSpec Electronic, Inc.
+	0015  Hard Drive
+	0102  SuperDisk
+	0103  IDE Hard Drive
+	0201  DDI to Reader-19
+	1234  ATAPI Bridge
+	a103  Sandisk SDDR-55 SmartMedia Card Reader
+	b000  USB to CompactFlash Card Reader
+	b004  OnSpec MMC/SD Reader/Writer
+	b00b  USB to Memory Stick Card Reader
+	b00c  USB to SmartMedia Card Reader
+	b012  Mitsumi FA402M 8-in-2 Card Reader
+	b200  Compact Flash Reader
+	b204  MMC/ SD Reader
+	b207  Memory Stick Reader
+5654  Gotview
+	ca42  MasterHD 3
+5656  Uni-Trend Group Limited
+	0832  UT2000/UT3000 Digital Storage Oscilloscope
+595a  IRTOUCHSYSTEMS Co. Ltd.
+	0001  Touchscreen
+5986  Acer, Inc
+	0100  Orbicam
+	0101  USB2.0 Camera
+	0102  Crystal Eye Webcam
+	0137  HP Webcam
+	0141  BisonCam, NB Pro
+	0149  HP Webcam-101
+	014c  MSI Integrated Webcam
+	01a6  Lenovo Integrated Webcam
+	01a7  Lenovo Integrated Webcam
+	01a9  Lenovo Integrated Webcam
+	0200  OrbiCam
+	0202  Fujitsu Webcam
+	0203  BisonCam NB Pro 1300
+	0205  Lenovo EasyCamera
+	0217  Integrated Webcam
+	0241  BisonCam, NB Pro
+	0268  SunplusIT INC. Integrated Camera
+	026a  Integrated Camera
+	0292  Lenovo Integrated Webcam
+	0294  Lenovo Integrated Webcam
+	0295  Lenovo Integrated Webcam
+	0299  Lenovo Integrated Webcam
+	029c  Lenovo EasyCamera
+	02ac  HP TrueVision HD Webcam
+	02d0  Lenovo Integrated Webcam [R5U877]
+	02d2  ThinkPad Integrated Camera
+	02d5  Integrated Camera
+	03b3  Lenovo Integrated Webcam
+	03d0  Lenovo Integrated Webcam [R5U877]
+	0400  BisonCam, NB Pro
+	0535  Lenovo EasyCamera integrated webcam
+	055a  Lenovo Integrated Webcam
+	0652  Lenovo EasyCamera
+	0670  Lenovo EasyCamera
+	0671  Lenovo EasyCamera
+	0706  ThinkPad P50 Integrated Camera
+	2113  SunplusIT Integrated Camera
+	a002  Lenovo EasyCamera Integrated Webcam
+59e3  Nonolith Labs
+5a57  Zinwell
+	0260  RT2570
+	0280  802.11a/b/g/n USB Wireless LAN Card
+	0282  802.11b/g/n USB Wireless LAN Card
+	0283  802.11b/g/n USB Wireless LAN Card
+	0284  802.11a/b/g/n USB Wireless LAN Card
+	0290  ZW-N290 802.11n [Realtek RTL8192U]
+	5257  Metronic 495257 wifi 802.11ng
+6000  Beholder International Ltd.
+	0001  Trident TVBOX Video Grabber
+	dec0  TV Wander
+	dec1  TV Voyage
+601a  Ingenic Semiconductor Ltd.
+	4740  XBurst Jz4740 boot mode
+	4760  JZ4760 Boot Device
+6022  Xektek
+	0500  SuperPro Universal Device Programmer
+6189  Sitecom
+	182d  LN-029 10/100 Ethernet Adapter
+	2068  USB to serial cable (v2)
+6244  LightingSoft AG
+	0101  Intelligent Usb Dmx Interface SIUDI5A
+	0201  Intelligent Usb Dmx Interface SIUDI5C
+	0300  Intelligent Usb Dmx Interface SIUDI6 Firmware download
+	0301  Intelligent Usb Dmx Interface SIUDI6C
+	0302  Intelligent Usb Dmx Interface SIUDI6A
+	0303  Intelligent Usb Dmx Interface SIUDI6D
+	0400  Touch Sensitive Intelligent Control Keypad STICK1A
+	0401  Touch Sensitive Intelligent Control Keypad STICK1A
+	0410  Intelligent Usb Dmx Interface SIUDI7 Firmware Download
+	0411  Intelligent Usb Dmx Interface SIUDI7A
+	0420  Intelligent Usb Dmx Interface SIUDI8A Firmware Download
+	0421  Intelligent Usb Dmx Interface SIUDI8A
+	0430  Intelligent Usb Dmx Interface SIUDI8C Firmware Download
+	0431  Intelligent Usb Dmx Interface SIUDI8C
+	0440  Intelligent Usb Dmx Interface SIUDI9A Firmware Download
+	0441  Intelligent Usb Dmx Interface SIUDI9A
+	0450  Intelligent Usb Dmx Interface SIUDI9C Firmware Download
+	0451  Intelligent Usb Dmx Interface SIUDI9C
+	0460  Touch Sensitive Intelligent Control Keypad STICK2 Firmware download
+	0461  Touch Sensitive Intelligent Control Keypad STICK2
+	0470  Touch Sensitive Intelligent Control Keypad STICK1B Firmware download
+	0471  Touch Sensitive Intelligent Control Keypad STICK1B
+	0480  Touch Sensitive Intelligent Control Keypad STICK3 Firmware download
+	0481  Touch Sensitive Intelligent Control Keypad STICK3
+	0490  Intelligent Usb Dmx Interface SIUDI9D Firmware Download
+	0491  Intelligent Usb Dmx Interface SIUDI9D
+	0500  Touch Sensitive Intelligent Control Keypad STICK2B Firmware download
+	0501  Touch Sensitive Intelligent Control Keypad STICK2B
+	0520  Touch Sensitive Intelligent Control Keypad (STICK2C Firmware download, 32/64bits
+	0521  Touch Sensitive Intelligent Control Keypad (STICK2C, 32/64bits)
+	0540  Sunlite Universal Smart Handy Interface (SUSHI1A Firmware download, 32/64bits)
+	0541  Sunlite Universal Smart Handy Interface (SUSHI1A, 32/64bits)
+	0570  Touch Sensitive Intelligent Control Keypad (STICK4A Firmware download, 32/64bits)
+	0571  Touch Sensitive Intelligent Control Keypad (STICK4A, 32/64bits)
+	0580  Touch Sensitive Intelligent Control Keypad (STICK5A Firmware download, 32/64bits)
+	0581  Touch Sensitive Intelligent Control Keypad (STICK5A, 32/64bits)
+	0590  Intelligent Dmx Interface (SIUDI9S Firmware Download, 32/64bits)
+	0591  Intelligent Dmx Interface (SIUDI9S, 32/64bits)
+	0600  Intelligent Dmx Interface (SIUDI9M Firmware Download, 32/64bits)
+	0601  Intelligent Dmx Interface (SIUDI9M, 32/64bits)
+	0610  Intelligent Dmx Interface SIUDI10A Firmware Download
+	0611  Intelligent Dmx Interface SIUDI10A
+6253  TwinHan Technology Co., Ltd
+	0100  Ir reciver f. remote control
+636c  CoreLogic, Inc.
+6472  Sony Corp.
+	01c8  PlayStation Portable [Mass Storage]
+6547  Arkmicro Technologies Inc.
+	0232  ARK3116 Serial
+6557  Emtec
+	5500  Mass Storage Device
+	8005  Car Key
+6615  IRTOUCHSYSTEMS Co. Ltd.
+	0001  Touchscreen
+	0020  IRTOUCH InfraRed TouchScreen
+	0081  TouchScreen
+6666  Prototype product Vendor ID
+	0667  WiseGroup Smart Joy PSX, PS-PC Smart JoyPad
+	1c40  TELEMIC 802.15.4 Sensor node (Bootloader)
+	1c41  TELEMIC 802.15.4 Sensor node
+	2667  JCOP BlueZ Smartcard reader
+	8802  SmartJoy Dual Plus PS2 converter
+	8804  WiseGroup SuperJoy Box 5
+6677  WiseGroup, Ltd.
+	8802  SmartJoy Dual Plus PS2 converter
+	8811  Deluxe Dance Mat
+675d  Humanscale
+	062a  Switch Mouse
+6891  3Com
+	a727  3CRUSB10075 802.11bg [ZyDAS ZD1211]
+695c  Opera1
+	3829  Opera1 DVB-S (warm state)
+6993  Yealink Network Technology Co., Ltd.
+	b001  VoIP Phone
+6a75  Shanghai Jujo Electronics Co., Ltd
+7104  CME (Central Music Co.)
+	2202  UF5/UF6/UF7/UF8 MIDI Master Keyboard
+726c  StackFoundry LLC
+	2149  EntropyKing Random Number Generator
+7302  Solinftec
+	0001  HUB 4X232
+734c  TBS Technologies China
+	5920  Q-Box II DVB-S2 HD
+	5928  Q-Box II DVB-S2 HD
+7373  Beijing STONE Technology Co. Ltd.
+	5740  Intelligent TFT-LCD Module
+7392  Edimax Technology Co., Ltd
+	7711  EW-7711UTn nLite Wireless Adapter [Ralink RT3070]
+	7717  EW-7717UN 802.11n Wireless Adapter [Ralink RT2770]
+	7718  EW-7718UN 802.11n Wireless Adapter [Ralink RT2870]
+	7722  EW-7722UTn 802.11n Wireless Adapter [Ralink RT3072]
+	7733  EW-7733UnD 802.11abgn 3x3:3 [Ralink RT3573]
+	7811  EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
+	7822  EW-7612UAn V2 802.11n Wireless Adapter [Realtek RTL8192CU]
+	a611  EW-7611ULB 802.11b/g/n and Bluetooth 4.0 Adapter
+	a711  EW-7711MAC 802.11ac Wireless Adapter
+	a811  EW-7811UTC 802.11ac Wireless Adapter
+	b711  EW-7722UAC 802.11a/b/g/n/ac (2x2) Wireless Adapter [MediaTek MT7612U]
+	b822  EW-7822ULC 802.11ac Wireless Adapter [Realtek RTL8812AU]
+73d8  Progeny Dental Equipment Specialists
+	0104  VetPro DR, Size 1
+	0105  VetPro DR, Size 2
+7669  Venable Instruments
+	350c  Model 350c, Frequency Response Analyzer
+	5140  Model 5140, Frequency Response Analyzer
+	6305  Model 6305, Frequency Response Analyzer
+	6320  Model 6320, Frequency Response Analyzer
+	6340  Model 6340, Frequency Response Analyzer
+	7405  Model 7405, Frequency Response Analyzer
+	7420  Model 7420, Frequency Response Analyzer
+	7440  Model 7440, Frequency Response Analyzer
+	8805  Model 8805, Frequency Response Analyzer
+	8820  Model 8820, Frequency Response Analyzer
+	8840  Model 8840, Frequency Response Analyzer
+7825  Other World Computing
+	a2a4  External SATA Hard Drive Adapter cable PA023U3
+	b0b3  miniStack MAX
+8070  ACCES I/O Products, Inc.
+	8003  USB-DIO-96
+	8070  USB-AO16-16A
+8086  Intel Corp.
+	0001  AnyPoint (TM) Home Network 1.6 Mbps Wireless Adapter
+	0044  CPU DRAM Controller
+	0046  HD Graphics
+	0100  Personal Audio Player 3000
+	0101  Personal Audio Player 3000
+	0110  Easy PC Camera
+	0120  PC Camera CS120
+	0180  WiMAX Connection 2400m
+	0181  WiMAX Connection 2400m
+	0182  WiMAX Connection 2400m
+	0186  WiMAX Connection 2400m
+	0188  WiMAX Connection 2400m
+	0189  Centrino Advanced-N 6230 Bluetooth adapter
+	0200  AnyPoint(TM) Wireless II Network 11Mbps Adapter [Atmel AT76C503A]
+	0431  Pro Video PC Camera
+	0510  Digital Movie Creator
+	0630  Pocket PC Camera
+	0780  CS780 Microphone Input
+	07d3  BLOB boot loader firmware
+	07dc  Bluetooth 4.0* Smart Ready (low energy)
+	0b07  RealSense D435
+	0dad  Cherry MiniatureCard Keyboard
+	1010  AnyPoint(TM) Home Network 10 Mbps Phoneline Adapter
+	110a  Bluetooth Controller from (Ericsson P4A)
+	110b  Bluetooth Controller from (Intel/CSR)
+	1110  PRO/Wireless LAN Module
+	1111  PRO/Wireless 2011B 802.11b Adapter [Intersil PRISM 2.5]
+	1122  Integrated Hub
+	1134  Hollister Mobile Monitor
+	1139  In-Target Probe (ITP)
+	1234  Prototype Reader/Writer
+	1403  WiMAX Connection 2400m
+	1405  WiMAX Connection 2400m
+	1406  WiMAX Connection 2400m
+	2448  82801 PCI Bridge
+	3100  PRO/DSL 3220 Modem - WAN
+	3101  PRO/DSL 3220 Modem
+	3240  AnyPoint® 3240 Modem - WAN
+	3241  AnyPoint® 3240 Modem
+	8602  Miniature Card Slot
+	8c26  8 Series/C220 Series  EHCI #1
+	8c2d  8 Series/C220 Series EHCI #2
+	8c31  eXtensible Host Controller
+	9303  8x930Hx Hub
+	9500  CE 9500 DVB-T
+	9890  82930 Test Board
+	beef  SCM Miniature Card Reader/Writer
+	c013  Wireless HID Station
+	dead  Galileo
+	f001  XScale PXA27x Bulverde flash
+	f1a5  Z-U130 [Value Solid State Drive]
+8087  Intel Corp.
+	0020  Integrated Rate Matching Hub
+	0024  Integrated Rate Matching Hub
+	0025  Wireless-AC 9260 Bluetooth Adapter
+	0026  AX201 Bluetooth
+	0029  AX200 Bluetooth
+	0032  AX210 Bluetooth
+	0716  Modem Flashloader
+	07da  Centrino Bluetooth Wireless Transceiver
+		8087 07da  Centrino Advanced-N 6235
+	07db  Atom C2000 Root Hub
+	07dc  Bluetooth wireless interface
+	07eb  Oaktrail tablet
+	0a2a  Bluetooth wireless interface
+	0a2b  Bluetooth wireless interface
+	0a9e  Edison
+	0aa7  Wireless-AC 3168 Bluetooth
+	0aaa  Bluetooth 9460/9560 Jefferson Peak (JfP)
+	0fff  Intel Android Bootloader Interface
+	8000  Integrated Rate Matching Hub
+	8001  Integrated Hub
+	8002  8 channel internal hub
+	8008  Integrated Rate Matching Hub
+	800a  Hub
+80ee  VirtualBox
+	0021  USB Tablet
+	0022  multitouch tablet
+8282  Keio
+	3201  Retro Adapter
+	3301  Retro Adapter Mouse
+8301  Hapurs
+	0089  HPBT05R 2.4 G Mini Wireless Touchpad Keyboard
+8341  EGO Systems, Inc.
+	2000  Flashdisk
+8564  Transcend Information, Inc.
+	1000  JetFlash
+	4000  microSD/SD/CF UHS-II Card Reader [RDF8, RDF9]
+	6000  digital photo frame PF830
+	6002  digital photo frame PF830
+	7000  StoreJet 25H3
+8644  Intenso GmbG
+	8003  Micro Line
+	800b  Micro Line (4GB)
+8e06  CH Products, Inc.
+	f700  DT225 Trackball
+8ea3  Doosl
+	a02c  Wireless Presenter Receiver
+9016  Sitecom
+	182d  WL-022 802.11b Adapter
+9022  TeVii Technology Ltd.
+	d630  DVB-S S630
+	d650  DVB-S2 S650
+	d660  DVB-S2 S660
+9148  GeoLab, Ltd
+# All of GeoLab's devices share the same ID 0004.
+	0004  R3 Compatible Device
+9516  Studiologic
+9710  MosChip Semiconductor
+	7703  MCS7703 Serial Port Adapter
+	7705  MCS7705 Parallel port adapter
+	7715  MCS7715 Parallel and serial port adapter
+	7717  MCS7717 3-port hub with serial and parallel adapter
+	7720  MCS7720 Dual serial port adapter
+	7730  MCS7730 10/100 Mbps Ethernet adapter
+	7780  MCS7780 4Mbps Fast IrDA Adapter
+	7784  MCS7784 115.2Kb IrDA Adapter
+	7810  MCS7810 Serial Port Adapter
+	7820  MCS7820 Dual Serial Port Adapter
+	7830  MCS7830 10/100 Mbps Ethernet adapter
+	7832  MCS7832 10/100 Mbps Ethernet adapter
+	7840  MCS7820/MCS7840 2/4 port serial adapter
+	9990  MCS9990 PCIe Host Controller
+9849  Bestmedia CD Recordable GmbH & Co. KG
+	0701  Platinum MyDrive HP
+9886  Astro Gaming
+	0015  A50
+9999  Odeon
+	0001  JAF Mobile Phone Flasher Interface
+99fa  Grandtec
+	8988  V.cap Camera Device
+9ac4  J. Westhues
+	4b8f  ProxMark-3 RFID Instrument
+9e88  Marvell Semiconductor, Inc.
+	9e8f  Plug Computer Basic [SheevaPlug]
+a014  Insignia (Best Buy)
+	b014  Desktop Microphone NS-PAUM50
+a108  Ingenic Semiconductor Co.,Ltd
+	1000  X1000
+	4775  JZ4775 Boot Device
+a128  AnMo Electronics Corp. / Dino-Lite (?)
+	0610  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
+	0611  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
+	0612  Dino-Lite Digital Microscope (SN9C120 + HV7131R)
+	0613  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
+	0614  Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111)
+	0615  Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111)
+	0616  Dino-Lite Digital Microscope (SN9C120 + HV7131R)
+	0617  Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111)
+	0618  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
+a168  AnMo Electronics Corporation
+	0610  Dino-Lite Digital Microscope
+	0611  Dino-Lite Digital Microscope
+	0613  Dino-Lite Digital Microscope
+	0614  Dino-Lite Pro Digital Microscope
+	0615  Dino-Lite Pro Digital Microscope
+	0617  Dino-Lite Pro Digital Microscope
+	0618  Dino-Lite Digital Microscope
+a466  Haikou Xingong Electronics Co.,Ltd
+	0a53  TL866II Plus Device Programmer [MiniPRO]
+a600  ASIX s.r.o.
+	5500  zuban H2OPS - GPS for canoeing
+	a000  SIGMA Logic Analyzer
+	a002  EMUSB interface pro MU Beta
+	c000  MREL Data Trap II
+	c001  VUTS DMU4
+	c002  Electrone MASH
+	c005  MREL HTU HandiTrap cable
+	c006  JRC COmeter
+	e110  OK1ZIA Davac 4.x
+	e112  OK1ZIA Antenna rotator
+	e113  OK1ZIA GPIO
+	e114  OK1ZIA HD&Keyb
+a727  3Com
+	6893  3CRUSB20075 OfficeConnect Wireless 108Mbps 11g Adapter [Atheros AR5523]
+	6895  AR5523
+	6897  AR5523
+a88a  Clas Ohlsson
+	3003  PCFree Multimedia Remote Control PC
+aaaa  MXT
+	8815  microSD CardReader
+	8816  microSD CardReader
+ab12  aplic
+	34cd  JMICRON JMS578 SATA 6Gb/s bridge
+abcd  LogiLink
+	1234  UDisk flash drive
+	6104  PCCloneEX Lite+ SATA docking station [QP0017]
+	cdee  Petcam
+b58e  Blue Microphones
+	9e84  Yeti Stereo Microphone
+ba77  Clockmaker
+	7147  Agterbosch
+c216  Card Device Expert Co., LTD
+	0180  MSR90 MagStripe reader
+c251  Keil Software, Inc.
+	1705  MCB2300
+	2710  ULink
+	2723  ULink-ME
+c502  AGPTek
+	0029  Rocker
+cace  CACE Technologies Inc.
+	0002  AirPCAP Classic 802.11 packet capture adapter
+	0300  AirPcap NX [Atheros AR9170+AR9104]
+cd12  SMART TECHNOLOGY INDUSTRIAL LTD.
+d208  Ultimarc
+	0310  Mini-PAC Arcade Control Interface
+d209  Ultimarc
+	0301  I-PAC Arcade Control Interface
+	0501  Ultra-Stik Ultimarc Ultra-Stik Player 1
+	1571  A-PAC Arcade Control Interface
+d904  LogiLink
+	0003  Laser Mouse (ID0009A)
+e2b7  Jie Li
+	0811  CD002
+	0812  CD005 MP3 Player
+e4e4  Xorcom Ltd.
+	1130  Astribank series
+	1131  Astribank series
+	1132  Astribank series
+	1140  Astribank series
+	1141  Astribank series
+	1142  Astribank series
+	1150  Astribank series
+	1151  Astribank series
+	1152  Astribank series
+	1160  Astribank 2 series
+	1161  Astribank 2 series
+	1162  Astribank 2 series
+eb03  MakingThings
+	0920  Make Controller Kit
+eb1a  eMPIA Technology, Inc.
+	17de  KWorld V-Stream XPERT DTV - DVB-T USB cold
+	17df  KWorld V-Stream XPERT DTV - DVB-T USB warm
+	2571  M035 Compact Web Cam
+	2710  SilverCrest Webcam
+	2750  ECS Elitegroup G220 integrated Webcam
+	2761  EeePC 701 integrated Webcam
+	2776  Combined audio and video input device
+	2800  EM2800 Video Capture
+	2801  EM2801 Video Capture
+	2820  EM2820 Video Capture
+	2821  EM2820 Video Capture
+	2840  EM2840 Video Capture
+	2841  EM2840 Video Capture
+	2861  EasyCAP DC60+ [EM2861]
+	2863  Video Grabber
+	2870  Pinnacle PCTV Stick
+	2881  EM2881 Video Controller
+	50a3  Gadmei UTV380 TV Box
+	50a6  Gadmei UTV330 TV Box
+	5166  video grabber 28282
+	5184  VIDBOX NW06 [EM28281]
+	8179  Terratec Cinergy T2 Stick HD
+	e305  KWorld PlusTV Analog Stick
+	e355  KWorld DVB-T 355U Digital TV Dongle
+eb2a  KWorld
+ef18  SMART TECHNOLOGY INDUSTRIAL LTD.
+f003  Hewlett Packard
+	6002  PhotoSmart C500
+f007  Teslong
+	a999  Endoscope Camera
+	b999  Otoscope Camera
+f182  Leap Motion
+	0003  Controller
+f3f0  CCT, Inc
+	0740  multi-function device
+	1340  multi-function printer
+	1440  printer device
+	1921  printer
+f4ec  Atten Electronics / Siglent Technologies
+	ee38  Digital Storage Oscilloscope
+f4ed  Shenzhen Siglent Co., Ltd.
+	ee37  SDG1010 Waveform Generator
+	ee3a  SDG1010 Waveform Generator (TMC mode)
+f766  Hama
+	0001  PC-Gamepad "Greystorm"
+fa11  DyingLight
+	5afe  DyingLight
+fc08  Conrad Electronic SE
+	0101  MIDI Cable UA0037
+ff00  Power Delivery
+ffee  FNK Tech
+	0100  Card Reader Controller RTS5101/RTS5111/RTS5116
+
+# List of known device classes, subclasses and protocols
+
+# Syntax:
+# C class  class_name
+#	subclass  subclass_name			<-- single tab
+#		protocol  protocol_name		<-- two tabs
+
+C 00  (Defined at Interface level)
+C 01  Audio
+	01  Control Device
+	02  Streaming
+	03  MIDI Streaming
+C 02  Communications
+	01  Direct Line
+	02  Abstract (modem)
+		00  None
+		01  AT-commands (v.25ter)
+		02  AT-commands (PCCA101)
+		03  AT-commands (PCCA101 + wakeup)
+		04  AT-commands (GSM)
+		05  AT-commands (3G)
+		06  AT-commands (CDMA)
+		fe  Defined by command set descriptor
+		ff  Vendor Specific (MSFT RNDIS?)
+	03  Telephone
+	04  Multi-Channel
+	05  CAPI Control
+	06  Ethernet Networking
+	07  ATM Networking
+	08  Wireless Handset Control
+	09  Device Management
+	0a  Mobile Direct Line
+	0b  OBEX
+	0c  Ethernet Emulation
+		07  Ethernet Emulation (EEM)
+C 03  Human Interface Device
+	00  No Subclass
+		00  None
+		01  Keyboard
+		02  Mouse
+	01  Boot Interface Subclass
+		00  None
+		01  Keyboard
+		02  Mouse
+C 05  Physical Interface Device
+C 06  Imaging
+	01  Still Image Capture
+		01  Picture Transfer Protocol (PIMA 15470)
+C 07  Printer
+	01  Printer
+		00  Reserved/Undefined
+		01  Unidirectional
+		02  Bidirectional
+		03  IEEE 1284.4 compatible bidirectional
+		ff  Vendor Specific
+C 08  Mass Storage
+	01  RBC (typically Flash)
+		00  Control/Bulk/Interrupt
+		01  Control/Bulk
+		50  Bulk-Only
+	02  SFF-8020i, MMC-2 (ATAPI)
+	03  QIC-157
+	04  Floppy (UFI)
+		00  Control/Bulk/Interrupt
+		01  Control/Bulk
+		50  Bulk-Only
+	05  SFF-8070i
+	06  SCSI
+		00  Control/Bulk/Interrupt
+		01  Control/Bulk
+		50  Bulk-Only
+C 09  Hub
+	00  Unused
+		00  Full speed (or root) hub
+		01  Single TT
+		02  TT per port
+C 0a  CDC Data
+	00  Unused
+		30  I.430 ISDN BRI
+		31  HDLC
+		32  Transparent
+		50  Q.921M
+		51  Q.921
+		52  Q.921TM
+		90  V.42bis
+		91  Q.932 EuroISDN
+		92  V.120 V.24 rate ISDN
+		93  CAPI 2.0
+		fd  Host Based Driver
+		fe  CDC PUF
+		ff  Vendor specific
+C 0b  Chip/SmartCard
+C 0d  Content Security
+C 0e  Video
+	00  Undefined
+	01  Video Control
+	02  Video Streaming
+	03  Video Interface Collection
+C 58  Xbox
+	42  Controller
+C dc  Diagnostic
+	01  Reprogrammable Diagnostics
+		01  USB2 Compliance
+C e0  Wireless
+	01  Radio Frequency
+		01  Bluetooth
+		02  Ultra WideBand Radio Control
+		03  RNDIS
+	02  Wireless USB Wire Adapter
+		01  Host Wire Adapter Control/Data Streaming
+		02  Device Wire Adapter Control/Data Streaming
+		03  Device Wire Adapter Isochronous Streaming
+C ef  Miscellaneous Device
+	01  ?
+		01  Microsoft ActiveSync
+		02  Palm Sync
+	02  ?
+		01  Interface Association
+		02  Wire Adapter Multifunction Peripheral
+	03  ?
+		01  Cable Based Association
+	05  USB3 Vision
+C fe  Application Specific Interface
+	01  Device Firmware Update
+	02  IRDA Bridge
+	03  Test and Measurement
+		01  TMC
+		02  USB488
+C ff  Vendor Specific Class
+	ff  Vendor Specific Subclass
+		ff  Vendor Specific Protocol
+
+# List of Audio Class Terminal Types
+
+# Syntax:
+# AT terminal_type  terminal_type_name
+
+AT 0100  USB Undefined
+AT 0101  USB Streaming
+AT 01ff  USB Vendor Specific
+AT 0200  Input Undefined
+AT 0201  Microphone
+AT 0202  Desktop Microphone
+AT 0203  Personal Microphone
+AT 0204  Omni-directional Microphone
+AT 0205  Microphone Array
+AT 0206  Processing Microphone Array
+AT 0300  Output Undefined
+AT 0301  Speaker
+AT 0302  Headphones
+AT 0303  Head Mounted Display Audio
+AT 0304  Desktop Speaker
+AT 0305  Room Speaker
+AT 0306  Communication Speaker
+AT 0307  Low Frequency Effects Speaker
+AT 0400  Bidirectional Undefined
+AT 0401  Handset
+AT 0402  Headset
+AT 0403  Speakerphone, no echo reduction
+AT 0404  Echo-suppressing speakerphone
+AT 0405  Echo-canceling speakerphone
+AT 0500  Telephony Undefined
+AT 0501  Phone line
+AT 0502  Telephone
+AT 0503  Down Line Phone
+AT 0600  External Undefined
+AT 0601  Analog Connector
+AT 0602  Digital Audio Interface
+AT 0603  Line Connector
+AT 0604  Legacy Audio Connector
+AT 0605  SPDIF interface
+AT 0606  1394 DA stream
+AT 0607  1394 DV stream soundtrack
+AT 0700  Embedded Undefined
+AT 0701  Level Calibration Noise Source
+AT 0702  Equalization Noise
+AT 0703  CD Player
+AT 0704  DAT
+AT 0705  DCC
+AT 0706  MiniDisc
+AT 0707  Analog Tape
+AT 0708  Phonograph
+AT 0709  VCR Audio
+AT 070a  Video Disc Audio
+AT 070b  DVD Audio
+AT 070c  TV Tuner Audio
+AT 070d  Satellite Receiver Audio
+AT 070e  Cable Tuner Audio
+AT 070f  DSS Audio
+AT 0710  Radio Receiver
+AT 0711  Radio Transmitter
+AT 0712  Multitrack Recorder
+AT 0713  Synthesizer
+
+# List of HID Descriptor Types
+
+# Syntax:
+# HID descriptor_type  descriptor_type_name
+
+HID 21  HID
+HID 22  Report
+HID 23  Physical
+
+# List of HID Descriptor Item Types
+# Note: 2 bits LSB encode data length following
+
+# Syntax:
+# R item_type  item_type_name
+
+R 04  Usage Page
+R 08  Usage
+R 14  Logical Minimum
+R 18  Usage Minimum
+R 24  Logical Maximum
+R 28  Usage Maximum
+R 34  Physical Minimum
+R 38  Designator Index
+R 44  Physical Maximum
+R 48  Designator Minimum
+R 54  Unit Exponent
+R 58  Designator Maximum
+R 64  Unit
+R 74  Report Size
+R 78  String Index
+R 80  Input
+R 84  Report ID
+R 88  String Minimum
+R 90  Output
+R 94  Report Count
+R 98  String Maximum
+R a0  Collection
+R a4  Push
+R a8  Delimiter
+R b0  Feature
+R b4  Pop
+R c0  End Collection
+
+# List of Physical Descriptor Bias Types
+
+# Syntax:
+# BIAS item_type  item_type_name
+
+BIAS 0  Not Applicable
+BIAS 1  Right Hand
+BIAS 2  Left Hand
+BIAS 3  Both Hands
+BIAS 4  Either Hand
+
+# List of Physical Descriptor Item Types
+
+# Syntax:
+# PHY item_type  item_type_name
+
+PHY 00  None
+PHY 01  Hand
+PHY 02  Eyeball
+PHY 03  Eyebrow
+PHY 04  Eyelid
+PHY 05  Ear
+PHY 06  Nose
+PHY 07  Mouth
+PHY 08  Upper Lip
+PHY 09  Lower Lip
+PHY 0a  Jaw
+PHY 0b  Neck
+PHY 0c  Upper Arm
+PHY 0d  Elbow
+PHY 0e  Forearm
+PHY 0f  Wrist
+PHY 10  Palm
+PHY 11  Thumb
+PHY 12  Index Finger
+PHY 13  Middle Finger
+PHY 14  Ring Finger
+PHY 15  Little Finger
+PHY 16  Head
+PHY 17  Shoulder
+PHY 18  Hip
+PHY 19  Waist
+PHY 1a  Thigh
+PHY 1b  Knee
+PHY 1c  calf
+PHY 1d  Ankle
+PHY 1e  Foot
+PHY 1f  Heel
+PHY 20  Ball of Foot
+PHY 21  Big Toe
+PHY 22  Second Toe
+PHY 23  Third Toe
+PHY 24  Fourth Toe
+PHY 25  Fifth Toe
+PHY 26  Brow
+PHY 27  Cheek
+
+# List of HID Usages
+
+# Syntax:
+# HUT hi  _usage_page  hid_usage_page_name
+#	hid_usage  hid_usage_name
+
+HUT 00  Undefined
+HUT 01  Generic Desktop Controls
+	000  Undefined
+	001  Pointer
+	002  Mouse
+	004  Joystick
+	005  Gamepad
+	006  Keyboard
+	007  Keypad
+	008  Multi-Axis Controller
+	030  Direction-X
+	031  Direction-Y
+	032  Direction-Z
+	033  Rotate-X
+	034  Rotate-Y
+	035  Rotate-Z
+	036  Slider
+	037  Dial
+	038  Wheel
+	039  Hat Switch
+	03a  Counted Buffer
+	03b  Byte Count
+	03c  Motion Wakeup
+	03d  Start
+	03e  Select
+	040  Vector-X
+	041  Vector-Y
+	042  Vector-Z
+	043  Vector-X relative Body
+	044  Vector-Y relative Body
+	045  Vector-Z relative Body
+	046  Vector
+	080  System Control
+	081  System Power Down
+	082  System Sleep
+	083  System Wake Up
+	084  System Context Menu
+	085  System Main Menu
+	086  System App Menu
+	087  System Menu Help
+	088  System Menu Exit
+	089  System Menu Select
+	08a  System Menu Right
+	08b  System Menu Left
+	08c  System Menu Up
+	08d  System Menu Down
+	090  Direction Pad Up
+	091  Direction Pad Down
+	092  Direction Pad Right
+	093  Direction Pad Left
+HUT 02  Simulation Controls
+	000  Undefined
+	001  Flight Simulation Device
+	002  Automobile Simulation Device
+	003  Tank Simulation Device
+	004  Spaceship Simulation Device
+	005  Submarine Simulation Device
+	006  Sailing Simulation Device
+	007  Motorcycle Simulation Device
+	008  Sports Simulation Device
+	009  Airplane Simualtion Device
+	00a  Helicopter Simulation Device
+	00b  Magic Carpet Simulation Device
+	00c  Bicycle Simulation Device
+	020  Flight Control Stick
+	021  Flight Stick
+	022  Cyclic Control
+	023  Cyclic Trim
+	024  Flight Yoke
+	025  Track Control
+	0b0  Aileron
+	0b1  Aileron Trim
+	0b2  Anti-Torque Control
+	0b3  Autopilot Enable
+	0b4  Chaff Release
+	0b5  Collective Control
+	0b6  Dive Break
+	0b7  Electronic Countermeasures
+	0b8  Elevator
+	0b9  Elevator Trim
+	0ba  Rudder
+	0bb  Throttle
+	0bc  Flight COmmunications
+	0bd  Flare Release
+	0be  Landing Gear
+	0bf  Toe Break
+	0c0  Trigger
+	0c1  Weapon Arm
+	0c2  Weapons Select
+	0c3  Wing Flaps
+	0c4  Accelerator
+	0c5  Brake
+	0c6  Clutch
+	0c7  Shifter
+	0c8  Steering
+	0c9  Turret Direction
+	0ca  Barrel Elevation
+	0cb  Drive Plane
+	0cc  Ballast
+	0cd  Bicylce Crank
+	0ce  Handle Bars
+	0cf  Front Brake
+	0d0  Rear Brake
+HUT 03  VR Controls
+	000  Unidentified
+	001  Belt
+	002  Body Suit
+	003  Flexor
+	004  Glove
+	005  Head Tracker
+	006  Head Mounted Display
+	007  Hand Tracker
+	008  Oculometer
+	009  Vest
+	00a  Animatronic Device
+	020  Stereo Enable
+	021  Display Enable
+HUT 04  Sport Controls
+	000  Unidentified
+	001  Baseball Bat
+	002  Golf Club
+	003  Rowing Machine
+	004  Treadmill
+	030  Oar
+	031  Slope
+	032  Rate
+	033  Stick Speed
+	034  Stick Face Angle
+	035  Stick Heel/Toe
+	036  Stick Follow Through
+	038  Stick Type
+	039  Stick Height
+	047  Stick Temp
+	050  Putter
+	051  1 Iron
+	052  2 Iron
+	053  3 Iron
+	054  4 Iron
+	055  5 Iron
+	056  6 Iron
+	057  7 Iron
+	058  8 Iron
+	059  9 Iron
+	05a  10 Iron
+	05b  11 Iron
+	05c  Sand Wedge
+	05d  Loft Wedge
+	05e  Power Wedge
+	05f  1 Wood
+	060  3 Wood
+	061  5 Wood
+	062  7 Wood
+	063  9 Wood
+HUT 05  Game Controls
+	000  Undefined
+	001  3D Game Controller
+	002  Pinball Device
+	003  Gun Device
+	020  Point Of View
+	021  Turn Right/Left
+	022  Pitch Right/Left
+	023  Roll Forward/Backward
+	024  Move Right/Left
+	025  Move Forward/Backward
+	026  Move Up/Down
+	027  Lean Right/Left
+	028  Lean Forward/Backward
+	029  Height of POV
+	02a  Flipper
+	02b  Secondary Flipper
+	02c  Bump
+	02d  New Game
+	02e  Shoot Ball
+	02f  Player
+	030  Gun Bolt
+	031  Gun Clip
+	032  Gun Selector
+	033  Gun Single Shot
+	034  Gun Burst
+	035  Gun Automatic
+	036  Gun Safety
+	037  Gamepad Fire/Jump
+	038  Gamepad Fun
+	039  Gamepad Trigger
+HUT 07  Keyboard
+	000  No Event
+	001  Keyboard ErrorRollOver
+	002  Keyboard POSTfail
+	003  Keyboard Error Undefined
+	004  A
+	005  B
+	006  C
+	007  D
+	008  E
+	009  F
+	00a  G
+	00b  H
+	00c  I
+	00d  J
+	00e  K
+	00f  L
+	010  M
+	011  N
+	012  O
+	013  P
+	014  Q
+	015  R
+	016  S
+	017  T
+	018  U
+	019  V
+	01a  W
+	01b  X
+	01c  Y
+	01d  Z
+	01e  1 and ! (One and Exclamation)
+	01f  2 and @ (2 and at)
+	020  3 and # (3 and Hash)
+	021  4 and $ (4 and Dollar Sign)
+	022  5 and % (5 and Percent Sign)
+	023  6 and ^ (6 and circumflex)
+	024  7 and & (Seven and Ampersand)
+	025  8 and * (Eight and asterisk)
+	026  9 and ( (Nine and Parenthesis Left)
+	027  0 and ) (Zero and Parenthesis Right)
+	028  Return (Enter)
+	029  Escape
+	02a  Delete (Backspace)
+	02b  Tab
+	02c  Space Bar
+	02d  - and _ (Minus and underscore)
+	02e  = and + (Equal and Plus)
+	02f  [ and { (Bracket and Braces Left)
+	030  ] and } (Bracket and Braces Right)
+	031  \ and | (Backslash and Bar)
+	032  # and ~ (Hash and Tilde, Non-US Keyboard near right shift)
+	033  ; and : (Semicolon and Colon)
+	034  � and " (Accent Acute and Double Quotes)
+	035  ` and ~ (Accent Grace and Tilde)
+	036  , and < (Comma and Less)
+	037  . and > (Period and Greater)
+	038  / and ? (Slash and Question Mark)
+	039  Caps Lock
+	03a  F1
+	03b  F2
+	03c  F3
+	03d  F4
+	03e  F5
+	03f  F6
+	040  F7
+	041  F8
+	042  F9
+	043  F10
+	044  F11
+	045  F12
+	046  Print Screen
+	047  Scroll Lock
+	048  Pause
+	049  Insert
+	04a  Home
+	04b  Page Up
+	04c  Delete Forward (without Changing Position)
+	04d  End
+	04e  Page Down
+	04f  Right Arrow
+	050  Left Arrow
+	051  Down Arrow
+	052  Up Arrow
+	053  Num Lock and Clear
+	054  Keypad / (Division Sign)
+	055  Keypad * (Multiplication Sign)
+	056  Keypad - (Subtraction Sign)
+	057  Keypad + (Addition Sign)
+	058  Keypad Enter
+	059  Keypad 1 and END
+	05a  Keypad 2 and Down Arrow
+	05b  Keypad 3 and Page Down
+	05c  Keypad 4 and Left Arrow
+	05d  Keypad 5 (Tactilei Raised)
+	05f  Keypad 6 and Right Arrow
+	060  Keypad 7 and Home
+	061  Keypad 8 and Up Arrow
+	062  Keypad 8 and Page Up
+	063  Keypad . (decimal delimiter) and Delete
+	064  \ and | (Backslash and Bar, UK and Non-US Keyboard near left shift)
+	065  Keyboard Application (Windows Key for Win95 or Compose)
+	066  Power (not a key)
+	067  Keypad = (Equal Sign)
+	068  F13
+	069  F14
+	06a  F15
+	06b  F16
+	06c  F17
+	06d  F18
+	06e  F19
+	06f  F20
+	070  F21
+	071  F22
+	072  F23
+	073  F24
+	074  Execute
+	075  Help
+	076  Menu
+	077  Select
+	078  Stop
+	079  Again
+	07a  Undo
+	07b  Cut
+	07c  Copy
+	07d  Paste
+	07e  Find
+	07f  Mute
+	080  Volume Up
+	081  Volume Down
+	082  Locking Caps Lock
+	083  Locking Num Lock
+	084  Locking Scroll Lock
+	085  Keypad Comma
+	086  Keypad Equal Sign (AS/400)
+	087  International 1 (PC98)
+	088  International 2 (PC98)
+	089  International 3 (PC98)
+	08a  International 4 (PC98)
+	08b  International 5 (PC98)
+	08c  International 6 (PC98)
+	08d  International 7 (Toggle Single/Double Byte Mode)
+	08e  International 8
+	08f  International 9
+	090  LANG 1 (Hangul/English Toggle, Korea)
+	091  LANG 2 (Hanja Conversion, Korea)
+	092  LANG 3 (Katakana, Japan)
+	093  LANG 4 (Hiragana, Japan)
+	094  LANG 5 (Zenkaku/Hankaku, Japan)
+	095  LANG 6
+	096  LANG 7
+	097  LANG 8
+	098  LANG 9
+	099  Alternate Erase
+	09a  SysReq/Attention
+	09b  Cancel
+	09c  Clear
+	09d  Prior
+	09e  Return
+	09f  Separator
+	0a0  Out
+	0a1  Open
+	0a2  Clear/Again
+	0a3  CrSel/Props
+	0a4  ExSel
+	0e0  Control Left
+	0e1  Shift Left
+	0e2  Alt Left
+	0e3  GUI Left
+	0e4  Control Right
+	0e5  Shift Right
+	0e6  Alt Rigth
+	0e7  GUI Right
+HUT 08  LEDs
+	000  Undefined
+	001  NumLock
+	002  CapsLock
+	003  Scroll Lock
+	004  Compose
+	005  Kana
+	006  Power
+	007  Shift
+	008  Do not disturb
+	009  Mute
+	00a  Tone Enabke
+	00b  High Cut Filter
+	00c  Low Cut Filter
+	00d  Equalizer Enable
+	00e  Sound Field ON
+	00f  Surround On
+	010  Repeat
+	011  Stereo
+	012  Sampling Rate Detect
+	013  Spinning
+	014  CAV
+	015  CLV
+	016  Recording Format Detect
+	017  Off-Hook
+	018  Ring
+	019  Message Waiting
+	01a  Data Mode
+	01b  Battery Operation
+	01c  Battery OK
+	01d  Battery Low
+	01e  Speaker
+	01f  Head Set
+	020  Hold
+	021  Microphone
+	022  Coverage
+	023  Night Mode
+	024  Send Calls
+	025  Call Pickup
+	026  Conference
+	027  Stand-by
+	028  Camera On
+	029  Camera Off
+	02a  On-Line
+	02b  Off-Line
+	02c  Busy
+	02d  Ready
+	02e  Paper-Out
+	02f  Paper-Jam
+	030  Remote
+	031  Forward
+	032  Reverse
+	033  Stop
+	034  Rewind
+	035  Fast Forward
+	036  Play
+	037  Pause
+	038  Record
+	039  Error
+	03a  Usage Selected Indicator
+	03b  Usage In Use Indicator
+	03c  Usage Multi Indicator
+	03d  Indicator On
+	03e  Indicator Flash
+	03f  Indicator Slow Blink
+	040  Indicator Fast Blink
+	041  Indicator Off
+	042  Flash On Time
+	043  Slow Blink On Time
+	044  Slow Blink Off Time
+	045  Fast Blink On Time
+	046  Fast Blink Off Time
+	047  Usage Color Indicator
+	048  Indicator Red
+	049  Indicator Green
+	04a  Indicator Amber
+	04b  Generic Indicator
+	04c  System Suspend
+	04d  External Power Connected
+HUT 09  Buttons
+	000  No Button Pressed
+	001  Button 1 (Primary)
+	002  Button 2 (Secondary)
+	003  Button 3 (Tertiary)
+	004  Button 4
+	005  Button 5
+HUT 0a  Ordinal
+	001  Instance 1
+	002  Instance 2
+	003  Instance 3
+HUT 0b  Telephony
+	000  Unassigned
+	001  Phone
+	002  Answering Machine
+	003  Message Controls
+	004  Handset
+	005  Headset
+	006  Telephony Key Pad
+	007  Programmable Button
+	020  Hook Switch
+	021  Flash
+	022  Feature
+	023  Hold
+	024  Redial
+	025  Transfer
+	026  Drop
+	027  Park
+	028  Forward Calls
+	029  Alternate Function
+	02a  Line
+	02b  Speaker Phone
+	02c  Conference
+	02d  Ring Enable
+	02e  Ring Select
+	02f  Phone Mute
+	030  Caller ID
+	050  Speed Dial
+	051  Store Number
+	052  Recall Number
+	053  Phone Directory
+	070  Voice Mail
+	071  Screen Calls
+	072  Do Not Disturb
+	073  Message
+	074  Answer On/Offf
+	090  Inside Dial Tone
+	091  Outside Dial Tone
+	092  Inside Ring Tone
+	093  Outside Ring Tone
+	094  Priority Ring Tone
+	095  Inside Ringback
+	096  Priority Ringback
+	097  Line Busy Tone
+	098  Recorder Tone
+	099  Call Waiting Tone
+	09a  Confirmation Tone 1
+	09b  Confirmation Tone 2
+	09c  Tones Off
+	09d  Outside Ringback
+	0b0  Key 1
+	0b1  Key 2
+	0b3  Key 3
+	0b4  Key 4
+	0b5  Key 5
+	0b6  Key 6
+	0b7  Key 7
+	0b8  Key 8
+	0b9  Key 9
+	0ba  Key Star
+	0bb  Key Pound
+	0bc  Key A
+	0bd  Key B
+	0be  Key C
+	0bf  Key D
+HUT 0c  Consumer
+	000  Unassigned
+	001  Consumer Control
+	002  Numeric Key Pad
+	003  Programmable Buttons
+	020  +10
+	021  +100
+	022  AM/PM
+	030  Power
+	031  Reset
+	032  Sleep
+	033  Sleep After
+	034  Sleep Mode
+	035  Illumination
+	036  Function Buttons
+	040  Menu
+	041  Menu Pick
+	042  Menu Up
+	043  Menu Down
+	044  Menu Left
+	045  Menu Right
+	046  Menu Escape
+	047  Menu Value Increase
+	048  Menu Value Decrease
+	060  Data on Screen
+	061  Closed Caption
+	062  Closed Caption Select
+	063  VCR/TV
+	064  Broadcast Mode
+	065  Snapshot
+	066  Still
+	080  Selection
+	081  Assign Selection
+	082  Mode Step
+	083  Recall Last
+	084  Enter Channel
+	085  Order Movie
+	086  Channel
+	087  Media Selection
+	088  Media Select Computer
+	089  Media Select TV
+	08a  Media Select WWW
+	08b  Media Select DVD
+	08c  Media Select Telephone
+	08d  Media Select Program Guide
+	08e  Media Select Video Phone
+	08f  Media Select Games
+	090  Media Select Messages
+	091  Media Select CD
+	092  Media Select VCR
+	093  Media Select Tuner
+	094  Quit
+	095  Help
+	096  Media Select Tape
+	097  Media Select Cable
+	098  Media Select Satellite
+	099  Media Select Security
+	09a  Media Select Home
+	09b  Media Select Call
+	09c  Channel Increment
+	09d  Channel Decrement
+	09e  Media Select SAP
+	0a0  VCR Plus
+	0a1  Once
+	0a2  Daily
+	0a3  Weekly
+	0a4  Monthly
+	0b0  Play
+	0b1  Pause
+	0b2  Record
+	0b3  Fast Forward
+	0b4  Rewind
+	0b5  Scan Next Track
+	0b6  Scan Previous Track
+	0b7  Stop
+	0b8  Eject
+	0b9  Random Play
+	0ba  Select Disc
+	0bb  Enter Disc
+	0bc  Repeat
+	0bd  Tracking
+	0be  Track Normal
+	0bf  Slow Tracking
+	0c0  Frame Forward
+	0c1  Frame Back
+	0c2  Mark
+	0c3  Clear Mark
+	0c4  Repeat from Mark
+	0c5  Return to Mark
+	0c6  Search Mark Forward
+	0c7  Search Mark Backward
+	0c8  Counter Reset
+	0c9  Show Counter
+	0ca  Tracking Increment
+	0cb  Tracking Decrement
+	0cc  Stop/Eject
+	0cd  Play/Pause
+	0ce  Play/Skip
+	0e0  Volume
+	0e1  Balance
+	0e2  Mute
+	0e3  Bass
+	0e4  Treble
+	0e5  Bass Boost
+	0e6  Surround Mode
+	0e7  Loudness
+	0e8  MPX
+	0e9  Volume Increment
+	0ea  Volume Decrement
+	0f0  Speed Select
+	0f1  Playback Speed
+	0f2  Standard Play
+	0f3  Long Play
+	0f4  Extended Play
+	0f5  Slow
+	100  Fan Enable
+	101  Fan Speed
+	102  Light Enable
+	103  Light Illumination Level
+	104  Climate Control Enable
+	105  Room Temperature
+	106  Security Enable
+	107  Fire Alarm
+	108  Police Alarm
+	150  Balance Right
+	151  Balance Left
+	152  Bass Increment
+	153  Bass Decrement
+	154  Treble Increment
+	155  Treble Decrement
+	160  Speaker System
+	161  Channel Left
+	162  Channel Right
+	163  Channel Center
+	164  Channel Front
+	165  Channel Center Front
+	166  Channel Side
+	167  Channel Surround
+	168  Channel Low Frequency Enhancement
+	169  Channel Top
+	16a  Channel Unknown
+	170  Sub-Channel
+	171  Sub-Channel Increment
+	172  Sub-Channel Decrement
+	173  Alternative Audio Increment
+	174  Alternative Audio Decrement
+	180  Application Launch Buttons
+	181  AL Launch Button Configuration Tool
+	182  AL Launch Button Configuration
+	183  AL Consumer Control Configuration
+	184  AL Word Processor
+	185  AL Text Editor
+	186  AL Spreadsheet
+	187  AL Graphics Editor
+	188  AL Presentation App
+	189  AL Database App
+	18a  AL Email Reader
+	18b  AL Newsreader
+	18c  AL Voicemail
+	18d  AL Contacts/Address Book
+	18e  AL Calendar/Schedule
+	18f  AL Task/Project Manager
+	190  AL Log/Jounal/Timecard
+	191  AL Checkbook/Finance
+	192  AL Calculator
+	193  AL A/V Capture/Playback
+	194  AL Local Machine Browser
+	195  AL LAN/Wan Browser
+	196  AL Internet Browser
+	197  AL Remote Networking/ISP Connect
+	198  AL Network Conference
+	199  AL Network Chat
+	19a  AL Telephony/Dialer
+	19b  AL Logon
+	19c  AL Logoff
+	19d  AL Logon/Logoff
+	19e  AL Terminal Local/Screensaver
+	19f  AL Control Panel
+	1a0  AL Command Line Processor/Run
+	1a1  AL Process/Task Manager
+	1a2  AL Select Task/Application
+	1a3  AL Next Task/Application
+	1a4  AL Previous Task/Application
+	1a5  AL Preemptive Halt Task/Application
+	200  Generic GUI Application Controls
+	201  AC New
+	202  AC Open
+	203  AC CLose
+	204  AC Exit
+	205  AC Maximize
+	206  AC Minimize
+	207  AC Save
+	208  AC Print
+	209  AC Properties
+	21a  AC Undo
+	21b  AC Copy
+	21c  AC Cut
+	21d  AC Paste
+	21e  AC Select All
+	21f  AC Find
+	220  AC Find and Replace
+	221  AC Search
+	222  AC Go To
+	223  AC Home
+	224  AC Back
+	225  AC Forward
+	226  AC Stop
+	227  AC Refresh
+	228  AC Previous Link
+	229  AC Next Link
+	22b  AC History
+	22c  AC Subscriptions
+	22d  AC Zoom In
+	22e  AC Zoom Out
+	22f  AC Zoom
+	230  AC Full Screen View
+	231  AC Normal View
+	232  AC View Toggle
+	233  AC Scroll Up
+	234  AC Scroll Down
+	235  AC Scroll
+	236  AC Pan Left
+	237  AC Pan Right
+	238  AC Pan
+	239  AC New Window
+	23a  AC Tile Horizontally
+	23b  AC Tile Vertically
+	23c  AC Format
+HUT 0d  Digitizer
+	000  Undefined
+	001  Digitizer
+	002  Pen
+	003  Light Pen
+	004  Touch Screen
+	005  Touch Pad
+	006  White Board
+	007  Coordinate Measuring Machine
+	008  3D Digitizer
+	009  Stereo Plotter
+	00a  Articulated Arm
+	00b  Armature
+	00c  Multiple Point Digitizer
+	00d  Free Space Wand
+	020  Stylus
+	021  Puck
+	022  Finger
+	030  Tip Pressure
+	031  Barrel Pressure
+	032  In Range
+	033  Touch
+	034  Untouch
+	035  Tap
+	036  Quality
+	037  Data Valid
+	038  Transducer Index
+	039  Tablet Function Keys
+	03a  Program Change Keys
+	03b  Battery Strength
+	03c  Invert
+	03d  X Tilt
+	03e  Y Tilt
+	03f  Azimuth
+	040  Altitude
+	041  Twist
+	042  Tip Switch
+	043  Secondary Tip Switch
+	044  Barrel Switch
+	045  Eraser
+	046  Tablet Pick
+	047  Confidence
+	048  Width
+	049  Height
+	051  Contact ID
+	052  Input Mode
+	053  Device Index
+	054  Contact Count
+	055  Maximum Contact Number
+HUT 0f  PID Page
+	000  Undefined
+	001  Physical Interface Device
+	020  Normal
+	021  Set Effect Report
+	022  Effect Block Index
+	023  Parameter Block Offset
+	024  ROM Flag
+	025  Effect Type
+	026  ET Constant Force
+	027  ET Ramp
+	028  ET Custom Force Data
+	030  ET Square
+	031  ET Sine
+	032  ET Triangle
+	033  ET Sawtooth Up
+	034  ET Sawtooth Down
+	040  ET Spring
+	041  ET Damper
+	042  ET Inertia
+	043  ET Friction
+	050  Duration
+	051  Sample Period
+	052  Gain
+	053  Trigger Button
+	054  Trigger Repeat Interval
+	055  Axes Enable
+	056  Direction Enable
+	057  Direction
+	058  Type Specific Block Offset
+	059  Block Type
+	05A  Set Envelope Report
+	05B  Attack Level
+	05C  Attack Time
+	05D  Fade Level
+	05E  Fade Time
+	05F  Set Condition Report
+	060  CP Offset
+	061  Positive Coefficient
+	062  Negative Coefficient
+	063  Positive Saturation
+	064  Negative Saturation
+	065  Dead Band
+	066  Download Force Sample
+	067  Isoch Custom Force Enable
+	068  Custom Force Data Report
+	069  Custom Force Data
+	06A  Custom Force Vendor Defined Data
+	06B  Set Custom Force Report
+	06C  Custom Force Data Offset
+	06D  Sample Count
+	06E  Set Periodic Report
+	06F  Offset
+	070  Magnitude
+	071  Phase
+	072  Period
+	073  Set Constant Force Report
+	074  Set Ramp Force Report
+	075  Ramp Start
+	076  Ramp End
+	077  Effect Operation Report
+	078  Effect Operation
+	079  Op Effect Start
+	07A  Op Effect Start Solo
+	07B  Op Effect Stop
+	07C  Loop Count
+	07D  Device Gain Report
+	07E  Device Gain
+	07F  PID Pool Report
+	080  RAM Pool Size
+	081  ROM Pool Size
+	082  ROM Effect Block Count
+	083  Simultaneous Effects Max
+	084  Pool Alignment
+	085  PID Pool Move Report
+	086  Move Source
+	087  Move Destination
+	088  Move Length
+	089  PID Block Load Report
+	08B  Block Load Status
+	08C  Block Load Success
+	08D  Block Load Full
+	08E  Block Load Error
+	08F  Block Handle
+	090  PID Block Free Report
+	091  Type Specific Block Handle
+	092  PID State Report
+	094  Effect Playing
+	095  PID Device Control Report
+	096  PID Device Control
+	097  DC Enable Actuators
+	098  DC Disable Actuators
+	099  DC Stop All Effects
+	09A  DC Device Reset
+	09B  DC Device Pause
+	09C  DC Device Continue
+	09F  Device Paused
+	0A0  Actuators Enabled
+	0A4  Safety Switch
+	0A5  Actuator Override Switch
+	0A6  Actuator Power
+	0A7  Start Delay
+	0A8  Parameter Block Size
+	0A9  Device Managed Pool
+	0AA  Shared Parameter Blocks
+	0AB  Create New Effect Report
+	0AC  RAM Pool Available
+HUT 10  Unicode
+HUT 14  Alphanumeric Display
+	000  Undefined
+	001  Alphanumeric Display
+	020  Display Attributes Report
+	021  ASCII Character Set
+	022  Data Read Back
+	023  Font Read Back
+	024  Display Control Report
+	025  Clear Display
+	026  Display Enable
+	027  Screen Saver Delay
+	028  Screen Saver Enable
+	029  Vertical Scroll
+	02a  Horizontal Scroll
+	02b  Character Report
+	02c  Display Data
+	02d  Display Status
+	02e  Stat Not Ready
+	02f  Stat Ready
+	030  Err Not a loadable Character
+	031  Err Font Data Cannot Be Read
+	032  Cursur Position Report
+	033  Row
+	034  Column
+	035  Rows
+	036  Columns
+	037  Cursor Pixel Positioning
+	038  Cursor Mode
+	039  Cursor Enable
+	03a  Cursor Blink
+	03b  Font Report
+	03c  Font Data
+	03d  Character Width
+	03e  Character Height
+	03f  Character Spacing Horizontal
+	040  Character Spacing Vertical
+	041  Unicode Character Set
+HUT 80  USB Monitor
+	001  Monitor Control
+	002  EDID Information
+	003  VDIF Information
+	004  VESA Version
+HUT 81  USB Monitor Enumerated Values
+HUT 82  Monitor VESA Virtual Controls
+	001  Degauss
+	010  Brightness
+	012  Contrast
+	016  Red Video Gain
+	018  Green Video Gain
+	01a  Blue Video Gain
+	01c  Focus
+	020  Horizontal Position
+	022  Horizontal Size
+	024  Horizontal Pincushion
+	026  Horizontal Pincushion Balance
+	028  Horizontal Misconvergence
+	02a  Horizontal Linearity
+	02c  Horizontal Linearity Balance
+	030  Vertical Position
+	032  Vertical Size
+	034  Vertical Pincushion
+	036  Vertical Pincushion Balance
+	038  Vertical Misconvergence
+	03a  Vertical Linearity
+	03c  Vertical Linearity Balance
+	040  Parallelogram Balance (Key Distortion)
+	042  Trapezoidal Distortion (Key)
+	044  Tilt (Rotation)
+	046  Top Corner Distortion Control
+	048  Top Corner Distortion Balance
+	04a  Bottom Corner Distortion Control
+	04c  Bottom Corner Distortion Balance
+	056  Horizontal Moire
+	058  Vertical Moire
+	05e  Input Level Select
+	060  Input Source Select
+	06c  Red Video Black Level
+	06e  Green Video Black Level
+	070  Blue Video Black Level
+	0a2  Auto Size Center
+	0a4  Polarity Horizontal Sychronization
+	0a6  Polarity Vertical Synchronization
+	0aa  Screen Orientation
+	0ac  Horizontal Frequency in Hz
+	0ae  Vertical Frequency in 0.1 Hz
+	0b0  Settings
+	0ca  On Screen Display (OSD)
+	0d4  Stereo Mode
+HUT 84  Power Device Page
+	000  Undefined
+	001  iName
+	002  Present Status
+	003  Changed Status
+	004  UPS
+	005  Power Supply
+	010  Battery System
+	011  Battery System ID
+	012  Battery
+	013  Battery ID
+	014  Charger
+	015  Charger ID
+	016  Power Converter
+	017  Power Converter ID
+	018  Outlet System
+	019  Outlet System ID
+	01a  Input
+	01b  Input ID
+	01c  Output
+	01d  Output ID
+	01e  Flow
+	01f  Flow ID
+	020  Outlet
+	021  Outlet ID
+	022  Gang
+	023  Gang ID
+	024  Power Summary
+	025  Power Summary ID
+	030  Voltage
+	031  Current
+	032  Frequency
+	033  Apparent Power
+	034  Active Power
+	035  Percent Load
+	036  Temperature
+	037  Humidity
+	038  Bad Count
+	040  Config Voltage
+	041  Config Current
+	042  Config Frequency
+	043  Config Apparent Power
+	044  Config Active Power
+	045  Config Percent Load
+	046  Config Temperature
+	047  Config Humidity
+	050  Switch On Control
+	051  Switch Off Control
+	052  Toggle Control
+	053  Low Voltage Transfer
+	054  High Voltage Transfer
+	055  Delay Before Reboot
+	056  Delay Before Startup
+	057  Delay Before Shutdown
+	058  Test
+	059  Module Reset
+	05a  Audible Alarm Control
+	060  Present
+	061  Good
+	062  Internal Failure
+	063  Voltage out of range
+	064  Frequency out of range
+	065  Overload
+	066  Over Charged
+	067  Over Temperature
+	068  Shutdown Requested
+	069  Shutdown  Imminent
+	06a  Reserved
+	06b  Switch On/Off
+	06c  Switchable
+	06d  Used
+	06e  Boost
+	06f  Buck
+	070  Initialized
+	071  Tested
+	072  Awaiting Power
+	073  Communication Lost
+	0fd  iManufacturer
+	0fe  iProduct
+	0ff  iSerialNumber
+HUT 85  Battery System Page
+	000  Undefined
+	001  SMB Battery Mode
+	002  SMB Battery Status
+	003  SMB Alarm Warning
+	004  SMB Charger Mode
+	005  SMB Charger Status
+	006  SMB Charger Spec Info
+	007  SMB Selector State
+	008  SMB Selector Presets
+	009  SMB Selector Info
+	010  Optional Mfg. Function 1
+	011  Optional Mfg. Function 2
+	012  Optional Mfg. Function 3
+	013  Optional Mfg. Function 4
+	014  Optional Mfg. Function 5
+	015  Connection to SMBus
+	016  Output Connection
+	017  Charger Connection
+	018  Battery Insertion
+	019  Use Next
+	01a  OK to use
+	01b  Battery  Supported
+	01c  SelectorRevision
+	01d  Charging Indicator
+	028  Manufacturer Access
+	029  Remaining Capacity Limit
+	02a  Remaining Time Limit
+	02b  At Rate
+	02c  Capacity Mode
+	02d  Broadcast To Charger
+	02e  Primary Battery
+	02f  Charge Controller
+	040  Terminate Charge
+	041  Terminate Discharge
+	042  Below Remaining Capacity Limit
+	043  Remaining Time Limit Expired
+	044  Charging
+	045  Discharging
+	046  Fully Charged
+	047  Fully Discharged
+	048  Conditioning Flag
+	049  At Rate OK
+	04a  SMB Error Code
+	04b  Need Replacement
+	060  At Rate Time To Full
+	061  At Rate Time To Empty
+	062  Average Current
+	063  Max Error
+	064  Relative State Of Charge
+	065  Absolute State Of Charge
+	066  Remaining Capacity
+	067  Full Charge Capacity
+	068  Run Time To Empty
+	069  Average Time To Empty
+	06a  Average Time To Full
+	06b  Cycle Count
+	080  Batt. Pack Model Level
+	081  Internal Charge Controller
+	082  Primary Battery Support
+	083  Design Capacity
+	084  Specification Info
+	085  Manufacturer Date
+	086  Serial Number
+	087  iManufacturerName
+	088  iDeviceName
+	089  iDeviceChemistry
+	08a  Manufacturer Data
+	08b  Rechargeable
+	08c  Warning Capacity Limit
+	08d  Capacity Granularity 1
+	08e  Capacity Granularity 2
+	08f  iOEMInformation
+	0c0  Inhibit Charge
+	0c1  Enable Polling
+	0c2  Reset To Zero
+	0d0  AC Present
+	0d1  Battery Present
+	0d2  Power Fail
+	0d3  Alarm Inhibited
+	0d4  Thermistor Under Range
+	0d5  Thermistor Hot
+	0d6  Thermistor Cold
+	0d7  Thermistor Over Range
+	0d8  Voltage Out Of Range
+	0d9  Current Out Of Range
+	0da  Current Not Regulated
+	0db  Voltage Not Regulated
+	0dc  Master Mode
+	0f0  Charger Selector Support
+	0f1  Charger Spec
+	0f2  Level 2
+	0f3  Level 3
+HUT 86  Power Pages
+HUT 87  Power Pages
+HUT 8c  Bar Code Scanner Page (POS)
+HUT 8d  Scale Page (POS)
+HUT 90  Camera Control Page
+HUT 91  Arcade Control Page
+HUT f0  Cash Device
+	0f1  Cash Drawer
+	0f2  Cash Drawer Number
+	0f3  Cash Drawer Set
+	0f4  Cash Drawer Status
+HUT ff  Vendor Specific
+
+# List of Languages
+
+# Syntax:
+# L language_id  language_name
+#	dialect_id  dialect_name
+
+L 0001  Arabic
+	01  Saudi Arabia
+	02  Iraq
+	03  Egypt
+	04  Libya
+	05  Algeria
+	06  Morocco
+	07  Tunesia
+	08  Oman
+	09  Yemen
+	0a  Syria
+	0b  Jordan
+	0c  Lebanon
+	0d  Kuwait
+	0e  U.A.E
+	0f  Bahrain
+	10  Qatar
+L 0002  Bulgarian
+L 0003  Catalan
+L 0004  Chinese
+	01  Traditional
+	02  Simplified
+	03  Hongkong SAR, PRC
+	04  Singapore
+	05  Macau SAR
+L 0005  Czech
+L 0006  Danish
+L 0007  German
+	01  German
+	02  Swiss
+	03  Austrian
+	04  Luxembourg
+	05  Liechtenstein
+L 0008  Greek
+L 0009  English
+	01  US
+	02  UK
+	03  Australian
+	04  Canadian
+	05  New Zealand
+	06  Ireland
+	07  South Africa
+	08  Jamaica
+	09  Carribean
+	0a  Belize
+	0b  Trinidad
+	0c  Zimbabwe
+	0d  Philippines
+L 000a  Spanish
+	01  Castilian
+	02  Mexican
+	03  Modern
+	04  Guatemala
+	05  Costa Rica
+	06  Panama
+	07  Dominican Republic
+	08  Venzuela
+	09  Colombia
+	0a  Peru
+	0b  Argentina
+	0c  Ecuador
+	0d  Chile
+	0e  Uruguay
+	0f  Paraguay
+	10  Bolivia
+	11  El Salvador
+	12  Honduras
+	13  Nicaragua
+	14  Puerto Rico
+L 000b  Finnish
+L 000c  French
+	01  French
+	02  Belgian
+	03  Canadian
+	04  Swiss
+	05  Luxembourg
+	06  Monaco
+L 000d  Hebrew
+L 000e  Hungarian
+L 000f  Idelandic
+L 0010  Italian
+	01  Italian
+	02  Swiss
+L 0011  Japanese
+L 0012  Korean
+	01  Korean
+L 0013  Dutch
+	01  Dutch
+	02  Belgian
+L 0014  Norwegian
+	01  Bokmal
+	02  Nynorsk
+L 0015  Polish
+L 0016  Portuguese
+	01  Portuguese
+	02  Brazilian
+L 0017  forgotten
+L 0018  Romanian
+L 0019  Russian
+L 001a  Serbian
+	01  Croatian
+	02  Latin
+	03  Cyrillic
+L 001b  Slovak
+L 001c  Albanian
+L 001d  Swedish
+	01  Swedish
+	02  Finland
+L 001e  Thai
+L 001f  Turkish
+L 0020  Urdu
+	01  Pakistan
+	02  India
+L 0021  Indonesian
+L 0022  Ukrainian
+L 0023  Belarusian
+L 0024  Slovenian
+L 0025  Estonian
+L 0026  Latvian
+L 0027  Lithuanian
+	01  Lithuanian
+L 0028  forgotten
+L 0029  Farsi
+L 002a  Vietnamese
+L 002b  Armenian
+L 002c  Azeri
+	01  Cyrillic
+	02  Latin
+L 002d  Basque
+L 002e  forgotten
+L 002f  Macedonian
+L 0036  Afrikaans
+L 0037  Georgian
+L 0038  Faeroese
+L 0039  Hindi
+L 003e  Malay
+	01  Malaysia
+	02  Brunei Darassalam
+L 003f  Kazak
+L 0041  Awahili
+L 0043  Uzbek
+	01  Latin
+	02  Cyrillic
+L 0044  Tatar
+L 0045  Bengali
+L 0046  Punjabi
+L 0047  Gujarati
+L 0048  Oriya
+L 0049  Tamil
+L 004a  Telugu
+L 004b  Kannada
+L 004c  Malayalam
+L 004d  Assamese
+L 004e  Marathi
+L 004f  Sanskrit
+L 0057  Konkani
+L 0058  Manipuri
+L 0059  Sindhi
+L 0060  Kashmiri
+	02  India
+L 0061  Nepali
+	02  India
+
+# HID Descriptor bCountryCode
+# HID Specification 1.11 (2001-06-27) page 23
+#
+# Syntax:
+# HCC country_code keymap_type
+
+HCC 00  Not supported
+HCC 01  Arabic
+HCC 02  Belgian
+HCC 03  Canadian-Bilingual
+HCC 04  Canadian-French
+HCC 05  Czech Republic
+HCC 06  Danish
+HCC 07  Finnish
+HCC 08  French
+HCC 09  German
+HCC 10  Greek
+HCC 11  Hebrew
+HCC 12  Hungary
+HCC 13  International (ISO)
+HCC 14  Italian
+HCC 15  Japan (Katakana)
+HCC 16  Korean
+HCC 17  Latin American
+HCC 18  Netherlands/Dutch
+HCC 19  Norwegian
+HCC 20  Persian (Farsi)
+HCC 21  Poland
+HCC 22  Portuguese
+HCC 23  Russia
+HCC 24  Slovakia
+HCC 25  Spanish
+HCC 26  Swedish
+HCC 27  Swiss/French
+HCC 28  Swiss/German
+HCC 29  Switzerland
+HCC 30  Taiwan
+HCC 31  Turkish-Q
+HCC 32  UK
+HCC 33  US
+HCC 34  Yugoslavia
+HCC 35  Turkish-F
+
+# List of Video Class Terminal Types
+
+# Syntax:
+# VT terminal_type  terminal_type_name
+
+VT 0100  USB Vendor Specific
+VT 0101  USB Streaming
+VT 0200  Input Vendor Specific
+VT 0201  Camera Sensor
+VT 0202  Sequential Media
+VT 0300  Output Vendor Specific
+VT 0301  Generic Display
+VT 0302  Sequential Media
+VT 0400  External Vendor Specific
+VT 0401  Composite Video
+VT 0402  S-Video
+VT 0403  Component Video
diff --git a/rules/usbutils.in b/rules/usbutils.in
index f259f9c4e..b92be8b39 100644
--- a/rules/usbutils.in
+++ b/rules/usbutils.in
@@ -2,6 +2,8 @@
 
 menuconfig USBUTILS
 	select LIBUSB
+	select UDEV
+	select UDEV_LIBUDEV
 	tristate
 	prompt "usbutils                      "
 	help
diff --git a/rules/usbutils.make b/rules/usbutils.make
index 80af5a2bb..61c552d7c 100644
--- a/rules/usbutils.make
+++ b/rules/usbutils.make
@@ -15,8 +15,8 @@ PACKAGES-$(PTXCONF_USBUTILS) += usbutils
 #
 # Paths and names
 #
-USBUTILS_VERSION	:= 007
-USBUTILS_MD5		:= c9df5107ae9d26b10a1736a261250139
+USBUTILS_VERSION	:= 014
+USBUTILS_MD5		:= f21aa68ee7870b161921a590be7765e6
 USBUTILS		:= usbutils-$(USBUTILS_VERSION)
 USBUTILS_SUFFIX		:= tar.xz
 USBUTILS_URL		:= $(call ptx/mirror, KERNEL, utils/usb/usbutils/$(USBUTILS).$(USBUTILS_SUFFIX))
@@ -36,9 +36,7 @@ USBUTILS_ENV 	:= $(CROSS_ENV)
 #
 USBUTILS_AUTOCONF := \
 	$(CROSS_AUTOCONF_USR) \
-	$(GLOBAL_LARGE_FILE_OPTION) \
-	--disable-zlib \
-	--enable-usbids
+	$(GLOBAL_LARGE_FILE_OPTION)
 
 # ----------------------------------------------------------------------------
 # Target-Install
@@ -62,7 +60,7 @@ endif
 ifdef PTXCONF_USBUTILS_USBDEVICES
 	@$(call install_copy, usbutils, 0, 0, 0755, -, /usr/bin/usb-devices)
 endif
-	@$(call install_copy, usbutils, 0, 0, 0644, -, /usr/share/usb.ids,n)
+	@$(call install_alternative, usbutils, 0, 0, 0644, /usr/share/usb.ids,n)
 
 	@$(call install_finish, usbutils)
 
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] util-linux-ng: Version bump 2.37 -> 2.37.2
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (19 preceding siblings ...)
  2021-12-22 13:03 ` [ptxdist] [WIP: PATCH] usbutils: Version bump 007 -> 014 Christian Melki
@ 2021-12-22 13:03 ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2021-12-22 13:03 ` [ptxdist] [PATCH] zstd: Version bump 1.5.0 -> 1.5.1 Christian Melki
  2022-01-05 13:00 ` [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Michael Olbrich
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:03 UTC (permalink / raw)
  To: ptxdist

Maintenance release.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/util-linux-ng.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/util-linux-ng.make b/rules/util-linux-ng.make
index f0402b44e..25e4c8768 100644
--- a/rules/util-linux-ng.make
+++ b/rules/util-linux-ng.make
@@ -15,8 +15,8 @@ PACKAGES-$(PTXCONF_UTIL_LINUX_NG) += util-linux-ng
 #
 # Paths and names
 #
-UTIL_LINUX_NG_VERSION	:= 2.37
-UTIL_LINUX_NG_MD5	:= 75eb0a648098332d4042f1646eca4069
+UTIL_LINUX_NG_VERSION	:= 2.37.2
+UTIL_LINUX_NG_MD5	:= d659bf7cd417d93dc609872f6334b019
 UTIL_LINUX_NG		:= util-linux-$(UTIL_LINUX_NG_VERSION)
 UTIL_LINUX_NG_SUFFIX	:= tar.xz
 UTIL_LINUX_NG_BASENAME	:= v$(if $(filter 2,$(basename $(UTIL_LINUX_NG_VERSION))),$(UTIL_LINUX_NG_VERSION),$(basename $(UTIL_LINUX_NG_VERSION)))
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* [ptxdist] [PATCH] zstd: Version bump 1.5.0 -> 1.5.1
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (20 preceding siblings ...)
  2021-12-22 13:03 ` [ptxdist] [PATCH] util-linux-ng: Version bump 2.37 -> 2.37.2 Christian Melki
@ 2021-12-22 13:03 ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  2022-01-05 13:00 ` [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Michael Olbrich
  22 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2021-12-22 13:03 UTC (permalink / raw)
  To: ptxdist

Maintenance release, minor speedup.

Signed-off-by: Christian Melki <christian.melki@t2data.com>
---
 rules/zstd.make | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rules/zstd.make b/rules/zstd.make
index 0e3ff9c00..da2cf75a3 100644
--- a/rules/zstd.make
+++ b/rules/zstd.make
@@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_ZSTD) += zstd
 #
 # Paths and names
 #
-ZSTD_VERSION	:= 1.5.0
-ZSTD_MD5	:= d5ac89d5df9e81243ce40d0c6a66691d
+ZSTD_VERSION	:= 1.5.1
+ZSTD_MD5	:= 120d77140ad538e8bd3a7dae6a38c4c9
 ZSTD		:= zstd-$(ZSTD_VERSION)
 ZSTD_SUFFIX	:= tar.gz
 ZSTD_URL	:= https://github.com/facebook/zstd/archive/v$(ZSTD_VERSION).$(ZSTD_SUFFIX)
-- 
2.30.2


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [PATCH] host-libcap: BUILD_GPERF is reserved.
  2021-12-22 13:02 ` [ptxdist] [PATCH] host-libcap: BUILD_GPERF is reserved Christian Melki
@ 2022-01-05 12:18   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-05 12:18 UTC (permalink / raw)
  To: Christian Melki; +Cc: ptxdist

On Wed, Dec 22, 2021 at 02:02:48PM +0100, Christian Melki wrote:
> Use USE_GPERF instead.

Can you elaborate, why this is needed? With BUILD_GPERF=no we explicitly
overwrite the check in the makefile. But I cannot find USE_GPERF anywhere
in libcap. How should this work?

Michael

> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> ---
>  rules/host-libcap.make | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/rules/host-libcap.make b/rules/host-libcap.make
> index 2faae99c3..695ce6c44 100644
> --- a/rules/host-libcap.make
> +++ b/rules/host-libcap.make
> @@ -19,7 +19,7 @@ HOST_PACKAGES-$(PTXCONF_HOST_LIBCAP) += host-libcap
>  HOST_LIBCAP_MAKE_OPT := \
>  	prefix= \
>  	lib=lib \
> -	BUILD_GPERF=no \
> +	USE_GPERF=no \
>  	PAM_CAP=no \
>  	GOLANG=no \
>  	LIBATTR=no \
> -- 
> 2.30.2
> 
> 
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
> To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [PATCH] libcap: Version bump 2.51 -> 2.62.
  2021-12-22 13:02 ` [ptxdist] [PATCH] libcap: Version bump 2.51 -> 2.62 Christian Melki
@ 2022-01-05 12:21   ` Michael Olbrich
  2022-01-05 12:32     ` Christian Melki
  0 siblings, 1 reply; 54+ messages in thread
From: Michael Olbrich @ 2022-01-05 12:21 UTC (permalink / raw)
  To: Christian Melki; +Cc: ptxdist

On Wed, Dec 22, 2021 at 02:02:52PM +0100, Christian Melki wrote:
> Update posix capability library.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> ---
>  rules/libcap.make | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/rules/libcap.make b/rules/libcap.make
> index 5ed11b1f3..3159f7b01 100644
> --- a/rules/libcap.make
> +++ b/rules/libcap.make
> @@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_LIBCAP) += libcap
>  #
>  # Paths and names
>  #
> -LIBCAP_VERSION	:= 2.51
> -LIBCAP_MD5	:= 4c9febc1bf0afca6a4d9f86fcdb6d900
> +LIBCAP_VERSION	:= 2.62
> +LIBCAP_MD5	:= 342c7560ed2103899f6914d1de75a89f
>  LIBCAP		:= libcap-$(LIBCAP_VERSION)
>  LIBCAP_SUFFIX	:= tar.xz
>  LIBCAP_URL	:= \
> @@ -35,6 +35,7 @@ LIBCAP_MAKE_OPT	:= \
>  	BUILD_CC=$(HOSTCC) \
>  	DYNAMIC=yes \
>  	GOLANG=no \
> +	USE_GPERF=no \

Ah, maybe the USE_GPERF is from the new version? (See my question about
host-libcap).

For the target package, we select HOST_GPERF, so it should be used here.
If I remember this correctly then libcap performs better at runtime if
gperf is available at build-time. So we want it for the target package, but
we don't care about the host package.

Michael

>  	LIBATTR=$(call ptx/yesno, PTXCONF_LIBCAP_SETCAP) \
>  	PAM_CAP=$(call ptx/yesno, PTXCONF_GLOBAL_PAM)
>  
> -- 
> 2.30.2
> 
> 
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
> To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [PATCH] libcap: Version bump 2.51 -> 2.62.
  2022-01-05 12:21   ` Michael Olbrich
@ 2022-01-05 12:32     ` Christian Melki
  2022-01-05 12:46       ` Michael Olbrich
  0 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2022-01-05 12:32 UTC (permalink / raw)
  To: m.olbrich; +Cc: ptxdist

https://git.kernel.org/pub/scm/libs/libcap/libcap.git/tree/Make.Rules?h=v1.2.62&id=cc91f55960ce81e7cc24ef0bf729bdf02e2f60e1#n100

Maybe I misunderstood the rationale behind it.
Anyway, that comment led to the change for the new version.

Regards,
Christian

On 1/5/22 1:21 PM, Michael Olbrich wrote:
> On Wed, Dec 22, 2021 at 02:02:52PM +0100, Christian Melki wrote:
>> Update posix capability library.
>>
>> Signed-off-by: Christian Melki <christian.melki@t2data.com>
>> ---
>>   rules/libcap.make | 5 +++--
>>   1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/rules/libcap.make b/rules/libcap.make
>> index 5ed11b1f3..3159f7b01 100644
>> --- a/rules/libcap.make
>> +++ b/rules/libcap.make
>> @@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_LIBCAP) += libcap
>>   #
>>   # Paths and names
>>   #
>> -LIBCAP_VERSION	:= 2.51
>> -LIBCAP_MD5	:= 4c9febc1bf0afca6a4d9f86fcdb6d900
>> +LIBCAP_VERSION	:= 2.62
>> +LIBCAP_MD5	:= 342c7560ed2103899f6914d1de75a89f
>>   LIBCAP		:= libcap-$(LIBCAP_VERSION)
>>   LIBCAP_SUFFIX	:= tar.xz
>>   LIBCAP_URL	:= \
>> @@ -35,6 +35,7 @@ LIBCAP_MAKE_OPT	:= \
>>   	BUILD_CC=$(HOSTCC) \
>>   	DYNAMIC=yes \
>>   	GOLANG=no \
>> +	USE_GPERF=no \
> 
> Ah, maybe the USE_GPERF is from the new version? (See my question about
> host-libcap).
> 
> For the target package, we select HOST_GPERF, so it should be used here.
> If I remember this correctly then libcap performs better at runtime if
> gperf is available at build-time. So we want it for the target package, but
> we don't care about the host package.
> 
> Michael
> 
>>   	LIBATTR=$(call ptx/yesno, PTXCONF_LIBCAP_SETCAP) \
>>   	PAM_CAP=$(call ptx/yesno, PTXCONF_GLOBAL_PAM)
>>   
>> -- 
>> 2.30.2
>>
>>
>> _______________________________________________
>> ptxdist mailing list
>> ptxdist@pengutronix.de
>> To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
>>
> 

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [WIP: PATCH] usbutils: Version bump 007 -> 014.
  2021-12-22 13:03 ` [ptxdist] [WIP: PATCH] usbutils: Version bump 007 -> 014 Christian Melki
@ 2022-01-05 12:38   ` Michael Olbrich
  2022-01-06 21:52     ` Christian Melki
  0 siblings, 1 reply; 54+ messages in thread
From: Michael Olbrich @ 2022-01-05 12:38 UTC (permalink / raw)
  To: Christian Melki; +Cc: ptxdist

On Wed, Dec 22, 2021 at 02:03:02PM +0100, Christian Melki wrote:
> Usbutils depends on libudev, add it.
> Clear out some old configure options.
> Also, usb.ids are not supplied anymore.
> It is expected the user provides it.

I think, the idea is to use hwdb instead. I've waited with this update for
some time because I wanted to avoid the systemd dependency. But now we have
a systemd-hwdb package.
We should probably just depend on that instead of keeping our own version
of usb.ids.

Michael

> Ptxdist can download it, but then it's an unversioned
> ball from nightly updates.
> 
> An alternative would be to provide a static one
> in projectroot that's manually updated.
> That way you'd know what was installed.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> ---
>  projectroot/usr/share/usb.ids | 25203 ++++++++++++++++++++++++++++++++
>  rules/usbutils.in             |     2 +
>  rules/usbutils.make           |    10 +-
>  3 files changed, 25209 insertions(+), 6 deletions(-)
>  create mode 100644 projectroot/usr/share/usb.ids
> 
> diff --git a/projectroot/usr/share/usb.ids b/projectroot/usr/share/usb.ids
> new file mode 100644
> index 000000000..1b9f9f82b
> --- /dev/null
> +++ b/projectroot/usr/share/usb.ids
> @@ -0,0 +1,25203 @@
> +#
> +#	List of USB ID's
> +#
> +#	Maintained by Stephen J. Gowdy <linux.usb.ids@gmail.com>
> +#	If you have any new entries, please submit them via
> +#		http://www.linux-usb.org/usb-ids.html
> +#	or send entries as patches (diff -u old new) in the
> +#	body of your email (a bot will attempt to deal with it).
> +#	The latest version can be obtained from
> +#		http://www.linux-usb.org/usb.ids
> +#
> +# Version: 2021.10.24
> +# Date:    2021-10-24 20:34:08
> +#
> +
> +# Vendors, devices and interfaces. Please keep sorted.
> +
> +# Syntax:
> +# vendor  vendor_name
> +#	device  device_name				<-- single tab
> +#		interface  interface_name		<-- two tabs
> +
> +0001  Fry's Electronics
> +	7778  Counterfeit flash drive [Kingston]
> +0002  Ingram
> +	0002  passport00
> +0003  Club Mac
> +0004  Nebraska Furniture Mart
> +0011  Unknown
> +	7788  counterfeit flash drive
> +0053  Planex
> +	5301  GW-US54ZGL 802.11bg
> +0078  Microntek
> +	0006  Joystick
> +0079  DragonRise Inc.
> +	0006  PC TWIN SHOCK Gamepad
> +	0011  Gamepad
> +	1800  Mayflash Wii U Pro Game Controller Adapter [DirectInput]
> +	181b  Venom Arcade Joystick
> +	1843  Mayflash GameCube Controller Adapter
> +	1844  Mayflash GameCube Controller
> +0080  Unknown
> +	a001  JMS578 based SATA bridge
> +0085  Boeye Technology Co., Ltd.
> +	0600  eBook Reader
> +0102  miniSTREAK
> +0105  Trust International B.V.
> +	145f  NW-3100 802.11b/g 54Mbps Wireless Network Adapter [zd1211]
> +0127  IBP
> +	0002  HDM Interface
> +	0127  ibp
> +0145  Unknown
> +	0112  Card Reader
> +017c  MLK
> +	145f  Trust Deskset
> +0200  TP-Link
> +	0201  MA180 UMTS Modem
> +0204  Chipsbank Microelectronics Co., Ltd
> +	6025  CBM2080 / CBM2090 Flash drive controller
> +	6026  CBM1180 Flash drive controller
> +0218  Hangzhou Worlde
> +	0301  MIDI Port
> +02ad  HUMAX Co., Ltd.
> +	138c  PVR Mass Storage
> +0303  Mini Automation Controller
> +0324  OCZ Technology Inc
> +	bc06  OCZ ATV USB 2.0 Flash Drive
> +	bc08  OCZ Rally2/ATV USB 2.0 Flash Drive
> +0325  OCZ Technology Inc
> +	ac02  ATV Turbo / Rally2 Dual Channel USB 2.0 Flash Drive
> +0386  LTS
> +	0001  PSX for USB Converter
> +03c3  ZWO
> +	120e  ASI120MC-S Planetary Camera
> +03d9  Shenzhen Sinote Tech-Electron Co., Ltd
> +	0499  SE340D PC Remote Control
> +03da  Bernd Walter Computer Technology
> +	0002  HD44780 LCD interface
> +03e7  Intel
> +	2150  Myriad VPU [Movidius Neural Compute Stick]
> +	2485  Movidius MyriadX
> +	f63b  Myriad VPU [Movidius Neural Compute Stick]
> +03e8  EndPoints, Inc.
> +	0004  SE401 Webcam
> +	0008  101 Ethernet [klsi]
> +	0015  ATAPI Enclosure
> +	2123  SiPix StyleCam Deluxe
> +	8004  Aox 99001
> +03e9  Thesys Microelectronics
> +03ea  Data Broadcasting Corp.
> +03eb  Atmel Corp.
> +	0902  4-Port Hub
> +	2002  Mass Storage Device
> +	2015  at90usbkey sample firmware (HID keyboard)
> +	2018  at90usbkey sample firmware (CDC ACM)
> +	2019  stk525 sample firmware (microphone)
> +	201c  at90usbkey sample firmware (HID mouse)
> +	201d  at90usbkey sample firmware (HID generic)
> +	2022  at90usbkey sample firmware (composite device)
> +	2040  LUFA Test PID
> +	2041  LUFA Mouse Demo Application
> +	2042  LUFA Keyboard Demo Application
> +	2043  LUFA Joystick Demo Application
> +	2044  LUFA CDC Demo Application
> +	2045  LUFA Mass Storage Demo Application
> +	2046  LUFA Audio Output Demo Application
> +	2047  LUFA Audio Input Demo Application
> +	2048  LUFA MIDI Demo Application
> +	2049  Stripe Snoop Magnetic Stripe Reader
> +	204a  LUFA CDC Class Bootloader
> +	204b  LUFA USB to Serial Adapter Project
> +	204c  LUFA RNDIS Demo Application
> +	204d  LUFA Combined Mouse and Keyboard Demo Application
> +	204e  LUFA Dual CDC Demo Application
> +	204f  LUFA Generic HID Demo Application
> +	2060  Benito Programmer Project
> +	2061  LUFA Combined Mass Storage and Keyboard Demo Application
> +	2062  LUFA Combined CDC and Mouse Demo Application
> +	2063  LUFA Datalogger Device
> +	2064  Interfaceless Control-Only LUFA Devices
> +	2065  LUFA Test and Measurement Demo Application
> +	2066  LUFA Multiple Report HID Demo
> +	2067  LUFA HID Class Bootloader
> +	2068  LUFA Virtual Serial/Mass Storage Demo
> +	2069  LUFA Webserver Project
> +	2103  JTAG ICE mkII
> +	2104  AVR ISP mkII
> +	2105  AVRONE!
> +	2106  STK600 development board
> +	2107  AVR Dragon
> +	2109  STK541 ZigBee Development Board
> +	210a  AT86RF230 [RZUSBSTICK] transceiver
> +	210d  XPLAIN evaluation kit (CDC ACM)
> +	2110  AVR JTAGICE3 Debugger and Programmer
> +	2111  Xplained Pro board debugger and programmer
> +	2122  XMEGA-A1 Explained evaluation kit
> +	2140  AVR JTAGICE3 (v3.x) Debugger and Programmer
> +	2141  ICE debugger
> +	2145  ATMEGA328P-XMINI (CDC ACM)
> +	2310  EVK11xx evaluation board
> +	2404  The Micro
> +	2fe4  ATxmega32A4U DFU bootloader
> +	2fe6  Cactus V6 (DFU)
> +	2fea  Cactus RF60 (DFU)
> +	2fee  atmega8u2 DFU bootloader
> +	2fef  atmega16u2 DFU bootloader
> +	2ff0  atmega32u2 DFU bootloader
> +	2ff1  at32uc3a3 DFU bootloader
> +	2ff3  atmega16u4 DFU bootloader
> +	2ff4  atmega32u4 DFU bootloader
> +	2ff6  at32uc3b0/1 DFU bootloader
> +	2ff7  at90usb82 DFU bootloader
> +	2ff8  at32uc3a0/1 DFU bootloader
> +	2ff9  at90usb646/647 DFU bootloader
> +	2ffa  at90usb162 DFU bootloader
> +	2ffb  at90usb AVR DFU bootloader
> +	2ffd  at89c5130/c5131 DFU bootloader
> +	2fff  at89c5132/c51snd1c DFU bootloader
> +	3301  at43301 4-Port Hub
> +	3312  4-Port Hub
> +	4102  AirVast W-Buddie WN210
> +	5601  at76c510 Prism-II 802.11b Access Point
> +	5603  Cisco 7920 WiFi IP Phone
> +	6119  AT91SAM CDC Demo Application
> +	6124  at91sam SAMBA bootloader
> +	6127  AT91SAM HID Keyboard Demo Application
> +	6129  AT91SAM Mass Storage Demo Application
> +	6200  AT91SAM HID Mouse Demo Application
> +	7603  D-Link DWL-120 802.11b Wireless Adapter [Atmel at76c503a]
> +	7604  at76c503a 802.11b Adapter
> +	7605  at76c503a 802.11b Adapter
> +	7606  at76c505 802.11b Adapter
> +	7611  at76c510 rfmd2948 802.11b Access Point
> +	7613  WL-1130 USB
> +	7614  AT76c505a Wireless Adapter
> +	7615  AT76C505AMX Wireless Adapter
> +	7617  AT76C505AS Wireless Adapter
> +	7800  Mini Album
> +	800c  Airspy HF+
> +	ff01  WootingOne
> +	ff02  WootingTwo
> +	ff07  Tux Droid fish dongle
> +03ec  Iwatsu America, Inc.
> +03ed  Mitel Corp.
> +03ee  Mitsumi
> +	0000  CD-R/RW Drive
> +	2501  eHome Infrared Receiver
> +	2502  eHome Infrared Receiver
> +	5609  Japanese Keyboard
> +	641f  WIF-0402C Bluetooth Adapter
> +	6438  Bluetooth Device
> +	6440  WML-C52APR Bluetooth Adapter
> +	6901  SmartDisk FDD
> +	6902  Floppy Disk Drive
> +	7500  CD-R/RW
> +	ffff  Dongle with BlueCore in DFU mode
> +03f0  HP, Inc
> +	0004  DeskJet 895c
> +	0011  OfficeJet G55
> +	0012  DeskJet 1125C Printer Port
> +	0024  KU-0316 Keyboard
> +	002a  LaserJet P1102
> +	0053  DeskJet 2620 All-in-One Printer
> +	0101  ScanJet 4100c
> +	0102  PhotoSmart S20
> +	0104  DeskJet 880c/970c
> +	0105  ScanJet 4200c
> +	0107  CD-Writer Plus
> +	010c  Multimedia Keyboard Hub
> +	0111  G55xi Printer/Scanner/Copier
> +	0117  LaserJet 3200
> +	011c  hn210w 802.11b Adapter
> +	011d  Bluetooth 1.2 Interface [Broadcom BCM2035]
> +	0121  HP 39g+ [F2224A], 39gs [F2223A], 40gs [F2225A], 48gII [F2226A], 49g+ [F2228A], 50g [F2229A, NW240AA]
> +	0122  HID Internet Keyboard
> +	0125  DAT72 Tape
> +	0139  Barcode Scanner 4430
> +	0201  ScanJet 6200c
> +	0202  PhotoSmart S20
> +	0204  DeskJet 815c
> +	0205  ScanJet 3300c
> +	0207  CD-Writer Plus 8200e
> +	020c  Multimedia Keyboard
> +	0211  OfficeJet G85
> +	0212  DeskJet 1220C
> +	0217  LaserJet 2200
> +	0218  APOLLO P2500/2600
> +	0221  StreamSmart 400 [F2235AA]
> +	0223  Digital Drive Flash Reader
> +	022a  Laserjet CP1525nw
> +	0241  Link-5 micro dongle
> +	0304  DeskJet 810c/812c
> +	0305  ScanJet 4300c
> +	0307  CD-Writer+ CD-4e
> +	0311  OfficeJet G85xi
> +	0312  Color Inkjet CP1700
> +	0314  designjet 30/130 series
> +	0317  LaserJet 1200
> +	0324  SK-2885 keyboard
> +	034a  Elite Keyboard
> +	0401  ScanJet 5200c
> +	0404  DeskJet 830c/832c
> +	0405  ScanJet 3400cse
> +	0411  OfficeJet G95
> +	0412  Printing Support
> +	0417  LaserJet 1200 series
> +	0423  HS-COMBO Cardreader
> +	042a  LaserJet M1132 MFP
> +	0441  Prime [NW280AA, G8X92AA]
> +	0504  DeskJet 885c
> +	0505  ScanJet 2100c
> +	0507  DVD+RW
> +	050c  5219 Wireless Keyboard
> +	0511  OfficeJet K60
> +	0512  DeckJet 450
> +	0517  LaserJet 1000
> +	051d  Bluetooth Interface
> +	052a  LaserJet M1212nf MFP
> +	0601  ScanJet 6300c
> +	0604  DeskJet 840c
> +	0605  ScanJet 2200c
> +	0610  Z24i Monitor Hub
> +	0611  OfficeJet K60xi
> +	0612  business inkjet 3000
> +	0624  Bluetooth Dongle
> +	0641  X1200 Optical Mouse
> +	0701  ScanJet 5300c/5370c
> +	0704  DeskJet 825c
> +	0705  ScanJet 4400c
> +	070c  Personal Media Drive
> +	0711  OfficeJet K80
> +	0712  DeskJet 1180c
> +	0714  Printing Support
> +	0741  Prime Wireless Kit [FOK65AA]
> +	0801  ScanJet 7400c
> +	0804  DeskJet 816c
> +	0805  HP4470C
> +	0811  OfficeJet K80xi
> +	0817  LaserJet 3300
> +	0901  ScanJet 2300c
> +	0904  DeskJet 845c
> +	0912  Printing Support
> +	0917  LaserJet 3330
> +	0924  Modular Smartcard Keyboard
> +	0941  X500 Optical Mouse
> +	094a  Optical Mouse [672662-001]
> +	0a01  ScanJet 2400c
> +	0a17  color LaserJet 3700
> +	0b01  ScanJet 82x0C
> +	0b0c  Wireless Keyboard and Optical Mouse receiver
> +	0b17  LaserJet 2300d
> +	0c17  LaserJet 1010
> +	0c24  Bluetooth Dongle
> +	0d12  OfficeJet 9100 series
> +	0d17  LaserJet 1012
> +	0d4a  SK-2025 Keyboard
> +	0e17  LaserJet 1015
> +	0f0c  Wireless Keyboard and Optical Mouse receiver
> +	0f11  OfficeJet V40
> +	0f12  Printing Support
> +	0f17  LaserJet 1150
> +	0f2a  LaserJet 400 color M451dn
> +	1001  Photo Scanner 1000
> +	1002  PhotoSmart 140 series
> +	1004  DeskJet 970c/970cse
> +	1005  ScanJet 5400c
> +	1011  OfficeJet V40xi
> +	1016  Jornada 548 / iPAQ HW6515 Pocket PC
> +	1017  LaserJet 1300
> +	1024  Smart Card Keyboard
> +	1027  Virtual keyboard and mouse
> +	102a  LaserJet Professional P 1102w
> +	1102  PhotoSmart 240 series
> +	1104  DeskJet 959c
> +	1105  ScanJet 5470c/5490c
> +	1111  OfficeJet v60
> +	1116  Jornada 568 Pocket PC
> +	1117  LaserJet 1300n
> +	1151  PSC-750xi Printer/Scanner/Copier
> +	1198  HID-compliant mouse
> +	1202  PhotoSmart 320 series
> +	1204  DeskJet 930c
> +	1205  ScanJet 4500C/5550C
> +	1211  OfficeJet v60xi
> +	1217  LaserJet 2300L
> +	1227  Virtual CD-ROM
> +	1302  PhotoSmart 370 series
> +	1305  ScanJet 4570c
> +	1311  OfficeJet V30
> +	1312  DeskJet 460
> +	1317  LaserJet 1005
> +	1327  iLO Virtual Hub
> +	134a  Optical Mouse
> +	1405  ScanJet 3670
> +	1411  PSC 750
> +	1424  f2105 Monitor Hub
> +	1502  PhotoSmart 420 series
> +	1504  DeskJet 920c
> +	150c  Mood Lighting (Microchip Technology Inc.)
> +	1511  PSC 750xi
> +	1512  Printing Support
> +	1517  color LaserJet 3500
> +	1524  Smart Card Keyboard - KR
> +	1539  Mini Magnetic Stripe Reader
> +	1541  Prime [G8X92AA]
> +	154a  Laser Mouse
> +	1602  PhotoSmart 330 series
> +	1604  DeskJet 940c
> +	1605  ScanJet 5530C PhotoSmart
> +	1611  psc 780
> +	1617  LaserJet 3015
> +	161d  Wireless Rechargeable Optical Mouse (HID)
> +	1624  Smart Card Keyboard - JP
> +	1647  Z27n G2 Monitor Hub
> +	1702  PhotoSmart 380 series
> +	1704  DeskJet 948C
> +	1705  ScanJet 5590
> +	1711  psc 780xi
> +	1712  Printing Support
> +	1717  LaserJet 3020
> +	171d  Bluetooth 2.0 Interface [Broadcom BCM2045]
> +	1801  Inkjet P-2000U
> +	1802  PhotoSmart 470 series
> +	1804  DeskJet 916C
> +	1805  ScanJet 7650
> +	1811  PSC 720
> +	1812  OfficeJet Pro K550
> +	1817  LaserJet 3030
> +	181d  Bluetooth 2.0 Interface
> +	1902  PhotoSmart A430 series
> +	1904  DeskJet 3820
> +	1911  OfficeJet V45
> +	1917  LaserJet 3380
> +	1a02  PhotoSmart A510 series
> +	1a11  OfficeJet 5100 series
> +	1a17  color LaserJet 4650
> +	1b02  PhotoSmart A610 series
> +	1b04  DeskJet 3810
> +	1b05  ScanJet 4850C/4890C
> +	1b07  Premium Starter Webcam
> +	1c02  PhotoSmart A710 series
> +	1c17  Color LaserJet 2550l
> +	1d02  PhotoSmart A310 series
> +	1d17  LaserJet 1320
> +	1d24  Barcode scanner
> +	1e02  PhotoSmart A320 Printer series
> +	1e11  PSC-950
> +	1e17  LaserJet 1160 series
> +	1f02  PhotoSmart A440 Printer series
> +	1f11  PSC 920
> +	1f12  OfficeJet Pro K5300
> +	1f17  color LaserJet 5550
> +	1f1d  un2400 Gobi Wireless Modem
> +	2001  Floppy
> +	2002  Hub
> +	2004  DeskJet 640c
> +	2005  ScanJet 3570c
> +	2012  OfficeJet Pro K5400
> +	201d  un2400 Gobi Wireless Modem (QDL mode)
> +	2039  Cashdrawer
> +	2102  PhotoSmart 7345
> +	2104  DeskJet 630c
> +	2112  OfficeJet Pro L7500
> +	211d  Sierra MC5725 [ev2210]
> +	2202  PhotoSmart 7600 series
> +	2205  ScanJet 3500c
> +	2212  OfficeJet Pro L7600
> +	2217  color LaserJet 9500 MFP
> +	222a  LaserJet Pro MFP M125nw
> +	2302  PhotoSmart 7600 series
> +	2304  DeskJet 656c
> +	2305  ScanJet 3970c
> +	2311  OfficeJet d series
> +	2312  OfficeJet Pro L7700
> +	2317  LaserJet 4350
> +	231d  Broadcom 2070 Bluetooth Combo
> +	2402  PhotoSmart 7700 series
> +	2404  Deskjet F2280 series
> +	2405  ScanJet 4070 PhotoSmart
> +	2417  LaserJet 4250
> +	241d  Gobi 2000 Wireless Modem (QDL mode)
> +	2424  LP1965 19" Monitor Hub
> +	2441  Prime G2 [2AP18AA]
> +	2502  PhotoSmart 7700 series
> +	2504  DeskJet F4200 series
> +	2505  ScanJet 3770
> +	2512  OfficeJet Pro L7300 / Compaq LA2405 series monitor
> +	2514  4-port hub
> +	2517  LaserJet 2410
> +	251d  Gobi 2000 Wireless Modem
> +	2524  LP3065 30" Monitor Hub
> +	2602  PhotoSmart A520 series
> +	2605  ScanJet 3800c
> +	2611  OfficeJet 7100 series
> +	2617  Color LaserJet 2820 series
> +	2624  Pole Display (HP522 2 x 20 Line Display)
> +	2702  PhotoSmart A620 series
> +	2704  DeskJet 915
> +	2717  Color LaserJet 2830
> +	2724  Magnetic Stripe Reader IDRA-334133-HP
> +	2805  Scanjet G2710
> +	2811  PSC-2100
> +	2817  Color LaserJet 2840
> +	2841  OMEN MINDFRAME [3XT27AA]
> +	2902  PhotoSmart A820 series
> +	2911  PSC 2200
> +	2917  LaserJet 2420
> +	2a11  PSC 2150 series
> +	2a17  LaserJet 2430
> +	2a1d  Integrated Module with Bluetooth 2.1 Wireless technology
> +	2b11  PSC 2170 series
> +	2b17  LaserJet 1020
> +	2b4a  Business Slim Keyboard
> +	2c12  Officejet J4680
> +	2c17  LaserJet 1022
> +	2c24  Logitech M-UAL-96 Mouse
> +	2d05  Scanjet 7000
> +	2d11  OfficeJet 6110
> +	2d17  Printing Support
> +	2e11  PSC 1000
> +	2e17  LaserJet 2600n
> +	2e24  LP2275w Monitor Hub
> +	2f11  PSC 1200
> +	2f17  Color LaserJet 2605dn
> +	2f24  LP2475w Monitor Hub
> +	3002  PhotoSmart P1000
> +	3004  DeskJet 980c
> +	3005  ScanJet 4670v
> +	3011  PSC 1100 series
> +	3017  Printing Support
> +	304a  Slim Keyboard
> +	3102  PhotoSmart P1100 Printer w/ Card Reader
> +	3104  DeskJet 960c
> +	3111  OfficeJet 4100 series
> +	3117  EWS 2605dtn
> +	311d  Atheros AR9285 Malbec Bluetooth Adapter
> +	312a  LaserJet Pro M701n
> +	3202  PhotoSmart 1215
> +	3207  4 GB flash drive
> +	3211  OfficeJet 4105 series
> +	3217  LaserJet 3050
> +	3302  PhotoSmart 1218
> +	3304  DeskJet 990c
> +	3307  v125w Stick
> +	3312  OfficeJet J6410
> +	3317  LaserJet 3052
> +	3402  PhotoSmart 1115
> +	3404  DeskJet 6122
> +	3417  LaserJet 3055
> +	3502  PhotoSmart 230
> +	3504  DeskJet 6127c
> +	3511  PSC 2300
> +	3517  LaserJet 3390
> +	354a  Slim Keyboard
> +	3602  PhotoSmart 1315
> +	3611  PSC 2410 PhotoSmart
> +	3612  Officejet Pro 8000 A809
> +	3617  Color LaserJet 2605
> +	3711  PSC 2500
> +	3717  EWS UPD
> +	3724  Webcam
> +	3802  PhotoSmart 100
> +	3807  c485w Flash Drive
> +	3817  LaserJet P2015 series
> +	3902  PhotoSmart 130
> +	3912  Officejet Pro 8500
> +	3917  LaserJet P2014
> +	3a02  PhotoSmart 7150
> +	3a11  OfficeJet 5500 series
> +	3a17  Printing Support
> +	3a1d  hs2340 HSPA+ mobile broadband
> +	3b02  PhotoSmart 7150~
> +	3b05  Scanjet N8460
> +	3b11  PSC 1300 series
> +	3b17  LaserJet M1005 MFP
> +	3b2a  Color LaserJet MFP M277dw
> +	3c02  PhotoSmart 7350
> +	3c05  Scanjet Professional 1000 Mobile Scanner
> +	3c11  PSC 1358
> +	3c17  EWS UPD
> +	3d02  PhotoSmart 7350~
> +	3d11  OfficeJet 4215
> +	3d17  LaserJet P1005
> +	3e02  PhotoSmart 7550
> +	3e17  LaserJet P1006
> +	3f02  PhotoSmart 7550~
> +	3f11  PSC-1315/PSC-1317
> +	3f17  Laserjet P1505
> +	4002  PhotoSmart 635/715/720/735/935/E337 (storage)
> +	4004  CP1160
> +	4102  PhotoSmart 618
> +	4105  ScanJet 4370
> +	4111  OfficeJet 7200 series
> +	4117  LaserJet 1018
> +	4202  PhotoSmart 812
> +	4205  ScanJet G3010
> +	4211  OfficeJet 7300 series
> +	4217  EWS CM1015
> +	4302  PhotoSmart 850 (ptp)
> +	4305  ScanJet G3110
> +	4311  OfficeJet 7400 series
> +	4317  Color LaserJet CM1017
> +	4402  PhotoSmart 935 (ptp)
> +	4417  EWS UPD
> +	4502  PhotoSmart 945 (PTP mode)
> +	4505  ScanJet G4010
> +	4507  External HDD
> +	4511  PhotoSmart 2600
> +	4512  E709n [Officejet 6500 Wireless]
> +	4517  EWS UPD
> +	4605  ScanJet G4050
> +	4611  PhotoSmart 2700
> +	4717  Color LaserJet CP1215
> +	4811  PSC 1600
> +	4911  PSC 2350
> +	4b11  OfficeJet 6200
> +	4c11  PSC 1500 series
> +	4c17  EWS UPD
> +	4d11  PSC 1400
> +	4d17  EWS UPD
> +	4e11  PhotoSmart 2570 series
> +	4f11  OfficeJet 5600 (USBHUB)
> +	4f17  Color LaserJet CM1312 MFP
> +	5004  DeskJet 995c
> +	5011  PhotoSmart 3100 series
> +	5017  EWS UPD
> +	5111  PhotoSmart 3200 series
> +	5211  PhotoSmart 3300 series
> +	5307  v165w Stick
> +	5311  OfficeJet 6300
> +	5312  Officejet Pro 8500A
> +	5317  Color LaserJet CP2025 series
> +	5411  OfficeJet 4300
> +	5511  DeskJet F300 series
> +	5611  PhotoSmart C3180
> +	5617  LaserJet M1120 MFP
> +	5711  PhotoSmart C4100 series
> +	5717  LaserJet M1120n MFP
> +	5811  PhotoSmart C5100 series
> +	5817  LaserJet M1319f MFP
> +	581d  lt4112 Gobi 4G Module Network Device
> +	5911  PhotoSmart C6180
> +	5912  Officejet Pro 8600
> +	5a11  PhotoSmart C7100 series
> +	5b11  OfficeJet J2100 series
> +	5b12  Officejet Pro 8100
> +	5c11  PhotoSmart C4200 Printer series
> +	5c12  OfficeJet 6700
> +	5c17  LaserJet P2055 series
> +	5d11  PhotoSmart C5200 series
> +	5e11  PhotoSmart D7400 series
> +	6004  DeskJet 5550
> +	6102  Hewlett Packard Digital Camera
> +	6104  DeskJet 5650c
> +	6117  color LaserJet 3550
> +	6202  PhotoSmart 215
> +	6204  DeskJet 5150c
> +	6217  Color LaserJet 4700
> +	6302  PhotoSmart 318/612
> +	6317  Color LaserJet 4730mfp
> +	632a  LaserJet M203-M206
> +	6402  PhotoSmart 715 (ptp)
> +	6411  PhotoSmart C8100 series
> +	6417  LaserJet 5200
> +	6502  PhotoSmart 120 (ptp)
> +	6511  PhotoSmart C7200 series
> +	6602  PhotoSmart 320
> +	6611  PhotoSmart C4380 series
> +	6617  LaserJet 5200L
> +	6702  PhotoSmart 720 (ptp)
> +	6717  Color LaserJet 3000
> +	6802  PhotoSmart 620 (ptp)
> +	6811  PhotoSmart D5300 series
> +	6817  Color LaserJet 3800
> +	6911  PhotoSmart D7200 series
> +	6917  Color LaserJet 3600
> +	6a02  PhotoSmart 735 (ptp)
> +	6a11  PhotoSmart C6200 series
> +	6a17  LaserJet 4240
> +	6b02  PhotoSmart R707 (PTP mode)
> +	6b11  Photosmart C4500 series
> +	6c11  Photosmart C4480
> +	6c17  Color LaserJet 4610
> +	6f17  Color LaserJet CP6015 series
> +	7004  DeskJet 3320c
> +	7102  PhotoSmart 635 (PTP mode)
> +	7104  DeskJet 3420c
> +	7117  CM8060 Color MFP with Edgeline Technology
> +	7202  PhotoSmart 43x (ptp)
> +	7204  DeskJet 36xx
> +	7217  LaserJet M5035 MFP
> +	7302  PhotoSmart M307 (PTP mode)
> +	7304  DeskJet 35xx
> +	7311  Photosmart Premium C309
> +	7317  LaserJet P3005
> +	7404  Printing Support
> +	7417  LaserJet M4345 MFP
> +	7504  Printing Support
> +	7517  LaserJet M3035 MFP
> +	7604  DeskJet 3940
> +	7611  DeskJet F2492 All-in-One
> +	7617  LaserJet P3004
> +	7702  PhotoSmart R817 (PTP mode)
> +	7704  DeskJet D4100
> +	7717  CM8050 Color MFP with Edgeline Technology
> +	7804  DeskJet D1360
> +	7817  Color LaserJet CP3505
> +	7917  LaserJet M5025 MFP
> +	7a02  PhotoSmart M415 (PTP mode)
> +	7a04  DeskJet D2460
> +	7a11  Photosmart B109
> +	7a17  LaserJet M3027 MFP
> +	7b02  PhotoSmart M23 (PTP mode)
> +	7b17  Color LaserJet CP4005
> +	7c17  Color LaserJet CM6040 series
> +	7d04  DeskJet F2100 Printer series
> +	7d17  Color LaserJet CM4730 MFP
> +	7e04  DeskJet F4100 Printer series
> +	8017  LaserJet P4515
> +	8104  Printing Support
> +	8117  LaserJet P4015
> +	811c  Ethernet HN210E
> +	8204  Printing Support
> +	8207  FHA-3510 2.4GHz Wireless Optical Mobile Mouse
> +	8217  LaserJet P4014
> +	8317  LaserJet M9050 MFP
> +	8404  DeskJet 6800 series
> +	8417  LaserJet M9040 MFP
> +	8504  DeskJet 6600 series
> +	8604  DeskJet 5440
> +	8607  Optical Mobile Mouse
> +	8704  DeskJet 5940
> +	8711  Deskjet 2050 J510
> +	8804  DeskJet 6980 series
> +	8904  DeskJet 6940 series
> +	8911  Deskjet 1050 J410
> +	8c07  Digital Stereo Headset
> +	8c11  Deskjet F4500 series
> +	9002  PhotoSmart M437
> +	9102  PhotoSmart M537
> +	9207  HD-4110 Webcam
> +	9302  PhotoSmart R930 series
> +	9402  PhotoSmart R837
> +	942a  LaserJet Pro M12a
> +	9502  PhotoSmart R840 series
> +	952a  LaserJet Pro M12w
> +	9602  PhotoSmart M730 series
> +	9702  PhotoSmart R740 series
> +	9802  PhotoSmart Mz60 series
> +	9902  PhotoSmart M630 series
> +	9a02  PhotoSmart E330 series
> +	9b02  PhotoSmart M540 series
> +	9b07  Portable Drive
> +	9c02  PhotoSmart M440 series
> +	a004  DeskJet 5850c
> +	a011  Deskjet 3050A
> +	a407  Wireless Optical Comfort Mouse
> +	b002  PhotoSmart 7200 series
> +	b102  PhotoSmart 7200 series
> +	b107  v255w/c310w Flash Drive
> +	b116  Webcam
> +	b202  PhotoSmart 7600 series
> +	b302  PhotoSmart 7600 series
> +	b402  PhotoSmart 7700 series
> +	b502  PhotoSmart 7700 series
> +	b602  PhotoSmart 7900 series
> +	b702  PhotoSmart 7900 series
> +	b802  PhotoSmart 7400 series
> +	b902  PhotoSmart 7800 series
> +	ba02  PhotoSmart 8100 series
> +	bb02  PhotoSmart 8400 series
> +	bc02  PhotoSmart 8700 series
> +	bc11  Photosmart 7520 series
> +	bd02  PhotoSmart Pro B9100 series
> +	bef4  NEC Picty760
> +	c002  PhotoSmart 7800 series
> +	c102  PhotoSmart 8000 series
> +	c111  Deskjet 1510
> +	c202  PhotoSmart 8200 series
> +	c211  Deskjet 2540 series
> +	c302  DeskJet D2300
> +	c402  PhotoSmart D5100 series
> +	c502  PhotoSmart D6100 series
> +	c602  PhotoSmart D7100 series
> +	c702  PhotoSmart D7300 series
> +	c802  PhotoSmart D5060 Printer
> +	d104  Bluetooth Dongle
> +	d507  39gII [NW249AA]
> +	efbe  NEC Picty900
> +	f0be  NEC Picty920
> +	f1be  NEC Picty800
> +03f1  Genoa Technology
> +03f2  Oak Technology, Inc.
> +03f3  Adaptec, Inc.
> +	0020  AWN-8020 WLAN [Intersil PRISM 2.5]
> +	0080  AVC-1100 Audio Capture
> +	0083  AVC-2200 Device
> +	0087  AVC-2210 Loader
> +	0088  AVC-2210 Device
> +	008b  AVC-2310 Loader
> +	008c  AVC-2310 Device
> +	0094  eHome Infrared Receiver
> +	009b  AVC-1410 GameBridge TV NTSC
> +	2000  USBXchange
> +	2001  USBXchange Adapter
> +	2002  USB2-Xchange
> +	2003  USB2-Xchange Adapter
> +	4000  4-port hub
> +	adcc  Composite Device Support
> +03f4  Diebold, Inc.
> +03f5  Siemens Electromechanical
> +03f8  Epson Imaging Technology Center
> +03f9  KeyTronic Corp.
> +	0100  KT-2001 Keyboard
> +	0101  Keyboard
> +	0102  Keyboard Mouse
> +03fb  OPTi, Inc.
> +03fc  Elitegroup Computer Systems
> +03fd  Xilinx, Inc.
> +	0008  Platform Cable USB II
> +	0050  dfu downloader
> +03fe  Farallon Comunications
> +0400  National Semiconductor Corp.
> +	05dc  Rigol Technologies DS1000USB Oscilloscope
> +	0807  Bluetooth Dongle
> +	080a  Bluetooth Device
> +	09c4  Rigol Technologies DG1022 Arbitrary Waveform Generator
> +	1000  Mustek BearPaw 1200 Scanner
> +	1001  Mustek BearPaw 2400 Scanner
> +	1237  Hub
> +	a000  Smart Display Reference Device
> +	c359  Logitech Harmony
> +	c35b  Printing Support
> +	c55d  Rigol Technologies DS5000USB Oscilloscope
> +0401  National Registry, Inc.
> +0402  ALi Corp.
> +	5462  M5462 IDE Controller
> +	5602  M5602 Video Camera Controller
> +	5603  M5603 Video Camera Controller
> +	5606  M5606 Video Camera Controller [UVC]
> +	5621  M5621 High-Speed IDE Controller
> +	5623  M5623 Scanner Controller
> +	5627  Welland ME-740PS USB2 3.5" Power Saving Enclosure
> +	5632  M5632 Host-to-Host Link
> +	5635  M5635 Flash Card Reader
> +	5636  USB 2.0 Storage Device
> +	5637  M5637 IDE Controller
> +	5642  Storage Device
> +	5661  M5661 MP3 player
> +	5667  M5667 MP3 player
> +	8841  Newmine Camera
> +	9665  Gateway Webcam
> +0403  Future Technology Devices International, Ltd
> +	0000  H4SMK 7 Port Hub / Bricked Counterfeit FT232 Serial (UART) IC
> +	0232  Serial Converter
> +	1060  JTAG adapter
> +	1234  IronLogic RFID Adapter [Z-2 USB]
> +	1235  Iron Logic Z-397 RS-485/422 converter
> +	6001  FT232 Serial (UART) IC
> +	6002  Lumel PD12
> +	6007  Serial Converter
> +	6008  Serial Converter
> +	6009  Serial Converter
> +	6010  FT2232C/D/H Dual UART/FIFO IC
> +	6011  FT4232H Quad HS USB-UART/FIFO IC
> +	6014  FT232H Single HS USB-UART/FIFO IC
> +	6015  Bridge(I2C/SPI/UART/FIFO)
> +	601f  Myriad-RF LimeSDR-Mini
> +	6ee0  EZO Carrier Board
> +	6f70  HB-RF-USB
> +	7be8  FT232R
> +	8028  Dev board JTAG (FT232H based)
> +	8040  4 Port Hub
> +	8070  7 Port Hub
> +	8140  Vehicle Explorer Interface
> +	8210  MGTimer - MGCC (Vic) Timing System
> +	8348  FT232BM [SIENNA Serial Interface]
> +	8370  7 Port Hub
> +	8371  PS/2 Keyboard And Mouse
> +	8372  FT8U100AX Serial Port
> +	8508  Selectronic SP PRO
> +	87d0  Cressi Dive Computer Interface
> +	8a28  Rainforest Automation ZigBee Controller
> +	8a98  TIAO Multi-Protocol Adapter
> +	8b28  Alpermann+Velte TCI70
> +	8b29  Alpermann+Velte TC60 CLS
> +	8b2a  Alpermann+Velte Rubidium Q1
> +	8b2b  Alpermann+Velte TCD
> +	8b2c  Alpermann+Velte TCC70
> +	9090  SNAP Stick 200
> +	9132  LCD and Temperature Interface
> +	9133  CallerID
> +	9134  Virtual keyboard
> +	9135  Rotary Pub alarm
> +	9136  Pulsecounter
> +	9137  Ledbutton interface
> +	9e90  Marvell OpenRD Base/Client
> +	9f08  CIB-1894 Conclusion SmartLink Box:
> +	9f80  Ewert Energy Systems CANdapter
> +	a6d0  Texas Instruments XDS100v2 JTAG / BeagleBone A3
> +	a951  HCP HIT GSM/GPRS modem [Cinterion MC55i]
> +	a9a0  FT2232D - Dual UART/FIFO IC - FTDI
> +	abb8  Lego Mindstorms NXTCam
> +	b0c0  microSensys RFID device
> +	b0c1  microSensys RFID device
> +	b0c2  iID contactless RFID device
> +	b0c3  iID contactless RFID device
> +	b0c4  RFID device
> +	b0c5  RFID device
> +	b810  US Interface Navigator (CAT and 2nd PTT lines)
> +	b811  US Interface Navigator (WKEY and FSK lines)
> +	b812  US Interface Navigator (RS232 and CONFIG lines)
> +	b9b0  Fujitsu SK-16FX-100PMC V1.1
> +	baf8  Amontec JTAGkey
> +	bcd8  Stellaris Development Board
> +	bcd9  Stellaris Evaluation Board
> +	bcda  Stellaris ICDI Board
> +	bd90  PICAXE Download Cable [AXE027]
> +	bdc8  Egnite GmbH - JTAG/RS-232 adapter
> +	bfd8  OpenDCC
> +	bfd9  OpenDCC (Sniffer)
> +	bfda  OpenDCC (Throttle)
> +	bfdb  OpenDCC (Gateway)
> +	bfdc  OpenDCC (GBM)
> +	c580  HID UNIKEY dongle [F-Response]
> +	c630  lcd2usb interface
> +	c631  i2c-tiny-usb interface
> +	c632  xu1541 c64 floppy drive interface
> +	c633  TinyCrypt dongle
> +	c634  glcd2usb interface
> +	c7d0  RR-CirKits LocoBuffer-USB
> +	c8b8  Alpermann+Velte MTD TCU
> +	c8b9  Alpermann+Velte MTD TCU 1HE
> +	c8ba  Alpermann+Velte Rubidium H1
> +	c8bb  Alpermann+Velte Rubidium H3
> +	c8bc  Alpermann+Velte Rubidium S1
> +	c8bd  Alpermann+Velte Rubidium T1
> +	c8be  Alpermann+Velte Rubidium D1
> +	c8bf  Alpermann+Velte TC60 RLV
> +	cc48  Tactrix OpenPort 1.3 Mitsubishi
> +	cc49  Tactrix OpenPort 1.3 Subaru
> +	cc4a  Tactrix OpenPort 1.3 Universal
> +	cff8  Amontec JTAGkey
> +	d010  SCS PTC-IIusb
> +	d011  SCS Position-Tracker/TNC
> +	d012  SCS DRAGON 1
> +	d013  SCS DRAGON 1
> +	d388  Xsens converter
> +	d389  Xsens Wireless Receiver
> +	d38a  Xsens serial converter
> +	d38b  Xsens serial converter
> +	d38c  Xsens Wireless Receiver
> +	d38d  Xsens Awinda Station
> +	d38e  Xsens serial converter
> +	d38f  Xsens serial converter
> +	d491  Zolix Omni 1509 monochromator
> +	d578  Accesio USB-COM-4SM
> +	d6f8  UNI Black BOX
> +	d738  Propox JTAGcable II
> +	d739  Propox ISPcable III
> +	d9a9  Actisense USG-1 NMEA Serial Gateway
> +	d9aa  Actisense NGT-1 NMEA2000 PC Interface
> +	d9ab  Actisense NGT-1 NMEA2000 Gateway
> +	daf4  Qundis Serial Infrared Head
> +	e0d0  Total Phase Aardvark I2C/SPI Host Adapter
> +	e518  IBR IMB-usb
> +	e521  EVER Sinline XL Series UPS
> +	e6c8  PYRAMID Computer GmbH LCD
> +	e700  Elster Unicom III Optical Probe
> +	e729  Segway Robotic Mobility Platforms 200
> +	e888  Expert ISDN Control USB
> +	e889  USB-RS232 OptoBridge
> +	e88a  Expert mouseCLOCK USB II
> +	e88b  Precision Clock MSF USB
> +	e88c  Expert mouseCLOCK USB II HBG
> +	e8d8  Aaronia AG Spectran Spectrum Analyzer
> +	e8dc  Aaronia AG UBBV Preamplifier
> +	ea90  Eclo 1-Wire Adapter
> +	ecd9  miControl miCan-Stick
> +	ed71  HAMEG HO870 Serial Port
> +	ed72  HAMEG HO720 Serial Port
> +	ed73  HAMEG HO730 Serial Port
> +	ed74  HAMEG HO820 Serial Port
> +	eea2  PCStage Lite 32 channel DMX512 Interface
> +	ef10  FT1245BL
> +	f070  Serial Converter 422/485 [Vardaan VEUSB422R3]
> +	f0c8  SPROG Decoder Programmer
> +	f0c9  SPROG-DCC CAN-USB
> +	f0e9  Tagsys L-P101
> +	f0ee  Tagsys Medio P200x
> +	f1a0  Asix PRESTO Programmer
> +	f208  Papenmeier Braille-Display
> +	f3c0  4N-GALAXY Serial Converter
> +	f458  ABACUS ELECTRICS Optical Probe
> +	f608  CTI USB-485-Mini
> +	f60b  CTI USB-Nano-485
> +	f680  Suunto Sports Instrument
> +	f758  GW Instek GDS-8x0 Oscilloscope
> +	f7c0  ZeitControl Cardsystems TagTracer MIFARE
> +	f850  USB-UIRT (Universal Infrared Receiver+Transmitter)
> +	f918  Ant8 Logic Probe
> +	f9d9  Wetterempfanger 147.3kHz
> +	fa00  Matrix Orbital USB Serial
> +	fa01  Matrix Orbital MX2 or MX3
> +	fa02  Matrix Orbital MX4 or MX5
> +	fa03  Matrix Orbital VK/LK202 Family
> +	fa04  Matrix Orbital VK/LK204 Family
> +	fa20  Ross-Tech HEX-USB
> +	fc08  Crystalfontz CFA-632 USB LCD
> +	fc09  Crystalfontz CFA-634 USB LCD
> +	fc0b  Crystalfontz CFA-633 USB LCD
> +	fc0c  Crystalfontz CFA-631 USB LCD
> +	fc0d  Crystalfontz CFA-635 USB LCD
> +	fc82  SEMC DSS-20/DSS-25 SyncStation
> +	fd48  ShipModul MiniPlex-4xUSB NMEA Multiplexer
> +	fd49  ShipModul MiniPlex-4xUSB-AIS NMEA Multiplexer
> +	fd4b  ShipModul MiniPlex NMEA Multiplexer
> +	ff08  ToolHouse LoopBack Adapter
> +	ff18  ScienceScope Logbook ML
> +	ff19  Logbook Bus
> +	ff1a  Logbook Bus
> +	ff1b  Logbook Bus
> +	ff1c  ScienceScope Logbook LS
> +	ff1d  ScienceScope Logbook HS
> +	ff1e  Logbook Bus
> +	ff1f  Logbook Bus
> +0404  NCR Corp.
> +	0202  78XX Scanner
> +	0203  78XX Scanner - Embedded System
> +	0310  K590 Printer, Self-Service
> +	0311  7167 Printer, Receipt/Slip
> +	0312  7197 Printer Receipt
> +	0320  5932-USB Keyboard
> +	0321  5953-USB Dynakey
> +	0322  5932-USB Enhanced Keyboard
> +	0323  5932-USB Enhanced Keyboard, Flash-Recovery/Download
> +	0324  5953-USB Enhanced Dynakey
> +	0325  5953-USB Enhanced Dynakey Flash-Recovery/Download
> +	0328  K016: USB-MSR ISO 3-track MSR: POS Standard (See HID pages)
> +	0329  K018: USB-MSR JIS 2-Track MSR: POS Standard
> +	032a  K016: USB-MSR ISO 3-Track MSR: HID Keyboard Mode
> +	032b  K016/K018: USB-MSR Flash-Recovery/Download
> +0405  Synopsys, Inc.
> +0406  Fujitsu-ICL Computers
> +0407  Fujitsu Personal Systems, Inc.
> +0408  Quanta Computer, Inc.
> +	0103  FV TouchCam N1 (Audio)
> +	030c  HP Webcam
> +	03b2  HP Webcam
> +	03f4  HP Webcam
> +	1030  FV TouchCam N1 (Video)
> +	3000  Optical dual-touch panel
> +	3001  Optical Touch Screen
> +	3008  Optical Touch Screen
> +	a060  HD Webcam
> +0409  NEC Corp.
> +	0011  PC98 Series Layout Keyboard Mouse
> +	0012  ATerm IT75DSU ISDN TA
> +	0014  Japanese Keyboard
> +	0019  109 Japanese Keyboard with Bus-Powered Hub
> +	001a  PC98 Series Layout Keyboard with Bus-Powered Hub
> +	0025  Mini Keyboard with Bus-Powered Hub
> +	0027  MultiSync Monitor
> +	002c  Clik!-USB Drive
> +	0034  109 Japanese Keyboard with One-touch start buttons
> +	003f  Wireless Keyboard with One-touch start buttons
> +	0040  Floppy
> +	004e  SuperScript 1400 Series
> +	004f  Wireless Keyboard with One-touch start buttons
> +	0050  7-port hub
> +	0058  HighSpeed Hub
> +	0059  HighSpeed Hub
> +	005a  HighSpeed Hub
> +	006a  Conceptronic USB Harddisk Box
> +	007d  MINICUBE2
> +	007e  PG-FP5 Flash Memory Programmer
> +	0081  SuperScript 1400 Series
> +	0082  SuperScript 1400 Series
> +	0094  Japanese Keyboard with One-touch start buttons
> +	0095  Japanese Keyboard
> +	00a9  AtermIT21L 128K Support Standard
> +	00aa  AtermITX72 128K Support Standard
> +	00ab  AtermITX62 128K Support Standard
> +	00ac  AtermIT42 128K Support Standard
> +	00ae  INSMATEV70G-MAX Standard
> +	00af  AtermITX70 128K Support Standard
> +	00b0  AtermITX80 128K Support Standard
> +	00b2  AtermITX80D 128K Support Standard
> +	00c0  Wireless Remocon
> +	00f7  Smart Display PK-SD10
> +	011d  e228 Mobile Phone
> +	0193  RVT-R Writer
> +	0203  HID Audio Controls
> +	021d  Aterm WL54SU2 802.11g Wireless Adapter [Atheros AR5523]
> +	0248  Aterm PA-WL54GU
> +	0249  Aterm WL300NU-G
> +	02b4  Aterm WL300NU-AG
> +	02b6  Aterm WL300NU-GS 802.11n Wireless Adapter
> +	02bc  Computer Monitor
> +	0300  LifeTouch Note
> +	0301  LifeTouch Note (debug mode)
> +	55aa  Hub
> +	55ab  Hub [iMac/iTouch kbd]
> +	8010  Intellibase Hub
> +	8011  Intellibase Hub
> +	efbe  P!cty 900 [HP DJ]
> +	f0be  P!cty 920 [HP DJ 812c]
> +040a  Kodak Co.
> +	0001  DVC-323
> +	0002  DVC-325
> +	0100  DC-220
> +	0110  DC-260
> +	0111  DC-265
> +	0112  DC-290
> +	0120  DC-240
> +	0121  DC-240 (PTP firmware)
> +	0130  DC-280
> +	0131  DC-5000
> +	0132  DC-3400
> +	0140  DC-4800
> +	0160  DC4800
> +	0170  DX3900
> +	0200  Digital Camera
> +	0300  EZ-200
> +	0400  MC3
> +	0402  Digital Camera
> +	0403  Z7590
> +	0500  DX3500
> +	0510  DX3600
> +	0525  DX3215
> +	0530  DX3700
> +	0535  EasyShare CX4230 Camera
> +	0540  LS420
> +	0550  DX4900
> +	0555  DX4330
> +	0560  CX4200
> +	0565  CX4210
> +	0566  CX4300
> +	0567  LS753
> +	0568  LS443
> +	0569  LS663
> +	0570  DX6340
> +	0571  CX6330
> +	0572  DX6440
> +	0573  CX6230
> +	0574  CX6200
> +	0575  DX6490
> +	0576  DX4530
> +	0577  DX7630
> +	0578  CX7300/CX7310
> +	0579  CX7220
> +	057a  CX7330
> +	057b  CX7430
> +	057c  CX7530
> +	057d  DX7440
> +	057e  C300
> +	057f  DX7590
> +	0580  Z730
> +	0581  Digital Camera
> +	0582  Digital Camera
> +	0583  Digital Camera
> +	0584  CX6445
> +	0585  Digital Camera
> +	0586  CX7525
> +	0587  Digital Camera
> +	0588  Digital Camera
> +	0589  EasyShare C360
> +	058a  C310
> +	058b  Digital Camera
> +	058c  C330
> +	058d  C340
> +	058e  V530
> +	058f  V550
> +	0590  Digital Camera
> +	0591  Digital Camera
> +	0592  Digital Camera
> +	0593  Digital Camera
> +	0594  Digital Camera
> +	0595  Digital Camera
> +	0596  Digital Camera
> +	0597  Digital Camera
> +	0598  EASYSHARE M1033 digital camera
> +	0599  Digital Camera
> +	059a  Digital Camera
> +	059b  Digital Camera
> +	059c  Digital Camera
> +	059d  Digital Camera
> +	059e  Digital Camera
> +	059f  Digital Camera
> +	05a0  Digital Camera
> +	05a1  Digital Camera
> +	05a2  Digital Camera
> +	05a3  Digital Camera
> +	05a4  Digital Camera
> +	05a5  Digital Camera
> +	05a6  Digital Camera
> +	05a7  Digital Camera
> +	05a8  Digital Camera
> +	05a9  Digital Camera
> +	05aa  Digital Camera
> +	05ab  Digital Camera
> +	05ac  Digital Camera
> +	05ad  Digital Camera
> +	05ae  Digital Camera
> +	05af  Digital Camera
> +	05b0  Digital Camera
> +	05b1  Digital Camera
> +	05b2  Digital Camera
> +	05b3  EasyShare Z710 Camera
> +	05b4  Digital Camera
> +	05b5  Digital Camera
> +	05b6  Digital Camera
> +	05b7  Digital Camera
> +	05b8  Digital Camera
> +	05b9  Digital Camera
> +	05ba  Digital Camera
> +	05bb  Digital Camera
> +	05bc  Digital Camera
> +	05bd  Digital Camera
> +	05be  Digital Camera
> +	05bf  Digital Camera
> +	05c0  Digital Camera
> +	05c1  Digital Camera
> +	05c2  Digital Camera
> +	05c3  Digital Camera
> +	05c4  Digital Camera
> +	05c5  Digital Camera
> +	05c8  EASYSHARE Z1485 IS Digital Camera
> +	05d3  EasyShare M320 Camera
> +	05d4  EasyShare C180 Digital Camera
> +	1001  EasyShare SV811 Digital Picture Frame
> +	4000  InkJet Color Printer
> +	4021  Photo Printer 6800
> +	4022  1400 Digital Photo Printer
> +	4023  Photo Printer 8800 / 9810
> +	402b  Photo Printer 6850
> +	402e  605 Photo Printer
> +	4034  805 Photo Printer
> +	4035  7000 Photo Printer
> +	4037  7010 Photo Printer
> +	4038  7015 Photo Printer
> +	404d  8810 Photo Printer
> +	404f  305 Photo Printer
> +	4056  ESP 7200 Series AiO
> +	4109  EasyShare Printer Dock Series 3
> +	410d  EasyShare G600 Printer Dock
> +	5010  Wireless Adapter
> +	5012  DBT-220 Bluetooth Adapter
> +	6001  i30
> +	6002  i40
> +	6003  i50
> +	6004  i60
> +	6005  i80
> +	6029  i900
> +	602a  i900
> +040b  Weltrend Semiconductor
> +	0a68  Func MS-3 gaming mouse [WT6573F MCU]
> +	2000  wired Keyboard [Dynex DX-WRK1401]
> +	2367  Human Interface Device [HP CalcPad 200 Calculator and Numeric Keypad]
> +	6510  Weltrend Bar Code Reader
> +	6520  Xploder Xbox Memory Unit (8MB)
> +	6533  Speed-Link Competition Pro
> +	6543  Manhattan Magnetic Card Strip Reader
> +040c  VTech Computers, Ltd
> +040d  VIA Technologies, Inc.
> +	3184  VNT VT6656 USB-802.11 Wireless LAN Adapter
> +	340f  Audinst HUD-mx2
> +	6205  USB 2.0 Card Reader
> +040e  MCCI
> +040f  Echo Speech Corp.
> +0411  BUFFALO INC. (formerly MelCo., Inc.)
> +	0001  LUA-TX Ethernet [pegasus]
> +	0005  LUA-TX Ethernet
> +	0006  WLI-USB-L11 Wireless LAN Adapter
> +	0009  LUA2-TX Ethernet
> +	000b  WLI-USB-L11G-WR Wireless LAN Adapter
> +	000d  WLI-USB-L11G Wireless LAN Adapter
> +	0012  LUA-KTX Ethernet
> +	0013  USB2-IDE Adapter
> +	0016  WLI-USB-S11 802.11b Adapter
> +	0018  USB2-IDE Adapter
> +	001c  USB-IDE Bridge: DUB-PxxG
> +	0027  WLI-USB-KS11G 802.11b Adapter
> +	002a  SMSC USB97C202 "HD-HB300V2-EU"
> +	003d  LUA-U2-KTX Ethernet
> +	0044  WLI-USB-KB11 Wireless LAN Adapter
> +	004b  WLI-USB-G54 802.11g Adapter [Broadcom 4320 USB]
> +	004d  WLI-USB-B11 Wireless LAN Adapter
> +	0050  WLI2-USB2-G54 Wireless LAN Adapter
> +	005e  WLI-U2-KG54-YB WLAN
> +	0065  Python2 WDM Encoder
> +	0066  WLI-U2-KG54 WLAN
> +	0067  WLI-U2-KG54-AI WLAN
> +	006e  LUA-U2-GT 10/100/1000 Ethernet Adapter
> +	0089  RUF-C/U2 Flash Drive
> +	008b  Nintendo Wi-Fi
> +	0091  WLI-U2-KAMG54 Wireless LAN Adapter
> +	0092  WLI-U2-KAMG54 Bootloader
> +	0097  WLI-U2-KG54-BB
> +	00a9  WLI-U2-AMG54HP Wireless LAN Adapter
> +	00aa  WLI-U2-AMG54HP Bootloader
> +	00b3  PC-OP-RS1 RemoteStation
> +	00bc  WLI-U2-KG125S 802.11g Adapter [Broadcom 4320 USB]
> +	00ca  802.11n Network Adapter
> +	00cb  WLI-U2-G300N 802.11n Adapter
> +	00d8  WLI-U2-SG54HP
> +	00d9  WLI-U2-G54HP
> +	00da  WLI-U2-KG54L 802.11bg [ZyDAS ZD1211B]
> +	00db  External Hard Drive HD-PF32OU2 [Buffalo Ministation]
> +	00e8  WLI-UC-G300N Wireless LAN Adapter [Ralink RT2870]
> +	00f9  Portable DVD Writer (DVSM-PL58U2)
> +	0105  External Hard Drive HD-CEU2 [Drive Station]
> +	012c  SATA Bridge
> +	012e  WLI-UC-AG300N Wireless LAN Adapter
> +	0148  WLI-UC-G300HP Wireless LAN Adapter
> +	0150  WLP-UC-AG300 Wireless LAN Adapter
> +	0157  External Hard Drive HD-PEU2
> +	0158  WLI-UC-GNHP Wireless LAN Adapter
> +	015d  WLI-UC-GN Wireless LAN Adapter [Ralink RT3070]
> +	016f  WLI-UC-G301N Wireless LAN Adapter [Ralink RT3072]
> +	017f  Sony UWA-BR100 802.11abgn Wireless Adapter [Atheros AR7010+AR9280]
> +	019e  WLI-UC-GNP Wireless LAN Adapter
> +	01a1  MiniStation Metro
> +	01a2  WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070]
> +	01ba  SATA Bridge
> +	01dc  Ultra-Slim Portable DVD Writer (DVSM-PC58U2V)
> +	01de  External Hard Drive HD-PCTU3 [Buffalo MiniStation]
> +	01ea  SATA Bridge
> +	01ee  WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070]
> +	01f1  SATA Adapter [HD-LBU3]
> +	01fd  WLI-UC-G450 Wireless LAN Adapter
> +	027e  HD-LCU3
> +0412  Award Software International
> +0413  Leadtek Research, Inc.
> +	1310  WinFast TV - NTSC + FM
> +	1311  WinFast TV - NTSC + MTS + FM
> +	1312  WinFast TV - PAL BG + FM
> +	1313  WinFast TV - PAL BG+TXT + FM
> +	1314  WinFast TV Audio - PHP PAL I
> +	1315  WinFast TV Audio - PHP PAL I+TXT
> +	1316  WinFast TV Audio - PHP PAL DK
> +	1317  WinFast TV Audio - PHP PAL DK+TXT
> +	1318  WinFast TV - PAL I/DK + FM
> +	1319  WinFast TV - PAL N + FM
> +	131a  WinFast TV Audio - PHP SECAM LL
> +	131b  WinFast TV Audio - PHP SECAM LL+TXT
> +	131c  WinFast TV Audio - PHP SECAM DK
> +	131d  WinFast TV - SECAM DK + TXT + FM
> +	131e  WinFast TV - NTSC Japan + FM
> +	1320  WinFast TV - NTSC
> +	1321  WinFast TV - NTSC + MTS
> +	1322  WinFast TV - PAL BG
> +	1323  WinFast TV - PAL BG+TXT
> +	1324  WinFast TV Audio - PHP PAL I
> +	1325  WinFast TV Audio - PHP PAL I+TXT
> +	1326  WinFast TV Audio - PHP PAL DK
> +	1327  WinFast TV Audio - PHP PAL DK+TXT
> +	1328  WinFast TV - PAL I/DK
> +	1329  WinFast TV - PAL N
> +	132a  WinFast TV Audio - PHP SECAM LL
> +	132b  WinFast TV Audio - PHP SECAM LL+TXT
> +	132c  WinFast TV Audio - PHP SECAM DK
> +	132d  WinFast TV - SECAM DK + TXT
> +	132e  WinFast TV - NTSC Japan
> +	6023  EMP Audio Device
> +	6024  WinFast PalmTop/Novo TV Video
> +	6025  WinFast DTV Dongle (cold state)
> +	6026  WinFast DTV Dongle (warm state)
> +	6029  WinFast DTV Dongle Gold
> +	6125  WinFast DTV Dongle
> +	6126  WinFast DTV Dongle BDA Driver
> +	6a03  RTL2832 [WinFast DTV Dongle Mini]
> +	6f00  WinFast DTV Dongle (STK7700P based)
> +0414  Giga-Byte Technology Co., Ltd
> +0416  Winbond Electronics Corp.
> +	0035  W89C35 802.11bg WLAN Adapter
> +	0101  Hub
> +	0961  AVL Flash Card Reader
> +	3810  Smart Card Controller
> +	3811  Generic Controller - Single interface
> +	3812  Smart Card Controller_2Interface
> +	3813  Panel Display
> +	5011  Virtual Com Port
> +	511b  Nuvoton Nu-Link1 ICE
> +	511c  Nuvoton Nu-Link1 ICE
> +	511d  Nuvoton Nu-Link1 ICE/VCOM
> +	511e  Nuvoton Nu-Link1 MSC/VCOM
> +	5200  Nuvoton Nu-Link2-ME ICE/MSC/VCOM
> +	5201  Nuvoton Nu-Link2-Pro ICE/MSC/VCOM
> +	5210  Nuvoton Nu-Link2 MSC FW UPGRADE
> +	5211  Nuvoton Nu-Link2 HID FW UPGRADE
> +	5518  4-Port Hub
> +	551a  PC Sync Keypad
> +	551b  PC Async Keypad
> +	551c  Sync Tenkey
> +	551d  Async Tenkey
> +	551e  Keyboard
> +	551f  Keyboard w/ Sys and Media
> +	5521  Keyboard
> +	6481  16-bit Scanner
> +	7721  Memory Stick Reader/Writer
> +	7722  Memory Stick Reader/Writer
> +	7723  SD Card Reader
> +	b23c  KT108 keyboard
> +	c141  Barcode Scanner
> +0417  Symbios Logic
> +0418  AST Research
> +0419  Samsung Info. Systems America, Inc.
> +	0001  IrDA Remote Controller / Creative Cordless Mouse
> +	0600  Desktop Wireless 6000
> +	2694  Laila
> +	3001  Xerox P1202 Laser Printer
> +	3003  Olivetti PG L12L
> +	3201  Docuprint P8ex
> +	3404  SCX-5x12 series
> +	3406  MFP 830 series
> +	3407  ML-912
> +	3601  InkJet Color Printer
> +	3602  InkJet Color Printer
> +	4602  Remote NDIS Network Device
> +	8001  Hub
> +	8002  SyncMaster HID Monitor Control
> +	aa03  SDAS-3 MP3 Player
> +041a  Phoenix Technologies, Ltd
> +041b  d'TV
> +041d  S3, Inc.
> +041e  Creative Technology, Ltd
> +	0414  HS-720 Headset
> +	1002  Nomad II
> +	1003  Blaster GamePad Cobra
> +	1050  GamePad Cobra
> +	1053  Mouse Gamer HD7600L
> +	200c  MuVo V100
> +	2020  Zen X-Fi 2
> +	2029  ZiiO
> +	2801  Prodikeys PC-MIDI multifunction keyboard
> +	3000  SoundBlaster Extigy
> +	3002  SB External Composite Device
> +	3010  SoundBlaster MP3+
> +	3014  SB External Composite Device
> +	3015  Sound Blaster Digital Music LX
> +	3020  SoundBlaster Audigy 2 NX
> +	3030  SB External Composite Device
> +	3040  SoundBlaster Live! 24-bit External SB0490
> +	3060  Sound Blaster Audigy 2 ZS External
> +	3061  SoundBlaster Audigy 2 ZS Video Editor
> +	3090  Sound Blaster Digital Music SX
> +	30d0  Xmod
> +	30d3  Sound Blaster Play!
> +	3100  IR Receiver (SB0540)
> +	3121  WoW tap chat
> +	3220  Sound Blaster Tactic(3D) Sigma sound card
> +	3232  Sound Blaster Premium HD [SBX]
> +	3237  SB X-Fi Surround 5.1 Pro
> +	3241  Sound Blaster JAM
> +	3263  SB X-Fi Surround 5.1 Pro
> +	3f00  E-Mu Xboard 25 MIDI Controller
> +	3f02  E-Mu 0202
> +	3f04  E-Mu 0404
> +	3f07  E-Mu Xmidi 1x1
> +	3f0e  Xmidi 1x1 Tab
> +	4003  VideoBlaster Webcam Go Plus [W9967CF]
> +	4004  Nomad II MG
> +	4005  Webcam Blaster Go ES
> +	4007  Go Mini
> +	400a  PC-Cam 300
> +	400b  PC-Cam 600
> +	400c  Webcam 5 [pwc]
> +	400d  Webcam PD1001
> +	400f  PC-CAM 550 (Composite)
> +	4011  Webcam PRO eX
> +	4012  PC-CAM350
> +	4013  PC-Cam 750
> +	4015  CardCam Value
> +	4016  CardCam
> +	4017  Webcam Mobile [PD1090]
> +	4018  Webcam Vista [PD1100]
> +	4019  Audio Device
> +	401a  Webcam Vista [PD1100]
> +	401c  Webcam NX [PD1110]
> +	401d  Webcam NX Ultra
> +	401e  Webcam NX Pro
> +	401f  Webcam Notebook [PD1171]
> +	4020  Webcam NX
> +	4021  Webcam NX Ultra
> +	4022  Webcam NX Pro
> +	4028  Vista Plus cam [VF0090]
> +	4029  Webcam Live!
> +	402f  DC-CAM 3000Z
> +	4034  Webcam Instant
> +	4035  Webcam Instant
> +	4036  Webcam Live!/Live! Pro
> +	4037  Webcam Live!
> +	4038  ORITE CCD Webcam [PC370R]
> +	4039  Webcam Live! Effects
> +	403a  Webcam NX Pro 2
> +	403b  Creative Webcam Vista [VF0010]
> +	403c  Webcam Live! Ultra
> +	403d  Webcam Notebook Ultra
> +	403e  Webcam Vista Plus
> +	4041  Webcam Live! Motion
> +	4043  Vibra Plus Webcam
> +	4045  Live! Cam Voice
> +	4049  Live! Cam Voice
> +	4051  Live! Cam Notebook Pro [VF0250]
> +	4052  Live! Cam Vista IM
> +	4053  Live! Cam Video IM
> +	4054  Live! Cam Video IM
> +	4055  Live! Cam Video IM Pro
> +	4056  Live! Cam Video IM Pro
> +	4057  Live! Cam Optia
> +	4058  Live! Cam Optia AF
> +	405f  WebCam Vista (VF0330)
> +	4061  Live! Cam Notebook Pro [VF0400]
> +	4063  Live! Cam Video IM Pro
> +	4068  Live! Cam Notebook [VF0470]
> +	406c  Live! Cam Sync [VF0520]
> +	4083  Live! Cam Socialize [VF0640]
> +	4087  Live! Cam Socialize HD 1080 [VF0680]
> +	4088  Live! Cam Chat HD [VF0700]
> +	4095  Live! Cam Sync HD [VF0770]
> +	4097  Live! Cam Chat HD [VF0700]
> +	4099  Creative VF0800 [RealSense Camera SR300]
> +	4100  Nomad Jukebox 2
> +	4101  Nomad Jukebox 3
> +	4102  NOMAD MuVo^2
> +	4106  Nomad MuVo
> +	4107  NOMAD MuVo
> +	4108  Nomad Jukebox Zen
> +	4109  Nomad Jukebox Zen NX
> +	410b  Nomad Jukebox Zen USB 2.0
> +	410c  Nomad MuVo NX
> +	410f  NOMAD MuVo^2 (Flash)
> +	4110  Nomad Jukebox Zen Xtra
> +	4111  Dell Digital Jukebox
> +	4116  MuVo^2
> +	4117  Nomad MuVo TX
> +	411b  Zen Touch
> +	411c  Nomad MuVo USB 2.0
> +	411d  Zen
> +	411e  Zen Micro
> +	4120  Nomad MuVo TX FM
> +	4123  Zen Portable Media Center
> +	4124  MuVo^2 FM (uHDD)
> +	4126  Dell DJ (2nd gen)
> +	4127  Dell DJ
> +	4128  NOMAD Jukebox Zen Xtra (mtp)
> +	412b  MuVo N200 with FM radio
> +	412f  Dell Digital Jukebox 2.Gen
> +	4130  Zen Micro (mtp)
> +	4131  DAP-HD0014 [Zen Touch] (MTP)
> +	4133  Mass Storage Device
> +	4134  Zen Neeon
> +	4136  Zen Sleek
> +	4137  Zen Sleek (mtp)
> +	4139  Zen Nano Plus
> +	413c  Zen MicroPhoto
> +	4150  Zen V (MTP)
> +	4151  Zen Vision:M (mtp)
> +	4152  Zen V Plus
> +	4153  Zen Vision W
> +	4154  Zen Stone
> +	4155  Zen Stone plus
> +	4157  Zen (MTP)
> +	500f  Broadband Blaster 8012U-V
> +	5015  TECOM Bluetooth Device
> +	ffff  Webcam Live! Ultra
> +041f  LCS Telegraphics
> +0420  Chips and Technologies
> +	1307  Celly SIM Card Reader
> +0421  Nokia Mobile Phones
> +	0001  E61i (PC Suite mode)
> +	0018  6288 GSM Smartphone
> +	0019  6288 GSM Smartphone (imaging mode)
> +	001a  6288 GSM Smartphone (file transfer mode)
> +	0024  5610 XpressMusic (Storage mode)
> +	0025  5610 XpressMusic (PC Suite mode)
> +	0028  5610 XpressMusic (Imaging mode)
> +	002d  6120 Phone (Mass storage mode)
> +	002e  6120 Phone (Media-Player mode)
> +	002f  6120 Phone (PC-Suite mode)
> +	0042  E51 (PC Suite mode)
> +	0064  3109c GSM Phone
> +	006b  5310 Xpress Music (PC Suite mode)
> +	006c  5310 Xpress music (Storage mode)
> +	006d  N95 (Storage mode)
> +	006e  N95 (Multimedia mode)
> +	006f  N95 (Printing mode)
> +	0070  N95 (PC Suite mode)
> +	0096  N810 Internet Tablet
> +	00aa  E71 (Mass storage mode)
> +	00ab  E71 (PC Suite mode)
> +	00e4  E71 (Media transfer mode)
> +	0103  ADL Flashing Engine AVALON Parent
> +	0104  ADL Re-Flashing Engine Parent
> +	0105  Nokia Firmware Upgrade Mode
> +	0106  ROM Parent
> +	010d  E75 (Storage Mode)
> +	010e  E75 (PC Suite mode)
> +	010f  E75 (Media transfer mode)
> +	0110  E75 (Imaging Mode)
> +	0154  5800 XpressMusic (PC Suite mode)
> +	0155  5800 XpressMusic (Multimedia mode)
> +	0156  5800 XpressMusic (Storage mode)
> +	0157  5800 XpressMusic (Imaging mode)
> +	0189  N810 Internet Tablet WiMAX
> +	0199  6700 Classic (msc)
> +	019a  6700 Classic (PC Suite)
> +	019b  6700 Classic (mtp)
> +	01b0  6303 classic Phone (PC Suite mode)
> +	01b1  6303 classic Phone (Mass storage mode)
> +	01b2  6303 classic Phone (Printing and media mode)
> +	01c7  N900 (Storage Mode)
> +	01c8  N900/N950 (PC-Suite Mode)
> +	0228  5530 XpressMusic
> +	023a  6730 Classic
> +	026a  N97 (mass storage)
> +	026b  N97 (Multimedia)
> +	026c  N97 (PC Suite)
> +	026d  N97 (Pictures)
> +	0295  660i/6600i Slide Phone (Mass Storage)
> +	0297  660i/6600i Slide Phone (Still Image)
> +	02e1  5230 (Storage mode)
> +	02e2  5230 (Multimedia mode)
> +	02e3  5230 (PC-Suite mode)
> +	02e4  5230 (Imaging mode)
> +	0360  C1-01 Ovi Suite Mode
> +	0396  C7-00 (Modem mode)
> +	03a4  C5 (Storage mode)
> +	03c0  C7-00 (Mass storage mode)
> +	03c1  C7-00 (Media transfer mode)
> +	03c2  Sim
> +	03cd  C7-00 (Nokia Suite mode)
> +	03d1  N950 (Storage Mode)
> +	03d2  N950 (PC Suite mode)
> +	0400  7600 Phone Parent
> +	0401  6650 GSM Phone
> +	0402  6255 Phone Parent
> +	0404  5510
> +	0405  9500 GSM Communicator
> +	0407  Music Player HDR-1(tm)
> +	040b  N-Gage GSM Phone
> +	040d  6620 Phone Parent
> +	040e  6651 Phone Parent
> +	040f  6230 GSM Phone
> +	0410  6630 Imaging Smartphone
> +	0411  7610 Phone Parent
> +	0413  6260 Phone Parent
> +	0414  7370
> +	0415  9300 GSM Smartphone
> +	0416  6170 Phone Parent
> +	0417  7270 Phone Parent
> +	0418  E70 (PC Suite mode)
> +	0419  E60 (PC Suite mode)
> +	041a  9500 GSM Communicator (RNDIS)
> +	041b  9300 GSM Smartphone (RNDIS)
> +	041c  7710 Phone Parent
> +	041d  6670 Phone Parent
> +	041e  6680
> +	041f  6235 Phone Parent
> +	0421  3230 Phone Parent
> +	0422  6681 Phone Parent
> +	0423  6682 Phone Parent
> +	0428  6230i Modem
> +	0429  6230i MultiMedia Card
> +	0431  770/N800 Internet Tablet
> +	0432  N90 Phone Parent
> +	0435  E70 (IP Passthrough/RNDIS mode)
> +	0436  E60 (IP Passthrough/RNDIS mode)
> +	0437  6265 Phone Parent
> +	043a  N70 USB Phone Parent
> +	043b  3155 Phone Parent
> +	043c  6155 Phone Parent
> +	043d  6270 Phone Parent
> +	0443  N70 Phone Parent
> +	0444  N91
> +	044c  NM850iG Phone Parent
> +	044d  E61 (PC Suite mode)
> +	044e  E61 (Data Exchange mode)
> +	044f  E61 (IP Passthrough/RNDIS mode)
> +	0453  9300 Phone Parent
> +	0456  6111 Phone Parent
> +	0457  6111 Phone (Printing mode)
> +	045a  6280 Phone Parent
> +	045d  6282 Phone Parent
> +	046e  6110 Navigator
> +	0471  6110 Navigator
> +	0485  MTP Device
> +	04b9  5300
> +	04bc  5200 (Nokia mode)
> +	04bd  5200 (Storage mode)
> +	04be  5200 (MTP mode)
> +	04c3  N800 Internet Tablet
> +	04ce  E90 Communicator (PC Suite mode)
> +	04cf  E90 Communicator (Storage mode)
> +	04f0  Nokia N95 (PC Suite mode)
> +	04f9  6300 (PC Suite mode)
> +	0508  E65 (PC Suite mode)
> +	0509  E65 (Storage mode)
> +	0518  N9 (Storage mode)
> +	0519  N9 (RNDIS/Ethernet mode)
> +	051a  N9 (PC Suite mode)
> +	054d  C2-01
> +	0600  Digital Pen SU-1B
> +	0610  CS-15 (Internet Stick 3G modem)
> +	0661  Lumia 620/920
> +	0662  301 Dual SIM (Mass Storage)
> +	0663  301 Dual SIM
> +	069a  130 [RM-1035] (Charging only)
> +	06fc  Lumia 640 Phone
> +	0720  X (RM-980)
> +	0800  Connectivity Cable DKU-5
> +	0801  Data Cable DKU-6
> +	0802  CA-42 Phone Parent
> +0422  ADI Systems, Inc.
> +0423  Computer Access Technology Corp.
> +	000a  NetMate Ethernet
> +	000c  NetMate2 Ethernet
> +	000d  USB Chief Analyzer
> +	0100  Generic Universal Protocol Analyzer
> +	0101  UPA USBTracer
> +	0200  Generic 10K Universal Protocol Analyzer
> +	020a  PETracer ML
> +	0300  Generic Universal Protocol Analyzer
> +	0301  2500H Tracer Trainer
> +	030a  PETracer x1
> +	1237  Andromeda Hub
> +0424  Microchip Technology, Inc. (formerly SMSC)
> +	0001  Integrated Hub
> +	0140  LPC47M14x hub
> +	0acd  Sitecom Internal Multi Memory reader/writer MD-005
> +	0fdc  Floppy
> +	10cd  Sitecom Internal Multi Memory reader/writer MD-005
> +	2020  USB Hub
> +	20cd  Sitecom Internal Multi Memory reader/writer MD-005
> +	20fc  6-in-1 Card Reader
> +	2134  Hub
> +	2228  9-in-2 Card Reader
> +	223a  8-in-1 Card Reader
> +	2412  Hub
> +	2503  USB 2.0 Hub
> +	2504  Hub
> +	2507  hub
> +	2512  USB 2.0 Hub
> +	2513  2.0 Hub
> +	2514  USB 2.0 Hub
> +	2517  Hub
> +	2524  USB MultiSwitch Hub
> +	2602  USB 2.0 Hub
> +	2640  USB 2.0 Hub
> +	2660  Hub
> +	2744  Hub
> +	274d  HTC Hub Controller
> +	2807  Hub
> +	3fc7  RME Babyface audio system
> +	3fcc  RME MADIface
> +	4041  Hub and media card controller
> +	4060  Ultra Fast Media Reader
> +	4064  Ultra Fast Media Reader
> +	4712  USB4712 high-speed hub
> +	4713  USB4715 high-speed hub (2 ports disabled)
> +	4714  USB4715 high-speed hub (1 port disabled)
> +	4715  USB4715 high-speed hub
> +	4910  USB491x hub integrated functions (primary)
> +	4912  USB4912 high-speed hub (1 port disabled)
> +	4914  USB4914 high-speed hub
> +	4916  USB4916 high-speed hub
> +	4920  USB491x hub integrated functions (secondary)
> +	4925  USB4925 high-speed hub (primary upstream)
> +	4927  USB4927 high-speed hub (primary upstream)
> +	4931  USB4925/4927 high-speed hub (secondary upstream)
> +	4940  USB47xx/49xx hub integrated WinUSB
> +	4942  USB47xx/49xx hub integrated I2S audio port
> +	4943  USB47xx/49xx hub integrated I2S audio + HID port
> +	4944  USB47xx/49xx hub integrated serial port
> +	4946  USB47xx/49xx hub integrated serial + I2S audio port
> +	4947  USB47xx/49xx hub integrated serial + I2S audio + HID port
> +	494a  USB47xx/49xx hub integrated WinUSB + I2S audio port
> +	494b  USB47xx/49xx hub integrated WinUSB + I2S audio + HID port
> +	494c  USB47xx/49xx hub integrated WinUSB + serial port
> +	494e  USB47xx/49xx hub integrated WinUSB + serial + I2S audio port
> +	494f  USB47xx/49xx hub integrated WinUSB + serial + I2S audio + HID port
> +	5434  Hub
> +	5534  Hub
> +	5744  Hub
> +	5807  Hub
> +	7500  LAN7500 Ethernet 10/100/1000 Adapter
> +	9500  LAN9500/LAN9500i
> +	9512  SMC9512/9514 USB Hub
> +	9514  SMC9514 Hub
> +	9904  LAN9512/LAN9514 Ethernet 10/100 Adapter (SAL10)
> +	9e00  LAN9500A/LAN9500Ai
> +	a700  2 Port Hub
> +	ec00  SMSC9512/9514 Fast Ethernet Adapter
> +0425  Motorola Semiconductors HK, Ltd
> +	0101  G-Tech Wireless Mouse & Keyboard
> +	f102  G-Tech U+P Wireless Mouse
> +0426  Integrated Device Technology, Inc.
> +	0426  WDM Driver
> +0427  Motorola Electronics Taiwan, Ltd
> +0428  Advanced Gravis Computer Tech, Ltd
> +	4001  GamePad Pro
> +0429  Cirrus Logic
> +042a  Ericsson Austrian, AG
> +042b  Intel Corp.
> +	9316  8x931Hx Customer Hub
> +042c  Innovative Semiconductors, Inc.
> +042d  Micronics
> +042e  Acer, Inc.
> +	0380  MP3 Player
> +042f  Molex, Inc.
> +0430  Fujitsu Component Limited
> +	0002  109 Keyboard
> +	0005  Type 6 Keyboard
> +	000a  109 Japanese Keyboard
> +	000b  109 Japanese Keyboard
> +	0082  109 Japanese Keyboard
> +	0083  109 Japanese Keyboard
> +	00a2  Type 7 Keyboard
> +	0100  3-button Mouse
> +	0502  Panasonic CF-19 HID Touch Panel
> +	100e  24.1" LCD Monitor v4 / FID-638 Mouse
> +	36ba  Bus Powered Hub
> +	a101  remote key/mouse for P3 chip
> +	a102  remote key/mouse/storage for P3 chip
> +	a103  remote storage for P3 chip
> +	a111  remote keyboard for P4 chip
> +	a112  remote mouse for P4 chip
> +	a113  remote storage for P4 chip
> +	a4a2  Ethernet (RNDIS and CDC ethernet)
> +	cdab  Raritan KVM dongle
> +0431  Itac Systems, Inc.
> +	0100  Mouse-Trak 3-button Track Ball
> +0432  Unisys Corp.
> +	0031  Document Processor
> +0433  Alps Electric, Inc.
> +	1101  IBM Game Controller
> +	abab  Keyboard
> +0434  Samsung Info. Systems America, Inc.
> +0435  Hyundai Electronics America
> +0436  Taugagreining HF
> +	0005  CameraMate (DPCM_USB)
> +0437  Framatome Connectors USA
> +0438  Advanced Micro Devices, Inc.
> +	7900  Root Hub
> +0439  Voice Technologies Group
> +043d  Lexmark International, Inc.
> +	0001  Laser Printer
> +	0002  Optra E310 Printer
> +	0003  Laser Printer
> +	0004  Laser Printer
> +	0005  Laser Printer
> +	0006  Laser Printer
> +	0007  Laser Printer
> +	0008  Inkjet Color Printer
> +	0009  Optra S2450 Printer
> +	000a  Laser Printer
> +	000b  Inkjet Color Printer
> +	000c  Optra E312 Printer
> +	000d  Laser Printer
> +	000e  Laser Printer
> +	000f  Laser Printer
> +	0010  Laser Printer
> +	0011  Laser Printer
> +	0012  Inkjet Color Printer
> +	0013  Inkjet Color Printer
> +	0014  InkJet Color Printer
> +	0015  InkJet Color Printer
> +	0016  Z12 Color Jetprinter
> +	0017  Z32 printer
> +	0018  Z52 Printer
> +	0019  Forms Printer
> +	001a  Z65 Printer
> +	001b  InkJet Photo Printer
> +	001c  Kodak Personal Picture Maker 200 Printer
> +	001d  InkJet Color Printer
> +	001e  InkJet Photo Printer
> +	001f  Kodak Personal Picture Maker 200 Card Reader
> +	0020  Z51 Printer
> +	0021  Z33 Printer
> +	0022  InkJet Color Printer
> +	0023  Laser Printer
> +	0024  Laser Printer
> +	0025  InkJet Color Printer
> +	0026  InkJet Color Printer
> +	0027  InkJet Color Printer
> +	0028  InkJet Color Printer
> +	0029  Scan Print Copy
> +	002a  Scan Print Copy
> +	002b  Scan Print Copy
> +	002c  Scan Print Copy
> +	002d  X70/X73 Scan/Print/Copy
> +	002e  Scan Print Copy
> +	002f  Scan Print Copy
> +	0030  Scan Print Copy
> +	0031  Scan Print Copy
> +	0032  Scan Print Copy
> +	0033  Scan Print Copy
> +	0034  Scan Print Copy
> +	0035  Scan Print Copy
> +	0036  Scan Print Copy
> +	0037  Scan Print Copy
> +	0038  Scan Print Copy
> +	0039  Scan Print Copy
> +	003a  Scan Print Copy
> +	003b  Scan Print Copy
> +	003c  Scan Print Copy
> +	003d  X83 Scan/Print/Copy
> +	003e  Scan Print Copy
> +	003f  Scan Print Copy
> +	0040  Scan Print Copy
> +	0041  Scan Print Copy
> +	0042  Scan Print Copy
> +	0043  Scan Print Copy
> +	0044  Scan Print Copy
> +	0045  Scan Print Copy
> +	0046  Scan Print Copy
> +	0047  Scan Print Copy
> +	0048  Scan Print Copy
> +	0049  Scan Print Copy
> +	004a  Scan Print Copy
> +	004b  Scan Print Copy
> +	004c  Scan Print Copy
> +	004d  Laser Printer
> +	004e  Laser Printer
> +	004f  InkJet Color Printer
> +	0050  InkJet Color Printer
> +	0051  Laser Printer
> +	0052  Laser Printer
> +	0053  InkJet Color Printer
> +	0054  InkJet Color Printer
> +	0057  Z35 Printer
> +	0058  Laser Printer
> +	005a  X63
> +	005c  InkJet Color Printer
> +	0060  X74/X75 Scanner
> +	0061  X74 Hub
> +	0065  X5130
> +	0069  X74/X75 Printer
> +	006d  X125
> +	006e  C510
> +	0072  X6170 Printer
> +	0073  InkJet Color Printer
> +	0078  InkJet Color Printer
> +	0079  InkJet Color Printer
> +	007a  Generic Hub
> +	007b  InkJet Color Printer
> +	007c  X1110/X1130/X1140/X1150/X1170/X1180/X1185
> +	007d  Photo 3150
> +	008a  4200 series
> +	008b  InkJet Color Printer
> +	008c  to CF/SM/SD/MS Card Reader
> +	008e  InkJet Color Printer
> +	008f  X422
> +	0091  Laser Printer E232
> +	0093  X5250
> +	0095  E220 Printer
> +	0096  2200 series
> +	0097  P6250
> +	0098  7100 series
> +	009e  P910 series Human Interface Device
> +	009f  InkJet Color Printer
> +	00a9  IBM Infoprint 1410 MFP
> +	00ab  InkJet Color Printer
> +	00b2  3300 series
> +	00b8  7300 series
> +	00b9  8300 series
> +	00ba  InkJet Color Printer
> +	00bb  2300 series
> +	00bd  Printing Support
> +	00be  Printing Support
> +	00bf  Printing Support
> +	00c0  6300 series
> +	00c1  4300 series
> +	00c7  Printing Support
> +	00c8  Printing Support
> +	00c9  Printing Support
> +	00cb  Printing Support
> +	00cc  E120(n)
> +	00d0  9300 series
> +	00d3  X340 Scanner
> +	00d4  X342n Scanner
> +	00d5  Printing Support
> +	00d6  X340 Scanner
> +	00e8  X642e
> +	00e9  2400 series
> +	00f6  3400 series
> +	00f7  InkJet Color Printer
> +	00ff  InkJet Color Printer
> +	010b  2500 series
> +	010d  3500-4500 series
> +	010f  6500 series
> +	0142  X3650 (Printer, Scanner, Copier)
> +	01fa  S310 series
> +	4303  Xerox WorkCentre Pro 412
> +043e  LG Electronics USA, Inc.
> +	3001  AN-WF100 802.11abgn Wireless Adapter [Broadcom BCM4323]
> +	3004  TWFM-B003D 802.11abgn Wireless Module [Broadcom BCM43236B]
> +	3009  VC400
> +	3101  AN-WF500 802.11abgn + BT Wireless Adapter [Broadcom BCM43242]
> +	42bd  Flatron 795FT Plus Monitor
> +	4a4d  Flatron 915FT Plus Monitor
> +	7001  MF-PD100 Soul Digital MP3 Player
> +	7013  MP3 Player
> +	70d7  Mouse Scanner LSM-150 [LG Smart Scan Mouse]
> +	70f5  External HDD
> +	8484  LPC-U30 Webcam II
> +	8585  LPC-UC35 Webcam
> +	8888  Electronics VCS Camera II(LPC-U20)
> +	9800  Remote Control Receiver_iMON
> +	9803  eHome Infrared Receiver
> +	9804  DMB Receiver Control
> +	9c01  LGE Sync
> +043f  RadiSys Corp.
> +0440  Eizo Nanao Corp.
> +0441  Winbond Systems Lab.
> +	1456  Hub
> +0442  Ericsson, Inc.
> +	abba  Bluetooth Device
> +0443  Gateway, Inc.
> +	000e  Multimedia Keyboard
> +	002e  Millennium Keyboard
> +0445  Lucent Technologies, Inc.
> +0446  NMB Technologies Corp.
> +	6781  Keyboard with PS/2 Mouse Port
> +	6782  Keyboard
> +0447  Momentum Microsystems
> +0449  Duta Multi Robotik
> +	0128  Menengah
> +	0210  Dasar
> +	0612  Lanjutan
> +044a  Shamrock Tech. Co., Ltd
> +044b  WSI
> +044c  CCL/ITRI
> +044d  Siemens Nixdorf AG
> +044e  Alps Electric Co., Ltd
> +	1104  Japanese Keyboard
> +	2002  MD-5500 Printer
> +	2014  Bluetooth Device
> +	3001  UGTZ4 Bluetooth
> +	3002  Bluetooth Device
> +	3003  Bluetooth Device
> +	3004  Bluetooth Adapter
> +	3005  Integrated Bluetooth Device
> +	3006  Bluetooth Adapter
> +	3007  Bluetooth Controller (ALPS/UGX)
> +	300c  Bluetooth Controller (ALPS/UGPZ6)
> +	300d  Bluetooth Controller (ALPS/UGPZ6)
> +	3010  Bluetooth Adapter
> +	3017  BCM2046 Bluetooth Device
> +	ffff  Compaq Bluetooth Multiport Module
> +044f  ThrustMaster, Inc.
> +	0400  HOTAS Cougar
> +	0402  HOTAS Warthog Joystick
> +	0404  HOTAS Warthog Throttle
> +	044f  GP XID
> +	0f00  Steering Wheel for Xbox
> +	0f03  Steering Wheel for Xbox
> +	0f07  Controller for Xbox
> +	0f0c  Xbox Memory Unit (8MB)
> +	0f10  Modena GT Wheel
> +	a003  Rage 3D Game Pad
> +	a01b  PK-GP301 Driving Wheel
> +	a0a0  Top Gun Joystick
> +	a0a1  Top Gun Joystick (rev2)
> +	a0a3  Fusion Digital GamePad
> +	a201  PK-GP201 PlayStick
> +	b108  T-Flight Hotas X Flight Stick
> +	b10a  T.16000M Joystick
> +	b203  360 Modena Pro Wheel
> +	b300  Firestorm Dual Power
> +	b303  FireStorm Dual Analog 2
> +	b304  Firestorm Dual Power
> +	b307  vibrating Upad
> +	b30b  Wireless VibrationPad
> +	b315  Firestorm Dual Analog 3
> +	b320  Dual Trigger gamepad PC/PS2 2.0
> +	b323  Dual Trigger 3-in-1 (PC Mode)
> +	b324  Dual Trigger 3-in-1 (PS3 Mode)
> +	b326  Gamepad GP XID
> +	b351  F16 MFD 1
> +	b352  F16 MFD 2
> +	b365  UbiSoft UbiConnect
> +	b603  force feedback Wheel
> +	b605  force feedback Racing Wheel
> +	b651  Ferrari GT Rumble Force Wheel
> +	b653  RGT Force Feedback Clutch Racing Wheel
> +	b654  Ferrari GT Force Feedback Wheel
> +	b677  T150 Racing Wheel
> +	b678  T.Flight Rudder Pedals
> +	b679  T-Rudder
> +	b687  TWCS Throttle
> +	b700  Tacticalboard
> +0450  DFI, Inc.
> +0451  Texas Instruments, Inc.
> +	0422  TUSB422 Port Controller with Power Delivery
> +	1234  Bluetooth Device
> +	1428  Hub
> +	1446  TUSB2040/2070 Hub
> +	16a2  CC Debugger
> +	16a6  BM-USBD1 BlueRobin RF heart rate sensor receiver
> +	16a8  CC2531 ZigBee
> +	16ae  CC2531 Dongle
> +	2036  TUSB2036 Hub
> +	2046  TUSB2046 Hub
> +	2077  TUSB2077 Hub
> +	2f90  SM-USB-DIG
> +	3200  TUSB3200 Boot Loader
> +	3410  TUSB3410 Microcontroller
> +	3f00  OMAP1610
> +	3f02  SMC WSKP100 Wi-Fi Phone
> +	505f  TUSB5052 Serial
> +	5153  TUSB5052 Hub
> +	5409  Frontier Labs NEX IA+ Digital Audio Player
> +	6000  AU5 ADSL Modem (pre-reenum)
> +	6001  AU5 ADSL Modem
> +	6060  RNDIS/BeWAN ADSL2+
> +	6070  RNDIS/BeWAN ADSL2+
> +	625f  TUSB6250 ATA Bridge
> +	8041  Hub
> +	8042  Hub
> +	8043  Hub
> +	8140  TUSB8041 4-Port Hub
> +	8142  TUSB8041 4-Port Hub
> +	9261  TUSB9261 SerialATA-Bridge
> +	926b  TUSB9260 Boot Loader
> +	bef3  CC1352R1 Launchpad
> +	dbc0  Device Bay Controller
> +	e001  GraphLink [SilverLink]
> +	e003  TI-84 Plus Calculator
> +	e004  TI-89 Titanium Calculator
> +	e008  TI-84 Plus Silver Calculator
> +	e00e  TI-89 Titanium Presentation Link
> +	e00f  TI-84 Plus Presentation Link
> +	e010  TI SmartPad Keyboard
> +	e011  Nspire CAS+ prototype
> +	e012  TI-Nspire Calculator
> +	e013  Network Bridge
> +	e01c  Data Collection Sled [Nspire Lab Cradle, Nspire Datatracker Cradle]
> +	e01e  Nspire CX Navigator Access Point
> +	e01f  Python Adapter (firmware install mode)
> +	e020  Python Adapter
> +	e022  Nspire CX II
> +	f430  MSP-FET430UIF JTAG Tool
> +	f432  eZ430 Development Tool
> +	ffff  Bluetooth Device
> +0452  Mitsubishi Electronics America, Inc.
> +	0021  HID Monitor Controls
> +	0050  Diamond Pro 900u CRT Monitor
> +	0051  Integrated Hub
> +	0100  Control Panel for Leica TCS SP5
> +0453  CMD Technology
> +	6781  NMB Keyboard
> +	6783  Chicony Composite Keyboard
> +0454  Vobis Microcomputer AG
> +0455  Telematics International, Inc.
> +0456  Analog Devices, Inc.
> +	f000  FT2232 JTAG ICE [gnICE]
> +	f001  FT2232H Hi-Speed JTAG ICE [gnICE+]
> +0457  Silicon Integrated Systems Corp.
> +	0150  Super Talent 1GB Flash Drive
> +	0151  Super Flash 1GB / GXT  64MB Flash Drive
> +	0162  SiS162 usb Wireless LAN Adapter
> +	0163  SiS163U 802.11 Wireless LAN Adapter
> +	0817  SiS-184-ASUS-4352.17 touch panel
> +	10e1  HID Touch Controller
> +	5401  Wireless Adapter RO80211GS-USB
> +0458  KYE Systems Corp. (Mouse Systems)
> +	0001  Mouse
> +	0002  Genius NetMouse Pro
> +	0003  Genius NetScroll+
> +	0006  Easy Mouse+
> +	0007  Trackbar Emotion
> +	000b  NetMouse Wheel(P+U)
> +	000c  TACOMA Fingerprint V1.06.01
> +	000e  Genius NetScroll Optical
> +	0013  TACOMA Fingerprint Mouse V1.06.01
> +	001a  Genius WebScroll+
> +	002e  NetScroll + Traveler / NetScroll 110
> +	0036  Pocket Mouse LE
> +	0039  NetScroll+ Superior
> +	003a  NetScroll+ Mini Traveler / Genius NetScroll 120
> +	004c  Slimstar Pro Keyboard
> +	0056  Ergo 300 Mouse
> +	0057  Enhanced Gaming Device
> +	0059  Enhanced Laser Device
> +	005a  Enhanced Device
> +	005b  Enhanced Device
> +	005c  Enhanced Laser Gaming Device
> +	005d  Enhanced Device
> +	0061  Bluetooth Dongle
> +	0066  Genius Traveler 1000 Wireless Mouse
> +	0072  Navigator 335
> +	0083  Bluetooth Dongle
> +	0087  Ergo 525V Laser Mouse
> +	0088  Genius Traveler 515 Laser
> +	0089  Genius Traveler 350
> +	00ca  Pen Mouse
> +	0100  EasyPen Tablet
> +	0101  CueCat
> +	011b  NetScroll T220
> +	0186  Genius DX-120 Mouse
> +	1001  Joystick
> +	1002  Game Pad
> +	1003  Genius VideoCam
> +	1004  Flight2000 F-23 Joystick
> +	100a  Aashima Technology Trust Sight Fighter Vibration Feedback Joystick
> +	2001  ColorPage-Vivid Pro Scanner
> +	2004  ColorPage-HR6 V1 Scanner
> +	2005  ColorPage-HR6/Vivid3
> +	2007  ColorPage-HR6 V2 Scanner
> +	2008  ColorPage-HR6 V2 Scanner
> +	2009  ColorPage-HR6A Scanner
> +	2011  ColorPage-Vivid3x Scanner
> +	2012  Plustek Scanner
> +	2013  ColorPage-HR7 Scanner
> +	2014  ColorPage-Vivid4
> +	2015  ColorPage-HR7LE Scanner
> +	2016  ColorPage-HR6X Scanner
> +	2017  ColorPage-Vivid3xe
> +	2018  ColorPage-HR7X
> +	2019  ColorPage-HR6X Slim
> +	201a  ColorPage-Vivid4xe
> +	201b  ColorPage-Vivid4x
> +	201c  ColorPage-HR8
> +	201d  ColorPage-Vivid 1200 X
> +	201e  ColorPage-Slim 1200
> +	201f  ColorPage-Vivid 1200 XE
> +	2020  ColorPage-Slim 1200 USB2
> +	2021  ColorPage-SF600
> +	3017  SPEED WHEEL 3 Vibration
> +	3018  Wireless 2.4Ghz Game Pad
> +	3019  10-Button USB Joystick with Vibration
> +	301a  MaxFire G-12U Vibration
> +	301c  Genius MaxFighter F-16U
> +	301d  Genius MaxFire MiniPad
> +	400f  Genius TVGo DVB-T02Q MCE
> +	4012  TVGo DVB-T03 [AF9015]
> +	5003  G-pen 560 Tablet
> +	5004  G-pen Tablet
> +	5005  Genius EasyPen M406
> +	5012  Genius EasyPen M406W
> +	5014  Genius EasyPen 340
> +	505e  Genius iSlim 330
> +	6001  GF3000F Ethernet Adapter
> +	7004  VideoCAM Express V2
> +	7006  Dsc 1.3 Smart Camera Device
> +	7007  VideoCAM Web
> +	7009  G-Shot G312 Still Camera Device
> +	700c  VideoCAM Web V3
> +	700d  G-Shot G511 Composite Device
> +	700f  VideoCAM Web
> +	7012  WebCAM USB2.0
> +	7014  VideoCAM Live V3
> +	701c  G-Shot G512 Still Camera
> +	7020  Sim 321C
> +	7025  Eye 311Q Camera
> +	7029  Genius Look 320s (SN9C201 + HV7131R)
> +	702f  Genius Slim 322
> +	7035  i-Look 325T Camera
> +	7045  Genius Look 1320 V2
> +	704c  Genius i-Look 1321
> +	704d  Slim 1322AF
> +	7055  Slim 2020AF camera
> +	705a  Asus USB2.0 Webcam
> +	705c  Genius iSlim 1300AF
> +	7061  Genius iLook 1321 V2
> +	7066  Acer Crystal Eye Webcam
> +	7067  Genius iSlim 1300AF V2
> +	7068  Genius eFace 1325R
> +	706d  Genius iSlim 2000AF V2
> +	7076  Genius FaceCam 312
> +	7079  FaceCam 2025R
> +	707f  TVGo DVB-T03 [RTL2832]
> +	7088  WideCam 1050
> +	7089  Genius FaceCam 320
> +	708c  Genius WideCam F100
> +0459  Adobe Systems, Inc.
> +045a  SONICblue, Inc.
> +	07da  Supra Express 56K modem
> +	0b4a  SupraMax 2890 56K Modem [Lucent Atlas]
> +	0b68  SupraMax 56K Modem
> +	5001  Rio 600 MP3 Player
> +	5002  Rio 800 MP3 Player
> +	5003  Nike Psa/Play MP3 Player
> +	5005  Rio S10 MP3 Player
> +	5006  Rio S50 MP3 Player
> +	5007  Rio S35 MP3 Player
> +	5008  Rio 900 MP3 Player
> +	5009  Rio S30 MP3 Player
> +	500d  Fuse MP3 Player
> +	500e  Chiba MP3 Player
> +	500f  Cali MP3 Player
> +	5010  Rio S11 MP3 Player
> +	501c  Virgin MPF-1000
> +	501d  Rio Fuse
> +	501e  Rio Chiba
> +	501f  Rio Cali
> +	503f  Cali256 MP3 Player
> +	5042  Rio Forge
> +	5202  Rio Riot MP3 Player
> +	5210  Rio Karma Music Player
> +	5220  Rio Nitrus MP3 Player
> +	5221  Rio Eigen
> +045b  Hitachi, Ltd
> +	0053  RX610 RX-Stick
> +	0229  mSATA Adapter [renkforce Pi-102]
> +045d  Nortel Networks, Ltd
> +045e  Microsoft Corp.
> +	0007  SideWinder Game Pad
> +	0008  SideWinder Precision Pro
> +	0009  IntelliMouse
> +	000b  Natural Keyboard Elite
> +	000e  SideWinder® Freestyle Pro
> +	0014  Digital Sound System 80
> +	001a  SideWinder Precision Racing Wheel
> +	001b  SideWinder Force Feedback 2 Joystick
> +	001c  Internet Keyboard Pro
> +	001d  Natural Keyboard Pro
> +	001e  IntelliMouse Explorer
> +	0023  Trackball Optical
> +	0024  Trackball Explorer
> +	0025  IntelliEye Mouse
> +	0026  SideWinder GamePad Pro
> +	0027  SideWinder PnP GamePad
> +	0028  SideWinder Dual Strike
> +	0029  IntelliMouse Optical
> +	002b  Internet Keyboard Pro
> +	002d  Internet Keyboard
> +	002f  Integrated Hub
> +	0033  Sidewinder Strategic Commander
> +	0034  SideWinder Force Feedback Wheel
> +	0038  SideWinder Precision 2
> +	0039  IntelliMouse Optical
> +	003b  SideWinder Game Voice
> +	003c  SideWinder Joystick
> +	0040  Wheel Mouse Optical
> +	0047  IntelliMouse Explorer 3.0
> +	0048  Office Keyboard 1.0A
> +	0053  Optical Mouse
> +	0059  Wireless IntelliMouse Explorer
> +	005c  Office Keyboard (106/109)
> +	005f  Wireless MultiMedia Keyboard
> +	0061  Wireless MultiMedia Keyboard (106/109)
> +	0063  Wireless Natural MultiMedia Keyboard
> +	0065  Wireless Natural MultiMedia Keyboard (106/109)
> +	006a  Wireless Optical Mouse (IntelliPoint)
> +	006d  eHome Remote Control Keyboard keys
> +	006e  MN-510 802.11b Wireless Adapter [Intersil ISL3873B]
> +	006f  Smart Display Reference Device
> +	0070  Wireless MultiMedia Keyboard
> +	0071  Wireless MultiMedia Keyboard (106/109)
> +	0072  Wireless Natural MultiMedia Keyboard
> +	0073  Wireless Natural MultiMedia Keyboard (106/109)
> +	0079  IXI Ogo CT-17 handheld device
> +	007a  10/100 USB NIC
> +	007d  Notebook Optical Mouse
> +	007e  Wireless Transceiver for Bluetooth
> +	0080  Digital Media Pro Keyboard
> +	0083  Basic Optical Mouse
> +	0084  Basic Optical Mouse
> +	008a  Wireless Optical Desktop Receiver 2.0A
> +	008b  Dual Receiver Wireless Mouse (IntelliPoint)
> +	008c  Wireless Intellimouse Explorer 2.0
> +	0095  IntelliMouse Explorer 4.0 (IntelliPoint)
> +	009c  Wireless Transceiver for Bluetooth 2.0
> +	009d  Wireless Optical Desktop 3.0
> +	00a0  eHome Infrared Receiver
> +	00a4  Compact Optical Mouse, model 1016
> +	00b0  Digital Media Pro Keyboard
> +	00b4  Digital Media Keyboard 1.0A
> +	00b9  Wireless Optical Mouse 3.0
> +	00bb  Fingerprint Reader
> +	00bc  Fingerprint Reader
> +	00bd  Fingerprint Reader
> +	00c2  MN-710 802.11g Wireless Adapter [Intersil ISL3886]
> +	00c9  MTP Device
> +	00ca  Fingerprint Reader
> +	00cb  Basic Optical Mouse v2.0
> +	00ce  Generic PPC Flash device
> +	00d1  Optical Mouse with Tilt Wheel
> +	00d2  Notebook Optical Mouse with Tilt Wheel
> +	00da  eHome Infrared Receiver
> +	00db  Natural Ergonomic Keyboard 4000 V1.0
> +	00dd  Comfort Curve Keyboard 2000 V1.0
> +	00e1  Wireless Laser Mouse 6000 Receiver
> +	00f4  LifeCam VX-6000 (SN9C20x + OV9650)
> +	00f5  LifeCam VX-3000
> +	00f6  Comfort Optical Mouse 1000
> +	00f7  LifeCam VX-1000
> +	00f8  LifeCam NX-6000
> +	00f9  Wireless Desktop Receiver 3.1
> +	0202  Xbox Controller
> +	0280  Xbox Memory Unit (8MB)
> +	0283  Xbox Communicator
> +	0284  Xbox DVD Playback Kit
> +	0285  Xbox Controller S
> +	0288  Xbox Controller S Hub
> +	0289  Xbox Controller S
> +	028b  Xbox360 DVD Emulator
> +	028d  Xbox360 Memory Unit 64MB
> +	028e  Xbox360 Controller
> +	028f  Xbox360 Wireless Controller
> +	0290  Xbox360 Performance Pipe (PIX)
> +	0291  Xbox 360 Wireless Receiver for Windows
> +	0292  Xbox360 Wireless Networking Adapter
> +	029c  Xbox360 HD-DVD Drive
> +	029d  Xbox360 HD-DVD Drive
> +	029e  Xbox360 HD-DVD Memory Unit
> +	02a0  Xbox360 Big Button IR
> +	02a1  Xbox 360 Wireless Receiver for Windows
> +	02a8  Xbox360 Wireless N Networking Adapter [Atheros AR7010+AR9280]
> +	02ad  Xbox NUI Audio
> +	02ae  Xbox NUI Camera
> +	02b0  Xbox NUI Motor
> +	02b6  Xbox360 Bluetooth Wireless Headset
> +	02bb  Kinect Audio
> +	02be  Kinect for Windows NUI Audio
> +	02bf  Kinect for Windows NUI Camera
> +	02c2  Kinect for Windows NUI Motor
> +	02d1  Xbox One Controller
> +	02d5  Xbox One Digital TV Tuner
> +	02dd  Xbox One Controller (Firmware 2015)
> +	02e3  Xbox One Elite Controller
> +	02e6  Wireless XBox Controller Dongle
> +	02ea  Xbox One S Controller
> +	02fd  Xbox One S Controller [Bluetooth]
> +	0400  Windows Powered Pocket PC 2002
> +	0401  Windows Powered Pocket PC 2002
> +	0402  Windows Powered Pocket PC 2002
> +	0403  Windows Powered Pocket PC 2002
> +	0404  Windows Powered Pocket PC 2002
> +	0405  Windows Powered Pocket PC 2002
> +	0406  Windows Powered Pocket PC 2002
> +	0407  Windows Powered Pocket PC 2002
> +	0408  Windows Powered Pocket PC 2002
> +	0409  Windows Powered Pocket PC 2002
> +	040a  Windows Powered Pocket PC 2002
> +	040b  Windows Powered Pocket PC 2002
> +	040c  Windows Powered Pocket PC 2002
> +	040d  Windows Powered Pocket PC 2002
> +	040e  Windows Powered Pocket PC 2002
> +	040f  Windows Powered Pocket PC 2002
> +	0410  Windows Powered Pocket PC 2002
> +	0411  Windows Powered Pocket PC 2002
> +	0412  Windows Powered Pocket PC 2002
> +	0413  Windows Powered Pocket PC 2002
> +	0414  Windows Powered Pocket PC 2002
> +	0415  Windows Powered Pocket PC 2002
> +	0416  Windows Powered Pocket PC 2002
> +	0417  Windows Powered Pocket PC 2002
> +	0432  Windows Powered Pocket PC 2003
> +	0433  Windows Powered Pocket PC 2003
> +	0434  Windows Powered Pocket PC 2003
> +	0435  Windows Powered Pocket PC 2003
> +	0436  Windows Powered Pocket PC 2003
> +	0437  Windows Powered Pocket PC 2003
> +	0438  Windows Powered Pocket PC 2003
> +	0439  Windows Powered Pocket PC 2003
> +	043a  Windows Powered Pocket PC 2003
> +	043b  Windows Powered Pocket PC 2003
> +	043c  Windows Powered Pocket PC 2003
> +	043d  Becker Traffic Assist Highspeed 7934
> +	043e  Windows Powered Pocket PC 2003
> +	043f  Windows Powered Pocket PC 2003
> +	0440  Windows Powered Pocket PC 2003
> +	0441  Windows Powered Pocket PC 2003
> +	0442  Windows Powered Pocket PC 2003
> +	0443  Windows Powered Pocket PC 2003
> +	0444  Windows Powered Pocket PC 2003
> +	0445  Windows Powered Pocket PC 2003
> +	0446  Windows Powered Pocket PC 2003
> +	0447  Windows Powered Pocket PC 2003
> +	0448  Windows Powered Pocket PC 2003
> +	0449  Windows Powered Pocket PC 2003
> +	044a  Windows Powered Pocket PC 2003
> +	044b  Windows Powered Pocket PC 2003
> +	044c  Windows Powered Pocket PC 2003
> +	044d  Windows Powered Pocket PC 2003
> +	044e  Windows Powered Pocket PC 2003
> +	044f  Windows Powered Pocket PC 2003
> +	0450  Windows Powered Pocket PC 2003
> +	0451  Windows Powered Pocket PC 2003
> +	0452  Windows Powered Pocket PC 2003
> +	0453  Windows Powered Pocket PC 2003
> +	0454  Windows Powered Pocket PC 2003
> +	0455  Windows Powered Pocket PC 2003
> +	0456  Windows Powered Pocket PC 2003
> +	0457  Windows Powered Pocket PC 2003
> +	0458  Windows Powered Pocket PC 2003
> +	0459  Windows Powered Pocket PC 2003
> +	045a  Windows Powered Pocket PC 2003
> +	045b  Windows Powered Pocket PC 2003
> +	045c  Windows Powered Pocket PC 2003
> +	045d  Windows Powered Pocket PC 2003
> +	045e  Windows Powered Pocket PC 2003
> +	045f  Windows Powered Pocket PC 2003
> +	0460  Windows Powered Pocket PC 2003
> +	0461  Windows Powered Pocket PC 2003
> +	0462  Windows Powered Pocket PC 2003
> +	0463  Windows Powered Pocket PC 2003
> +	0464  Windows Powered Pocket PC 2003
> +	0465  Windows Powered Pocket PC 2003
> +	0466  Windows Powered Pocket PC 2003
> +	0467  Windows Powered Pocket PC 2003
> +	0468  Windows Powered Pocket PC 2003
> +	0469  Windows Powered Pocket PC 2003
> +	046a  Windows Powered Pocket PC 2003
> +	046b  Windows Powered Pocket PC 2003
> +	046c  Windows Powered Pocket PC 2003
> +	046d  Windows Powered Pocket PC 2003
> +	046e  Windows Powered Pocket PC 2003
> +	046f  Windows Powered Pocket PC 2003
> +	0470  Windows Powered Pocket PC 2003
> +	0471  Windows Powered Pocket PC 2003
> +	0472  Windows Powered Pocket PC 2003
> +	0473  Windows Powered Pocket PC 2003
> +	0474  Windows Powered Pocket PC 2003
> +	0475  Windows Powered Pocket PC 2003
> +	0476  Windows Powered Pocket PC 2003
> +	0477  Windows Powered Pocket PC 2003
> +	0478  Windows Powered Pocket PC 2003
> +	0479  Windows Powered Pocket PC 2003
> +	047a  Windows Powered Pocket PC 2003
> +	047b  Windows Powered Pocket PC 2003
> +	04c8  Windows Powered Smartphone 2002
> +	04c9  Windows Powered Smartphone 2002
> +	04ca  Windows Powered Smartphone 2002
> +	04cb  Windows Powered Smartphone 2002
> +	04cc  Windows Powered Smartphone 2002
> +	04cd  Windows Powered Smartphone 2002
> +	04ce  Windows Powered Smartphone 2002
> +	04d7  Windows Powered Smartphone 2003
> +	04d8  Windows Powered Smartphone 2003
> +	04d9  Windows Powered Smartphone 2003
> +	04da  Windows Powered Smartphone 2003
> +	04db  Windows Powered Smartphone 2003
> +	04dc  Windows Powered Smartphone 2003
> +	04dd  Windows Powered Smartphone 2003
> +	04de  Windows Powered Smartphone 2003
> +	04df  Windows Powered Smartphone 2003
> +	04e0  Windows Powered Smartphone 2003
> +	04e1  Windows Powered Smartphone 2003
> +	04e2  Windows Powered Smartphone 2003
> +	04e3  Windows Powered Smartphone 2003
> +	04e4  Windows Powered Smartphone 2003
> +	04e5  Windows Powered Smartphone 2003
> +	04e6  Windows Powered Smartphone 2003
> +	04e7  Windows Powered Smartphone 2003
> +	04e8  Windows Powered Smartphone 2003
> +	04e9  Windows Powered Smartphone 2003
> +	04ea  Windows Powered Smartphone 2003
> +	04ec  Windows Phone (Zune)
> +	063e  Zune HD Media Player
> +	0640  KIN Phone
> +	0641  KIN Phone
> +	0642  KIN Phone
> +	0707  Wireless Laser Mouse 8000
> +	0708  Transceiver v 3.0 for Bluetooth
> +	070a  Charon Bluetooth Dongle (DFU)
> +	070f  LifeChat LX-3000 Headset
> +	0710  Zune Media Player
> +	0713  Wireless Presenter Mouse 8000
> +	0719  Xbox 360 Wireless Adapter
> +	071f  Mouse/Keyboard 2.4GHz Transceiver V2.0
> +	0721  LifeCam NX-3000 (UVC-compliant)
> +	0723  LifeCam VX-7000 (UVC-compliant)
> +	0724  SideWinder Mouse
> +	0728  LifeCam VX-5000
> +	0730  Digital Media Keyboard 3000
> +	0734  Wireless Optical Desktop 700
> +	0736  Sidewinder X5 Mouse
> +	0737  Compact Optical Mouse 500
> +	0745  Nano Transceiver v1.0 for Bluetooth
> +	074a  LifeCam VX-500 [1357]
> +	0750  Wired Keyboard 600
> +	0752  Wired Keyboard 400
> +	075d  LifeCam Cinema
> +	0761  LifeCam VX-2000
> +	0765  Xbox360 Slim Internal Wireless Module (1400) [Marvell 88W8786U]
> +	0766  LifeCam VX-800
> +	0768  Sidewinder X4
> +	076c  Comfort Mouse 4500
> +	076d  LifeCam HD-5000
> +	0770  LifeCam VX-700
> +	0772  LifeCam Studio
> +	0779  LifeCam HD-3000
> +	077f  LifeChat LX-6000 Headset
> +	0780  Comfort Curve Keyboard 3000
> +	0797  Optical Mouse 200
> +	0799  Surface Pro embedded keyboard
> +	07a5  Wireless Receiver 1461C
> +	07b2  2.4GHz Transceiver v8.0 used by mouse Wireless Desktop 900
> +	07b6  Comfort Curve Keyboard 3000
> +	07b9  Wired Keyboard 200
> +	07c6  RTL8153 GigE [Surface Ethernet Adapter]
> +	07ca  Surface Pro 3 Docking Station Audio Device
> +	07cd  Surface Keyboard
> +	07f8  Wired Keyboard 600 (model 1576)
> +	07fd  Nano Transceiver 1.1
> +	0800  Wireless keyboard (All-in-One-Media)
> +	0810  LifeCam HD-3000
> +	0823  Classic IntelliMouse
> +	0900  Surface Dock Hub
> +	0901  Surface Dock Hub
> +	0902  Surface Dock Hub
> +	0903  Surface Dock Hub
> +	0904  Surface Dock Extender
> +	0905  Surface Dock Audio
> +	090b  Hub
> +	090c  SD Card
> +	091a  Hub
> +	0927  RTL8153B GigE [Surface Ethernet Adapter]
> +	0955  Hub
> +	0957  Hub
> +	09a0  RTL8153B GigE [Surface Ethernet Adapter]
> +	09c0  Surface Type Cover
> +	0a00  Lumia 950 Dual SIM (RM-1118)
> +	0b12  Xbox Wireless Controller (model 1914)
> +	930a  ISOUSB.SYS Intel 82930 Isochronous IO Test Board
> +	ffca  Catalina
> +	fff8  Keyboard
> +	ffff  Windows CE Mass Storage
> +0460  Ace Cad Enterprise Co., Ltd
> +	0004  Tablet (5x3.75)
> +	0006  LCD Tablet (12x9)
> +	0008  Tablet (3x2.25)
> +0461  Primax Electronics, Ltd
> +	0010  HP PR1101U / Primax PMX-KPR1101U Keyboard
> +	0300  G2-300 Scanner
> +	0301  G2E-300 Scanner
> +	0302  G2-300 #2 Scanner
> +	0303  G2E-300 #2 Scanner
> +	0340  Colorado 9600 Scanner
> +	0341  Colorado 600u Scanner
> +	0345  Visioneer 6200 Scanner
> +	0346  Memorex Maxx 6136u Scanner
> +	0347  Primascan Colorado 2600u/Visioneer 4400 Scanner
> +	0360  Colorado 19200 Scanner
> +	0361  Colorado 1200u Scanner
> +	0363  VistaScan Astra 3600(ENG)
> +	0364  LG Electronics Scanworks 600U Scanner
> +	0365  VistaScan Astra 3600(ENG)
> +	0366  6400
> +	0367  VistaScan Astra 3600(ENG)
> +	0371  Visioneer Onetouch 8920 Scanner
> +	0374  UMAX Astra 2500
> +	0375  VistaScan Astra 3600(ENG)
> +	0377  Medion MD 5345 Scanner
> +	0378  VistaScan Astra 3600(ENG)
> +	037b  Medion MD 6190 Scanner
> +	037c  VistaScan Astra 3600(ENG)
> +	0380  G2-600 Scanner
> +	0381  ReadyScan 636i Scanner
> +	0382  G2-600 #2 Scanner
> +	0383  G2E-600 Scanner
> +	038a  UMAX Astra 3000/3600
> +	038b  Xerox 2400 Onetouch
> +	038c  UMAX Astra 4100
> +	0392  Medion/Lifetec/Tevion/Cytron MD 6190
> +	03a8  9420M
> +	0813  IBM UltraPort Camera
> +	0815  Micro Innovations IC200 Webcam
> +	0819  Fujifilm IX-30 Camera [webcam mode]
> +	081a  Fujifilm IX-30 Camera [storage mode]
> +	081c  Elitegroup ECS-C11 Camera
> +	081d  Elitegroup ECS-C11 Storage
> +	0a00  Micro Innovations Web Cam 320
> +	4d01  Comfort Keyboard / Kensington Orbit Elite
> +	4d02  Mouse-in-a-Box
> +	4d03  Kensington Mouse-in-a-box
> +	4d04  Mouse
> +	4d06  Balless Mouse (HID)
> +	4d0f  HP Optical Mouse
> +	4d15  Dell Optical Mouse
> +	4d17  Optical Mouse
> +	4d20  HP Optical Mouse
> +	4d2a  PoPo Elixir Mouse (HID)
> +	4d2b  Wireless Laser Mini Mouse (HID)
> +	4d2c  PoPo Mini Pointer Mouse (HID)
> +	4d2e  Optical Mobile Mouse (HID)
> +	4d51  0Y357C PMX-MMOCZUL (B) [Dell Laser Mouse]
> +	4d62  HP Laser Mobile Mini Mouse
> +	4d75  Rocketfish RF-FLBTAD Bluetooth Adapter
> +	4d81  Dell N889 Optical Mouse
> +	4d8a  HP Multimedia Keyboard
> +	4d91  Laser mouse M-D16DL
> +	4d92  Optical mouse M-D17DR
> +	4db1  Dell Laptop Integrated Webcam 2Mpix
> +	4de3  HP 5-Button Optical Comfort Mouse
> +	4de7  webcam
> +	4e04  Lenovo Keyboard KB1021
> +	4e22  Dell Mouse, 2 Buttons, Modell: MS111-P
> +	4e6f  Acer Wired Keyboard Model KBAY211
> +	4e72  Acer Wired Keyboard Model KBAY211
> +0463  MGE UPS Systems
> +	0001  UPS
> +	ffff  UPS
> +0464  AMP/Tycoelectronics Corp.
> +0467  AT&T Paradyne
> +0468  Wieson Technologies Co., Ltd
> +046a  Cherry GmbH
> +	0001  Keyboard
> +	0003  My3000 Hub
> +	0004  CyBoard Keyboard
> +	0005  XX33 SmartCard Reader Keyboard
> +	0008  Wireless Keyboard and Mouse
> +	0010  SmartBoard XX44
> +	0011  G83 (RS 6000) Keyboard
> +	0021  CyMotion Expert Combo
> +	0023  Keyboard
> +	0027  CyMotion Master Solar Keyboard
> +	002a  Wireless Mouse & Keyboard
> +	002d  SmartTerminal XX44
> +	003c  Raptor Gaming Keyboard
> +	003d  Raptor Gaming Keyboard Integrated Hub
> +	003e  SmartTerminal ST-2xxx
> +	0041  G86 6240 Keyboard
> +	0080  eHealth Terminal ST 1503
> +	0081  eHealth Keyboard G87 1504
> +	00a1  SmartCard Reader Keyboard KC 1000 SC
> +	0106  R-300 Wireless Mouse Receiver
> +	010d  MX-Board 3.0 Keyboard
> +	0180  Strait 3.0
> +	b090  Keyboard
> +	b091  Mouse
> +046b  American Megatrends, Inc.
> +	0001  Keyboard
> +	0101  PS/2 Keyboard, Mouse & Joystick Ports
> +	0301  USB 1.0 Hub
> +	0500  Serial & Parallel Ports
> +	ff10  Virtual Keyboard and Mouse
> +046c  Toshiba Corp., Digital Media Equipment
> +046d  Logitech, Inc.
> +	0082  Acer Aspire 5672 Webcam
> +	0200  WingMan Extreme Joystick
> +	0203  M2452 Keyboard
> +	0242  Chillstream for Xbox 360
> +	0301  M4848 Mouse
> +	0401  HP PageScan
> +	0402  NEC PageScan
> +	040f  Logitech/Storm PageScan
> +	0430  Mic (Cordless)
> +	0801  QuickCam Home
> +	0802  Webcam C200
> +	0804  Webcam C250
> +	0805  Webcam C300
> +	0807  Webcam B500
> +	0808  Webcam C600
> +	0809  Webcam Pro 9000
> +	080a  Portable Webcam C905
> +	080f  Webcam C120
> +	0810  QuickCam Pro
> +	0819  Webcam C210
> +	081a  Webcam C260
> +	081b  Webcam C310
> +	081d  HD Webcam C510
> +	0820  QuickCam VC
> +	0821  HD Webcam C910
> +	0823  HD Webcam B910
> +	0825  Webcam C270
> +	0826  HD Webcam C525
> +	0828  HD Webcam B990
> +	082b  Webcam C170
> +	082c  HD Webcam C615
> +	082d  HD Pro Webcam C920
> +	0830  QuickClip
> +	0836  B525 HD Webcam
> +	0837  BCC950 ConferenceCam
> +	0840  QuickCam Express
> +	0843  Webcam C930e
> +	0845  ConferenceCam CC3000e Camera
> +	0846  ConferenceCam CC3000e Speakerphone
> +	084b  ConferenceCam Connect Video
> +	0850  QuickCam Web
> +	0857  Logi Group Speakerphone
> +	085c  C922 Pro Stream Webcam
> +	085e  BRIO Ultra HD Webcam
> +	0870  QuickCam Express
> +	0882  Logi Group Speakerphone
> +	0890  QuickCam Traveler
> +	0892  C920 HD Pro Webcam
> +	0893  StreamCam
> +	0894  CrystalCam
> +	0895  QuickCam for Dell Notebooks
> +	0896  OrbiCam
> +	0897  QuickCam for Dell Notebooks
> +	0899  QuickCam for Dell Notebooks
> +	089d  QuickCam E2500 series
> +	08a0  QuickCam IM
> +	08a1  QuickCam IM with sound
> +	08a2  Labtec Webcam Pro
> +	08a3  QuickCam QuickCam Chat
> +	08a6  QuickCam IM
> +	08a7  QuickCam Image
> +	08a9  Notebook Deluxe
> +	08aa  Labtec Notebooks
> +	08ac  QuickCam Cool
> +	08ad  QuickCam Communicate STX
> +	08ae  QuickCam for Notebooks
> +	08af  QuickCam Easy/Cool
> +	08b0  QuickCam 3000 Pro [pwc]
> +	08b1  QuickCam Notebook Pro
> +	08b2  QuickCam Pro 4000
> +	08b3  QuickCam Zoom
> +	08b4  QuickCam Zoom
> +	08b5  QuickCam Sphere
> +	08b9  QuickCam IM
> +	08bd  Microphone (Pro 4000)
> +	08c0  QuickCam Pro 3000
> +	08c1  QuickCam Fusion
> +	08c2  QuickCam PTZ
> +	08c3  Camera (Notebooks Pro)
> +	08c5  QuickCam Pro 5000
> +	08c6  QuickCam for DELL Notebooks
> +	08c7  QuickCam OEM Cisco VT Camera II
> +	08c9  QuickCam Ultra Vision
> +	08ca  Mic (Fusion)
> +	08cb  Mic (Notebooks Pro)
> +	08cc  Mic (PTZ)
> +	08ce  QuickCam Pro 5000
> +	08cf  QuickCam UpdateMe
> +	08d0  QuickCam Express
> +	08d7  QuickCam Communicate STX
> +	08d8  QuickCam for Notebook Deluxe
> +	08d9  QuickCam IM/Connect
> +	08da  QuickCam Messanger
> +	08dd  QuickCam for Notebooks
> +	08e0  QuickCam Express
> +	08e1  Labtec Webcam
> +	08e5  C920 PRO HD Webcam
> +	08f0  QuickCam Messenger
> +	08f1  QuickCam Express
> +	08f2  Microphone (Messenger)
> +	08f3  QuickCam Express
> +	08f4  Labtec Webcam
> +	08f5  QuickCam Messenger Communicate
> +	08f6  QuickCam Messenger Plus
> +	0900  ClickSmart 310
> +	0901  ClickSmart 510
> +	0903  ClickSmart 820
> +	0905  ClickSmart 820
> +	0910  QuickCam Cordless
> +	0920  QuickCam Express
> +	0921  Labtec Webcam
> +	0922  QuickCam Live
> +	0928  QuickCam Express
> +	0929  Labtec Webcam Pro
> +	092a  QuickCam for Notebooks
> +	092b  Labtec Webcam Plus
> +	092c  QuickCam Chat
> +	092d  QuickCam Express / Go
> +	092e  QuickCam Chat
> +	092f  QuickCam Express Plus
> +	0950  Pocket Camera
> +	0960  ClickSmart 420
> +	0970  Pocket750
> +	0990  QuickCam Pro 9000
> +	0991  QuickCam Pro for Notebooks
> +	0992  QuickCam Communicate Deluxe
> +	0994  QuickCam Orbit/Sphere AF
> +	09a1  QuickCam Communicate MP/S5500
> +	09a2  QuickCam Communicate Deluxe/S7500
> +	09a4  QuickCam E 3500
> +	09a5  Quickcam 3000 For Business
> +	09a6  QuickCam Vision Pro
> +	09b0  Acer OrbiCam
> +	09b2  Fujitsu Webcam
> +	09c0  QuickCam for Dell Notebooks Mic
> +	09c1  QuickCam Deluxe for Notebooks
> +	0a01  USB Headset
> +	0a02  Premium Stereo USB Headset 350
> +	0a03  Logitech USB Microphone
> +	0a04  V20 portable speakers (USB powered)
> +	0a07  Z-10 Speakers
> +	0a0b  ClearChat Pro USB
> +	0a0c  Clear Chat Comfort USB Headset
> +	0a10  V10 Notebook Speakers
> +	0a13  Z-5 Speakers
> +	0a14  USB Headset
> +	0a15  G35 Headset
> +	0a17  G330 Headset
> +	0a1f  G930
> +	0a29  H600 [Wireless Headset]
> +	0a37  USB Headset H540
> +	0a38  Headset H340
> +	0a44  Headset H390
> +	0a45  960 Headset
> +	0a4d  G430 Surround Sound Gaming Headset
> +	0a5b  G933 Wireless Headset Dongle
> +	0a5d  G933 Headset Battery Charger
> +	0a66  [G533 Wireless Headset Dongle]
> +	0a8f  H390 headset with microphone
> +	0aaa  Logitech G PRO X Gaming Headset
> +	0b02  C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode)
> +	8801  Video Camera
> +	b014  Bluetooth Mouse M336/M337/M535
> +	b305  BT Mini-Receiver
> +	bfe4  Premium Optical Wheel Mouse
> +	c000  N43 [Pilot Mouse]
> +	c001  N48/M-BB48/M-UK96A [FirstMouse Plus]
> +	c002  M-BA47 [MouseMan Plus]
> +	c003  MouseMan
> +	c004  WingMan Gaming Mouse
> +	c005  WingMan Gaming Wheel Mouse
> +	c00b  MouseMan Wheel
> +	c00c  Optical Wheel Mouse
> +	c00d  MouseMan Wheel+
> +	c00e  M-BJ58/M-BJ69 Optical Wheel Mouse
> +	c00f  MouseMan Traveler/Mobile
> +	c011  Optical MouseMan
> +	c012  Mouseman Dual Optical
> +	c014  Corded Workstation Mouse
> +	c015  Corded Workstation Mouse
> +	c016  Optical Wheel Mouse
> +	c018  Optical Wheel Mouse
> +	c019  Optical Tilt Wheel Mouse
> +	c01a  M-BQ85 Optical Wheel Mouse
> +	c01b  MX310 Optical Mouse
> +	c01c  Optical Mouse
> +	c01d  MX510 Optical Mouse
> +	c01e  MX518 Optical Mouse
> +	c024  MX300 Optical Mouse
> +	c025  MX500 Optical Mouse
> +	c030  iFeel Mouse
> +	c031  iFeel Mouse+
> +	c032  MouseMan iFeel
> +	c033  iFeel MouseMan+
> +	c034  MouseMan Optical
> +	c035  Mouse
> +	c036  Mouse
> +	c037  Mouse
> +	c038  Mouse
> +	c03d  M-BT96a Pilot Optical Mouse
> +	c03e  Premium Optical Wheel Mouse (M-BT58)
> +	c03f  M-BT85 [UltraX Optical Mouse]
> +	c040  Corded Tilt-Wheel Mouse
> +	c041  G5 Laser Mouse
> +	c042  G3 Laser Mouse
> +	c043  MX320/MX400 Laser Mouse
> +	c044  LX3 Optical Mouse
> +	c045  Optical Mouse
> +	c046  RX1000 Laser Mouse
> +	c047  Laser Mouse M-UAL120
> +	c048  G9 Laser Mouse
> +	c049  G5 Laser Mouse
> +	c050  RX 250 Optical Mouse
> +	c051  G3 (MX518) Optical Mouse
> +	c053  Laser Mouse
> +	c054  Bluetooth mini-receiver
> +	c058  M115 Mouse
> +	c05a  M90/M100 Optical Mouse
> +	c05b  M-U0004 810-001317 [B110 Optical USB Mouse]
> +	c05d  Optical Mouse
> +	c05f  M115 Optical Mouse
> +	c061  RX1500 Laser Mouse
> +	c062  M-UAS144 [LS1 Laser Mouse]
> +	c063  DELL Laser Mouse
> +	c064  M110 corded optical mouse (M-B0001)
> +	c066  G9x Laser Mouse
> +	c068  G500 Laser Mouse
> +	c069  M-U0007 [Corded Mouse M500]
> +	c06a  USB Optical Mouse
> +	c06b  G700 Wireless Gaming Mouse
> +	c06c  Optical Mouse
> +	c077  M105 Optical Mouse
> +	c07c  M-R0017 [G700s Rechargeable Gaming Mouse]
> +	c07d  G502 Mouse
> +	c07e  G402 Gaming Mouse
> +	c080  G303 Gaming Mouse
> +	c083  G403 Prodigy Gaming Mouse
> +	c084  G203 Gaming Mouse
> +	c08b  G502 SE HERO Gaming Mouse
> +	c092  G203 LIGHTSYNC Gaming Mouse
> +	c101  UltraX Media Remote
> +	c110  Harmony 785/880/885 Remote
> +	c111  Harmony 525 Remote
> +	c112  Harmony 890 Remote
> +	c11f  Harmony 900/1100 Remote
> +	c121  Harmony One Remote
> +	c122  Harmony 650/700 Remote
> +	c124  Harmony 300/350 Remote
> +	c125  Harmony 200 Remote
> +	c126  Harmony Link
> +	c129  Harmony Hub
> +	c12b  Harmony Touch/Ultimate Remote
> +	c201  WingMan Extreme Joystick with Throttle
> +	c202  WingMan Formula
> +	c207  WingMan Extreme Digital 3D
> +	c208  WingMan Gamepad Extreme
> +	c209  WingMan Gamepad
> +	c20a  WingMan RumblePad
> +	c20b  WingMan Action Pad
> +	c20c  WingMan Precision
> +	c20d  WingMan Attack 2
> +	c20e  WingMan Formula GP
> +	c211  iTouch Cordless Receiver
> +	c212  WingMan Extreme Digital 3D
> +	c213  J-UH16 (Freedom 2.4 Cordless Joystick)
> +	c214  ATK3 (Attack III Joystick)
> +	c215  Extreme 3D Pro
> +	c216  F310 Gamepad [DirectInput Mode]
> +	c218  F510 Gamepad [DirectInput Mode]
> +	c219  F710 Gamepad [DirectInput Mode]
> +	c21a  Precision Gamepad
> +	c21c  G13 Advanced Gameboard
> +	c21d  F310 Gamepad [XInput Mode]
> +	c21e  F510 Gamepad [XInput Mode]
> +	c21f  F710 Wireless Gamepad [XInput Mode]
> +	c221  G11/G15 Keyboard / Keyboard
> +	c222  G15 Keyboard / LCD
> +	c223  G11/G15 Keyboard / USB Hub
> +	c225  G11/G15 Keyboard / G keys
> +	c226  G15 Refresh Keyboard
> +	c227  G15 Refresh Keyboard
> +	c228  G19 Gaming Keyboard
> +	c229  G19 Gaming Keyboard Macro Interface
> +	c22a  Gaming Keyboard G110
> +	c22b  Gaming Keyboard G110 G-keys
> +	c22d  G510 Gaming Keyboard
> +	c22e  G510 Gaming Keyboard onboard audio
> +	c231  G13 Virtual Mouse
> +	c232  Gaming Virtual Keyboard
> +	c245  G400 Optical Mouse
> +	c246  Gaming Mouse G300
> +	c247  G100S Optical Gaming Mouse
> +	c248  G105 Gaming Keyboard
> +	c24a  G600 Gaming Mouse
> +	c24c  G400s Optical Mouse
> +	c24d  G710 Gaming Keyboard
> +	c24e  G500s Laser Gaming Mouse
> +	c24f  G29 Driving Force Racing Wheel [PS3]
> +	c260  G29 Driving Force Racing Wheel [PS4]
> +	c262  G920 Driving Force Racing Wheel
> +	c281  WingMan Force
> +	c283  WingMan Force 3D
> +	c285  WingMan Strike Force 3D
> +	c286  Force 3D Pro
> +	c287  Flight System G940
> +	c291  WingMan Formula Force
> +	c293  WingMan Formula Force GP
> +	c294  Driving Force
> +	c295  Momo Force Steering Wheel
> +	c298  Driving Force Pro
> +	c299  G25 Racing Wheel
> +	c29b  G27 Racing Wheel
> +	c29c  Speed Force Wireless Wheel for Wii
> +	c2a0  Wingman Force Feedback Mouse
> +	c2a1  WingMan Force Feedback Mouse
> +	c2ab  G13 Joystick
> +	c301  iTouch Keyboard
> +	c302  iTouch Pro Keyboard
> +	c303  iTouch Keyboard
> +	c305  Internet Keyboard
> +	c307  Internet Keyboard
> +	c308  Internet Navigator Keyboard
> +	c309  Y-BF37 [Internet Navigator Keyboard]
> +	c30a  iTouch Composite
> +	c30b  NetPlay Keyboard
> +	c30c  Internet Keys (X)
> +	c30d  Internet Keys
> +	c30e  UltraX Keyboard (Y-BL49)
> +	c30f  Logicool HID-Compliant Keyboard (106 key)
> +	c311  Y-UF49 [Internet Pro Keyboard]
> +	c312  DeLuxe 250 Keyboard
> +	c313  Internet 350 Keyboard
> +	c315  Classic Keyboard 200
> +	c316  HID-Compliant Keyboard
> +	c317  Wave Corded Keyboard
> +	c318  Illuminated Keyboard
> +	c31a  Comfort Wave 450
> +	c31b  Compact Keyboard K300
> +	c31c  Keyboard K120
> +	c31d  Media Keyboard K200
> +	c31f  Comfort Keyboard K290
> +	c326  Washable Keyboard K310
> +	c328  Corded Keyboard K280e
> +	c32b  G910 Orion Spark Mechanical Keyboard
> +	c332  G502 Proteus Spectrum Optical Mouse
> +	c335  G910 Orion Spectrum Mechanical Keyboard
> +	c336  G213 Prodigy Gaming Keyboard
> +	c33a  G413 Gaming Keyboard
> +	c33f  G815 Mechanical Keyboard
> +	c401  TrackMan Marble Wheel
> +	c402  Marble Mouse (2-button)
> +	c403  Turbo TrackMan Marble FX
> +	c404  TrackMan Wheel
> +	c408  Marble Mouse (4-button)
> +	c501  Cordless Mouse Receiver
> +	c502  Cordless Mouse & iTouch Keys
> +	c503  Cordless Mouse+Keyboard Receiver
> +	c504  Cordless Mouse+Keyboard Receiver
> +	c505  Cordless Mouse+Keyboard Receiver
> +	c506  MX700 Cordless Mouse Receiver
> +	c508  Cordless Trackball
> +	c509  Cordless Keyboard & Mouse
> +	c50a  Cordless Mouse
> +	c50b  Cordless Desktop Optical
> +	c50c  Cordless Desktop S510
> +	c50d  Cordless Mouse
> +	c50e  Cordless Mouse Receiver
> +	c510  Cordless Mouse
> +	c512  LX-700 Cordless Desktop Receiver
> +	c513  MX3000 Cordless Desktop Receiver
> +	c514  Cordless Mouse
> +	c515  Cordless 2.4 GHz Presenter Presentation remote control
> +	c517  LX710 Cordless Desktop Laser
> +	c518  MX610 Laser Cordless Mouse
> +	c51a  MX Revolution/G7 Cordless Mouse
> +	c51b  V220 Cordless Optical Mouse for Notebooks
> +	c521  Cordless Mouse Receiver
> +	c525  MX Revolution Cordless Mouse
> +	c526  Nano Receiver
> +	c529  Logitech Keyboard + Mice
> +	c52b  Unifying Receiver
> +	c52d  R700 Remote Presenter receiver
> +	c52e  MK260 Wireless Combo Receiver
> +	c52f  Unifying Receiver
> +	c531  C-U0007 [Unifying Receiver]
> +	c532  Unifying Receiver
> +	c534  Unifying Receiver
> +	c537  Cordless Mouse Receiver
> +	c53a  PowerPlay Wireless Charging System
> +	c53d  G631 Keyboard
> +	c603  3Dconnexion Spacemouse Plus XT
> +	c605  3Dconnexion CADman
> +	c606  3Dconnexion Spacemouse Classic
> +	c621  3Dconnexion Spaceball 5000
> +	c623  3Dconnexion Space Traveller 3D Mouse
> +	c625  3Dconnexion Space Pilot 3D Mouse
> +	c626  3Dconnexion Space Navigator 3D Mouse
> +	c627  3Dconnexion Space Explorer 3D Mouse
> +	c628  3Dconnexion Space Navigator for Notebooks
> +	c629  3Dconnexion SpacePilot Pro 3D Mouse
> +	c62b  3Dconnexion Space Mouse Pro
> +	c640  NuLOOQ navigator
> +	c702  Cordless Presenter
> +	c703  Elite Keyboard Y-RP20 + Mouse MX900 (Bluetooth)
> +	c704  diNovo Wireless Desktop
> +	c705  MX900 Bluetooth Wireless Hub (C-UJ16A)
> +	c707  Bluetooth wireless hub
> +	c708  Bluetooth wireless hub
> +	c709  BT Mini-Receiver (HCI mode)
> +	c70a  MX5000 Cordless Desktop
> +	c70b  BT Mini-Receiver (HID proxy mode)
> +	c70c  BT Mini-Receiver (HID proxy mode)
> +	c70d  Bluetooth wireless hub
> +	c70e  MX1000 Bluetooth Laser Mouse
> +	c70f  Bluetooth wireless hub
> +	c712  Bluetooth wireless hub
> +	c714  diNovo Edge Keyboard
> +	c715  Bluetooth wireless hub
> +	c71a  Bluetooth wireless hub
> +	c71d  Bluetooth wireless hub
> +	c71f  diNovo Mini Wireless Keyboard
> +	c720  Bluetooth wireless hub
> +	ca03  MOMO Racing
> +	ca04  Formula Vibration Feedback Wheel
> +	ca84  Cordless Controller for Xbox
> +	ca88  Thunderpad for Xbox
> +	ca8a  Precision Vibration Feedback Wheel for Xbox
> +	caa3  DriveFX Racing Wheel
> +	cab1  Cordless Keyboard for Wii HID Receiver
> +	d001  QuickCam Pro
> +	f301  Controller
> +046e  Behavior Tech. Computer Corp.
> +	0100  Keyboard
> +	3001  Mass Storage Device
> +	3002  Mass Storage Device
> +	3003  Mass Storage Device
> +	3005  Mass Storage Device
> +	3008  Mass Storage Device
> +	5250  KeyMaestro Multimedia Keyboard
> +	5273  KeyMaestro Multimedia Keyboard
> +	52e6  Cordless Mouse
> +	5308  KeyMaestro Keyboard
> +	5408  KeyMaestro Multimedia Keyboard/Hub
> +	5500  Portable Keyboard 86+9 keys (Model 6100C US)
> +	5550  5 button optical mouse model M873U
> +	5720  Smart Card Reader
> +	6782  BTC 7932 mouse+keyboard
> +046f  Crystal Semiconductor
> +0471  Philips (or NXP)
> +	0101  DSS350 Digital Speaker System
> +	0104  DSS330 Digital Speaker System [uda1321]
> +	0105  UDA1321
> +	014f  GoGear SA9200
> +	0160  MP3 Player
> +	0161  MP3 Player
> +	0163  GoGear SA1100
> +	0164  GoGear SA1110/02
> +	0165  GoGear SA1330
> +	0201  Hub
> +	0222  Creative Nomad Jukebox
> +	0302  PCA645VC Webcam [pwc]
> +	0303  PCA646VC Webcam [pwc]
> +	0304  Askey VC010 Webcam [pwc]
> +	0307  PCVC675K Webcam [pwc]
> +	0308  PCVC680K Webcam [pwc]
> +	030b  PC VGA Camera (Vesta Fun)
> +	030c  PCVC690K Webcam [pwc]
> +	0310  PCVC730K Webcam [pwc]
> +	0311  PCVC740K ToUcam Pro [pwc]
> +	0312  PCVC750K Webcam [pwc]
> +	0314  DMVC 1000K
> +	0316  DMVC 2000K Video Capture
> +	0321  FunCam
> +	0322  DMVC1300K PC Camera
> +	0325  SPC 200NC PC Camera
> +	0326  SPC 300NC PC Camera
> +	0327  Webcam SPC 6000 NC (Webcam w/ mic)
> +	0328  SPC 700NC PC Camera
> +	0329  SPC 900NC PC Camera / ORITE CCD Webcam(PC370R)
> +	032d  SPC 210NC PC Camera
> +	032e  SPC 315NC PC Camera
> +	0330  SPC 710NC PC Camera
> +	0331  SPC 1300NC PC Camera
> +	0332  SPC 1000NC PC Camera
> +	0333  SPC 620NC PC Camera
> +	0334  SPC 520/525NC PC Camera
> +	0401  Semiconductors CICT Keyboard
> +	0402  PS/2 Mouse on Semiconductors CICT Keyboard
> +	0406  15 inch Detachable Monitor
> +	0407  10 inch Mobile Monitor
> +	0408  SG3WA1/74 802.11b WLAN Adapter [Atmel AT76C503A]
> +	0471  Digital Speaker System
> +	0601  OVU1020 IR Dongle (Kbd+Mouse)
> +	0602  ATI Remote Wonder II Input Device
> +	0603  ATI Remote Wonder II Controller
> +	0608  eHome Infrared Receiver
> +	060a  TSU9600 Remote Control
> +	060c  Consumer Infrared Transceiver (HP)
> +	060d  Consumer Infrared Transceiver (SRM5100)
> +	060e  RF Dongle
> +	060f  Consumer Infrared Transceiver
> +	0613  Infrared Transceiver
> +	0617  IEEE802.15.4 RF Dongle
> +	0619  TSU9400 Remote Control
> +	0666  Hantek DDS-3005 Arbitrary Waveform Generator
> +	0700  Semiconductors CICT Hub
> +	0701  150P1 TFT Display
> +	0809  AVNET Bluetooth Device
> +	0811  JR24 CDRW
> +	0814  DCCX38/P data cable
> +	0815  eHome Infrared Receiver
> +	0844  SA2111/02 1GB Flash Audio Player
> +	084a  GoGear SA3125
> +	084e  GoGear SA60xx (mtp)
> +	0888  Hantek DDS-3005 Arbitrary Waveform Generator
> +	1103  Digital Speaker System
> +	1120  Creative Rhomba MP3 player
> +	1125  Nike psa[128max Player
> +	1137  HDD065 MP3 player
> +	1201  Arima Bluetooth Device
> +	1230  Wireless Adapter 11g
> +	1232  SNU6500 Wireless Adapter
> +	1233  Wireless Adapter Bootloader Download
> +	1236  SNU5600 802.11bg
> +	1237  TalkTalk SNU5630NS/05 802.11bg
> +	1552  ISP 1581 Hi-Speed USB MPEG2 Encoder Reference Kit
> +	1801  Diva MP3 player
> +	200a  Wireless Network Adapter
> +	200f  802.11n Wireless Adapter
> +	2021  SDE3273FC/97 2.5" SATA HDD Enclosure [INIC-1608L]
> +	2022  GoGear SA52XX
> +	2034  Webcam SPC530NC
> +	2036  Webcam SPC1030NC
> +	203f  TSU9200 Remote Control
> +	2046  TSU9800 Remote Control
> +	204e  GoGear RaGa (SA1942/02)
> +	205e  TSU9300 Remote Control
> +	206c  MCE IR Receiver - Spinel plusf0r ASUS
> +	2070  GoGear Mix
> +	2076  GoGear Aria
> +	2079  GoGear Opus
> +	2088  MCE IR Receiver with ALS- Spinel plus for ASUS
> +	209e  PTA01 Wireless Adapter
> +	20b6  GoGear Vibe
> +	20d0  SPZ2000 Webcam [PixArt PAC7332]
> +	20e3  GoGear Raga
> +	20e4  GoGear ViBE 8GB
> +	2160  Mio LINK Heart Rate Monitor
> +	21e0  GoGEAR Raga
> +	262c  SPC230NC Webcam
> +	2721  PTA 317 TV Camera
> +	485d  Senselock SenseIV v2.x
> +	df55  LPCXpresso LPC-Link
> +0472  Chicony Electronics Co., Ltd
> +	0065  PFU-65 Keyboard [Chicony]
> +	b086  Asus USB2.0 Webcam
> +	b091  Webcam
> +0473  Sanyo Information Business Co., Ltd
> +0474  Sanyo Electric Co., Ltd
> +	0110  Digital Voice Recorder R200
> +	0217  Xacti J2
> +	022f  C5 Digital Media Camera (mass storage mode)
> +	0230  C5 Digital Media Camera (PictBridge mode)
> +	0231  C5 Digital Media Camera (PC control mode)
> +	0401  Optical Drive
> +	0701  SCP-4900 Cellphone
> +	071f  Usb Com Port Enumerator
> +	0722  W33SA Camera
> +0475  Relisys/Teco Information System
> +	0100  NEC Petiscan
> +	0103  Eclipse 1200U/Episode
> +	0210  Scorpio Ultra 3
> +0476  AESP
> +0477  Seagate Technology, Inc.
> +0478  Connectix Corp.
> +	0001  QuickCam
> +	0002  QuickClip
> +	0003  QuickCam Pro
> +0479  Advanced Peripheral Laboratories
> +047a  Semtech Corp.
> +	0004  ScreenCoder UR7HCTS2-USB
> +047b  Silitek Corp.
> +	0001  Keyboard
> +	0002  Keyboard and Mouse
> +	0011  SK-1688U Keyboard
> +	00f9  SK-1789u Keyboard
> +	0101  BlueTooth Keyboard and Mouse
> +	020b  SK-3105 SmartCard Reader
> +	050e  Internet Compact Keyboard
> +	1000  Trust Office Scan USB 19200
> +	1002  HP ScanJet 4300c Parallel Port
> +047c  Dell Computer Corp.
> +	ffff  UPS Tower 500W LV
> +047d  Kensington
> +	1001  Mouse*in*a*Box
> +	1002  Expert Mouse Pro
> +	1003  Orbit TrackBall
> +	1004  MouseWorks
> +	1005  TurboBall
> +	1006  TurboRing
> +	1009  Orbit TrackBall for Mac
> +	1012  PocketMouse
> +	1013  Mouse*in*a*Box Optical Pro
> +	1014  Expert Mouse Pro Wireless
> +	1015  Expert Mouse
> +	1016  ADB/USB Orbit
> +	1018  Studio Mouse
> +	101d  Mouse*in*a*Box Optical Pro
> +	101e  Studio Mouse Wireless
> +	101f  PocketMouse Pro
> +	1020  Expert Mouse Trackball
> +	1021  Expert Mouse Wireless
> +	1022  Orbit Optical
> +	1023  Pocket Mouse Pro Wireless
> +	1024  PocketMouse
> +	1025  Mouse*in*a*Box Optical Elite Wireless
> +	1026  Pocket Mouse Pro
> +	1027  StudioMouse
> +	1028  StudioMouse Wireless
> +	1029  Mouse*in*a*Box Optical Elite
> +	102a  Mouse*in*a*Box Optical
> +	102b  PocketMouse
> +	102c  Iridio
> +	102d  Pilot Optical
> +	102e  Pilot Optical Pro
> +	102f  Pilot Optical Pro Wireless
> +	1042  Ci25m Notebook Optical Mouse [Diamond Eye Precision]
> +	1043  Ci65m Wireless Notebook Optical Mouse
> +	104a  PilotMouse Mini Retractable
> +	105d  PocketMouse Bluetooth
> +	105e  Bluetooth EDR Dongle
> +	1061  PocketMouse Grip
> +	1062  PocketMouse Max
> +	1063  PocketMouse Max Wireless
> +	1064  PocketMouse 2.0 Wireless
> +	1065  PocketMouse 2.0
> +	1066  PocketMouse Max Glow
> +	1067  ValueMouse
> +	1068  ValueOpt White
> +	1069  ValueOpt Black
> +	106a  PilotMouse Laser Wireless Mini
> +	106b  PilotMouse Laser - 3 Button
> +	106c  PilotMouse Laser - Gaming
> +	106d  PilotMouse Laser - Wired
> +	106e  PilotMouse Micro Laser
> +	1070  ValueOpt Travel
> +	1071  ValueOpt RF TX
> +	1072  PocketMouse Colour
> +	1073  PilotMouse Laser - 6 Button
> +	1074  PilotMouse Laser Wireless Mini
> +	1075  SlimBlade Presenter Media Mouse
> +	1076  SlimBlade Media Mouse
> +	1077  SlimBlade Presenter Mouse
> +	1152  Bluetooth EDR Dongle
> +	2002  Optical Elite Wireless
> +	2010  Wireless Presentation Remote
> +	2012  Wireless Presenter with Laser Pointer
> +	2021  PilotBoard Wireless
> +	2030  PilotBoard Wireless
> +	2034  SlimBlade Media Notebook Set
> +	2041  SlimBlade Trackball
> +	2048  Orbit Trackball with Scroll Ring
> +	4003  Gravis Xterminator Digital Gamepad
> +	4005  Gravis Eliminator GamePad Pro
> +	4006  Gravis Eliminator AfterShock
> +	4007  Gravis Xterminator Force
> +	4008  Gravis Destroyer TiltPad
> +	5001  Cabo I Camera
> +	5002  VideoCam CABO II
> +	5003  VideoCam
> +	8018  Expert Wireless Trackball Mouse (K72359WW)
> +	8068  Pro Fit Ergo Vertical Wireless Trackball
> +047e  Agere Systems, Inc. (Lucent)
> +	0300  ORiNOCO Card
> +	1001  USS720 Parallel Port
> +	2892  Systems Soft Modem
> +	bad1  Lucent 56k Modem
> +	f101  Atlas Modem
> +047f  Plantronics, Inc.
> +	0101  Bulk Driver
> +	02ee  BT600
> +	0301  Bulk Driver
> +	0411  Savi Office Base Station
> +	0ca1  USB DSP v4 Audio Interface
> +	4254  BUA-100 Bluetooth Adapter
> +	aa05  DA45
> +	ac01  Savi 7xx
> +	ad01  GameCom 777 5.1 Headset
> +	af01  DA80
> +	c008  Audio 655 DSP
> +	c00e  Blackwire C310 headset
> +	c03b  HD1
> +	ca01  Calisto 800 Series
> +	da60  DA60
> +0480  Toshiba America Inc
> +	0001  InTouch Module
> +	0004  InTouch Module
> +	0011  InTouch Module
> +	0014  InTouch Module
> +	0100  Stor.E Slim USB 3.0
> +	0200  External Disk
> +	0212  Toshiba Canvio Connect II 500GB Portable Hard Drive
> +	0820  Canvio Advance Disk
> +	0821  Canvio Advance 2TB model DTC920
> +	0900  MQ04UBF100
> +	a006  External Disk 1.5TB
> +	a007  External Disk USB 3.0
> +	a009  Stor.E Basics
> +	a00d  STOR.E BASICS 500GB
> +	a100  Canvio Alu 2TB 2.5" Black External Disk Model HDTH320EK3CA
> +	a102  Canvio Alu 2TB 2.5" Black External Disk Model HDTH320EK3CA
> +	a202  Canvio Basics HDD
> +	a208  Canvio Basics 2TB USB 3.0 Portable Hard Drive
> +	b001  Stor.E Partner
> +	b207  Canvio Ready
> +	d000  External Disk 2TB Model DT01ABA200
> +	d010  External Disk 3TB
> +	d011  Canvio Desk
> +0481  Zenith Data Systems
> +0482  Kyocera Corp.
> +	000e  FS-1020D Printer
> +	000f  FS-1920 Mono Printer
> +	0015  FS-1030D printer
> +	0100  Finecam S3x
> +	0101  Finecam S4
> +	0103  Finecam S5
> +	0105  Finecam L3
> +	0106  Finecam
> +	0107  Digital Camera Device
> +	0108  Digital Camera Device
> +	0203  AH-K3001V
> +	0204  iBurst Terminal
> +	0408  FS-1320D Printer
> +	0640  ECOSYS M6026cdn
> +	069b  ECOSYS M2635dn
> +	06b4  ECOSYS M5526cdw
> +0483  STMicroelectronics
> +	0137  BeWAN ADSL USB ST (blue or green)
> +	0138  Unicorn II (ST70138B + MTC-20174TQ chipset)
> +	0adb  Android Debug Bridge (ADB) device
> +	0afb  Android Fastboot device
> +	1307  Cytronix 6in1 Card Reader
> +	163d  Cool Icam Digi-MP3
> +	2015  TouchChip® Fingerprint Reader
> +	2016  Fingerprint Reader
> +	2017  Biometric Smart Card Reader
> +	2018  BioSimKey
> +	2302  Portable Flash Device (PFD)
> +	3744  ST-LINK/V1
> +	3747  ST Micro Connect Lite
> +	3748  ST-LINK/V2
> +	374b  ST-LINK/V2.1
> +	374d  STLINK-V3 Loader
> +	374e  STLINK-V3
> +	374f  STLINK-V3
> +	3752  ST-LINK/V2.1
> +	3753  STLINK-V3
> +	4810  ISDN adapter
> +	481d  BT Digital Access adapter
> +	5000  ST Micro/Ergenic ERG BT-002 Bluetooth Adapter
> +	5001  ST Micro Bluetooth Device
> +	5710  Joystick in FS Mode
> +	5720  Mass Storage Device
> +	5721  Interrupt Demo
> +	5722  Bulk Demo
> +	5730  Audio Speaker
> +	5731  Microphone
> +	5740  Virtual COM Port
> +	5750  LED badge -- mini LED display -- 11x44
> +	7270  ST Micro Serial Bridge
> +	7554  56k SoftModem
> +	8213  ThermaData Logger Cradle
> +	8259  Probe
> +	91d1  Sensor Hub
> +	a171  ThermaData WiFi
> +	a2e0  BMeasure instrument
> +	df11  STM Device in DFU Mode
> +	ff10  Swann ST56 Modem
> +0484  Specialix
> +0485  Nokia Monitors
> +0486  ASUS Computers, Inc.
> +	0185  EeePC T91MT HID Touch Panel
> +0487  Stewart Connector
> +0488  Cirque Corp.
> +0489  Foxconn / Hon Hai
> +	0502  SmartMedia Card Reader Firmware Loader
> +	0503  SmartMedia Card Reader
> +	d00c  Rollei Compactline (Storage Mode)
> +	d00e  Rollei Compactline (Video Mode)
> +	e000  T-Com TC 300
> +	e003  Pirelli DP-L10
> +	e00d  Broadcom Bluetooth 2.1 Device
> +	e00f  Foxconn T77H114 BCM2070 [Single-Chip Bluetooth 2.1 + EDR Adapter]
> +	e011  Acer Bluetooth module
> +	e016  Ubee PXU1900 WiMAX Adapter [Beceem BCSM250]
> +	e02c  Atheros AR5BBU12 Bluetooth Device
> +	e032  Broadcom BCM20702 Bluetooth
> +	e042  Broadcom BCM20702 Bluetooth
> +	e04d  Atheros AR3012 Bluetooth
> +	e055  BCM43142A0 broadcom bluetooth
> +048a  S-MOS Systems, Inc.
> +048c  Alps Electric Ireland, Ltd
> +048d  Integrated Technology Express, Inc.
> +	1165  IT1165 Flash Controller
> +	1172  Flash Drive
> +	1234  Chipsbank CBM2199 Flash Drive
> +	1336  SD/MMC Cardreader
> +	1345  Multi Cardreader
> +	8297  IT8297 RGB LED Controller
> +	9006  IT9135 BDA Afatech DVB-T HDTV Dongle
> +	9009  Zolid HD DVD Maker
> +	9135  Zolid Mini DVB-T Stick
> +	9306  IT930x DVB stick
> +	9503  ITE it9503 feature-limited DVB-T transmission chip [ccHDtv]
> +	9507  ITE it9507 full featured DVB-T transmission chip [ccHDtv]
> +	9910  IT9910 chipset based grabber
> +	ff59  Hdmi-CEC Bridge
> +048f  Eicon Tech.
> +0490  United Microelectronics Corp.
> +0491  Capetronic
> +	0003  Taxan Monitor Control
> +0492  Samsung SemiConductor, Inc.
> +	0140  MP3 player
> +	0141  MP3 Player
> +0493  MAG Technology Co., Ltd
> +0495  ESS Technology, Inc.
> +0496  Micron Electronics
> +0497  Smile International
> +	c001  Camera Device
> +0498  Capetronic (Kaohsiung) Corp.
> +0499  Yamaha Corp.
> +	1000  UX256 MIDI I/F
> +	1001  MU1000
> +	1002  MU2000
> +	1003  MU500
> +	1004  UW500
> +	1005  MOTIF6
> +	1006  MOTIF7
> +	1007  MOTIF8
> +	1008  UX96 MIDI I/F
> +	1009  UX16 MIDI I/F
> +	100a  EOS BX
> +	100c  UC-MX
> +	100d  UC-KX
> +	100e  S08
> +	100f  CLP-150
> +	1010  CLP-170
> +	1011  P-250
> +	1012  TYROS
> +	1013  PF-500
> +	1014  S90
> +	1015  MOTIF-R
> +	1016  MDP-5
> +	1017  CVP-204
> +	1018  CVP-206
> +	1019  CVP-208
> +	101a  CVP-210
> +	101b  PSR-1100
> +	101c  PSR-2100
> +	101d  CLP-175
> +	101e  PSR-K1
> +	101f  EZ-J24
> +	1020  EZ-250i
> +	1021  MOTIF ES 6
> +	1022  MOTIF ES 7
> +	1023  MOTIF ES 8
> +	1024  CVP-301
> +	1025  CVP-303
> +	1026  CVP-305
> +	1027  CVP-307
> +	1028  CVP-309
> +	1029  CVP-309GP
> +	102a  PSR-1500
> +	102b  PSR-3000
> +	102e  ELS-01/01C
> +	1030  PSR-295/293
> +	1031  DGX-205/203
> +	1032  DGX-305
> +	1033  DGX-505
> +	1037  PSR-E403
> +	103c  MOTIF-RACK ES
> +	1054  S90XS Keyboard/Music Synthesizer
> +	160f  P-105
> +	1613  Clavinova CLP535
> +	1617  PSR-E353 digital keyboard
> +	1704  Steinberg UR44
> +	2000  DGP-7
> +	2001  DGP-5
> +	3001  YST-MS55D USB Speaker
> +	3003  YST-M45D USB Speaker
> +	4000  NetVolante RTA54i Broadband&ISDN Router
> +	4001  NetVolante RTW65b Broadband Wireless Router
> +	4002  NetVolante RTW65i Broadband&ISDN Wireless Router
> +	4004  NetVolante RTA55i Broadband VoIP Router
> +	5000  CS1D
> +	5001  DSP1D
> +	5002  DME32
> +	5003  DM2000
> +	5004  02R96
> +	5005  ACU16-C
> +	5006  NHB32-C
> +	5007  DM1000
> +	5008  01V96
> +	5009  SPX2000
> +	500a  PM5D
> +	500b  DME64N
> +	500c  DME24N
> +	6001  CRW2200UX Lightspeed 2 External CD-RW Drive
> +	7000  DTX
> +	7010  UB99
> +049a  Gandalf Technologies, Ltd
> +049b  Curtis Computer Products
> +049c  Acer Advanced Labs, Inc.
> +	0002  Keyboard (???)
> +049d  VLSI Technology
> +049f  Compaq Computer Corp.
> +	0002  InkJet Color Printer
> +	0003  iPAQ PocketPC
> +	000e  Internet Keyboard
> +	0012  InkJet Color Printer
> +	0018  PA-1/PA-2 MP3 Player
> +	0019  InkJet Color Printer
> +	001a  S4 100 Scanner
> +	001e  IJ650 Inkjet Printer
> +	001f  WL215 Adapter
> +	0021  S200 Scanner
> +	0027  Bluetooth Multiport Module by Compaq
> +	002a  1400P Inkjet Printer
> +	002b  A3000
> +	002c  Lexmark X125
> +	0032  802.11b Adapter [ipaq h5400]
> +	0033  Wireless LAN MultiPort W100 [Intersil PRISM 2.5]
> +	0036  Bluetooth Multiport Module
> +	0051  KU-0133 Easy Access Interner Keyboard
> +	0076  Wireless LAN MultiPort W200
> +	0080  GPRS Multiport
> +	0086  Bluetooth Device
> +	504a  Personal Jukebox PJB100
> +	505a  Linux-USB "CDC Subset" Device, or Itsy (experimental)
> +	8511  iPAQ Networking 10/100 Ethernet [pegasus2]
> +04a0  Digital Equipment Corp.
> +04a1  SystemSoft Corp.
> +	fff0  Telex Composite Device
> +04a2  FirePower Systems
> +04a3  Trident Microsystems, Inc.
> +04a4  Hitachi, Ltd
> +	0004  DVD-CAM DZ-MV100A Camcorder
> +	001e  DVDCAM USB HS Interface
> +04a5  Acer Peripherals Inc. (now BenQ Corp.)
> +	0001  Keyboard
> +	0002  API Ergo K/B
> +	0003  API Generic K/B Mouse
> +	12a6  AcerScan C310U
> +	1a20  Prisa 310U
> +	1a2a  Prisa 620U
> +	2022  Prisa 320U/340U
> +	2040  Prisa 620UT
> +	205e  ScanPrisa 640BU
> +	2060  Prisa 620U+/640U
> +	207e  Prisa 640BU
> +	209e  ScanPrisa 640BT
> +	20ae  S2W 3000U
> +	20b0  S2W 3300U/4300U
> +	20be  Prisa 640BT
> +	20c0  Prisa 1240UT
> +	20de  S2W 4300U+
> +	20f8  Benq 5000
> +	20fc  Benq 5000
> +	20fe  SW2 5300U
> +	2137  Benq 5150/5250
> +	2202  Benq 7400UT
> +	2311  Benq 5560
> +	3003  Benq Webcam
> +	3008  Benq 1500
> +	300a  Benq 3410
> +	300c  Benq 1016
> +	3019  Benq DC C40
> +	4000  P30 Composite Device
> +	4013  BenQ-Siemens EF82/SL91
> +	4044  BenQ-Siemens SF71
> +	4045  BenQ-Siemens E81
> +	4048  BenQ M7
> +	6001  Mass Storage Device
> +	6002  Mass Storage Device
> +	6003  ATA/ATAPI Adapter
> +	6004  Mass Storage Device
> +	6005  Mass Storage Device
> +	6006  Mass Storage Device
> +	6007  Mass Storage Device
> +	6008  Mass Storage Device
> +	6009  Mass Storage Device
> +	600a  Mass Storage Device
> +	600b  Mass Storage Device
> +	600c  Mass Storage Device
> +	600d  Mass Storage Device
> +	600e  Mass Storage Device
> +	600f  Mass Storage Device
> +	6010  Mass Storage Device
> +	6011  Mass Storage Device
> +	6012  Mass Storage Device
> +	6013  Mass Storage Device
> +	6014  Mass Storage Device
> +	6015  Mass Storage Device
> +	6125  MP3 Player
> +	6180  MP3 Player
> +	6200  MP3 Player
> +	7500  Hi-Speed Mass Storage Device
> +	8001  BenQ ZOWIE Gaming Mouse
> +	9000  AWL300 Wireless Adapter
> +	9001  AWL400 Wireless Adapter
> +	9213  Kbd Hub
> +04a6  Nokia Display Products
> +	00b9  Audio
> +	0180  Hub Type P
> +	0181  HID Monitor Controls
> +04a7  Visioneer
> +	0100  StrobePro
> +	0101  Strobe Pro Scanner (1.01)
> +	0102  StrobePro Scanner
> +	0211  OneTouch 7600 Scanner
> +	0221  OneTouch 5300 Scanner
> +	0223  OneTouch 8200
> +	0224  OneTouch 4800 USB/Microtek Scanport 3000
> +	0225  VistaScan Astra 3600(ENG)
> +	0226  OneTouch 5300 USB
> +	0229  OneTouch 7100
> +	022a  OneTouch 6600
> +	022c  OneTouch 9000/9020
> +	0231  6100 Scanner
> +	0311  6200 EPP/USB Scanner
> +	0321  OneTouch 8100 EPP/USB Scanner
> +	0331  OneTouch 8600 EPP/USB Scanner
> +	0341  6400
> +	0361  VistaScan Astra 3600(ENG)
> +	0362  OneTouch 9320
> +	0371  OneTouch 8700/8920
> +	0380  OneTouch 7700
> +	0382  Photo Port 7700
> +	0390  9650
> +	03a0  Xerox 4800 One Touch
> +	0410  OneTouch Pro 8800/8820
> +	0421  9450 USB
> +	0423  9750 Scanner
> +	0424  Strobe XP 450
> +	0425  Strobe XP 100
> +	0426  Strobe XP 200
> +	0427  Strobe XP 100
> +	0444  OneTouch 7300
> +	0445  CardReader 100
> +	0446  Xerox DocuMate 510
> +	0447  XEROX DocuMate 520
> +	0448  XEROX DocuMate 250
> +	0449  Xerox DocuMate 252
> +	044a  Xerox 6400
> +	044c  Xerox DocuMate 262
> +	0474  Strobe XP 300
> +	0475  Xerox DocuMate 272
> +	0478  Strobe XP 220
> +	0479  Strobe XP 470
> +	047a  9450
> +	047b  9650
> +	047d  9420
> +	0480  9520
> +	048f  Strobe XP 470
> +	0491  Strobe XP 450
> +	0493  9750
> +	0494  Strobe XP 120
> +	0497  Patriot 430
> +	0498  Patriot 680
> +	0499  Patriot 780
> +	049b  Strobe XP 100
> +	04a0  7400
> +	04ac  Xerox Travel Scanner 100
> +	04bb  strobe 400 scanner
> +	04cd  Xerox Travel Scanner 150
> +	04ee  Duplex Combo Scanner
> +04a8  Multivideo Labs, Inc.
> +	0101  Hub
> +	0303  Peripheral Switch
> +	0404  Peripheral Switch
> +04a9  Canon, Inc.
> +	1005  BJ Printer Hub
> +	1035  PD Printer Storage
> +	1050  BJC-8200
> +	1051  BJC-3000 Color Printer
> +	1052  BJC-6100
> +	1053  BJC-6200
> +	1054  BJC-6500
> +	1055  BJC-85
> +	1056  BJC-2110 Color Printer
> +	1057  LR1
> +	105a  BJC-55
> +	105b  S600 Printer
> +	105c  S400
> +	105d  S450 Printer
> +	105e  S800
> +	1062  S500 Printer
> +	1063  S4500
> +	1064  S300 Printer
> +	1065  S100
> +	1066  S630
> +	1067  S900
> +	1068  S9000
> +	1069  S820
> +	106a  S200 Printer
> +	106b  S520 Printer
> +	106d  S750 Printer
> +	106e  S820D
> +	1070  S530D
> +	1072  I850 Printer
> +	1073  I550 Printer
> +	1074  S330 Printer
> +	1076  i70
> +	1077  i950
> +	107a  S830D
> +	107b  i320
> +	107c  i470D
> +	107d  i9100
> +	107e  i450
> +	107f  i860
> +	1082  i350
> +	1084  i250
> +	1085  i255
> +	1086  i560
> +	1088  i965
> +	108a  i455
> +	108b  i900D
> +	108c  i475D
> +	108d  PIXMA iP2000
> +	108f  i80
> +	1090  i9900 Photo Printer
> +	1091  PIXMA iP1500
> +	1093  PIXMA iP4000
> +	1094  PIXMA iP3000x Printer
> +	1095  PIXMA iP6000D
> +	1097  PIXMA iP5000
> +	1098  PIXMA iP1000
> +	1099  PIXMA iP8500
> +	109c  PIXMA iP4000R
> +	109d  iP90
> +	10a0  PIXMA iP1600 Printer
> +	10a2  iP4200
> +	10a4  iP5200R
> +	10a5  iP5200
> +	10a7  iP6210D
> +	10a8  iP6220D
> +	10a9  iP6600D
> +	10b6  PIXMA iP4300 Printer
> +	10b7  PIXMA iP5300 Printer
> +	10c2  PIXMA iP1800 Printer
> +	10c4  Pixma iP4500 Printer
> +	10c9  PIXMA iP4600 Printer
> +	10ca  PIXMA iP3600 Printer
> +	10e3  PIXMA iX6850 Printer
> +	12fe  Printer in service mode
> +	1404  W6400PG
> +	1405  W8400PG
> +	150f  BIJ2350 PCL
> +	1510  BIJ1350 PCL
> +	1512  BIJ1350D PCL
> +	1601  DR-2080C Scanner
> +	1607  DR-6080 Scanner
> +	1608  DR-2580C Scanner
> +	1609  DR-3080CII
> +	160a  DR-2050C Scanner
> +	1700  PIXMA MP110 Scanner
> +	1701  PIXMA MP130 Scanner
> +	1702  MP410 Composite
> +	1703  MP430 Composite
> +	1704  MP330 Composite
> +	1706  PIXMA MP750 Scanner
> +	1707  PIXMA MP780/MP790
> +	1708  PIXMA MP760/MP770
> +	1709  PIXMA MP150 Scanner
> +	170a  PIXMA MP170 Scanner
> +	170b  PIXMA MP450 Scanner
> +	170c  PIXMA MP500 Scanner
> +	170d  PIXMA MP800 Scanner
> +	170e  PIXMA MP800R
> +	1710  MP950
> +	1712  PIXMA MP530
> +	1713  PIXMA MP830 Scanner
> +	1714  MP160
> +	1715  PIXMA MP180
> +	1716  PIXMA MP460
> +	1717  PIXMA MP510
> +	1718  PIXMA MP600
> +	1719  PIXMA MP600R
> +	171a  PIXMA MP810
> +	171b  PIXMA MP960
> +	171c  PIXMA MX7600
> +	1721  PIXMA MP210
> +	1722  PIXMA MP220
> +	1723  PIXMA MP470
> +	1724  PIXMA MP520 series
> +	1725  PIXMA MP610
> +	1726  PIXMA MP970
> +	1727  PIXMA MX300
> +	1728  PIXMA MX310 series
> +	1729  PIXMA MX700
> +	172b  MP140 ser
> +	172c  PIXMA MX850
> +	172d  PIXMA MP980
> +	172e  PIXMA MP630
> +	172f  PIXMA MP620
> +	1730  PIXMA MP540
> +	1731  PIXMA MP480
> +	1732  PIXMA MP240
> +	1733  PIXMA MP260
> +	1734  PIXMA MP190
> +	1735  PIXMA MX860
> +	1736  PIXMA MX320 series
> +	1737  PIXMA MX330
> +	173a  PIXMA MP250
> +	173b  PIXMA MP270 All-In-One Printer
> +	173c  PIXMA MP490
> +	173d  PIXMA MP550
> +	173e  PIXMA MP560
> +	173f  PIXMA MP640
> +	1740  PIXMA MP990
> +	1741  PIXMA MX340
> +	1742  PIXMA MX350
> +	1743  PIXMA MX870
> +	1746  PIXMA MP280
> +	1747  PIXMA MP495
> +	1748  PIXMA MG5100 Series
> +	1749  PIXMA MG5200 Series
> +	174a  PIXMA MG6100 Series
> +	174b  PIXMA MG8100 Series
> +	174d  PIXMA MX360
> +	174e  PIXMA MX410
> +	174f  PIXMA MX420
> +	1750  PIXMA MX880 Series
> +	1752  PIXMA MG3100 Series
> +	1753  PIXMA MG4100 Series
> +	1754  PIXMA MG5300 Series
> +	1755  PIXMA MG6200 Series
> +	1756  PIXMA MG8200 Series
> +	1757  PIXMA MP493
> +	1759  PIXMA MX370 Series
> +	175b  PIXMA MX430 Series
> +	175c  PIXMA MX510 Series
> +	175d  PIXMA MX710 Series
> +	175e  PIXMA MX890 Series
> +	175f  PIXMA MP230
> +	1762  PIXMA MG3200 Series
> +	1763  PIXMA MG4200 Series
> +	1764  PIXMA MG5400 Series
> +	1765  PIXMA MG6300 Series
> +	1766  PIXMA MX390 Series
> +	1768  PIXMA MX450 Series
> +	1769  PIXMA MX520 Series
> +	176a  PIXMA MX720 Series
> +	176b  PIXMA MX920 Series
> +	176d  PIXMA MG2500 Series
> +	176e  PIXMA MG3500 Series
> +	176f  PIXMA MG6500 Series
> +	1770  PIXMA MG6400 Series
> +	1771  PIXMA MG5500 Series
> +	1772  PIXMA MG7100 Series
> +	1774  PIXMA MX470 Series
> +	1775  PIXMA MX530 Series
> +	177c  PIXMA MG7500 Series
> +	177e  PIXMA MG6600 Series
> +	177f  PIXMA MG5600 Series
> +	1780  PIXMA MG2900 Series
> +	1787  PIXMA MX490 Series
> +	178a  PIXMA MG3600 Series
> +	178d  PIXMA MG6853
> +	180b  PIXMA MG3000 series
> +	1856  PIXMA TS6250
> +	1900  CanoScan LiDE 90
> +	1901  CanoScan 8800F
> +	1904  CanoScan LiDE 100
> +	1905  CanoScan LiDE 200
> +	1906  CanoScan 5600F
> +	1907  CanoScan LiDE 700F
> +	1909  CanoScan LiDE 110
> +	190a  CanoScan LiDE 210
> +	190d  CanoScan 9000F Mark II
> +	190e  CanoScan LiDE 120
> +	190f  CanoScan LiDE 220
> +	1913  CanoScan LiDE 300
> +	2200  CanoScan LiDE 25
> +	2201  CanoScan FB320U
> +	2202  CanoScan FB620U
> +	2204  CanoScan FB630U
> +	2205  CanoScan FB1210U
> +	2206  CanoScan N650U/N656U
> +	2207  CanoScan 1220U
> +	2208  CanoScan D660U
> +	220a  CanoScan D2400UF
> +	220b  CanoScan D646U
> +	220c  CanoScan D1250U2
> +	220d  CanoScan N670U/N676U/LiDE 20
> +	220e  CanoScan N1240U/LiDE 30
> +	220f  CanoScan 8000F
> +	2210  CanoScan 9900F
> +	2212  CanoScan 5000F
> +	2213  CanoScan LiDE 50/LiDE 35/LiDE 40
> +	2214  CanoScan LiDE 80
> +	2215  CanoScan 3000/3000F/3000ex
> +	2216  CanoScan 3200F
> +	2217  CanoScan 5200F
> +	2219  CanoScan 9950F
> +	221b  CanoScan 4200F
> +	221c  CanoScan LiDE 60
> +	221e  CanoScan 8400F
> +	221f  CanoScan LiDE 500F
> +	2220  CanoScan LIDE 25
> +	2224  CanoScan LiDE 600F
> +	2225  CanoScan LiDE 70
> +	2228  CanoScan 4400F
> +	2229  CanoScan 8600F
> +	2602  MultiPASS C555
> +	2603  MultiPASS C755
> +	260a  LBP810
> +	260e  LBP-2000
> +	2610  MPC600F
> +	2611  SmartBase MPC400
> +	2612  MultiPASS C855
> +	2617  LBP1210
> +	261a  iR1600
> +	261b  iR1610
> +	261c  iC2300
> +	261f  MPC200 Printer
> +	2621  iR2000
> +	2622  iR2010
> +	2623  FAX-B180C
> +	2629  FAXPHONE L75
> +	262b  LaserShot LBP-1120 Printer
> +	262c  imageCLASS D300
> +	262d  iR C3200
> +	262f  PIXMA MP730
> +	2630  PIXMA MP700
> +	2631  LASER CLASS 700
> +	2632  FAX-L2000
> +	2633  LASERCLASS 500
> +	2634  PC-D300/FAX-L400/ICD300
> +	2635  MPC190
> +	2636  LBP3200
> +	2637  iR C6800
> +	2638  iR C3100
> +	263c  PIXMA MP360
> +	263d  PIXMA MP370
> +	263e  PIXMA MP390
> +	263f  PIXMA MP375R
> +	2646  MF5530 Scanner Device V1.9.1
> +	2647  MF5550 Composite
> +	264c  PIXMA MP740
> +	264d  PIXMA MP710
> +	264e  MF5630
> +	264f  MF5650 (FAX)
> +	2650  iR 6800C EUR
> +	2651  iR 3100C EUR
> +	2654  LBP3600
> +	2655  FP-L170/MF350/L380/L398
> +	2656  iR1510-1670 CAPT Printer
> +	2657  LBP3210
> +	2659  MF8100
> +	265b  CAPT Printer
> +	265c  iR C3220
> +	265d  MF5730
> +	265e  MF5750
> +	265f  MF5770
> +	2660  MF3110
> +	2663  iR3570/iR4570
> +	2664  iR2270/iR2870
> +	2665  iR C2620
> +	2666  iR C5800
> +	2667  iR85PLUS
> +	2669  iR105PLUS
> +	266a  LBP3000
> +	266b  iR8070
> +	266c  iR9070
> +	266d  iR 5800C EUR
> +	266e  CAPT Device
> +	266f  iR2230
> +	2670  iR3530
> +	2671  iR5570/iR6570
> +	2672  iR C3170
> +	2673  iR 3170C EUR
> +	2674  FAX-L120
> +	2675  iR2830
> +	2676  LBP2900
> +	2677  iR C2570
> +	2678  iR 2570C EUR
> +	2679  LBP5000
> +	267a  iR2016
> +	267b  iR2020
> +	267d  MF7100 series
> +	267e  LBP3300
> +	2684  MF3200 series
> +	2686  MF6500 series
> +	2687  iR4530
> +	2688  LBP3460
> +	2689  FAX-L180/L380S/L398S
> +	268a  LC310/L390/L408S
> +	268b  LBP3500
> +	268c  iR C6870
> +	268d  iR 6870C EUR
> +	268e  iR C5870
> +	268f  iR 5870C EUR
> +	2691  iR7105
> +	26a1  LBP5300
> +	26a3  MF4100 series
> +	26a4  LBP5100
> +	26b0  MF4600 series
> +	26b4  MF4010 series
> +	26b5  MF4200 series
> +	26b6  FAX-L140/L130
> +	26b9  LBP3310
> +	26ba  LBP5050
> +	26da  LBP3010/LBP3018/LBP3050
> +	26db  LBP3100/LBP3108/LBP3150
> +	26e6  iR1024
> +	26ea  LBP9100C
> +	26ee  MF4320-4350
> +	26f1  LBP7200C
> +	26ff  LBP6300
> +	271a  LBP6000
> +	271b  LBP6200
> +	271c  LBP7010C/7018C
> +	2736  I-SENSYS MF4550d
> +	2737  MF4410
> +	2742  imageRUNNER1133 series
> +	2771  LBP6020
> +	2796  LBP6230/6240
> +	3041  PowerShot S10
> +	3042  CanoScan FS4000US Film Scanner
> +	3043  PowerShot S20
> +	3044  EOS D30
> +	3045  PowerShot S100
> +	3046  IXY Digital
> +	3047  Digital IXUS
> +	3048  PowerShot G1
> +	3049  PowerShot Pro90 IS
> +	304a  CP-10
> +	304b  IXY Digital 300
> +	304c  PowerShot S300
> +	304d  Digital IXUS 300
> +	304e  PowerShot A20
> +	304f  PowerShot A10
> +	3050  PowerShot unknown 1
> +	3051  PowerShot S110
> +	3052  Digital IXUS V
> +	3055  PowerShot G2
> +	3056  PowerShot S40
> +	3057  PowerShot S30
> +	3058  PowerShot A40
> +	3059  PowerShot A30
> +	305b  ZR45MC Digital Camcorder
> +	305c  PowerShot unknown 2
> +	3060  EOS D60
> +	3061  PowerShot A100
> +	3062  PowerShot A200
> +	3063  CP-100
> +	3065  PowerShot S200
> +	3066  Digital IXUS 330
> +	3067  MV550i Digital Video Camera
> +	3069  PowerShot G3
> +	306a  Digital unknown 3
> +	306b  MVX2i Digital Video Camera
> +	306c  PowerShot S45
> +	306d  PowerShot S45 PtP Mode
> +	306e  PowerShot G3 (normal mode)
> +	306f  PowerShot G3 (ptp)
> +	3070  PowerShot S230
> +	3071  PowerShot S230 (ptp)
> +	3072  PowerShot SD100 / Digital IXUS II (ptp)
> +	3073  PowerShot A70 (ptp)
> +	3074  PowerShot A60 (ptp)
> +	3075  IXUS 400 Camera
> +	3076  PowerShot A300
> +	3077  PowerShot S50
> +	3078  ZR70MC Digital Camcorder
> +	307a  MV650i (normal mode)
> +	307b  MV630i Digital Video Camera
> +	307c  CP-200
> +	307d  CP-300
> +	307f  Optura 20
> +	3080  MVX150i (normal mode) / Optura 20 (normal mode)
> +	3081  Optura 10
> +	3082  MVX100i / Optura 10
> +	3083  EOS 10D
> +	3084  EOS 300D / EOS Digital Rebel
> +	3085  PowerShot G5
> +	3087  Elura 50 (PTP mode)
> +	3088  Elura 50 (normal mode)
> +	308d  MVX3i
> +	308e  FV M1 (normal mode) / MVX 3i (normal mode) / Optura Xi (normal mode)
> +	3093  Optura 300
> +	3096  IXY DV M2 (normal mode) / MVX 10i (normal mode)
> +	3099  EOS 300D (ptp)
> +	309a  PowerShot A80
> +	309b  Digital IXUS (ptp)
> +	309c  PowerShot S1 IS
> +	309d  Powershot Pro 1
> +	309f  Camera
> +	30a0  Camera
> +	30a1  Camera
> +	30a2  Camera
> +	30a8  Elura 60E/Optura 40 (ptp)
> +	30a9  MVX25i (normal mode) / Optura 40 (normal mode)
> +	30b1  PowerShot S70 (normal mode) / PowerShot S70 (PTP mode)
> +	30b2  PowerShot S60 (normal mode) / PowerShot S60 (PTP mode)
> +	30b3  PowerShot G6 (normal mode) / PowerShot G6 (PTP mode)
> +	30b4  PowerShot S500
> +	30b5  PowerShot A75
> +	30b6  Digital IXUS II2  / Digital IXUS II2 (PTP mode) / PowerShot SD110 (PTP mode) / PowerShot SD110 Digital ELPH
> +	30b7  PowerShot A400 / PowerShot A400 (PTP mode)
> +	30b8  PowerShot A310 / PowerShot A310 (PTP mode)
> +	30b9  Powershot A85
> +	30ba  PowerShot S410 Digital Elph
> +	30bb  PowerShot A95
> +	30bd  CP-220
> +	30be  CP-330
> +	30bf  Digital IXUS 40
> +	30c0  Digital IXUS 30 (PTP mode) / PowerShot SD200 (PTP mode)
> +	30c1  Digital IXUS 50 (normal mode) / IXY Digital 55 (normal mode) / PowerShot A520 (PTP mode) / PowerShot SD400 (normal mode)
> +	30c2  PowerShot A510 (normal mode) / PowerShot A510 (PTP mode)
> +	30c4  Digital IXUS i5 (normal mode) / IXY Digital L2 (normal mode) / PowerShot SD20 (normal mode)
> +	30ea  EOS 1D Mark II (PTP mode)
> +	30eb  EOS 20D
> +	30ec  EOS 20D (ptp)
> +	30ee  EOS 350D
> +	30ef  EOS 350D (ptp)
> +	30f0  PowerShot S2 IS (PTP mode)
> +	30f2  Digital IXUS 700 (normal mode) / Digital IXUS 700 (PTP mode) / IXY Digital 600 (normal mode) / PowerShot SD500 (normal mode) / PowerShot SD500 (PTP mode)
> +	30f4  PowerShot SD30 / Ixus iZoom / IXY DIGITAL L3
> +	30f5  SELPHY CP500
> +	30f6  SELPHY CP400
> +	30f8  Powershot A430
> +	30f9  PowerShot A410 (PTP mode)
> +	30fa  PowerShot S80
> +	30fc  PowerShot A620 (PTP mode)
> +	30fd  PowerShot A610 (normal mode)/PowerShot A610 (PTP mode)
> +	30fe  Digital IXUS 65 (PTP mode)/PowerShot SD630 (PTP mode)
> +	30ff  Digital IXUS 55 (PTP mode)/PowerShot SD450 (PTP mode)
> +	3100  PowerShot TX1
> +	310b  SELPHY CP600
> +	310e  Digital IXUS 50 (PTP mode)
> +	310f  PowerShot A420
> +	3110  EOS Digital Rebel XTi
> +	3115  PowerShot SD900 / Digital IXUS 900 Ti / IXY DIGITAL 1000
> +	3116  Digital IXUS 750 / PowerShot SD550 (PTP mode)
> +	3117  PowerShot A700
> +	3119  PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS
> +	311a  PowerShot S3 IS
> +	311b  PowerShot A540
> +	311c  PowerShot SD600 DIGITAL ELPH / DIGITAL IXUS 60 / IXY DIGITAL 70
> +	3125  PowerShot G7
> +	3126  PowerShot A530
> +	3127  SELPHY CP710
> +	3128  SELPHY CP510
> +	312d  Elura 100
> +	3136  PowerShot SD800 IS / Digital IXUS 850 IS / IXY DIGITAL 900 IS
> +	3137  PowerShot SD40 / Digital IXUS i7 IXY / DIGITAL L4
> +	3138  PowerShot A710 IS
> +	3139  PowerShot A640
> +	313a  PowerShot A630
> +	3141  SELPHY ES1
> +	3142  SELPHY CP730
> +	3143  SELPHY CP720
> +	3145  EOS 450D
> +	3146  EOS 40D
> +	3147  EOS 1Ds Mark III
> +	3148  PowerShot S5 IS
> +	3149  PowerShot A460
> +	314b  PowerShot SD850 IS DIGITAL ELPH / Digital IXUS 950 IS / IXY DIGITAL 810 IS
> +	314c  PowerShot A570 IS
> +	314d  PowerShot A560
> +	314e  PowerShot SD750 DIGITAL ELPH / DIGITAL IXUS 75 / IXY DIGITAL 90
> +	314f  PowerShot SD1000 DIGITAL ELPH / DIGITAL IXUS 70 / IXY DIGITAL 10
> +	3150  PowerShot A550
> +	3155  PowerShot A450
> +	315a  PowerShot G9
> +	315b  PowerShot A650 IS
> +	315d  PowerShot A720
> +	315e  PowerShot SX100 IS
> +	315f  PowerShot SD950 IS DIGITAL ELPH / DIGITAL IXUS 960 IS / IXY DIGITAL 2000 IS
> +	3160  Digital IXUS 860 IS
> +	3170  SELPHY CP750
> +	3171  SELPHY CP740
> +	3172  SELPHY CP520
> +	3173  PowerShot SD890 IS DIGITAL ELPH / Digital IXUS 970 IS / IXY DIGITAL 820 IS
> +	3174  PowerShot SD790 IS DIGITAL ELPH / Digital IXUS 90 IS / IXY DIGITAL 95 IS
> +	3175  IXY Digital 25 IS
> +	3176  PowerShot A590
> +	3177  PowerShot A580
> +	317a  PC1267 [Powershot A470]
> +	3184  Digital IXUS 80 IS (PTP mode)
> +	3185  SELPHY ES2
> +	3186  SELPHY ES20
> +	318d  PowerShot SX100 IS
> +	318e  PowerShot A1000 IS
> +	318f  PowerShot G10
> +	3191  PowerShot A2000 IS
> +	3192  PowerShot SX110 IS
> +	3193  PowerShot SD990 IS DIGITAL ELPH / Digital IXUS 980 IS / IXY DIGITAL 3000 IS
> +	3195  PowerShot SX1 IS
> +	3196  PowerShot SD880 IS DIGITAL ELPH / Digital IXUS 870 IS / IXY DIGITAL 920 IS
> +	3199  EOS 5D Mark II
> +	319a  EOS 7D
> +	319b  EOS 50D
> +	31aa  SELPHY CP770
> +	31ab  SELPHY CP760
> +	31ad  PowerShot E1
> +	31af  SELPHY ES3
> +	31b0  SELPHY ES30
> +	31b1  SELPHY CP530
> +	31bc  PowerShot D10
> +	31bd  PowerShot SD960 IS DIGITAL ELPH / Digital IXUS 110 IS / IXY DIGITAL 510 IS
> +	31be  PowerShot A2100 IS
> +	31bf  PowerShot A480
> +	31c0  PowerShot SX200 IS
> +	31c1  PowerShot SD970 IS DIGITAL ELPH / Digital IXUS 990 IS / IXY DIGITAL 830 IS
> +	31c2  PowerShot SD780 IS DIGITAL ELPH / Digital IXUS 100 IS / IXY DIGITAL 210 IS
> +	31c3  PowerShot A1100 IS
> +	31c4  PowerShot SD1200 IS DIGITAL ELPH / Digital IXUS 95 IS / IXY DIGITAL 110 IS
> +	31cf  EOS Rebel T1i / EOS 500D / EOS Kiss X3
> +	31dd  SELPHY CP780
> +	31df  PowerShot G11
> +	31e0  PowerShot SX120 IS
> +	31e1  PowerShot S90
> +	31e4  PowerShot SX20 IS
> +	31e5  Digital IXUS 200 IS
> +	31e6  PowerShot SD940 IS DIGITAL ELPH / Digital IXUS 120 IS / IXY DIGITAL 220 IS
> +	31e7  SELPHY CP790
> +	31ea  EOS Rebel T2i / EOS 550D / EOS Kiss X4
> +	31ee  SELPHY ES40
> +	31ef  PowerShot A495
> +	31f0  PowerShot A490
> +	31f1  PowerShot A3100 IS / PowerShot A3150 IS
> +	31f2  PowerShot A3000 IS
> +	31f3  PowerShot Digital ELPH SD1400 IS
> +	31f4  PowerShot SD1300 IS / IXUS 105
> +	31f5  Powershot SD3500 IS / IXUS 210 IS
> +	31f6  PowerShot SX210 IS
> +	31f7  Powershot SD4000 IS / IXUS 300 HS / IXY 30S
> +	31f8  Powershot SD4500 IS / IXUS 1000 HS / IXY 50S
> +	31ff  Digital IXUS 55
> +	3209  Vixia HF S21 A
> +	320f  PowerShot G12
> +	3210  Powershot SX30 IS
> +	3211  PowerShot SX130 IS
> +	3212  Powershot S95
> +	3214  SELPHY CP800
> +	3215  EOS 60D
> +	3218  EOS 600D / Rebel T3i (ptp)
> +	3219  EOS 1D X
> +	3223  PowerShot A3300 IS
> +	3224  PowerShot A3200 IS
> +	3225  PowerShot ELPH 500 HS / IXUS 310 HS
> +	3226  PowerShow A800
> +	3227  PowerShot ELPH 100 HS / IXUS 115 HS
> +	3228  PowerShot SX230 HS
> +	3229  PowerShot ELPH 300 HS / IXUS 220 HS
> +	322a  PowerShot A2200
> +	322b  Powershot A1200
> +	322c  PowerShot SX220 HS
> +	3233  PowerShot G1 X
> +	3234  PowerShot SX150 IS
> +	3235  PowerShot ELPH 510 HS / IXUS 1100 HS
> +	3236  PowerShot S100
> +	3237  PowerShot ELPH 310 HS / IXUS 230 HS
> +	3238  PowerShot SX40 HS
> +	323a  EOS 5D Mark III
> +	323b  EOS Rebel T4i
> +	323d  EOS M
> +	323e  PowerShot A1300
> +	323f  PowerShot A810
> +	3240  PowerShot ELPH 320 HS / IXUS 240 HS
> +	3241  PowerShot ELPH 110 HS / IXUS 125 HS
> +	3242  PowerShot D20
> +	3243  PowerShot A4000 IS
> +	3244  PowerShot SX260 HS
> +	3245  PowerShot SX240 HS
> +	3246  PowerShot ELPH 530 HS / IXUS 510 HS
> +	3247  PowerShot ELPH 520 HS / IXUS 500 HS
> +	3248  PowerShot A3400 IS
> +	3249  PowerShot A2400 IS
> +	324a  PowerShot A2300
> +	3250  EOS 6D
> +	3252  EOS 1D C
> +	3253  EOS 70D
> +	3255  SELPHY CP900
> +	3256  SELPHY CP810
> +	3258  PowerShot G15
> +	3259  PowerShot SX50 HS
> +	325a  PowerShot SX160 IS
> +	325b  PowerShot S110
> +	325c  PowerShot SX500 IS
> +	325e  PowerShot N
> +	325f  PowerShot SX280 HS
> +	3260  PowerShot SX270 HS
> +	3261  PowerShot A3500 IS
> +	3262  PowerShot A2600
> +	3263  PowerShot SX275 HS
> +	3264  PowerShot A1400
> +	3265  Powershot ELPH 130 IS / IXUS 140
> +	3266  Powershot ELPH 120 IS / IXUS 135
> +	3268  PowerShot ELPH 330 HS / IXUS 255 HS
> +	326f  EOS 7D Mark II
> +	3270  EOS 100D
> +	3271  PowerShot A2500
> +	3272  EOS 700D
> +	3274  PowerShot G16
> +	3275  PowerShot S120
> +	3276  PowerShot SX170 IS
> +	3277  PowerShot SX510 HS
> +	3278  PowerShot S200
> +	327a  SELPHY CP910
> +	327b  SELPHY CP820
> +	327d  Powershot ELPH 115 IS / IXUS 132
> +	327f  EOS Rebel T5 / EOS 1200D / EOS Kiss X70
> +	3284  PowerShot D30
> +	3285  PowerShot SX700 HS
> +	3286  PowerShot SX600 HS
> +	3287  PowerShot ELPH 140 IS / IXUS 150
> +	3288  Powershot ELPH 135 / IXUS 145
> +	3289  PowerShot ELPH 340 HS / IXUS 265 HS
> +	328a  PowerShot ELPH 150 IS / IXUS 155
> +	328b  PowerShot N Facebook(R) Ready
> +	3299  EOS M3
> +	329a  PowerShot SX60 HS
> +	329b  PowerShot SX520 HS
> +	329c  PowerShot SX400 IS
> +	329d  PowerShot G7 X
> +	329f  PowerShot SX530 HS
> +	32a0  EOS M10
> +	32a6  PowerShot SX710 HS
> +	32a7  PowerShot SX610 HS
> +	32a8  PowerShot G3 X
> +	32aa  Powershot ELPH 160 / IXUS 160
> +	32ab  PowerShot ELPH 350HS / IXUS 275 HS
> +	32ac  PowerShot ELPH 170 IS / IXUS 170
> +	32ad  PowerShot SX410 IS
> +	32b1  SELPHY CP1200
> +	32b2  PowerShot G9 X
> +	32b3  PowerShot G5 X
> +	32b4  EOS Rebel T6
> +	32bb  EOS M5
> +	32bf  PowerShot SX420 IS
> +	32c0  PowerShot ELPH 190IS
> +	32c1  PowerShot ELPH 180 / IXUS 175
> +	32c2  PowerShot SX720 HS
> +	32c5  EOS M6
> +	32cc  EOS 200D
> +	32d1  EOS M100
> +	32d2  EOS M50
> +	32d4  Powershot ELPH 185 / IXUS 185 / IXY 200
> +	32d5  PowerShot SX430 IS
> +	32db  SELPHY CP1300
> +04aa  DaeWoo Telecom, Ltd
> +04ab  Chromatic Research
> +04ac  Micro Audiometrics Corp.
> +04ad  Dooin Electronics
> +	2501  Bluetooth Device
> +04af  Winnov L.P.
> +04b0  Nikon Corp.
> +	0102  Coolpix 990
> +	0103  Coolpix 880
> +	0104  Coolpix 995
> +	0106  Coolpix 775
> +	0107  Coolpix 5000
> +	0108  Coolpix 2500
> +	0109  Coolpix 2500 (ptp)
> +	010a  Coolpix 4500
> +	010b  Coolpix 4500 (ptp)
> +	010d  Coolpix 5700 (ptp)
> +	010e  Coolpix 4300 (storage)
> +	010f  Coolpix 4300 (ptp)
> +	0110  Coolpix 3500 (Sierra Mode)
> +	0111  Coolpix 3500 (ptp)
> +	0112  Coolpix 885 (ptp)
> +	0113  Coolpix 5000 (ptp)
> +	0114  Coolpix 3100 (storage)
> +	0115  Coolpix 3100 (ptp)
> +	0117  Coolpix 2100 (ptp)
> +	0119  Coolpix 5400 (ptp)
> +	011d  Coolpix 3700 (ptp)
> +	0121  Coolpix 3200 (ptp)
> +	0122  Coolpix 2200 (ptp)
> +	0124  Coolpix 8400 (mass storage mode)
> +	0125  Coolpix 8400 (ptp)
> +	0126  Coolpix 8800
> +	0129  Coolpix 4800 (ptp)
> +	012c  Coolpix 4100 (storage)
> +	012d  Coolpix 4100 (ptp)
> +	012e  Coolpix 5600 (ptp)
> +	0130  Coolpix 4600 (ptp)
> +	0135  Coolpix 5900 (ptp)
> +	0136  Coolpix 7900 (storage)
> +	0137  Coolpix 7900 (ptp)
> +	013a  Coolpix 100 (storage)
> +	013b  Coolpix 100 (ptp)
> +	0141  Coolpix P2 (storage)
> +	0142  Coolpix P2 (ptp)
> +	0163  Coolpix P5100 (ptp)
> +	0169  Coolpix P50 (ptp)
> +	0202  Coolpix SQ (ptp)
> +	0203  Coolpix 4200 (mass storage mode)
> +	0204  Coolpix 4200 (ptp)
> +	0205  Coolpix 5200 (storage)
> +	0206  Coolpix 5200 (ptp)
> +	0301  Coolpix 2000 (storage)
> +	0302  Coolpix 2000 (ptp)
> +	0317  Coolpix L20 (ptp)
> +	0402  DSC D100 (ptp)
> +	0403  D2H (mass storage mode)
> +	0404  D2H SLR (ptp)
> +	0405  D70 (mass storage mode)
> +	0406  DSC D70 (ptp)
> +	0408  D2X SLR (ptp)
> +	0409  D50 digital camera
> +	040a  D50 (ptp)
> +	040c  D2Hs
> +	040e  DSC D70s (ptp)
> +	040f  D200 (mass storage mode)
> +	0410  D200 (ptp)
> +	0411  D80 (mass storage mode)
> +	0412  D80 (MTP/PTP mode)
> +	0413  D40 (mass storage mode)
> +	041e  D60 digital camera (mass storage mode)
> +	0422  D700 (ptp)
> +	0423  D5000
> +	0424  D3000
> +	0425  D300S
> +	0428  D7000
> +	0429  D5100
> +	042a  D800 (ptp)
> +	0430  D7100
> +	0436  D810
> +	043f  D5600
> +	0f03  PD-10 Wireless Printer Adapter
> +	4000  Coolscan LS 40 ED
> +	4001  LS 50 ED/Coolscan V ED
> +	4002  Super Coolscan LS-5000 ED
> +04b1  Pan International
> +04b3  IBM Corp.
> +	3003  Rapid Access III Keyboard
> +	3004  Media Access Pro Keyboard
> +	300a  Rapid Access IIIe Keyboard
> +	3016  UltraNav Keyboard Hub
> +	3018  UltraNav Keyboard
> +	301a  2-port low-power hub
> +	301b  SK-8815 Keyboard
> +	301c  Enhanced Performance Keyboard
> +	3020  Enhanced Performance Keyboard
> +	3025  NetVista Full Width Keyboard
> +	3100  NetVista Mouse
> +	3103  ScrollPoint Pro Mouse
> +	3104  ScrollPoint Wireless Mouse
> +	3105  ScrollPoint Optical (HID)
> +	3107  ThinkPad 800dpi Optical Travel Mouse
> +	3108  800dpi Optical Mouse w/ Scroll Point
> +	3109  Optical ScrollPoint Pro Mouse
> +	310b  Red Wheel Mouse
> +	310c  Wheel Mouse
> +	4427  Portable CD ROM
> +	4482  Serial Converter
> +	4484  SMSC USB20H04 3-Port Hub [ThinkPad X4 UltraBase, Wistron S Note-3 Media Slice]
> +	4485  ThinkPad Dock Hub
> +	4524  40 Character Vacuum Fluorescent Display
> +	4525  Double sided CRT
> +	4535  4610 Suremark Printer
> +	4550  NVRAM (128 KB)
> +	4554  Cash Drawer
> +	4580  Hub w/ NVRAM
> +	4581  4800-2xx Hub w/ Cash Drawer
> +	4604  Keyboard w/ Card Reader
> +	4671  4820 LCD w/ MSR/KB
> +04b4  Cypress Semiconductor Corp.
> +	0001  Mouse
> +	0002  CY7C63x0x Thermometer
> +	0008  CDC ACM serial port
> +	0033  Mouse
> +	0060  Wireless optical mouse
> +	00f3  FX3 micro-controller (DFU mode)
> +	0100  Cino FuzzyScan F760-B
> +	0101  Keyboard/Hub
> +	0102  Keyboard with APM
> +	0130  MyIRC Remote Receiver
> +	0306  Telephone Receiver
> +	0407  Optical Skype Mouse
> +	0818  AE-SMKD92-* [Thumb Keyboard]
> +	0bad  MetaGeek Wi-Spy
> +	1002  CY7C63001 R100 FM Radio
> +	1006  Human Interface Device
> +	2050  hub
> +	2830  Opera1 DVB-S (cold state)
> +	3813  NANO BIOS Programmer
> +	4235  Monitor 02 Driver
> +	4381  SCAPS USC-1 Scanner Controller
> +	4611  Storage Adapter FX2 (CY)
> +	4616  Flash Disk (TPP)
> +	4624  DS-Xtreme Flash Card
> +	4717  West Bridge
> +	5201  Combi Keyboard-Hub (Hub)
> +	5202  Combi Keyboard-Hub (Keyboard)
> +	5500  HID->COM RS232 Adapter
> +	5a9b  Dacal CD/DVD Library D-101/DC-300/DC-016RW
> +	6022  Hantek DSO-6022BE
> +	602a  Hantek DSO-6022BL
> +	6370  ViewMate Desktop Mouse CC2201
> +	6502  CY4609
> +	6506  CY4603
> +	650a  CY4613
> +	6560  CY7C65640 USB-2.0 "TetraHub"
> +	6570  Unprogrammed CY7C65632/34 hub HX2VL
> +	6572  Unprogrammed CY7C65642 hub
> +	6830  CY7C68300A EZ-USB AT2 USB 2.0 to ATA/ATAPI
> +	6831  Storage Adapter ISD-300LP (CY)
> +	7417  Wireless PC Lock/Ultra Mouse
> +	8329  USB To keyboard/Mouse Converter
> +	8613  CY7C68013 EZ-USB FX2 USB 2.0 Development Kit
> +	8614  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
> +	861f  Anysee E30 USB 2.0 DVB-T Receiver
> +	bca1  Barcode Reader
> +	cc04  Centor USB RACIA-ALVAR USB PORT
> +	cc06  Centor-P RACIA-ALVAR USB PORT
> +	d5d5  CY7C63x0x Zoltrix Z-Boxer GamePad
> +	de61  Barcode Reader
> +	de64  Barcode Reader
> +	f000  CY30700 Licorice evaluation board
> +	f111  CY8CKIT-002 PSoC MiniProg3 Rev A Program and debug kit
> +	f115  PSoC FirstTouch Programmer
> +	f139  KitProg
> +	f231  DELLY Changer 4in1 universal IR remote
> +	f232  Mono embedded computer
> +	fd10  Gembird MSIS-PM
> +	fd13  Energenie EG-PMS
> +	fd15  Energenie EG-PMS2
> +04b5  ROHM LSI Systems USA, LLC
> +	3064  Hantek DSO-3064
> +	6022  Hantek DSO-6022BE
> +	602a  Hantek DSO-6022BL
> +04b6  Hint Corp.
> +04b7  Compal Electronics, Inc.
> +04b8  Seiko Epson Corp.
> +	0001  Stylus Color 740 / Photo 750
> +	0002  ISD Smart Cable for Mac
> +	0003  ISD Smart Cable
> +	0004  Printer
> +	0005  Printer
> +	0006  Printer
> +	0007  Printer
> +	0015  Stylus Photo R3000
> +	0080  SC-P400 Series
> +	0101  GT-7000U [Perfection 636]
> +	0102  GT-2200
> +	0103  GT-6600U [Perfection 610]
> +	0104  GT-7600UF [Perfection 1200U/1200U Photo]
> +	0105  Stylus Scan 2000
> +	0106  Stylus Scan 2500
> +	0107  ES-2000 [Expression 1600U]
> +	0108  CC-700
> +	0109  ES-8500 [Expression 1640 XL]
> +	010a  GT-8700/GT-8700F [Perfection 1640SU/1640SU PHOTO]
> +	010b  GT-7700U [Perfection 1240U]
> +	010c  GT-6700U [Perfection 640]
> +	010d  CC-500L
> +	010e  ES-2200 [Perfection 1680]
> +	010f  GT-7200U [Perfection 1250/1250 PHOTO]
> +	0110  GT-8200U/GT-8200UF [Perfection 1650/1650 PHOTO]
> +	0112  GT-9700F [Perfection 2450 PHOTO]
> +	0114  Perfection 660
> +	0116  GT-9400UF [Perfection 3170]
> +	0118  GT-F600 [Perfection 4180]
> +	0119  GT-X750 [Perfection 4490 Photo]
> +	011a  CC-550L [1000 ICS]
> +	011b  GT-9300UF [Perfection 2400 PHOTO]
> +	011c  GT-9800F [Perfection 3200]
> +	011d  GT-7300U [Perfection 1260/1260 PHOTO]
> +	011e  GT-8300UF [Perfection 1660 PHOTO]
> +	011f  GT-8400UF [Perfection 1670/1670 PHOTO]
> +	0120  GT-7400U [Perfection 1270]
> +	0121  GT-F500/GT-F550 [Perfection 2480/2580 PHOTO]
> +	0122  GT-F520/GT-F570 [Perfection 3590 PHOTO]
> +	0126  ES-7000H [GT-15000]
> +	0128  GT-X700 [Perfection 4870]
> +	0129  ES-10000G [Expression 10000XL]
> +	012a  GT-X800 [Perfection 4990 PHOTO]
> +	012b  ES-H300 [GT-2500]
> +	012c  GT-X900 [Perfection V700/V750 Photo]
> +	012d  GT-F650 [GT-S600/Perfection V10/V100]
> +	012e  GT-F670 [Perfection V200 Photo]
> +	012f  GT-F700 [Perfection V350]
> +	0130  GT-X770 [Perfection V500]
> +	0131  GT-F720 [GT-S620/Perfection V30/V300 Photo]
> +	0133  GT-1500 [GT-D1000]
> +	0135  GT-X970
> +	0136  ES-D400 [GT-S80]
> +	0137  ES-D200 [GT-S50]
> +	0138  ES-H7200 [GT-20000]
> +	013a  GT-X820 [Perfection V600 Photo]
> +	0142  GT-F730 [GT-S630/Perfection V33/V330 Photo]
> +	0143  GT-S55
> +	0144  GT-S85
> +	0151  Perfection V800 Photo
> +	0202  Interface Card UB-U05 for Thermal Receipt Printers [M129C/TM-T70/TM-T88IV]
> +	0401  CP 800 Digital Camera
> +	0402  PhotoPC 850z
> +	0403  PhotoPC 3000z
> +	0509  JVC PIX-MC10
> +	0601  Stylus Photo 875DC Card Reader
> +	0602  Stylus Photo 895 Card Reader
> +	0801  CC-600PX [Stylus CX5200/CX5400/CX6600]
> +	0802  CC-570L [Stylus CX3100/CX3200]
> +	0803  Printer (Composite Device)
> +	0804  Storage Device
> +	0805  Stylus CX6300/CX6400
> +	0806  PM-A850 [Stylus Photo RX600/610]
> +	0807  Stylus Photo RX500/510
> +	0808  Stylus CX5200/CX5300/CX5400
> +	0809  Storage Device
> +	080a  F-3200
> +	080c  ME100 [Stylus CX1500]
> +	080d  Stylus CX4500/4600
> +	080e  PX-A550 [CX-3500/3600/3650 MFP]
> +	080f  Stylus Photo RX420/RX425/RX430
> +	0810  PM-A900 [Stylus Photo RX700]
> +	0811  PM-A870 [Stylus Photo RX620/RX630]
> +	0812  MFP Composite Device
> +	0813  Stylus CX6500/6600
> +	0814  PM-A700
> +	0815  LP-A500 [AcuLaser CX1]
> +	0816  Printer (Composite Device)
> +	0817  LP-M5500/LP-M5500F
> +	0818  Stylus CX3700/CX3800/DX3800
> +	0819  PX-A650 [Stylus CX4700/CX4800/DX4800/DX4850]
> +	081a  PM-A750 [Stylus Photo RX520/RX530]
> +	081b  MFP Composite Device
> +	081c  PM-A890 [Stylus Photo RX640/RX650]
> +	081d  PM-A950
> +	081e  MFP Composite Device
> +	081f  Stylus CX7700/7800
> +	0820  Stylus CX4100/CX4200/DX4200
> +	0821  Stylus CX5700F/CX5800F
> +	0822  Storage Device
> +	0823  MFP Composite Device
> +	0824  Storage Device
> +	0825  MFP Composite Device
> +	0826  Storage Device
> +	0827  PM-A820 [Stylus Photo RX560/RX580/RX585/RX590]
> +	0828  PM-A970
> +	0829  PM-T990
> +	082a  PM-A920
> +	082b  Stylus CX5900/CX5000/DX5000/DX5050
> +	082c  Storage Device
> +	082d  Storage Device
> +	082e  PX-A720 [Stylus CX5900/CX6000/DX6000]
> +	082f  PX-A620 [Stylus CX3900/DX4000/DX4050]
> +	0830  ME 200 [Stylus CX2800/CX2900]
> +	0831  Stylus CX6900F/CX7000F/DX7000F
> +	0832  MFP Composite Device
> +	0833  LP-M5600
> +	0834  LP-M6000
> +	0835  AcuLaser CX21
> +	0836  PM-T960
> +	0837  PM-A940 [Stylus Photo RX680/RX685/RX690]
> +	0838  PX-A640 [CX7300/CX7400/DX7400]
> +	0839  PX-A740 [CX8300/CX8400/DX8400]
> +	083a  PX-FA700 [CX9300F/CX9400Fax/DX9400F]
> +	083b  MFP Composite Device
> +	083c  PM-A840S [Stylus Photo RX595/RX610]
> +	083d  MFP Composite Device
> +	083e  MFP Composite Device
> +	083f  Stylus CX4300/CX4400/CX5500/CX5600/DX4400/DX4450
> +	0841  PX-401A [ME 300/Stylus NX100]
> +	0843  LP-M5000
> +	0844  EP-901A/EP-901F [Artisan 800/Stylus Photo PX800FW]
> +	0846  EP-801A [Artisan 700/Stylus Photo PX700W/TX700W]
> +	0847  PX-601F [ME Office 700FW/Stylus Office BX600FW/TX600FW]
> +	0848  ME Office 600F/Stylus Office BX300F/TX300F
> +	0849  Stylus SX205
> +	084a  PX-501A [Stylus NX400]
> +	084d  PX-402A [Stylus SX115/Stylus NX110 Series]
> +	084f  Multifunctional Printer Scanner [ME Office 510 / Epson Stylus SX215]
> +	0850  EP-702A [Stylus Photo PX650/TX650 Series]
> +	0851  Stylus SX410
> +	0852  EP-802A [Artisan 710 Series/Stylus Photo PX710W/TX720W Series]
> +	0853  EP-902A [Artisan 810 Series/Stylus Photo PX810FW Series]
> +	0854  ME OFFICE 650FN Series/Stylus Office BX310FN/TX520FN Series
> +	0855  PX-602F [Stylus Office BX610FW/TX620FW Series]
> +	0856  PX-502A [Stylus SX515W]
> +	085c  ME 320/330 Series [Stylus SX125]
> +	085d  PX-603F [ME OFFICE 960FWD Series/Stylus Office BX625FWD/TX620FWD Series]
> +	085e  PX-503A [ME OFFICE 900WD Series/Stylus Office BX525WD]
> +	085f  Stylus Office BX320FW/TX525FW Series
> +	0860  EP-903A/EP-903F [Artisan 835/Stylus Photo PX820FWD Series]
> +	0861  EP-803A/EP-803AW [Artisan 725/Stylus Photo PX720WD/TX720WD Series]
> +	0862  EP-703A [Stylus Photo PX660 Series]
> +	0863  ME OFFICE 620F Series/Stylus Office BX305F/BX305FW/TX320F
> +	0864  ME OFFICE 560W Series
> +	0865  ME OFFICE 520 Series
> +	0866  AcuLaser MX20DN/MX20DNF/MX21DNF
> +	0869  PX-1600F
> +	086a  PX-673F [Stylus Office BX925FWD]
> +	0870  Stylus Office BX305FW Plus
> +	0871  K200 Series
> +	0872  K300 Series
> +	0873  L200 Series
> +	0878  EP-704A
> +	0879  EP-904A/EP-904F [Artisan 837/Stylus Photo PX830FWD Series]
> +	087b  EP-804A/EP-804AR/EP-804AW [Stylus Photo PX730WD/Artisan 730 Series]
> +	087c  PX-1700F
> +	087d  PX-B750F/WP-4525 Series
> +	087f  PX-403A
> +	0880  PX-434A [Stylus NX330 Series]
> +	0881  PX-404A [ME OFFICE 535]
> +	0883  ME 340 Series/Stylus NX130 Series
> +	0884  Stylus NX430W Series
> +	0885  Stylus NX230/SX235W Series
> +	088f  Stylus Office BX635FWD
> +	0890  ME OFFICE 940FW Series/Stylus Office BX630FW Series
> +	0891  Stylus Office BX535WD
> +	0892  Stylus Office BX935FWD
> +	0893  EP-774A
> +	0e03  Thermal Receipt Printer [TM-T20]
> +	1114  XP-440 [Expression Home Small-in-One Printer]
> +	1129  ET-4750 [WorkForce ET-4750 EcoTank All-in-One]
> +	1168  Workforce WF-7820/7840 Series
> +04b9  Rainbow Technologies, Inc.
> +	0300  SafeNet USB SuperPro/UltraPro
> +	1000  iKey 1000 Token
> +	1001  iKey 1200 Token
> +	1002  iKey Token
> +	1003  iKey Token
> +	1004  iKey Token
> +	1005  iKey Token
> +	1006  iKey Token
> +	1200  iKey 2000 Token
> +	1201  iKey Token
> +	1202  iKey 2032 Token
> +	1203  iKey Token
> +	1204  iKey Token
> +	1205  iKey Token
> +	1206  iKey 4000 Token
> +	1300  iKey 3000 Token
> +	1301  iKey 3000
> +	1302  iKey Token
> +	1303  iKey Token
> +	1304  iKey Token
> +	1305  iKey Token
> +	1306  iKey Token
> +	8000  SafeNet Sentinel Hardware Key
> +04ba  Toucan Systems, Ltd
> +04bb  I-O Data Device, Inc.
> +	0101  USB2-IDE/ATAPI Bridge Adapter
> +	014a  HDCL-UT
> +	0201  USB2-IDE/ATAPI Bridge Adapter
> +	0204  DVD Multi-plus unit iU-CD2
> +	0206  DVD Multi-plus unit DVR-UEH8
> +	0301  Storage Device
> +	0314  USB-SSMRW SD-card
> +	0319  USB2-IDE/ATAPI Bridge Adapter
> +	031a  USB2-IDE/ATAPI Bridge Adapter
> +	031b  USB2-IDE/ATAPI Bridge Adapter
> +	031e  USB-SDRW SD-card
> +	0502  Nogatech Live! (BT)
> +	0528  GV-USB Video Capture
> +	0901  USB ETT
> +	0904  ET/TX Ethernet [pegasus]
> +	0913  ET/TX-S Ethernet [pegasus2]
> +	0919  USB WN-B11
> +	0922  IOData AirPort WN-B11/USBS 802.11b
> +	0930  ETG-US2
> +	0937  WN-WAG/USL Wireless LAN Adapter
> +	0938  WN-G54/USL Wireless LAN Adapter
> +	093b  WN-GDN/USB
> +	093f  WNGDNUS2 802.11n
> +	0944  WHG-AGDN/US Wireless LAN Adapter
> +	0945  WN-GDN/US3 Wireless LAN Adapter
> +	0947  WN-G150U Wireless LAN Adapter
> +	0948  WN-G300U Wireless LAN Adapter
> +	0a03  Serial USB-RSAQ1
> +	0a07  USB2-iCN Adapter
> +	0a08  USB2-iCN Adapter
> +	0c01  FM-10 Pro Disk
> +04bd  Toshiba Electronics Taiwan Corp.
> +04be  Telia Research AB
> +04bf  TDK Corp.
> +	0100  MediaReader CF
> +	0115  USB-PDC Adapter UPA9664
> +	0116  USB-cdmaOne Adapter UCA1464
> +	0117  USB-PHS Adapter UHA6400
> +	0118  USB-PHS Adapter UPA6400
> +	0135  MediaReader Dual
> +	0202  73S1121F Smart Card Reader-
> +	0309  Bluetooth USB dongle
> +	030a  IBM Bluetooth Ultraport Module
> +	030b  Bluetooth Device
> +	030c  Ultraport Bluetooth Device
> +	0310  Integrated Bluetooth
> +	0311  Integrated Bluetooth Device
> +	0317  Bluetooth UltraPort Module from IBM
> +	0318  IBM Integrated Bluetooth
> +	0319  Bluetooth Adapter
> +	0320  Bluetooth Adapter
> +	0321  Bluetooth Device
> +	0a28  INDI AV-IN Device
> +04c1  U.S. Robotics (3Com)
> +	0020  56K Voice Pro
> +	0022  56K Voice Pro
> +	007e  ISDN TA
> +	0082  OfficeConnect Analog Modem
> +	008f  Pro ISDN TA
> +	0097  OfficeConnect Analog
> +	009d  HomeConnect Webcam [vicam]
> +	00a9  ISDN Pro TA-U
> +	00b9  HomeConnect IDSL Modem
> +	3021  56k Voice FaxModem Pro
> +04c2  Methode Electronics Far East PTE, Ltd
> +04c3  Maxi Switch, Inc.
> +	1102  Mouse
> +	2102  Mouse
> +04c4  Lockheed Martin Energy Research
> +04c5  Fujitsu, Ltd
> +	1029  fi-4010c Scanner
> +	1033  fi-4110CU
> +	1041  fi-4120c Scanner
> +	1042  fi-4220c Scanner
> +	105b  AH-F401U Air H device
> +	1084  PalmSecure Sensor V2
> +	1096  fi-5110EOX
> +	1097  fi-5110C
> +	10ae  fi-4120C2
> +	10af  fi-4220C2
> +	10c7  fi-60f scanner
> +	10e0  fi-5120c Scanner
> +	10e1  fi-5220C
> +	10e7  fi-5900C
> +	10fe  S500
> +	1104  KD02906 Line Thermal Printer
> +	114f  fi-6130
> +	1150  fi-6230
> +	11f3  fi-6130Z
> +	125a  PalmSecure Sensor Device - MP
> +	132e  fi-7160
> +	159f  ScanSnap iX1500
> +	200f  Sigma DP2 (Mass Storage)
> +	2010  Sigma DP2 (PictBridge)
> +	201d  SATA 3.0 6Gbit/s Adaptor [GROOVY]
> +04c6  Toshiba America Electronic Components
> +04c7  Micro Macro Technologies
> +04c8  Konica Corp.
> +	0720  Digital Color Camera
> +	0721  e-miniD Camera
> +	0722  e-mini
> +	0723  KD-200Z Camera
> +	0726  KD-310Z Camera
> +	0728  Revio C2 Mass Storage Device
> +	0729  Revio C2 Digital Camera
> +	072c  Revio KD20M
> +	072d  Revio KD410Z
> +04ca  Lite-On Technology Corp.
> +	0020  USB Keyboard
> +	004b  Keyboard
> +	004f  SK-9020 keyboard
> +	008a  Acer Wired Mouse Model SM-9023
> +	1766  HID Monitor Controls
> +	2004  Bluetooth 4.0 [Broadcom BCM20702A0]
> +	2006  Broadcom BCM43142A0 Bluetooth Device
> +	2007  Broadcom BCM43142A0 Bluetooth Device
> +	3005  Atheros Bluetooth
> +	300b  Atheros AR3012 Bluetooth
> +	300d  Atheros AR3012 Bluetooth
> +	300f  Atheros AR3012 Bluetooth
> +	3014  Qualcomm Atheros Bluetooth
> +	3015  Qualcomm Atheros QCA9377 Bluetooth
> +	7022  HP HD Webcam
> +	7025  HP HD Webcam
> +	7046  TOSHIBA Web Camera - HD
> +	7054  HP HD Webcam
> +	9304  Hub
> +	f01c  TT1280DA DVB-T TV Tuner
> +04cb  Fuji Photo Film Co., Ltd
> +	0100  FinePix 30i/40i/50i, A101/201, 1300/2200, 1400/2400/2600/2800/4500/4700/4800/4900/6800/6900 Zoom
> +	0103  FinePix NX-500/NX-700 printer
> +	0104  FinePix A101, 2600/2800/4800/6800 Zoom (PC CAM)
> +	0108  FinePix F601 Zoom (DSC)
> +	0109  FinePix F601 Zoom (PC CAM)
> +	010a  FinePix S602 (Pro) Zoom (DSC)
> +	010b  FinePix S602 (Pro) Zoom (PC CAM)
> +	010d  FinePix S2 pro
> +	010e  FinePix F402 Zoom (DSC)
> +	010f  FinePix F402 Zoom (PC CAM)
> +	0110  FinePix M603 Zoom (DSC)
> +	0111  FinePix M603 Zoom (PC CAM)
> +	0112  FinePix A202, A200 Zoom (DSC)
> +	0113  FinePix A202, A200 Zoom (PC CAM)
> +	0114  FinePix F401 Zoom (DSC)
> +	0115  FinePix F401 Zoom (PC CAM)
> +	0116  FinePix A203 Zoom (DSC)
> +	0117  FinePix A203 Zoom (PC CAM)
> +	0118  FinePix A303 Zoom (DSC)
> +	0119  FinePix A303 Zoom (PC CAM)
> +	011a  FinePix S304/3800 Zoom (DSC)
> +	011b  FinePix S304/3800 Zoom (PC CAM)
> +	011c  FinePix A204/2650 Zoom (DSC)
> +	011d  FinePix A204/2650 Zoom (PC CAM)
> +	0120  FinePix F700 Zoom (DSC)
> +	0121  FinePix F700 Zoom (PC CAM)
> +	0122  FinePix F410 Zoom (DSC)
> +	0123  FinePix F410 Zoom (PC CAM)
> +	0124  FinePix A310 Zoom (DSC)
> +	0125  FinePix A310 Zoom (PC CAM)
> +	0126  FinePix A210 Zoom (DSC)
> +	0127  FinePix A210 Zoom (PC CAM)
> +	0128  FinePix A205(S) Zoom (DSC)
> +	0129  FinePix A205(S) Zoom (PC CAM)
> +	012a  FinePix F610 Zoom (DSC)
> +	012b  FinePix Digital Camera 030513
> +	012c  FinePix S7000 Zoom (DSC)
> +	012d  FinePix S7000 Zoom (PC CAM)
> +	012f  FinePix Digital Camera 030731
> +	0130  FinePix S5000 Zoom (DSC)
> +	0131  FinePix S5000 Zoom (PC CAM)
> +	013b  FinePix Digital Camera 030722
> +	013c  FinePix S3000 Zoom (DSC)
> +	013d  FinePix S3000 Zoom (PC CAM)
> +	013e  FinePix F420 Zoom (DSC)
> +	013f  FinePix F420 Zoom (PC CAM)
> +	0142  FinePix S7000 Zoom (PTP)
> +	0148  FinePix A330 Zoom (DSC)
> +	0149  FinePix A330 Zoom (UVC)
> +	014a  FinePix A330 Zoom (PTP)
> +	014b  FinePix A340 Zoom (DSC)
> +	014c  FinePix A340 Zoom (UVC)
> +	0159  FinePix F710 Zoom (DSC)
> +	0165  FinePix S3500 Zoom (DSC)
> +	0168  FinePix E500 Zoom (DSC)
> +	0169  FinePix E500 Zoom (UVC)
> +	016b  FinePix E510 Zoom (DSC)
> +	016c  FinePix E510 Zoom (PC CAM)
> +	016e  FinePix S5500 Zoom (DSC)
> +	016f  FinePix S5500 Zoom (UVC)
> +	0171  FinePix E550 Zoom (DSC)
> +	0172  FinePix E550 Zoom (UVC)
> +	0177  FinePix F10 (DSC)
> +	0179  Finepix F10 (PTP)
> +	0186  FinePix S5200/S5600 Zoom (DSC)
> +	0188  FinePix S5200/S5600 Zoom (PTP)
> +	018e  FinePix S9500 Zoom (DSC)
> +	018f  FinePix S9500 Zoom (PTP)
> +	0192  FinePix E900 Zoom (DSC)
> +	0193  FinePix E900 Zoom (PTP)
> +	019b  FinePix F30 (PTP)
> +	01af  FinePix A700 (PTP)
> +	01bf  FinePix F6000fd/S6500fd Zoom (PTP)
> +	01c0  FinePix F20 (PTP)
> +	01c1  FinePix F31fd (PTP)
> +	01c3  FinePix S5 Pro
> +	01c4  FinePix S5700 Zoom (PTP)
> +	01c5  FinePix F40fd (PTP)
> +	01c6  FinePix A820 Zoom (PTP)
> +	01d2  FinePix A800 Zoom (PTP)
> +	01d3  FinePix A920 (PTP)
> +	01d4  FinePix F50fd (PTP)
> +	01d5  FinePix F47 (PTP)
> +	01e7  Fujifilm A850 Digital Camera
> +	01f7  FinePix J250 (PTP)
> +	01fd  A160
> +	023e  FinePix AX300
> +	0240  FinePix S2950 Digital Camera
> +	0241  FinePix S3200 Digital Camera
> +	0278  FinePix JV300
> +	02c5  FinePix S9900W Digital Camera (PTP)
> +	02e0  X-T200 Digital Camera
> +	5006  ASK-300
> +	5007  DX100
> +04cc  ST-Ericsson
> +	1122  Hub
> +	1520  USB 2.0 Hub (Avocent KVM)
> +	1521  USB 2.0 Hub
> +	1a62  GW Instek GSP-830 Spectrum Analyzer (HID)
> +	2323  Ux500 serial debug port
> +	2533  NFC device (PN533)
> +	8116  Camera
> +04cd  Tatung Co. Of America
> +04ce  ScanLogic Corp.
> +	0002  SL11R-IDE IDE Bridge
> +	0100  USB2PRN Printer Class
> +	0300  Phantom 336CX - C3 scanner
> +	04ce  SL11DEMO, VID: 0x4ce, PID: 0x4ce
> +	07d1  SL11R, VID: 0x4ce, PID: 0x07D1
> +04cf  Myson Century, Inc.
> +	0022  OCZ Alchemy Series Elixir II Keyboard
> +	0800  MTP800 Mass Storage Device
> +	8810  CS8810 Mass Storage Device
> +	8811  CS8811 Mass Storage Device
> +	8813  CS8813 Mass Storage Device
> +	8818  USB2.0 to ATAPI Bridge Controller
> +	8819  USB 2.0 SD/MMC Reader
> +	9920  CS8819A2-114 Mass Storage Device
> +04d0  Digi International
> +04d1  ITT Canon
> +04d2  Altec Lansing Technologies
> +	0070  ADA70 Speakers
> +	0305  Non-Compliant Audio Device
> +	0311  ADA-310 Speakers
> +	2060  Claritel-i750 - vp
> +	ff05  ADA-305 Speakers
> +	ff47  Lansing HID Audio Controls
> +	ff49  Lansing HID Audio Controls
> +04d3  VidUS, Inc.
> +04d4  LSI Logic, Inc.
> +04d5  Forte Technologies, Inc.
> +04d6  Mentor Graphics
> +04d7  Oki Semiconductor
> +	1be4  Bluetooth Device
> +04d8  Microchip Technology, Inc.
> +	0002  PicoLCD 20x2
> +	0003  PICkit 2 Microcontroller Programmer
> +	000a  CDC RS-232 Emulation Demo
> +	000b  PIC18F2550 (32K Flashable 10 Channel, 10 Bit A/D USB Microcontroller)
> +	0032  PICkit1
> +	0033  PICkit2
> +	0036  PICkit Serial Analyzer
> +	00e0  PIC32 Starter Board
> +	04cd  28Cxxx EEPROM Programmer
> +	0a04  AGP LIN Serial Analyzer
> +	8000  In-Circuit Debugger
> +	8001  ICD2 in-circuit debugger
> +	8101  PIC24F Starter Kit
> +	8107  Microstick II
> +	8108  ChipKit Pro MX7 (PIC32MX)
> +	9004  Microchip REAL ICE
> +	9009  ICD3
> +	900a  PICkit3
> +	9012  PICkit4
> +	9015  ICD 4 In-Circuit Debugger
> +	c001  PicoLCD 20x4
> +	e11c  TL866CS EEPROM Programmer [MiniPRO]
> +	ed16  BeamiRC 2.0 CNC remote controller analoge
> +	edb4  micro PLC (ATSAMD51G19A) [Black Brix ECU II]
> +	edb5  ATMEGA32U4 [Black Brix ECU]
> +	f2c4  Macareux-labs Hygrometry Temperature Sensor
> +	f2f7  Yepkit YKUSH
> +	f3aa  Macareux-labs Usbce Bootloader mode
> +	f437  SBE Tech Ultrasonic Anemometer
> +	f4b5  SmartScope
> +	f5fe  TrueRNG
> +	f8da  Hughski Ltd. ColorHug
> +	f8e8  Harmony 300/350 Remote
> +	f91c  SPROG IIv3
> +	faff  Dangerous Prototypes BusPirate v4 Bootloader mode
> +	fb00  Dangerous Prototypes BusPirate v4
> +	fbb2  GCUSB-nStep stepper motor controller
> +	fbba  DiscFerret Magnetic Disc Analyser (bootloader mode)
> +	fbbb  DiscFerret Magnetic Disc Analyser (active mode)
> +	fc1e  Bachrus Speedometer Interface
> +	fc92  Open Bench Logic Sniffer
> +	ffee  Devantech USB-ISS
> +	ffef  PICoPLC [APStech]
> +04d9  Holtek Semiconductor, Inc.
> +	0006  Wired Keyboard (78/79 key) [RPI Wired Keyboard 5]
> +	0022  Portable Keyboard
> +	0129  Keyboard [KBPV8000]
> +	0348  Keyboard
> +	0407  Keyboard [TEX Shinobi]
> +	048e  Optical Mouse
> +	0499  Optical Mouse
> +	1135  Mouse [MGK-15BU/MLK-15BU]
> +	1203  Keyboard
> +	1400  PS/2 keyboard + mouse controller
> +	1503  Keyboard
> +	1603  Keyboard
> +	1702  Keyboard LKS02
> +	1818  Keyboard [Diatec Filco Majestouch 2]
> +	2011  Keyboard [Diatec Filco Majestouch 1]
> +	2013  Keyboard [Das Keyboard]
> +	2206  Fujitsu Siemens Mouse Esprimo Q
> +	2221  Keyboard
> +	2323  Keyboard
> +	2519  Shenzhen LogoTech 2.4GHz receiver
> +	2832  HT82A832R Audio MCU
> +	2834  HT82A834R Audio MCU
> +	4545  Keyboard [Diatec Majestouch 2 Tenkeyless]
> +	a01c  wireless multimedia keyboard with trackball [Trust ADURA 17911]
> +	a050  Chatman V1
> +	a052  USB-zyTemp
> +	a055  Keyboard
> +	a075  Optical Gaming Mouse
> +	a096  Keyboard
> +	a09f  E-Signal LUOM G10 Mechanical Gaming Mouse
> +	a100  Mouse [HV-MS735]
> +	a11b  Mouse [MX-3200]
> +	a153  Optical Gaming Mouse
> +	a29f  Microarray fingerprint reader
> +	b534  LGT8F328P Microprocessor
> +	e002  MCU
> +	fc2a  Gaming Mouse [Redragon M709]
> +	fc30  Gaming Mouse [Redragon M711]
> +	fc38  Gaming Mouse [Redragon M602-RGB]
> +	fc4d  Gaming Mouse [Redragon M908]
> +	fc55  Venus MMO Gaming Mouse
> +04da  Panasonic (Matsushita)
> +	0901  LS-120 Camera
> +	0912  SDR-S10
> +	0b01  CD-R/RW Drive
> +	0b03  SuperDisk 240MB
> +	0d01  CD-R Drive KXL-840AN
> +	0d09  CD-R Drive KXL-RW32AN
> +	0d0a  CD-R Drive KXL-CB20AN
> +	0d0d  CDRCB03
> +	0d0e  DVD-ROM & CD-R/RW
> +	0d14  DVD-RAM MLT08
> +	0f07  KX-MB2030 Multifunction Laser Printer
> +	0f40  Printer
> +	104d  Elite Panaboard UB-T880 (HID)
> +	104e  Elite Panaboard Pen Adaptor (HID)
> +	1500  MFSUSB Driver
> +	1800  DY-WL10 802.11abgn Adapter [Broadcom BCM4323]
> +	1b00  MultiMediaCard
> +	2121  EB-VS6
> +	2316  DVC Mass Storage Device
> +	2317  DVC USB-SERIAL Driver for WinXP
> +	2318  NV-GS11/230/250 (webcam mode)
> +	2319  NV-GS15 (webcam mode)
> +	231a  NV-GS11/230/250 (DV mode)
> +	231d  DVC Web Camera Device
> +	231e  DVC DV Stream Device
> +	2372  Lumix Camera (Storage mode)
> +	2374  Lumix Camera (PTP mode)
> +	2451  HDC-SD9
> +	245b  HC-X920K (3MOS Full HD video camcorder)
> +	2477  SDR-H85 Camcorder (PC mode)
> +	2478  SDR-H85 Camcorder (recorder mode - SD card)
> +	2479  SDR-H85 Camcorder (recorder mode - HDD)
> +	2497  HDC-TM700
> +	250c  Gobi Wireless Modem (QDL mode)
> +	250d  Gobi Wireless Modem
> +	3904  N5HBZ0000055 802.11abgn Wireless Adapter [Atheros AR7010+AR9280]
> +	3908  N5HBZ0000062 802.11abgn Wireless Adapter [Atheros AR9374v1.1]
> +	3c04  JT-P100MR-20 [ePassport Reader]
> +04db  Hypertec Pty, Ltd
> +04dc  Huan Hsin Holdings, Ltd
> +04dd  Sharp Corp.
> +	13a6  MFC2000
> +	6006  AL-1216
> +	6007  AL-1045
> +	6008  AL-1255
> +	6009  AL-1530CS
> +	600a  AL-1540CS
> +	600b  AL-1456
> +	600c  AL-1555
> +	600d  AL-1225
> +	600e  AL-1551CS
> +	600f  AR-122E
> +	6010  AR-152E
> +	6011  AR-157E
> +	6012  SN-1045
> +	6013  SN-1255
> +	6014  SN-1456
> +	6015  SN-1555
> +	6016  AR-153E
> +	6017  AR-122E N
> +	6018  AR-153E N
> +	6019  AR-152E N
> +	601a  AR-157E N
> +	601b  AL-1217
> +	601c  AL-1226
> +	601d  AR-123E
> +	6021  IS01
> +	7002  DVC Ver.1.0
> +	7004  VE-CG40U Digital Still Camera
> +	7005  VE-CG30 Digital Still Camera
> +	7007  VL-Z7S Digital Camcorder
> +	8004  Zaurus SL-5000D/SL-5500 PDA
> +	8005  Zaurus A-300
> +	8006  Zaurus SL-B500/SL-5600 PDA
> +	8007  Zaurus C-700 PDA
> +	9009  AR-M160
> +	9014  IM-DR80 Portable NetMD Player
> +	9031  Zaurus C-750/C-760/C-860/SL-C3000 PDA
> +	9032  Zaurus SL-6000
> +	903a  GSM GPRS
> +	9050  Zaurus C-860 PDA
> +	9056  Viewcam Z
> +	9073  AM-900
> +	9074  GSM GPRS
> +	90a9  Sharp Composite
> +	90d0  USB-to-Serial Comm. Port
> +	90f2  Sharp 3G GSM USB Control
> +	9120  WS004SH
> +	9122  WS007SH
> +	9123  W-ZERO3 ES Smartphone
> +	91a3  922SH Internet Machine
> +	939a  IS03
> +04de  MindShare, Inc.
> +04df  Interlink Electronics
> +04e1  Iiyama North America, Inc.
> +	0201  Monitor Hub
> +04e2  Exar Corp.
> +	1410  XR21V1410 USB-UART IC
> +04e3  Zilog, Inc.
> +04e4  ACC Microelectronics
> +04e5  Promise Technology
> +04e6  SCM Microsystems, Inc.
> +	0001  E-USB ATA Bridge
> +	0002  eUSCSI SCSI Bridge
> +	0003  eUSB SmartMedia Card Reader
> +	0005  eUSB SmartMedia/CompactFlash Card Reader
> +	0006  eUSB SmartMedia Card Reader
> +	0007  Hifd
> +	0009  eUSB ATA/ATAPI Adapter
> +	000a  eUSB CompactFlash Adapter
> +	000b  eUSCSI Bridge
> +	000c  eUSCSI Bridge
> +	000d  Dazzle MS
> +	0012  Dazzle SD/MMC
> +	0101  eUSB ATA Bridge (Sony Spressa USB CDRW)
> +	0311  Dazzle DM-CF
> +	0312  Dazzle DM-SD/MMC
> +	0313  Dazzle SM
> +	0314  Dazzle MS
> +	0322  e-Film Reader-5
> +	0325  eUSB ORCA Quad Reader
> +	0327  Digital Media Reader
> +	03fe  DMHS2 DFU Adapter
> +	0406  eUSB SmartDM Reader
> +	04e6  eUSB DFU Adapter
> +	04e7  STCII DFU Adapter
> +	04e8  eUSBDM DFU Adapter
> +	04e9  DM-E DFU Adapter
> +	0500  Veridicom 5thSense Fingerprint Sensor and eUSB SmartCard
> +	0701  DCS200 Loader Device
> +	0702  DVD Creation Station 200
> +	0703  DVC100 Loader Device
> +	0704  Digital Video Creator 100
> +	1001  SCR300 Smart Card Reader
> +	1010  USBAT-2 CompactFlash Card Reader
> +	1014  e-Film Reader-3
> +	1020  USBAT ATA/ATAPI Adapter
> +	2007  RSA SecurID ComboReader
> +	2009  Citibank Smart Card Reader
> +	200a  Reflex v.2 Smart Card Reader
> +	200d  STR391 Reader
> +	5111  SCR331-DI SmartCard Reader
> +	5113  SCR333 SmartCard Reader
> +	5114  SCR331-DI SmartCard Reader
> +	5115  SCR335 SmartCard Reader
> +	5116  SCR331-LC1 / SCR3310 SmartCard Reader
> +	5117  SCR3320 - Smart Card Reader
> +	5118  Expresscard SIM Card Reader
> +	5119  SCR3340 - ExpressCard54 Smart Card Reader
> +	511b  SmartCard Reader
> +	511d  SCR3311 Smart Card Reader
> +	5120  SCR331-DI SmartCard Reader
> +	5121  SDI010 Smart Card Reader
> +	5151  SCR338 Keyboard Smart Card Reader
> +	5292  SCL011 RFID reader
> +	5410  SCR35xx Smart Card Reader
> +	5591  SCL3711-NFC&RW
> +	5810  uTrust 2700 R Smart Card Reader
> +	e000  SCRx31 Reader
> +	e001  SCR331 SmartCard Reader
> +	e003  SPR532 PinPad SmartCard Reader
> +04e7  Elo TouchSystems
> +	0001  TouchScreen
> +	0002  Touchmonitor Interface 2600 Rev 2
> +	0004  4000U CarrollTouch® Touchmonitor Interface
> +	0007  2500U IntelliTouch® Touchmonitor Interface
> +	0008  3000U AccuTouch® Touchmonitor Interface
> +	0009  4000U CarrollTouch® Touchmonitor Interface
> +	0020  Touchscreen Interface (2700)
> +	0021  Touchmonitor Interface
> +	0030  4500U CarrollTouch® Touchmonitor Interface
> +	0032  Touchmonitor Interface
> +	0033  Touchmonitor Interface
> +	0041  5010 Surface Capacitive Touchmonitor Interface
> +	0042  Touchmonitor Interface
> +	0050  2216 AccuTouch® Touchmonitor Interface
> +	0071  Touchmonitor Interface
> +	0072  Touchmonitor Interface
> +	0081  Touchmonitor Interface
> +	0082  Touchmonitor Interface
> +	00ff  Touchmonitor Interface
> +04e8  Samsung Electronics Co., Ltd
> +	0001  Printer Bootloader
> +	0100  Kingston Flash Drive (128MB)
> +	0110  Connect3D Flash Drive
> +	0111  Connect3D Flash Drive
> +	0300  E2530 / GT-C3350 Phones (Mass storage mode)
> +	04e8  Galaxy (MIDI mode)
> +	1003  MP3 Player and Recorder
> +	1006  SDC-200Z
> +	130c  NX100
> +	1323  WB700 Camera
> +	1f05  S2 Portable [JMicron] (500GB)
> +	1f06  HX-MU064DA portable harddisk
> +	2018  WIS09ABGN LinkStick Wireless LAN Adapter
> +	2035  Digital Photo Frame Mass Storage
> +	2036  Digital Photo Frame Mini Monitor
> +	3004  ML-4600
> +	3005  Docuprint P1210
> +	3008  ML-6060 laser printer
> +	300c  ML-1210 Printer
> +	300e  Laser Printer
> +	3104  ML-3550N
> +	3210  ML-5200A Laser Printer
> +	3226  Laser Printer
> +	3228  Laser Printer
> +	322a  Laser Printer
> +	322c  Laser Printer
> +	3230  ML-1440
> +	3232  Laser Printer
> +	3236  ML-1450
> +	3238  ML-1430
> +	323a  ML-1710 Printer
> +	323b  Phaser 3130
> +	323c  Laser Printer
> +	323d  Phaser 3120
> +	323e  Laser Printer
> +	3240  Laser Printer
> +	3242  ML-1510 Laser Printer
> +	3248  Color Laser Printer
> +	324a  Laser Printer
> +	324c  ML-1740 Printer
> +	324d  Phaser 3121
> +	3256  ML-1520 Laser Printer
> +	325b  Xerox Phaser 3117 Laser Printer
> +	325f  Phaser 3425 Laser Printer
> +	3260  CLP-510 Color Laser Printer
> +	3268  ML-1610 Mono Laser Printer
> +	326c  ML-2010P Mono Laser Printer
> +	3276  ML-3050/ML-3051 Laser Printer
> +	327e  ML-2510 Series
> +	328e  CLP-310 Color Laser Printer
> +	3292  ML-1640 Series Laser Printer
> +	3296  ML-2580N Mono Laser Printer
> +	3297  ML-191x/ML-252x Laser Printer
> +	329f  CLP-325 Color Laser Printer
> +	3301  ML-1660 Series
> +	330c  ML-1865
> +	330f  ML-216x Series Laser Printer
> +	3310  ML-331x Series Laser Printer
> +	3315  ML-2540 Series Laser Printer
> +	331e  M262x/M282x Xpress Series Laser Printer
> +	3409  SCX-4216F Scanner
> +	340c  SCX-5x15 series
> +	340d  SCX-6x20 series
> +	340e  MFP 560 series
> +	340f  Printing Support
> +	3412  SCX-4x20 series
> +	3413  SCX-4100 Scanner
> +	3415  Composite Device
> +	3419  Composite Device
> +	341a  Printing Support
> +	341b  SCX-4200 series
> +	341c  Composite Device
> +	341d  Composite Device
> +	341f  Composite Device
> +	3420  Composite Device
> +	3426  SCX-4500 Laser Printer
> +	342d  SCX-4x28 Series
> +	344f  SCX-3400 Series
> +	347e  C48x Series Color Laser Multifunction Printer
> +	3605  InkJet Color Printer
> +	3606  InkJet Color Printer
> +	3609  InkJet Color Printer
> +	3902  InkJet Color Printer
> +	3903  Xerox WorkCentre XK50cx
> +	390f  InkJet Color Printer
> +	3911  SCX-1020 series
> +	4001  PSSD T7
> +	4005  GT-S8000 Jet (msc)
> +	4f1f  GT-S8000 Jet (mtp)
> +	5000  YP-MF series
> +	5001  YP-100
> +	5002  YP-30
> +	5003  YP-700
> +	5004  YP-30
> +	5005  YP-300
> +	5006  YP-750
> +	500d  MP3 Player
> +	5010  Yepp YP-35
> +	5011  YP-780
> +	5013  YP-60
> +	5015  yepp upgrade
> +	501b  MP3 Player
> +	5021  Yepp YP-ST5
> +	5026  YP-MT6V
> +	5027  YP-T7
> +	502b  YP-F1
> +	5032  YP-J70
> +	503b  YP-U1 MP3 Player
> +	503d  YP-T7F
> +	5041  YP-Z5
> +	5050  YP-U2 MP3 Player
> +	5051  YP-F2R
> +	5055  YP-T9
> +	507d  YP-U3 (mtp)
> +	507f  YP-T9J
> +	5080  Yepp YP-K3 (msc)
> +	5081  Yepp YP-K3 (mtp)
> +	5082  YP-P2 (msc)
> +	5083  YP-P2 (mtp)
> +	508a  YP-T10
> +	508b  YP-S5 MP3 Player
> +	508c  YP-S5
> +	5090  YP-S3 (msc)
> +	5091  YP-S3 (mtp)
> +	5092  YP-U4 (msc)
> +	5093  YP-U4 (mtp)
> +	5095  YP-S2
> +	510f  YP-R1
> +	5119  Yepp YP-P3
> +	511c  YP-Q2
> +	5121  YP-U5
> +	5123  Yepp YP-M1
> +	5a00  YP-NEU
> +	5a01  YP-NDU
> +	5a03  Yepp MP3 Player
> +	5a04  YP-800
> +	5a08  YP-90
> +	5a0f  Meizu M6 MiniPlayer
> +	5b01  Memory Stick Reader/Writer
> +	5b02  Memory Stick Reader/Writer
> +	5b03  Memory Stick Reader/Writer
> +	5b04  Memory Stick Reader/Writer
> +	5b05  Memory Stick Reader/Writer
> +	5b11  SEW-2001u Card
> +	5f00  NEXiO Sync
> +	5f01  NEXiO Sync
> +	5f02  NEXiO Sync
> +	5f03  NEXiO Sync
> +	5f04  NEXiO Sync
> +	5f05  STORY Station 1TB
> +	6032  G2 Portable hard drive
> +	6033  G2 Portable device
> +	6034  G2 Portable hard drive
> +	60b3  M2 Portable Hard Drive
> +	60c4  M2 Portable Hard Drive USB 3.0
> +	6124  D3 Station External Hard Drive
> +	6125  D3 Station External Hard Drive
> +	61b5  M3 Portable Hard Drive 2TB
> +	61b6  M3 Portable Hard Drive 1TB
> +	61b7  M3 Portable Hard Drive 4TB
> +	61f3  Portable SSD T3 (MU-PT250B, MU-PT500B)
> +	61f5  Portable SSD T5
> +	6601  Mobile Phone
> +	6602  Galaxy
> +	6603  Galaxy
> +	6611  MITs Sync
> +	6613  MITs Sync
> +	6615  MITs Sync
> +	6617  MITs Sync
> +	6619  MITs Sync
> +	661b  MITs Sync
> +	661e  Handheld
> +	6620  Handheld
> +	6622  Handheld
> +	6624  Handheld
> +	662e  MITs Sync
> +	6630  MITs Sync
> +	6632  MITs Sync
> +	663e  D900e/B2100 Phone
> +	663f  SGH-E720/SGH-E840
> +	6640  Usb Modem Enumerator
> +	6651  i8510 Innov8
> +	6702  X830
> +	6708  U600 Phone
> +	6709  U600
> +	6734  Juke
> +	6759  D900e/B2100 Media Player
> +	675a  D900e/B2100 Mass Storage
> +	675b  D900e Camera
> +	6772  Standalone LTE device (Trial)
> +	6795  S5230
> +	6802  Standalone HSPA device
> +	6806  Composite LTE device (Trial)
> +	6807  Composite HSPA device
> +	681c  Galaxy Portal/Spica/S
> +	681d  Galaxy Portal/Spica Android Phone
> +	6843  E2530 Phone (Samsung Kies mode)
> +	684e  Wave (GT-S8500)
> +	685b  GT-I9100 Phone [Galaxy S II] (mass storage mode)
> +	685c  GT-I9250 Phone [Galaxy Nexus] (Mass storage mode)
> +	685d  GT-I9100 Phone [Galaxy S II] (Download mode)
> +	685e  GT-I9100 / GT-C3350 Phones (USB Debugging mode)
> +	6860  Galaxy A5 (MTP)
> +	6863  Galaxy series, misc. (tethering mode)
> +	6864  GT-I9070 (network tethering, USB debugging enabled)
> +	6865  Galaxy (PTP mode)
> +	6866  Galaxy (debugging mode)
> +	6868  Escape Composite driver for Android Phones: Modem+Diagnostic+ADB
> +	6875  GT-B3710 Standalone LTE device (Commercial)
> +	6876  GT-B3710 LTE Modem
> +	6877  Galaxy S
> +	687a  GT-E2370 mobile phone
> +	6888  GT-B3730 Composite LTE device (Commercial)
> +	6889  GT-B3730 Composite LTE device (Commercial)
> +	689a  LTE Storage Driver [CMC2xx]
> +	689e  GT-S5670 [Galaxy Fit]
> +	68aa  Reality
> +	7011  SEW-2003U Card
> +	7021  Bluetooth Device
> +	7061  eHome Infrared Receiver
> +	7080  Anycall SCH-W580
> +	7081  Human Interface Device
> +	7301  Fingerprint Device
> +	8001  Handheld
> +	8002  Portable SSD 500GB Model Number: MU - P8500B
> +	8003  Portable SSD T1
> +	d003  GT-I9003
> +	e020  SERI E02 SCOM 6200 UMTS Phone
> +	e021  SERI E02 SCOM 6200 Virtual UARTs
> +	e022  SERI E02 SCOM 6200 Flash Load Disk
> +	f000  Intensity 3 (Mass Storage Mode)
> +	ff30  SG_iMON
> +04e9  PC-Tel, Inc.
> +04ea  Brooktree Corp.
> +04eb  Northstar Systems, Inc.
> +	e004  eHome Infrared Transceiver
> +04ec  Tokyo Electron Device, Ltd
> +04ed  Annabooks
> +04ef  Pacific Electronic International, Inc.
> +04f0  Daewoo Electronics Co., Ltd
> +04f1  Victor Company of Japan, Ltd
> +	0001  GC-QX3 Digital Still Camera
> +	0004  GR-DVL815U Digital Video Camera
> +	0006  DV Camera Storage
> +	0008  GZ-MG30AA/MC500E Digital Video Camera
> +	0009  GR-DX25EK Digital Video Camera
> +	000a  GR-D72 Digital Video Camera
> +	1001  GC-A50 Camera Device
> +	3008  MP-PRX1 Ethernet
> +	3009  MP-XP7250 WLAN Adapter
> +04f2  Chicony Electronics Co., Ltd
> +	0001  KU-8933 Keyboard
> +	0002  NT68P81 Keyboard
> +	0110  KU-2971 Keyboard
> +	0111  KU-9908 Keyboard
> +	0112  KU-8933 Keyboard with PS/2 Mouse port
> +	0116  KU-2971/KU-0325 Keyboard
> +	0200  KBR-0108
> +	0201  Gaming Keyboard KPD0250
> +	0220  Wireless HID Receiver
> +	0402  Genius LuxeMate i200 Keyboard
> +	0403  KU-0420 keyboard
> +	0418  KU-0418 Tactical Pad
> +	0618  RG-0618U Wireless HID Receiver & KG-0609 Wireless Keyboard with Touchpad
> +	0718  wired mouse
> +	0760  Acer KU-0760 Keyboard
> +	0833  KU-0833 Keyboard
> +	0841  HP Multimedia Keyboard
> +	0860  2.4G Multimedia Wireless Kit
> +	0939  Amazon Basics mouse
> +	1061  HP KG-1061 Wireless Keyboard+Mouse
> +	1121  Periboard 717 Mini Wireless Keyboard
> +	a001  E-Video DC-100 Camera
> +	a120  ORITE CCD Webcam(PC370R)
> +	a121  ORITE CCD Webcam(PC370R)
> +	a122  ORITE CCD Webcam(PC370R)
> +	a123  ORITE CCD Webcam(PC370R)
> +	a124  ORITE CCD Webcam(PC370R)
> +	a128  PC Camera (SN9C202 + OV7663 + EEPROM)
> +	a133  Gateway Webcam
> +	a136  LabTec Webcam 5500
> +	a147  Medion Webcam
> +	a204  DSC WIA Device (1300)
> +	a208  DSC WIA Device (2320)
> +	a209  Labtec DC-2320
> +	a20a  DSC WIA Device (3310)
> +	a20c  DSC WIA Device (3320)
> +	a210  Audio Device
> +	b008  USB 2.0 Camera
> +	b009  Integrated Camera
> +	b010  Integrated Camera
> +	b012  1.3 MPixel UVC Webcam
> +	b013  USB 2.0 Camera
> +	b015  VGA 24fps UVC Webcam
> +	b016  VGA 30fps UVC Webcam
> +	b018  2M UVC Webcam
> +	b021  ViewSonic 1.3M, USB2.0 Webcam
> +	b022  Gateway USB 2.0 Webcam
> +	b023  Gateway USB 2.0 Webcam
> +	b024  USB 2.0 Webcam
> +	b025  Camera
> +	b027  Gateway USB 2.0 Webcam
> +	b028  VGA UVC Webcam
> +	b029  1.3M UVC Webcam
> +	b036  Asus Integrated 0.3M UVC Webcam
> +	b044  Acer CrystalEye Webcam
> +	b057  integrated USB webcam
> +	b059  CKF7037 HP webcam
> +	b064  CNA7137 Integrated Webcam
> +	b070  Camera
> +	b071  2.0M UVC Webcam / CNF7129
> +	b083  CKF7063 Webcam (HP)
> +	b091  Webcam
> +	b104  CNF7069 Webcam
> +	b107  CNF7070 Webcam
> +	b14c  CNF8050 Webcam
> +	b159  CNF8243 Webcam
> +	b15c  Sony Vaio Integrated Camera
> +	b175  4-Port Hub
> +	b1aa  Webcam-101
> +	b1ac  HP Laptop Integrated Webcam [2 MP Fixed]
> +	b1b4  Lenovo Integrated Camera
> +	b1b9  Asus Integrated Webcam
> +	b1bb  2.0M UVC WebCam
> +	b1cf  Lenovo Integrated Camera
> +	b1d6  CNF9055 Toshiba Webcam
> +	b1d8  1.3M Webcam
> +	b1e4  Toshiba Integrated Webcam
> +	b213  Fujitsu Integrated Camera
> +	b217  Lenovo Integrated Camera (0.3MP)
> +	b221  integrated camera
> +	b230  Integrated HP HD Webcam
> +	b249  HP Integrated Webcam
> +	b257  Lenovo Integrated Camera
> +	b26b  Sony Visual Communication Camera
> +	b272  Lenovo EasyCamera
> +	b2b0  Camera
> +	b2b9  Lenovo Integrated Camera UVC
> +	b2da  thinkpad t430s camera
> +	b2db  Thinkpad T430 camera
> +	b2ea  Integrated Camera [ThinkPad]
> +	b2f4  HP Webcam-50
> +	b330  Asus 720p CMOS webcam
> +	b354  UVC 1.00 device HD UVC WebCam
> +	b394  Integrated Camera
> +	b3eb  HP 720p HD Monitor Webcam
> +	b3f6  HD WebCam (Acer)
> +	b3fd  HD WebCam (Asus N-series)
> +	b40e  HP Truevision HD camera
> +	b420  Lenovo EasyCamera
> +	b444  Lenovo Integrated Webcam
> +	b49f  Bluetooth (RTL8723BE)
> +	b563  Integrated Camera
> +	b5ab  Integrated Camera
> +	b5ac  Integrated IR Camera
> +	b5ce  Integrated Camera
> +	b5cf  Integrated IR Camera
> +	b5db  HP Webcam
> +	b604  Integrated Camera (1280x720@30)
> +	b681  ThinkPad T490 Webcam
> +04f3  Elan Microelectronics Corp.
> +	000a  Touchscreen
> +	0103  ActiveJet K-2024 Multimedia Keyboard
> +	016f  Touchscreen
> +	01a4  Wireless Keyboard
> +	0201  Touchscreen
> +	0210  Optical Mouse
> +	0212  Laser Mouse
> +	0214  Lynx M9 Optical Mouse
> +	0230  3D Optical Mouse
> +	0232  Mouse
> +	0234  Optical Mouse
> +	0235  Optical Mouse
> +	02f4  2.4G Cordless Mouse
> +	0381  Touchscreen
> +	04a0  Dream Cheeky Stress/Panic Button
> +	0c28  fingerprint sensor [FeinTech FPS00200]
> +	2234  Touchscreen
> +04f4  Harting Elektronik, Inc.
> +04f5  Fujitsu-ICL Systems, Inc.
> +04f6  Norand Corp.
> +04f7  Newnex Technology Corp.
> +04f8  FuturePlus Systems
> +04f9  Brother Industries, Ltd
> +	0002  HL-1050 Laser Printer
> +	0005  Printer
> +	0006  HL-1240 Laser Printer
> +	0007  HL-1250 Laser Printer
> +	0008  HL-1270 Laser Printer
> +	0009  Printer
> +	000a  P2500 series
> +	000b  Printer
> +	000c  Printer
> +	000d  HL-1440 Laser Printer
> +	000e  HL-1450 series
> +	000f  HL-1470N series
> +	0010  Printer
> +	0011  Printer
> +	0012  Printer
> +	0013  Printer
> +	0014  Printer
> +	0015  Printer
> +	0016  Printer
> +	0017  Printer
> +	0018  Printer
> +	001a  HL-1430 Laser Printer
> +	001c  Printer
> +	001e  Printer
> +	0020  HL-5130 series
> +	0021  HL-5140 series
> +	0022  HL-5150D series
> +	0023  HL-5170DN series
> +	0024  Printer
> +	0025  Printer
> +	0027  HL-2030 Laser Printer
> +	0028  Printer
> +	0029  Printer
> +	002a  HL-52x0 series
> +	002b  HL-5250DN Printer
> +	002c  Printer
> +	002d  Printer
> +	0037  HL-3040CN series
> +	0038  HL-3070CW series
> +	0039  HL-5340 series
> +	0041  HL-2250DN Laser Printer
> +	0042  HL-2270DW Laser Printer
> +	004d  HL-6180DW series
> +	0080  HL-L6250DN series
> +	0100  MFC8600/9650 series
> +	0101  MFC9600/9870 series
> +	0102  MFC9750/1200 series
> +	0104  MFC-8300J
> +	0105  MFC-9600J
> +	0106  MFC-7300C
> +	0107  MFC-7400C
> +	0108  MFC-9200C
> +	0109  MFC-830
> +	010a  MFC-840
> +	010b  MFC-860
> +	010c  MFC-7400J
> +	010d  MFC-9200J
> +	010e  MFC-3100C Scanner
> +	010f  MFC-5100C
> +	0110  MFC-4800 Scanner
> +	0111  MFC-6800
> +	0112  DCP1000 Port(FaxModem)
> +	0113  MFC-8500
> +	0114  MFC9700 Port(FaxModem)
> +	0115  MFC-9800 Scanner
> +	0116  DCP1400 Scanner
> +	0119  MFC-9660
> +	011a  MFC-9860
> +	011b  MFC-9880
> +	011c  MFC-9760
> +	011d  MFC-9070
> +	011e  MFC-9180
> +	011f  MFC-9160
> +	0120  MFC580 Port(FaxModem)
> +	0121  MFC-590
> +	0122  MFC-5100J
> +	0124  MFC-4800J
> +	0125  MFC-6800J
> +	0127  MFC-9800J
> +	0128  MFC-8500J
> +	0129  Imagistics 2500 (MFC-8640D clone)
> +	012b  MFC-9030
> +	012e  FAX4100e IntelliFax 4100e
> +	012f  FAX-4750e
> +	0130  FAX-5750e
> +	0132  MFC-5200C RemovableDisk
> +	0135  MFC-100 Scanner
> +	0136  MFC-150CL Scanner
> +	013c  MFC-890 Port
> +	013d  MFC-5200J
> +	013e  MFC-4420C RemovableDisk
> +	013f  MFC-4820C RemovableDisk
> +	0140  DCP-8020
> +	0141  DCP-8025D
> +	0142  MFC-8420
> +	0143  MFC-8820D
> +	0144  DCP-4020C RemovableDisk
> +	0146  MFC-3220C
> +	0147  FAX-1820C Printer
> +	0148  MFC-3320CN
> +	0149  FAX-1920CN Printer
> +	014a  MFC-3420C
> +	014b  MFC-3820CN
> +	014c  DCP-3020C
> +	014d  FAX-1815C Printer
> +	014e  MFC-8820J
> +	014f  DCP-8025J
> +	0150  MFC-8220 Port(FaxModem)
> +	0151  MFC-8210J
> +	0153  DCP-1000J
> +	0157  MFC-3420J Printer
> +	0158  MFC-3820JN Port(FaxModem)
> +	015d  MFC Composite Device
> +	015e  DCP-8045D
> +	015f  MFC-8440
> +	0160  MFC-8840D
> +	0161  MFC-210C
> +	0162  MFC-420CN Remote Setup Port
> +	0163  MFC-410CN RemovableDisk
> +	0165  MFC-620CN
> +	0166  MFC-610CLN RemovableDisk
> +	0168  MFC-620CLN
> +	0169  DCP-110C RemovableDisk
> +	016b  DCP-310CN RemovableDisk
> +	016c  FAX-2440C Printer
> +	016d  MFC-5440CN
> +	016e  MFC-5840CN Remote Setup Port
> +	0170  FAX-1840C Printer
> +	0171  FAX-1835C Printer
> +	0172  FAX-1940CN Printer
> +	0173  MFC-3240C Remote Setup Port
> +	0174  MFC-3340CN RemovableDisk
> +	017b  Imagistics sx2100
> +	0180  MFC-7420
> +	0181  MFC-7820N Port(FaxModem)
> +	0182  DCP-7010
> +	0183  DCP-7020
> +	0184  DCP-7025 Printer
> +	0185  MFC-7220 Printer
> +	0186  Composite Device
> +	0187  FAX-2820 Printer
> +	0188  FAX-2920 Printer
> +	018a  MFC-9420CN
> +	018c  DCP-115C
> +	018d  DCP-116C
> +	018e  DCP-117C
> +	018f  DCP-118C
> +	0190  DCP-120C
> +	0191  DCP-315CN
> +	0192  DCP-340CW
> +	0193  MFC-215C
> +	0194  MFC-425CN
> +	0195  MFC-820CW Remote Setup Port
> +	0196  MFC-820CN Remote Setup Port
> +	0197  MFC-640CW
> +	019a  MFC-840CLN Remote Setup Port
> +	01a2  MFC-8640D
> +	01a3  Composite Device
> +	01a4  DCP-8065DN Printer
> +	01a5  MFC-8460N Port(FaxModem)
> +	01a6  MFC-8860DN Port(FaxModem)
> +	01a7  MFC-8870DW Printer
> +	01a8  DCP-130C
> +	01a9  DCP-330C
> +	01aa  DCP-540CN
> +	01ab  MFC-240C
> +	01ae  DCP-750CW RemovableDisk
> +	01af  MFC-440CN
> +	01b0  MFC-660CN
> +	01b1  MFC-665CW
> +	01b2  MFC-845CW
> +	01b4  MFC-460CN
> +	01b5  MFC-630CD
> +	01b6  MFC-850CDN
> +	01b7  MFC-5460CN
> +	01b8  MFC-5860CN
> +	01ba  MFC-3360C
> +	01bd  MFC-8660DN
> +	01be  DCP-750CN RemovableDisk
> +	01bf  MFC-860CDN
> +	01c0  DCP-128C
> +	01c1  DCP-129C
> +	01c2  DCP-131C
> +	01c3  DCP-329C
> +	01c4  DCP-331C
> +	01c5  MFC-239C
> +	01c9  DCP-9040CN
> +	01ca  MFC-9440CN
> +	01cb  DCP-9045CDN
> +	01cc  MFC-9840CDW
> +	01ce  DCP-135C
> +	01cf  DCP-150C
> +	01d0  DCP-350C
> +	01d1  DCP-560CN
> +	01d2  DCP-770CW
> +	01d3  DCP-770CN
> +	01d4  MFC-230C
> +	01d5  MFC-235C
> +	01d6  MFC-260C
> +	01d7  MFC-465CN
> +	01d8  MFC-680CN
> +	01d9  MFC-685CW
> +	01da  MFC-885CW
> +	01db  MFC-480CN
> +	01dc  MFC-650CD
> +	01dd  MFC-870CDN
> +	01de  MFC-880CDN
> +	01df  DCP-155C
> +	01e0  MFC-265C
> +	01e1  DCP-153C
> +	01e2  DCP-157C
> +	01e3  DCP-353C
> +	01e4  DCP-357C
> +	01e7  MFC-7340
> +	01e9  DCP-7040
> +	01ea  DCP-7030
> +	01eb  MFC-7320
> +	01ec  MFC-9640CW
> +	01f4  MFC-5890CN
> +	0204  DCP-165C
> +	020a  MFC-8670DN
> +	020c  DCP-9042CDN
> +	020d  MFC-9450CDN
> +	0216  MFC-8880DN
> +	0217  MFC-8480DN
> +	0219  MFC-8380DN
> +	021a  MFC-8370DN
> +	021b  DCP-8070D
> +	021c  MFC-9320CW
> +	021d  MFC-9120CN
> +	021e  DCP-9010CN
> +	021f  DCP-8085DN
> +	0220  MFC-9010CN
> +	0222  DCP-195C
> +	0223  DCP-365CN
> +	0224  DCP-375CW
> +	0225  DCP-395CN
> +	0227  DCP-595CN
> +	0228  MFC-255CW
> +	0229  MFC-295CN
> +	022a  MFC-495CW
> +	022b  MFC-495CN
> +	022c  MFC-795CW
> +	022d  MFC-675CD
> +	022e  MFC-695CDN
> +	022f  MFC-735CD
> +	0230  MFC-935CDN
> +	0234  DCP-373CW
> +	0235  DCP-377CW
> +	0236  DCP-390CN
> +	0239  MFC-253CW
> +	023a  MFC-257CW
> +	023e  DCP-197C
> +	023f  MFC-8680DN
> +	0240  MFC-J950DN
> +	0245  MFC-9560CDW
> +	0248  DCP-7055 scanner/printer
> +	024e  MFC-7460DN
> +	0253  DCP-J125
> +	0254  DCP-J315W
> +	0255  DCP-J515W
> +	0256  DCP-J515N
> +	0257  DCP-J715W
> +	0258  DCP-J715N
> +	0259  MFC-J220
> +	025a  MFC-J410
> +	025b  MFC-J265W
> +	025c  MFC-J415W
> +	025d  MFC-J615W
> +	025e  MFC-J615N
> +	025f  MFC-J700D
> +	0260  MFC-J800D
> +	0261  MFC-J850DN
> +	026b  MFC-J630W
> +	026d  MFC-J805D
> +	026e  MFC-J855DN
> +	026f  MFC-J270W
> +	0270  MFC-7360N
> +	0273  DCP-7057 scanner/printer
> +	0276  MFC-5895CW
> +	0278  MFC-J410W
> +	0279  DCP-J525W
> +	027a  DCP-J525N
> +	027b  DCP-J725DW
> +	027c  DCP-J725N
> +	027d  DCP-J925DW
> +	027e  MFC-J955DN
> +	027f  MFC-J280W
> +	0280  MFC-J435W
> +	0281  MFC-J430W
> +	0282  MFC-J625DW
> +	0283  MFC-J825DW
> +	0284  MFC-J825N
> +	0285  MFC-J705D
> +	0287  MFC-J860DN
> +	0288  MFC-J5910DW
> +	0289  MFC-J5910CDW
> +	028a  DCP-J925N
> +	028d  MFC-J835DW
> +	028f  MFC-J425W
> +	0290  MFC-J432W
> +	0291  DCP-8110DN
> +	0292  DCP-8150DN
> +	0293  DCP-8155DN
> +	0294  DCP-8250DN
> +	0295  MFC-8510DN
> +	0296  MFC-8520DN
> +	0298  MFC-8910DW
> +	0299  MFC-8950DW
> +	029a  MFC-8690DW
> +	029c  MFC-8515DN
> +	029e  MFC-9125CN
> +	029f  MFC-9325CW
> +	02a0  DCP-J140W
> +	02a5  MFC-7240
> +	02a6  FAX-2940
> +	02a7  FAX-2950
> +	02a8  MFC-7290
> +	02ab  FAX-2990
> +	02ac  DCP-8110D
> +	02ad  MFC-9130CW
> +	02ae  MFC-9140CDN
> +	02af  MFC-9330CDW
> +	02b0  MFC-9340CDW
> +	02b1  DCP-9020CDN
> +	02b2  MFC-J810DN
> +	02b3  MFC-J4510DW
> +	02b4  MFC-J4710DW
> +	02b5  DCP-8112DN
> +	02b6  DCP-8152DN
> +	02b7  DCP-8157DN
> +	02b8  MFC-8512DN
> +	02ba  MFC-8912DW
> +	02bb  MFC-8952DW
> +	02bc  DCP-J540N
> +	02bd  DCP-J740N
> +	02be  MFC-J710D
> +	02bf  MFC-J840N
> +	02c0  DCP-J940N
> +	02c1  MFC-J960DN
> +	02c2  DCP-J4110DW
> +	02c3  MFC-J4310DW
> +	02c4  MFC-J4410DW
> +	02c5  MFC-J4610DW
> +	02c6  DCP-J4210N
> +	02c7  MFC-J4510N
> +	02c8  MFC-J4910CDW
> +	02c9  MFC-J4810DN
> +	02ca  MFC-8712DW
> +	02cb  MFC-8710DW
> +	02cc  MFC-J2310
> +	02cd  MFC-J2510
> +	02ce  DCP-7055W
> +	02cf  DCP-7057W
> +	02d0  DCP-1510
> +	02d1  MFC-1810
> +	02d3  DCP-9020CDW
> +	02d4  MFC-8810DW
> +	02dd  DCP-J4215N
> +	02de  DCP-J132W
> +	02df  DCP-J152W
> +	02e0  DCP-J152N
> +	02e1  DCP-J172W
> +	02e2  DCP-J552DW
> +	02e3  DCP-J552N
> +	02e4  DCP-J752DW
> +	02e5  DCP-J752N
> +	02e6  DCP-J952N
> +	02e7  MFC-J245
> +	02e8  MFC-J470DW
> +	02e9  MFC-J475DW
> +	02ea  MFC-J285DW
> +	02eb  MFC-J650DW
> +	02ec  MFC-J870DW
> +	02ed  MFC-J870N
> +	02ee  MFC-J720D
> +	02ef  MFC-J820DN
> +	02f0  MFC-J980DN
> +	02f1  MFC-J890DN
> +	02f2  MFC-J6520DW
> +	02f3  MFC-J6570CDW
> +	02f4  MFC-J6720DW
> +	02f5  MFC-J6920DW
> +	02f6  MFC-J6970CDW
> +	02f7  MFC-J6975CDW
> +	02f8  MFC-J6770CDW
> +	02f9  DCP-J132N
> +	02fa  MFC-J450DW
> +	02fb  MFC-J875DW
> +	02fc  DCP-J100
> +	02fd  DCP-J105
> +	02fe  MFC-J200
> +	02ff  MFC-J3520
> +	0300  MFC-J3720
> +	030f  DCP-L8400CDN
> +	0310  DCP-L8450CDW
> +	0311  MFC-L8600CDW
> +	0312  MFC-L8650CDW
> +	0313  MFC-L8850CDW
> +	0314  MFC-L9550CDW
> +	0318  MFC-7365DN
> +	0320  MFC-L2740DW
> +	0321  DCP-L2500D
> +	0322  DCP-L2520DW
> +	0324  DCP-L2520D
> +	0326  DCP-L2540DN
> +	0328  DCP-L2540DW
> +	0329  DCP-L2560DW
> +	0330  HL-L2380DW
> +	0331  MFC-L2700DW
> +	0335  FAX-L2700DN
> +	0337  MFC-L2720DW
> +	0338  MFC-L2720DN
> +	0339  DCP-J4120DW
> +	033a  MFC-J4320DW
> +	033c  MFC-J2320
> +	033d  MFC-J4420DW
> +	0340  MFC-J4620DW
> +	0341  MFC-J2720
> +	0342  MFC-J4625DW
> +	0343  MFC-J5320DW
> +	0346  MFC-J5620DW
> +	0347  MFC-J5720DW
> +	0349  DCP-J4220N
> +	034b  MFC-J4720N
> +	034e  MFC-J5720CDW
> +	034f  MFC-J5820DN
> +	0350  MFC-J5620CDW
> +	0351  DCP-J137N
> +	0353  DCP-J557N
> +	0354  DCP-J757N
> +	0355  DCP-J957N
> +	0356  MFC-J877N
> +	0357  MFC-J727D
> +	0358  MFC-J987DN
> +	0359  MFC-J827DN
> +	035a  MFC-J897DN
> +	035b  DCP-1610W
> +	035c  DCP-1610NW
> +	035d  MFC-1910W
> +	035e  MFC-1910NW
> +	0360  DCP-1618W
> +	0361  MFC-1919NW
> +	0364  MFC-J5625DW
> +	0365  MFC-J4520DW
> +	0366  MFC-J5520DW
> +	0367  DCP-7080D
> +	0368  DCP-7080
> +	0369  DCP-7180DN
> +	036a  DCP-7189DW
> +	036b  MFC-7380
> +	036c  MFC-7480D
> +	036d  MFC-7880DN
> +	036e  MFC-7889DW
> +	036f  DCP-9022CDW
> +	0370  MFC-9142CDN
> +	0371  MFC-9332CDW
> +	0372  MFC-9342CDW
> +	0373  MFC-L2700D
> +	0376  DCP-1600
> +	0377  MFC-1900
> +	0378  DCP-1608
> +	0379  DCP-1619
> +	037a  MFC-1906
> +	037b  MFC-1908
> +	037c  ADS-2000e
> +	037d  ADS-2100e
> +	037e  ADS-2500We
> +	037f  ADS-2600We
> +	0380  DCP-J562DW
> +	0381  DCP-J562N
> +	0383  DCP-J962N
> +	0384  MFC-J480DW
> +	0385  MFC-J485DW
> +	0386  MFC-J460DW
> +	0388  MFC-J680DW
> +	0389  MFC-J880DW
> +	038a  MFC-J885DW
> +	038b  MFC-J880N
> +	038c  MFC-J730DN
> +	038d  MFC-J990DN
> +	038e  MFC-J830DN
> +	038f  MFC-J900DN
> +	0390  MFC-J5920DW
> +	0392  MFC-L2705DW
> +	0393  DCP-T300
> +	0394  DCP-T500W
> +	0395  DCP-T700W
> +	0396  MFC-T800W
> +	0397  DCP-J963N
> +	03b3  MFC-J6925DW
> +	03b4  MFC-J6573CDW
> +	03b5  MFC-J6973CDW
> +	03b6  MFC-J6990CDW
> +	03bb  MFC-L2680W
> +	03bc  MFC-L2700DN
> +	03bd  DCP-J762N
> +	03fd  ADS-2700W
> +	043f  MFC-L3770CDW
> +	0440  MFC-9350CDW
> +	0441  MFC-L3750CDW
> +	0442  MFC-L3745CDW
> +	0443  MFC-L3735CDN
> +	0444  MFC-9150CDN
> +	0445  MFC-L3730CDN
> +	0446  MFC-L3710CW
> +	0447  DCP-9030CDN
> +	0448  DCP-L3550CDW
> +	044a  HL-L3290CDW
> +	044b  DCP-L3510CDW
> +	044c  DCP-L3551CDW
> +	1000  Printer
> +	1002  Printer
> +	2002  PTUSB Printing
> +	2004  PT-2300/2310 p-Touch Laber Printer
> +	2007  PT-2420PC P-touch Label Printer
> +	2015  QL-500 label printer
> +	2016  QL-550 printer
> +	201a  PT-18R P-touch label printer
> +	201b  QL-650TD Label Printer
> +	2020  QL-1050 Label Printer
> +	2027  QL-560 Label Printer
> +	2028  QL-570 Label Printer
> +	202a  QL-1060N Label Printer
> +	202b  PT-7600 P-touch Label Printer
> +	202c  PT-1230PC P-touch Label Printer E mode
> +	202d  PT-2430PC P-touch Label Printer
> +	2030  PT-1230PC P-touch Label Printer EL mode
> +	2041  PT-2730 P-touch Label Printer
> +	2042  QL-700 Label Printer
> +	2043  QL-710W Label Printer
> +	2044  QL-720NW Label Printer
> +	204d  QL-720NW Label Printer (mass storage mode)
> +	2061  PT-P700 P-touch Label Printer
> +	2064  PT-P700 P-touch Label Printer RemovableDisk
> +	2074  PT-D600 P-touch Label Printer
> +	209b  QL-800 Label Printer
> +	209c  QL-810W Label Printer
> +	209d  QL-820NWB Label Printer
> +	20a7  QL-1100 Label Printer
> +	20a8  QL-1110NWB Label Printer
> +	20a9  QL-1100 Label Printer (mass storage)
> +	20aa  QL-1110NWB Label Printer (mass storage)
> +	20ab  QL-1115NWB Label Printer
> +	20ac  QL-1115NWB Label Printer (mass storage)
> +	20c0  QL-600 Label Printer
> +	2100  Card Reader Writer
> +	2102  Sewing machine
> +	60a0  ADS-2000
> +	60a1  ADS-2100
> +	60a4  ADS-2500W
> +	60a5  ADS-2600W
> +	60a6  ADS-1000W
> +	60a7  ADS-1100W
> +	60a8  ADS-1500W
> +	60a9  ADS-1600W
> +04fa  Dallas Semiconductor
> +	2490  DS1490F 2-in-1 Fob, 1-Wire adapter
> +	4201  DS4201 Audio DAC
> +04fb  Biostar Microtech International Corp.
> +04fc  Sunplus Technology Co., Ltd
> +	0003  CM1092 / Wintech CM-5098 Optical Mouse
> +	0005  USB OpticalWheel Mouse
> +	0013  ViewMate Desktop Mouse CC2201
> +	0015  ViewMate Desktop Mouse CC2201
> +	00d3  00052486 / Laser Mouse M1052 [hama]
> +	0171  SPCA1527A/SPCA1528 SD card camera (Mass Storage mode)
> +	0201  SPCP825 RS232C Adapter
> +	0232  Fingerprint
> +	0538  Wireless Optical Mouse 2.4G [Bright]
> +	0561  Flexcam 100
> +	05d8  Wireless keyboard/mouse
> +	05da  SPEEDLINK SNAPPY Wireless Mouse Nano
> +	0c15  SPIF215A SATA bridge
> +	0c25  SATALink SPIF225A
> +	1528  SPCA1527A/SPCA1528 SD card camera (webcam mode)
> +	1533  Mass Storage
> +	2080  ASUS Webcam
> +	500c  CA500C Digital Camera
> +	504a  Aiptek Mini PenCam 1.3
> +	504b  Aiptek Mega PockerCam 1.3/Maxell MaxPocket LE 1.3
> +	5330  Digitrex 2110
> +	5331  Vivitar Vivicam 10
> +	5360  Sunplus Generic Digital Camera
> +	5563  Digital Media Player MP3/WMA [The Sharper Image]
> +	5720  Card Reader Driver
> +	6333  Siri A9 UVC chipset
> +	7333  Finet Technology Palmpix DC-85
> +	757a  Aiptek, MP315 MP3 Player
> +	ffff  PureDigital Ritz Disposable
> +04fd  Soliton Systems, K.K.
> +	0003  Smart Card Reader II
> +04fe  PFU, Ltd
> +	0006  Happy Hacking Keyboard Lite2
> +04ff  E-CMOS Corp.
> +0500  Siam United Hi-Tech
> +	0001  DART Keyboard Mouse
> +	0002  DART-2 Keyboard
> +0501  Fujikura DDK, Ltd
> +0502  Acer, Inc.
> +	0001  Handheld
> +	0736  Handheld
> +	15b1  PDA n311
> +	1631  c10 Series
> +	1632  c20 Series
> +	16e1  n10 Handheld Sync
> +	16e2  n20 Pocket PC Sync
> +	16e3  n30 Handheld Sync
> +	2008  Liquid Gallant Duo E350 (preloader)
> +	3202  Liquid
> +	3203  Liquid (Debug mode)
> +	3230  BeTouch E120
> +	3317  Liquid
> +	3325  Iconia tablet A500
> +	3341  Iconia tablet A500
> +	33c3  Liquid Gallant Duo E350
> +	33c4  Liquid Gallant Duo E350 (debug mode)
> +	33c7  Liquid Gallant Duo E350 (USB tethering)
> +	33c8  Liquid Gallant Duo E350 (debug mode, USB tethering)
> +	d001  Divio NW801/DVC-V6+ Digital Camera
> +0503  Hitachi America, Ltd
> +0504  Hayes Microcomputer Products
> +0506  3Com Corp.
> +	009d  HomeConnect Camera
> +	00a0  3CREB96 Bluetooth Adapter
> +	00a1  Bluetooth Device
> +	00a2  Bluetooth Device
> +	00df  3Com Home Connect lite
> +	0100  HomeConnect ADSL Modem Driver
> +	03e8  3C19250 Ethernet [klsi]
> +	0a01  3CRSHEW696 Wireless Adapter
> +	0a11  3CRWE254G72 802.11g Adapter
> +	11f8  HomeConnect 3C460
> +	2922  HomeConnect Cable Modem External with
> +	3021  U.S.Robotics 56000 Voice FaxModem Pro
> +	4601  3C460B 10/100 Ethernet Adapter
> +	f002  3CP4218 ADSL Modem (pre-init)
> +	f003  3CP4218 ADSL Modem
> +	f100  3CP4218 ADSL Modem (pre-init)
> +0507  Hosiden Corp.
> +	0011  Konami ParaParaParadise Controller
> +0508  Clarion Co., Ltd
> +0509  Aztech Systems, Ltd
> +	0801  ADSL Modem
> +	0802  ADSL Modem (RFC1483)
> +	0806  DSL Modem
> +	080f  Binatone ADSL500 Modem Network Interface
> +	0812  Pirelli ADSL Modem Network Interface
> +050a  Cinch Connectors
> +050b  Cable System International
> +050c  InnoMedia, Inc.
> +050d  Belkin Components
> +	0004  Direct Connect
> +	0012  F8T012 Bluetooth Adapter
> +	0013  F8T013 Bluetooth Adapter
> +	0017  B8T017 Bluetooth+EDR 2.1 / F4U017 USB 2.0 7-port Hub
> +	003a  Universal Media Reader
> +	0050  F5D6050 802.11b Wireless Adapter v2000 [Atmel at76c503a]
> +	0081  F8T001v2 Bluetooth
> +	0083  Bluetooth Device
> +	0084  F8T003v2 Bluetooth
> +	0102  Flip KVM
> +	0103  F5U103 Serial Adapter [etek]
> +	0106  VideoBus II Adapter, Video
> +	0108  F1DE108B KVM
> +	0109  F5U109/F5U409 PDA Adapter
> +	0115  SCSI Adapter
> +	0119  F5U120-PC Dual PS/2 Ports / F5U118-UNV ADB Adapter
> +	0121  F5D5050 100Mbps Ethernet
> +	0122  Ethernet Adapter
> +	0131  Bluetooth Device with trace filter
> +	016a  Bluetooth Mini Dongle
> +	0200  Nostromo SpeedPad n52te Gaming Keyboard
> +	0201  Peripheral Switch
> +	0208  USBView II Video Adapter [nt1004]
> +	0210  F5U228 Hi-Speed USB 2.0 DVD Creator
> +	0211  F5U211 USB 2.0 15-in-1 Media Reader & Writer
> +	0224  F5U224 USB 2.0 4-Port Hub
> +	0234  F5U234 USB 2.0 4-Port Hub
> +	0237  F5U237 USB 2.0 7-Port Hub
> +	0240  F5U240 USB 2.0 CF Card Reader
> +	0249  USB 2 Flash Media Device
> +	0257  F5U257 Serial
> +	0304  FSU304 USB 2.0 - 4 Ports Hub
> +	0307  USB 2.0 - 7 ports Hub [FSU307]
> +	038c  F2CU038 HDMI Adapter
> +	0409  F5U409 Serial
> +	0416  Staples 12416 7 port desktop hub
> +	0551  F6C550-AVR UPS
> +	065a  F8T065BF Mini Bluetooth 4.0 Adapter
> +	0706  2-N-1 7-Port Hub (Lower half)
> +	0802  Nostromo n40 Gamepad
> +	0803  Nostromo 1745 GamePad
> +	0805  Nostromo N50 GamePad
> +	0815  Nostromo n52 HID SpeedPad Mouse Wheel
> +	0826  ErgoFit Wireless Optical Mouse (HID)
> +	0980  HID UPS Battery
> +	1004  F9L1004 802.11n Surf N300 XR Wireless Adapter [Realtek RTL8192CU]
> +	1102  F7D1102 N150/Surf Micro Wireless Adapter v1000 [Realtek RTL8188CUS]
> +	1103  F9L1103 N750 DB 802.11abgn 2x3:3 [Ralink RT3573]
> +	1106  F9L1106v1 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526]
> +	1109  F9L1109v1 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU]
> +	110a  F9L1101v2 802.11abgn Wireless Adapter [Realtek RTL8192DU]
> +	11f2  ISY Wireless Micro Adapter IWL 2000 [RTL8188CUS]
> +	1202  F5U120-PC Parallel Printer Port
> +	1203  F5U120-PC Serial Port
> +	2103  F7D2102 802.11n N300 Micro Wireless Adapter v3000 [Realtek RTL8192CU]
> +	21f1  N300 WLAN N Adapter [ISY]
> +	21f2  RTL8192CU 802.11n WLAN Adapter [ISY IWL 4000]
> +	258a  F5U258 Host to Host cable
> +	3101  F1DF102U/F1DG102U Flip Hub
> +	3201  F1DF102U/F1DG102U Flip KVM
> +	4050  ZD1211B
> +	5055  F5D5055 Gigabit Network Adapter [AX88xxx]
> +	6050  F6D6050 802.11abgn Wireless Adapter [Broadcom BCM4323]
> +	6051  F5D6051 802.11b Wireless Network Adapter [ZyDAS ZD1201]
> +	615a  F7D4101 / F9L1101v1 802.11abgn Wireless Adapter [Broadcom BCM4323]
> +	7050  F5D7050 Wireless G Adapter v1000/v2000 [Intersil ISL3887]
> +	7051  F5D7051 802.11g Adapter v1000 [Broadcom 4320 USB]
> +	705a  F5D7050 Wireless G Adapter v3000 [Ralink RT2571W]
> +	705b  Wireless G Adapter
> +	705c  F5D7050 Wireless G Adapter v4000 [Zydas ZD1211B]
> +	705e  F5D7050 Wireless G Adapter v5000 [Realtek RTL8187B]
> +	706a  2-N-1 7-Port Hub (Upper half)
> +	8053  F5D8053 N Wireless USB Adapter v1000/v4000 [Ralink RT2870]
> +	805c  F5D8053 N Wireless Adapter v3000 [Ralink RT2870]
> +	805e  F5D8053 N Wireless USB Adapter v5000 [Realtek RTL8192U]
> +	815c  F5D8053 N Wireless USB Adapter v3000 [Ralink RT2870]
> +	815f  F5D8053 N Wireless USB Adapter v6000 [Realtek RTL8192SU]
> +	825a  F5D8055 N+ Wireless Adapter v1000 [Ralink RT2870]
> +	825b  F5D8055 N+ Wireless Adapter v2000 [Ralink RT3072]
> +	845a  F7D2101 802.11n Surf & Share Wireless Adapter v1000 [Realtek RTL8192SU]
> +	905b  F5D9050 Wireless G+ MIMO Network Adapter v3000 [Ralink RT2573]
> +	905c  F5D9050 Wireless G+ MIMO Network Adapter v4000 [Ralink RT2573]
> +	935a  F6D4050 N150 Enhanced Wireless Network Adapter v1000 [Ralink RT3070]
> +	935b  F6D4050 N150 Enhanced Wireless Network Adapter v2000 [Ralink RT3070]
> +	945a  F7D1101 v1 Basic Wireless Adapter [Realtek RTL8188SU]
> +	945b  F7D1101 v2 Basic Wireless Adapter [Ralink RT3370]
> +	d321  Dynex DX-NUSB 802.11bgn Wireless Adapter [Broadcom BCM43231]
> +050e  Neon Technology, Inc.
> +050f  KC Technology, Inc.
> +	0001  Hub
> +	0003  KC82C160S Hub
> +	0180  KC-180 IrDA Dongle
> +	0190  KC2190 USB Host-to-Host cable
> +0510  Sejin Electron, Inc.
> +	0001  Keyboard
> +	1000  Keyboard with PS/2 Mouse Port
> +	e001  Mouse
> +0511  N'Able (DataBook) Technologies, Inc.
> +	002b  AOC DVB
> +0512  Hualon Microelectronics Corp.
> +0513  digital-X, Inc.
> +0514  FCI Electronics
> +0515  ACTC
> +0516  Longwell Electronics
> +0517  Butterfly Communications
> +0518  EzKEY Corp.
> +	0001  USB to PS2 Adaptor v1.09
> +	0002  EZ-9900C Keyboard
> +0519  Star Micronics Co., Ltd
> +	0003  TSP100ECO/TSP100II
> +	c002  Xlive Bluetooth XBM-100S MP3 Player
> +051a  WYSE Technology
> +	a005  Smart Display Version 9973
> +051b  Silicon Graphics
> +051c  Shuttle, Inc.
> +	0005  VFD Module
> +	c001  eHome Infrared Receiver
> +	c002  eHome Infrared Receiver
> +051d  American Power Conversion
> +	0001  UPS
> +	0002  Uninterruptible Power Supply
> +	0003  UPS
> +051e  Scientific Atlanta, Inc.
> +051f  IO Systems (Elite Electronics), Inc.
> +0520  Taiwan Semiconductor Manufacturing Co.
> +0521  Airborn Connectors
> +0522  Advanced Connectek, Inc.
> +0523  ATEN GmbH
> +0524  Sola Electronics
> +0525  Netchip Technology, Inc.
> +	100d  RFMD Bluetooth Device
> +	1080  NET1080 USB-USB Bridge
> +	1200  SSDC Adapter II
> +	1265  File-backed Storage Gadget
> +	3424  V30x/V4xx fingerprint sensor [Lumidigm]
> +	a0f0  Cambridge Electronic Devices Power1401 mk 2
> +	a140  USB Clik! 40
> +	a141  (OME) PocketZip 40 MP3 Player Driver
> +	a220  GVC Bluetooth Wireless Adapter
> +	a4a0  Linux-USB "Gadget Zero"
> +	a4a1  Linux-USB Ethernet Gadget
> +	a4a2  Linux-USB Ethernet/RNDIS Gadget
> +	a4a3  Linux-USB user-mode isochronous source/sink
> +	a4a4  Linux-USB user-mode bulk source/sink
> +	a4a5  Linux-USB File-backed Storage Gadget
> +	a4a6  Linux-USB Serial Gadget
> +	a4a7  Linux-USB Serial Gadget (CDC ACM mode)
> +	a4a8  Linux-USB Printer Gadget
> +	a4a9  Linux-USB OBEX Gadget
> +	a4aa  Linux-USB CDC Composite Gadge (Ethernet and ACM)
> +	a4ab  Linux-USB Multifunction Composite Gadget
> +	a4ac  Linux-USB HID Gadget
> +0526  Temic MHS S.A.
> +0527  ALTRA
> +0528  ATI Technologies, Inc.
> +	7561  TV Wonder
> +	7562  TV Wonder, Edition (FN5)
> +	7563  TV Wonder, Edition (FI)
> +	7564  TV Wonder, Edition (FQ)
> +	7565  TV Wonder, Edition (NTSC+)
> +	7566  TV Wonder, Edition (FN5)
> +	7567  TV Wonder, Edition (FI)
> +	7568  TV Wonder, Edition (FQ)
> +	7569  Live! Pro (A)
> +	756a  Live! Pro Audio (O)
> +0529  Aladdin Knowledge Systems
> +	0001  HASP copy protection dongle
> +	030b  eToken R1 v3.1.3.x
> +	0313  eToken R1 v3.2.3.x
> +	031b  eToken R1 v3.3.3.x
> +	0323  eToken R1 v3.4.3.x
> +	0412  eToken R2 v2.2.4.x
> +	041a  eToken R2 v2.2.4.x
> +	0422  eToken R2 v2.4.4.x
> +	042a  eToken R2 v2.5.4.x
> +	050c  eToken Pro v4.1.5.x
> +	0514  eToken Pro v4.2.5.4
> +	0600  eToken Pro 64k (4.2)
> +	0620  Token JC
> +052a  Crescent Heart Software
> +052b  Tekom Technologies, Inc.
> +	0102  Ca508A HP1020 Camera v.1.3.1.6
> +	0801  Yakumo MegaImage 37
> +	1512  Yakumo MegaImage IV
> +	1513  Aosta CX100 Webcam
> +	1514  Aosta CX100 Webcam Storage
> +	1905  Yakumo MegaImage 47
> +	1911  Yakumo MegaImage 47 SL
> +	2202  WDM Still Image Capture
> +	2203  Sound Vision Stream Driver
> +	3a06  DigiLife DDV-5120A
> +	d001  P35U Camera Capture
> +052c  Canon Information Systems, Inc.
> +052d  Avid Electronics Corp.
> +052e  Standard Microsystems Corp.
> +052f  Unicore Software, Inc.
> +0530  American Microsystems, Inc.
> +0531  Wacom Technology Corp.
> +0532  Systech Corp.
> +0533  Alcatel Mobile Phones
> +0534  Motorola, Inc.
> +0535  LIH TZU Electric Co., Ltd
> +0536  Hand Held Products (Welch Allyn, Inc.)
> +	01a0  PDT
> +0537  Inventec Corp.
> +0538  Caldera International, Inc. (SCO)
> +0539  Shyh Shiun Terminals Co., Ltd
> +053a  PrehKeyTec GmbH
> +	0b00  Hub
> +	0b01  Preh MCI 3100
> +053b  Global Village Communication
> +053c  Institut of Microelectronic & Mechatronic Systems
> +053d  Silicon Architect
> +053e  Mobility Electronics
> +053f  Synopsys, Inc.
> +0540  UniAccess AB
> +	0101  Panache Surf ISDN TA
> +0541  Sirf Technology, Inc.
> +0543  ViewSonic Corp.
> +	00fe  G773 Monitor Hub
> +	00ff  P815 Monitor Hub
> +	0bf2  airpanel V150 Wireless Smart Display
> +	0bf3  airpanel V110 Wireless Smart Display
> +	0ed9  Color Pocket PC V35
> +	0f01  airsync Wi-Fi Wireless Adapter
> +	1527  Color Pocket PC V36
> +	1529  Color Pocket PC V37
> +	152b  Color Pocket PC V38
> +	152e  Pocket PC
> +	1921  Communicator Pocket PC
> +	1922  Smartphone
> +	1923  Pocket PC V30
> +	1a11  Wireless 802.11g Adapter
> +	1e60  TA310 - ATSC/NTSC/PAL Driver(PCM4)
> +	4153  ViewSonic G773 Control (?)
> +0544  Cristie Electronics, Ltd
> +0545  Xirlink, Inc.
> +	7333  Trution Web Camera
> +	8002  IBM NetCamera
> +	8009  Veo PC Camera
> +	800c  Veo Stingray
> +	800d  Veo PC Camera
> +	8080  IBM C-It Webcam
> +	808a  Veo PC Camera
> +	808b  Veo Stingray
> +	808d  Veo PC Camera
> +	810a  Veo Advanced Connect Webcam
> +	810b  Veo PC Camera
> +	810c  Veo PC Camera
> +	8135  Veo Mobile/Advanced Web Camera
> +	813a  Veo PC Camera
> +	813b  Veo PC Camera
> +	813c  Veo Mobile/Advanced Web Camera
> +	8333  Veo Stingray/Connect Web Camera
> +	888c  eVision 123 digital camera
> +	888d  eVision 123 digital camera
> +0546  Polaroid Corp.
> +	0daf  PDC 2300Z
> +	1bed  PDC 1320 Camera
> +	3097  PDC 310
> +	3155  PDC 3070 Camera
> +	3187  Digital Camera
> +	3191  Ion 80 Camera
> +	3273  PDC 2030 Camera
> +	3304  a500 Digital Camera
> +	dccf  Sound Vision Stream Driver
> +0547  Anchor Chips, Inc.
> +	0001  ICSI Bluetooth Device
> +	0080  I3SYSTEM HYUNY
> +	1002  Python2 WDM Encoder
> +	1006  Hantek DSO-2100 UF
> +	2131  AN2131 EZUSB Microcontroller
> +	2235  AN2235 EZUSB-FX Microcontroller
> +	2710  EZ-Link Loader (EZLNKLDR.SYS)
> +	2720  AN2720 USB-USB Bridge
> +	2727  Xircom PGUNET USB-USB Bridge
> +	2750  EZ-Link (EZLNKUSB.SYS)
> +	2810  Cypress ATAPI Bridge
> +	4018  AmScope MU1803
> +	4d90  AmScope MD1900 camera
> +	6010  AmScope MU1000 camera
> +	6510  Touptek UCMOS05100KPA
> +	7000  PowerSpec MCE460 Front Panel LED Display
> +	7777  Bluetooth Device
> +	9999  AN2131 uninitialized (?)
> +0548  Tyan Computer Corp.
> +	1005  EZ Cart II GameBoy Flash Programmer
> +0549  Pixera Corp.
> +054a  Fujitsu Microelectronics, Inc.
> +054b  New Media Corp.
> +054c  Sony Corp.
> +	0001  HUB
> +	0002  Standard HUB
> +	0010  Cyber-shot, Mavica (msc)
> +	0014  Nogatech USBVision (SY)
> +	0022  Storage Adapter V2 (TPP)
> +	0023  CD Writer
> +	0024  Mavica CD-1000 Camera
> +	0025  NW-MS7 Walkman MemoryStick Reader
> +	002b  Portable USB Harddrive V2
> +	002c  USB Floppy Disk Drive
> +	002d  MSAC-US1 MemoryStick Reader
> +	002e  HandyCam MemoryStick Reader
> +	0030  Storage Adapter V2 (TPP)
> +	0032  MemoryStick MSC-U01 Reader
> +	0035  Network Walkman (E)
> +	0036  Net MD
> +	0037  MG Memory Stick Reader/Writer
> +	0038  Clie PEG-S300/D PalmOS PDA
> +	0039  Network Walkman (MS)
> +	003c  VAIO-MX LCD Control
> +	0045  Digital Imaging Video
> +	0046  Network Walkman
> +	0049  UP-D895
> +	004a  Memory Stick Hi-Fi System
> +	004b  Memory Stick Reader/Writer
> +	004e  DSC-xxx (ptp)
> +	0056  MG Memory Stick Reader/Writer
> +	0058  Clie PEG-N7x0C PalmOS PDA Mass Storage
> +	0066  Clie PEG-N7x0C/PEG-T425 PalmOS PDA Serial
> +	0067  CMR-PC3 Webcam
> +	0069  Memorystick MSC-U03 Reader
> +	006c  FeliCa S310 [PaSoRi]
> +	006d  Clie PEG-T425 PDA Mass Storage
> +	006f  Network Walkman (EV)
> +	0073  Storage CRX1750U
> +	0075  Net MD
> +	0076  Storage Adapter ACR-U20
> +	007c  Net MD
> +	007f  IC Recorder (MS)
> +	0080  Net MD
> +	0081  Net MD
> +	0084  Net MD
> +	0085  Net MD
> +	0086  Net MD
> +	008b  Micro Vault 64M Mass Storage
> +	0095  Clie s360
> +	0099  Clie NR70 PDA Mass Storage
> +	009a  Clie NR70 PDA Serial
> +	00ab  Visual Communication Camera (PCGA-UVC10)
> +	00af  DPP-EX Series Digital Photo Printer
> +	00bf  IC Recorder (S)
> +	00c0  Handycam DCR-30
> +	00c6  Net MD
> +	00c7  Net MD
> +	00c8  MZ-N710 Minidisc Walkman
> +	00c9  Net MD
> +	00ca  MZ-DN430 Minidisc Walkman
> +	00cb  MSAC-US20 Memory Stick Reader
> +	00da  Clie nx60
> +	00e8  Network Walkman (MS)
> +	00e9  Handheld
> +	00eb  Net MD
> +	0101  Net MD
> +	0103  IC Recorder (ST)
> +	0105  Micro Vault Hub
> +	0107  VCC-U01 Visual Communication Camera
> +	0110  Digital Imaging Video
> +	0113  Net MD
> +	0116  IC Recorder (P)
> +	0144  Clie PEG-TH55 PDA
> +	0147  Visual Communication Camera (PCGA-UVC11)
> +	014c  Aiwa AM-NX9 Net MD Music Recorder MDLP
> +	014d  Memory Stick Reader/Writer
> +	0154  Eyetoy Audio Device
> +	0155  Eyetoy Video Device
> +	015f  IC Recorder (BM)
> +	0169  Clie PEG-TJ35 PDA Serial
> +	016a  Clie PEG-TJ35 PDA Mass Storage
> +	016b  Mobile HDD
> +	016d  IC Recorder (SX)
> +	016e  DPP-EX50 Digital Photo Printer
> +	0171  Fingerprint Sensor 3500
> +	017e  Net MD
> +	017f  Hi-MD WALKMAN
> +	0180  Net MD
> +	0181  Hi-MD WALKMAN
> +	0182  Net MD
> +	0183  Hi-MD WALKMAN
> +	0184  Net MD
> +	0185  Hi-MD WALKMAN
> +	0186  Net MD
> +	0187  Hi-MD MZ-NH600 WALKMAN
> +	0188  Net MD
> +	018a  Net MD
> +	018b  Hi-MD SOUND GATE
> +	019e  Micro Vault 1.0G Mass Storage
> +	01ad  ATRAC HDD PA
> +	01bb  FeliCa S320 [PaSoRi]
> +	01bd  MRW62E Multi-Card Reader/Writer
> +	01c3  NW-E55 Network Walkman
> +	01c6  MEMORY P-AUDIO
> +	01c7  Printing Support
> +	01c8  PSP Type A
> +	01c9  PSP Type B
> +	01d0  DVD+RW External Drive DRU-700A
> +	01d5  IC RECORDER
> +	01de  VRD-VC10 [Video Capture]
> +	01e7  UP-D897
> +	01e8  UP-DR150 Photo Printer
> +	01e9  Net MD
> +	01ea  Hi-MD WALKMAN
> +	01ee  IC RECORDER
> +	01fa  IC Recorder (P)
> +	01fb  NW-E405 Network Walkman
> +	020f  Device
> +	0210  ATRAC HDD PA
> +	0219  Net MD
> +	021a  Hi-MD WALKMAN
> +	021b  Net MD
> +	021c  Hi-MD WALKMAN
> +	021d  Net MD
> +	0226  UP-CR10L
> +	0227  Printing Support
> +	022c  Net MD
> +	022d  Hi-MD AUDIO
> +	0233  ATRAC HDD PA
> +	0236  Mobile HDD
> +	023b  DVD+RW External Drive DRU-800UL
> +	023c  Net MD
> +	023d  Hi-MD WALKMAN
> +	0243  MicroVault Flash Drive
> +	024b  Vaio VGX Mouse
> +	0257  IFU-WLM2 USB Wireless LAN Module (Wireless Mode)
> +	0258  IFU-WLM2 USB Wireless LAN Module (Memory Mode)
> +	0259  IC RECORDER
> +	0267  Tachikoma Device
> +	0268  Batoh Device / PlayStation 3 Controller
> +	0269  HDD WALKMAN
> +	026a  HDD WALKMAN
> +	0271  IC Recorder (P)
> +	027c  NETWORK WALKMAN
> +	027e  SONY Communicator
> +	027f  IC RECORDER
> +	0286  Net MD
> +	0287  Hi-MD WALKMAN
> +	0290  VGP-UVC100 Visual Communication Camera
> +	029b  PRS-500 eBook reader
> +	02a5  MicroVault Flash Drive
> +	02af  Handycam DCR-DVD306E
> +	02c4  Device
> +	02d1  DVD RW
> +	02d2  PSP Slim
> +	02d4  UP-CX1
> +	02d8  SBAC-US10 SxS PRO memory card reader/writer
> +	02e1  FeliCa S330 [PaSoRi]
> +	02ea  PlayStation 3 Memory Card Adaptor
> +	02f9  DSC-H9
> +	0317  WALKMAN
> +	031a  Walkman NWD-B103F
> +	031e  PRS-300/PRS-505 eBook reader
> +	0325  NWZ-A818
> +	033e  DSC-W120/W290
> +	0346  Handycam DCR-SR55E
> +	0348  HandyCam HDR-TG3E
> +	035b  Walkman NWZ-A828
> +	035c  NWZ-A726/A728/A729
> +	035f  UP-DR200 Photo Printer
> +	0360  M2 Card Reader
> +	0382  Memory Stick PRO-HG Duo Adaptor (MSAC-UAH1)
> +	0385  Walkman NWZ-E436F
> +	0387  IC Recorder (P)
> +	03bc  Webbie HD - MHS-CM1
> +	03c3  UP-DR80MD
> +	03c4  Stryker SDP1000
> +	03c5  UP-DR80
> +	03cc  SD Card Reader
> +	03d1  DPF-X95
> +	03d3  DR-BT100CX
> +	03d5  PlayStation Move motion controller
> +	03fc  WALKMAN [NWZ-E345]
> +	03fd  Walkman NWZ-E443
> +	042f  PlayStation Move navigation controller
> +	0440  DSC-H55
> +	0485  MHS-PM5 HD camcorder
> +	04cb  WALKMAN NWZ-E354
> +	0541  DSC-HX100V [Cybershot Digital Still Camera]
> +	05c4  DualShock 4 [CUH-ZCT1x]
> +	0689  Walkman NWZ-B173F
> +	06bb  WALKMAN NWZ-F805
> +	06c3  RC-S380
> +	07c3  ILCE-6000 (aka Alpha-6000) in Mass Storage mode
> +	07c4  ILCE-6000 (aka Alpha-6000) in Mass Storage mode
> +	082f  Walkman NWZW Series
> +	0847  WG-C10 Portable Wireless Server
> +	0873  UP-971AD
> +	0877  UP-D898/X898 series
> +	0884  MDR-ZX770BN [Wireless Noise Canceling Stereo Headset]
> +	088c  Portable Headphone Amplifier
> +	08b7  ILCE-6000 (aka Alpha-6000) in MTP mode
> +	094e  ILCE-6000 (aka Alpha-6000) in PC Remote mode
> +	0994  ILCE-6000 (aka Alpha-6000) in charging mode
> +	09cc  DualShock 4 [CUH-ZCT2x]
> +	0ba0  Dualshock4 Wireless Adaptor
> +	0bb5  Headset MDR-1000X
> +	0c02  ILCE-7M3 [A7III] in Mass Storage mode
> +	0c03  ILCE-7M3 [A7III] in MTP mode
> +	0c34  ILCE-7M3 [A7III] in PC Remote mode
> +	0c7f  WH-CH700N [Wireless Noise-Canceling Headphones]
> +	0cd3  WH-1000XM3 [Wireless Noise-Canceling Headphones]
> +	0cda  PlayStation Classic controller
> +	0ce0  WF-1000XM3 [Wireless Noise-Canceling Headphones]
> +	0ce6  DualSense wireless controller (PS5)
> +	0cf0  MRW-G1
> +	0d58  WH-1000XM4 [Wireless Noise-Canceling Headphones]
> +	1000  Wireless Buzz! Receiver
> +054d  Try Corp.
> +054e  Proside Corp.
> +054f  WYSE Technology Taiwan
> +0550  Fuji Xerox Co., Ltd
> +	0002  InkJet Color Printer
> +	0004  InkJet Color Printer
> +	0005  InkJet Color Printer
> +	000b  Workcentre 24
> +	014e  CM215b Printer
> +	0165  DocuPrint M215b
> +0551  CompuTrend Systems, Inc.
> +0552  Philips Monitors
> +0553  STMicroelectronics Imaging Division (VLSI Vision)
> +	0001  TerraCAM
> +	0002  CPiA Webcam
> +	0100  STV0672 Camera
> +	0140  Video Camera
> +	0150  CDE CAM 100
> +	0151  Digital Blue QX5 Microscope
> +	0200  Dual-mode Camera0
> +	0201  Dual-mode Camera1
> +	0202  STV0680 Camera
> +	0674  Multi-mode Camera
> +	0679  NMS Video Camera (Webcam)
> +	1002  Che-ez! Splash
> +0554  Dictaphone Corp.
> +0555  ANAM S&T Co., Ltd
> +0556  Asahi Kasei Microsystems Co., Ltd
> +	0001  AK5370 I/F A/D Converter
> +0557  ATEN International Co., Ltd
> +	2001  UC-1284 Printer Port
> +	2002  10Mbps Ethernet [klsi]
> +	2004  UC-100KM PS/2 Mouse and Keyboard adapter
> +	2006  UC-1284B Printer Port
> +	2007  UC-110T 100Mbps Ethernet [pegasus]
> +	2008  UC-232A Serial Port [pl2303]
> +	2009  UC-210T Ethernet
> +	2011  UC-2324 4xSerial Ports [mos7840]
> +	2202  CS124U Miniview II KVM Switch
> +	2212  Keyboard/Mouse
> +	2213  CS682 2-Port USB 2.0 DVI KVM Switch
> +	2221  Winbond Hermon
> +	2404  4-port switch
> +	2419  Virtual mouse/keyboard device
> +	2600  IDE Bridge
> +	2701  CE700A KVM Extender
> +	4000  DSB-650 10Mbps Ethernet [klsi]
> +	7000  Hub
> +	7820  UC-2322 2xSerial Ports [mos7820]
> +	8021  Hub
> +0558  Truevision, Inc.
> +	1009  GW Instek GDS-1000 Oscilloscope
> +	100a  GW Instek GDS-1000A Oscilloscope
> +	2009  GW Instek GDS-2000 Oscilloscope
> +0559  Cadence Design Systems, Inc.
> +055a  Kenwood USA
> +055b  KnowledgeTek, Inc.
> +055c  Proton Electronic Ind.
> +055d  Samsung Electro-Mechanics Co.
> +	0001  Keyboard
> +	0bb1  Bluetooth Device
> +	1030  Optical Wheel Mouse (OMS3CB/OMGB30)
> +	1031  Optical Wheel Mouse (OMA3CB/OMGI30)
> +	1040  Mouse HID Device
> +	1050  E-Mail Optical Wheel Mouse (OMS3CE)
> +	1080  Optical Wheel Mouse (OMS3CH)
> +	2020  Floppy Disk Drive
> +	6780  Keyboard V1
> +	6781  Keyboard Mouse
> +	8001  E.M. Hub
> +	9000  AnyCam [pwc]
> +	9001  MPC-C30 AnyCam Premium for Notebooks [pwc]
> +	a000  SWL-2100U
> +	a010  WLAN Adapter(SWL-2300)
> +	a011  Boot Device
> +	a012  WLAN Adapter(SWL-2300)
> +	a013  WLAN Adapter(SWL-2350)
> +	a230  Boot Device
> +	b000  11Mbps WLAN Mini Adapter
> +	b230  Netopia 802.11b WLAN Adapter
> +	b231  LG Wireless LAN 11b Adapter
> +055e  CTX Opto-Electronics Corp.
> +055f  Mustek Systems, Inc.
> +	0001  ScanExpress 1200 CU
> +	0002  ScanExpress 600 CU
> +	0003  ScanExpress 1200 USB
> +	0006  ScanExpress 1200 UB
> +	0007  ScanExpress 1200 USB Plus
> +	0008  ScanExpress 1200 CU Plus
> +	0010  BearPaw 1200F
> +	0210  ScanExpress A3 USB
> +	0218  BearPaw 2400 TA
> +	0219  BearPaw 2400 TA Plus
> +	021a  BearPaw 2448 TA Plus
> +	021b  BearPaw 1200 CU Plus
> +	021c  BearPaw 1200 CU Plus
> +	021d  BearPaw 2400 CU Plus
> +	021e  BearPaw 1200 TA/CS
> +	021f  SNAPSCAN e22
> +	0400  BearPaw 2400 TA Pro
> +	0401  P 3600 A3 Pro
> +	0408  BearPaw 2448 CU Pro
> +	0409  BearPaw 2448 TA Pro
> +	040b  ScanExpress A3 USB 1200 PRO
> +	0501  ScanExpress A3 2400 Pro
> +	0873  ScanExpress 600 USB
> +	1000  BearPaw 4800 TA Pro
> +	a350  gSmart 350 Camera
> +	a800  MDC 800 Camera
> +	b500  MDC 3000 Camera
> +	c005  PC CAM 300A
> +	c200  gSmart 300
> +	c211  Kowa Bs888e Microcamera
> +	c220  gSmart mini
> +	c230  Digicam 330K
> +	c232  MDC3500 Camera
> +	c360  DV 4000 Camera
> +	c420  gSmart mini 2 Camera
> +	c430  gSmart LCD 2 Camera
> +	c440  DV 3000 Camera
> +	c520  gSmart mini 3 Camera
> +	c530  gSmart LCD 2 Camera
> +	c540  gSmart D30 Camera
> +	c630  MDC 4000 Camera
> +	c631  MDC 4000 Camera
> +	c650  MDC 5500Z Camera
> +	d001  WCam 300
> +	d003  WCam 300A
> +	d004  WCam 300AN
> +0560  Interface Corp.
> +0561  Oasis Design, Inc.
> +0562  Telex Communications, Inc.
> +	0001  Enhanced Microphone
> +	0002  Telex Microphone
> +0563  Immersion Corp.
> +0564  Kodak Digital Product Center, Japan Ltd. (formerly Chinon Industries Inc.)
> +0565  Peracom Networks, Inc.
> +	0001  Serial Port [etek]
> +	0002  Enet Ethernet [klsi]
> +	0003  @Home Networks Ethernet [klsi]
> +	0005  Enet2 Ethernet [klsi]
> +	0041  Peracom Remote NDIS Ethernet Adapter
> +0566  Monterey International Corp.
> +	0110  ViewMate Desktop Mouse CC2201
> +	1001  ViewMate Desktop Mouse CC2201
> +	1002  ViewMate Desktop Mouse CC2201
> +	1003  ViewMate Desktop Mouse CC2201
> +	1004  ViewMate Desktop Mouse CC2201
> +	1005  ViewMate Desktop Mouse CC2201
> +	1006  ViewMate Desktop Mouse CC2201
> +	1007  ViewMate Desktop Mouse CC2201
> +	2800  MIC K/B
> +	2801  MIC K/B Mouse
> +	2802  Kbd Hub
> +	3002  Keyboard
> +	3004  Genius KB-29E
> +	3013  BakkerElkhuizen Wired Keyboard S-board 840 Design
> +	3020  BakkerElkhuizen Wired Keyboard S-board 840 Design USB-Hub
> +	3027  Sun-Flex ProTouch
> +	3107  Keyboard
> +	3132  Optical mouse M-DY4DR / M-DY6DR
> +	4006  FID 638 Mouse (Sun Microsystems)
> +0567  Xyratex International, Ltd
> +0568  Quartz Ingenierie
> +0569  SegaSoft
> +056a  Wacom Co., Ltd
> +	0000  PenPartner
> +	0001  PenPartner 4x5
> +	0002  PenPartner 6x8
> +	0003  PTU-600 [Cintiq Partner]
> +	0010  ET-0405 [Graphire]
> +	0011  ET-0405A [Graphire2 (4x5)]
> +	0012  ET-0507A [Graphire2 (5x7)]
> +	0013  CTE-430 [Graphire3 (4x5)]
> +	0014  CTE-630 [Graphire3 (6x8)]
> +	0015  CTE-440 [Graphire4 (4x5)]
> +	0016  CTE-640 [Graphire4 (6x8)]
> +	0017  CTE-450 [Bamboo Fun (small)]
> +	0018  CTE-650 [Bamboo Fun (medium)]
> +	0019  CTE-631 [Bamboo One]
> +	0020  GD-0405 [Intuos (4x5)]
> +	0021  GD-0608 [Intuos (6x8)]
> +	0022  GD-0912 [Intuos (9x12)]
> +	0023  GD-1212 [Intuos (12x12)]
> +	0024  GD-1218 [Intuos (12x18)]
> +	0026  PTH-450 [Intuos5 touch (S)]
> +	0027  PTH-650 [Intuos5 touch (M)]
> +	0028  PTH-850 [Intuos5 touch (L)]
> +	0029  PTK-450 [Intuos5 (S)]
> +	002a  PTK-650 [Intuos5 (M)]
> +	0030  PL400
> +	0031  PL500
> +	0032  PL600
> +	0033  PL600SX
> +	0034  PL550
> +	0035  PL800
> +	0037  PL700
> +	0038  PL510
> +	0039  DTU-710
> +	003a  DTI-520
> +	003b  Integrated Hub
> +	003f  DTZ-2100 [Cintiq 21UX]
> +	0041  XD-0405-U [Intuos2 (4x5)]
> +	0042  XD-0608-U [Intuos2 (6x8)]
> +	0043  XD-0912-U [Intuos2 (9x12)]
> +	0044  XD-1212-U [Intuos2 (12x12)]
> +	0045  XD-1218-U [Intuos2 (12x18)]
> +	0047  Intuos2 6x8
> +	0057  DTK-2241
> +	0059  DTH-2242 tablet
> +	005b  DTH-2200 [Cintiq 22HD Touch] tablet
> +	005d  DTH-2242 touchscreen
> +	005e  DTH-2200 [Cintiq 22HD Touch] touchscreen
> +	0060  FT-0405 [Volito, PenPartner, PenStation (4x5)]
> +	0061  FT-0203 [Volito, PenPartner, PenStation (2x3)]
> +	0062  CTF-420 [Volito2]
> +	0063  CTF-220 [BizTablet]
> +	0064  CTF-221 [PenPartner2]
> +	0065  MTE-450 [Bamboo]
> +	0069  CTF-430 [Bamboo One]
> +	006a  CTE-460 [Bamboo One Pen (S)]
> +	006b  CTE-660 [Bamboo One Pen (M)]
> +	0081  CTE-630BT [Graphire Wireless (6x8)]
> +	0084  ACK-40401 [Wireless Accessory Kit]
> +	0090  TPC90
> +	0093  TPC93
> +	0097  TPC97
> +	009a  TPC9A
> +	00a2  STU-300B [LCD signature pad]
> +	00b0  PTZ-430 [Intuos3 (4x5)]
> +	00b1  PTZ-630 [Intuos3 (6x8)]
> +	00b2  PTZ-930 [Intuos3 (9x12)]
> +	00b3  PTZ-1230 [Intuos3 (12x12)]
> +	00b4  PTZ-1231W [Intuos3 (12x19)]
> +	00b5  PTZ-631W [Intuos3 (6x11)]
> +	00b7  PTZ-431W [Intuos3 (4x6)]
> +	00b8  PTK-440 [Intuos4 (4x6)]
> +	00b9  PTK-640 [Intuos4 (6x9)]
> +	00ba  PTK-840 [Intuos4 (8x13)]
> +	00bb  PTK-1240 [Intuos4 (12x19)]
> +	00c0  DTF-521
> +	00c4  DTF-720
> +	00c5  DTZ-2000W [Cintiq 20WSX]
> +	00c6  DTZ-1200W [Cintiq 12WX]
> +	00c7  DTU-1931
> +	00cc  DTK-2100 [Cintiq 21UX]
> +	00ce  DTU-2231
> +	00d0  CTT-460 [Bamboo Touch]
> +	00d1  CTH-460 [Bamboo Pen & Touch]
> +	00d2  CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)]
> +	00d3  CTH-661 [Bamboo Fun/Comic Pen & Touch (M)]
> +	00d4  CTL-460 [Bamboo Pen (S)]
> +	00d5  CTL-660 [Bamboo Pen (M)]
> +	00d6  CTH-460 [Bamboo Pen & Touch]
> +	00d7  CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)]
> +	00d8  CTH-661 [Bamboo Fun/Comic Pen & Touch (M)]
> +	00d9  CTT-460 [Bamboo Touch]
> +	00da  CTH-461SE [Bamboo Pen & Touch Special Edition (S)]
> +	00db  CTH-661SE [Bamboo Pen & Touch Special Edition (M)]
> +	00dc  CTT-470 [Bamboo Touch]
> +	00dd  CTL-470 [Bamboo Connect]
> +	00de  CTH-470 [Bamboo Fun Pen & Touch]
> +	00df  CTH-670 [Bamboo Create/Fun]
> +	00e2  TPCE2
> +	00e3  TPCE3
> +	00e5  TPCE5
> +	00e6  TPCE6
> +	00ec  TPCEC
> +	00ed  TPCED
> +	00ef  TPCEF
> +	00f0  DTU-1631
> +	00f4  DTK-2400 [Cintiq 24HD] tablet
> +	00f6  DTH-2400 [Cintiq 24HD touch] touchscreen
> +	00f8  DTH-2400 [Cintiq 24HD touch] tablet
> +	00f9  DTK-2200 [Cintiq 22HD] hub
> +	00fa  DTK-2200 [Cintiq 22HD] tablet
> +	00fb  DTU-1031
> +	0100  TPC100
> +	0101  TPC101
> +	010d  TPC10D
> +	010e  TPC10E
> +	010f  TPC10F
> +	0116  TPC116
> +	012c  TPC12C
> +	0221  MDP-123 [Inkling]
> +	0300  CTL-471 [Bamboo Splash, One by Wacom (S)]
> +	0301  CTL-671 [One by Wacom (M)]
> +	0302  CTH-480 [Intuos Pen & Touch (S)]
> +	0303  CTH-680 [Intuos Pen & Touch (M)]
> +	0304  DTK-1300 [Cintiq 13HD]
> +	0307  DTH-A1300 [Cintiq Companion Hybrid] tablet
> +	0309  DTH-A1300 [Cintiq Companion Hybrid] touchscreen
> +	030e  CTL-480 [Intuos Pen (S)]
> +	0314  PTH-451 [Intuos pro (S)]
> +	0315  PTH-651 [Intuos pro (M)]
> +	0317  PTH-851 [Intuos pro (L)]
> +	0318  CTH-301 [Bamboo]
> +	0319  CTH-300 [Bamboo Pad wireless]
> +	0323  CTL-680 [Intuos Pen (M)]
> +	032a  DTK-2700 [Cintiq 27QHD]
> +	032b  DTH-2700 [Cintiq 27QHD touch] tablet
> +	032c  DTH-2700 [Cintiq 27QHD touch] touchscreen
> +	032f  DTU-1031X
> +	0331  ACK-411050 [ExpressKey Remote]
> +	0333  DTH-1300 [Cintiq 13HD Touch] tablet
> +	0335  DTH-1300 [Cintiq 13HD Touch] touchscreen
> +	0336  DTU-1141
> +	033b  CTL-490 [Intuos Draw (S)]
> +	033c  CTH-490 [Intuos Art/Photo/Comic (S)]
> +	033d  CTL-690 [Intuos Draw (M)]
> +	033e  CTH-690 [Intuos Art (M)]
> +	0343  DTK-1651
> +	0347  DTH-W1620 [MobileStudio Pro 16] internal hub
> +	0348  DTH-W1620 [MobileStudio Pro 16] external hub
> +	034a  DTH-W1320 [MobileStudio Pro 13] touchscreen
> +	034b  DTH-W1620 [MobileStudio Pro 16] touchscreen
> +	034d  DTH-W1320 [MobileStudio Pro 13] tablet
> +	034e  DTH-W1620 [MobileStudio Pro 16] tablet
> +	034f  DTH-1320 [Cintiq Pro 13] tablet
> +	0350  DTH-1620 [Cintiq Pro 16] tablet
> +	0351  DTH-2420 [Cintiq Pro 24 PT] tablet
> +	0352  DTH-3220 [Cintiq Pro 32] tablet
> +	0353  DTH-1320 [Cintiq Pro 13] touchscreen
> +	0354  DTH-1620 [Cintiq Pro 16] touchscreen
> +	0355  DTH-2420 [Cintiq Pro 24 PT] touchscreen
> +	0356  DTH-3220 [Cintiq Pro 32] touchscreen
> +	0357  PTH-660 [Intuos Pro (M)]
> +	0358  PTH-860 [Intuos Pro (L)]
> +	0359  DTU-1141B
> +	035a  DTH-1152 tablet
> +	0368  DTH-1152 touchscreen
> +	0374  CTL-4100 [Intuos (S)]
> +	0375  CTL-6100 [Intuos (M)]
> +	0376  CTL-4100WL [Intuos BT (S)]
> +	0378  CTL-6100WL [Intuos BT (M)]
> +	037a  CTL-472 [One by Wacom (S)]
> +	037b  CTL-672 [One by Wacom (M)]
> +	037c  DTK-2420 [Cintiq Pro 24 P]
> +	037d  DTH-2452 tablet
> +	037e  DTH-2452 touchscreen
> +	0382  DTK-2451 tablet
> +	038a  DTH-3220 [Cintiq Pro 32] internal hub
> +	038d  DTH-3220 [Cintiq Pro 32] internal hub
> +	038e  DTH-3220 [Cintiq Pro 32] external hub
> +	038f  DTH-3220 [Cintiq Pro 32] internal hub
> +	0390  DTK-1660 [Cintiq 16]
> +	0392  PTH-460 [Intuos Pro (S)]
> +	0396  DTK-1660E
> +	0398  DTH-W1320 [MobileStudio Pro 13] tablet
> +	0399  DTH-W1620 [MobileStudio Pro 16] tablet
> +	039a  DTH-W1320 [MobileStudio Pro 13] touchscreen
> +	039b  DTH-W1620 [MobileStudio Pro 16] touchscreen
> +	039c  DTH-W1320 [MobileStudio Pro 16] external hub
> +	039d  DTH-W1320 [MobileStudio Pro 16] internal hub
> +	03aa  DTH-W1620 [MobileStudio Pro 16] tablet
> +	03ac  DTH-W1620 [MobileStudio Pro 16] touchscreen
> +	03c5  CTL-4100WL [Intuos BT (S)]
> +	03c7  CTL-6100WL [Intuos BT (M)]
> +	0400  PenPartner 4x5
> +	4001  TPC4001
> +	4004  TPC4004
> +	4850  PenPartner 6x8
> +	5000  TPC5000
> +	5002  TPC5002
> +	5010  TPC5010
> +056b  Decicon, Inc.
> +056c  eTEK Labs
> +	0006  KwikLink Host-Host Connector
> +	8007  Kwik232 Serial Port
> +	8100  KwikLink Host-Host Connector
> +	8101  KwikLink USB-USB Bridge
> +056d  EIZO Corp.
> +	0000  Hub
> +	0001  Monitor
> +	0002  HID Monitor Controls
> +	0003  Device Bay Controller
> +	4000  FlexScan EV3237
> +	4001  Monitor
> +	4002  USB HID Monitor
> +	4014  FlexScan EV2750
> +	4026  FlexScan EV2451
> +	4027  FlexScan EV2456
> +	4036  FlexScan EV2785
> +	4037  FlexScan EV3285
> +	4044  FlexScan EV2457
> +	4059  FlexScan EV2760
> +	405b  FlexScan EV2460
> +	405f  FlexScan EV2795
> +	4065  FlexScan EV3895
> +056e  Elecom Co., Ltd
> +	0002  29UO Mouse
> +	0057  Micro Grast Pop M-PGDL
> +	005c  Micro Grast Pop M-PG2DL
> +	005d  Micro Grast Fit M-FGDL
> +	005e  Micro Grast Fit M-FG2DL
> +	0062  Optical mouse M-D18DR
> +	0063  Laser mouse M-SODL
> +	0069  Laser mouse M-GE1UL
> +	0071  Laser mouse M-GE3DL
> +	0072  Laser mouse M-LS6UL
> +	0073  Laser mouse M-LS7UL
> +	0074  Optical mouse M-FW1UL
> +	0075  Laser mouse M-FW2DL
> +	0077  Laser mouse M-LY2UL
> +	0079  Laser mouse M-D21DL
> +	007b  Laser mouse M-D20DR
> +	007c  Laser Bluetooth mouse M-BT5BL
> +	007e  Option mouse M-M8UR
> +	007f  Option mouse M-M9UR
> +	0081  Option mouse M-DY6DR
> +	0082  Laser mouse M-D22DR
> +	0088  Micro Grast2 Bit M-BG3DL
> +	0089  Micro Grast2 Pop M-PG3DL
> +	008c  M-NE3DL Mouse
> +	008d  ORIME M-NE4DR
> +	008f  M-BT8BL Bluetooth Mouse
> +	0092  Wireless BlueLED Mouse (M-BL2DB)
> +	009c  IR Mouse M-IR02DR
> +	009d  IR Mouse M-IR03DR
> +	009f  BlueLED Mouse M-HS1DB
> +	00a1  IR Mouse M-IR05DR
> +	00a4  Blue LED Mouse M-BL06DB
> +	00a5  M-NV1BR Bluetooth Mouse
> +	00a7  Blue LED Mouse M-BL08DB
> +	00a8  M-BL09DB Mouse
> +	00a9  M-BL10UB Mouse
> +	00aa  M-BL11DB Mouse
> +	00ac  M-A-BL01UL / M-BL15DB Mouse
> +	00b4  Track on Glass Mouse M-TG02DL
> +	00b5  Track on Glass Mouse M-TG03UL
> +	00b6  Track on Glass Mouse M-TG04DL
> +	00b8  M-A-BL01UL or M-ASKL2 Mouse
> +	00b9  M-A-BL02DB or M-ASKL Mouse
> +	00cb  M-BL21DB Mouse
> +	00cd  M-XG1UB Mouse
> +	00ce  M-XG1DB Mouse
> +	00cf  M-XG1BB Bluetooth Mouse
> +	00d0  M-XG2UB Mouse
> +	00d1  M-XG2DB Mouse
> +	00d2  M-XG2BB Bluetooth Mouse
> +	00d3  M-XG3DL Mouse
> +	00d4  M-LS11DL Mouse
> +	00da  M-XG4UB Mouse
> +	00db  M-XG4DB Mouse
> +	00dc  M-XG4BB Bluetooth Mouse
> +	00dd  M-LS12UL Mouse
> +	00de  M-LS13UL Mouse
> +	00df  M-BL22DB Mouse
> +	00e1  M-WK01DB or M-A-BL04DB
> +	00e2  M-A-BL03DB
> +	00e3  M-XGx10UB
> +	00e4  M-XGx10DB
> +	00e5  M-XGx10BB
> +	00e6  M-XGx20DL or M-XGx20DB UltimateLaser Mouse
> +	00f1  M-XT1DRBK USB EX-G Wireless Optical TrackBall
> +	00f2  M-XT1URBK EX-G Optical Trackball
> +	00f3  M-BL23DB
> +	00f4  M-BT13BL LBT-UAN05C2
> +	00f7  M-KN1DB
> +	00f8  M-BL22DB Mouse (other version)
> +	00f9  M-XT2URBK EX-G Optical TrackBall
> +	00fa  M-XT2DRBK EX-G Wireless Optical TrackBall
> +	00fb  M-XT3URBK EX-G Optical TrackBall
> +	00fc  M-XT3DRBK EX-G Wireless Optical TrackBall
> +	00fd  M-XT4DRBK EX-G Wireless Optical TrackBall
> +	00fe  M-DT1URBK or M-DT2URBK DEFT Optical TrackBall
> +	00ff  M-DT1DRBK or M-DT2DRBK DEFT Wireless Optical Mouse
> +	0101  M-BL25UBS
> +	0103  M-BT16BBS
> +	0104  M-BL26UBC
> +	0105  M-BL26DBC
> +	0107  M-LS15UL
> +	0108  M-LS15DL
> +	0109  M-LS16UL Mouse
> +	010a  M-LS16DL / M-KN2DLS
> +	010b  M-BL21DB Mouse
> +	010c  M-HT1URBK HUGE Optical TrackBall
> +	010d  M-HT1DRBK HUGE Wireless Optical TrackBall
> +	010e  M-KS1DBS / M-FPG3DBS
> +	010f  M-FBG3DB
> +	0115  M-BT13BL
> +	0121  M-ED01DB
> +	0122  M-NK01DB
> +	0124  Dual connect Mouse M-DC01MB Bluetooth
> +	0128  TrackBall Mouse M-XPT1MR Wired
> +	0129  TrackBall Mouse M-XPT1MR Wireless
> +	0130  TrackBall Mouse M-XPT1MR Bluetooth
> +	0131  TrackBall Mouse M-DPT1MR Wired
> +	0132  TrackBall Mouse M-DPT1MR Wireless
> +	0133  TrackBall Mouse M-DPT1MR Bluetooth
> +	0136  M-BT20BB
> +	0137  BlueTooth 4.0 Mouse M-BT21BB
> +	0138  M-A-BL07DB
> +	0140  M-G01UR
> +	0141  M-Y9UB
> +	0142  M-DY13DB
> +	0144  M-FBL01DB
> +	1055  TK-DCP03 WIRED
> +	1057  TK-DCP03 BT
> +	2003  JC-U3613M
> +	2004  JC-U3613M
> +	200c  LD-USB/TX
> +	200f  JC-U4013S Gamepad
> +	2012  JC-U4013S Gamepad
> +	4002  Laneed 100Mbps Ethernet LD-USB/TX [pegasus]
> +	4005  LD-USBL/TX
> +	400b  LD-USB/TX
> +	4010  LD-USB20
> +	5003  UC-SGT
> +	5004  UC-SGT
> +	6008  Flash Disk
> +	abc1  LD-USB/TX
> +056f  Korea Data Systems Co., Ltd
> +	cd00  CDM-751 CD organizer
> +0570  Epson America
> +0571  Interex, Inc.
> +	0002  echoFX InterView Lite
> +0572  Conexant Systems (Rockwell), Inc.
> +	0001  Ezcam II Webcam
> +	0002  Ezcam II Webcam
> +	0040  Wondereye CP-115 Webcam
> +	0041  Webcam Notebook
> +	0042  Webcam Notebook
> +	0320  DVBSky T330 DVB-T2/C tuner
> +	1232  V.90 modem
> +	1234  Typhoon Redfun Modem V90 56k
> +	1252  HCF V90 Data Fax Voice Modem
> +	1253  Zoom V.92 Faxmodem
> +	1300  SoftK56 Data Fax Voice CARP
> +	1301  Modem Enumerator
> +	1328  TrendNet TFM-561 modem
> +	1804  HP Dock Audio
> +	2000  SoftGate 802.11 Adapter
> +	2002  SoftGate 802.11 Adapter
> +	262a  tm5600 Video & Audio Grabber Capture
> +	680c  DVBSky T680C DVB-T2/C tuner
> +	6831  DVBSky S960 DVB-S2 tuner
> +	8390  WinFast PalmTop/Novo TV Video
> +	8392  WinFast PalmTop/Novo TV Video
> +	960c  DVBSky S960C DVB-S2 tuner
> +	c686  Geniatech T220A DVB-T2 TV Stick
> +	c688  Geniatech T230 DVB-T2 TV Stick
> +	cafc  CX861xx ROM Boot Loader
> +	cafd  CX82310 ROM Boot Loader
> +	cafe  AccessRunner ADSL Modem
> +	cb00  ADSL Modem
> +	cb01  ADSL Modem
> +	cb06  StarModem Network Interface
> +0573  Zoran Co. Personal Media Division (Nogatech)
> +	0003  USBGear USBG-V1
> +	0400  D-Link V100
> +	0600  Dazzle USBVision (1006)
> +	1300  leadtek USBVision (1006)
> +	2000  X10 va10a Wireless Camera
> +	2001  Dazzle EmMe (2001)
> +	2101  Zoran Co. PMD (Nogatech) AV-grabber Manhattan
> +	2d00  Osprey 50
> +	2d01  Hauppauge USB-Live Model 600
> +	3000  Dazzle MicroCam (NTSC)
> +	3001  Dazzle MicroCam (PAL)
> +	4000  Nogatech TV! (NTSC)
> +	4001  Nogatech TV! (PAL)
> +	4002  Nogatech TV! (PAL-I-)
> +	4003  Nogatech TV! (MF-)
> +	4008  Nogatech TV! (NTSC) (T)
> +	4009  Nogatech TV! (PAL) (T)
> +	4010  Nogatech TV! (NTSC) (A)
> +	4100  USB-TV FM (NTSC)
> +	4110  PNY USB-TV (NTSC) FM
> +	4400  Nogatech TV! Pro (NTSC)
> +	4401  Nogatech TV! Pro (PAL)
> +	4450  PixelView PlayTv-USB PRO (PAL) FM
> +	4451  Nogatech TV! Pro (PAL+)
> +	4452  Nogatech TV! Pro (PAL-I+)
> +	4500  Nogatech TV! Pro (NTSC)
> +	4501  Nogatech TV! Pro (PAL)
> +	4550  ZTV ZT-721 2.4GHz A/V Receiver
> +	4551  Dazzle TV! Pro Audio (P+)
> +	4d00  Hauppauge WinTV-USB USA
> +	4d01  Hauppauge WinTV-USB
> +	4d02  Hauppauge WinTV-USB UK
> +	4d03  Hauppauge WinTV-USB France
> +	4d04  Hauppauge WinTV (PAL D/K)
> +	4d10  Hauppauge WinTV-USB with FM USA radio
> +	4d11  Hauppauge WinTV-USB (PAL) with FM radio
> +	4d12  Hauppauge WinTV-USB UK with FM Radio
> +	4d14  Hauppauge WinTV (PAL D/K FM)
> +	4d20  Hauppauge WinTV-USB II (PAL) with FM radio
> +	4d21  Hauppauge WinTV-USB II (PAL)
> +	4d22  Hauppauge WinTV-USB II (PAL) Model 566
> +	4d23  Hauppauge WinTV-USB France 4D23
> +	4d24  Hauppauge WinTV Pro (PAL D/K)
> +	4d25  Hauppauge WinTV-USB Model 40209 rev B234
> +	4d26  Hauppauge WinTV-USB Model 40209 rev B243
> +	4d27  Hauppauge WinTV-USB Model 40204 Rev B281
> +	4d28  Hauppauge WinTV-USB Model 40204 rev B283
> +	4d29  Hauppauge WinTV-USB Model 40205 rev B298
> +	4d2a  Hauppague WinTV-USB Model 602 Rev B285
> +	4d2b  Hauppague WinTV-USB Model 602 Rev B282
> +	4d2c  Hauppauge WinTV Pro (PAL/SECAM)
> +	4d30  Hauppauge WinTV-USB FM Model 40211 Rev B123
> +	4d31  Hauppauge WinTV-USB III (PAL) with FM radio Model 568
> +	4d32  Hauppauge WinTV-USB III (PAL) FM Model 573
> +	4d34  Hauppauge WinTV Pro (PAL D/K FM)
> +	4d35  Hauppauge WinTV-USB III (PAL) FM Model 597
> +	4d36  Hauppauge WinTV Pro (PAL B/G FM)
> +	4d37  Hauppauge WinTV-USB Model 40219 rev E189
> +	4d38  Hauppauge WinTV Pro (NTSC FM)
> +0574  City University of Hong Kong
> +0575  Philips Creative Display Solutions
> +0576  BAFO/Quality Computer Accessories
> +0577  ELSA
> +0578  Intrinsix Corp.
> +0579  GVC Corp.
> +057a  Samsung Electronics America
> +057b  Y-E Data, Inc.
> +	0000  FlashBuster-U Floppy
> +	0001  Tri-Media Reader Floppy
> +	0006  Tri-Media Reader Card Reader
> +	0010  Memory Stick Reader Writer
> +	0020  HEXA Media Drive 6-in-1 Card Reader Writer
> +	0030  Memory Card Viewer (TV)
> +057c  AVM GmbH
> +	0b00  ISDN-Controller B1 Family
> +	0c00  ISDN-Controller FRITZ!Card
> +	1000  ISDN-Controller FRITZ!Card v2.0
> +	1900  ISDN-Controller FRITZ!Card v2.1
> +	2000  ISDN-Connector FRITZ!X
> +	2200  BlueFRITZ!
> +	2300  Teledat X130 DSL
> +	2800  Teledat 2a/b / X120 / NetXXL ISDN Terminal Adapter
> +	3200  Teledat X130 DSL
> +	3500  FRITZ!Card DSL SL
> +	3701  FRITZ!Box SL
> +	3702  FRITZ!Box
> +	3800  BlueFRITZ! Bluetooth Stick
> +	3a00  FRITZ!Box Fon
> +	3c00  FRITZ!Box WLAN
> +	3d00  FRITZ!Box Fon WLAN 7050/7140/7170/IAD3331
> +	3e01  FRITZ!Box (Annex A)
> +	4001  FRITZ!Box Fon (Annex A)
> +	4101  FRITZ!Box WLAN (Annex A)
> +	4201  FRITZ!Box Fon WLAN (Annex A)
> +	4601  Eumex 5520PC (WinXP/2000)
> +	4602  Eumex 400 (WinXP/2000)
> +	4701  AVM FRITZ!Box Fon ata
> +	5401  Eumex 300 IP
> +	5601  AVM Fritz!WLAN [Texas Instruments TNETW1450]
> +	6201  AVM Fritz!WLAN v1.1 [Texas Instruments TNETW1450]
> +	62ff  AVM Fritz!WLAN USB (in CD-ROM-mode)
> +	8401  Fritz!WLAN N [Atheros AR9001U]
> +	8402  Fritz!WLAN N 2.4 [Atheros AR9001U]
> +	8403  Fritz!WLAN N v2 [Atheros AR9271]
> +	84ff  AVM Fritz!WLAN USB N (in CD-ROM-mode)
> +	8501  FRITZ WLAN N v2 [RT5572/rt2870.bin]
> +057d  Shark Multimedia, Inc.
> +057e  Nintendo Co., Ltd
> +	0300  USB-EXI Adapter (GCP-2000)
> +	0304  RVT-H Reader
> +	0305  Broadcom BCM2045A Bluetooth Radio [Nintendo Wii]
> +	0306  Wii Remote Controller RVL-003
> +	0337  Wii U GameCube Controller Adapter
> +	2000  Switch
> +	2006  Joy-Con L
> +	2007  Joy-Con R
> +	2009  Switch Pro Controller
> +	200e  Joy-Con Charging Grip
> +	3000  SDK Debugger
> +057f  QuickShot, Ltd
> +	6238  USB StrikePad
> +0580  Denron, Inc.
> +0581  Racal Data Group
> +	0107  Tera Barcode Scanner 2.4 GHz Receiver
> +	020c  Tera 2D Barcode Scanner EVHK0012
> +0582  Roland Corp.
> +	0000  UA-100(G)
> +	0002  UM-4/MPU-64 MIDI Interface
> +	0003  SoundCanvas SC-8850
> +	0004  U-8
> +	0005  UM-2(C/EX)
> +	0007  SoundCanvas SC-8820
> +	0008  PC-300
> +	0009  UM-1(E/S/X)
> +	000b  SK-500
> +	000c  SC-D70
> +	0010  EDIROL UA-5
> +	0011  Edirol UA-5 Sound Capture
> +	0012  XV-5050
> +	0013  XV-5050
> +	0014  EDIROL UM-880 MIDI I/F (native)
> +	0015  EDIROL UM-880 MIDI I/F (generic)
> +	0016  EDIROL SD-90
> +	0017  EDIROL SD-90
> +	0018  UA-1A
> +	001b  MMP-2
> +	001c  MMP-2
> +	001d  V-SYNTH
> +	001e  V-SYNTH
> +	0023  EDIROL UM-550
> +	0024  EDIROL UM-550
> +	0025  EDIROL UA-20
> +	0026  EDIROL UA-20
> +	0027  EDIROL SD-20
> +	0028  EDIROL SD-20
> +	0029  EDIROL SD-80
> +	002a  EDIROL SD-80
> +	002b  EDIROL UA-700
> +	002c  EDIROL UA-700
> +	002d  XV-2020 Synthesizer
> +	002e  XV-2020 Synthesizer
> +	002f  VariOS
> +	0030  VariOS
> +	0033  EDIROL PCR
> +	0034  EDIROL PCR
> +	0035  M-1000
> +	0037  Digital Piano
> +	0038  Digital Piano
> +	003b  BOSS GS-10
> +	003c  BOSS GS-10
> +	0040  GI-20
> +	0041  GI-20
> +	0042  RS-70
> +	0043  RS-70
> +	0044  EDIROL UA-1000
> +	0047  EDIROL UR-80 WAVE
> +	0048  EDIROL UR-80 MIDI
> +	0049  EDIROL UR-80 WAVE
> +	004a  EDIROL UR-80 MIDI
> +	004b  EDIROL M-100FX
> +	004c  EDIROL PCR-A WAVE
> +	004d  EDIROL PCR-A MIDI
> +	004e  EDIROL PCR-A WAVE
> +	004f  EDIROL PCR-A MIDI
> +	0050  EDIROL UA-3FX
> +	0052  EDIROL UM-1SX
> +	0054  Digital Piano
> +	0060  EXR Series
> +	0064  EDIROL PCR-1 WAVE
> +	0065  EDIROL PCR-1 MIDI
> +	0066  EDIROL PCR-1 WAVE
> +	0067  EDIROL PCR-1 MIDI
> +	006a  SP-606
> +	006b  SP-606
> +	006d  FANTOM-X
> +	006e  FANTOM-X
> +	0073  EDIROL UA-25
> +	0074  EDIROL UA-25
> +	0075  BOSS DR-880
> +	0076  BOSS DR-880
> +	007a  RD
> +	007b  RD
> +	007d  EDIROL UA-101
> +	0080  G-70
> +	0081  G-70
> +	0084  V-SYNTH XT
> +	0089  BOSS GT-PRO
> +	008b  EDIROL PC-50
> +	008c  EDIROL PC-50
> +	008d  EDIROL UA-101 USB1
> +	0092  EDIROL PC-80 WAVE
> +	0093  EDIROL PC-80 MIDI
> +	0096  EDIROL UA-1EX
> +	009a  EDIROL UM-3EX
> +	009d  EDIROL UM-1
> +	00a0  MD-P1
> +	00a2  Digital Piano
> +	00a3  EDIROL UA-4FX
> +	00a6  Juno-G
> +	00a9  MC-808
> +	00ad  SH-201
> +	00b2  VG-99
> +	00b3  VG-99
> +	00b7  BK-7m/VIMA JM-5/8
> +	00c2  SonicCell
> +	00c4  EDIROL M-16DX
> +	00c5  SP-555
> +	00c7  V-Synth GT
> +	00d1  Music Atelier
> +	00d3  M-380/400
> +	00da  BOSS GT-10
> +	00db  BOSS GT-10 Guitar Effects Processor
> +	00dc  BOSS GT-10B
> +	00de  Fantom G
> +	00e6  EDIROL UA-25EX (Advanced mode)
> +	00e7  EDIROL UA-25EX
> +	00e9  UA-1G
> +	00eb  VS-100
> +	00f6  GW-8/AX-Synth
> +	00f8  JUNO Series
> +	00fc  VS-700C
> +	00fd  VS-700
> +	00fe  VS-700 M1
> +	00ff  VS-700 M2
> +	0100  VS-700
> +	0101  VS-700 M2
> +	0102  VB-99
> +	0104  UM-1G
> +	0106  UM-2G
> +	0108  UM-3G
> +	0109  eBand JS-8
> +	010d  A-500S
> +	010f  A-PRO
> +	0110  A-PRO
> +	0111  GAIA SH-01
> +	0113  ME-25
> +	0114  SD-50
> +	0116  WAVE/MP3 RECORDER R-05
> +	0117  VS-20
> +	0119  OCTAPAD SPD-30
> +	011c  Lucina AX-09
> +	011e  BR-800
> +	0120  OCTA-CAPTURE
> +	0121  OCTA-CAPTURE
> +	0123  JUNO-Gi
> +	0124  M-300
> +	0127  GR-55
> +	012a  UM-ONE
> +	012b  DUO-CAPTURE
> +	012f  QUAD-CAPTURE
> +	0130  MICRO BR BR-80
> +	0132  TRI-CAPTURE
> +	0134  V-Mixer
> +	0138  Boss RC-300 (Audio mode)
> +	0139  Boss RC-300 (Storage mode)
> +	013a  JUPITER-80
> +	013e  R-26
> +	0145  SPD-SX
> +	014b  eBand JS-10
> +	014d  GT-100
> +	0150  TD-15
> +	0151  TD-11
> +	0154  JUPITER-50
> +	0156  A-Series
> +	0158  TD-30
> +	0159  DUO-CAPTURE EX
> +	015b  INTEGRA-7
> +	015d  R-88
> +	01b5  Boutique Series Synthesizer (Normal mode)
> +	01b6  Boutique Series Synthesizer (Storage mode)
> +	01df  Rubix22
> +	01e0  Rubix24
> +	01e1  Rubix44
> +	01ef  Go:KEYS MIDI
> +	0505  EDIROL UA-101
> +0583  Padix Co., Ltd (Rockfire)
> +	0001  4 Axis 12 button +POV
> +	0002  4 Axis 12 button +POV
> +	2030  RM-203 USB Nest [mode 1]
> +	2031  RM-203 USB Nest [mode 2]
> +	2032  RM-203 USB Nest [mode 3]
> +	2033  RM-203 USB Nest [mode 4]
> +	2050  PX-205 PSX Bridge
> +	205f  PSX/USB converter
> +	2060  2-axis 8-button gamepad
> +	206f  USB, 2-axis 8-button gamepad
> +	3050  QF-305u Gamepad
> +	3379  Rockfire X-Force
> +	337f  Rockfire USB RacingStar Vibra
> +	509f  USB,4-Axis,12-Button with POV
> +	5259  Rockfire USB SkyShuttle Vibra
> +	525f  USB Vibration Pad
> +	5308  USB Wireless VibrationPad
> +	5359  Rockfire USB SkyShuttle Pro
> +	535f  USB,real VibrationPad
> +	5659  Rockfire USB SkyShuttle Vibra
> +	565f  USB VibrationPad
> +	6009  Revenger
> +	600f  USB,GameBoard II
> +	6258  USB, 4-axis, 6-button joystick w/view finder
> +	6889  Windstorm Pro
> +	688f  QF-688uv Windstorm Pro Joystick
> +	7070  QF-707u Bazooka Joystick
> +	a000  MaxFire G-08XU Gamepad
> +	a015  4-Axis,16-Button with POV
> +	a019  USB, Vibration ,4-axis, 8-button joystick w/view finder
> +	a020  USB,4-Axis,10-Button with POV
> +	a021  USB,4-Axis,12-Button with POV
> +	a022  USB,4-Axis,14-Button with POV
> +	a023  USB,4-Axis,16-Button with POV
> +	a024  4axis,12button vibrition audio gamepad
> +	a025  4axis,12button vibrition audio gamepad
> +	a130  USB Wireless 2.4GHz Gamepad
> +	a131  USB Wireless 2.4GHz Joystick
> +	a132  USB Wireless 2.4GHz Wheelpad
> +	a133  USB Wireless 2.4GHz Wheel&Gamepad
> +	a202  ForceFeedbackWheel
> +	a209  MetalStrike FF
> +	b000  USB,4-Axis,12-Button with POV
> +	b001  USB,4-Axis,12-Button with POV
> +	b002  Vibration,12-Button USB Wheel
> +	b005  USB,12-Button Wheel
> +	b008  USB Wireless 2.4GHz Wheel
> +	b009  USB,12-Button  Wheel
> +	b00a  PSX/USB converter
> +	b00b  PSX/USB converter
> +	b00c  PSX/USB converter
> +	b00d  PSX/USB converter
> +	b00e  4-Axis,12-Button with POV
> +	b00f  USB,5-Axis,10-Button with POV
> +	b010  MetalStrike Pro
> +	b012  Wireless MetalStrike
> +	b013  USB,Wiress  2.4GHZ Joystick
> +	b016  USB,5-Axis,10-Button with POV
> +	b018  TW6 Wheel
> +	ff60  USB Wireless VibrationPad
> +0584  RATOC System, Inc.
> +	0008  Fujifilm MemoryCard ReaderWriter
> +	0220  U2SCX SCSI Converter
> +	0304  U2SCX-LVD (SCSI Converter)
> +	b000  REX-USB60
> +	b020  REX-USB60F
> +0585  FlashPoint Technology, Inc.
> +	0001  Digital Camera
> +	0002  Digital Camera
> +	0003  Digital Camera
> +	0004  Digital Camera
> +	0005  Digital Camera
> +	0006  Digital Camera
> +	0007  Digital Camera
> +	0008  Digital Camera
> +	0009  Digital Camera
> +	000a  Digital Camera
> +	000b  Digital Camera
> +	000c  Digital Camera
> +	000d  Digital Camera
> +	000e  Digital Camera
> +	000f  Digital Camera
> +0586  ZyXEL Communications Corp.
> +	0025  802.11b/g/n USB Wireless Network Adapter
> +	0100  omni.net
> +	0102  omni.net II ISDN TA [HFC-S]
> +	0110  omni.net Plus
> +	1000  omni.net LCD Plus - ISDN TA
> +	1500  Omni 56K Plus
> +	2011  Scorpion-980N keyboard
> +	3304  LAN Modem
> +	3309  ADSL Modem Prestige 600 series
> +	330a  ADSL Modem Interface
> +	330e  USB Broadband ADSL Modem Rev 1.10
> +	3400  ZyAIR B-220 IEEE 802.11b Adapter
> +	3401  ZyAIR G-220 802.11bg
> +	3402  ZyAIR G-220F 802.11bg
> +	3403  AG-200 802.11abg Wireless Adapter [Atheros AR5523]
> +	3407  G-200 v2 802.11bg
> +	3408  G-260 802.11bg
> +	3409  AG-225H 802.11bg
> +	340a  M-202 802.11bg
> +	340c  G-270S 802.11bg Wireless Adapter [Atheros AR5523]
> +	340f  G-220 v2 802.11bg
> +	3410  ZyAIR G-202 802.11bg
> +	3412  802.11bg
> +	3413  ZyAIR AG-225H v2 802.11bg
> +	3415  G-210H 802.11g Wireless Adapter
> +	3416  NWD-210N 802.11b/g/n-draft wireless adapter
> +	3417  NWD271N 802.11n Wireless Adapter [Atheros AR9001U-(2)NG]
> +	3418  NWD211AN 802.11abgn Wireless Adapter [Ralink RT2870]
> +	3419  G-220 v3 802.11bg Wireless Adapter [ZyDAS ZD1211B]
> +	341a  NWD-270N Wireless N-lite USB Adapter
> +	341e  NWD2105 802.11bgn Wireless Adapter [Ralink RT3070]
> +	341f  NWD2205 802.11n Wireless N Adapter [Realtek RTL8192CU]
> +	3425  NWD6505 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7610U]
> +	343e  N220 802.11bgn Wireless Adapter
> +0587  America Kotobuki Electronics Industries, Inc.
> +0588  Sapien Design
> +0589  Victron
> +058a  Nohau Corp.
> +058b  Infineon Technologies
> +	0015  Flash Loader utility
> +	001c  Flash Drive
> +	0041  Flash Loader utility
> +058c  In Focus Systems
> +	0007  Flash
> +	0008  LP130
> +	000a  LP530
> +	0010  Projector
> +	0011  Projector
> +	0012  Projector
> +	0013  Projector
> +	0014  Projector
> +	0015  Projector
> +	0016  Projector
> +	0017  Projector
> +	0018  Projector
> +	0019  Projector
> +	001a  Projector
> +	001b  Projector
> +	001c  Projector
> +	001d  Projector
> +	001e  Projector
> +	001f  Projector
> +	ffe5  IN34 Projector
> +	ffeb  Projector IN76
> +058d  Micrel Semiconductor
> +058e  Tripath Technology, Inc.
> +058f  Alcor Micro Corp.
> +	1234  Flash Drive
> +	198b  Webcam (Gigatech P-09)
> +	2412  SCard R/W CSR-145
> +	2802  Monterey Keyboard
> +	5492  Hub
> +	6232  Hi-Speed 16-in-1 Flash Card Reader/Writer
> +	6254  USB Hub
> +	6331  SD/MMC/MS Card Reader
> +	6332  Multi-Function Card Reader
> +	6335  SD/MMC Card Reader
> +	6360  Multimedia Card Reader
> +	6361  Multimedia Card Reader
> +	6362  Flash Card Reader/Writer
> +	6364  AU6477 Card Reader Controller
> +	6366  Multi Flash Reader
> +	6377  AU6375 4-LUN card reader
> +	6386  Memory Card
> +	6387  Flash Drive
> +	6390  USB 2.0-IDE bridge
> +	6391  IDE Bridge
> +	6998  AU6998 Flash Disk Controller
> +	9213  MacAlly Kbd Hub
> +	9215  AU9814 Hub
> +	9254  Hub
> +	9310  Mass Storage (UID4/5A & UID7A)
> +	9320  Micro Storage Driver for Win98
> +	9321  Micro Storage Driver for Win98
> +	9330  SD Reader
> +	9331  Micro Storage Driver for Win98
> +	9340  Delkin eFilm Reader-32
> +	9350  Delkin eFilm Reader-32
> +	9360  8-in-1 Media Card Reader
> +	9361  Multimedia Card Reader
> +	9368  Multimedia Card Reader
> +	9380  Flash Drive
> +	9381  Flash Drive
> +	9382  Acer/Sweex Flash drive
> +	9384  qdi U2Disk T209M
> +	9410  Keyboard
> +	9472  Keyboard Hub
> +	9510  ChunghwaTL USB02 Smartcard Reader
> +	9520  Watchdata W 1981
> +	9540  AU9540 Smartcard Reader
> +	9720  USB-Serial Adapter
> +	a014  Asus Integrated Webcam
> +	b002  Acer Integrated Webcam
> +0590  Omron Corp.
> +	0004  Cable Modem
> +	000b  MR56SVS
> +	0028  HJ-720IT / HEM-7080IT-E / HEM-790IT
> +	0051  FT232BM [E58CIFQ1 with FTDI USB2Serial Converter]
> +0591  Questra Consulting
> +0592  Powerware Corp.
> +	0002  UPS (X-Slot)
> +0593  Incite
> +0594  Princeton Graphic Systems
> +0595  Zoran Microelectronics, Ltd
> +	1001  Digitrex DSC-1300/DSC-2100 (mass storage mode)
> +	2002  DIGITAL STILL CAMERA 6M 4X
> +	4343  Digital Camera EX-20 DSC
> +0596  MicroTouch Systems, Inc.
> +	0001  Touchscreen
> +	0002  Touch Screen Controller
> +	0500  PCT Multitouch HID Controller
> +	0543  DELL XPS touchscreen
> +0597  Trisignal Communications
> +0598  Niigata Canotec Co., Inc.
> +0599  Brilliance Semiconductor, Inc.
> +059a  Spectrum Signal Processing, Inc.
> +059b  Iomega Corp.
> +	0001  Zip 100 (Type 1)
> +	000b  Zip 100 (Type 2)
> +	0021  Win98 Disk Controller
> +	0030  Zip 250 (Ver 1)
> +	0031  Zip 100 (Type 3)
> +	0032  Zip 250 (Ver 2)
> +	0034  Zip 100 Driver
> +	0037  Zip 750 MB
> +	0040  SCSI Bridge
> +	0042  Rev 70 GB
> +	0050  Zip CD 650 Writer
> +	0053  CDRW55292EXT CD-RW External Drive
> +	0056  External CD-RW Drive Enclosure
> +	0057  Mass Storage Device
> +	005d  Mass Storage Device
> +	005f  CDRW64892EXT3-C CD-RW 52x24x52x External Drive
> +	0060  PCMCIA PocketZip Dock
> +	0061  Varo PocketZip 40 MP3 Player
> +	006d  HipZip MP3 Player
> +	0070  eGo Portable Hard Drive
> +	007c  Ultra Max USB/1394
> +	007d  HTC42606 0G9AT00 [Iomega HDD]
> +	007e  Mini 256MB/512MB Flash Drive [IOM2D5]
> +	00db  FotoShow Zip 250 Driver
> +	0150  Mass Storage Device
> +	015d  Super DVD Writer
> +	0173  Hi-Speed USB-to-IDE Bridge Controller
> +	0174  Hi-Speed USB-to-IDE Bridge Controller
> +	0176  Hi-Speed USB-to-IDE Bridge Controller
> +	0177  Hi-Speed USB-to-IDE Bridge Controller
> +	0178  Hi-Speed USB-to-IDE Bridge Controller
> +	0179  Hi-Speed USB-to-IDE Bridge Controller
> +	017a  HDD
> +	017b  HDD/1394A
> +	017c  HDD/1394B
> +	0251  Optical
> +	0252  Optical
> +	0275  ST332082 0A
> +	0278  LDHD-UPS [Professional Desktop Hard Drive eSATA / USB2.0]
> +	027a  LPHD250-U [Portable Hard Drive Silver Series 250 Go]
> +	0470  Prestige Portable Hard Drive
> +	047a  Select Portable Hard Drive
> +	0571  Prestige Portable Hard Drive
> +	0579  eGo Portable Hard Drive
> +	1052  DVD+RW External Drive
> +059c  A-Trend Technology Co., Ltd
> +059d  Advanced Input Devices
> +059e  Intelligent Instrumentation
> +059f  LaCie, Ltd
> +	0201  StudioDrive USB2
> +	0202  StudioDrive USB2
> +	0203  StudioDrive USB2
> +	0211  PocketDrive
> +	0212  PocketDrive
> +	0213  PocketDrive USB2
> +	0323  LaCie d2 Drive USB2
> +	0421  Big Disk G465
> +	0525  BigDisk Extreme 500
> +	0641  Mobile Hard Drive
> +	0828  d2 Quadra
> +	0829  BigDisk Extreme+
> +	1004  Little Disk 20 GB
> +	100c  Rugged Triple Interface Mobile Hard Drive
> +	1010  Desktop Hard Drive
> +	1016  Desktop Hard Drive
> +	1018  Desktop Hard Drive
> +	1019  Desktop Hard Drive
> +	1021  Little Disk
> +	1027  iamaKey V2
> +	102a  Rikiki Hard Drive
> +	103d  D2
> +	1049  rikiki Harddrive
> +	1052  P'9220 Mobile Drive
> +	1053  P'9230 2TB [Porsche Design Desktop Drive 2TB]
> +	1061  Rugged USB3-FW
> +	1064  Rugged 16 and 32 GB
> +	106b  Rugged Mini HDD
> +	106d  Porsche Design Mobile Drive
> +	106e  Porsche Design Desktop Drive
> +	1094  Rugged THB
> +	1095  Rugged
> +	a601  HardDrive
> +	a602  CD R/W
> +05a0  Vetronix Corp.
> +05a1  USC Corp.
> +05a2  Fuji Film Microdevices Co., Ltd
> +05a3  ARC International
> +	8388  Marvell 88W8388 802.11a/b/g WLAN
> +	9230  Camera
> +	9320  Camera
> +	9331  Camera
> +	9332  Camera - 1080p
> +	9422  Camera
> +	9520  Camera
> +05a4  Ortek Technology, Inc.
> +	1000  WKB-1000S Wireless Ergo Keyboard with Touchpad
> +	2000  WKB-2000 Wireless Keyboard with Touchpad
> +	9720  Keyboard Mouse
> +	9722  Keyboard
> +	9731  MCK-600W/MCK-800USB Keyboard
> +	9783  Wireless Keypad
> +	9837  Targus Number Keypad
> +	9862  Targus Number Keypad (Composite Device)
> +	9881  IR receiver [VRC-1100 Vista MCE Remote Control]
> +05a5  Sampo Technology Corp.
> +05a6  Cisco Systems, Inc.
> +	0001  CVA124 Cable Voice Adapter (WDM)
> +	0002  CVA122 Cable Voice Adapter (WDM)
> +	0003  CVA124E Cable Voice Adapter (WDM)
> +	0004  CVA122E Cable Voice Adapter (WDM)
> +	0008  STA1520 Tuning Adapter
> +	0a00  Integrated Management Controller Hub
> +	0a01  Virtual Keyboard/Mouse
> +	0a02  Virtual Mass Storage
> +	0a03  Virtual Ethernet/RNDIS
> +05a7  Bose Corp.
> +	4000  Bluetooth Headset
> +	4001  Bluetooth Headset in DFU mode
> +	4002  Bluetooth Headset Series 2
> +	4003  Bluetooth Headset Series 2 in DFU mode
> +	400d  SoundLink Color II speaker in DFU mode
> +	40fe  SoundLink Color II speaker
> +	bc50  SoundLink Wireless Mobile speaker
> +	bc51  SoundLink Wireless Mobile speaker in DFU mode
> +05a8  Spacetec IMC Corp.
> +05a9  OmniVision Technologies, Inc.
> +	0511  OV511 Webcam
> +	0518  OV518 Webcam
> +	0519  OV519 Microphone
> +	1550  VEHO Filmscanner
> +	2640  OV2640 Webcam
> +	2642  Integrated Webcam for Dell XPS 2010
> +	2643  Monitor Webcam
> +	264b  Monitor Webcam
> +	2800  SuperCAM
> +	4519  Webcam Classic
> +	7670  OV7670 Webcam
> +	8065  GAIA Sensor FPGA Demo Board
> +	8519  OV519 Webcam
> +	a511  OV511+ Webcam
> +	a518  D-Link DSB-C310 Webcam
> +05aa  Utilux South China, Ltd
> +05ab  In-System Design
> +	0002  Parallel Port
> +	0030  Storage Adapter V2 (TPP)
> +	0031  ATA Bridge
> +	0060  USB 2.0 ATA Bridge
> +	0061  Storage Adapter V3 (TPP-I)
> +	0101  Storage Adapter (TPP)
> +	0130  Compact Flash and Microdrive Reader (TPP)
> +	0200  USS725 ATA Bridge
> +	0201  Storage Adapter (TPP)
> +	0202  ATA Bridge
> +	0300  Portable Hard Drive (TPP)
> +	0301  Portable Hard Drive V2
> +	0350  Portable Hard Drive (TPP)
> +	0351  Portable Hard Drive V2
> +	081a  ATA Bridge
> +	0cda  ATA Bridge for CD-R/RW
> +	1001  BAYI Printer Class Support
> +	5700  Storage Adapter V2 (TPP)
> +	5701  USB Storage Adapter V2
> +	5901  Smart Board (TPP)
> +	5a01  ATI Storage Adapter (TPP)
> +	5d01  DataBook Adapter (TPP)
> +05ac  Apple, Inc.
> +	0201  USB Keyboard [Alps or Logitech, M2452]
> +	0202  Keyboard [ALPS]
> +	0205  Extended Keyboard [Mitsumi]
> +	0206  Extended Keyboard [Mitsumi]
> +	020b  Pro Keyboard [Mitsumi, A1048/US layout]
> +	020c  Extended Keyboard [Mitsumi]
> +	020d  Pro Keyboard [Mitsumi, A1048/JIS layout]
> +	020e  Internal Keyboard/Trackpad (ANSI)
> +	020f  Internal Keyboard/Trackpad (ISO)
> +	0214  Internal Keyboard/Trackpad (ANSI)
> +	0215  Internal Keyboard/Trackpad (ISO)
> +	0216  Internal Keyboard/Trackpad (JIS)
> +	0217  Internal Keyboard/Trackpad (ANSI)
> +	0218  Internal Keyboard/Trackpad (ISO)
> +	0219  Internal Keyboard/Trackpad (JIS)
> +	021a  Internal Keyboard/Trackpad (ANSI)
> +	021b  Internal Keyboard/Trackpad (ISO)
> +	021c  Internal Keyboard/Trackpad (JIS)
> +	021d  Aluminum Mini Keyboard (ANSI)
> +	021e  Aluminum Mini Keyboard (ISO)
> +	021f  Aluminum Mini Keyboard (JIS)
> +	0220  Aluminum Keyboard (ANSI)
> +	0221  Aluminum Keyboard (ISO)
> +	0222  Aluminum Keyboard (JIS)
> +	0223  Internal Keyboard/Trackpad (ANSI)
> +	0224  Internal Keyboard/Trackpad (ISO)
> +	0225  Internal Keyboard/Trackpad (JIS)
> +	0229  Internal Keyboard/Trackpad (ANSI)
> +	022a  Internal Keyboard/Trackpad (MacBook Pro) (ISO)
> +	022b  Internal Keyboard/Trackpad (MacBook Pro) (JIS)
> +	0230  Internal Keyboard/Trackpad (MacBook Pro 4,1) (ANSI)
> +	0231  Internal Keyboard/Trackpad (MacBook Pro 4,1) (ISO)
> +	0232  Internal Keyboard/Trackpad (MacBook Pro 4,1) (JIS)
> +	0236  Internal Keyboard/Trackpad (ANSI)
> +	0237  Internal Keyboard/Trackpad (ISO)
> +	0238  Internal Keyboard/Trackpad (JIS)
> +	023f  Internal Keyboard/Trackpad (ANSI)
> +	0240  Internal Keyboard/Trackpad (ISO)
> +	0241  Internal Keyboard/Trackpad (JIS)
> +	0242  Internal Keyboard/Trackpad (ANSI)
> +	0243  Internal Keyboard/Trackpad (ISO)
> +	0244  Internal Keyboard/Trackpad (JIS)
> +	0245  Internal Keyboard/Trackpad (ANSI)
> +	0246  Internal Keyboard/Trackpad (ISO)
> +	0247  Internal Keyboard/Trackpad (JIS)
> +	024a  Internal Keyboard/Trackpad (MacBook Air) (ISO)
> +	024d  Internal Keyboard/Trackpad (MacBook Air) (ISO)
> +	024f  Aluminium Keyboard (ANSI)
> +	0250  Aluminium Keyboard (ISO)
> +	0252  Internal Keyboard/Trackpad (ANSI)
> +	0253  Internal Keyboard/Trackpad (ISO)
> +	0254  Internal Keyboard/Trackpad (JIS)
> +	0259  Internal Keyboard/Trackpad
> +	025a  Internal Keyboard/Trackpad
> +	0263  Apple Internal Keyboard / Trackpad (MacBook Retina)
> +	0267  Magic Keyboard A1644
> +	0269  Magic Mouse 2 (Lightning connector)
> +	0273  Internal Keyboard/Trackpad (ISO)
> +	0301  USB Mouse [Mitsumi, M4848]
> +	0302  Optical Mouse [Fujitsu]
> +	0304  Mighty Mouse [Mitsumi, M1152]
> +	0306  Optical USB Mouse [Fujitsu]
> +	030a  Internal Trackpad
> +	030b  Internal Trackpad
> +	030d  Magic Mouse
> +	030e  MC380Z/A [Magic Trackpad]
> +	1000  Bluetooth HCI MacBookPro (HID mode)
> +	1001  Keyboard Hub [ALPS]
> +	1002  Extended Keyboard Hub [Mitsumi]
> +	1003  Hub in Pro Keyboard [Mitsumi, A1048]
> +	1006  Hub in Aluminum Keyboard
> +	1008  Mini DisplayPort to Dual-Link DVI Adapter
> +	1101  Speakers
> +	1105  Audio in LED Cinema Display
> +	1107  Thunderbolt Display Audio
> +	1112  FaceTime HD Camera (Display)
> +	1201  3G iPod
> +	1202  iPod 2G
> +	1203  iPod 4.Gen Grayscale 40G
> +	1204  iPod [Photo]
> +	1205  iPod Mini 1.Gen/2.Gen
> +	1206  iPod '06'
> +	1207  iPod '07'
> +	1208  iPod '08'
> +	1209  iPod Video
> +	120a  iPod Nano
> +	1223  iPod Classic/Nano 3.Gen (DFU mode)
> +	1224  iPod Nano 3.Gen (DFU mode)
> +	1225  iPod Nano 4.Gen (DFU mode)
> +	1227  Mobile Device (DFU Mode)
> +	1231  iPod Nano 5.Gen (DFU mode)
> +	1240  iPod Nano 2.Gen (DFU mode)
> +	1242  iPod Nano 3.Gen (WTF mode)
> +	1243  iPod Nano 4.Gen (WTF mode)
> +	1245  iPod Classic 3.Gen (WTF mode)
> +	1246  iPod Nano 5.Gen (WTF mode)
> +	1255  iPod Nano 4.Gen (DFU mode)
> +	1260  iPod Nano 2.Gen
> +	1261  iPod Classic
> +	1262  iPod Nano 3.Gen
> +	1263  iPod Nano 4.Gen
> +	1265  iPod Nano 5.Gen
> +	1266  iPod Nano 6.Gen
> +	1267  iPod Nano 7.Gen
> +	1281  Apple Mobile Device [Recovery Mode]
> +	1290  iPhone
> +	1291  iPod Touch 1.Gen
> +	1292  iPhone 3G
> +	1293  iPod Touch 2.Gen
> +	1294  iPhone 3GS
> +	1296  iPod Touch 3.Gen (8GB)
> +	1297  iPhone 4
> +	1299  iPod Touch 3.Gen
> +	129a  iPad
> +	129c  iPhone 4(CDMA)
> +	129e  iPod Touch 4.Gen
> +	129f  iPad 2
> +	12a0  iPhone 4S
> +	12a2  iPad 2 (3G; 64GB)
> +	12a3  iPad 2 (CDMA)
> +	12a4  iPad 3 (wifi)
> +	12a5  iPad 3 (CDMA)
> +	12a6  iPad 3 (3G, 16 GB)
> +	12a8  iPhone 5/5C/5S/6/SE
> +	12a9  iPad 2
> +	12aa  iPod Touch 5.Gen [A1421]
> +	12ab  iPad 4/Mini1
> +	1300  iPod Shuffle
> +	1301  iPod Shuffle 2.Gen
> +	1302  iPod Shuffle 3.Gen
> +	1303  iPod Shuffle 4.Gen
> +	1392  Apple Watch charger
> +	1393  AirPods case
> +	1395  Smart Battery Case [iPhone 6]
> +	1398  Smart Battery Case
> +	1401  Modem
> +	1402  Ethernet Adapter [A1277]
> +	1500  SuperDrive [A1379]
> +	8005  OHCI Root Hub Simulation
> +	8006  EHCI Root Hub Simulation
> +	8007  XHCI Root Hub USB 2.0 Simulation
> +	8202  HCF V.90 Data/Fax Modem
> +	8203  Bluetooth HCI
> +	8204  Built-in Bluetooth 2.0+EDR HCI
> +	8205  Bluetooth HCI
> +	8206  Bluetooth HCI
> +	8207  Built-in Bluetooth
> +	820a  Bluetooth HID Keyboard
> +	820b  Bluetooth HID Mouse
> +	820f  Bluetooth HCI
> +	8213  Bluetooth Host Controller
> +	8215  Built-in Bluetooth 2.0+EDR HCI
> +	8216  Bluetooth USB Host Controller
> +	8217  Bluetooth USB Host Controller
> +	8218  Bluetooth Host Controller
> +	821a  Bluetooth Host Controller
> +	821f  Built-in Bluetooth 2.0+EDR HCI
> +	8233  iBridge
> +	8240  Built-in IR Receiver
> +	8241  Built-in IR Receiver
> +	8242  Built-in IR Receiver
> +	8281  Bluetooth Host Controller
> +	8286  Bluetooth Host Controller
> +	8289  Bluetooth Host Controller
> +	828c  Bluetooth Host Controller
> +	8290  Bluetooth Host Controller
> +	8300  Built-in iSight (no firmware loaded)
> +	8403  Internal Memory Card Reader
> +	8404  Internal Memory Card Reader
> +	8406  Internal Memory Card Reader
> +	8501  Built-in iSight [Micron]
> +	8502  Built-in iSight
> +	8505  Built-in iSight
> +	8507  Built-in iSight
> +	8508  iSight in LED Cinema Display
> +	8509  FaceTime HD Camera
> +	850a  FaceTime Camera
> +	8510  FaceTime HD Camera (Built-in)
> +	8511  FaceTime HD Camera (Built-in)
> +	8600  iBridge
> +	911c  Hub in A1082 [Cinema HD Display 23"]
> +	9127  Hub in Thunderbolt Display
> +	912f  Hub in 30" Cinema Display
> +	9210  Studio Display 21"
> +	9215  Studio Display 15"
> +	9217  Studio Display 17"
> +	9218  Cinema Display 23"
> +	9219  Cinema Display 20"
> +	921c  A1082 [Cinema HD Display 23"]
> +	921e  Cinema Display 24"
> +	9221  30" Cinema Display
> +	9226  LED Cinema Display
> +	9227  Thunderbolt Display
> +	9232  Cinema HD Display 30"
> +	ffff  Bluetooth in DFU mode - Driver
> +05ad  Y.C. Cable U.S.A., Inc.
> +05ae  Synopsys, Inc.
> +05af  Jing-Mold Enterprise Co., Ltd
> +	0806  HP SK806A Keyboard
> +	0809  Wireless Keyboard and Mouse
> +	0821  IDE to
> +	3062  Cordless Keyboard
> +	9167  KB 9151B - 678
> +	9267  KB 9251B - 678 Mouse
> +05b0  Fountain Technologies, Inc.
> +05b1  First International Computer, Inc.
> +	1389  Bluetooth Wireless Adapter
> +05b4  LG Semicon Co., Ltd
> +	4857  M-Any DAH-210
> +	6001  HYUNDAI GDS30C6001 SSFDC / MMC I/F Controller
> +05b5  Dialogic Corp.
> +05b6  Proxima Corp.
> +05b7  Medianix Semiconductor, Inc.
> +05b8  SYSGRATION
> +	3002  Scroll Mouse
> +	3126  APT-905 Wireless presenter
> +	3223  ISY Wireless Presenter
> +05b9  Philips Research Laboratories
> +05ba  DigitalPersona, Inc.
> +	0007  Fingerprint Reader
> +	0008  Fingerprint Reader
> +	000a  Fingerprint Reader
> +05bb  Grey Cell Systems
> +05bc  3G Green Green Globe Co., Ltd
> +	0004  Trackball
> +05bd  RAFI GmbH & Co. KG
> +05be  Tyco Electronics (Raychem)
> +05bf  S & S Research
> +05c0  Keil Software
> +05c1  Kawasaki Microelectronics, Inc.
> +05c2  Media Phonics (Suisse) S.A.
> +05c5  Digi International, Inc.
> +	0002  AccelePort USB 2
> +	0004  AccelePort USB 4
> +	0008  AccelePort USB 8
> +05c6  Qualcomm, Inc.
> +	0114  Select RW-200 CDMA Wireless Modem
> +	0a02  Jolla Device Developer Mode
> +	0a07  Jolla Device MTP
> +	0afe  Jolla Device Charging Only
> +	1000  Mass Storage Device
> +	3100  CDMA Wireless Modem/Phone
> +	3196  CDMA Wireless Modem
> +	3197  CDMA Wireless Modem/Phone
> +	6000  Siemens SG75
> +	6503  AnyData APE-540H
> +	6613  Onda H600/N501HS ZTE MF330
> +	6764  A0001 Phone [OnePlus One]
> +	9000  SIMCom SIM5218 modem
> +	9001  Gobi Wireless Modem
> +	9002  Gobi Wireless Modem
> +	9003  Quectel UC20
> +	9008  Gobi Wireless Modem (QDL mode)
> +	9018  Qualcomm HSUSB Device
> +	9025  HSUSB Device
> +	9090  Quectel UC15
> +	9091  Intex Aqua Fish & Jolla C Diagnostic Mode
> +	9092  Nokia 8110 4G
> +	90ba  Audio 1.0 device
> +	90bb  Snapdragon interface (MIDI + ADB)
> +	90dc  Fairphone 2 (Charging & ADB)
> +	9201  Gobi Wireless Modem (QDL mode)
> +	9202  Gobi Wireless Modem
> +	9203  Gobi Wireless Modem
> +	9205  Gobi 2000
> +	9211  Acer Gobi Wireless Modem (QDL mode)
> +	9212  Acer Gobi Wireless Modem
> +	9214  Acer Gobi 2000 Wireless Modem (QDL mode)
> +	9215  Quectel EC20 LTE modem / Acer Gobi 2000 Wireless Modem
> +	9221  Gobi Wireless Modem (QDL mode)
> +	9222  Gobi Wireless Modem
> +	9224  Sony Gobi 2000 Wireless Modem (QDL mode)
> +	9225  Sony Gobi 2000 Wireless Modem
> +	9231  Gobi Wireless Modem (QDL mode)
> +	9234  Top Global Gobi 2000 Wireless Modem (QDL mode)
> +	9235  Top Global Gobi 2000 Wireless Modem
> +	9244  Samsung Gobi 2000 Wireless Modem (QDL mode)
> +	9245  Samsung Gobi 2000 Wireless Modem
> +	9264  Asus Gobi 2000 Wireless Modem (QDL mode)
> +	9265  Asus Gobi 2000 Wireless Modem
> +	9274  iRex Technologies Gobi 2000 Wireless Modem (QDL mode)
> +	9275  iRex Technologies Gobi 2000 Wireless Modem
> +	f000  TA-1004 [Nokia 8]
> +	f003  Nokia 8110 4G
> +05c7  Qtronix Corp.
> +	0113  PC Line Mouse
> +	1001  Lynx Mouse
> +	2001  Keyboard
> +	2011  SCorpius Keyboard
> +	6001  Ten-Keypad
> +05c8  Cheng Uei Precision Industry Co., Ltd (Foxlink)
> +	0103  FO13FF-65 PC-CAM
> +	010b  Webcam (UVC)
> +	021a  HP Webcam
> +	0233  HP Webcam
> +	0318  Webcam
> +	0361  SunplusIT INC. HP Truevision HD Webcam
> +	036e  Webcam
> +	0374  HP EliteBook integrated HD Webcam
> +	038e  HP Wide Vision HD integrated webcam
> +	03a1  XiaoMi Webcam
> +	03b1  Webcam
> +	03bc  HP Wide Vision HD Integrated Webcam
> +	03cb  HP Wide Vision HD Integrated Webcam
> +	0403  Webcam
> +	041b  HP 2.0MP High Definition Webcam
> +05c9  Semtech Corp.
> +05ca  Ricoh Co., Ltd
> +	0101  RDC-5300 Camera
> +	0325  Caplio GX (ptp)
> +	032d  Caplio GX 8 (ptp)
> +	032f  Caplio R3 (ptp)
> +	03a1  IS200e
> +	0403  Printing Support
> +	0405  Type 101
> +	0406  Type 102
> +	0437  Aficio SP 3510SF
> +	044e  SP C250SF (multifunction device: printer, scanner, fax)
> +	1803  V5 camera [R5U870]
> +	1810  Pavilion Webcam [R5U870]
> +	1812  Pavilion Webcam
> +	1814  HD Webcam
> +	1815  Dell Laptop Integrated Webcam
> +	1820  Integrated Webcam
> +	1830  Visual Communication Camera VGP-VCC2 [R5U870]
> +	1832  Visual Communication Camera VGP-VCC3 [R5U870]
> +	1833  Visual Communication Camera VGP-VCC2 [R5U870]
> +	1834  Visual Communication Camera VGP-VCC2 [R5U870]
> +	1835  Visual Communication Camera VGP-VCC5 [R5U870]
> +	1836  Visual Communication Camera VGP-VCC4 [R5U870]
> +	1837  Visual Communication Camera VGP-VCC4 [R5U870]
> +	1839  Visual Communication Camera VGP-VCC6 [R5U870]
> +	183a  Visual Communication Camera VGP-VCC7 [R5U870]
> +	183b  Visual Communication Camera VGP-VCC8 [R5U870]
> +	183d  Sony Vaio Integrated Webcam
> +	183e  Visual Communication Camera VGP-VCC9 [R5U870]
> +	183f  Sony Visual Communication Camera Integrated Webcam
> +	1841  Fujitsu F01/ Lifebook U810 [R5U870]
> +	1870  Webcam 1000
> +	1880  R5U880
> +	18b0  Sony Vaio Integrated Webcam
> +	18b1  Sony Vaio Integrated Webcam
> +	18b3  Sony Vaio Integrated Webcam
> +	18b5  Sony Vaio Integrated Webcam
> +	2201  RDC-7 Camera
> +	2202  Caplio RR30
> +	2203  Caplio 300G
> +	2204  Caplio G3
> +	2205  Caplio RR30 / Medion MD 6126 Camera
> +	2206  Konica DG-3Z
> +	2207  Caplio Pro G3
> +	2208  Caplio G4
> +	2209  Caplio 400G wide
> +	220a  KONICA MINOLTA DG-4Wide
> +	220b  Caplio RX
> +	220c  Caplio GX
> +	220d  Caplio R1/RZ1
> +	220e  Sea & Sea 5000G
> +	220f  Rollei dr5 / Rollei dr5 (PTP mode)
> +	2211  Caplio R1S
> +	2212  Caplio R1v Camera
> +	2213  Caplio R2
> +	2214  Caplio GX 8
> +	2215  DSC 725
> +	2216  Caplio R3
> +	2222  RDC-i500
> +05cb  PowerVision Technologies, Inc.
> +	1483  PV8630 interface (scanners, webcams)
> +05cc  ELSA AG
> +	2100  MicroLink ISDN Office
> +	2219  MicroLink ISDN
> +	2265  MicroLink 56k
> +	2267  MicroLink 56k (V.250)
> +	2280  MicroLink 56k Fun
> +	3000  Micolink USB2Ethernet [pegasus]
> +	3100  AirLancer USB-11
> +	3363  MicroLink ADSL Fun
> +05cd  Silicom, Ltd
> +05ce  sci-worx GmbH
> +05cf  Sung Forn Co., Ltd
> +05d0  GE Medical Systems Lunar
> +05d1  Brainboxes, Ltd
> +	0003  Bluetooth Adapter BL-554
> +05d2  Wave Systems Corp.
> +05d3  Tohoku Ricoh Co., Ltd
> +05d5  Super Gate Technology Co., Ltd
> +05d6  Philips Semiconductors, CICT
> +05d7  Thomas & Betts Corp.
> +	0099  10Mbps Ethernet [klsi]
> +05d8  Ultima Electronics Corp.
> +	4001  Artec Ultima 2000
> +	4002  Artec Ultima 2000 (GT6801 based)/Lifetec LT9385/ScanMagic 1200 UB Plus Scanner
> +	4003  Artec E+ 48U
> +	4004  Artec E+ Pro
> +	4005  MEM48U
> +	4006  TRUST EASY WEBSCAN 19200
> +	4007  TRUST 240H EASY WEBSCAN GOLD
> +	4008  Trust Easy Webscan 19200
> +	4009  Umax Astraslim
> +	4013  IT Scan 1200
> +	8105  Artec T1 USB TVBOX (cold)
> +	8106  Artec T1 USB TVBOX (warm)
> +	8107  Artec T1 USB TVBOX with AN2235 (cold)
> +	8108  Artec T1 USB TVBOX with AN2235 (warm)
> +	8109  Artec T1 USB2.0 TVBOX (cold
> +05d9  Axiohm Transaction Solutions
> +	a225  A225 Printer
> +	a758  A758 Printer
> +	a794  A794 Printer
> +05da  Microtek International, Inc.
> +	0091  ScanMaker X6u
> +	0093  ScanMaker V6USL
> +	0094  Phantom 336CX/C3
> +	0099  ScanMaker X6/X6U
> +	009a  Phantom C6
> +	00a0  Phantom 336CX/C3 (#2)
> +	00a3  ScanMaker V6USL
> +	00ac  ScanMaker V6UL
> +	00b6  ScanMaker V6UPL
> +	00ef  ScanMaker V6UPL
> +	1006  Jenoptik JD350 entrance
> +	1011  NHJ Che-ez! Kiss Digital Camera
> +	1018  Digital Dream Enigma 1.3
> +	1020  Digital Dream l'espion xtra
> +	1025  Take-it Still Camera Device
> +	1026  Take-it
> +	1043  Take-It 1300 DSC Bulk Driver
> +	1045  Take-it D1
> +	1047  Take-it Camera Composite Device
> +	1048  Take-it Q3
> +	1049  3M Still Camera Device
> +	1051  Camcorder Series
> +	1052  Mass Storage Device
> +	1053  Take-it DV Composite Device
> +	1054  Mass Storage Device
> +	1055  Digital Camera Series(536)
> +	1056  Mass Storage Device
> +	1057  Take-it DSC Camera Device(536)
> +	1058  Mass Storage Device
> +	1059  Camcorder DSC Series
> +	1060  Microtek Take-it MV500
> +	2007  ArtixScan DI 1210
> +	200c  1394_USB2 Scanner
> +	200e  ArtixScan DI 810
> +	2017  UF ICE Scanner
> +	201c  4800 Scanner
> +	201d  ArtixScan DI 1610
> +	201f  4800 Scanner-ICE
> +	202e  ArtixScan DI 2020
> +	208b  ScanMaker 6800
> +	208f  ArtixScan DI 2010
> +	209e  ScanMaker 4700LP
> +	20a7  ScanMaker 5600
> +	20b0  ScanMaker X12USL
> +	20b1  ScanMaker 8700
> +	20b4  ScanMaker 4700
> +	20bd  ScanMaker 5700
> +	20c9  ScanMaker 6700
> +	20d2  Microtek ArtixScan 1800f
> +	20d6  PS4000
> +	20de  ScanMaker 9800XL
> +	20e0  ScanMaker 9700XL
> +	20ed  ScanMaker 4700
> +	20ee  Micortek ScanMaker X12USL
> +	2838  RT2832U
> +	3008  Scanner
> +	300a  4800 ICE Scanner
> +	300b  4800 Scanner
> +	300f  MiniScan C5
> +	3020  4800dpi Scanner
> +	3021  1200dpi Scanner
> +	3022  Scanner 4800dpi
> +	3023  USB1200II Scanner
> +	3025  ScanMaker S460
> +	30c1  USB600 Scanner
> +	30ce  ScanMaker 3800
> +	30cf  ScanMaker 4800
> +	30d4  USB1200 Scanner
> +	30d8  Scanner
> +	30d9  USB2400 Scanner
> +	30e4  ScanMaker 4100
> +	30e5  USB3200 Scanner
> +	30e6  ScanMaker i320
> +	40b3  ScanMaker 3600
> +	40b8  ScanMaker 3700
> +	40c7  ScanMaker 4600
> +	40ca  ScanMaker 3600
> +	40cb  ScanMaker 3700
> +	40dd  ScanMaker 3750i
> +	40ff  ScanMaker 3600
> +	5003  Goya
> +	5013  3200 Scanner
> +	6072  XT-3500 A4 HD Scanner
> +	80a3  ScanMaker V6USL (#2)
> +	80ac  ScanMaker V6UL/SpicyU
> +05db  Sun Corp. (Suntac?)
> +	0003  SUNTAC U-Cable type D2
> +	0005  SUNTAC U-Cable type P1
> +	0009  SUNTAC Slipper U
> +	000a  SUNTAC Ir-Trinity
> +	000b  SUNTAC U-Cable type A3
> +	0011  SUNTAC U-Cable type A4
> +05dc  Lexar Media, Inc.
> +	0001  jumpSHOT CompactFlash Reader
> +	0002  JumpShot
> +	0003  JumpShot
> +	0080  Jumpdrive Secure 64MB
> +	0081  RBC Compact Flash Drive
> +	00a7  JumpDrive Impact
> +	0100  JumpDrive PRO
> +	0200  JumpDrive 2.0 Pro
> +	0300  Jumpdrive Geysr
> +	0301  JumpDrive Classic
> +	0302  JD Micro
> +	0303  JD Micro Pro
> +	0304  JD Secure II
> +	0310  JumpDrive
> +	0311  JumpDrive Classic
> +	0312  JD Micro
> +	0313  JD Micro Pro
> +	0320  JumpDrive
> +	0321  JD Micro
> +	0322  JD Micro Pro
> +	0323  UFC
> +	0330  JumpDrive Expression
> +	0340  JumpDrive TAD
> +	0350  Express Card
> +	0400  UFDC
> +	0401  UFDC
> +	0403  Locked B Device
> +	0405  Locked C Device
> +	0407  Locked D Device
> +	0409  Locked E Device
> +	040b  Locked F Device
> +	040d  Locked G Device
> +	040f  Locked H Device
> +	0410  JumpDrive
> +	0411  JumpDrive
> +	0413  Locked J Device
> +	0415  Locked K Device
> +	0417  Locked L Device
> +	0419  Locked M Device
> +	041b  Locked N Device
> +	041d  Locked O Device
> +	041f  Locked P Device
> +	0420  JumpDrive
> +	0421  JumpDrive
> +	0423  Locked R Device
> +	0425  Locked S Device
> +	0427  Locked T Device
> +	0429  Locked U Device
> +	042b  Locked V Device
> +	042d  Locked W Device
> +	042f  Locked X Device
> +	0431  Locked Y Device
> +	0433  Locked Z Device
> +	4d02  MP3 Player
> +	4d12  MP3 Player
> +	4d30  MP3 Player
> +	a201  JumpDrive S70 4GB
> +	a209  JumpDrive S70
> +	a300  JumpDrive2
> +	a400  JumpDrive trade; Pro 40-501
> +	a410  JumpDrive 128MB/256MB
> +	a411  JumpDrive Traveler
> +	a420  JumpDrive Pro
> +	a421  JumpDrive Pro II
> +	a422  JumpDrive Micro Pro
> +	a430  JumpDrive Secure
> +	a431  JumpDrive Secure II
> +	a432  JumpDrive Classic
> +	a440  JumpDrive Lightning
> +	a450  JumpDrive TouchGuard
> +	a460  JD Mercury
> +	a501  JumpDrive Classic
> +	a510  JumpDrive Sport
> +	a530  JumpDrive Expression
> +	a531  JumpDrive Secure II
> +	a560  JumpDrive FireFly
> +	a701  JumpDrive FireFly
> +	a731  JumpDrive FireFly
> +	a762  JumpDrive FireFly
> +	a768  JumpDrive Retrax
> +	a790  JumpDrive 2GB
> +	a811  16GB Gizmo!
> +	a813  16gB flash thumb drive
> +	a815  JumpDrive V10
> +	a81d  LJDTT16G [JumpDrive 16GB]
> +	a833  JumpDrive S23 64GB
> +	a838  JumpDrive Tough
> +	b002  USB CF Reader
> +	b018  Multi-Card Reader
> +	b047  SDHC Reader [RW047-7000]
> +	b051  microSD RDR UHS-I Card Reader [LRWM03U-7000]
> +	ba02  Workflow CFR1
> +	ba0a  Workflow DD512
> +	c753  JumpDrive TwistTurn
> +	c75c  JumpDrive V10
> +05dd  Delta Electronics, Inc.
> +	a011  HID UPS Battery
> +	ff31  AWU-120
> +	ff32  FriendlyNET AeroLAN AL2011
> +	ff35  PCW 100 - Wireless 802.11b Adapter
> +	ff91  2Wire PC Port Phoneline 10Mbps Adapter
> +05df  Silicon Vision, Inc.
> +05e0  Symbol Technologies
> +	0700  Bar Code Scanner (CS1504)
> +	0800  Spectrum24 Wireless LAN Adapter
> +	1200  Bar Code Scanner
> +	1701  Bar Code Scanner (CDC)
> +	1900  SNAPI Imaging Device
> +	1a00  CS4070 Barcode Scanner
> +	2000  MC3090 Rugged Mobile Computer
> +	200d  MC70 Rugged Mobile Computer
> +05e1  Syntek Semiconductor Co., Ltd
> +	0100  802.11g + Bluetooth Wireless Adapter
> +	0408  STK1160 Video Capture Device
> +	0500  DC-112X Webcam
> +	0501  DC-1125 Webcam
> +	0890  STK011 Camera
> +	0892  STK013 Camera
> +	0895  STK016 Camera
> +	0896  STK017 Camera
> +	2010  ARCTIC Sound P261 Headphones
> +05e2  ElecVision, Inc.
> +05e3  Genesys Logic, Inc.
> +	000a  Keyboard with PS/2 Port
> +	000b  Mouse
> +	0100  Nintendo Game Boy Advance SP
> +	0120  Pacific Image Electronics PrimeFilm 1800u slide/negative scanner
> +	0131  CF/SM Reader/Writer
> +	0142  Multiple Slides Scanner-3600
> +	0143  Multiple Frames Film Scanner-36series
> +	0145  Reflecta CrystalScan 7200 Photo-Scanner
> +	0180  Plustek Scanner
> +	0182  Wize Media 1000
> +	0189  ScanJet 4600 series
> +	018a  Xerox 6400
> +	0300  GLUSB98PT Parallel Port
> +	0301  USB2LPT Cable Release2
> +	0406  Hub
> +	0501  GL620USB Host-Host interface
> +	0502  GL620USB-A GeneLink USB-USB Bridge
> +	0503  Webcam
> +	0504  HID Keyboard Filter
> +	0510  Camera
> +	0604  USB 1.1 Hub
> +	0605  Hub
> +	0606  USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub
> +	0607  Logitech G110 Hub
> +	0608  Hub
> +	0610  Hub
> +	0612  Hub
> +	0616  hub
> +	0618  Hub
> +	0620  GL3523 Hub
> +	0626  Hub
> +	0660  USB 2.0 Hub
> +	0700  SIIG US2256 CompactFlash Card Reader
> +	0701  USB 2.0 IDE Adapter
> +	0702  USB 2.0 IDE Adapter [GL811E]
> +	0703  Card Reader
> +	0704  Card Reader
> +	0705  Card Reader
> +	0706  Card Reader
> +	0707  Card Reader
> +	0708  Card Reader
> +	0709  Card Reader
> +	070a  Pen Flash
> +	070b  DMHS1B Rev 3 DFU Adapter
> +	070e  USB 2.0 Card Reader
> +	070f  Pen Flash
> +	0710  USB 2.0 33-in-1 Card Reader
> +	0711  Card Reader
> +	0712  Delkin Mass Storage Device
> +	0715  USB 2.0 microSD Reader
> +	0716  Multislot Card Reader/Writer
> +	0717  All-in-1 Card Reader
> +	0718  IDE/SATA Adapter
> +	0719  SATA adapter
> +	0722  SD/MMC card reader
> +	0723  GL827L SD/MMC/MS Flash Card Reader
> +	0726  SD Card Reader
> +	0727  microSD Reader/Writer
> +	0731  GL3310 SATA 3Gb/s Bridge Controller
> +	0732  All-in-One Cardreader
> +	0736  Colour arc SD Card Reader [PISEN]
> +	0738  Card reader
> +	0741  microSD Card Reader
> +	0743  SDXC and microSDXC CardReader
> +	0745  Logilink CR0012
> +	0748  All-in-One Cardreader
> +	0749  SD Card Reader and Writer
> +	0751  microSD Card Reader
> +	0752  micros Reader
> +	0760  USB 2.0 Card Reader/Writer
> +	0761  Genesys Mass Storage Device
> +	0780  USBFS DFU Adapter
> +	07a0  Pen Flash
> +	0880  Wasp (SL-6612)
> +	0927  Card Reader
> +	1205  Afilias Optical Mouse H3003 / Trust Optical USB MultiColour Mouse MI-2330
> +	a700  Pen Flash
> +	f102  VX7012 TV Box
> +	f103  VX7012 TV Box
> +	f104  VX7012 TV Box
> +	f12a  Digital Microscope
> +	fd21  3M TL20 Temperature Logger
> +	fe00  Razer Mouse
> +05e4  Red Wing Corp.
> +05e5  Fuji Electric Co., Ltd
> +05e6  Keithley Instruments
> +05e8  ICC, Inc.
> +05e9  Kawasaki LSI
> +	0008  KL5KUSB101B Ethernet [klsi]
> +	0009  Sony 10Mbps Ethernet [pegasus]
> +	000c  USB-to-RS-232
> +	000d  USB-to-RS-232
> +	0014  RS-232 J104
> +	0040  Ethernet Adapter
> +	2008  Ethernet Adapter
> +05eb  FFC, Ltd
> +05ec  COM21, Inc.
> +05ee  Cytechinfo Inc.
> +05ef  AVB, Inc. [anko?]
> +	020a  Top Shot Pegasus Joystick
> +	8884  Mag Turbo Force Wheel
> +	8888  Top Shot Force Feedback Racing Wheel
> +05f0  Canopus Co., Ltd
> +	0101  DA-Port DAC
> +05f1  Compass Communications
> +05f2  Dexin Corp., Ltd
> +	0010  AQ Mouse
> +05f3  PI Engineering, Inc.
> +	0007  Kinesis Advantage PRO MPC/USB Keyboard
> +	0081  Kinesis Integrated Hub
> +	00ff  VEC Footpedal
> +	0203  Y-mouse Keyboard & Mouse Adapter
> +	020b  PS2 Adapter
> +	0232  X-Keys Switch Interface, Programming Mode
> +	0261  X-Keys Switch Interface, SPLAT Mode
> +	0264  X-Keys Switch Interface, Composite Mode
> +05f5  Unixtar Technology, Inc.
> +05f6  AOC International
> +05f7  RFC Distribution(s) PTE, Ltd
> +05f9  PSC Scanning, Inc.
> +	1104  Magellan 2200VS
> +	1206  Gryphon series (OEM mode)
> +	120c  Gryphon GD4430-BK
> +	2202  Point of Sale Handheld Scanner
> +	2206  Gryphon series (keyboard emulation mode)
> +	220c  Datalogic Gryphon GD4430
> +	2601  Datalogic Magellan 1000i Barcode Scanner
> +	2602  Datalogic Magellan 1100i Barcode Scanner
> +	4204  Gryphon series (RS-232 emulation mode)
> +	5204  Datalogic Gryphon GFS4170 (config mode)
> +05fa  Siemens Telecommunications Systems, Ltd
> +	3301  Keyboard with PS/2 Mouse Port
> +	3302  Keyboard
> +	3303  Keyboard with PS/2 Mouse Port
> +05fc  Harman
> +	0001  Soundcraft Si Multi Digital Card
> +	0010  Soundcraft Si MADI combo card
> +	0021  Soundcraft Signature 12 MTK
> +	7849  Harman/Kardon SoundSticks
> +05fd  InterAct, Inc.
> +	0239  SV-239 HammerHead Digital
> +	0251  Raider Pro
> +	0253  ProPad 8 Digital
> +	0286  SV-286 Cyclone Digital
> +	1007  Mad Catz Controller
> +	107a  PowerPad Pro X-Box pad
> +	262a  3dfx HammerHead FX
> +	262f  HammerHead Fx
> +	daae  Game Shark
> +	dbae  Datel XBoxMC
> +05fe  Chic Technology Corp.
> +	0001  Mouse
> +	0003  Cypress USB Mouse
> +	0005  Viewmaster 4D Browser Mouse
> +	0007  Twinhead Mouse
> +	0009  Inland Pro 4500/5000 Mouse
> +	0011  Browser Mouse
> +	0014  Gamepad
> +	1010  Optical Wireless
> +	2001  Microsoft Wireless Receiver 700
> +	3030  Controller
> +	3031  Controller
> +05ff  LeCroy Corp.
> +0600  Barco Display Systems
> +0601  Jazz Hipster Corp.
> +	0003  Internet Security Co., Ltd. SecureKey
> +0602  Vista Imaging, Inc.
> +	1001  ViCam Webcam
> +0603  Novatek Microelectronics Corp.
> +	0002  Sino Wealth keyboard/mouse 2.4 GHz receiver
> +	00f1  Keyboard (Labtec Ultra Flat Keyboard)
> +	00f2  Keyboard (Labtec Ultra Flat Keyboard)
> +	1002  Mobius actioncam (webcam mode)
> +	6871  Mouse
> +	8611  NTK96550 based camera
> +0604  Jean Co., Ltd
> +0605  Anchor C&C Co., Ltd
> +0606  Royal Information Electronics Co., Ltd
> +0607  Bridge Information Co., Ltd
> +0608  Genrad Ads
> +0609  SMK Manufacturing, Inc.
> +	031d  eHome Infrared Receiver
> +	0322  eHome Infrared Receiver
> +	0334  eHome Infrared Receiver
> +	ff12  SMK Bluetooth Device
> +060a  Worthington Data Solutions, Inc.
> +060b  Solid Year
> +	0001  MacAlly Keyboard
> +	0230  KSK-8003 UX Keyboard
> +	0540  DeltaCo TB-106U Keyboard
> +	1006  Japanese Keyboard - 260U
> +	2101  Keyboard
> +	2231  KSK-6001 UELX Keyboard
> +	2270  Gigabyte K8100 Aivia Gaming Keyboard
> +	500a  Cougar 500k Gaming Keyboard
> +	5253  Thermaltake MEKA G-Unit Gaming Keyboard
> +	5811  ACK-571U Wireless Keyboard
> +	5903  Japanese Keyboard - 595U
> +	6001  SolidTek USB 2p HUB
> +	6002  SolidTek USB Keyboard
> +	6003  Japanese Keyboard - 600HM
> +	6231  Thermaltake eSPORTS Meka Keyboard
> +	8007  P-W1G1F12 VER:1 [Macally MegaCam]
> +	a001  Maxwell Compact Pc PM3
> +060c  EEH Datalink GmbH
> +060d  Auctor Corp.
> +060e  Transmonde Technologies, Inc.
> +060f  Joinsoon Electronics Mfg. Co., Ltd
> +0610  Costar Electronics, Inc.
> +0611  Totoku Electric Co., Ltd
> +0613  TransAct Technologies, Inc.
> +0614  Bio-Rad Laboratories
> +0615  Quabbin Wire & Cable Co., Inc.
> +0616  Future Techno Designs PVT, Ltd
> +0617  Swiss Federal Insitute of Technology
> +	000a  Thymio-II
> +	000c  Thymio-II Wireless
> +0618  MacAlly
> +	0101  Mouse
> +0619  Seiko Instruments, Inc.
> +	0101  SLP-100 Driver
> +	0102  SLP-200 Driver
> +	0103  SLP-100N Driver
> +	0104  SLP-200N Driver
> +	0105  SLP-240 Driver
> +	0501  SLP-440 Driver
> +	0502  SLP-450 Driver
> +061a  Veridicom International, Inc.
> +	0110  5thSense Fingerprint Sensor
> +	0200  FPS200 Fingerprint Sensor
> +	8200  VKI-A Fingerprint Sensor/Flash Storage (dumb)
> +	9200  VKI-B Fingerprint Sensor/Flash Storage (smart)
> +061b  Promptus Communications, Inc.
> +061c  Act Labs, Ltd
> +061d  Quatech, Inc.
> +	c020  SSU-100
> +061e  Nissei Electric Co.
> +	0001  nissei 128DE-USB -
> +	0010  nissei 128DE-PNA -
> +0620  Alaris, Inc.
> +	0004  QuickVideo weeCam
> +	0007  QuickVideo weeCam
> +	000a  QuickVideo weeCam
> +	000b  QuickVideo weeCam
> +0621  ODU-Steckverbindungssysteme GmbH & Co. KG
> +0622  Iotech, Inc.
> +0623  Littelfuse, Inc.
> +0624  Avocent Corp.
> +	0013  SC Secure KVM
> +	0248  Virtual Hub
> +	0249  Virtual Keyboard/Mouse
> +	0251  Virtual Mass Storage
> +	0252  Virtual SD card reader
> +	0294  Dell 03R874 KVM dongle
> +	0402  Cisco Virtual Keyboard and Mouse
> +	0403  Cisco Virtual Mass Storage
> +	1774  Cybex SC985
> +0625  TiMedia Technology Co., Ltd
> +0626  Nippon Systems Development Co., Ltd
> +0627  Adomax Technology Co., Ltd
> +0628  Tasking Software, Inc.
> +0629  Zida Technologies, Ltd
> +062a  MosArt Semiconductor Corp.
> +	0000  Optical mouse
> +	0001  Notebook Optical Mouse
> +	0020  Logic3 Gamepad
> +	0033  Competition Pro Steering Wheel
> +	0102  Wireless Keyboard/Mouse Combo [MK1152WC]
> +	0201  Defender Office Keyboard (K7310) S Zodiak KM-9010
> +	0252  Emerge Uni-retractable Laser Mouse
> +	2410  Wireless PS3 gamepad
> +	3286  Nano Receiver [Sandstrom Laser Mouse SMWLL11]
> +	4101  Wireless Keyboard/Mouse
> +	4102  Wireless Mouse
> +	4106  Wireless Mouse 2.4G
> +	4c01  2,4Ghz Wireless Transceiver [for Delux M618 Plus Wireless Vertical Mouse]
> +	6301  Trust Wireless Optical Mouse MI-4150K
> +	9003  VoIP Conference Hub (A16GH)
> +	9004  USR9602 USB Internet Mini Phone
> +062b  Greatlink Electronics Taiwan, Ltd
> +062c  Institute for Information Industry
> +062d  Taiwan Tai-Hao Enterprises Co., Ltd
> +062e  Mainsuper Enterprises Co., Ltd
> +062f  Sin Sheng Terminal & Machine, Inc.
> +0631  JUJO Electronics Corp.
> +0633  Cyrix Corp.
> +0634  Micron Technology, Inc.
> +	0655  Embedded Mass Storage Drive [RealSSD]
> +0635  Methode Electronics, Inc.
> +0636  Sierra Imaging, Inc.
> +	0003  Vivicam 35Xx
> +0638  Avision, Inc.
> +	0268  iVina 1200U Scanner
> +	026a  Minolta Dimage Scan Dual II AF-2820U (2886)
> +	0a10  iVina FB1600/UMAX Astra 4500
> +	0a13  AV600U
> +	0a15  Konica Minolta SC-110
> +	0a16  Konica Minolta SC-215
> +	0a2a  AV220 C2
> +	0a30  UMAX Astra 6700 Scanner
> +	0a41  Avision AM3000/MF3000 Series
> +	0f01  fi-4010CU
> +# typo?
> +	4004  Minolta Dimage Scan Elite II AF-2920 (2888)
> +0639  Chrontel, Inc.
> +063a  Techwin Corp.
> +063b  Taugagreining HF
> +063c  Yamaichi Electronics Co., Ltd (Sakura)
> +063d  Fong Kai Industrial Co., Ltd
> +063e  RealMedia Technology, Inc.
> +063f  New Technology Cable, Ltd
> +0640  Hitex Development Tools
> +	0026  LPC-Stick
> +0641  Woods Industries, Inc.
> +0642  VIA Medical Corp.
> +0644  TEAC Corp.
> +	0000  Floppy
> +	0200  All-In-One Multi-Card Reader CA200/B/S
> +	1000  CD-ROM Drive
> +	800d  TASCAM Portastudio DP-01FX
> +	800e  TASCAM US-122L
> +	801d  TASCAM DR-100
> +	8021  TASCAM US-122mkII
> +	d001  CD-R/RW Unit
> +	d002  CD-R/RW Unit
> +	d010  CD-RW/DVD Unit
> +0645  Who? Vision Systems, Inc.
> +0646  UMAX
> +0647  Acton Research Corp.
> +	0100  ARC SpectraPro UV/VIS/IR Monochromator/Spectrograph
> +	0101  ARC AM-VM Mono Airpath/Vacuum Monochromator/Spectrograph
> +	0102  ARC Inspectrum Mono
> +	0103  ARC Filterwheel
> +	03e9  Inspectrum 128x1024 F VIS Spectrograph
> +	03ea  Inspectrum 256x1024 F VIS Spectrograph
> +	03eb  Inspectrum 128x1024 B VIS Spectrograph
> +	03ec  Inspectrum 256x1024 B VIS Spectrograph
> +0648  Inside Out Networks
> +0649  Weli Science Co., Ltd
> +064b  Analog Devices, Inc. (White Mountain DSP)
> +	0165  Blackfin 535 [ADZS HPUSB ICE]
> +064c  Ji-Haw Industrial Co., Ltd
> +064d  TriTech Microelectronics, Ltd
> +064e  Suyin Corp.
> +	2100  Sony Visual Communication Camera
> +	3410  RGBIR Camera
> +	9700  Asus Integrated Webcam
> +	a100  Acer OrbiCam
> +	a101  Acer CrystalEye Webcam
> +	a102  Acer/Lenovo Webcam [CN0316]
> +	a103  Acer/HP Integrated Webcam [CN0314]
> +	a110  HP Webcam
> +	a114  Lemote Webcam
> +	a116  UVC 1.3MPixel WebCam
> +	a127  HP Integrated Webcam
> +	a136  Asus Integrated Webcam [CN031B]
> +	a219  1.3M WebCam (notebook emachines E730, Acer sub-brand)
> +	c107  HP webcam [dv6-1190en]
> +	c335  HP TrueVision HD
> +	d101  Acer CrystalEye Webcam
> +	d213  UVC HD Webcam
> +	d217  HP TrueVision HD
> +	e201  Lenovo Integrated Webcam
> +	e203  Lenovo Integrated Webcam
> +	e258  HP TrueVision HD Integrated Webcam
> +	e263  HP TrueVision HD Integrated Webcam
> +	f102  Lenovo Integrated Webcam [R5U877]
> +	f103  Lenovo Integrated Webcam [R5U877]
> +	f207  Lenovo EasyCamera Integrated Webcam
> +	f209  HP Webcam
> +	f300  UVC 0.3M Webcam
> +064f  WIBU-Systems AG
> +	03e9  CmStick (MSD, article no. 1001-xx-xxx)
> +	03f2  CmStick/M (MSD, article no. 1010-xx-xxx)
> +	03f3  CmStick/M (MSD, article no. 1011-xx-xxx)
> +	0bd7  Wibu-Box/U (article no. 3031-xx-xxx)
> +	0bd8  Wibu-Box/RU (article no. 3032-xx-xxx)
> +	2af9  CmStick (HID, article no. 1001-xx-xxx)
> +	2b03  CmStick/M (HID, article no. 1011-xx-xxx)
> +	5213  CmStick/M (COMPOSITE, article no. 1011-xx-xxx)
> +0650  Dynapro Systems
> +0651  Likom Technology Sdn. Bhd.
> +0652  Stargate Solutions, Inc.
> +0653  CNF, Inc.
> +0654  Granite Microsystems, Inc.
> +	0005  Device Bay Controller
> +	0006  Hub
> +	0007  Device Bay Controller
> +	0016  Hub
> +0655  Space Shuttle Hi-Tech Co., Ltd
> +0656  Glory Mark Electronic, Ltd
> +0657  Tekcon Electronics Corp.
> +0658  Sigma Designs, Inc.
> +	0200  Aeotec Z-Stick Gen5 (ZW090) - UZB
> +0659  Aethra
> +065a  Optoelectronics Co., Ltd
> +	0001  Opticon OPR-2001 / NLV-1001 (keyboard mode)
> +	0009  NLV-1001 (serial mode) / OPN-2001 [Opticon]
> +065b  Tracewell Systems
> +065e  Silicon Graphics
> +065f  Good Way Technology Co., Ltd & GWC technology Inc.
> +0660  TSAY-E (BVI) International, Inc.
> +0661  Hamamatsu Photonics K.K.
> +0662  Kansai Electric Co., Ltd
> +0663  Topmax Electronic Co., Ltd
> +	0103  CobraPad
> +0664  ET&T Technology Co., Ltd.
> +	0301  Groovy Technology Corp. GTouch Touch Screen
> +	0302  Groovy Technology Corp. GTouch Touch Screen
> +	0303  Groovy Technology Corp. GTouch Touch Screen
> +	0304  Groovy Technology Corp. GTouch Touch Screen
> +	0305  Groovy Technology Corp. GTouch Touch Screen
> +	0306  Groovy Technology Corp. GTouch Touch Screen
> +	0307  Groovy Technology Corp. GTouch Touch Screen
> +	0309  Groovy Technology Corp. GTouch Touch Screen
> +0665  Cypress Semiconductor
> +	5161  USB to Serial
> +0667  Aiwa Co., Ltd
> +	0fa1  TD-U8000 Tape Drive
> +0668  WordWand
> +0669  Oce' Printing Systems GmbH
> +066a  Total Technologies, Ltd
> +066b  Linksys, Inc.
> +	0105  SCM eUSB SmartMedia Card Reader
> +	010a  Melco MCR-U2 SmartMedia / CompactFlash Reader
> +	200c  USB10TX
> +	2202  USB10TX Ethernet [pegasus]
> +	2203  USB100TX Ethernet [pegasus]
> +	2204  USB100TX HomePNA Ethernet [pegasus]
> +	2206  USB Ethernet [pegasus]
> +	2207  HomeLink Phoneline 10M Network Adapter
> +	2211  WUSB11 802.11b Adapter
> +	2212  WUSB11v2.5 802.11b Adapter
> +	2213  WUSB12v1.1 802.11b Adapter
> +	2219  Instant Wireless Network Adapter
> +	400b  USB10TX
> +066d  Entrega, Inc.
> +066e  Acer Semiconductor America, Inc.
> +066f  SigmaTel, Inc.
> +	003b  MP3 Player
> +	003e  MP3 Player
> +	003f  MP3 Player
> +	0040  MP3 Player
> +	0041  MP3 Player
> +	0042  MP3 Player
> +	0043  MP3 Player
> +	004b  A-Max PA11 MP3 Player
> +	3400  STMP3400 D-Major MP3 Player
> +	3410  STMP3410 D-Major MP3 Player
> +	3500  Player Recovery Device
> +	3780  STMP3780/i.MX23 SystemOnChip in RecoveryMode
> +	4200  STIr4200 IrDA Bridge
> +	4210  STIr4210 IrDA Bridge
> +	8000  MSCN MP3 Player
> +	8001  SigmaTel MSCN Audio Player
> +	8004  MSCNMMC MP3 Player
> +	8008  i-Bead 100 MP3 Player
> +	8020  MP3 Player
> +	8034  MP3 Player
> +	8036  MP3 Player
> +	8038  MP3 Player
> +	8056  MP3 Player
> +	8060  MP3 Player
> +	8066  MP3 Player
> +	807e  MP3 Player
> +	8092  MP3 Player
> +	8096  MP3 Player
> +	809a  MP3 Player
> +	80aa  MP3 Player
> +	80ac  MP3 Player
> +	80b8  MP3 Player
> +	80ba  MP3 Player
> +	80bc  MP3 Player
> +	80bf  MP3 Player
> +	80c5  MP3 Player
> +	80c8  MP3 Player
> +	80ca  MP3 Player
> +	80cc  MP3 Player
> +	8104  MP3 Player
> +	8106  MP3 Player
> +	8108  MP3 Player
> +	810a  MP3 Player
> +	810c  MP3 Player
> +	8122  MP3 Player
> +	8124  MP3 Player
> +	8126  MP3 Player
> +	8128  MP3 Player
> +	8134  MP3 Player
> +	8136  MP3 Player
> +	8138  MP3 Player
> +	813a  MP3 Player
> +	813e  MP3 Player
> +	8140  MP3 Player
> +	8142  MP3 Player
> +	8144  MP3 Player
> +	8146  MP3 Player
> +	8148  MP3 Player
> +	814c  MP3 Player
> +	8201  MP3 Player
> +	8202  Jens of Sweden / I-BEAD 150M/150H MP3 player
> +	8203  MP3 Player
> +	8204  MP3 Player
> +	8205  MP3 Player
> +	8206  Digital MP3 Music Player
> +	8207  MP3 Player
> +	8208  MP3 Player
> +	8209  MP3 Player
> +	820a  MP3 Player
> +	820b  MP3 Player
> +	820c  MP3 Player
> +	820d  MP3 Player
> +	820e  MP3 Player
> +	820f  MP3 Player
> +	8210  MP3 Player
> +	8211  MP3 Player
> +	8212  MP3 Player
> +	8213  MP3 Player
> +	8214  MP3 Player
> +	8215  MP3 Player
> +	8216  MP3 Player
> +	8217  MP3 Player
> +	8218  MP3 Player
> +	8219  MP3 Player
> +	821a  MP3 Player
> +	821b  MP3 Player
> +	821c  MP3 Player
> +	821d  MP3 Player
> +	821e  MP3 Player
> +	821f  MP3 Player
> +	8220  MP3 Player
> +	8221  MP3 Player
> +	8222  MP3 Player
> +	8223  MP3 Player
> +	8224  MP3 Player
> +	8225  MP3 Player
> +	8226  MP3 Player
> +	8227  MP3 Player
> +	8228  MP3 Player
> +	8229  MP3 Player
> +	8230  MP3 Player
> +	829c  MP3 Player
> +	82e0  MP3 Player
> +	8320  TrekStor i.Beat fun
> +	835d  MP3 Player
> +	83b5  Transcend T.sonic 530 MP3 Player
> +	9000  MP3 Player
> +	9001  MP3 Player
> +	9002  MP3 Player
> +0670  Sequel Imaging
> +	0001  Calibrator
> +	0005  Enable Cable
> +0672  Labtec, Inc.
> +	1041  LCS1040 Speaker System
> +	5000  SpaceBall 4000 FLX
> +0673  HCL
> +	5000  Keyboard
> +0674  Key Mouse Electronic Enterprise Co., Ltd
> +0675  DrayTek Corp.
> +	0110  Vigor 128 ISDN TA
> +	0530  Vigor530 IEEE 802.11G Adapter (ISL3880+NET2280)
> +	0550  Vigor550
> +	1688  miniVigor 128 ISDN TA [HFC-S]
> +	6694  miniVigor 128 ISDN TA
> +0676  Teles AG
> +0677  Aiwa Co., Ltd
> +	07d5  TM-ED1285(USB)
> +	0fa1  TD-U8000 Tape Drive
> +0678  ACard Technology Corp.
> +067b  Prolific Technology, Inc.
> +	0000  PL2301 USB-USB Bridge
> +	0001  PL2302 USB-USB Bridge
> +	0307  Motorola Serial Adapter
> +	04bb  PL2303 Serial (IODATA USB-RSAQ2)
> +	0600  IDE Bridge
> +	0610  Onext EG210U MODEM
> +	0611  AlDiga AL-11U Quad-band GSM/GPRS/EDGE modem
> +	1231  Orico SATA External Hard Disk Drive Lay-Flat Docking Station with USB 3.0 & eSATA interfaces.
> +	2303  PL2303 Serial Port / Mobile Action MA-8910P
> +	2305  PL2305 Parallel Port
> +	2306  Raylink Bridge Controller
> +	2307  PL2307 USB-ATAPI4 Bridge
> +	2313  FITEL PHS U Cable Adaptor
> +	2315  Flash Disk Embedded Hub
> +	2316  Flash Disk Security Device
> +	2317  Mass Storage Device
> +	2501  PL2501 USB-USB Bridge (USB 2.0)
> +	2506  Kaser 8gB micro hard drive
> +	2507  PL2507 Hi-speed USB to IDE bridge controller
> +	2515  Flash Disk Embedded Hub
> +	2517  Flash Disk Mass Storage Device
> +	2528  Storage device (8gB thumb drive)
> +	2571  LG Electronics GE24LU21
> +	25a1  PL25A1 Host-Host Bridge
> +	2773  PL2773 SATAII bridge controller
> +	3400  Hi-Speed Flash Disk with TruePrint AES3400
> +	3500  Hi-Speed Flash Disk with TruePrint AES3500
> +	3507  PL3507 ATAPI6 Bridge
> +	aaa0  Prolific Pharos
> +	aaa2  PL2303 Serial Adapter (IODATA USB-RSAQ3)
> +	aaa3  PL2303x Serial Adapter
> +067c  Efficient Networks, Inc.
> +	1001  Siemens SpeedStream 100MBps Ethernet
> +	1022  Siemens SpeedStream 1022 802.11b Adapter
> +	1023  SpeedStream Wireless
> +	4020  SpeedStream 4020 ATM/ADSL Installer
> +	4031  Efficient ADSL Modem
> +	4032  SpeedStream 4031 ATM/ADSL Installer
> +	4033  SpeedStream 4031 ATM/ADSL Installer
> +	4060  Alcatel Speedstream 4060 ADSL Modem
> +	4062  Efficient Networks 4060 Loader
> +	5667  Efficient Networks Virtual Bus for ADSL Modem
> +	c031  SpeedStream 4031 ATM/ADSL Installer
> +	c032  SpeedStream 4031 ATM/ADSL Installer
> +	c033  SpeedStream 4031 ATM/ADSL Installer
> +	c060  SpeedStream 4060 Miniport ATM/ADSL Adapter
> +	d667  Efficient Networks Virtual Bus for ADSL Modem
> +	e240  Speedstream Ethernet Adapter E240
> +	e540  Speedstream Ethernet Adapter E240
> +067d  Hohner Corp.
> +067e  Intermec Technologies Corp.
> +	0801  HID Keyboard, Barcode scanner
> +	0803  VCP, Barcode scanner
> +	0805  VCP + UVC, Barcode scanner
> +	1001  Mobile Computer
> +067f  Virata, Ltd
> +	4552  DSL-200 ADSL Modem
> +	6542  DSL Modem
> +	6549  DSL Modem
> +	7541  DSL Modem
> +0680  Realtek Semiconductor Corp., CPP Div. (Avance Logic)
> +	0002  Arowana Optical Wheel Mouse MSOP-01
> +0681  Siemens Information and Communication Products
> +	0001  Dect Base
> +	0002  Gigaset 3075 Passive ISDN
> +	0005  ID-Mouse with Fingerprint Reader
> +	0012  I-Gate 802.11b Adapter
> +	001b  WLL013
> +	001d  Hipath 1000
> +	0022  Gigaset SX353 ISDN
> +	0026  DECT Data - Gigaset M34
> +	002b  A-100-I ADSL Modem
> +	002e  ADSL Router_S-141
> +	0034  GSM module MC35/ES75 USB Modem
> +	3c06  54g USB Network Adapter
> +0682  Victor Company of Japan, Ltd
> +0684  Actiontec Electronics, Inc.
> +0685  ZD Incorporated
> +	7000  HSDPA Modem
> +0686  Minolta Co., Ltd
> +	2001  PagePro 4110W
> +	2004  PagePro 1200W
> +	2005  Magicolor 2300 DL
> +	3001  PagePro 4100
> +	3005  PagePro 1250E
> +	3006  PagePro 1250W
> +	3009  Magicolor 2300W
> +	300b  PagePro 1350W
> +	300c  PagePro 1300W
> +	301b  Develop D 1650iD
> +	3023  Develop D 2050iD
> +	302e  Develop D 1650iD PCL
> +	3034  Develop D 2050iD PCL
> +	4001  Dimage 2300
> +	4003  Dimage 2330 Zoom Camera
> +	4004  Dimage Scan Elite II AF-2920 (2888)
> +	4005  Minolta DiMAGE E201 Mass Storage Device
> +	4006  Dimage 7 Camera
> +	4007  Dimage S304 Camera
> +	4008  Dimage 5 Camera
> +	4009  Dimage X Camera
> +	400a  Dimage S404 Camera
> +	400b  Dimage 7i Camera
> +	400c  Dimage F100 Camera
> +	400d  Dimage Scan Dual III AF-2840 (2889)
> +	400e  Dimage Scan Elite 5400 (2890)
> +	400f  Dimage 7Hi Camera
> +	4010  Dimage Xi Camera
> +	4011  Dimage F300 Camera
> +	4012  Dimage F200 Camera
> +	4014  Dimage S414 Camera
> +	4015  Dimage XT Camera [storage]
> +	4016  Dimage XT Camera [remote mode]
> +	4017  Dimage E223
> +	4018  Dimage Z1  Camera
> +	4019  Dimage A1 Camera [remote mode]
> +	401a  Dimage A1 Camera [storage]
> +	401c  Dimage X20 Camera
> +	401e  Dimage E323 Camera
> +068a  Pertech, Inc.
> +068b  Potrans International, Inc.
> +068e  CH Products, Inc.
> +	00d3  OEM 3 axis 5 button joystick
> +	00e2  HFX OEM Joystick
> +	00f0  Multi-Function Panel
> +	00f1  Pro Throttle
> +	00f2  Flight Sim Pedals
> +	00f3  Fighterstick
> +	00f4  Combatstick
> +	00fa  Ch Throttle Quadrant
> +	00ff  Flight Sim Yoke
> +	0500  GameStick 3D
> +	0501  CH Pro Pedals
> +	0504  F-16 Combat Stick
> +068f  Nihon KOHDEN
> +	c00d  MEK-6500
> +0690  Golden Bridge Electech, Inc.
> +0693  Hagiwara Sys-Com Co., Ltd
> +	0002  FlashGate SmartMedia Card Reader
> +	0003  FlashGate CompactFlash Card Reader
> +	0005  FlashGate
> +	0006  SM PCCard R/W and SPD
> +	0007  FlashGate ME (Authenticated)
> +	000a  SDCard/MMC Reader/Writer
> +0694  Lego Group
> +	0001  Mindstorms Tower
> +	0002  Mindstorms NXT
> +	0005  Mindstorms EV3
> +	0006  Mindstorms EV3 Firmware Update
> +0698  Chuntex (CTX)
> +	1786  1300ex Monitor
> +	2003  CTX M730V built in Camera
> +	9999  VLxxxx Monitor+Hub
> +0699  Tektronix, Inc.
> +	0347  AFG 3022B
> +	0365  TDS 2004B
> +	036a  TDS 2024B
> +069a  Askey Computer Corp.
> +	0001  VC010 Webcam [pwc]
> +	0303  Cable Modem
> +	0311  ADSL Router Remote NDIS Device
> +	0318  Remote NDIS Device
> +	0319  220V Remote NDIS Device
> +	0320  IEEE 802.11b Wireless LAN Card
> +	0321  Dynalink WLL013 / Compex WLU11A 802.11b Adapter
> +	0402  Scientific Atlanta WebSTAR 100 & 200 series Cable Modem
> +	0811  BT Virtual Bus for Helium
> +	0821  BT Voyager 1010 802.11b Adapter
> +	4402  Scientific Atlanta WebSTAR 2000 series Cable Modem
> +	4403  Scientific Atlanta WebSTAR 300 series Cable Modem
> +	4501  Scientific-Atlanta WebSTAR 2000 series Cable Modem
> +069b  Thomson, Inc.
> +	0704  DCM245 Cable Modem
> +	0705  THG540K Cable Modem
> +	0709  Lyra PDP2424
> +	070c  MP3 Player
> +	070d  MP3 Player
> +	070e  MP3 Player
> +	070f  RCA Lyra RD1071 MP3 Player
> +	0731  Lyra M200E256
> +	0761  RCA H100A
> +	0778  PEARL USB Device
> +	2220  RCA Kazoo RD1000 MP3 Player
> +	300a  RCA Lyra MP3 Player
> +	3012  MP3 Player
> +	3013  MP3 Player
> +	5557  RCA CDS6300
> +069d  Hughes Network Systems (HNS)
> +	0001  Satellite Receiver Device
> +	0002  Satellite Device
> +069e  Welcat Inc.
> +	0005  Marx CryptoBox v1.2
> +069f  Allied Data Technologies BV
> +	0010  Tornado Speakerphone FaxModem 56.0
> +	0011  Tornado Speakerphone FaxModem 56.0
> +	1000  ADT VvBus for CopperJet
> +	1004  CopperJet 821 RouterPlus
> +06a2  Topro Technology, Inc.
> +	0033  USB Mouse
> +06a3  Saitek PLC
> +	0006  Cyborg Gold Joystick
> +	0109  P880 Pad
> +	0160  ST290 Pro
> +	0200  Racing Wheel
> +	0201  Adrenalin Gamepad
> +	0241  Xbox Adrenalin Gamepad
> +	0255  X52 Flight Controller
> +	040b  P990 Dual Analog Pad
> +	040c  P2900 Wireless Pad
> +	0422  ST90 Joystick
> +	0460  ST290 Pro Flight Stick
> +	0463  ST290
> +	0464  Cyborg Evo
> +	0471  Cyborg Graphite Stick
> +	0501  R100 Sports Wheel
> +	0502  ST200 Stick
> +	0506  R220 Digital Wheel
> +	051e  Cyborg Digital II Stick
> +	052d  P750 Gamepad
> +	053c  X45 Flight Controller
> +	053f  X36F Flightstick
> +	056c  P2000 Tilt Pad
> +	056f  P2000 Tilt Pad
> +	05d2  PC Dash 2
> +	075c  X52 Flight Controller
> +	0762  Saitek X52 Pro Flight Control System
> +	0763  Pro Flight Rudder Pedals
> +	0764  Flight Pro Combat Rudder
> +	0805  R440 Force Wheel
> +	0b4e  Pro Flight Backlit Information Panel
> +	0bac  Pro Flight Yoke
> +	0c2d  Pro Flight Quadrant
> +	0d05  Pro Flight Radio Panel
> +	0d06  Flight Pro Multi Panel
> +	0d67  Pro Flight Switch Panel
> +	1003  GM2 Action Pad
> +	1009  Action Pad
> +	100a  SP550 Pad and Joystick Combo
> +	100b  SP550 Pad
> +	1509  P3000 Wireless Pad
> +	1589  P3000 Wireless Pad
> +	2541  X45 Flight Controller
> +	3509  P3000 RF GamePad
> +	353e  Cyborg Evo Wireless
> +	3589  P3000 Wireless Pad
> +	35be  Cyborg Evo
> +	5509  P3000 Wireless Pad
> +	712c  Pro Flight Yoke integrated hub
> +	8000  Gamers' Keyboard
> +	801e  Cyborg 3D Digital Stick II
> +	8020  Eclipse Keyboard
> +	8021  Eclipse II Keyboard
> +	802d  P750 Pad
> +	803f  X36 Flight Controller
> +	806f  P2000 Tilt Pad
> +	80c0  Pro Gamer Command Unit
> +	80c1  Cyborg Command Pad Unit
> +	a2ae  Pro Flight Instrument Panel
> +	a502  Gaming Mouse
> +	f518  P3200 Rumble Force Game Pad
> +	f51a  P3600
> +	ff04  R440 Force Wheel
> +	ff0c  Cyborg Force Rumble Pad
> +	ff0d  P2600 Rumble Force Pad
> +	ff12  Cyborg 3D Force Stick
> +	ff17  ST 330 Rumble Force Stick
> +	ff52  Cyborg 3D Rumble Force Joystick
> +	ffb5  Cyborg Evo Force Joystick
> +06a4  Xiamen Doowell Electron Co., Ltd
> +06a5  Divio
> +	0000  Typhoon Webcam 100k [nw8000]
> +	d001  ProLink DS3303u Webcam
> +	d800  Chicony TwinkleCam
> +	d820  Wize Media 1000
> +06a7  MicroStore, Inc.
> +06a8  Topaz Systems, Inc.
> +	0042  SignatureGem 1X5 Pad
> +	0043  SignatureGem 1X5-HID Pad
> +06a9  Westell
> +	0005  WireSpeed Dual Connect Modem
> +	0006  WireSpeed Dual Connect Modem
> +	000a  WireSpeed Dual Connect Modem
> +	000b  WireSpeed Dual Connect Modem
> +	000e  A90-211WG-01 802.11g Adapter [Intersil ISL3887]
> +06aa  Sysgration, Ltd
> +06ac  Fujitsu Laboratories of America, Inc.
> +06ad  Greatland Electronics Taiwan, Ltd
> +06ae  Professional Multimedia Testing Centre
> +06af  Harting, Inc. of North America
> +06b8  Pixela Corp.
> +06b9  Alcatel Telecom
> +	0120  SpeedTouch 120g 802.11g Wireless Adapter [Intersil ISL3886]
> +	0121  SpeedTouch 121g Wireless Dongle
> +	2001  SPEED TOUCH Card
> +	4061  SpeedTouch ISDN or ADSL Modem
> +	4062  SpeedTouch ISDN or ADSL router
> +	a5a5  DynaMiTe Modem
> +06ba  Smooth Cord & Connector Co., Ltd
> +06bb  EDA, Inc.
> +06bc  Oki Data Corp.
> +	000b  Okipage 14ex Printer
> +	0027  Okipage 14e
> +	00f7  OKI B4600 Mono Printer
> +	015e  OKIPOS 411/412 POS Printer
> +	01c9  OKI B430 Mono Printer
> +	01db  MC860 Multifunction Printer
> +	01dc  MC860 Multifunction Printer
> +	01dd  MC860 Multifunction Printer
> +	01de  MC860 Multifunction Printer
> +	01df  CX2633 Multifunction Printer
> +	01e0  ES8460 Multifunction Printer
> +	020b  OKI ES4140 Mono Printer
> +	021f  ES8460 Multifunction Printer
> +	026f  MC351 Multifunction Printer
> +	0270  MC351 Multifunction Printer
> +	0271  MC351 Multifunction Printer
> +	0272  MC351 Multifunction Printer
> +	0273  MC351 Multifunction Printer
> +	0274  ES3451 Multifunction Printer
> +	0275  MC351 Multifunction Printer
> +	0276  MC351 Multifunction Printer
> +	0277  MC351 Multifunction Printer
> +	0278  MC351 Multifunction Printer
> +	0279  MC361 Multifunction Printer
> +	027a  MC361 Multifunction Printer
> +	027b  MC361 Multifunction Printer
> +	027c  MC361 Multifunction Printer
> +	027d  MC361 Multifunction Printer
> +	027e  ES3461 Multifunction Printer
> +	027f  MC361 Multifunction Printer
> +	0280  MC361 Multifunction Printer
> +	0281  MC361 Multifunction Printer
> +	0282  MC361 Multifunction Printer
> +	0283  MC561 Multifunction Printer
> +	0284  MC561 Multifunction Printer
> +	0285  MC561 Multifunction Printer
> +	0286  MC561 Multifunction Printer
> +	0287  CX2731 Multifunction Printer
> +	0288  ES5461 Multifunction Printer
> +	0289  ES5461 Multifunction Printer
> +	028a  MC561 Multifunction Printer
> +	028b  MC561 Multifunction Printer
> +	028c  MC561 Multifunction Printer
> +	02b4  MC861 Multifunction Printer
> +	02b5  ES8461 Multifunction Printer
> +	02b6  MC851 Multifunction Printer
> +	02b7  ES8451 Multifunction Printer
> +	02bb  OKI PT390 POS Printer
> +	02bd  MB461 Multifunction Printer
> +	02be  MB471 Multifunction Printer
> +	02bf  MB491 Multifunction Printer
> +	02ca  ES4161 Multifunction Printer
> +	02cb  ES4191 Multifunction Printer
> +	02d4  MPS4200mb Multifunction Printer
> +	02e7  MC352 Multifunction Printer
> +	02e8  MC362 Multifunction Printer
> +	02e9  MC562 Multifunction Printer
> +	02ea  ES3452 Multifunction Printer
> +	02eb  ES5462 Multifunction Printer
> +	02ee  MB451 Multifunction Printer
> +	0383  MC563 Multifunction Printer
> +	0a91  B2500MFP (printer+scanner)
> +	3801  B6100 Laser Printer
> +06bd  AGFA-Gevaert NV
> +	0001  SnapScan 1212U
> +	0002  SnapScan 1236U
> +	0100  SnapScan Touch
> +	0101  SNAPSCAN ELITE
> +	0200  ScanMaker 8700
> +	02bf  DUOSCAN f40
> +	0400  CL30
> +	0401  Mass Storage
> +	0403  ePhoto CL18 Camera
> +	0404  ePhoto CL20 Camera
> +	2061  SnapScan 1212U (?)
> +	208d  Snapscan e40
> +	208f  SnapScan e50
> +	2091  SnapScan e20
> +	2093  SnapScan e10
> +	2095  SnapScan e25
> +	2097  SnapScan e26
> +	20fd  SnapScan e52
> +	20ff  SnapScan e42
> +06be  AME Optimedia Technology Co., Ltd
> +	0800  Optimedia Camera
> +	1005  Dazzle DPVM! (1005)
> +	d001  P35U Camera Capture
> +06bf  Leoco Corp.
> +06c2  Phidgets Inc. (formerly GLAB)
> +	0030  PhidgetRFID
> +	0031  RFID reader
> +	0038  4-Motor PhidgetServo v3.0
> +	0039  1-Motor PhidgetServo v3.0
> +	003a  8-Motor PhidgetAvancedServo
> +	0040  PhidgetInterface Kit 0-0-4
> +	0044  PhidgetInterface Kit 0-16-16
> +	0045  PhidgetInterface Kit 8-8-8
> +	0048  PhidgetStepper (Under Development)
> +	0049  PhidgetTextLED Ver 1.0
> +	004a  PhidgetLED Ver 1.0
> +	004b  PhidgetEncoder Ver 1.0
> +	0051  PhidgetInterface Kit 0-5-7 (Custom)
> +	0052  PhidgetTextLCD
> +	0053  PhidgetInterfaceKit 0-8-8
> +	0058  PhidgetMotorControl Ver 1.0
> +	0070  PhidgetTemperatureSensor Ver 1.0
> +	0071  PhidgetAccelerometer Ver 1.0
> +	0072  PhidgetWeightSensor Ver 1.0
> +	0073  PhidgetHumiditySensor
> +	0074  PhidgetPHSensor
> +	0075  PhidgetGyroscope
> +06c4  Bizlink International Corp.
> +06c5  Hagenuk, GmbH
> +06c6  Infowave Software, Inc.
> +06c8  SIIG, Inc.
> +06c9  Taxan (Europe), Ltd
> +	0005  Monitor Control
> +	0007  Monitor Control
> +	0009  Monitor Control
> +06ca  Newer Technology, Inc.
> +	2003  uSCSI
> +06cb  Synaptics, Inc.
> +	0001  TouchPad
> +	0002  Integrated TouchPad
> +	0003  cPad
> +	0005  Touchpad/FPS
> +	0006  TouchScreen
> +	0007  USB Styk
> +	0008  WheelPad
> +	0009  Composite TouchPad and TrackPoint
> +	000e  HID Device
> +	0010  Wireless TouchPad
> +	0013  DisplayPad
> +	009a  Metallica MIS Touch Fingerprint Reader
> +	00a2  Metallica MOH Touch Fingerprint Reader
> +	00bd  Prometheus MIS Touch Fingerprint Reader
> +	2970  touchpad
> +06cc  Terayon Communication Systems
> +	0101  Cable Modem
> +	0102  Cable Modem
> +	0103  Cable Modem
> +	0104  Cable Modem
> +	0304  Cable Modem
> +06cd  Keyspan
> +	0101  USA-28 PDA [no firmware]
> +	0102  USA-28X PDA [no firmware]
> +	0103  USA-19 PDA [no firmware]
> +	0104  PDA [prerenum]
> +	0105  USA-18X PDA [no firmware]
> +	0106  USA-19W PDA [no firmware]
> +	0107  USA-19 PDA
> +	0108  USA-19W PDA
> +	0109  USA-49W serial adapter [no firmware]
> +	010a  USA-49W serial adapter
> +	010b  USA-19Qi serial adapter [no firmware]
> +	010c  USA-19Qi serial adapter
> +	010d  USA-19Q serial Adapter (no firmware)
> +	010e  USA-19Q serial Adapter
> +	010f  USA-28 PDA
> +	0110  USA-28Xb PDA
> +	0111  USA-18 serial Adapter
> +	0112  USA-18X PDA
> +	0113  USA-28Xb PDA [no firmware]
> +	0114  USA-28Xa PDA [no firmware]
> +	0115  USA-28Xa PDA
> +	0116  USA-18XA serial Adapter (no firmware)
> +	0117  USA-18XA serial Adapter
> +	0118  USA-19QW PDA [no firmware]
> +	0119  USA-19QW PDA
> +	011a  USA-49Wlc serial adapter [no firmware]
> +	011b  MPR Serial Preloader (MPRQI)
> +	011c  MPR Serial (MPRQI)
> +	011d  MPR Serial Preloader (MPRQ)
> +	011e  MPR Serial (MPRQ)
> +	0121  USA-19hs serial adapter
> +	012a  USA-49Wlc serial adapter
> +	0201  UIA-10 Digital Media Remote [Cypress AN2131SC]
> +	0202  UIA-11 Digital Media Remote
> +06ce  Contec
> +	8311  COM-1(USB)H
> +06cf  SpheronVR AG
> +	1010  PanoCam 10
> +	1012  PanoCam 12/12X
> +06d0  LapLink, Inc.
> +	0622  LapLink Gold USB-USB Bridge [net1080]
> +06d1  Daewoo Electronics Co., Ltd
> +06d3  Mitsubishi Electric Corp.
> +	0284  FX-USB-AW/-BD RS482 Converters
> +	0380  CP8000D Port
> +	0381  CP770D Port
> +	0385  CP900D Port
> +	0387  CP980D Port
> +	038b  CP3020D Port
> +	038c  CP900DW(ID) Port
> +	0393  CP9500D/DW Port
> +	0394  CP9000D/DW Port
> +	0398  P93D
> +	03a1  CP9550D/DW Port
> +	03a5  CP9550DW-S
> +	03a9  CP-9600DW
> +	03aa  CP3020DA
> +	03ad  CP-9800D/DW
> +	03ae  CP-9800DW-S
> +	0f10  Hori/Namco FlightStick 2
> +	3b10  P95D
> +	3b21  CP-9810D/DW
> +	3b30  CP-D70DW / CP-D707DW
> +	3b31  CP-K60DW-S
> +	3b36  CP-D80DW
> +	3b50  CP-W5000DW
> +	3b60  CP-D90DW
> +	3b80  CP-M1
> +06d4  Cisco Systems
> +06d5  Toshiba
> +	4000  Japanese Keyboard
> +06d6  Aashima Technology B.V.
> +	0025  Gamepad
> +	0026  Predator TH 400 Gamepad
> +	002d  Trust PowerC@m 350FT
> +	002e  Trust PowerC@m 350FS
> +	0030  Trust 710 LCD POWERC@M ZOOM - MSD
> +	0031  Trust 610/710 LCD POWERC@M ZOOM
> +	003a  Trust PowerC@m 770Z (mass storage mode)
> +	003b  Trust PowerC@m 770Z (webcam mode)
> +	003c  Trust 910z PowerC@m
> +	003f  Trust 735S POWERC@M ZOOM, WDM DSC Bulk Driver
> +	0050  Trust 738AV LCD PV Digital Camera
> +	0062  TRUST 782AV LCD P. V. Video Capture
> +	0066  TRUST Digital PCTV and Movie Editor
> +	0067  Trust 350FS POWERC@M FLASH
> +	006b  TRUST AUDIO VIDEO EDITOR
> +06d7  Network Computing Devices (NCD)
> +06d8  Technical Marketing Research, Inc.
> +06da  Phoenixtec Power Co., Ltd
> +	0002  UPS
> +	0003  1300VA UPS
> +06db  Paradyne
> +06dc  Foxlink Image Technology Co., Ltd
> +	0012  Scan 1200c Scanner
> +	0014  Prolink Winscan Pro 2448U
> +06de  Heisei Electronics Co., Ltd
> +06e0  Multi-Tech Systems, Inc.
> +	0319  MT9234ZBA-USB MultiModem ZBA
> +	f101  MT5634ZBA-USB MultiModemUSB (old firmware)
> +	f103  MT5634MU MultiMobileUSB
> +	f104  MT5634ZBA-USB MultiModemUSB (new firmware)
> +	f107  MT5634ZBA-USB-V92 MultiModemUSB
> +	f120  MT9234ZBA-USB-CDC-ACM-XR MultiModem ZBA CDC-ACM-XR
> +06e1  ADS Technologies, Inc.
> +	0008  UBS-10BT Ethernet [klsi]
> +	0009  UBS-10BT Ethernet
> +	0833  Mass Storage Device
> +	a155  FM Radio Receiver/Instant FM Music (RDX-155-EF)
> +	a160  Instant Video-To-Go RDX-160 (no firmware)
> +	a161  Instant Video-To-Go RDX-160
> +	a190  Instand VCD Capture
> +	a191  Instant VideoXpress
> +	a337  Mini DigitalTV
> +	a701  DVD Xpress
> +	a708  saa7114H video input card (Instant VideoMPX)
> +	b337  Mini DigitalTV
> +	b701  DVD Xpress B
> +06e4  Alcatel Microelectronics
> +06e6  Tiger Jet Network, Inc.
> +	0200  Internet Phone
> +	0201  Internet Phone
> +	0202  Composite Device
> +	0203  Internet Phone
> +	0210  Composite Device
> +	0211  Internet Phone
> +	0212  Internet Phone
> +	031c  Internet Phone
> +	031d  Internet Phone
> +	031e  Internet Phone
> +	3200  Composite Device
> +	3201  Internet Phone
> +	3202  Composite Device
> +	3203  Composite Device
> +	7200  Composite Device
> +	7210  Composite Device
> +	7250  Composite Device
> +	825c  Internet Phone
> +	831c  Internet Phone
> +	831d  Composite Device
> +	831e  Composite Device
> +	b200  Composite Device
> +	b201  Composite Device
> +	b202  Internet Phone
> +	b210  Internet Phone
> +	b211  Composite Device
> +	b212  Composite Device
> +	b250  Composite Device
> +	b251  Internet Phone
> +	b252  Internet Phone
> +	c200  Internet Phone
> +	c201  Internet Phone
> +	c202  Composite Device
> +	c203  Internet Phone
> +	c210  Personal PhoneGateway
> +	c211  Personal PhoneGateway
> +	c212  Personal PhoneGateway
> +	c213  PPG Device
> +	c25c  Composite Device
> +	c290  PPG Device
> +	c291  PPG Device
> +	c292  PPG Device
> +	c293  Personal PhoneGateway
> +	c31c  Composite Device
> +	c39c  Personal PhoneGateway
> +	c39d  PPG Device
> +	c39e  PPG Device
> +	c39f  PPG Device
> +	c700  Internet Phone
> +	c701  Internet Phone
> +	c702  Composite Device
> +	c703  Internet Phone
> +	c710  VoIP Combo Device
> +	c711  VoIP Combo
> +	c712  VoIP Combo Device
> +	c713  VoIP Combo Device
> +	cf00  Composite Device
> +	cf01  Internet Phone
> +	cf02  Internet Phone
> +	cf03  Composite Device
> +	d210  Personal PhoneGateway
> +	d211  PPG Device
> +	d212  PPG Device
> +	d213  Personal PhoneGateway
> +	d700  Composite Device
> +	d701  Composite Device
> +	d702  Internet Phone
> +	d703  Composite Device
> +	d710  VoIP Combo
> +	d711  VoIP Combo Device
> +	d712  VoIP Combo
> +	d713  VoIP Combo
> +	df00  Composite Device
> +	df01  Composite Device
> +	df02  Internet Phone
> +	df03  Internet Phone
> +	f200  Internet Phone
> +	f201  Internet Phone
> +	f202  Composite Device
> +	f203  Composite Device
> +	f210  Internet Phone
> +	f250  Composite Device
> +	f252  Internet Phone
> +	f310  Internet Phone
> +	f350  Composite Device
> +06ea  Sirius Technologies
> +	0001  NetCom Roadster II 56k
> +	0002  Roadster II 56k
> +06eb  PC Expert Tech. Co., Ltd
> +06ef  I.A.C. Geometrische Ingenieurs B.V.
> +06f0  T.N.C Industrial Co., Ltd
> +	de01  DualCam Video Camera
> +	de02  DualCam Still Camera
> +06f1  Opcode Systems, Inc.
> +	a011  SonicPort
> +	a021  SonicPort Optical
> +06f2  Emine Technology Co.
> +	0011  KVM Switch Keyboard
> +06f6  Wintrend Technology Co., Ltd
> +06f7  Wailly Technology Ltd
> +	0003  USB->Din 4 Adaptor
> +06f8  Guillemot Corp.
> +	3002  Hercules Blog Webcam
> +	3004  Hercules Classic Silver
> +	3005  Hercules Dualpix Exchange
> +	3007  Hercules Dualpix Chat and Show
> +	3020  Hercules Webcam EC300
> +	a300  Dual Analog Leader GamePad
> +	b000  Hercules DJ Console
> +	b121  Hercules P32 DJ
> +	c000  Hercules Muse Pocket
> +	d002  Hercules DJ Console
> +	e000  HWGUSB2-54 WLAN
> +	e010  HWGUSB2-54-LB
> +	e020  HWGUSB2-54V2-AP
> +	e031  Hercules HWNUm-300 Wireless N mini [Realtek RTL8191SU]
> +	e032  HWGUm-54 [Hercules Wireless G Ultra Mini Key]
> +	e033  Hercules HWNUp-150 802.11n Wireless N Pico [Realtek RTL8188CUS]
> +06f9  ASYST electronic d.o.o.
> +06fa  HSD S.r.L
> +06fc  Motorola Semiconductor Products Sector
> +06fd  Boston Acoustics
> +	0101  Audio Device
> +	0102  Audio Device
> +	0201  2-piece Audio Device
> +06fe  Gallant Computer, Inc.
> +0701  Supercomal Wire & Cable SDN. BHD.
> +0703  Bvtech Industry, Inc.
> +0705  NKK Corp.
> +0706  Ariel Corp.
> +0707  Standard Microsystems Corp.
> +	0100  2202 Ethernet [klsi]
> +	0200  2202 Ethernet [pegasus]
> +	0201  EZ Connect USB Ethernet
> +	ee04  SMCWUSB32 802.11b Wireless LAN Card
> +	ee06  SMC2862W-G v1 EZ Connect 802.11g Adapter [Intersil ISL3886]
> +	ee13  SMC2862W-G v2 EZ Connect 802.11g Adapter [Intersil ISL3887]
> +0708  Putercom Co., Ltd
> +	047e  USB-1284 BRIDGE
> +0709  Silicon Systems, Ltd (SSL)
> +070a  Oki Electric Industry Co., Ltd
> +	4002  Bluetooth Device
> +	4003  Bluetooth Device
> +070d  Comoss Electronic Co., Ltd
> +070e  Excel Cell Electronic Co., Ltd
> +0710  Connect Tech, Inc.
> +	0001  WhiteHeat (fake ID)
> +	8001  WhiteHeat
> +0711  Magic Control Technology Corp.
> +	0100  Hub
> +	0180  IRXpress Infrared Device
> +	0181  IRXpress Infrared Device
> +	0200  BAY-3U1S1P Serial Port
> +	0210  MCT1S Serial Port
> +	0230  MCT-232 Serial Port
> +	0231  PS/2 Mouse Port
> +	0232  Serial On Port
> +	0240  PS/2 to USB Converter
> +	0260  PS/2 Keyboard and Mouse
> +	0300  BAY-3U1S1P Parallel Port
> +	0302  Parallel Port
> +	0900  SVGA Adapter
> +	5001  Trigger UV-002BD[Startech USBVGAE]
> +	5100  Magic Control Technology Corp. (USB2VGA dongle)
> +0713  Interval Research Corp.
> +0714  NewMotion, Inc.
> +	0003  ADB converter
> +0717  ZNK Corp.
> +0718  Imation Corp.
> +	0002  SuperDisk 120MB
> +	0003  SuperDisk 120MB (Authenticated)
> +	0060  Flash Drive
> +	0061  Flash Drive
> +	0062  Flash Drive
> +	0063  Swivel Flash Drive
> +	0064  Flash Drive
> +	0065  Flash Drive
> +	0066  Flash Drive
> +	0067  Flash Drive
> +	0068  Flash Drive
> +	0084  Flash Drive Mini
> +	043c  Flash drive 16GB [Nano Pro]
> +	0582  Revo Flash Drive
> +	0622  TDK Trans-It 4GB
> +	0624  TDK Trans-It 16GB
> +	1120  RDX External dock (redbud)
> +	4006  8x Slim DVD Multi-Format Recorder External
> +	d000  Disc Stakka CD/DVD Manager
> +0719  Tremon Enterprises Co., Ltd
> +071b  Domain Technologies, Inc.
> +	0002  DTI-56362-USB Digital Interface Unit
> +	0101  Audio4-USB DSP Data Acquisition Unit
> +	0184  Archos 2 8GB EM184RB
> +	0201  Audio4-5410 DSP Data Acquisition Unit
> +	0301  SB-USB JTAG Emulator
> +	3203  Rockchip Media Player
> +	32bb  Music Mediatouch
> +071c  Xionics Document Technologies, Inc.
> +071d  Eicon Networks Corp.
> +	1000  Diva 2.01 S/T [PSB2115F]
> +	1003  Diva ISDN 2.0
> +	1005  Diva ISDN 4.0 [HFC-S]
> +	2000  Teledat Surf
> +071e  Ariston Technologies
> +0720  Keyence Corp.
> +	8001  LJ-V7001
> +0723  Centillium Communications Corp.
> +	0002  Palladia 300/400 Adsl Modem
> +0726  Vanguard International Semiconductor-America
> +0729  Amitm
> +	1000  USC-1000 Serial Port
> +072e  Sunix Co., Ltd
> +072f  Advanced Card Systems, Ltd
> +	0001  AC1030-based SmartCard Reader
> +	0008  ACR 80 Smart Card Reader
> +	0100  AET65
> +	0101  AET65
> +	0102  AET62
> +	0103  AET62
> +	0901  ACR1281U-C4 (BSI)
> +	1000  PLDT Drive
> +	1001  PLDT Drive
> +	2011  ACR88U
> +	2100  ACR128U
> +	2200  ACR122U
> +	220a  ACR1281U-C5 (BSI)
> +	220c  ACR1283 Bootloader
> +	220f  ACR1281U-C2 (qPBOC)
> +	2211  ACR1261 1S Dual Reader
> +	2214  ACR1222 1SAM PICC Reader
> +	2215  ACR1281 2S CL Reader
> +	221a  ACR1251U-A1
> +	221b  ACR1251U-C
> +	2224  ACR1281 1S Dual Reader
> +	222b  ACR1222U-C8
> +	222c  ACR1283L-D2
> +	222d  [OEM Reader]
> +	222e  ACR123U
> +	2242  ACR1251 1S Dual Reader
> +	8002  AET63 BioTRUSTKey
> +	8003  ACR120
> +	8103  ACR120
> +	8201  APG8201
> +	8900  ACR89U-A1
> +	8901  ACR89U-A2
> +	8902  ACR89U-A3
> +	9000  ACR38 AC1038-based Smart Card Reader
> +	9006  CryptoMate
> +	90cc  ACR38 SmartCard Reader
> +	90ce  [OEM Reader]
> +	90cf  ACR38 SAM Smart Card Reader
> +	90d0  PertoSmart EMV - Card Reader
> +	90d2  ACR83U
> +	90d8  ACR3801
> +	90db  CryptoMate64
> +	b000  ACR3901U
> +	b100  ACR39U
> +	b101  ACR39K
> +	b102  ACR39T
> +	b103  ACR39F
> +	b104  ACR39U-SAM
> +	b106  ACOS5T2
> +	b200  ACOS5T1
> +	b301  ACR32-A1
> +0731  Susteen, Inc.
> +	0528  SonyEricsson DCU-11 Cable
> +0732  Goldfull Electronics & Telecommunications Corp.
> +0733  ViewQuest Technologies, Inc.
> +	0101  Digital Video Camera
> +	0110  VQ110 Video Camera
> +	0401  CS330 Webcam
> +	0402  M-318B Webcam
> +	0430  Intel Pro Share Webcam
> +	0630  VQ630 Dual Mode Digital Camera(Bulk)
> +	0631  Hercules Dualpix
> +	0780  Smart Cam Deluxe(composite)
> +	1310  Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 (mass storage mode)
> +	1311  Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 (PC Cam mode)
> +	1314  Mercury 2.1MEG Deluxe Classic Cam
> +	2211  Jenoptik jdc 21 LCD Camera
> +	2221  Mercury Digital Pro 3.1p
> +	3261  Concord 3045 spca536a Camera
> +	3281  Cyberpix S550V
> +0734  Lasat Communications A/S
> +	0001  560V Modem
> +	0002  Lasat 560V Modem
> +	043a  DVS Audio
> +	043b  3DeMon USB Capture
> +0735  Asuscom Network
> +	2100  ISDN Adapter
> +	2101  ISDN Adapter
> +	6694  ISDNlink 128K
> +	c541  ISDN TA 280
> +0736  Lorom Industrial Co., Ltd
> +0738  Mad Catz, Inc.
> +	2215  X-55 Rhino Stick
> +	2237  V.1 Stick
> +	4506  Wireless Controller
> +	4507  XBox Device
> +	4516  Control Pad
> +	4520  Control Pad Pro
> +	4522  LumiCON
> +	4526  Control Pad Pro
> +	4530  Universal MC2 Racing Wheel and Pedals
> +	4536  MicroCON
> +	4540  Beat Pad
> +	4556  Lynx Wireless Controller
> +	4566  XBox Device
> +	4576  XBox Device
> +	4586  MicroCON Wireless Controller
> +	4588  Blaster
> +	45ff  Beat Pad
> +	4716  Wired Xbox 360 Controller
> +	4718  Street Fighter IV FightStick SE for Xbox 360
> +	4726  Xbox 360 Controller
> +	4728  Street Fighter IV FightPad for Xbox 360
> +	4730  MC2 Racing Wheel for Xbox 360
> +	4736  MicroCON for Xbox 360
> +	4738  Street Fighter IV Wired Controller for Xbox 360
> +	4740  Beat Pad for Xbox 360
> +	4743  Beat Pad Pro
> +	4758  Arcade Game Stick
> +	4a01  FightStick TE 2 for Xbox One
> +	6040  Beat Pad Pro
> +	8818  Street Fighter IV Arcade FightStick (PS3)
> +	9871  Portable Drum Kit
> +	a109  S.T.R.I.K.E.7 Keyboard
> +	a215  X-55 Rhino Throttle
> +	b726  Modern Warfare 2 Controller for Xbox 360
> +	b738  Marvel VS Capcom 2 TE FightStick for Xbox 360
> +	beef  Joytech Neo SE Advanced Gamepad
> +	cb02  Saitek Cyborg Rumble Pad
> +	cb03  Saitek P3200 Rumble Pad
> +	cb29  Saitek Aviator Stick AV8R02
> +	f738  Super Street Fighter IV FightStick TE S for Xbox 360
> +073a  Chaplet Systems, Inc.
> +	2230  infrared dongle for remote
> +073b  Suncom Technologies
> +073c  Industrial Electronic Engineers, Inc.
> +	0305  Pole Display (PC305-3415  2 x 20 Line Display)
> +	0322  Pole Display (PC322-3415  2 x 20 Line Display)
> +	0324  Pole Display (LB324-USB   4 x 20 Line Display)
> +	0330  Pole Display (P330-3415   2 x 20 Line Display)
> +	0424  Pole Display (SP324-4415  4 x 20 Line Display)
> +	0450  Pole Display (L450-USB   Graphic Line Display)
> +	0505  Pole Display (SPC505-3415 2 x 20 Line Display)
> +	0522  Pole Display (SPC522-3415 2 x 20 Line Display)
> +	0624  Pole Display (SP324-3415  4 x 20 Line Display)
> +073d  Eutron S.p.a.
> +	0000  SmartKey
> +	0005  Crypto Token
> +	0007  CryptoIdentity CCID
> +	0025  SmartKey 3
> +	0c00  Pocket Reader
> +	0d00  StarSign Bio Token 3.0 EU
> +073e  NEC, Inc.
> +	0301  Game Pad
> +0742  Stollmann
> +	2008  ISDN TA [HFC-S]
> +	2009  ISDN TA [HFC-S]
> +	200a  ISDN TA [HFC-S]
> +0745  Syntech Information Co., Ltd
> +0746  Onkyo Corp.
> +	4700  Integra MZA-4.7
> +	5500  SE-U55 Audio Device
> +0747  Labway Corp.
> +0748  Strong Man Enterprise Co., Ltd
> +0749  EVer Electronics Corp.
> +074a  Ming Fortune Industry Co., Ltd
> +074b  Polestar Tech. Corp.
> +074c  C-C-C Group PLC
> +074d  Micronas GmbH
> +	3553  Composite USB-Device
> +	3554  Composite USB-Device
> +	3556  Composite USB-Device
> +074e  Digital Stream Corp.
> +	0001  PS/2 Adapter
> +	0002  PS/2 Adapter
> +0755  Aureal Semiconductor
> +0757  Network Technologies, Inc.
> +	0a00  SUN Adapter
> +0758  Carl Zeiss Microscopy GmbH
> +075b  Sophisticated Circuits, Inc.
> +	0001  Kick-off! Watchdog
> +0763  M-Audio
> +	0115  O2 / KeyRig 25
> +	0117  Trigger Finger
> +	0119  MidAir
> +	0150  M-Audio Uno
> +	0160  M-Audio 1x1
> +	0192  M-Audio Keystation 88es
> +	0193  ProKeys 88
> +	0194  ProKeys 88sx
> +	0195  Oxygen 8 v2
> +	0196  Oxygen 49
> +	0197  Oxygen 61
> +	0198  Axiom 25
> +	0199  Axiom 49
> +	019a  Axiom 61
> +	019b  KeyRig 49
> +	019c  KeyStudio
> +	1001  MidiSport 2x2
> +	1002  MidiSport 2x2
> +	1003  MidiSport 2x2
> +	1010  MidiSport 1x1
> +	1011  MidiSport 1x1
> +	1014  M-Audio Keystation Loader
> +	1015  M-Audio Keystation
> +	1020  Midisport 4x4
> +	1021  MidiSport 4x4
> +	1030  M-Audio MIDISPORT 8x8
> +	1031  MidiSport 8x8/s Loader
> +	1033  MidiSport 8x8/s
> +	1040  M-Audio MidiSport 2x4 Loader
> +	1041  M-Audio MidiSport 2x4
> +	1110  MidiSport 1x1
> +	2001  M Audio Quattro
> +	2002  M Audio Duo
> +	2003  M Audio AudioPhile
> +	2004  M-Audio MobilePre
> +	2006  M-Audio Transit
> +	2007  M-Audio Sonica Theater
> +	2008  M-Audio Ozone
> +	200d  M-Audio OmniStudio
> +	200f  M-Audio MobilePre
> +	2010  M-Audio Fast Track
> +	2012  M-Audio Fast Track Pro
> +	2013  M-Audio JamLab
> +	2015  M-Audio RunTime DFU
> +	2016  M-Audio RunTime DFU
> +	2019  M-Audio Ozone Academic
> +	201a  M-Audio Micro
> +	201b  M-Audio RunTime DFU
> +	201d  M-Audio Producer
> +	2024  M-Audio Fast Track MKII
> +	2080  M-Audio Fast Track Ultra
> +	2081  M-Audio RunTime DFU / Fast Track Ultra 8R
> +	2803  M-Audio Audiophile DFU
> +	2804  M-Audio MobilePre DFU
> +	2806  M-Audio Transit DFU
> +	2815  M-Audio DFU
> +	2816  M-Audio DFU
> +	281b  M-Audio DFU
> +	2880  M-Audio DFU
> +	2881  M-Audio DFU
> +0764  Cyber Power System, Inc.
> +	0005  Cyber Power UPS
> +	0501  CP1500 AVR UPS
> +	0601  PR1500LCDRT2U UPS
> +0765  X-Rite, Inc.
> +	5001  Huey PRO Colorimeter
> +	5010  X-Rite Pantone Color Sensor
> +	5020  i1 Display Pro
> +	6003  ColorMunki Smile
> +	d094  X-Rite DTP94 [Quato Silver Haze Pro]
> +0766  Jess-Link Products Co., Ltd
> +	0017  Packard Bell Carbon
> +	001b  Packard Bell Go
> +	0204  TopSpeed Cyberlink Remote Control
> +0767  Tokheim Corp.
> +0768  Camtel Technology Corp.
> +	0006  Camtel Technology USB TV Genie Pro FM Model TVB330
> +	0023  eHome Infrared Receiver
> +0769  Surecom Technology Corp.
> +	11f2  EP-9001-g 802.11g 54M WLAN Adapter
> +	11f3  RT2570
> +	11f7  802.11g 54M WLAN Adapter
> +	31f3  RT2573
> +076a  Smart Technology Enablers, Inc.
> +076b  OmniKey AG
> +	0596  CardMan 2020
> +	1021  CardMan 1021
> +	1221  CardMan 1221
> +	1784  CardMan 6020
> +	3021  CardMan 3021 / 3121
> +	3022  CardMan 3121 (HID Technologies)
> +	3610  CardMan 3620
> +	3621  CardMan 3621
> +	3821  CardMan 3821
> +	4321  CardMan 4321
> +	5121  CardMan 5121
> +	5125  CardMan 5125
> +	5321  CardMan 5321
> +	5340  CardMan 5021 CL
> +	6622  CardMan 6121
> +	a011  CCID Smart Card Reader Keyboard
> +	a021  CCID Smart Card Reader
> +	a022  CardMan Smart@Link
> +	c000  CardMan 3x21 CS
> +	c001  CardMan 5121 CS
> +076c  Partner Tech
> +	0204  CD7220 Communications Port
> +	0302  RP-600
> +076d  Denso Corp.
> +076e  Kuan Tech Enterprise Co., Ltd
> +076f  Jhen Vei Electronic Co., Ltd
> +0770  Welch Allyn, Inc - Medical Division
> +0771  Observator Instruments BV
> +	4455  OMC45III
> +	ae0f  OMC45III
> +0772  Your data Our Care
> +0774  AmTRAN Technology Co., Ltd
> +0775  Longshine Electronics Corp.
> +0776  Inalways Corp.
> +0777  Comda Enterprise Corp.
> +0778  Volex, Inc.
> +0779  ON Semiconductor (formerly Fairchild)
> +	0133  FUSB307B
> +	0134  FUSB308B
> +077a  Sankyo Seiki Mfg. Co., Ltd
> +077b  Linksys
> +	08be  BEFCMU10 v4 Cable Modem
> +	2219  WUSB11 V2.6 802.11b Adapter
> +	2226  USB200M 100baseTX Adapter
> +	2227  Network Everywhere NWU11B
> +077c  Forward Electronics Co., Ltd
> +	0005  NEC Keyboard
> +077d  Griffin Technology
> +	0223  IMic Audio In/Out
> +	0405  iMate, ADB Adapter
> +	0410  PowerMate
> +	041a  PowerWave
> +	04aa  SoundKnob
> +	07af  iMic
> +	1016  AirClick
> +	627a  Radio SHARK
> +077e  Softing AG
> +	008a  NetLink Compact MPI/Profibus adapter
> +	0160  EDICblue
> +	0220  VAS5054A
> +077f  Well Excellent & Most Corp.
> +0780  Sagem Monetel GmbH
> +	1202  ORGA 900 Smart Card Terminal Virtual Com Port
> +	1302  ORGA 6000 Smart Card Terminal Virtual Com Port
> +	1303  ORGA 6000 Smart Card Terminal USB RNDIS
> +	df55  ORGA 900/6000 Smart Card Terminal DFU
> +0781  SanDisk Corp.
> +	0001  SDDR-05a ImageMate CompactFlash Reader
> +	0002  SDDR-31 ImageMate II CompactFlash Reader
> +	0005  SDDR-05b (CF II) ImageMate CompactFlash Reader
> +	0100  ImageMate SDDR-12
> +	0200  SDDR-09 (SSFDC) ImageMate SmartMedia Reader [eusb]
> +	0400  SecureMate SD/MMC Reader
> +	0621  SDDR-86 Imagemate 6-in-1 Reader
> +	0720  Sansa C200 series in recovery mode
> +	0729  Sansa E200 series in recovery mode
> +	0810  SDDR-75 ImageMate CF-SM Reader
> +	0830  ImageMate CF/MMC/SD Reader
> +	1234  Cruzer Mini Flash Drive
> +	5150  SDCZ2 Cruzer Mini Flash Drive (thin)
> +	5151  Cruzer Micro Flash Drive
> +	5153  Cruzer Flash Drive
> +	5204  Cruzer Crossfire
> +	5402  U3 Cruzer Micro
> +	5406  Cruzer Micro U3
> +	5408  Cruzer Titanium U3
> +	540e  Cruzer Contour Flash Drive
> +	5530  Cruzer
> +	5567  Cruzer Blade
> +	556b  Cruzer Edge
> +	556c  Ultra
> +	556d  Memory Vault
> +	5571  Cruzer Fit
> +	5575  Cruzer Glide
> +	5576  Cruzer Facet
> +	5577  Cruzer Pop (8GB)
> +	557d  Cruzer Force
> +	5580  SDCZ80 Flash Drive
> +	5581  Ultra
> +	5583  Ultra Fit
> +	5588  Extreme Pro
> +	5589  SD8SB8U512G[Extreme 500]
> +	558c  Extreme Portable SSD
> +	5590  Ultra Dual
> +	5591  Ultra Flair
> +	5e10  Encrypted
> +	6100  Ultra II SD Plus 2GB
> +	6500  uSSD 5000
> +	7100  Cruzer Mini
> +	7101  Pen Flash
> +	7102  Cruzer Mini
> +	7103  Cruzer Mini
> +	7104  Cruzer Micro Mini 256MB Flash Drive
> +	7105  Cruzer Mini
> +	7106  Cruzer Mini
> +	7112  Cruzer Micro 128MB Flash Drive
> +	7113  Cruzer Micro 256MB Flash Drive
> +	7114  Cruzer Mini
> +	7115  Cruzer Mini
> +	7301  Sansa e100 series (mtp)
> +	7302  Sansa e100 series (msc)
> +	7400  Sansa M200 series (mtp)
> +	7401  Sansa M200 series (msc)
> +	7420  Sansa E200 series (mtp)
> +	7421  Sansa E200 Series (msc)
> +	7422  Sansa E200 series v2 (mtp)
> +	7423  Sansa E200 series v2 (msc)
> +	7430  Sansa M200 series
> +	7431  Sansa M200 series V4 (msc)
> +	7432  Sansa Clip (mtp)
> +	7433  Sansa Clip (msc)
> +	7434  Sansa Clip V2 (mtp)
> +	7435  Sansa Clip V2 (msc)
> +	7450  Sansa C250
> +	7451  Sansa C240
> +	7460  Sansa Express
> +	7480  Sansa Connect
> +	7481  Sansa Connect (in recovery mode)
> +	74b0  Sansa View (msc)
> +	74b1  Sansa View (mtp)
> +	74c0  Sansa Fuze (mtp)
> +	74c1  Sansa Fuze (msc)
> +	74c2  Sansa Fuze V2 (mtp)
> +	74c3  Sansa Fuze V2 (msc)
> +	74d0  Sansa Clip+ (mtp)
> +	74d1  Sansa Clip+ (msc)
> +	74e5  Sansa Clip Zip
> +	8181  Pen Flash
> +	8183  Hi-Speed Mass Storage Device
> +	8185  SDCZ2 Cruzer Mini Flash Drive (older, thick)
> +	8888  Card Reader
> +	8889  SDDR-88 Imagemate 8-in-1 Reader
> +	8919  Card Reader
> +	8989  ImageMate 12-in-1 Reader
> +	9191  ImageMate CF
> +	9219  Card Reader
> +	9292  ImageMate CF Reader/Writer
> +	9393  ImageMate SD-MMC
> +	9595  ImageMate xD-SM
> +	9797  ImageMate MS-PRO
> +	9919  Card Reader
> +	9999  SDDR-99 5-in-1 Reader
> +	a7c1  Storage device (SD card reader)
> +	a7e8  SDDR-113 MicroMate SDHC Reader
> +	b2b3  SDDR-103 MobileMate SD+ Reader
> +	b2b5  SDDR-104 MobileMate SD+ Reader
> +	b4b5  SDDR-89 V4 ImageMate 12-in-1 Reader
> +	b6b7  SDDR-99 V4 ImageMate 5-in-1 Reader
> +	b6ba  CF SDDR-289
> +	cfc9  SDDR-489 ImageMate Pro Reader
> +0782  Trackerball
> +0783  C3PO
> +	0003  LTC31 SmartCard Reader
> +	0006  LTC31v2
> +	0009  KBR36
> +	0010  LTC32
> +0784  Vivitar, Inc.
> +	0100  Vivicam 2655
> +	1310  Vivicam 3305
> +	1688  Vivicam 3665
> +	1689  Gateway DC-M42/Labtec DC-505/Vivitar Vivicam 3705
> +	2620  AOL Photocam Plus
> +	2888  Polaroid DC700
> +	3330  Nytec ND-3200 Camera
> +	4300  Traveler D1
> +	5260  Werlisa Sport PX 100 / JVC GC-A33 Camera
> +	5300  Pretec dc530
> +0785  NTT-ME
> +	0001  MN128mini-V ISDN TA
> +	0003  MN128mini-J ISDN TA
> +0789  Logitec Corp.
> +	0026  LHD Device
> +	0033  DVD Multi-plus unit LDR-H443SU2
> +	0063  LDR Device
> +	0064  LDR-R Device
> +	00b3  DVD Multi-plus unit LDR-H443U2
> +	00cc  LHD Device
> +	0105  LAN-TX/U1H2 10/100 Ethernet Adapter [pegasus II]
> +	010c  Realtek RTL8187 Wireless 802.11g 54Mbps Network Adapter
> +	0160  LAN-GTJ/U2A
> +	0162  LAN-WN22/U2 Wireless LAN Adapter
> +	0163  LAN-WN12/U2 Wireless LAN Adapter
> +	0164  LAN-W150/U2M Wireless LAN Adapter
> +	0166  LAN-W300N/U2 Wireless LAN Adapter
> +	0168  LAN-W150N/U2 Wireless LAN Adapter
> +	0170  LAN-W300AN/U2 Wireless LAN Adapter
> +078b  Happ Controls, Inc.
> +	0010  Driving UGCI
> +	0020  Flying UGCI
> +	0030  Fighting UGCI
> +078c  GTCO/CalComp
> +	0090  Tablet Adapter
> +	0100  Tablet Adapter
> +	0200  Tablet Adapter
> +	0300  Tablet Adapter
> +	0400  Digitizer (Whiteboard)
> +078e  Brincom, Inc.
> +0790  Pro-Image Manufacturing Co., Ltd
> +0791  Copartner Wire and Cable Mfg. Corp.
> +0792  Axis Communications AB
> +0793  Wha Yu Industrial Co., Ltd
> +0794  ABL Electronics Corp.
> +0795  RealChip, Inc.
> +0796  Certicom Corp.
> +0797  Grandtech Semiconductor Corp.
> +	6801  Flatbed Scanner
> +	6802  InkJet Color Printer
> +	8001  SmartCam
> +	801a  Typhoon StyloCam
> +	801c  Meade Binoculars/Camera
> +	8901  ScanHex SX-35a
> +	8909  ScanHex SX-35b
> +	8911  ScanHex SX-35c
> +0798  Optelec
> +	0001  Braille Voyager
> +	0640  BC640
> +	0680  BC680
> +0799  Altera
> +	7651  Programming Unit
> +079b  Sagem
> +	0024  MSO300/MSO301 Fingerprint Sensor
> +	0026  MSO350/MSO351 Fingerprint Sensor & SmartCard Reader
> +	0027  USB-Serial Controller
> +	002f  Mobile
> +	0030  Mobile Communication Device
> +	0042  Mobile
> +	0047  CBM/MSO1300 Fingerprint Sensor
> +	004a  XG-760A 802.11bg
> +	004b  Wi-Fi 11g adapter
> +	0052  MSO1350 Fingerprint Sensor & SmartCard Reader
> +	0056  Agfa AP1100 Photo Printer
> +	005d  Mobile Mass Storage
> +	0062  XG-76NA 802.11bg
> +	0078  Laser Pro Monochrome MFP
> +079d  Alfadata Computer Corp.
> +	0201  GamePort Adapter
> +07a1  Digicom S.p.A.
> +	d952  Palladio USB V.92 Modem
> +07a2  National Technical Systems
> +07a3  Onnto Corp.
> +07a4  Be, Inc.
> +07a6  ADMtek, Inc.
> +	07c2  AN986A Ethernet
> +	0986  AN986 Pegasus Ethernet
> +	8266  Infineon WildCard-USB Wireless LAN Adapter
> +	8511  ADM8511 Pegasus II Ethernet
> +	8513  ADM8513 Pegasus II Ethernet
> +	8515  ADM8515 Pegasus II Ethernet
> +07aa  Corega K.K.
> +	0001  Ether USB-T Ethernet [klsi]
> +	0004  FEther USB-TX Ethernet [pegasus]
> +	000c  WirelessLAN USB-11
> +	000d  FEther USB-TXS
> +	0011  Wireless LAN USB-11 mini
> +	0012  Stick-11 802.11b Adapter
> +	0017  FEther USB2-TX
> +	0018  Wireless LAN USB-11 mini 2
> +	001a  ULUSB-11 Key
> +	001c  CG-WLUSB2GT 802.11g Wireless Adapter [Intersil ISL3880]
> +	0020  CG-WLUSB2GTST 802.11g Wireless Adapter [Intersil ISL3887]
> +	002e  CG-WLUSB2GPX [Ralink RT2571W]
> +	002f  CG-WLUSB2GNL
> +	0031  CG-WLUSB2GS 802.11bg [Atheros AR5523]
> +	003c  CG-WLUSB2GNL
> +	003f  CG-WLUSB300AGN
> +	0041  CG-WLUSB300GNS
> +	0042  CG-WLUSB300GNM
> +	0043  CG-WLUSB300N rev A2 [Realtek RTL8192U]
> +	0047  CG-WLUSBNM
> +	0051  CG-WLUSB300NM
> +	7613  Stick-11 V2 802.11b Adapter
> +	9601  FEther USB-TXC
> +07ab  Freecom Technologies
> +	fc01  IDE bridge
> +	fc02  Cable II USB-2
> +	fc03  USB2-IDE IDE bridge
> +	fc77  Quattro 3.0
> +	fcd6  Freecom HD Classic
> +	fcf6  DataBar
> +	fcf8  Freecom Classic SL Network Drive
> +	fcfe  Hard Drive 80GB
> +07af  Microtech
> +	0004  SCSI-DB25 SCSI Bridge [shuttle]
> +	0005  SCSI-HD50 SCSI Bridge [shuttle]
> +	0006  CameraMate SmartMedia and CompactFlash Card Reader [eusb/shuttle]
> +	fc01  Freecom USB-IDE
> +07b0  Trust Technologies
> +	0001  ISDN TA
> +	0002  ISDN TA128 Plus
> +	0003  ISDN TA128 Deluxe
> +	0005  ISDN TA128 SE
> +	0006  ISDN TA 128 [HFC-S]
> +	0007  ISDN TA [HFC-S]
> +	0008  ISDN TA
> +07b1  IMP, Inc.
> +07b2  Motorola BCS, Inc.
> +	0100  SURFboard Voice over IP Cable Modem
> +	0900  SURFboard Gateway
> +	0950  SURFboard SBG950 Gateway
> +	1000  SURFboard SBG1000 Gateway
> +	4100  SurfBoard SB4100 Cable Modem
> +	4200  SurfBoard SB4200 Cable Modem
> +	4210  SurfBoard 4210 Cable Modem
> +	4220  SURFboard SB4220 Cable Modem
> +	4500  CG4500 Communications Gateway
> +	450b  CG4501 Communications Gateway
> +	450e  CG4500E Communications Gateway
> +	5100  SurfBoard SB5100 Cable Modem
> +	5101  SurfBoard SB5101 Cable Modem
> +	5120  SurfBoard SB5120 Cable Modem (RNDIS)
> +	5121  Surfboard 5121 Cable Modem
> +	6002  MTR7000 Cable Tuning Adapter
> +	7030  WU830G 802.11bg Wireless Adapter [Envara WiND512]
> +07b3  Plustek, Inc.
> +	0001  OpticPro 1212U Scanner
> +	0003  Scanner
> +	0010  OpticPro U12 Scanner
> +	0011  OpticPro U24 Scanner
> +	0013  OpticPro UT12 Scanner
> +	0014  Scanner
> +	0015  OpticPro U24 Scanner
> +	0017  OpticPro UT12/16/24 Scanner
> +	0204  Scanner
> +	0400  OpticPro 1248U Scanner
> +	0401  OpticPro 1248U Scanner #2
> +	0403  OpticPro U16B Scanner
> +	0404  Scanner
> +	0405  A8 Namecard-s Controller
> +	0406  A8 Namecard-D Controller
> +	0410  Scanner
> +	0412  Scanner
> +	0413  OpticSlim 1200 Scanner
> +	0601  OpticPro ST24 Scanner
> +	0800  OpticPro ST48 Scanner
> +	0807  OpticFilm 7200 scanner
> +	0900  OpticBook 3600 Scanner
> +	090c  OpticBook 3600 Plus Scanner
> +	0a06  TVcam VD100
> +	0b00  SmartPhoto F50
> +	0c00  OpticPro ST64 Scanner
> +	0c03  OpticPro ST64+ Scanner
> +	0c04  Optic Film 7200i scanner
> +	0c0c  PL806 Scanner
> +	0c26  OpticBook 4600 Scanner
> +	0c2b  Mobile Office D428 Scanner
> +	0e08  OpticBook A300 Scanner
> +	1300  OpticBook 3800 Scanner
> +	1301  OpticBook 4800 Scanner
> +	130f  Bookreader v200
> +07b4  Olympus Optical Co., Ltd
> +	0100  Camedia C-2100/C-3000 Ultra Zoom Camera
> +	0102  Camedia E-10/C-220/C-50 Camera
> +	0105  Camedia C-310Z/C-700/C-750UZ/C-755/C-765UZ/C-3040/C-4000/C-5050Z/D-560/C-3020Z Zoom Camera
> +	0109  C-370Z/C-500Z/D-535Z/X-450
> +	010a  MAUSB-10 xD and SmartMedia Card Reader
> +	0112  MAUSB-100 xD Card Reader
> +	0113  Mju 500 / Stylus Digital Camera (PTP)
> +	0114  C-350Z Camera
> +	0118  Mju Mini Digital/Mju Digital 500 Camera / Stylus 850 SW
> +	0125  Tough TG-1 Camera
> +	0126  VR340/D750 Digital Camera
> +	0184  P-S100 port
> +	0202  Foot Switch RS-26
> +	0203  Digital Voice Recorder DW-90
> +	0206  Digital Voice Recorder DS-330
> +	0207  Digital Voice Recorder & Camera W-10
> +	0209  Digital Voice Recorder DM-20
> +	020b  Digital Voice Recorder DS-4000
> +	020d  Digital Voice Recorder VN-240PC
> +	0211  Digital Voice Recorder DS-2300
> +	0218  Foot Switch RS-28
> +	0244  Digital Voice Recorder VN-8500PC
> +	024f  Digital Voice Recorder DS-7000
> +	0280  m:robe 100
> +	0295  Digital Voice Recorder VN-541PC
> +07b5  Mega World International, Ltd
> +	0017  Joystick
> +	0213  Thrustmaster Firestorm Digital 3 Gamepad
> +	0312  Gamepad
> +	9902  GamePad
> +07b6  Marubun Corp.
> +07b7  TIME Interconnect, Ltd
> +07b8  AboCom Systems Inc
> +	110c  XX1
> +	1201  IEEE 802.11b Adapter
> +	200c  XX2
> +	2573  Wireless LAN Card
> +	2770  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
> +	2870  802.11n/b/g Wireless LAN USB2.0 Adapter
> +	3070  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
> +	3071  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
> +	3072  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
> +	4000  DU-E10 Ethernet [klsi]
> +	4002  DU-E100 Ethernet [pegasus]
> +	4003  1/10/100 Ethernet Adapter
> +	4004  XX4
> +	4007  XX5
> +	400b  XX6
> +	400c  XX7
> +	401a  RTL8151
> +	4102  USB 1.1 10/100M Fast Ethernet Adapter
> +	4104  XX9
> +	420a  UF200 Ethernet
> +	5301  GW-US54ZGL 802.11bg
> +	6001  WUG2690 802.11bg Wireless Module [ZyDAS ZD1211+AL2230]
> +	8188  AboCom Systems Inc [WN2001 Prolink Wireless-N Nano Adapter]
> +	a001  WUG2200 802.11g Wireless Adapter [Envara WiND512]
> +	abc1  DU-E10 Ethernet [pegasus]
> +	b000  BWU613
> +	b02a  AboCom Bluetooth Device
> +	b02b  Bluetooth dongle
> +	b02c  BCM92045DG-Flash with trace filter
> +	b02d  BCM92045DG-Flash with trace filter
> +	b02e  BCM92045DG-Flash with trace filter
> +	b030  BCM92045DG-Flash with trace filter
> +	b031  BCM92045DG-Flash with trace filter
> +	b032  BCM92045DG-Flash with trace filter
> +	b033  BCM92045DG-Flash with trace filter
> +	b21a  WUG2400 802.11g Wireless Adapter [Texas Instruments TNETW1450]
> +	b21b  HWU54DM
> +	b21c  RT2573
> +	b21d  RT2573
> +	b21e  RT2573
> +	b21f  WUG2700
> +	d011  MP3 Player
> +	e001  Mass Storage Device
> +	e002  Mass Storage Device
> +	e003  Mass Storage Device
> +	e004  Mass Storage Device
> +	e005  Mass Storage Device
> +	e006  Mass Storage Device
> +	e007  Mass Storage Device
> +	e008  Mass Storage Device
> +	e009  Mass Storage Device
> +	e00a  Mass Storage Device
> +	e4f0  Card Reader Driver
> +	f101  DSB-560 Modem [atlas]
> +07bc  Canon Computer Systems, Inc.
> +07bd  Webgear, Inc.
> +07be  Veridicom
> +	1935  Elektron Music Machines
> +07c0  Code Mercenaries Hard- und Software GmbH
> +	1113  JoyWarrior24F8
> +	1116  JoyWarrior24F14
> +	1121  The Claw
> +	1500  IO-Warrior 40
> +	1501  IO-Warrior 24
> +	1502  IO-Warrior 48
> +	1503  IO-Warrior 28
> +	1511  IO-Warrior 24 Power Vampire
> +	1512  IO-Warrior 24 Power Vampire
> +07c1  Keisokugiken
> +	0068  HKS-0200 USBDAQ
> +07c4  Datafab Systems, Inc.
> +	0102  USB to LS120
> +	0103  USB to IDE
> +	1234  USB to ATAPI
> +	a000  CompactFlash Card Reader
> +	a001  CompactFlash & SmartMedia Card Reader [eusb]
> +	a002  Disk Drive
> +	a003  Datafab-based Reader
> +	a004  USB to MMC Class Drive
> +	a005  CompactFlash & SmartMedia Card Reader
> +	a006  SmartMedia Card Reader
> +	a007  Memory Stick Class Drive
> +	a103  MDSM-B reader
> +	a107  USB to Memory Stick (LC1) Drive
> +	a109  LC1 CompactFlash & SmartMedia Card Reader
> +	a10b  USB to CF+MS(LC1)
> +	a200  DF-UT-06 Hama MMC/SD Reader
> +	a400  CompactFlash & Microdrive Reader
> +	a600  Card Reader
> +	a604  12-in-1 Card Reader
> +	ad01  Mass Storage Device
> +	ae01  Mass Storage Device
> +	af01  Mass Storage Device
> +	b000  USB to CF(LC1)
> +	b001  USB to CF+PCMCIA
> +	b004  MMC/SD Reader
> +	b006  USB to PCMCIA
> +	b00a  USB to CF+SD Drive(LC1)
> +	b00b  USB to Memory Stick(LC1)
> +	c010  Kingston FCR-HS2/ATA Card Reader
> +07c5  APG Cash Drawer
> +	0500  Cash Drawer
> +07c6  ShareWave, Inc.
> +	0002  Bodega Wireless Access Point
> +	0003  Bodega Wireless Network Adapter
> +07c7  Powertech Industrial Co., Ltd
> +07c8  B.U.G., Inc.
> +	0202  MN128-SOHO PAL
> +07c9  Allied Telesyn International
> +	b100  AT-USB100
> +07ca  AVerMedia Technologies, Inc.
> +	0002  AVerTV PVR USB/EZMaker Pro Device
> +	0026  AVerTV
> +	0337  A867 DVB-T dongle
> +	0837  H837 Hybrid ATSC/QAM
> +	1228  MPEG-2 Capture Device (M038)
> +	1830  AVerTV Volar Video Capture (H830)
> +	1871  TD310 DVB-T/T2/C dongle
> +	3835  AVerTV Volar Green HD (A835B)
> +	850a  AverTV Volar Black HD (A850)
> +	850b  AverTV Red HD+ (A850T)
> +	a309  AVerTV DVB-T (A309)
> +	a801  AVerTV DVB-T (A800)
> +	a815  AVerTV DVB-T Volar X (A815)
> +	a827  AVerTV Hybrid Volar HX (A827)
> +	a867  AVerTV DVB-T (A867)
> +	b300  A300 DVB-T TV receiver
> +	b800  MR800 FM Radio
> +	e880  MPEG-2 Capture Device (E880)
> +	e882  MPEG-2 Capture Device (E882)
> +07cb  Kingmax Technology, Inc.
> +07cc  Carry Computer Eng., Co., Ltd
> +	0000  CF Card Reader
> +	0001  Reader (UICSE)
> +	0002  Reader (UIS)
> +	0003  SM Card Reader
> +	0004  SM/CF/PCMCIA Card Reader
> +	0005  Reader (UISA2SE)
> +	0006  SM/CF/PCMCIA Card Reader
> +	0007  Reader (UISA6SE)
> +	000c  SM/CF Card Reader
> +	000d  SM/CF Card Reader
> +	000e  Reader (UISDA)
> +	000f  Reader (UICLIK)
> +	0010  Reader (UISMA)
> +	0012  Reader (UISC6SE-FLASH)
> +	0014  Litronic Fortezza Reader
> +	0030  Mass Storage (UISDMC12S)
> +	0040  Mass Storage (UISDMC13S)
> +	0100  Reader (UID)
> +	0101  Reader (UIM)
> +	0102  Reader (UISDMA)
> +	0103  Reader (UISDMC)
> +	0104  Reader (UISDM)
> +	0200  6-in-1 Card Reader
> +	0201  Mass Storage (UISDMC1S & UISDMC3S)
> +	0202  Mass Storage (UISDMC5S)
> +	0203  Mass Storage (UISMC5S)
> +	0204  Mass Storage (UIM4/5S & UIM7S)
> +	0205  Mass Storage (UIS4/5S & UIS7S)
> +	0206  Mass Storage (UISDMC10S & UISDMC11S)
> +	0207  Mass Storage (UPIDMA)
> +	0208  Mass Storage (UCFC II)
> +	0210  Mass Storage (UPIXXA)
> +	0213  Mass Storage (UPIDA)
> +	0214  Mass Storage (UPIMA)
> +	0215  Mass Storage (UPISA)
> +	0217  Mass Storage (UPISDMA)
> +	0223  Mass Storage (UCIDA)
> +	0224  Mass Storage (UCIMA)
> +	0225  Mass Storage (UIS7S)
> +	0227  Mass Storage (UCIDMA)
> +	0234  Mass Storage (UIM7S)
> +	0235  Mass Storage (UIS4S-S)
> +	0237  Velper (UISDMC4S)
> +	0300  6-in-1 Card Reader
> +	0301  6-in-1 Card Reader
> +	0303  Mass Storage (UID10W)
> +	0304  Mass Storage (UIM10W)
> +	0305  Mass Storage (UIS10W)
> +	0308  Mass Storage (UIC10W)
> +	0309  Mass Storage (UISC3W)
> +	0310  Mass Storage (UISDMA2W)
> +	0311  Mass Storage (UISDMC14W)
> +	0320  Mass Storage (UISDMC4W)
> +	0321  Mass Storage (UISDMC37W)
> +	0330  WINTERREADER Reader
> +	0350  9-in-1 Card Reader
> +	0500  Mass Storage
> +	0501  Mass Storage
> +07cd  Elektor
> +	0001  USBuart Serial Port
> +07ce  Nidec Copal
> +	c007  DPB-4000
> +	c009  DPB-6000
> +	c010  CPB-7000
> +07cf  Casio Computer Co., Ltd
> +	1001  QV-8000SX/5700/3000EX Digicam; Exilim EX-M20
> +	1003  Exilim EX-S500
> +	1004  Exilim EX-Z120
> +	1011  USB-CASIO PC CAMERA
> +	1116  EXILIM EX-Z19
> +	1125  Exilim EX-H10 Digital Camera (mass storage mode)
> +	1133  Exilim EX-Z350 Digital Camera (mass storage mode)
> +	1225  Exilim EX-H10 Digital Camera (PictBridge mode)
> +	1233  Exilim EX-Z350 Digital Camera (PictBridge mode)
> +	2002  E-125 Cassiopeia Pocket PC
> +	3801  WMP-1 MP3-Watch
> +	4001  Label Printer KL-P1000
> +	4007  CW50 Device
> +	4104  Cw75 Device
> +	4107  CW-L300 Device
> +	4500  LV-20 Digital Camera
> +	6101  fx-9750gII
> +	6102  fx-CP400
> +	6801  PL-40R
> +	6802  MIDI Keyboard
> +	6803  CTK-3500 (MIDI keyboard)
> +07d0  Dazzle
> +	0001  Digital Video Creator I
> +	0002  Global Village VideoFX Grabber
> +	0003  Fusion Model DVC-50 Rev 1 (NTSC)
> +	0004  DVC-800 (PAL) Grabber
> +	0005  Fusion Video and Audio Ports
> +	0006  DVC 150 Loader Device
> +	0007  DVC 150
> +	0327  Fusion Digital Media Reader
> +	1001  DM-FLEX DFU Adapter
> +	1002  DMHS2 DFU Adapter
> +	1102  CF Reader/Writer
> +	1103  SD Reader/Writer
> +	1104  SM Reader/Writer
> +	1105  MS Reader/Writer
> +	1106  xD/SM Reader/Writer
> +	1202  MultiSlot Reader/Writer
> +	2000  FX2 DFU Adapter
> +	2001  eUSB CompactFlash Reader
> +	4100  Kingsun SF-620 Infrared Adapter
> +	4101  Connectivity Cable (CA-42 clone)
> +	4959  Kingsun KS-959 Infrared Adapter
> +07d1  D-Link System
> +	13ec  VvBus for Helium 2xx
> +	13ed  VvBus for Helium 2xx
> +	13f1  DSL-302G Modem
> +	13f2  DSL-502G Router
> +	3300  DWA-130 802.11n Wireless N Adapter(rev.E) [Realtek RTL8191SU]
> +	3302  DWA-130 802.11n Wireless N Adapter(rev.C2) [Realtek RTL8191SU]
> +	3303  DWA-131 802.11n Wireless N Nano Adapter(rev.A1) [Realtek RTL8192SU]
> +	3304  FR-300USB 802.11bgn Wireless Adapter
> +	3a07  WUA-2340 RangeBooster G Adapter(rev.A) [Atheros AR5523]
> +	3a08  WUA-2340 RangeBooster G Adapter(rev.A) (no firmware) [Atheros AR5523]
> +	3a09  DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A2) [Atheros AR9170+AR9104]
> +	3a0d  DWA-120 802.11g Wireless 108G Adapter [Atheros AR5523]
> +	3a0f  DWA-130 802.11n Wireless N Adapter(rev.D) [Atheros AR9170+AR9102]
> +	3a10  DWA-126 802.11n Wireless Adapter [Atheros AR9271]
> +	3b01  AirPlus G DWL-G122 Wireless Adapter(rev.D) [Marvell 88W8338+88W8010]
> +	3b10  DWA-142 RangeBooster N Adapter [Marvell 88W8362+88W8060]
> +	3b11  DWA-130 802.11n Wireless N Adapter(rev.A1) [Marvell 88W8362+88W8060]
> +	3c03  AirPlus G DWL-G122 Wireless Adapter(rev.C1) [Ralink RT2571W]
> +	3c04  WUA-1340
> +	3c05  EH103 Wireless G Adapter
> +	3c06  DWA-111 802.11bg Wireless Adapter [Ralink RT2571W]
> +	3c07  DWA-110 Wireless G Adapter(rev.A1) [Ralink RT2571W]
> +	3c09  DWA-140 RangeBooster N Adapter(rev.B1) [Ralink RT2870]
> +	3c0a  DWA-140 RangeBooster N Adapter(rev.B2) [Ralink RT3072]
> +	3c0b  DWA-110 Wireless G Adapter(rev.B) [Ralink RT2870]
> +	3c0d  DWA-125 Wireless N 150 Adapter(rev.A1) [Ralink RT3070]
> +	3c0e  WUA-2340 RangeBooster G Adapter(rev.B) [Ralink RT2070]
> +	3c0f  AirPlus G DWL-G122 Wireless Adapter(rev.E1) [Ralink RT2070]
> +	3c10  DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A1) [Atheros AR9170+AR9104]
> +	3c11  DWA-160 Xtreme N Dual Band USB Adapter(rev.B) [Ralink RT2870]
> +	3c13  DWA-130 802.11n Wireless N Adapter(rev.B) [Ralink RT2870]
> +	3c15  DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT2870]
> +	3c16  DWA-125 Wireless N 150 Adapter(rev.A2) [Ralink RT3070]
> +	3e02  DWM-156 3.75G HSUPA Adapter
> +	5100  Remote NDIS Device
> +	a800  DWM-152 3.75G HSUPA Adapter
> +	f101  DBT-122 Bluetooth
> +	fc01  DBT-120 Bluetooth Adapter
> +07d2  Aptio Products, Inc.
> +07d3  Cyberdata Corp.
> +07d5  Radiant Systems
> +07d7  GCC Technologies, Inc.
> +07da  Arasan Chip Systems
> +07de  Diamond Multimedia
> +	2820  VC500 Video Capture Dongle
> +07df  David Electronics Co., Ltd
> +07e0  NCP engineering GmbH
> +	4742  VPN GovNet Box
> +07e1  Ambient Technologies, Inc.
> +	5201  V.90 Modem
> +07e2  Elmeg GmbH & Co., Ltd
> +07e3  Planex Communications, Inc.
> +07e4  Movado Enterprise Co., Ltd
> +	0967  SCard R/W CSR-145
> +	0968  SCard R/W CSR-145
> +07e5  QPS, Inc.
> +	05c2  IDE-to-USB2.0 PCA
> +	5c01  Que! CDRW
> +07e6  Allied Cable Corp.
> +07e7  Mirvo Toys, Inc.
> +07e8  Labsystems
> +07ea  Iwatsu Electric Co., Ltd
> +07eb  Double-H Technology Co., Ltd
> +07ec  Taiyo Electric Wire & Cable Co., Ltd
> +07ee  Torex Retail (formerly Logware)
> +	0002  Cash Drawer I/F
> +07ef  STSN
> +	0001  Internet Access Device
> +07f2  Microcomputer Applications, Inc.
> +	0001  KEYLOK II
> +07f6  Circuit Assembly Corp.
> +07f7  Century Corp.
> +	0005  ScanLogic/Century Corporation uATA
> +	011e  Century USB Disk Enclosure
> +07f9  Dotop Technology, Inc.
> +07fa  DrayTek Corp.
> +	0778  miniVigor 128 ISDN TA
> +	0846  ISDN TA [HFC-S]
> +	0847  ISDN TA [HFC-S]
> +	1012  BeWAN ADSL USB ST (grey)
> +	1196  BWIFI-USB54AR 802.11bg
> +	a904  BeWAN ADSL
> +	a905  BeWAN ADSL ST
> +07fc  Thomann
> +	1113  SWISSONIC EasyKeys61 Midikeyboard
> +07fd  Mark of the Unicorn
> +	0000  FastLane MIDI Interface
> +	0001  MIDI Interface
> +	0002  MOTU Audio for 64 bit
> +	0004  MicroBook
> +	0008  M Series
> +07ff  Unknown
> +	00ff  Portable Hard Drive
> +	ffff  Mad Catz Gamepad
> +0801  MagTek
> +	0001  Mini Swipe Reader (Keyboard Emulation)
> +	0002  Mini Swipe Reader
> +	0003  Magstripe Insert Reader
> +0802  Mako Technologies, LLC
> +0803  Zoom Telephonics, Inc.
> +	1300  V92 Faxmodem
> +	3095  V.92 56K Mini External Modem Model 3095
> +	4310  4410a Wireless-G Adapter [Intersil ISL3887]
> +	4410  4410b Wireless-G Adapter [ZyDAS ZD1211B]
> +	5241  Cable Modem
> +	5551  DSL Modem
> +	9700  2986L FaxModem
> +	9800  Cable Modem
> +	a312  Wireless-G
> +0809  Genicom Technology, Inc.
> +080a  Evermuch Technology Co., Ltd
> +080b  Cross Match Technologies
> +	0002  Fingerprint Scanner (After ReNumeration)
> +	0010  300LC Series Fingerprint Scanner (Before ReNumeration)
> +080c  Datalogic S.p.A.
> +	0300  Gryphon D120 Barcode Scanner
> +	0400  Gryphon D120 Barcode Scanner
> +	0500  Gryphon D120 Barcode Scanner
> +	0600  Gryphon M100 Barcode Scanner
> +080d  Teco Image Systems Co., Ltd
> +	0102  Hercules Scan@home 48
> +	0104  3.2Slim
> +	0110  UMAX AstraSlim 1200 Scanner
> +0810  Personal Communication Systems, Inc.
> +	0001  Dual PSX Adaptor
> +	0002  Dual PCS Adaptor
> +	0003  PlayStation Gamepad
> +	e001  Twin controller
> +	e501  SNES Gamepad
> +0813  Mattel, Inc.
> +	0001  Intel Play QX3 Microscope
> +	0002  Dual Mode Camera Plus
> +0819  eLicenser
> +	0101  License Management and Copy Protection
> +081a  MG Logic
> +	1000  Duo Pen Tablet
> +081b  Indigita Corp.
> +	0600  Storage Adapter
> +	0601  Storage Adapter
> +081c  Mipsys
> +081e  AlphaSmart, Inc.
> +	df00  Handheld
> +081f  Manta
> +	e401  MM812
> +0822  Reudo Corp.
> +	2001  IRXpress Infrared Device
> +0825  GC Protronics
> +0826  Data Transit
> +0827  BroadLogic, Inc.
> +0828  Sato Corp.
> +0829  DirecTV Broadband, Inc. (Telocity)
> +082d  Handspring
> +	0100  Visor
> +	0200  Treo
> +	0300  Treo 600
> +	0400  Handheld
> +	0500  Handheld
> +	0600  Handheld
> +0830  Palm, Inc.
> +	0001  m500
> +	0002  m505
> +	0003  m515
> +	0004  Handheld
> +	0005  Handheld
> +	0006  Handheld
> +	0010  Handheld
> +	0011  Handheld
> +	0012  Handheld
> +	0013  Handheld
> +	0014  Handheld
> +	0020  i705
> +	0021  Handheld
> +	0022  Handheld
> +	0023  Handheld
> +	0024  Handheld
> +	0030  Handheld
> +	0031  Tungsten W
> +	0032  Handheld
> +	0033  Handheld
> +	0034  Handheld
> +	0040  m125
> +	0041  Handheld
> +	0042  Handheld
> +	0043  Handheld
> +	0044  Handheld
> +	0050  m130
> +	0051  Handheld
> +	0052  Handheld
> +	0053  Handheld
> +	0054  Handheld
> +	0060  Tungsten C/E/T/T2/T3 / Zire 71
> +	0061  Lifedrive / Treo 650/680 / Tunsten E2/T5/TX / Centro / Zire 21/31/72 / Z22
> +	0062  Handheld
> +	0063  Handheld
> +	0064  Handheld
> +	0070  Zire
> +	0071  Handheld
> +	0072  Handheld
> +	0080  Serial Adapter [for Palm III]
> +	0081  Handheld
> +	0082  Handheld
> +	00a0  Treo 800w
> +	0101  Pre
> +0832  Kouwell Electronics Corp.
> +	5850  Cable
> +0833  Sourcenext Corp.
> +	012e  KeikaiDenwa 8 with charger
> +	039f  KeikaiDenwa 8
> +0835  Action Star Enterprise Co., Ltd
> +0836  TrekStor
> +	2836  i.Beat mood
> +0839  Samsung Techwin Co., Ltd
> +	0005  Digimax Camera
> +	0008  Digimax 230 Camera
> +	0009  Digimax 340
> +	000a  Digimax 410
> +	000e  Digimax 360
> +	0010  Digimax 300
> +	1003  Digimax 210SE
> +	1005  Digimax 220
> +	1009  Digimax V4
> +	1012  6500 Document Camera
> +	103f  Digimax S500
> +	1058  S730 Camera
> +	1064  Digimax D830 Camera
> +	1542  Digimax 50 Duo
> +	3000  Digimax 35 MP3
> +083a  Accton Technology Corp.
> +	1046  10/100 Ethernet [pegasus]
> +	1060  HomeLine Adapter
> +	1f4d  SMC8013WG Broadband Remote NDIS Device
> +	3046  10/100 Series Adapter
> +	3060  1/10/100 Adapter
> +	3501  2664W
> +	3502  WN3501D Wireless Adapter
> +	3503  T-Sinus 111 Wireless Adapter
> +	4501  T-Sinus 154data
> +	4502  Siemens S30853-S1016-R107 802.11g Wireless Adapter [Intersil ISL3886]
> +	4505  SMCWUSB-G 802.11bg
> +	4507  SMCWUSBT-G2 802.11g Wireless Adapter [Atheros AR5523]
> +	4521  Siemens S30863-S1016-R107-2 802.11g Wireless Adapter [Intersil ISL3887]
> +	4531  T-Com Sinus 154 data II [Intersil ISL3887]
> +	5046  SpeedStream 10/100 Ethernet [pegasus]
> +	5501  Wireless Adapter 11g
> +	6500  Cable Modem
> +	6618  802.11n Wireless Adapter
> +	7511  Arcadyan 802.11N Wireless Adapter
> +	7512  Arcadyan 802.11N Wireless Adapter
> +	7522  Arcadyan 802.11N Wireless Adapter
> +	8522  Arcadyan 802.11N Wireless Adapter
> +	8541  WN4501F 802.11g Wireless Adapter [Intersil ISL3887]
> +	a512  Arcadyan 802.11N Wireless Adapter
> +	a618  SMCWUSBS-N EZ Connect N Draft 11n Wireless Adapter [Ralink RT2870]
> +	a701  SMCWUSBS-N3 EZ Connect N Wireless Adapter [Ralink RT3070]
> +	b004  CPWUE001 USB/Ethernet Adapter
> +	b522  SMCWUSBS-N2 EZ Connect N Wireless Adapter [Ralink RT2870]
> +	bb01  BlueExpert Bluetooth Device
> +	c003  802.11b Wireless Adapter
> +	c501  Zoom 4410 Wireless-G [Intersil ISL3887]
> +	c561  802.11a/g Wireless Adapter
> +	d522  Speedport W 102 Stick IEEE 802.11n USB 2.0 Adapter
> +	e501  ZD1211B
> +	e503  Arcadyan WN4501 802.11b/g
> +	e506  WUS-201 802.11bg
> +	f501  802.11g Wireless Adapter
> +	f502  802.11g Wireless Adapter
> +	f522  Arcadyan WN7512 802.11n
> +083f  Global Village
> +	b100  TelePort V.90 Fax/Modem
> +0840  Argosy Research, Inc.
> +	0060  Storage Adapter Bridge Module
> +0841  Rioport.com, Inc.
> +	0001  Rio 500
> +0844  Welland Industrial Co., Ltd
> +0846  NetGear, Inc.
> +	1001  EA101 10 Mbps 10BASE-T Ethernet [Kawasaki LSI KL5KLUSB101B]
> +	1002  Ethernet
> +	1020  FA101 Fast Ethernet USB 1.1
> +	1040  FA120 Fast Ethernet USB 2.0 [Asix AX88172 / AX8817x]
> +	1100  Managed Switch M4100 series, M5300 series, M7100 series
> +	4110  MA111(v1) 802.11b Wireless [Intersil Prism 3.0]
> +	4200  WG121(v1) 54 Mbps Wireless [Intersil ISL3886]
> +	4210  WG121(v2) 54 Mbps Wireless [Intersil ISL3886]
> +	4220  WG111(v1) 54 Mbps Wireless [Intersil ISL3886]
> +	4230  MA111(v2) 802.11b Wireless [SIS SIS 162]
> +	4240  WG111(v1) rev 2 54 Mbps Wireless [Intersil ISL3887]
> +	4260  WG111v3 54 Mbps Wireless [realtek RTL8187B]
> +	4300  WG111U Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX]
> +	4301  WG111U (no firmware) Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX]
> +	5f00  WPN111 802.11g Wireless Adapter [Atheros AR5523]
> +	68e1  LB1120-100NAS
> +	6a00  WG111v2 54 Mbps Wireless [RealTek RTL8187L]
> +	7100  WN121T RangeMax Next Wireless-N [Marvell TopDog]
> +	9000  WN111(v1) RangeMax Next Wireless [Marvell 88W8362+88W8060]
> +	9001  WN111(v2) RangeMax Next Wireless [Atheros AR9170+AR9101]
> +	9010  WNDA3100v1 802.11abgn [Atheros AR9170+AR9104]
> +	9011  WNDA3100v2 802.11abgn [Broadcom BCM4323]
> +	9012  WNDA4100 802.11abgn 3x3:3 [Ralink RT3573]
> +	9014  WNDA3100v3 802.11abgn 2x2:2 [MediaTek MT7632U]
> +	9018  WNDA3200 802.11abgn Wireless Adapter [Atheros AR7010+AR9280]
> +	9020  WNA3100(v1) Wireless-N 300 [Broadcom BCM43231]
> +	9021  WNA3100M(v1) Wireless-N 300 [Realtek RTL8192CU]
> +	9030  WNA1100 Wireless-N 150 [Atheros AR9271]
> +	9040  WNA1000 Wireless-N 150 [Atheros AR9170+AR9101]
> +	9041  WNA1000M 802.11bgn [Realtek RTL8188CUS]
> +	9042  On Networks N150MA 802.11bgn [Realtek RTL8188CUS]
> +	9043  WNA1000Mv2 802.11bgn [Realtek RTL8188CUS?]
> +	9050  A6200 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526]
> +	9051  A6200v2 802.11a/b/g/n/ac (2x2) Wireless Adapter [Realtek RTL8812AU]
> +	9052  A6100 AC600 DB Wireless Adapter [Realtek RTL8811AU]
> +	9054  Nighthawk A7000 802.11ac Wireless Adapter AC1900 [Realtek 8814AU]
> +	a001  PA101 10 Mbps HPNA Home Phoneline RJ-1
> +	f001  On Networks N300MA 802.11bgn [Realtek RTL8192CU]
> +084d  Minton Optic Industry Co., Inc.
> +	0001  Jenoptik JD800i
> +	0003  S-Cam F5/D-Link DSC-350 Digital Camera
> +	0011  Argus DC3500 Digital Camera
> +	0014  Praktica DC 32
> +	0019  Praktica DPix3000
> +	0025  Praktica DC 60
> +	1001  ScanHex SX-35d
> +084e  KB Gear
> +	0001  JamCam Camera
> +	1001  Jam Studio Tablet
> +	1002  Pablo Tablet
> +084f  Empeg
> +	0001  Empeg-Car Mark I/II Player
> +0850  Fast Point Technologies, Inc.
> +0851  Macronix International Co., Ltd
> +	1542  SiPix Blink
> +	1543  Maxell WS30 Slim Digital Camera, or Pandigital PI8004W01 digital photo frame
> +	a168  MXIC
> +0852  CSEM
> +0853  Topre Corporation
> +	0100  HHKB Professional
> +	0119  RealForce 105UB
> +	0200  RealForce Compact Keyboard
> +0854  ActiveWire, Inc.
> +	0100  I/O Board
> +	0101  I/O Board, rev1
> +0856  B&B Electronics
> +	ac01  uLinks USOTL4 RS422/485 Adapter
> +0858  Hitachi Maxell, Ltd
> +	3102  Bluetooth Device
> +	ffff  Maxell module with BlueCore in DFU mode
> +0859  Minolta Systems Laboratory, Inc.
> +085a  Xircom
> +	0001  Portstation Dual Serial Port
> +	0003  Portstation Paraller Port
> +	0008  Ethernet
> +	0009  Ethernet
> +	000b  Portstation Dual PS/2 Port
> +	0021  1 port to Serial Converter
> +	0022  Parallel Port
> +	0023  2 port to Serial Converter
> +	0024  Parallel Port
> +	0026  PortGear SCSI
> +	0027  1 port to Serial Converter
> +	0028  PortGear to SCSI Converter
> +	0032  PortStation SCSI Module
> +	003c  Bluetooth Adapter
> +	0299  Colorvision, Inc. Monitor Spyder
> +	8021  1 port to Serial
> +	8023  2 port to Serial
> +	8027  PGSDB9 Serial Port
> +085c  ColorVision, Inc.
> +	0100  Spyder 1
> +	0200  Spyder 2
> +	0300  Spyder 3
> +	0400  Spyder 4
> +0862  Teletrol Systems, Inc.
> +0863  Filanet Corp.
> +0864  NetGear, Inc.
> +	4100  MA101 802.11b Adapter
> +	4102  MA101 802.11b Adapter
> +0867  Data Translation, Inc.
> +	9812  ECON Data acquisition unit
> +	9816  DT9816 ECON data acquisition module
> +	9836  DT9836 data acquisition card
> +086a  Emagic Soft- und Hardware GmbH
> +	0001  Unitor8
> +	0002  AMT8
> +	0003  MT4
> +086c  DeTeWe - Deutsche Telephonwerke AG & Co.
> +	1001  Eumex 504PC ISDN TA
> +	1002  Eumex 504PC (FlashLoad)
> +	1003  TA33 ISDN TA
> +	1004  TA33 (FlashLoad)
> +	1005  Eumex 604PC HomeNet
> +	1006  Eumex 604PC HomeNet (FlashLoad)
> +	1007  Eumex 704PC DSL
> +	1008  Eumex 704PC DSL (FlashLoad)
> +	1009  Eumex 724PC DSL
> +	100a  Eumex 724PC DSL (FlashLoad)
> +	100b  OpenCom 30
> +	100c  OpenCom 30 (FlashLoad)
> +	100d  BeeTel Home 100
> +	100e  BeeTel Home 100 (FlashLoad)
> +	1011  USB2DECT
> +	1012  USB2DECT (FlashLoad)
> +	1013  Eumex 704PC LAN
> +	1014  Eumex 704PC LAN (FlashLoad)
> +	1019  Eumex 504 SE
> +	101a  Eumex 504 SE (Flash-Mode)
> +	1021  OpenCom 40
> +	1022  OpenCom 40 (FlashLoad)
> +	1023  OpenCom 45
> +	1024  OpenCom 45 (FlashLoad)
> +	1025  Sinus 61 data
> +	1029  dect BOX
> +	102c  Eumex 604PC HomeNet [FlashLoad]
> +	1030  Eumex 704PC DSL [FlashLoad]
> +	1032  OpenCom 40 [FlashLoad]
> +	1033  OpenCom 30 plus
> +	1034  OpenCom 30 plus (FlashLoad)
> +	1041  Eumex 220PC
> +	1042  Eumex 220PC (FlashMode)
> +	1055  Eumex 220 Version 2 ISDN TA
> +	1056  Eumex 220 Version 2 ISDN TA (Flash-Mode)
> +	2000  OpenCom 1000
> +086e  System TALKS, Inc.
> +	1920  SGC-X2UL
> +086f  MEC IMEX, Inc.
> +0870  Metricom
> +	0001  Ricochet GS
> +0871  SanDisk, Inc.
> +	0001  SDDR-01 Compact Flash Reader
> +	0002  SDDR-31 Compact Flash Reader
> +	0005  SDDR-05 Compact Flash Reader
> +0873  Xpeed, Inc.
> +0874  A-Tec Subsystem, Inc.
> +0879  Comtrol Corp.
> +087c  Adesso/Kbtek America, Inc.
> +087d  Jaton Corp.
> +	5704  Ethernet
> +087e  Fujitsu Computer Products of America
> +087f  QualCore Logic Inc.
> +0880  APT Technologies, Inc.
> +0883  Recording Industry Association of America (RIAA)
> +0885  Boca Research, Inc.
> +0886  XAC Automation Corp.
> +	0630  Intel PC Camera CS630
> +0887  Hannstar Electronics Corp.
> +088a  TechTools
> +	1002  DigiView DV3100
> +088b  MassWorks, Inc.
> +	4944  MassWorks ID-75 TouchScreen
> +088c  Swecoin AB
> +	2030  Ticket Printer TTP 2030
> +088e  iLok
> +	5036  Portable secure storage for software licenses
> +0892  DioGraphy, Inc.
> +	0101  Smartdio Reader/Writer
> +0894  TSI Incorporated
> +	0010  Remote NDIS Network Device
> +0897  Lauterbach
> +	0001  ICE In-Circuit Emulator
> +	0002  Power Debug/Power Debug II
> +	0004  PowerDebug
> +	0005  PowerDebug PRO
> +089c  United Technologies Research Cntr.
> +089d  Icron Technologies Corp.
> +089e  NST Co., Ltd
> +089f  Primex Aerospace Co.
> +08a5  e9, Inc.
> +08a6  Toshiba TEC
> +	0051  B-SV4
> +08a8  Andrea Electronics
> +08a9  CWAV Inc.
> +	0005  USBee ZX
> +	0009  USBee SX
> +	0012  USBee AX-Standard
> +	0013  USBee AX-Plus
> +	0014  USBee AX-Pro
> +	0015  USBee DX
> +08ac  Macraigor Systems LLC
> +	2024  usbWiggler
> +08ae  Macally (Mace Group, Inc.)
> +08b0  Metrohm
> +	0006  814 Sample Processor
> +	0015  857 Titrando
> +	001a  852 Titrando
> +08b4  Sorenson Vision, Inc.
> +08b7  NATSU
> +	0001  Playstation adapter
> +08b8  J. Gordon Electronic Design, Inc.
> +	01f4  USBSIMM1
> +08b9  RadioShack Corp. (Tandy)
> +08bb  Texas Instruments
> +	2702  PCM2702 16-bit stereo audio DAC
> +	2704  PCM2704 16-bit stereo audio DAC
> +	2705  PCM2705 stereo audio DAC
> +	2706  PCM2706 stereo audio DAC
> +	2707  PCM2707 stereo audio DAC
> +	27c4  PCM2704C stereo audio DAC
> +	27c5  PCM2705C stereo audio DAC
> +	27c6  PCM2706C stereo audio DAC
> +	27c7  PCM2707C stereo audio DAC
> +	2900  PCM2900 Audio Codec
> +	2901  PCM2901 Audio Codec
> +	2902  PCM2902 Audio Codec
> +	2904  PCM2904 Audio Codec
> +	2910  PCM2912 Audio Codec
> +	2912  PCM2912A Audio Codec
> +	29b0  PCM2900B Audio CODEC
> +	29b2  PCM2902 Audio CODEC
> +	29b3  PCM2903B Audio CODEC
> +	29b6  PCM2906B Audio CODEC
> +	29c0  PCM2900C Audio CODEC
> +	29c2  PCM2902C Audio CODEC
> +	29c3  PCM2903C Audio CODEC
> +	29c6  PCM2906C Audio CODEC
> +08bd  Citizen Watch Co., Ltd
> +	0208  CLP-521 Label Printer
> +	1100  X1-USB Floppy
> +08c3  Precise Biometrics
> +	0001  100 SC
> +	0002  100 A
> +	0003  100 SC BioKeyboard
> +	0006  100 A BioKeyboard
> +	0100  100 MC ISP
> +	0101  100 MC FingerPrint and SmartCard Reader
> +	0300  100 AX
> +	0400  100 SC
> +	0401  150 MC
> +	0402  200 MC FingerPrint and SmartCard Reader
> +	0404  100 SC Upgrade
> +	0405  150 MC Upgrade
> +	0406  100 MC Upgrade
> +08c4  Proxim, Inc.
> +	0100  Skyline 802.11b Wireless Adapter
> +	02f2  Farallon Home Phoneline Adapter
> +08c7  Key Nice Enterprise Co., Ltd
> +08c8  2Wire, Inc.
> +08c9  Nippon Telegraph and Telephone Corp.
> +08ca  Aiptek International, Inc.
> +	0001  Tablet
> +	0010  Tablet
> +	0020  APT-6000U Tablet
> +	0021  APT-2 Tablet
> +	0022  Tablet
> +	0023  Tablet
> +	0024  Tablet
> +	0100  Pen Drive
> +	0102  DualCam
> +	0103  Pocket DV Digital Camera
> +	0104  Pocket DVII
> +	0105  Mega DV(Disk)
> +	0106  Pocket DV3100+
> +	0107  Pocket DV3100
> +	0109  Nisis DV4 Digital Camera
> +	010a  Trust 738AV LCD PV Mass Storage
> +	0111  PenCam VGA Plus
> +	2008  Mini PenCam 2
> +	2010  Pocket CAM 3 Mega (webcam)
> +	2011  Pocket CAM 3 Mega (storage)
> +	2016  PocketCam 2 Mega
> +	2018  Pencam SD 2M
> +	2019  Pencam SD 2M (mass storage mode)
> +	2020  Slim 3000F
> +	2022  Slim 3200
> +	2024  Pocket DV3500
> +	2028  Pocket Cam4M
> +	2040  Pocket DV4100M
> +	2042  Pocket DV5100M Composite Device
> +	2043  Pocket DV5100M (Disk)
> +	2060  Pocket DV5300
> +08cd  Jue Hsun Ind. Corp.
> +08ce  Long Well Electronics Corp.
> +08cf  Productivity Enhancement Products
> +08d1  smartBridges, Inc.
> +	0001  smartNIC Ethernet [catc]
> +	0003  smartNIC 2 PnP Ethernet
> +08d3  Virtual Ink
> +08d4  Fujitsu Siemens Computers
> +	0009  SCR SmartCard Reader
> +08d8  IXXAT Automation GmbH
> +	0002  USB-to-CAN compact
> +	0003  USB-to-CAN II
> +	0100  USB-to-CAN
> +08d9  Increment P Corp.
> +08dd  Billionton Systems, Inc.
> +	0112  Wireless LAN Adapter
> +	0113  Wireless LAN Adapter
> +	0986  USB-100N Ethernet [pegasus]
> +	0987  USBLP-100 HomePNA Ethernet [pegasus]
> +	0988  USBEL-100 Ethernet [pegasus]
> +	1986  10/100 LAN Adapter
> +	2103  DVB-T TV-Tuner Card-R
> +	8511  USBE-100 Ethernet [pegasus2]
> +	90ff  USB2AR Ethernet
> +08de  ???
> +	7a01  802.11b Adapter
> +08df  Spyrus, Inc.
> +	0001  Rosetta Token V1
> +	0002  Rosetta Token V2
> +	0003  Rosetta Token V3
> +	0a00  Lynks Interface
> +08e3  Olitec, Inc.
> +	0002  USB-RS232 Bridge
> +	0100  Interface ADSL
> +	0101  Interface ADSL
> +	0102  ADSL
> +	0301  RNIS ISDN TA [HFC-S]
> +08e4  Pioneer Corp.
> +	0184  DDJ-WeGO
> +	0185  DDJ-WeGO2
> +08e5  Litronic
> +08e6  Gemalto (was Gemplus)
> +	0001  GemPC-Touch 430
> +	0430  GemPC430 SmartCard Reader
> +	0432  GemPC432 SmartCard Reader
> +	0435  GemPC435 SmartCard Reader
> +	0437  GemPC433 SL SmartCard Reader
> +	1359  UA SECURE STORAGE TOKEN
> +	2202  Gem e-Seal Pro Token
> +	3437  GemPC Twin SmartCard Reader
> +	3438  GemPC Key SmartCard Reader
> +	3478  PinPad Smart Card Reader
> +	34ec  Compact Smart Card Reader Writer
> +	4433  GemPC433-Swap
> +	5501  GemProx-PU Contactless Smart Card Reader
> +	5503  Prox-DU Contactless Interface
> +	ace0  UA HYBRID TOKEN
> +08e7  Pan-International Wire & Cable
> +08e8  Integrated Memory Logic
> +08e9  Extended Systems, Inc.
> +	0100  XTNDAccess IrDA Dongle
> +08ea  Ericsson, Inc., Blue Ridge Labs
> +	00c9  ADSL Modem HM120dp Loader
> +	00ca  ADSL WAN Modem HM120dp
> +	00ce  HM230d Virtual Bus for Helium
> +	abba  USB Driver for Bluetooth Wireless Technology
> +	abbb  Bluetooth Device in DFU State
> +08ec  M-Systems Flash Disk Pioneers
> +	0001  TravelDrive 2C
> +	0002  TravelDrive 2C
> +	0005  TravelDrive 2C
> +	0008  TravelDrive 2C
> +	0010  DiskOnKey
> +	0011  DiskOnKey
> +	0012  TravelDrive 2C
> +	0014  TravelDrive 2C
> +	0015  Kingston DataTraveler ELITE
> +	0016  Kingston DataTraveler U3
> +	0020  TravelDrive Intuix U3 2GB
> +	0021  TravelDrive
> +	0022  TravelDrive
> +	0023  TravelDrive
> +	0024  TravelDrive
> +	0025  TravelDrive
> +	0026  TravelDrive
> +	0027  TravelDrive
> +	0028  TravelDrive
> +	0029  TravelDrive
> +	0030  TravelDrive
> +	0822  TravelDrive 2C
> +	0832  Hi-Speed Mass Storage Device
> +	0834  M-Disk 220
> +	0998  Kingston Data Traveler2.0 Disk Driver
> +	0999  Kingston Data Traveler2.0 Disk Driver
> +	1000  TravelDrive 2C
> +	2000  TravelDrive 2C
> +	2038  TravelDrive
> +	2039  TravelDrive
> +	204a  TravelDrive
> +	204b  TravelDrive
> +08ed  MediaTek Inc.
> +	0002  CECT M800 memory card
> +08ee  CCSI/Hesso
> +08f0  Corex Technologies
> +	0005  CardScan 800c
> +08f1  CTI Electronics Corp.
> +08f2  Gotop Information Inc.
> +	007f  Super Q2 Tablet
> +08f5  SysTec Co., Ltd
> +08f6  Logic 3 International, Ltd
> +08f7  Vernier
> +	0001  LabPro
> +	0002  EasyTemp/Go!Temp
> +	0003  Go!Link
> +	0004  Go!Motion
> +08f8  Keen Top International Enterprise Co., Ltd
> +08f9  Wipro Technologies
> +08fa  Caere
> +08fb  Socket Communications
> +08fc  Sicon Cable Technology Co., Ltd
> +08fd  Digianswer A/S
> +	0001  Bluetooth Device
> +08ff  AuthenTec, Inc.
> +	1600  AES1600
> +	1610  AES1600
> +	1660  AES1660 Fingerprint Sensor
> +	1680  AES1660 Fingerprint Sensor
> +	168f  AES1660 Fingerprint Sensor
> +	2500  AES2501
> +	2501  AES2501
> +	2502  AES2501
> +	2503  AES2501
> +	2504  AES2501
> +	2505  AES2501
> +	2506  AES2501
> +	2507  AES2501
> +	2508  AES2501
> +	2509  AES2501
> +	250a  AES2501
> +	250b  AES2501
> +	250c  AES2501
> +	250d  AES2501
> +	250e  AES2501
> +	250f  AES2501
> +	2510  AES2510
> +	2550  AES2550 Fingerprint Sensor
> +	2580  AES2501 Fingerprint Sensor
> +	2588  AES2501
> +	2589  AES2501
> +	258a  AES2501
> +	258b  AES2501
> +	258c  AES2501
> +	258d  AES2501
> +	258e  AES2501
> +	258f  AES2501
> +	2660  AES2660 Fingerprint Sensor
> +	2680  AES2660 Fingerprint Sensor
> +	268f  AES2660 Fingerprint Sensor
> +	2810  AES2810
> +	3400  AES3400 TruePrint Sensor
> +	3401  AES3400 Sensor
> +	3402  AES3400 Sensor
> +	3403  AES3400 Sensor
> +	3404  AES3400 TruePrint Sensor
> +	3405  AES3400 TruePrint Sensor
> +	3406  AES3400 TruePrint Sensor
> +	3407  AES3400 TruePrint Sensor
> +	4902  BioMV with TruePrint AES3500
> +	4903  BioMV with TruePrint AES3400
> +	5500  AES4000
> +	5501  AES4000 TruePrint Sensor
> +	5503  AES4000 TruePrint Sensor
> +	5505  AES4000 TruePrint Sensor
> +	5507  AES4000 TruePrint Sensor
> +	55ff  AES4000 TruePrint Sensor.
> +	5700  AES3500 Fingerprint Reader
> +	5701  AES3500 TruePrint Sensor
> +	5702  AES3500 TruePrint Sensor
> +	5703  AES3500 TruePrint Sensor
> +	5704  AES3500-BZ TruePrint Sensor
> +	5705  AES3500-BZ TruePrint Sensor
> +	5706  AES3500-BZ TruePrint Sensor
> +	5707  AES3500-BZ TruePrint Sensor
> +	5710  AES3500 TruePrint Sensor
> +	5711  AES3500 TruePrint Sensor
> +	5712  AES3500 TruePrint Sensor
> +	5713  AES3500 TruePrint Sensor
> +	5714  AES3500-BZ TruePrint Sensor
> +	5715  AES3500-BZ TruePrint Sensor
> +	5716  AES3500-BZ TruePrint Sensor
> +	5717  AES3500-BZ TruePrint Sensor
> +	5730  AES3500 TruePrint Sensor
> +	5731  AES3500 TruePrint Sensor
> +	5732  AES3500 TruePrint Sensor
> +	5733  AES3500 TruePrint Sensor
> +	5734  AES3500-BZ TruePrint Sensor
> +	5735  AES3500-BZ TruePrint Sensor
> +	5736  AES3500-BZ TruePrint Sensor
> +	5737  AES3500-BZ TruePrint Sensor
> +	afe3  FingerLoc Sensor Module (Anchor)
> +	afe4  FingerLoc Sensor Module (Anchor)
> +	afe5  FingerLoc Sensor Module (Anchor)
> +	afe6  FingerLoc Sensor Module (Anchor)
> +	fffd  AES2510 Sensor (USB Emulator)
> +	ffff  Sensor (Emulator)
> +0900  Pinnacle Systems, Inc.
> +0901  VST Technologies
> +	0001  Hard Drive Adapter (TPP)
> +	0002  SigmaDrive Adapter (TPP)
> +0906  Faraday Technology Corp.
> +0908  Siemens AG
> +	01f4  SIMATIC NET CP 5711
> +	01fe  SIMATIC NET PC Adapter A2
> +	04b1  MediSET
> +	04b2  NC interface
> +	04b3  keyboard front panel Cockpit
> +	04b4  SCR_CCID
> +	2701  ShenZhen SANZHAI Technology Co.,Ltd Spy Pen VGA
> +0909  Audio-Technica Corp.
> +090a  Trumpion Microelectronics, Inc.
> +	1001  T33520 Flash Card Controller
> +	1100  Comotron C3310 MP3 player
> +	1200  MP3 player
> +	1540  Digitex Container Flash Disk
> +090b  Neurosmith
> +090c  Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.)
> +	0371  Silicon Motion SM371 Camera
> +	0373  Silicon Motion Camera
> +	037a  Silicon Motion Camera
> +	037b  Silicon Motion Camera
> +	037c  300k Pixel Camera
> +	1000  Flash Drive
> +	1132  5-in-1 Card Reader
> +	337b  Silicon Motion Camera
> +	3710  Silicon Motion Camera
> +	3720  Silicon Motion Camera
> +	37bc  HP Webcam-101 Integrated Camera
> +	37c0  Silicon Motion Camera
> +	6000  SD/SDHC Card Reader (SG365 / FlexiDrive XC+)
> +	6200  microSD card reader
> +	71b3  SM731 Camera
> +	837b  Silicon Motion Camera
> +	937b  Silicon Motion Camera
> +	b370  Silicon Motion SM370 Camera
> +	b371  Silicon Motion SM371 Camera
> +	f37d  Endoscope camera
> +090d  Multiport Computer Vertriebs GmbH
> +090e  Shining Technology, Inc.
> +090f  Fujitsu Devices, Inc.
> +0910  Alation Systems, Inc.
> +0911  Philips Speech Processing
> +	0c1c  SpeechMike III
> +	149a  SpeechMike II Pro Plus LFH5276
> +	2512  SpeechMike Pro
> +0912  Voquette, Inc.
> +0915  GlobeSpan, Inc.
> +	0001  DSL Modem
> +	0002  ADSL ATM Modem
> +	0005  LAN Modem
> +	2000  802.11 Adapter
> +	2002  802.11 Adapter
> +	8000  ADSL LAN Modem
> +	8005  DSL-302G Modem
> +	8101  ADSL WAN Modem
> +	8102  DSL-200 ADSL Modem
> +	8103  DSL-200 ADSL Modem
> +	8104  DSL-200 Modem
> +	8400  DSL Modem
> +	8401  DSL Modem
> +	8402  DSL Modem
> +	8500  DSL Modem
> +	8501  DSL Modem
> +0917  SmartDisk Corp.
> +	0001  eFilm Reader-11 SM/CF
> +	0002  eFilm Reader-11 SM
> +	0003  eFilm Reader-11 CF
> +	0200  FireFly
> +	0201  FireLite
> +	0202  STORAGE ADAPTER (FirePower)
> +	0204  FlashTrax Storage
> +	0205  STORAGE ADAPTER (CrossFire)
> +	0206  FireFly 20G HDD
> +	0207  FireLite
> +	020f  STORAGE ADAPTER (FireLite)
> +	da01  eFilm Reader-11 Test
> +	ffff  eFilm Reader-11 (Class/PDR)
> +0919  Tiger Electronics
> +	0100  Fast Flicks Digital Camera
> +091e  Garmin International
> +	0003  GPS (various models)
> +	0004  iQue 3600
> +	0200  Data Card Programmer (install)
> +	086e  Forerunner 735XT
> +	097f  Forerunner 235
> +	1200  Data Card Programmer
> +	21a5  etrex Cx (msc)
> +	2236  nuvi 360
> +	2271  Edge 605/705
> +	2295  Colorado 300
> +	22b6  eTrex Vista HCx (Mass Storage mode)
> +	231b  Oregon 400t
> +	2353  Nüvi 205T
> +	2380  Oregon series
> +	23cc  nüvi 1350
> +	2459  GPSmap 62/78 series
> +	2491  Edge 800
> +	2518  eTrex 10
> +	2519  eTrex 30
> +	2535  Edge 800
> +	253c  GPSmap 62sc
> +	255b  Nuvi 2505LM
> +	2613  Edge 200 TWN
> +	26a1  Nuvi 55
> +	2802  fenix 3
> +	28db  Drive 5
> +	47fb  nuviCam
> +	4cdb  Fenix 6
> +0920  Echelon Co.
> +	7500  Network Interface
> +0921  GoHubs, Inc.
> +	1001  GoCOM232 Serial
> +0922  Dymo-CoStar Corp.
> +	0007  LabelWriter 330
> +	0009  LabelWriter 310
> +	0013  LabelManager 400
> +	0019  LabelWriter 400
> +	001a  LabelWriter 400 Turbo
> +	0020  LabelWriter 450
> +	0400  LabelWriter SE450
> +	1001  LabelManager PnP
> +	8003  M10 Digital Postal Scale
> +	8004  M25 Digital Postal Scale
> +	8009  S250 Digital Postal Scale
> +0923  IC Media Corp.
> +	010f  SIIG MobileCam
> +0924  Xerox
> +	23dd  DocuPrint M760 (X760_USB)
> +	3ce8  Phaser 3428 Printer
> +	3cea  Phaser 3125
> +	3cec  Phaser 3250
> +	3d5b  Phaser 6115MFP TWAIN Scanner
> +	3d6d  WorkCentre 6015N/NI
> +	420f  WorkCentre PE220 Series
> +	421f  M20 Scanner
> +	423b  Printing Support
> +	4274  Xerox Phaser 3635MFPX
> +	ffef  WorkCenter M15
> +	fffb  DocuPrint M750 (X750_USB)
> +0925  Lakeview Research
> +	0005  Gamtec.,Ltd SmartJoy PLUS Adapter
> +	03e8  Wii Classic Controller Adapter
> +	1031  WiseGroup Ltd, Gameport Controller
> +	1700  PS/SS/N64 Joypad
> +	3881  Saleae Logic
> +	8101  Phidgets, Inc., 1-Motor PhidgetServo v2.0
> +	8104  Phidgets, Inc., 4-Motor PhidgetServo v2.0
> +	8800  WiseGroup Ltd, MP-8800 Quad Joypad
> +	8866  WiseGroup Ltd, MP-8866 Dual Joypad
> +0927  Summus, Ltd
> +0928  PLX Technology, Inc. (formerly Oxford Semiconductor, Ltd)
> +	8000  Firmware uploader
> +	ffff  Blank Oxford Device
> +0929  American Biometric Co.
> +092a  Toshiba Information & Industrial Sys. And Services
> +092b  Sena Technologies, Inc.
> +	4210  20S - Bluetooth Motorcycle headset & universal intercom
> +092f  Northern Embedded Science/CAVNEX
> +	0004  JTAG-4
> +	0005  JTAG-5
> +0930  Toshiba Corp.
> +	0009  Gigabeat F/X (HDD audio player)
> +	000c  Gigabeat F (mtp)
> +	0010  Gigabeat S (mtp)
> +	01bf  2.5"External Hard Disk
> +	0200  Integrated Bluetooth (Taiyo Yuden)
> +	021c  Atheros AR3012 Bluetooth
> +	0301  PCX1100U Cable Modem (WDM)
> +	0302  PCX2000 Cable Modem (WDM)
> +	0305  Cable Modem PCX3000
> +	0307  Cable Modem PCX2500
> +	0308  PCX2200 Cable Modem (WDM)
> +	0309  PCX5000 Cable Modem (WDM)
> +	030b  Cable Modem PCX2600
> +	0501  Bluetooth Controller
> +	0502  Integrated Bluetooth
> +	0503  Bluetooth Controller
> +	0505  Integrated Bluetooth
> +	0506  Integrated Bluetooth
> +	0507  Bluetooth Adapter
> +	0508  Integrated Bluetooth HCI
> +	0509  BT EDR Dongle
> +	0706  PocketPC e740
> +	0707  Pocket PC e330 Series
> +	0708  Pocket PC e350 Series
> +	0709  Pocket PC e750 Series
> +	070a  Pocket PC e400 Series
> +	070b  Pocket PC e800 Series
> +	0a07  WLM-10U1 802.11abgn Wireless Adapter [Ralink RT3572]
> +	0a08  WLM-20U2/GN-1080 802.11abgn Wireless Adapter [Atheros AR7010+AR9280]
> +	0a0b  WLU5053 802.11abgn Wireless Module [Broadcom BCM43236B]
> +	0a13  AX88179 Gigabit Ethernet [Toshiba]
> +	0b05  PX1220E-1G25 External hard drive
> +	0b09  PX1396E-3T01 External hard drive
> +	0b1a  STOR.E ALU 2S
> +	1300  Wireless Broadband (CDMA EV-DO) SM-Bus Minicard Status Port
> +	1301  Wireless Broadband (CDMA EV-DO) Minicard Status Port
> +	1302  Wireless Broadband (3G HSDPA) SM-Bus Minicard Status Port
> +	1303  Wireless Broadband (3G HSDPA) Minicard Status Port
> +	1308  Broadband (3G HSDPA) SM-Bus Minicard Diagnostics Port
> +	130b  F3507g Mobile Broadband Module
> +	130c  F3607gw Mobile Broadband Module
> +	1311  F3607gw v2 Mobile Broadband Module
> +	1400  Memory Stick 2GB
> +	140b  Memory Stick 64GB
> +	642f  TravelDrive
> +	6506  TravelDrive 2C
> +	6507  TravelDrive 2C
> +	6508  TravelDrive 2C
> +	6509  TravelDrive 2C
> +	6510  TravelDrive 2C
> +	6517  TravelDrive 2C
> +	6518  TravelDrive 2C
> +	6519  Kingston DataTraveler 2.0 USB Stick
> +	651a  TravelDrive 2C
> +	651b  TravelDrive 2C
> +	651c  TravelDrive 2C
> +	651d  TravelDrive 2C
> +	651e  TravelDrive 2C
> +	651f  TravelDrive 2C
> +	6520  TravelDrive 2C
> +	6521  TravelDrive 2C
> +	6522  TravelDrive 2C
> +	6523  TravelDrive
> +	6524  TravelDrive
> +	6525  TravelDrive
> +	6526  TravelDrive
> +	6527  TravelDrive
> +	6528  TravelDrive
> +	6529  TravelDrive
> +	652a  TravelDrive
> +	652b  TravelDrive
> +	652c  TravelDrive
> +	652d  TravelDrive
> +	652f  TravelDrive
> +	6530  TravelDrive
> +	6531  TravelDrive
> +	6532  256M Stick
> +	6533  512M Stick
> +	6534  TravelDrive
> +	653c  Kingston DataTraveler 2.0 Stick (512M)
> +	653d  Kingston DataTraveler 2.0 Stick (1GB)
> +	653e  Flash Memory
> +	6540  TransMemory Flash Memory
> +	6544  TransMemory-Mini / Kingston DataTraveler 2.0 Stick
> +	6545  Kingston DataTraveler 102/2.0 / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick
> +	a002  SunplusIT SATA bridge
> +0931  Harmonic Data Systems, Ltd
> +0932  Crescentec Corp.
> +	0300  VideoAdvantage
> +	0302  Syntek DC-112X
> +	0320  VideoAdvantage
> +	0482  USB2.0 TVBOX
> +	1100  DC-1100 Video Enhamcement Device
> +	1112  Veo Web Camera
> +	a311  Video Enhancement Device
> +0933  Quantum Corp.
> +0934  Spirent Communications
> +0936  NuTesla
> +	000a  Moebius
> +	000b  iMoebius
> +	000c  Rhythmedics 6 BioData Integrator
> +	000d  Hypurius
> +	000e  Millennius
> +	000f  Purius
> +	0030  Composite Device, Mass Storage Device (Flash Drive) amd HID
> +	003c  Rhythmedics HID Bootloader
> +0939  Lumberg, Inc.
> +	0b15  Toshiba Stor.E Alu 2
> +	0b16  Toshiba StorE HDD
> +093a  Pixart Imaging, Inc.
> +	0007  CMOS 100K-R Rev. 1.90
> +	010e  Digital camera, CD302N/Elta Medi@ digi-cam/HE-501A
> +	010f  Argus DC-1610/DC-1620/Emprex PCD3600/Philips P44417B keychain camera/Precision Mini,Model HA513A/Vivitar Vivicam 55
> +	020f  Bullet Line Photo Viewer
> +	050f  Mars-Semi Pc-Camera
> +	2460  Q-TEC WEBCAM 100
> +	2468  SoC PC-Camera
> +	2470  SoC PC-Camera
> +	2471  SoC PC-Camera
> +	2500  USB Optical Mouse
> +	2510  Optical Mouse
> +	2521  Optical Mouse
> +	2600  Typhoon Easycam USB 330K (newer)/Typhoon Easycam USB 2.0 VGA 1.3M/Sansun SN-508
> +	2601  SPC 610NC Laptop Camera
> +	2603  PAC7312 Camera
> +	2608  PAC7311 Trust WB-3300p
> +	260e  PAC7311 Gigaware VGA PC Camera:Trust WB-3350p:SIGMA cam 2350
> +	260f  PAC7311 SnakeCam
> +	2621  PAC731x Trust Webcam
> +	2622  Webcam Genius
> +	2624  Webcam
> +	2628  Webcam Genius iLook 300
> +	2700  GE 1.3 MP MiniCam Pro
> +093b  Plextor Corp.
> +	0010  Storage Adapter
> +	0011  PlexWriter 40/12/40U
> +	0012  PlexWriter 48/24/48U
> +	0041  PX-708A DVD RW
> +	0042  PX-712UF DVD RW
> +	a002  ConvertX M402U XLOADER
> +	a003  ConvertX AV100U A/V Capture Audio
> +	a004  ConvertX TV402U XLOADER
> +	a005  ConvertX TV100U A/V Capture
> +	a102  ConvertX M402U A/V Capture
> +	a104  ConvertX PX-TV402U/NA
> +093c  Intrepid Control Systems, Inc.
> +	0601  ValueCAN
> +	0701  NeoVI Blue vehicle bus interface
> +093d  InnoSync, Inc.
> +093e  J.S.T. Mfg. Co., Ltd
> +093f  Olympia Telecom Vertriebs GmbH
> +0940  Japan Storage Battery Co., Ltd
> +0941  Photobit Corp.
> +0942  i2Go.com, LLC
> +0943  HCL Technologies India Private, Ltd
> +0944  KORG, Inc.
> +	0001  PXR4 4-Track Digital Recorder
> +	0020  KAOSS Pad KP3 Dynamic Effect/Sampler
> +	0023  KAOSSILATOR PRO Dynamic Phrase Synthesizer
> +	010d  nanoKEY MIDI keyboard
> +	010e  nanoPAD pad controller
> +	010f  nanoKONTROL studio controller
> +	0117  nanoKONTROL2 MIDI Controller
> +	0f03  K-Series K61P MIDI studio controller
> +0945  Pasco Scientific
> +0948  Kronauer music in digital
> +	0301  USB Pro (24/48)
> +	0302  USB Pro (24/96 playback)
> +	0303  USB Pro (24/96 record)
> +	0304  USB Pro (16/48)
> +	1105  USB One
> +094b  Linkup Systems Corp.
> +	0001  neonode N2
> +094d  Cable Television Laboratories
> +094f  Yano
> +	0101  U640MO-03
> +	05fc  METALWEAR-HDD
> +0951  Kingston Technology
> +	0008  Ethernet
> +	000a  KNU101TX 100baseTX Ethernet
> +	1539  Iron Key D300 (Virtual CD-ROM and USB Stick)
> +	1600  DataTraveler II Pen Drive
> +	1601  DataTraveler II+ Pen Drive
> +	1602  DataTraveler Mini
> +	1603  DataTraveler 1GB/2GB Pen Drive
> +	1606  Eee PC 701 SD Card Reader [ENE UB6225]
> +	1607  DataTraveler 100
> +	160b  DataTraveler 2.0 (2GB)
> +	160d  DataTraveler Vault Privacy
> +	160e  DT110P/1GB Capless
> +	1613  DataTraveler DT101C Flash Drive
> +	1616  DataTraveler Locker 4GB
> +	161a  Dell HyperVisor internal flash drive
> +	1621  DataTraveler 150 (32GB)
> +	1624  DataTraveler G2
> +	1625  DataTraveler 101 II
> +	162a  DataTraveler 112 4GB Pen Drive
> +	162b  DataTraveler HyperX 3.0
> +	162d  DataTraveler 102
> +	1630  DataTraveler 200 (32GB)
> +	1642  DT101 G2
> +	1643  DataTraveler G3
> +	1653  Data Traveler 100 G2 8 GiB
> +	1656  DataTraveler Ultimate G2
> +	1660  Data Traveller 108
> +	1665  Digital DataTraveler SE9
> +	1666  DataTraveler 100 G3/G4/SE9 G2/50
> +	1689  DataTraveler SE9
> +	168a  DataTraveler Micro
> +	168c  DT Elite 3.0
> +	16a4  HyperX 7.1 Audio
> +	16b3  HyperX Savage
> +	16d2  HX-KB4BL1-US [HYPERX Alloy FPS Pro]
> +	16d4  HyperX SavageEXO [0382]
> +	16d5  DataTraveler Elite G2
> +	16df  HyperX QuadCast
> +	16e4  HyperX Pulsefire Raid
> +0954  RPM Systems Corp.
> +0955  NVIDIA Corp.
> +	7005  Bootloader
> +	7018  T186 [Tegra Parker]
> +	701a  U-Boot running on Tegra
> +	7020  L4T (Linux for Tegra) running on Tegra
> +	7030  T30 [Tegra 3] recovery mode
> +	7100  Tegra Device
> +	7140  T124 [Tegra K1/Logan 32-bit]
> +	7210  SHIELD Controller
> +	7321  Switch [Tegra Erista] recovery mode
> +	7721  T210 [TX1 Tegra Erista] recovery mode
> +	7820  T20 [Tegra 2] recovery mode
> +	7c18  T186 [TX2 Tegra Parker] recovery mode
> +	b400  SHIELD (debug)
> +	b401  SHIELD
> +	cf05  SHIELD Tablet (debug)
> +	cf06  SHIELD Tablet
> +	cf07  SHIELD Tablet
> +	cf08  SHIELD Tablet
> +	cf09  SHIELD Tablet
> +0956  BSquare Corp.
> +0957  Agilent Technologies, Inc.
> +	0200  E-Video DC-350 Camera
> +	0202  E-Video DC-350 Camera
> +	0407  33220A Waveform Generator
> +	0518  82357B GPIB Interface
> +	0a07  34411A Multimeter
> +	1507  33210A Waveform Generator
> +	1745  Test and Measurement Device (IVI)
> +	1f01  N5181A MXG Analog Signal Generator
> +	2918  U2702A oscilloscope
> +	fb18  LC Device
> +0958  CompuLink Research, Inc.
> +0959  Cologne Chip AG
> +	2bd0  Intelligent ISDN (Ver. 3.60.04) [HFC-S]
> +095a  Portsmith
> +	3003  Express Ethernet
> +095b  Medialogic Corp.
> +095c  K-Tec Electronics
> +095d  Polycom, Inc.
> +	0001  Polycom ViaVideo
> +0964  BITRAN
> +0967  Acer NeWeb Corp.
> +	0204  WarpLink 802.11b Adapter
> +0968  Catalyst Enterprises, Inc.
> +096e  Feitian Technologies, Inc.
> +	0005  ePass2000
> +	0006  HID Dongle (for OEMs - manufacturer string is "OEM")
> +	0120  Microcosm Ltd Dinkey
> +	0305  ePass2000Auto
> +	0309  ePass3000GM
> +	0401  ePass3000
> +	0405  Zzkey Dongle
> +	0608  SC Reader KP382
> +	0702  ePass3003
> +	0703  ePass3003Auto
> +	0802  ePass2000 (G&D STARCOS SPK 2.4)
> +	0807  ePass2003
> +0971  Gretag-Macbeth AG
> +	2000  i1 Pro
> +	2001  i1 Monitor
> +	2003  Eye-One display
> +	2005  Huey
> +	2007  ColorMunki Photo
> +0973  Schlumberger
> +	0001  e-gate Smart Card
> +0974  Datagraphix, a business unit of Anacomp
> +0975  OL'E Communications, Inc.
> +0976  Adirondack Wire & Cable
> +0977  Lightsurf Technologies
> +0978  Beckhoff GmbH
> +0979  Jeilin Technology Corp., Ltd
> +	0222  Keychain Display
> +	0224  JL2005A Toy Camera
> +	0226  JL2005A Toy Camera
> +	0227  JL2005B/C/D Toy Camera
> +097a  Minds At Work LLC
> +	0001  Digital Wallet
> +097b  Knudsen Engineering, Ltd
> +097c  Marunix Co., Ltd
> +097d  Rosun Technologies, Inc.
> +097e  Biopac Systems Inc.
> +	0035  MP35 v1.0
> +097f  Barun Electronics Co., Ltd
> +0981  Oak Technology, Ltd
> +0984  Apricorn
> +	0040  SATA Wire (2.5")
> +	0200  Hard Drive Storage (TPP)
> +	1407  Secure Key 3.0
> +0985  cab Produkttechnik GmbH & Co KG
> +	0045  Mach4/200 Label Printer
> +	00a3  A3/200 or A3/300 Label Printer
> +0986  Matsushita Electric Works, Ltd.
> +098c  Vitana Corp.
> +098d  INDesign
> +098e  Integrated Intellectual Property, Inc.
> +098f  Kenwood TMI Corp.
> +0993  Gemstar eBook Group, Ltd
> +	0001  REB1100 eBook Reader
> +	0002  eBook
> +0996  Integrated Telecom Express, Inc.
> +099a  Zippy Technology Corp.
> +	0638  Sanwa Supply Inc. Small Keyboard
> +	2620  Graphics tablet [Polostar PT1001, Zeniq PT1001, Leogics PT1001]
> +	610c  EL-610 Super Mini Electron luminescent Keyboard
> +	6330  SANWA Supply Inc. Slim Keyboard
> +	713a  WK-713 Multimedia Keyboard
> +	7160  Hyper Slim Keyboard
> +099e  Trimble Navigation, Ltd
> +09a3  PairGain Technologies
> +09a4  Contech Research, Inc.
> +09a5  VCON Telecommunications
> +09a6  Poinchips
> +	8001  Mass Storage Device
> +09a7  Data Transmission Network Corp.
> +09a8  Lin Shiung Enterprise Co., Ltd
> +09a9  Smart Card Technologies Co., Ltd
> +09aa  Intersil Corp.
> +	1000  Prism GT 802.11b/g Adapter
> +	3642  Prism 2.x 802.11b Adapter
> +09ab  Japan Cash Machine Co., Ltd.
> +09ae  Tripp Lite
> +	0002  Any Device (see discussion)
> +09b0  Fargo
> +	2400  HDP5000
> +09b2  Franklin Electronic Publishers, Inc.
> +	0001  eBookman Palm Computer
> +09b3  Altius Solutions, Inc.
> +09b4  MDS Telephone Systems
> +09b5  Celltrix Technology Co., Ltd
> +09bc  Grundig
> +	0002  MPaxx MP150 MP3 Player
> +09be  MySmart.Com
> +	0001  MySmartPad
> +09bf  Auerswald GmbH & Co. KG
> +	00c0  COMpact 2104 ISDN PBX
> +	00db  COMpact 4410/2206 ISDN
> +	00dc  COMpact 4406 DSL (PBX)
> +	00dd  COMpact 2204 (PBX)
> +	00de  COMpact 2104 (Rev.2 PBX)
> +	00e0  COMmander Business (PBX)
> +	00e2  COMmander Basic.2 (PBX)
> +	00f1  COMfort 2000 (System telephone)
> +	00f2  COMfort 1200 (System telephone)
> +	00f5  COMfortel 2500 (System telephone)
> +	8000  COMpact 2104 DSL (DSL modem)
> +	8001  COMpact 4406 DSL (DSL modem)
> +	8002  Analog/ISDN Converter (Line converter)
> +	8005  WG-640 (Automatic event dialer)
> +09c0  Genpix Electronics, LLC
> +	0136  Axon CNS, MultiClamp 700B
> +	0202  8PSK DVB-S tuner
> +	0203  Skywalker-1 DVB-S tuner
> +	0204  Skywalker-CW3K DVB-S tuner
> +	0205  Skywalker-CW3K DVB-S tuner
> +	0206  Skywalker-2 DVB-S tuner
> +09c1  Arris Interactive LLC
> +	1337  TOUCHSTONE DEVICE
> +09c2  Nisca Corp.
> +09c3  HID Global
> +	0007  Reader V2
> +	0008  ZFG-9800-AC SmartCard Reader
> +	0014  ActivIdentity ActivKey SIM USB Token
> +	0028  Crescendo Key
> +	0029  Crescendo Key
> +	002a  Crescendo Key
> +	002b  Crescendo Key
> +	002c  Crescendo Key
> +	002e  Crescendo Key
> +09c4  ACTiSYS Corp.
> +	0011  ACT-IR2000U IrDA Dongle
> +09c5  Memory Corp.
> +09ca  BMC Messsysteme GmbH
> +	5544  PIO
> +09cb  FLIR Systems
> +	1001  Network Adapter
> +	1002  Ex-Series RNDIS interface
> +	1004  Ex-Series UVC interface
> +	1005  Ex-Series RNDIS and UVC interface
> +	1006  Ex-Series RNDIS and MSD interface
> +	1007  Ex-Series UVC and MSD interface
> +	1008  Serial Port
> +	1996  FLIR ONE Camera
> +	4007  Breach
> +09cc  Workbit Corp.
> +	0404  BAFO USB-ATA/ATAPI Bridge Controller
> +09cd  Psion Dacom Home Networks, Ltd
> +	2001  Psion WaveFinder DAB radio receiver
> +09ce  City Electronics, Ltd
> +09cf  Electronics Testing Center, Taiwan
> +09d1  NeoMagic, Inc.
> +09d2  Vreelin Engineering, Inc.
> +09d3  Com One
> +	0001  ISDN TA / Light Rider 128K
> +	000b  Bluetooth Adapter class 2
> +09d7  Hexagon NovAtel Inc.
> +	0100  GPS/GNSS/SPAN sensor
> +09d8  ELATEC GmbH
> +	0320  TWN3 Multi125
> +	0406  TWN4 MIFARE NFC
> +09d9  KRF Tech, Ltd
> +09da  A4Tech Co., Ltd.
> +	0006  Optical Mouse WOP-35 / Trust 450L Optical Mouse
> +	000a  Optical Mouse Opto 510D / OP-620D
> +	000e  X-F710F Optical Mouse 3xFire Gaming Mouse
> +	0018  Trust Human Interface Device
> +	001a  Wireless Mouse & RXM-15 Receiver
> +	002a  Wireless Optical Mouse NB-30
> +	022b  Wireless Mouse (Battery Free)
> +	024f  RF Receiver and G6-20D Wireless Optical Mouse
> +	0260  KV-300H Isolation Keyboard
> +	032b  Wireless Mouse (Battery Free)
> +	09da  Bloody V8 Mouse
> +	1068  Bloody A90 Mouse
> +	112c  Bloody V5 Mouse
> +	3a60  Bloody V8M Core 2 Mouse
> +	8090  X-718BK Oscar Optical Gaming Mouse
> +	9033  X-718BK Optical Mouse
> +	9066  F3 V-Track Gaming Mouse
> +	9090  XL-730K / XL-750BK / XL-755BK Mice
> +	f613  Bloody V7M Mouse
> +09db  Measurement Computing Corp.
> +	0075  MiniLab 1008
> +	0076  PMD-1024
> +	007a  PMD-1208LS
> +	0081  USB-1616FS
> +	0082  USB-1208FS
> +	0088  USB-1616FS internal hub
> +09dc  Aimex Corp.
> +09dd  Fellowes, Inc.
> +09df  Addonics Technologies Corp.
> +09e1  Intellon Corp.
> +	5121  MicroLink dLAN
> +09e5  Jo-Dan International, Inc.
> +09e6  Silutia, Inc.
> +09e7  Real 3D, Inc.
> +09e8  AKAI  Professional M.I. Corp.
> +	0045  MPK Mini Mk II MIDI Controller
> +	0062  MPD16 MIDI Pad Controller Unit
> +	006d  EWI electronic wind instrument
> +	0071  MPK25 MIDI Keyboard
> +	0076  LPK25 MIDI Keyboard
> +09e9  Chen-Source, Inc.
> +09eb  IM Networks, Inc.
> +	4331  iRhythm Tuner Remote
> +09ef  Xitel
> +	0101  MD-Port DG2 MiniDisc Interface
> +09f3  GoFlight, Inc.
> +	0018  GF-46 Multi-Mode Display Module
> +	0028  RP-48 Combination Pushbutton-Rotary Module
> +	0048  LGTII - Landing Gear and Trim Control Module
> +	0064  MCPPro - Airliner Mode Control Panel (Autopilot)
> +	0300  EFIS - Electronic Flight Information System
> +09f5  AresCom
> +	0168  Network Adapter
> +	0188  LAN Adapter
> +	0850  Adapter
> +09f6  RocketChips, Inc.
> +09f7  Edu-Science (H.K.), Ltd
> +09f8  SoftConnex Technologies, Inc.
> +09f9  Bay Associates
> +09fa  Mtek Vision
> +09fb  Altera
> +	6001  Blaster
> +09ff  Gain Technology Corp.
> +0a00  Liquid Audio
> +0a01  ViA, Inc.
> +0a05  Unknown Manufacturer
> +	0001  Hub
> +	7211  hub
> +0a07  Ontrak Control Systems Inc.
> +	0064  ADU100 Data Acquisition Interface
> +	0078  ADU120 Data Acquisition Interface
> +	0082  ADU130 Data Acquisition Interface
> +	00c8  ADU200 Relay I/O Interface
> +	00d0  ADU208 Relay I/O Interface
> +	00da  ADU218 Solid-State Relay I/O Interface
> +0a0b  Cybex Computer Products Co.
> +0a0d  Servergy, Inc
> +	2514  CTS-1000 Internal Hub
> +0a11  Xentec, Inc.
> +0a12  Cambridge Silicon Radio, Ltd
> +	0001  Bluetooth Dongle (HCI mode)
> +	0002  Frontline Test Equipment Bluetooth Device
> +	0003  Nanosira
> +	0004  Nanosira WHQL Reference Radio
> +	0005  Nanosira-Multimedia
> +	0006  Nanosira-Multimedia WHQL Reference Radio
> +	0007  Nanosira3-ROM
> +	0008  Nanosira3-ROM
> +	0009  Nanosira4-EDR WHQL Reference Radio
> +	000a  Nanosira4-EDR-ROM
> +	000b  Nanosira5-ROM
> +	0042  SPI Converter
> +	0043  Bluetooth Device
> +	0100  Casira with BlueCore2-External Module
> +	0101  Casira with BlueCore2-Flash Module
> +	0102  Casira with BlueCore3-Multimedia Module
> +	0103  Casira with BlueCore3-Flash Module
> +	0104  Casira with BlueCore4-External Module
> +	0105  Casira with BlueCore4-Multimedia Module
> +	1000  Bluetooth Dongle (HID proxy mode)
> +	1010  Bluetooth Device
> +	1011  Bluetooth Device
> +	1012  Bluetooth Device
> +	ffff  USB Bluetooth Device in DFU State
> +0a13  Telebyte, Inc.
> +0a14  Spacelabs Medical, Inc.
> +0a15  Scalar Corp.
> +0a16  Trek Technology (S) PTE, Ltd
> +	1111  ThumbDrive
> +	8888  IBM USB Memory Key
> +	9988  Trek2000 TD-G2
> +0a17  Pentax Corp.
> +	0004  Optio 330
> +	0006  Optio S / S4
> +	0007  Optio 550
> +	0009  Optio 33WR
> +	000a  Optio 555
> +	000c  Optio 43WR (mass storage mode)
> +	000d  Optio 43WR
> +	0015  Optio S40/S5i
> +	003b  Optio 50 (mass storage mode)
> +	003d  Optio S55
> +	0041  Optio S5z
> +	0043  *ist DL
> +	0047  Optio S60
> +	0052  Optio 60 Digital Camera
> +	006e  K10D
> +	0070  K100D
> +	0093  K200D
> +	00a7  Optio E50
> +	1001  EI2000 Camera powered by Digita!
> +0a18  Heidelberger Druckmaschinen AG
> +0a19  Hua Geng Technologies, Inc.
> +0a21  Medtronic Physio Control Corp.
> +	8001  MMT-7305WW [Medtronic Minimed CareLink]
> +0a22  Century Semiconductor USA, Inc.
> +0a27  Datacard Group
> +	0102  SP35
> +0a2c  AK-Modul-Bus Computer GmbH
> +	0008  GPIO Ports
> +0a34  TG3 Electronics, Inc.
> +	0101  TG82tp
> +	0110  Deck 82-key backlit keyboard
> +0a35  Radikal Technologies
> +	002a  SAC - Software Assigned Controller
> +	008a  SAC Hub
> +0a39  Gilat Satellite Networks, Ltd
> +0a3a  PentaMedia Co., Ltd
> +	0163  KN-W510U 1.0 Wireless LAN Adapter
> +0a3c  NTT DoCoMo, Inc.
> +0a3d  Varo Vision
> +0a3f  Swissonic AG
> +0a43  Boca Systems, Inc.
> +0a46  Davicom Semiconductor, Inc.
> +	0268  ST268
> +	6688  ZT6688 Fast Ethernet Adapter
> +	8515  ADMtek ADM8515 NIC
> +	9000  DM9000E Fast Ethernet Adapter
> +	9601  DM9601 Fast Ethernet Adapter
> +0a47  Hirose Electric
> +0a48  I/O Interconnect
> +	3233  Multimedia Card Reader
> +	3239  Multimedia Card Reader
> +	3258  Dane Elec zMate SD Reader
> +	3259  Dane Elec zMate CF Reader
> +	5000  MediaGear xD-SM
> +	500a  Mass Storage Device
> +	500f  Mass Storage Device
> +	5010  Mass Storage Device
> +	5011  Mass Storage Device
> +	5014  Mass Storage Device
> +	5020  Mass Storage Device
> +	5021  Mass Storage Device
> +	5022  Mass Storage Device
> +	5023  Mass Storage Device
> +	5024  Mass Storage Device
> +	5025  Mass Storage Device
> +0a4a  Ploytec GmbH
> +	a400  AUDIO JUNCTION 2.0
> +0a4b  Fujitsu Media Devices, Ltd
> +0a4c  Computex Co., Ltd
> +	15d9  OPTICAL MOUSE
> +0a4d  Evolution Electronics, Ltd
> +	0064  MK-225 Driver
> +	0065  MK-225C Driver
> +	0066  MK-225C Driver
> +	0067  MK-425C Driver
> +	0078  MK-37 Driver
> +	0079  MK-37C Driver
> +	007a  MK-37C Driver
> +	008c  TerraTec MIDI MASTER
> +	008d  MK-249C Driver
> +	008e  MK-249C MIDI Keyboard
> +	008f  MK-449C Driver
> +	0090  Keystation 49e Driver
> +	0091  Keystation 61es Driver
> +	00a0  MK-361 Driver
> +	00a1  MK-361C Driver
> +	00a2  MK-361C Driver
> +	00a3  MK-461C MIDI Keyboard
> +	00b5  Keystation Pro 88 Driver
> +	00d2  E-Keys Driver
> +	00f0  UC-16 Driver
> +	00f1  X-Session Driver
> +	00f5  UC-33e MIDI Controller
> +0a4e  Steinberg Soft-und Hardware GmbH
> +0a4f  Litton Systems, Inc.
> +0a50  Mimaki Engineering Co., Ltd
> +0a51  Sony Electronics, Inc.
> +0a52  Jebsee Electronics Co., Ltd
> +0a53  Portable Peripheral Co., Ltd
> +	1000  Scanner
> +	2000  Q-Scan A6 Scanner
> +	2001  Q-Scan A6 Scanner
> +	2013  Media Drive A6 Scanner
> +	2014  Media Drive A6 Scanner
> +	2015  BizCardReader 600C
> +	2016  BizCardReader 600C
> +	202a  Scanshell-CSSN
> +	3000  Q-Scan A8 Scanner
> +	3002  Q-Scan A8 Reader
> +	3015  BizCardReader 300G
> +	302a  LM9832 - PA570 Mini Business Card Scanner [Targus]
> +	5001  BizCardReader 900C
> +0a5a  Electronics For Imaging, Inc.
> +0a5b  EAsics NV
> +0a5c  Broadcom Corp.
> +	0201  iLine10(tm) Network Adapter
> +	0bdc  802.11a/b/g/n/ac Wireless Adapter
> +	2000  Bluetooth Device
> +	2001  Bluetooth Device
> +	2009  BCM2035 Bluetooth
> +	200a  BCM2035 Bluetooth dongle
> +	200f  Bluetooth Controller
> +	201d  Bluetooth Device
> +	201e  IBM Integrated Bluetooth IV
> +	2020  Bluetooth dongle
> +	2021  BCM2035B3 Bluetooth Adapter
> +	2033  BCM2033 Bluetooth
> +	2035  BCM2035 Bluetooth
> +	2038  Blutonium Device
> +	2039  BCM2045 Bluetooth
> +	2045  Bluetooth Controller
> +	2046  Bluetooth Device
> +	2047  Bluetooth Device
> +	205e  Bluetooth Device
> +	2100  Bluetooth 2.0+eDR dongle
> +	2101  BCM2045 Bluetooth
> +	2102  ANYCOM Blue USB-200/250
> +	2110  BCM2045B (BDC-2) [Bluetooth Controller]
> +	2111  ANYCOM Blue USB-UHE 200/250
> +	2120  2045 Bluetooth 2.0 USB-UHE Device with trace filter
> +	2121  BCM2210 Bluetooth
> +	2122  Bluetooth 2.0+EDR dongle
> +	2123  Bluetooth dongle
> +	2130  2045 Bluetooth 2.0 USB-UHE Device with trace filter
> +	2131  2045 Bluetooth 2.0 Device with trace filter
> +	2145  BCM2045B (BDC-2.1) [Bluetooth Controller]
> +	2148  BCM92046DG-CL1ROM Bluetooth 2.1 Adapter
> +	2150  BCM2046 Bluetooth Device
> +	2151  Bluetooth
> +	2154  BCM92046DG-CL1ROM Bluetooth 2.1 UHE Dongle
> +	216a  BCM43142A0 Bluetooth
> +	216c  BCM43142A0 Bluetooth Device
> +	216d  BCM43142A0 Bluetooth 4.0
> +	216f  BCM20702A0 Bluetooth
> +	217d  HP Bluethunder
> +	217f  BCM2045B (BDC-2.1)
> +	2198  Bluetooth 3.0 Device
> +	219b  Bluetooth 2.1 Device
> +	21b1  HP Bluetooth Module
> +	21b4  BCM2070 Bluetooth 2.1 + EDR
> +	21b9  BCM2070 Bluetooth 2.1 + EDR
> +	21ba  BCM2070 Bluetooth 2.1 + EDR
> +	21bb  BCM2070 Bluetooth 2.1 + EDR
> +	21bc  BCM2070 Bluetooth 2.1 + EDR
> +	21bd  BCM2070 Bluetooth 2.1 + EDR
> +	21d7  BCM43142 Bluetooth 4.0
> +	21e1  HP Portable SoftSailing
> +	21e3  HP Portable Valentine
> +	21e6  BCM20702 Bluetooth 4.0 [ThinkPad]
> +	21e8  BCM20702A0 Bluetooth 4.0
> +	21ec  BCM20702A0 Bluetooth 4.0
> +	21f1  HP Portable Bumble Bee
> +	22be  BCM2070 Bluetooth 3.0 + HS
> +	4500  BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth)
> +	4502  Keyboard (Boot Interface Subclass)
> +	4503  Mouse (Boot Interface Subclass)
> +	5800  BCM5880 Secure Applications Processor
> +	5801  BCM5880 Secure Applications Processor with fingerprint swipe sensor
> +	5802  BCM5880 Secure Applications Processor with fingerprint touch sensor
> +	5803  BCM5880 Secure Applications Processor with secure keyboard
> +	5804  BCM5880 Secure Applications Processor with fingerprint swipe sensor
> +	6300  Pirelli Remote NDIS Device
> +	6410  BCM20703A1 Bluetooth 4.1 + LE
> +	bd11  BCM4320 802.11bg Wireless Adapter
> +	bd12  BCM4326U 802.11bg Wireless Adapter
> +	bd13  BCM4323 802.11abgn Wireless Adapter
> +	bd16  BCM4319 802.11bgn Wireless Adapter
> +	bd17  BCM43236 802.11abgn Wireless Adapter
> +	bd1d  BCM43526 802.11a/b/g/n/ac (2x2) Wireless Adapter
> +	bd1e  BCM43143 802.11bgn (1x1) Wireless Adapter
> +	bd1f  BCM43242 802.11abgn Wireless Adapter
> +	d11b  Eminent EM4045 [Broadcom 4320 USB]
> +0a5d  Diatrend Corp.
> +0a5f  Zebra
> +	0009  LP2844 Printer
> +	0050  P120i / WM120i
> +	0080  GK420d Label Printer
> +	0081  GK420t Label Printer
> +	0084  GX420d Desktop Label Printer
> +	008b  HC100 wristbands Printer
> +	008c  ZP 450 Printer
> +	00d1  Zebra GC420d Label Printer
> +	0110  ZD500 Desktop Label Printer
> +	930a  Printer
> +0a62  MPMan
> +	0010  MPMan MP-F40 MP3 Player
> +0a66  ClearCube Technology
> +0a67  Medeli Electronics Co., Ltd
> +0a68  Comaide Corp.
> +0a69  Chroma ate, Inc.
> +0a6b  Green House Co., Ltd
> +	0001  Compact Flash R/W with MP3 player
> +	000f  FlashDisk
> +0a6c  Integrated Circuit Systems, Inc.
> +0a6d  UPS Manufacturing
> +0a6e  Benwin
> +0a6f  Core Technology, Inc.
> +	0400  Xanboo
> +0a70  International Game Technology
> +0a71  VIPColor Technologies USA, Inc.
> +	0001  VP485 Printer
> +0a72  Sanwa Denshi
> +0a73  Mackie Designs
> +	0002  XD-2 [Spike]
> +0a7d  NSTL, Inc.
> +0a7e  Octagon Systems Corp.
> +0a80  Rexon Technology Corp., Ltd
> +0a81  Chesen Electronics Corp.
> +	0101  Keyboard
> +	0103  Keyboard
> +	0203  Mouse
> +	0205  PS/2 Keyboard+Mouse Adapter
> +	0701  USB Missile Launcher
> +	ff01  Wireless Missile Launcher
> +0a82  Syscan
> +	4600  TravelScan 460/464
> +	6605  ScanShell 800N
> +0a83  NextComm, Inc.
> +0a84  Maui Innovative Peripherals
> +0a85  Idexx Labs
> +0a86  NITGen Co., Ltd
> +0a89  Aktiv
> +	0001  Guardant Stealth/Net
> +	0002  Guardant ID
> +	0003  Guardant Stealth 2
> +	0004  Rutoken
> +	0005  Guardant Fidus
> +	0006  Guardant Stealth 3
> +	0007  Guardant Stealth 2
> +	0008  Guardant Stealth 3 Sign/Time
> +	0009  Guardant Code
> +	000a  Guardant Sign Pro
> +	000b  Guardant Sign Pro HID
> +	000c  Guardant Stealth 3 Sign/Time
> +	000d  Guardant Code HID
> +	000f  Guardant System Firmware Update
> +	0020  Rutoken S
> +	0025  Rutoken lite
> +	0026  Rutoken lite HID
> +	002a  Rutoken Mass Storage
> +	002b  Guardant Mass Storage
> +	0030  Rutoken ECP
> +	0040  Rutoken ECP HID
> +	0060  Rutoken Magistra
> +	0061  Rutoken Magistra
> +	0069  Reader
> +	0080  Rutoken PinPad Ex
> +	0081  Rutoken PinPad In
> +	0082  Rutoken PinPad 2
> +0a8d  Picturetel
> +0a8e  Japan Aviation Electronics Industry, Ltd
> +	2011  Filter Driver For JAE XMC R/W
> +0a90  Candy Technology Co., Ltd
> +0a91  Globlink Technology, Inc.
> +	3801  Targus PAKP003 Mouse
> +0a92  EGO SYStems, Inc.
> +	0011  SYS WaveTerminal U2A
> +	0021  GIGAPort
> +	0031  GIGAPortAG
> +	0053  AudioTrak Optoplay
> +	0061  Waveterminal U24
> +	0071  MAYA EX7
> +	0091  Maya 44
> +	00b1  MAYA EX5
> +	1000  MIDI Mate
> +	1010  RoMI/O
> +	1020  M4U
> +	1030  M8U
> +	1090  KeyControl49
> +	10a0  KeyControl25
> +0a93  C Technologies AB
> +	0002  C-Pen 10
> +	0005  MyPen Light
> +	000d  Input Pen
> +	0010  C-Pen 20
> +	0a93  PayPen
> +0a94  Intersense
> +0aa3  Lava Computer Mfg., Inc.
> +0aa4  Develco Elektronik
> +0aa5  First International Digital
> +	0002  irock! 500 Series
> +	0801  MP3 Player
> +0aa6  Perception Digital, Ltd
> +	0101  Hercules Jukebox
> +	1501  Store 'n' Go HD Drive
> +0aa7  Wincor Nixdorf International GmbH
> +	0100  POS Keyboard, TA58P-USB
> +	0101  POS Keyboard, TA85P-USB
> +	0102  POS Keyboard, TA59-USB
> +	0103  POS Keyboard, TA60-USB
> +	0104  SNIkey Keyboard, SNIKey-KB-USB
> +	0200  Operator Display, BA63-USB
> +	0201  Operator Display, BA66-USB
> +	0202  Operator Display & Scanner, XiCheck-BA63
> +	0203  Operator Display & Scanner, XiCheck-BA66
> +	0204  Graphics Operator Display, BA63GV
> +	0300  POS Printer (printer class mode), TH210
> +	0301  POS Printer (native mode), TH210
> +	0302  POS Printer (printer class mode), TH220
> +	0303  POS Printer (native mode), TH220
> +	0304  POS Printer, TH230
> +	0305  Lottery Printer, XiPrintPlus
> +	0306  POS Printer (printer class mode), TH320
> +	0307  POS Printer (native mode), TH320
> +	0308  POS Printer (printer class mode), TH420
> +	0309  POS Printer (native mode), TH420
> +	030a  POS Printer, TH200B
> +	0400  Lottery Scanner, Xiscan S
> +	0401  Lottery Scanner, Xiscan 3
> +	0402  Programmable Magnetic Swipe Card Reader, MSRP-USB
> +	0500  IDE Adapter
> +	0501  Hub Printer Interface
> +	0502  Hub SNIKey Keyboard
> +	4304  Banking Printer TP07
> +	4305  Banking Printer TP07c
> +	4500  WN Central Special Electronics
> +0aa8  TriGem Computer, Inc.
> +	0060  TG 11Mbps WLAN Mini Adapter
> +	1001  DreamComboM4100
> +	3002  InkJet Color Printer
> +	8001  TG_iMON
> +	8002  TG_KLOSS
> +	a001  TG_X2
> +	a002  TGVFD_KLOSS
> +	ffda  iMON_VFD
> +0aa9  Baromtec Co.
> +	f01b  Medion MD 6242 MP3 Player
> +0aaa  Japan CBM Corp.
> +0aab  Vision Shape Europe SA
> +0aac  iCompression, Inc.
> +0aad  Rohde & Schwarz GmbH & Co. KG
> +	0003  NRP-Z21
> +	000c  NRP-Z11
> +	0013  NRP-Z22
> +	0014  NRP-Z23
> +	0015  NRP-Z24
> +	0016  NRP-Z51
> +	0017  NRP-Z52
> +	0018  NRP-Z55
> +	0019  NRP-Z56
> +	0021  NRP-Z91
> +	0023  NRP-Z81
> +	002c  NRP-Z31
> +	002d  NRP-Z37
> +	002f  NRP-Z27
> +	0051  NRP-Z28
> +	0052  NRP-Z98
> +	0062  NRP-Z92
> +	0070  NRP-Z57
> +	0083  NRP-Z85
> +	0095  NRP-Z86
> +	0117  HMF / HMP / HMS-X / HMO series Oscilloscopes
> +	0118  HMF / HMP / HMS-X / HMO series Oscilloscopes
> +	0119  HMF / HMP / HMS-X / HMO series Oscilloscopes
> +0aae  NEC infrontia Corp. (Nitsuko)
> +0aaf  Digitalway Co., Ltd
> +0ab0  Arrow Strong Electronics Co., Ltd
> +0ab1  FEIG ELECTRONIC GmbH
> +	0002  OBID RFID-Reader
> +	0004  OBID classic-pro
> +0aba  Ellisys
> +	8001  Tracker 110 Protocol Analyzer
> +	8002  Explorer 200 Protocol Analyzer
> +0abe  Stereo-Link
> +	0101  SL1200 DAC
> +0abf  Diolan
> +	3370  I2C/SPI Adapter - U2C-12
> +0ac3  Sanyo Semiconductor Company Micro
> +0ac4  Leco Corp.
> +0ac5  I & C Corp.
> +0ac6  Singing Electrons, Inc.
> +0ac7  Panwest Corp.
> +0ac8  Z-Star Microelectronics Corp.
> +	0301  Web Camera
> +	0302  ZC0302 Webcam
> +	0321  Vimicro generic vc0321 Camera
> +	0323  Luxya WC-1200 USB 2.0 Webcam
> +	0328  A4Tech PK-130MG
> +	0336  Elecom UCAM-DLQ30
> +	301b  ZC0301 Webcam
> +	303b  ZC0303 Webcam
> +	305b  ZC0305 Webcam
> +	307b  USB 1.1 Webcam
> +	332d  Vega USB 2.0 Camera
> +	3343  Sirius USB 2.0 Camera
> +	3370  Traveler TV 6500 SF Dia-scanner
> +	3420  Venus USB2.0 Camera
> +	c001  Sony embedded vimicro Camera
> +	c002  Visual Communication Camera VGP-VCC1
> +	c302  Vega USB 2.0 Camera
> +	c303  Saturn USB 2.0 Camera
> +	c326  Namuga 1.3M Webcam
> +	c33f  Webcam
> +	c412  Lenovo IdeaCentre Web Camera
> +	c429  Lenovo ThinkCentre Web Camera
> +	c42d  Lenovo IdeaCentre Web Camera
> +0ac9  Micro Solutions, Inc.
> +	0000  Backpack CD-ReWriter
> +	0001  BACKPACK  2 Cable
> +	0010  BACKPACK
> +	0011  Backpack 40GB Hard Drive
> +	0110  BACKPACK
> +	0111  BackPack
> +	1234  BACKPACK
> +0aca  OPEN Networks Ltd
> +	1060  OPEN NT1 Plus II
> +0acc  Koga Electronics Co.
> +0acd  ID Tech
> +	0300  IDT1221U RS-232 Adapter
> +	0401  Spectrum III Hybrid Smartcard Reader
> +	0630  Spectrum III Mag-Only Insert Reader (SPT3-355 Series) USB-CDC
> +	0810  SecurePIN (IDPA-506100Y) PIN Pad
> +	2030  ValueMag Magnetic Stripe Reader
> +	3710  ViVOpay Kiosk III
> +0ace  ZyDAS
> +	1201  ZD1201 802.11b
> +	1211  ZD1211 802.11g
> +	1215  ZD1211B 802.11g
> +	1221  ZD1221 802.11n
> +	1602  ZyXEL Omni FaxModem 56K
> +	1608  ZyXEL Omni FaxModem 56K UNO
> +	1611  ZyXEL Omni FaxModem 56K Plus
> +	2011  Virtual media for 802.11bg
> +	20ff  Virtual media for 802.11bg
> +	a211  ZD1211 802.11b/g Wireless Adapter
> +	b215  802.11bg
> +0acf  Intoto, Inc.
> +0ad0  Intellix Corp.
> +0ad1  Remotec Technology, Ltd
> +0ad2  Service & Quality Technology Co., Ltd
> +0ada  Data Encryption Systems Ltd.
> +	0005  DK2
> +0ae3  Allion Computer, Inc.
> +0ae4  Taito Corp.
> +0ae7  Neodym Systems, Inc.
> +0ae8  System Support Co., Ltd
> +0ae9  North Shore Circuit Design L.L.P.
> +0aea  SciEssence, LLC
> +0aeb  TTP Communications, Ltd
> +0aec  Neodio Technologies Corp.
> +	2101  SmartMedia Card Reader
> +	2102  CompactFlash Card Reader
> +	2103  MMC/SD Card Reader
> +	2104  MemoryStick Card Reader
> +	2201  SmartMedia+CompactFlash Card Reader
> +	2202  SmartMedia+MMC/SD Card Reader
> +	2203  SmartMedia+MemoryStick Card Reader
> +	2204  CompactFlash+MMC/SD Card Reader
> +	2205  CompactFlash+MemoryStick Card Reader
> +	2206  MMC/SD+MemoryStick Card Reader
> +	2301  SmartMedia+CompactFlash+MMC/SD Card Reader
> +	2302  SmartMedia+CompactFlash+MemoryStick Card Reader
> +	2303  SmartMedia+MMC/SD+MemoryStick Card Reader
> +	2304  CompactFlash+MMC/SD+MemoryStick Card Reader
> +	3016  MMC/SD+Memory Stick Card Reader
> +	3050  ND3050 8-in-1 Card Reader
> +	3060  1.1 FS Card Reader
> +	3101  MMC/SD Card Reader
> +	3102  MemoryStick Card Reader
> +	3201  MMC/SD+MemoryStick Card Reader
> +	3216  HS Card Reader
> +	3260  7-in-1 Card Reader
> +	5010  ND5010 Card Reader
> +0af0  Option
> +	5000  UMTS Card
> +	6000  GlobeTrotter 3G datacard
> +	6300  GT 3G Quad UMTS/GPRS Card
> +	6600  GlobeTrotter 3G+ datacard
> +	6711  GlobeTrotter Express 7.2 v2
> +	6971  Globetrotter HSDPA Modem
> +	7251  Globetrotter HSUPA Modem (aka iCON HSUPA E)
> +	7501  Globetrotter HSUPA Modem (icon 411 aka "Vodafone K3760")
> +	7601  Globetrotter MO40x 3G Modem (GTM 382)
> +	7701  Globetrotter HSUPA Modem (aka icon 451)
> +	d055  Globetrotter GI0505 [iCON 505]
> +0af6  Silver I Co., Ltd
> +0af7  B2C2, Inc.
> +	0101  Digital TV USB Receiver (DVB-S/T/C / ATSC)
> +0af9  Hama, Inc.
> +	0010  USB SightCam 100
> +	0011  Micro Innovations IC50C Webcam
> +0afa  DMC Co., Ltd.
> +	07d2  Controller Board for Projected Capacitive Touch Screen DUS3000
> +0afc  Zaptronix Ltd
> +0afd  Tateno Dennou, Inc.
> +0afe  Cummins Engine Co.
> +0aff  Jump Zone Network Products, Inc.
> +0b00  INGENICO
> +0b05  ASUSTek Computer, Inc.
> +	0001  MeMO Pad HD 7 (CD-ROM mode)
> +	0301  MyPal A696 GPS PDA
> +	1101  Mass Storage (UISDMC4S)
> +	1706  WL-167G v1 802.11g Adapter [Ralink RT2571]
> +	1707  WL-167G v1 802.11g Adapter [Ralink RT2571]
> +	1708  Mass Storage Device
> +	170b  Multi card reader
> +	170c  WL-159g 802.11bg [ZyDAS ZD1211B+AL2230]
> +	170d  802.11b/g Wireless Network Adapter
> +	1712  BT-183 Bluetooth 2.0+EDR adapter
> +	1715  2045 Bluetooth 2.0 Device with trace filter
> +	1716  Bluetooth Device
> +	1717  WL169gE 802.11g Adapter [Broadcom 4320 USB]
> +	171b  A9T wireless 802.11bg
> +	171c  802.11b/g Wireless Network Adapter
> +	171f  My Cinema U3000 Mini [DiBcom DiB7700P]
> +	1723  WL-167G v2 802.11g Adapter [Ralink RT2571W]
> +	1724  RT2573
> +	1726  Laptop OLED Display
> +	172a  802.11n Network Adapter
> +	172b  802.11n Network Adapter
> +	1731  802.11n Network Adapter
> +	1732  802.11n Network Adapter
> +	1734  AF-200
> +	173c  BT-183 Bluetooth 2.0
> +	173f  My Cinema U3100 Mini
> +	1742  802.11n Network Adapter
> +	1743  Xonar U1 Audio Station
> +	1751  BT-253 Bluetooth Adapter
> +	175b  Laptop OLED Display
> +	1760  802.11n Network Adapter
> +	1761  USB-N11 802.11n Network Adapter [Ralink RT2870]
> +	1774  Gobi Wireless Modem (QDL mode)
> +	1776  Gobi Wireless Modem
> +	1779  My Cinema U3100 Mini Plus [AF9035A]
> +	1784  USB-N13 802.11n Network Adapter (rev. A1) [Ralink RT3072]
> +	1786  USB-N10 802.11n Network Adapter [Realtek RTL8188SU]
> +	1788  BT-270 Bluetooth Adapter
> +	1791  WL-167G v3 802.11n Adapter [Realtek RTL8188SU]
> +	179c  Bluetooth Adapter
> +	179d  USB-N53 802.11abgn Network Adapter [Ralink RT3572]
> +	179e  Eee Note EA800 (network mode)
> +	179f  Eee Note EA800 (tablet mode)
> +	17a0  Xonar U3 sound card
> +	17a1  Eee Note EA800 (mass storage mode)
> +	17ab  USB-N13 802.11n Network Adapter (rev. B1) [Realtek RTL8192CU]
> +	17ba  N10 Nano 802.11n Network Adapter [Realtek RTL8192CU]
> +	17c2  ROG Spitfire
> +	17c7  WL-330NUL
> +	17c9  USB-AC53 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526]
> +	17cb  Broadcom BCM20702A0 Bluetooth
> +	17d1  AC51 802.11a/b/g/n/ac Wireless Adapter [Mediatek MT7610U]
> +	17d2  USB-AC56 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU]
> +	17d3  USB-N10 v2 802.11b/g/n Wireless Adapter [MediaTek MT7601U]
> +	17db  USB-AC50 802.11a/b/g/n/ac (1x1) Wireless Adapter [MediaTek MT7610U]
> +	17e8  USB-N14 802.11b/g/n (2x2) Wireless Adapter [Ralink RT5372]
> +	17eb  USB-AC55 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7612U]
> +	17f5  Xonar U5 sound card
> +	180a  Broadcom BCM20702 Single-Chip Bluetooth 4.0 + LE
> +	1817  USB-AC68 802.11a/b/g/n/ac (4x4) Wireless Adapter [Realtek RTL8814AU]
> +	1825  Qualcomm Bluetooth 4.1
> +	18f0  Realtek 8188EUS [USB-N10 Nano]
> +	4c80  Transformer Pad TF300TG
> +	4c90  Transformer Pad Infinity TF700
> +	4c91  Transformer Pad Infinity TF700 (Debug mode)
> +	4ca0  Transformer Pad TF701T
> +	4ca1  Transformer Pad TF701T (Debug mode)
> +	4d00  Transformer Prime TF201
> +	4d01  Transformer Prime TF201 (debug mode)
> +	4daf  Transformer Pad Infinity TF700 (Fastboot)
> +	5410  MeMO Pad HD 7 (MTP mode)
> +	5412  MeMO Pad HD 7 (PTP mode)
> +	550f  Fonepad 7
> +	6101  Cable Modem
> +	620a  Remote NDIS Device
> +	7772  Zenfone GO (ZB500KL) (MTP mode)
> +	7773  Zenfone GO (ZB500KL) (Debug, MTP mode)
> +	7774  Zenfone GO (ZB500KL) (RNDIS mode)
> +	7775  Zenfone GO (ZB500KL) (Debug, RNDIS mode)
> +	7776  Zenfone GO (ZB500KL) (PTP mode)
> +	7777  Zenfone GO (ZB500KL) (Debug, PTP mode)
> +	b700  Broadcom Bluetooth 2.1
> +0b0b  Datamax-O'Neil
> +	106e  Datamax E-4304
> +0b0c  Todos AB
> +	0009  Todos Argos Mini II Smart Card Reader
> +	001e  e.dentifier2 (ABN AMRO electronic banking card reader NL)
> +	002e  C200 smartcard controller (Nordea card reader)
> +	003f  Todos C400 smartcard controller (Handelsbanken card reader)
> +	0050  Argos Mini II Smart Card Reader (CCID)
> +0b0d  ProjectLab
> +	0000  CenturyCD
> +0b0e  GN Netcom
> +	0305  Jabra EVOLVE Link MS
> +	0311  Jabra EVOLVE 65
> +	0312  enc060:Buttons Volume up/down/mute + phone [Jabra]
> +	0343  Jabra UC VOICE 150a
> +	0348  Jabra UC VOICE 550a MS
> +	034c  Jabra UC Voice 750 MS
> +	034d  Jabra UC VOICE 750
> +	0410  Jabra SPEAK 410
> +	0420  Jabra SPEAK 510
> +	0422  Jabra SPEAK 510 USB
> +	0933  Jabra Freeway
> +	094d  GN Netcom / Jabra REVO Wireless
> +	1017  Jabra PRO 930
> +	1022  Jabra PRO 9450, Type 9400BS (DECT Headset)
> +	1041  Jabra PRO 9460
> +	1900  Jabra Biz 1900
> +	2007  GN 2000 Stereo Corded Headset
> +	2456  Jabra SPEAK 810
> +	245e  Jabra Link 370
> +	620c  Jabra BT620s
> +	9330  Jabra GN9330 Headset
> +	a346  Jabra Engage 75 Stereo
> +	a50a  Alienware Wireless Gaming Headset AW988
> +0b0f  AVID Technology
> +	0400  DNxID
> +0b10  Pcally
> +0b11  I Tech Solutions Co., Ltd
> +0b1e  Electronic Warfare Assoc., Inc. (EWA)
> +	8007  Blackhawk USB560-BP JTAG Emulator
> +0b1f  Insyde Software Corp.
> +0b20  TransDimension, Inc.
> +0b21  Yokogawa Electric Corp.
> +0b22  Japan System Development Co., Ltd
> +0b23  Pan-Asia Electronics Co., Ltd
> +0b24  Link Evolution Corp.
> +0b27  Ritek Corp.
> +0b28  Kenwood Corp.
> +0b2c  Village Center, Inc.
> +0b30  PNY Technologies, Inc.
> +	0006  SM Media-Shuttle Card Reader
> +0b33  Contour Design, Inc.
> +	0020  ShuttleXpress
> +	0030  ShuttlePro v2
> +	0401  RollerMouse Free 2
> +	0700  RollerMouse Pro
> +	08a0  Perfit Mouse
> +	1000  RollerMouse Red
> +	1010  Vidamic Technomouse IQ
> +0b37  Hitachi ULSI Systems Co., Ltd
> +0b38  Gear Head
> +	0003  Keyboard
> +	0010  107-Key Keyboard
> +0b39  Omnidirectional Control Technology, Inc.
> +	0001  Composite USB PS2 Converter
> +	0109  USB TO Ethernet
> +	0421  Serial
> +	0801  USB-Parallel Bridge
> +	0901  OCT To Fast Ethernet Converter
> +	0c03  LAN DOCK Serial Converter
> +0b3a  IPaxess
> +0b3b  Tekram Technology Co., Ltd
> +	0163  TL-WN320G 1.0 WLAN Adapter
> +	1601  Allnet 0193 802.11b Adapter
> +	1602  ZyXEL ZyAIR B200 802.11b Adapter
> +	1612  AIR.Mate 2@net 802.11b Adapter
> +	1613  802.11b Wireless LAN Adapter
> +	1620  Allnet Wireless Network Adapter [Envara WiND512]
> +	1630  QuickWLAN 802.11bg
> +	5630  802.11bg
> +	6630  ZD1211
> +0b3c  Olivetti Techcenter
> +	a010  Simple_Way Printer/Scanner/Copier
> +	c000  Olicard 100
> +	c700  Olicard 100 (Mass Storage mode)
> +0b3e  Kikusui Electronics Corp.
> +0b41  Hal Corp.
> +	0011  Crossam2+USB IR commander
> +0b43  Play.com, Inc.
> +	0003  PS2 Controller Converter
> +	0005  GameCube Adaptor
> +0b47  Sportbug.com, Inc.
> +0b48  TechnoTrend AG
> +	1003  Technotrend/Hauppauge USB-Nova
> +	1004  TT-PCline
> +	1005  Technotrend/Hauppauge USB-Nova
> +	1006  Technotrend/Hauppauge DEC3000-s
> +	1007  TT-micro plus Device
> +	1008  Technotrend/Hauppauge DEC2000-t
> +	1009  Technotrend/Hauppauge DEC2540-t
> +	3001  DVB-S receiver
> +	3002  DVB-C receiver
> +	3003  DVB-T receiver
> +	3004  TT TV-Stick
> +	3005  TT TV-Stick (8kB EEPROM)
> +	3006  TT-connect S-2400 DVB-S receiver
> +	3007  TT-connect S2-3600
> +	3008  TT-connect
> +	3009  TT-connect S-2400 DVB-S receiver (8kB EEPROM)
> +	300a  TT-connect S2-3650 CI
> +	300b  TT-connect C-3650 CI
> +	300c  TT-connect T-3650 CI
> +	300d  TT-connect CT-3650 CI
> +	300e  TT-connect C-2400
> +	3011  TT-connect S2-4600
> +	3012  TT-connect CT2-4650 CI
> +	3014  TT-TVStick CT2-4400
> +	3015  TT-connect CT2-4650 CI
> +	3017  TT-connect S2-4650 CI
> +0b49  ASCII Corp.
> +	064f  Trance Vibrator
> +0b4b  Pine Corp. Ltd.
> +	0100  D'music MP3 Player
> +0b4d  Graphtec America, Inc.
> +	110a  Graphtec CC200-20
> +	1123  Electronic Cutting Tool [Silhouette Portrait]
> +0b4e  Musical Electronics, Ltd
> +	6500  MP3 Player
> +	8028  MP3 Player
> +	8920  MP3 Player
> +0b50  Dumpries Co., Ltd
> +0b51  Comfort Keyboard Co.
> +	0020  Comfort Keyboard
> +0b52  Colorado MicroDisplay, Inc.
> +0b54  Sinbon Electronics Co., Ltd
> +0b56  TYI Systems, Ltd
> +0b57  Beijing HanwangTechnology Co., Ltd
> +0b59  Lake Communications, Ltd
> +0b5a  Corel Corp.
> +0b5f  Green Electronics Co., Ltd
> +0b60  Nsine, Ltd
> +0b61  NEC Viewtechnology, Ltd
> +0b62  Orange Micro, Inc.
> +	000b  Bluetooth Device
> +	0059  iBOT2 Webcam
> +0b63  ADLink Technology, Inc.
> +0b64  Wonderful Wire Cable Co., Ltd
> +0b65  Expert Magnetics Corp.
> +0b66  Cybiko Inc.
> +	0041  Xtreme
> +0b67  Fairbanks Scales
> +	555e  SCB-R9000
> +0b69  CacheVision
> +0b6a  Maxim Integrated Products
> +	a132  WUP-005 [Nintendo Wii U Pro Controller]
> +0b6f  Nagano Japan Radio Co., Ltd
> +0b70  PortalPlayer, Inc.
> +	00ba  iRiver H10 20GB
> +0b71  SHIN-EI Sangyo Co., Ltd
> +0b72  Embedded Wireless Technology Co., Ltd
> +0b73  Computone Corp.
> +0b75  Roland DG Corp.
> +0b79  Sunrise Telecom, Inc.
> +0b7a  Zeevo, Inc.
> +	07d0  Bluetooth Dongle
> +0b7b  Taiko Denki Co., Ltd
> +0b7c  ITRAN Communications, Ltd
> +0b7d  Astrodesign, Inc.
> +0b81  id3 Technologies
> +	0001  Biothentic II smartcard reader with fingerprint sensor
> +	0002  DFU-Enabled Devices (DFU)
> +	0012  BioPAD biometric module (DFU + CDC)
> +	0102  Certis V1 fingerprint reader
> +	0103  Certis V2 fingerprint reader
> +	0200  CL1356T / CL1356T5 / CL1356A smartcard readers (CCID)
> +	0201  CL1356T / CL1356T5 / CL1356A smartcard readers (DFU + CCID)
> +	0220  CL1356A FFPJP smartcard reader (CCID + HID)
> +	0221  CL1356A smartcard reader (DFU + CCID + HID)
> +0b84  Rextron Technology, Inc.
> +0b85  Elkat Electronics, Sdn., Bhd.
> +0b86  Exputer Systems, Inc.
> +	5100  XMC5100 Zippy Drive
> +	5110  XMC5110 Flash Drive
> +	5200  XMC5200 Zippy Drive
> +	5201  XMC5200 Zippy Drive
> +	5202  XMC5200 Zippy Drive
> +	5280  XMC5280 Storage Drive
> +	fff0  ISP5200 Debugger
> +0b87  Plus-One I & T, Inc.
> +0b88  Sigma Koki Co., Ltd, Technology Center
> +0b89  Advanced Digital Broadcast, Ltd
> +0b8c  SMART Technologies Inc.
> +	0001  Interactive Whiteboard Controller (SB6) (HID)
> +	00c3  Sympodium ID350
> +0b95  ASIX Electronics Corp.
> +	1720  10/100 Ethernet
> +	1780  AX88178
> +	1790  AX88179 Gigabit Ethernet
> +	6802  AX68002 KVM Switch SoC
> +	7720  AX88772
> +	772a  AX88772A Fast Ethernet
> +	772b  AX88772B
> +	7e2b  AX88772B Fast Ethernet Controller
> +0b96  Sewon Telecom
> +0b97  O2 Micro, Inc.
> +	7732  Smart Card Reader
> +	7761  Oz776 1.1 Hub
> +	7762  Oz776 SmartCard Reader
> +	7772  OZ776 CCID Smartcard Reader
> +0b98  Playmates Toys, Inc.
> +0b99  Audio International, Inc.
> +0b9b  Dipl.-Ing. Stefan Kunde
> +	4012  Reflex RC-controller Interface
> +0b9d  Softprotec Co.
> +0b9f  Chippo Technologies
> +0baf  U.S. Robotics
> +	00e5  USR6000
> +	00eb  USR1120 802.11b Adapter
> +	00ec  56K Faxmodem
> +	00f1  SureConnect ADSL ATM Adapter
> +	00f2  SureConnect ADSL Loader
> +	00f5  SureConnect ADSL ATM Adapter
> +	00f6  SureConnect ADSL Loader
> +	00f7  SureConnect ADSL ATM Adapter
> +	00f8  SureConnect ADSL Loader
> +	00f9  SureConnect ADSL ATM Adapter
> +	00fa  SureConnect ADSL Loader
> +	00fb  SureConnect ADSL Ethernet/USB Router
> +	0111  USR5420 802.11g Adapter [Broadcom 4320 USB]
> +	0118  U5 802.11g Adapter
> +	011b  Wireless MAXg Adapter [Broadcom 4320]
> +	0121  USR5423 802.11bg Wireless Adapter [ZyDAS ZD1211B]
> +	0303  USR5637 56K Faxmodem
> +	6112  FaxModem Model 5633
> +0bb0  Concord Camera Corp.
> +	0100  Sound Vision Stream
> +	5007  3340z/Rollei DC3100
> +0bb1  Infinilink Corp.
> +0bb2  Ambit Microsystems Corp.
> +	0302  U10H010 802.11b Wireless Adapter [Intersil PRISM 3]
> +	6098  USB Cable Modem
> +0bb3  Ofuji Technology
> +0bb4  HTC (High Tech Computer Corp.)
> +	0001  Android Phone via mass storage [Wiko Cink Peax 2]
> +	00ce  mmO2 XDA GSM/GPRS Pocket PC
> +	00cf  SPV C500 Smart Phone
> +	0306  Vive Hub Bluetooth 4.1 (Broadcom BCM920703)
> +	0a01  PocketPC Sync
> +	0a02  Himalaya GSM/GPRS Pocket PC
> +	0a03  PocketPC Sync
> +	0a04  PocketPC Sync
> +	0a05  PocketPC Sync
> +	0a06  PocketPC Sync
> +	0a07  Magician PocketPC SmartPhone / O2 XDA
> +	0a08  PocketPC Sync
> +	0a09  PocketPC Sync
> +	0a0a  PocketPC Sync
> +	0a0b  PocketPC Sync
> +	0a0c  PocketPC Sync
> +	0a0d  PocketPC Sync
> +	0a0e  PocketPC Sync
> +	0a0f  PocketPC Sync
> +	0a10  PocketPC Sync
> +	0a11  PocketPC Sync
> +	0a12  PocketPC Sync
> +	0a13  PocketPC Sync
> +	0a14  PocketPC Sync
> +	0a15  PocketPC Sync
> +	0a16  PocketPC Sync
> +	0a17  PocketPC Sync
> +	0a18  PocketPC Sync
> +	0a19  PocketPC Sync
> +	0a1a  PocketPC Sync
> +	0a1b  PocketPC Sync
> +	0a1c  PocketPC Sync
> +	0a1d  PocketPC Sync
> +	0a1e  PocketPC Sync
> +	0a1f  PocketPC Sync
> +	0a20  PocketPC Sync
> +	0a21  PocketPC Sync
> +	0a22  PocketPC Sync
> +	0a23  PocketPC Sync
> +	0a24  PocketPC Sync
> +	0a25  PocketPC Sync
> +	0a26  PocketPC Sync
> +	0a27  PocketPC Sync
> +	0a28  PocketPC Sync
> +	0a29  PocketPC Sync
> +	0a2a  PocketPC Sync
> +	0a2b  PocketPC Sync
> +	0a2c  PocketPC Sync
> +	0a2d  PocketPC Sync
> +	0a2e  PocketPC Sync
> +	0a2f  PocketPC Sync
> +	0a30  PocketPC Sync
> +	0a31  PocketPC Sync
> +	0a32  PocketPC Sync
> +	0a33  PocketPC Sync
> +	0a34  PocketPC Sync
> +	0a35  PocketPC Sync
> +	0a36  PocketPC Sync
> +	0a37  PocketPC Sync
> +	0a38  PocketPC Sync
> +	0a39  PocketPC Sync
> +	0a3a  PocketPC Sync
> +	0a3b  PocketPC Sync
> +	0a3c  PocketPC Sync
> +	0a3d  PocketPC Sync
> +	0a3e  PocketPC Sync
> +	0a3f  PocketPC Sync
> +	0a40  PocketPC Sync
> +	0a41  PocketPC Sync
> +	0a42  PocketPC Sync
> +	0a43  PocketPC Sync
> +	0a44  PocketPC Sync
> +	0a45  PocketPC Sync
> +	0a46  PocketPC Sync
> +	0a47  PocketPC Sync
> +	0a48  PocketPC Sync
> +	0a49  PocketPC Sync
> +	0a4a  PocketPC Sync
> +	0a4b  PocketPC Sync
> +	0a4c  PocketPC Sync
> +	0a4d  PocketPC Sync
> +	0a4e  PocketPC Sync
> +	0a4f  PocketPC Sync
> +	0a50  SmartPhone (MTP)
> +	0a51  SPV C400 / T-Mobile SDA GSM/GPRS Pocket PC
> +	0a52  SmartPhone Sync
> +	0a53  SmartPhone Sync
> +	0a54  SmartPhone Sync
> +	0a55  SmartPhone Sync
> +	0a56  SmartPhone Sync
> +	0a57  SmartPhone Sync
> +	0a58  SmartPhone Sync
> +	0a59  SmartPhone Sync
> +	0a5a  SmartPhone Sync
> +	0a5b  SmartPhone Sync
> +	0a5c  SmartPhone Sync
> +	0a5d  SmartPhone Sync
> +	0a5e  SmartPhone Sync
> +	0a5f  SmartPhone Sync
> +	0a60  SmartPhone Sync
> +	0a61  SmartPhone Sync
> +	0a62  SmartPhone Sync
> +	0a63  SmartPhone Sync
> +	0a64  SmartPhone Sync
> +	0a65  SmartPhone Sync
> +	0a66  SmartPhone Sync
> +	0a67  SmartPhone Sync
> +	0a68  SmartPhone Sync
> +	0a69  SmartPhone Sync
> +	0a6a  SmartPhone Sync
> +	0a6b  SmartPhone Sync
> +	0a6c  SmartPhone Sync
> +	0a6d  SmartPhone Sync
> +	0a6e  SmartPhone Sync
> +	0a6f  SmartPhone Sync
> +	0a70  SmartPhone Sync
> +	0a71  SmartPhone Sync
> +	0a72  SmartPhone Sync
> +	0a73  SmartPhone Sync
> +	0a74  SmartPhone Sync
> +	0a75  SmartPhone Sync
> +	0a76  SmartPhone Sync
> +	0a77  SmartPhone Sync
> +	0a78  SmartPhone Sync
> +	0a79  SmartPhone Sync
> +	0a7a  SmartPhone Sync
> +	0a7b  SmartPhone Sync
> +	0a7c  SmartPhone Sync
> +	0a7d  SmartPhone Sync
> +	0a7e  SmartPhone Sync
> +	0a7f  SmartPhone Sync
> +	0a80  SmartPhone Sync
> +	0a81  SmartPhone Sync
> +	0a82  SmartPhone Sync
> +	0a83  SmartPhone Sync
> +	0a84  SmartPhone Sync
> +	0a85  SmartPhone Sync
> +	0a86  SmartPhone Sync
> +	0a87  SmartPhone Sync
> +	0a88  SmartPhone Sync
> +	0a89  SmartPhone Sync
> +	0a8a  SmartPhone Sync
> +	0a8b  SmartPhone Sync
> +	0a8c  SmartPhone Sync
> +	0a8d  SmartPhone Sync
> +	0a8e  SmartPhone Sync
> +	0a8f  SmartPhone Sync
> +	0a90  SmartPhone Sync
> +	0a91  SmartPhone Sync
> +	0a92  SmartPhone Sync
> +	0a93  SmartPhone Sync
> +	0a94  SmartPhone Sync
> +	0a95  SmartPhone Sync
> +	0a96  SmartPhone Sync
> +	0a97  SmartPhone Sync
> +	0a98  SmartPhone Sync
> +	0a99  SmartPhone Sync
> +	0a9a  SmartPhone Sync
> +	0a9b  SmartPhone Sync
> +	0a9c  SmartPhone Sync
> +	0a9d  SmartPhone Sync
> +	0a9e  SmartPhone Sync
> +	0a9f  SmartPhone Sync
> +	0b03  Ozone Mobile Broadband
> +	0b04  Hermes / TyTN / T-Mobile MDA Vario II / O2 Xda Trion
> +	0b05  P3600
> +	0b06  Athena / Advantage x7500 / Dopod U1000 / T-Mobile AMEO
> +	0b0c  Elf / Touch / P3450 / T-Mobile MDA Touch / O2 Xda Nova / Dopod S1
> +	0b1f  Sony Ericsson XPERIA X1
> +	0b2f  Rhodium
> +	0b51  Qtek 8310 mobile phone [Tornado Noble]
> +	0bce  Vario MDA
> +	0c01  Dream / ADP1 / G1 / Magic / Tattoo / FP1
> +	0c02  Dream / ADP1 / G1 / Magic / Tattoo (Debug)
> +	0c03  Android Phone [Fairphone First Edition (FP1)]
> +	0c13  Diamond
> +	0c1f  Sony Ericsson XPERIA X1
> +	0c5f  Snap
> +	0c86  Sensation
> +	0c87  Desire (debug)
> +	0c8d  EVO 4G (debug)
> +	0c91  Vision
> +	0c94  Vision
> +	0c97  Legend
> +	0c99  Desire (debug)
> +	0c9e  Incredible
> +	0ca2  Desire HD (debug mode)
> +	0ca5  Android Phone [Evo Shift 4G]
> +	0cab  Desire / Desire HD / Hero / Thunderbolt (HTC Sync Mode)
> +	0cae  T-Mobile MyTouch 4G Slide [Doubleshot]
> +	0de5  One (M7)
> +	0dea  M7_UL [HTC One]
> +	0f25  One M8
> +	0f63  Desire 610 Via MTP
> +	0f64  Desire 601
> +	0fb4  Remote NDIS based Device
> +	0ff0  One Mini (M4)
> +	0ff8  Desire HD (Tethering Mode)
> +	0ff9  Desire / Desire HD / Hero / Thunderbolt (Charge Mode)
> +	0ffe  Desire HD (modem mode)
> +	0fff  Android Fastboot Bootloader
> +	2008  Android Phone via MTP [MT65xx]
> +	200b  Android Phone via PTP [Wiko Cink Peax 2]
> +	2134  Vive Hub (SMSC USB2137B)
> +	2744  Vive Hub (HTC CB USB2)
> +	2c87  Vive
> +0bb5  Murata Manufacturing Co., Ltd
> +0bb6  Network Alchemy
> +0bb7  Joytech Computer Co., Ltd
> +0bb8  Hitachi Semiconductor and Devices Sales Co., Ltd
> +0bb9  Eiger M&C Co., Ltd
> +0bba  ZAccess Systems
> +0bbb  General Meters Corp.
> +0bbc  Assistive Technology, Inc.
> +0bbd  System Connection, Inc.
> +0bc0  Knilink Technology, Inc.
> +0bc1  Fuw Yng Electronics Co., Ltd
> +0bc2  Seagate RSS LLC
> +	0502  ST3300601CB-RK 300 GB External Hard Drive
> +	0503  ST3250824A [Barracuda 7200.9]
> +	2000  Storage Adapter V3 (TPP)
> +	2100  FreeAgent Go
> +	2200  FreeAgent Go FW
> +	2300  Expansion Portable
> +	231a  Expansion Portable
> +	231c  Expansion Portable
> +	2320  USB 3.0 bridge [Portable Expansion Drive]
> +	2321  Expansion Portable
> +	2322  SRD0NF1 Expansion Portable (STEA)
> +	2340  FreeAgent External Hard Drive
> +	3000  FreeAgent Desktop
> +	3008  FreeAgent Desk 1TB
> +	3101  FreeAgent XTreme 640GB
> +	3312  SRD00F2 Expansion Desktop Drive (STBV)
> +	331a  Desktop HDD 5TB (ST5000DM000)
> +	3320  SRD00F2 [Expansion Desktop Drive]
> +	3322  SRD0NF2 [Expansion Desktop Drive]
> +	3323  Seagate RSS LLC
> +	3332  Expansion
> +	3343  desktop drive stgy8000400
> +	5020  FreeAgent GoFlex
> +	5021  FreeAgent GoFlex USB 2.0
> +	5030  FreeAgent GoFlex Upgrade Cable STAE104
> +	5031  FreeAgent GoFlex USB 3.0
> +	5032  SATA cable
> +	5070  FreeAgent GoFlex Desk
> +	5071  FreeAgent GoFlex Desk
> +	50a1  FreeAgent GoFlex Desk
> +	50a5  FreeAgent GoFlex Desk USB 3.0
> +	5121  FreeAgent GoFlex
> +	5161  FreeAgent GoFlex dock
> +	6126  Maxtor D3 Station 5TB
> +	61b5  Maxtor HX-M201TCB [M3 Portable 2TB]
> +	61b6  Maxtor HX-M101TCB/GM [M3 Portable 1TB]
> +	61b7  Maxtor M3 Portable
> +	a003  Backup Plus
> +	a0a1  Backup Plus Desktop
> +	a0a4  Backup Plus Desktop Drive
> +	aa14  STJ4000400 [Seagate Basic Portable Drive 4TB]
> +	ab00  Slim Portable Drive
> +	ab1e  Backup Plus Portable Drive
> +	ab20  Backup Plus Portable Drive
> +	ab21  Backup Plus Slim
> +	ab24  Backup Plus Portable Drive
> +	ab26  Backup Plus Slim Portable Drive 1 TB
> +	ab28  Seagate Backup Plus Portable 5TB SRD00F1
> +	ab2d  SRD00F1 [Backup Plus Ultra Slim]
> +	ab31  Backup Plus Desktop Drive (5TB)
> +	ab34  Backup Plus
> +	ab38  Backup Plus Hub (Mass Storage)
> +	ab44  Backup Plus Hub
> +	ac20  Backup Plus Slim 2TB
> +0bc3  IPWireless, Inc.
> +	0001  UMTS-TDD (TD-CDMA) modem
> +0bc4  Microcube Corp.
> +0bc5  JCN Co., Ltd
> +0bc6  ExWAY, Inc.
> +0bc7  X10 Wireless Technology, Inc.
> +	0001  ActiveHome (ACPI-compliant)
> +	0002  Firecracker Interface (ACPI-compliant)
> +	0003  VGA Video Sender (ACPI-compliant)
> +	0004  X10 Receiver
> +	0005  Wireless Transceiver (ACPI-compliant)
> +	0006  Wireless Transceiver (ACPI-compliant)
> +	0007  Wireless Transceiver (ACPI-compliant)
> +	0008  Wireless Transceiver (ACPI-compliant)
> +	0009  Wireless Transceiver (ACPI-compliant)
> +	000a  Wireless Transceiver (ACPI-compliant)
> +	000b  Transceiver (ACPI-compliant)
> +	000c  Transceiver (ACPI-compliant)
> +	000d  Transceiver (ACPI-compliant)
> +	000e  Transceiver (ACPI-compliant)
> +	000f  Transceiver (ACPI-compliant)
> +0bc8  Telmax Communications
> +0bc9  ECI Telecom, Ltd
> +0bca  Startek Engineering, Inc.
> +0bcb  Perfect Technic Enterprise Co., Ltd
> +0bd7  Andrew Pargeter & Associates
> +	a021  Amptek DP4 multichannel signal analyzer
> +0bda  Realtek Semiconductor Corp.
> +	0103  USB 2.0 Card Reader
> +	0104  Mass Storage Device
> +	0106  Mass Storage Device
> +	0107  Mass Storage Device
> +	0108  Mass Storage Device
> +	0109  microSDXC Card Reader [Hama 00091047]
> +	0111  RTS5111 Card Reader Controller
> +	0113  Mass Storage Device
> +	0115  Mass Storage Device (Multicard Reader)
> +	0116  RTS5116 Card Reader Controller
> +	0117  Mass Storage Device
> +	0118  Mass Storage Device
> +	0119  Storage Device (SD card reader)
> +	0129  RTS5129 Card Reader Controller
> +	0138  RTS5138 Card Reader Controller
> +	0139  RTS5139 Card Reader Controller
> +	0151  Mass Storage Device (Multicard Reader)
> +	0152  Mass Storage Device
> +	0153  3-in-1 (SD/SDHC/SDXC) Card Reader
> +	0156  Mass Storage Device
> +	0157  Mass Storage Device
> +	0158  USB 2.0 multicard reader
> +	0159  RTS5159 Card Reader Controller
> +	0161  Mass Storage Device
> +	0168  Mass Storage Device
> +	0169  Mass Storage Device
> +	0171  Mass Storage Device
> +	0176  Mass Storage Device
> +	0178  Mass Storage Device
> +	0179  RTL8188ETV Wireless LAN 802.11n Network Adapter
> +	0184  RTS5182 Card Reader
> +	0186  Card Reader
> +	0301  multicard reader
> +	0307  Card Reader
> +	0316  Card Reader
> +	0326  Card reader
> +	0411  Hub
> +	0811  Realtek 8812AU/8821AU 802.11ac WLAN Adapter [USB Wireless Dual-Band Adapter 2.4/5Ghz]
> +	0821  RTL8821A Bluetooth
> +	1724  RTL8723AU 802.11n WLAN Adapter
> +	1a2b  RTL8188GU 802.11n WLAN Adapter (Driver CDROM Mode)
> +	2831  RTL2831U DVB-T
> +	2832  RTL2832U DVB-T
> +	2838  RTL2838 DVB-T
> +	5401  RTL 8153 USB 3.0 hub with gigabit ethernet
> +	5411  RTS5411 Hub
> +	568c  Integrated Webcam HD
> +	570c  Asus laptop camera
> +	5730  HP 2.0MP High Definition Webcam
> +	5751  Integrated Webcam
> +	5775  HP "Truevision HD" laptop camera
> +	5776  HP Truevision HD integrated webcam
> +	57b3  Acer 640 × 480 laptop camera
> +	57cc  HD Webcam - Realtek Semiconductor
> +	57cf  HD WebCam
> +	57da  Built-In Video Camera
> +	58c2  Integrated Webcam HD
> +	58c8  Integrated Webcam HD
> +	8150  RTL8150 Fast Ethernet Adapter
> +	8151  RTL8151 Adapteon Business Mobile Networks BV
> +	8152  RTL8152 Fast Ethernet Adapter
> +	8153  RTL8153 Gigabit Ethernet Adapter
> +	8171  RTL8188SU 802.11n WLAN Adapter
> +	8172  RTL8191SU 802.11n WLAN Adapter
> +	8174  RTL8192SU 802.11n WLAN Adapter
> +	8176  RTL8188CUS 802.11n WLAN Adapter
> +	8178  RTL8192CU 802.11n WLAN Adapter
> +	8179  RTL8188EUS 802.11n Wireless Network Adapter
> +	817f  RTL8188RU 802.11n WLAN Adapter
> +	8187  RTL8187 Wireless Adapter
> +	8189  RTL8187B Wireless 802.11g 54Mbps Network Adapter
> +	818b  RTL8192EU 802.11b/g/n WLAN Adapter
> +	8192  RTL8191SU 802.11n Wireless Adapter
> +	8193  RTL8192DU 802.11an WLAN Adapter
> +	8197  RTL8187B Wireless Adapter
> +	8198  RTL8187B Wireless Adapter
> +	8199  RTL8187SU 802.11g WLAN Adapter
> +	8723  RTL8723A Bluetooth
> +	8812  RTL8812AU 802.11a/b/g/n/ac 2T2R DB WLAN Adapter
> +	8813  RTL8814AU 802.11a/b/g/n/ac Wireless Adapter
> +	881a  RTL8812AU-VS 802.11a/b/g/n/ac 2T2R DB WLAN Adapter
> +	8821  RTL8821A Bluetooth
> +	9210  RTL9210 M.2 NVME Adapter
> +	a811  RTL8811AU 802.11a/b/g/n/ac WLAN Adapter
> +	b009  Realtek Bluetooth 4.2 Adapter
> +	b00a  Realtek Bluetooth 4.2 Adapter
> +	b00b  Realtek Bluetooth 4.2 Adapter
> +	b023  RTL8822BE Bluetooth 4.2 Adapter
> +	b711  RTL8188GU 802.11n WLAN Adapter (After Modeswitch)
> +	b720  RTL8723BU 802.11b/g/n WLAN Adapter
> +	b723  RTL8723B Bluetooth
> +	b728  RTL8723B Bluetooth
> +	b72a  RTL8723B Bluetooth
> +	b812  RTL88x2bu [AC1200 Techkey]
> +	f179  RTL8188FTV 802.11b/g/n 1T1R 2.4G WLAN Adapter
> +0bdb  Ericsson Business Mobile Networks BV
> +	1000  BV Bluetooth Device
> +	1002  Bluetooth Device 1.2
> +	1049  C3607w Mobile Broadband Module
> +	1900  F3507g Mobile Broadband Module
> +	1902  F3507g v2 Mobile Broadband Module
> +	1904  F3607gw Mobile Broadband Module
> +	1905  F3607gw v2 Mobile Broadband Module
> +	1906  F3607gw v3 Mobile Broadband Module
> +	1909  F3307 v2 Mobile Broadband Module
> +	190a  F3307 Mobile Broadband Module
> +	190b  C3607w v2 Mobile Broadband Module
> +	1926  H5321 gw Mobile Broadband Module
> +0bdc  Y Media Corp.
> +0bdd  Orange PCS
> +0be2  Kanda Tsushin Kogyo Co., Ltd
> +0be3  TOYO Corp.
> +0be4  Elka International, Ltd
> +0be5  DOME imaging systems, Inc.
> +0be6  Dong Guan Humen Wonderful Wire Cable Factory
> +0bed  MEI
> +	1100  CASHFLOW SC
> +	1101  Series 2000 Combo Acceptor
> +0bee  LTK Industries, Ltd
> +0bef  Way2Call Communications
> +0bf0  Pace Micro Technology PLC
> +	c010  EHD100SD
> +0bf1  Intracom S.A.
> +	0001  netMod Driver Ver 2.4.17 (CAPI)
> +	0002  netMod Driver Ver 2.4 (CAPI)
> +	0003  netMod Driver Ver 2.4 (CAPI)
> +0bf2  Konexx
> +0bf6  Addonics Technologies, Inc.
> +	0103  Storage Device
> +	1234  Storage Device
> +	a000  Cable 205 (TPP)
> +	a001  Cable 205
> +	a002  IDE Bridge
> +0bf7  Sunny Giken, Inc.
> +0bf8  Fujitsu Siemens Computers
> +	1001  Fujitsu Pocket Loox 600 PDA
> +	1006  SmartCard Reader 2A
> +	1007  Connect2Air E-5400 802.11g Wireless Adapter
> +	1009  Connect2Air E-5400 D1700 802.11g Wireless Adapter [Intersil ISL3887]
> +	100c  Keyboard FSC KBPC PX
> +	100f  miniCard D2301 802.11bg Wireless Module [SiS 163U]
> +	1017  Keyboard KB SCR
> +	101f  Fujitsu Full HD Pro Webcam
> +0bfb  Grass Valley Group
> +	0200  TURBO iDDR Front Panel
> +0bfd  Kvaser AB
> +	0004  USBcan II
> +	000b  Leaf Light HS
> +	000e  Leaf SemiPro HS
> +0c00  FireFly Mouse Mat
> +	1607  Apex M500
> +0c04  MOTO Development Group, Inc.
> +0c05  Appian Graphics
> +0c06  Hasbro Games, Inc.
> +0c07  Infinite Data Storage, Ltd
> +0c08  Agate
> +	0378  Q 16MB Storage Device
> +0c09  Comjet Information System
> +	a5a5  Litto Version USB2.0
> +0c0a  Highpoint Technologies, Inc.
> +	6124  RocketStor 6124V
> +0c0b  Dura Micro, Inc. (Acomdata)
> +	27cb  6-in-1 Flash Reader and Writer
> +	27d7  Multi Memory reader/writer MD-005
> +	27da  Multi Memory reader/writer MD-005
> +	27dc  Multi Memory reader/writer MD-005
> +	27e7  3,5'' HDD case MD-231
> +	27ee  3,5'' HDD case MD-231
> +	2814  3,5'' HDD case MD-231
> +	2815  3,5'' HDD case MD-231
> +	281d  3,5'' HDD case MD-231
> +	5fab  Storage Adaptor
> +	a109  CF/SM Reader and Writer
> +	a10c  SD/MS Reader and Writer
> +	b001  USB 2.0 Mass Storage IDE adapter
> +	b004  MMC/SD Reader and Writer
> +0c12  Zeroplus
> +	0005  PSX Vibration Feedback Converter / Intec Wireless Controller for Xbox
> +	0030  PSX Vibration Feedback Converter
> +	700e  Logic Analyzer (LAP-C-16032)
> +	8801  Nyko Xbox Controller
> +	8802  Xbox Controller
> +	8809  Red Octane Ignition Xbox DDR Pad
> +	880a  Pelican Eclipse PL-2023
> +	8810  Xbox Controller
> +	9902  VibraX
> +0c15  Iris Graphics
> +0c16  Gyration, Inc.
> +	0002  RF Technology Receiver
> +	0003  RF Technology Receiver
> +	0008  RF Technology Receiver
> +	0080  eHome Infrared Receiver
> +	0081  eHome Infrared Receiver
> +0c17  Cyberboard A/S
> +0c18  SynerTek Korea, Inc.
> +0c19  cyberPIXIE, Inc.
> +0c1a  Silicon Motion, Inc.
> +0c1b  MIPS Technologies
> +0c1c  Hang Zhou Silan Electronics Co., Ltd
> +0c1f  Magicard
> +	1800  Tango 2E
> +0c22  Tally Printer Corp.
> +0c23  Lernout + Hauspie
> +0c24  Taiyo Yuden
> +	0001  Bluetooth Adaptor
> +	0002  Bluetooth Device2
> +	0005  Bluetooth Device(BC04-External)
> +	000b  Bluetooth Device(BC04-External)
> +	000c  Bluetooth Adaptor
> +	000e  Bluetooth Device(BC04-External)
> +	000f  Bluetooth Device (V2.0+EDR)
> +	0010  Bluetooth Device(BC04-External)
> +	0012  Bluetooth Device(BC04-External)
> +	0018  Bluetooth Device(BC04-External)
> +	0019  Bluetooth Device
> +	0021  Bluetooth Device (V2.1+EDR)
> +	0c24  Bluetooth Device(SAMPLE)
> +	ffff  Bluetooth module with BlueCore in DFU mode
> +0c25  Sampo Corp.
> +	0310  Scream Cam
> +0c26  Prolific Technology Inc.
> +	0018  USB-Serial Controller [Icom Inc. OPC-478UC]
> +	002b  Icom Inc. IC-R30
> +0c27  RFIDeas, Inc
> +	232a  pcProx Plus RFID Reader (CDC serial)
> +	3bfa  pcProx Card Reader
> +0c2e  Metrologic Instruments
> +	0007  Metrologic MS7120 Barcode Scanner (IBM SurePOS mode)
> +	0200  MS7120 Barcode Scanner
> +	0204  Metrologic MS7120 Barcode Scanner (keyboard mode)
> +	0206  Metrologic MS4980 Barcode Scanner
> +	0700  Metrologic MS7120 Barcode Scanner (uni-directional serial mode)
> +	0720  Metrologic MS7120 Barcode Scanner (bi-directional serial mode)
> +	0a64  [Stratos 2700]
> +	0b61  Vuquest 3310g
> +	0b6a  Vuquest 3310 Area-Imaging Scanner
> +	0b81  Barcode scanner Voyager 1400g Series
> +0c30  Mutoh Industries Ltd
> +	6010  Kona 1400 Cutting Plotter
> +0c35  Eagletron, Inc.
> +0c36  E Ink Corp.
> +0c37  e.Digital
> +0c38  Der An Electric Wire & Cable Co., Ltd
> +0c39  IFR
> +0c3a  Furui Precise Component (Kunshan) Co., Ltd
> +0c3b  Komatsu, Ltd
> +0c3c  Radius Co., Ltd
> +0c3d  Innocom, Inc.
> +0c3e  Nextcell, Inc.
> +0c40  ELMCU
> +	8000  2.4GHz receiver
> +0c44  Motorola iDEN
> +	0021  iDEN P2k0 Device
> +	0022  iDEN P2k1 Device
> +	03a2  iDEN Smartphone
> +	41d9  i1 phone
> +0c45  Microdia
> +	0011  EBUDDY
> +	0520  MaxTrack Wireless Mouse
> +	1018  Compact Flash storage memory card reader
> +	1020  Mass Storage Reader
> +	1028  Mass Storage Reader
> +	1030  Mass Storage Reader
> +	1031  Sonix Mass Storage Device
> +	1032  Mass Storage Reader
> +	1033  Sonix Mass Storage Device
> +	1034  Mass Storage Reader
> +	1035  Mass Storage Reader
> +	1036  Mass Storage Reader
> +	1037  Sonix Mass Storage Device
> +	1050  CF Card Reader
> +	1058  HDD Reader
> +	1060  iFlash SM-Direct Card Reader
> +	1061  Mass Storage Reader
> +	1062  Mass Storage Reader
> +	1063  Sonix Mass Storage Device
> +	1064  Mass Storage Reader
> +	1065  Mass Storage Reader
> +	1066  Mass Storage Reader
> +	1067  Mass Storage Reader
> +	1158  A56AK
> +	184c  VoIP Phone
> +	1a90  2M pixel Microscope Camera (with capture button) [Andonstar V160]
> +	5004  Redragon Mitra RGB Keyboard
> +	5101  2.4G Wireless Device [Rii MX3]
> +	6001  Genius VideoCAM NB
> +	6005  Sweex Mini Webcam
> +	6007  VideoCAM Eye
> +	6009  VideoCAM ExpressII
> +	600d  TwinkleCam USB camera
> +	6011  PC Camera (SN9C102)
> +	6019  PC Camera (SN9C102)
> +	6024  VideoCAM ExpressII
> +	6025  VideoCAM ExpressII
> +	6028  Typhoon Easycam USB 330K (older)
> +	6029  Triplex i-mini PC Camera
> +	602a  Meade ETX-105EC Camera
> +	602b  VideoCAM NB 300
> +	602c  Clas Ohlson TWC-30XOP Webcam
> +	602d  VideoCAM ExpressII
> +	602e  VideoCAM Messenger
> +	6030  VideoCAM ExpressII
> +	603f  VideoCAM ExpressII
> +	6040  CCD PC Camera (PC390A)
> +	606a  CCD PC Camera (PC390A)
> +	607a  CCD PC Camera (PC390A)
> +	607b  Win2 PC Camera
> +	607c  CCD PC Camera (PC390A)
> +	607e  CCD PC Camera (PC390A)
> +	6080  Audio (Microphone)
> +	6082  VideoCAM Look
> +	6083  VideoCAM Look
> +	608c  VideoCAM Look
> +	608e  VideoCAM Look
> +	608f  PC Camera (SN9C103 + OV7630)
> +	60a8  VideoCAM Look
> +	60aa  VideoCAM Look
> +	60ab  PC Camera
> +	60af  VideoCAM Look
> +	60b0  Genius VideoCam Look
> +	60c0  PC Camera with Mic (SN9C105)
> +	60c8  Win2 PC Camera
> +	60cc  PC Camera with Mic (SN9C105)
> +	60ec  PC Camera with Mic (SN9C105)
> +	60ef  Win2 PC Camera
> +	60fa  PC Camera with Mic (SN9C105)
> +	60fb  Composite Device
> +	60fc  PC Camera with Mic (SN9C105)
> +	60fe  Audio (Microphone)
> +	6108  Win2 PC Camera
> +	6122  PC Camera (SN9C110)
> +	6123  PC Camera (SN9C110)
> +	6128  PC Camera (SN9C325 + OM6802)
> +	612a  PC Camera (SN9C325)
> +	612c  PC Camera (SN9C110)
> +	612e  PC Camera (SN9C110)
> +	612f  PC Camera (SN9C110)
> +	6130  PC Camera (SN9C120)
> +	6138  Win2 PC Camera
> +	613a  PC Camera (SN9C120)
> +	613b  Win2 PC Camera
> +	613c  PC Camera (SN9C120)
> +	613e  PC Camera (SN9C120)
> +	6143  PC Camera (SN9C120 + SP80708)
> +	6240  PC Camera (SN9C201 + MI1300)
> +	6242  PC Camera (SN9C201 + MI1310)
> +	6243  PC Camera (SN9C201 + S5K4AAFX)
> +	6248  PC Camera (SN9C201 + OV9655)
> +	624b  PC Camera (SN9C201 + CX1332)
> +	624c  PC Camera (SN9C201 + MI1320)
> +	624e  PC Camera (SN9C201 + SOI968)
> +	624f  PC Camera (SN9C201 + OV9650)
> +	6251  PC Camera (SN9C201 + OV9650)
> +	6253  PC Camera (SN9C201 + OV9650)
> +	6260  PC Camera (SN9C201 + OV7670ISP)
> +	6262  PC Camera (SN9C201 + OM6802)
> +	6270  PC Camera (SN9C201 + MI0360/MT9V011 or MI0360SOC/MT9V111) U-CAM PC Camera NE878, Whitcom WHC017, ...
> +	627a  PC Camera (SN9C201 + S5K53BEB)
> +	627b  PC Camera (SN9C201 + OV7660)
> +	627c  PC Camera (SN9C201 + HV7131R)
> +	627f  PC Camera (SN9C201 + OV965x + EEPROM)
> +	6280  PC Camera with Microphone (SN9C202 + MI1300)
> +	6282  PC Camera with Microphone (SN9C202 + MI1310)
> +	6283  PC Camera with Microphone (SN9C202 + S5K4AAFX)
> +	6288  PC Camera with Microphone (SN9C202 + OV9655)
> +	628a  PC Camera with Microphone (SN9C202 + ICM107)
> +	628b  PC Camera with Microphone (SN9C202 + CX1332)
> +	628c  PC Camera with Microphone (SN9C202 + MI1320)
> +	628e  PC Camera with Microphone (SN9C202 + SOI968)
> +	628f  PC Camera with Microphone (SN9C202 + OV9650)
> +	62a0  PC Camera with Microphone (SN9C202 + OV7670ISP)
> +	62a2  PC Camera with Microphone (SN9C202 + OM6802)
> +	62b0  PC Camera with Microphone (SN9C202 + MI0360/MT9V011 or MI0360SOC/MT9V111)
> +	62b3  PC Camera with Microphone (SN9C202 + OV9655)
> +	62ba  PC Camera with Microphone (SN9C202 + S5K53BEB)
> +	62bb  PC Camera with Microphone (SN9C202 + OV7660)
> +	62bc  PC Camera with Microphone (SN9C202 + HV7131R)
> +	62be  PC Camera with Microphone (SN9C202 + OV7663)
> +	62c0  Sonix USB 2.0 Camera
> +	62e0  MSI Starcam Racer
> +	6300  PC Microscope camera
> +	6310  Sonix USB 2.0 Camera
> +	6321  HP Integrated Webcam
> +	6340  Camera
> +	6341  Defender G-Lens 2577 HD720p Camera
> +	6366  Webcam Vitade AF
> +	63e0  Sonix Integrated Webcam
> +	63f1  Integrated Webcam
> +	63f8  Sonix Integrated Webcam
> +	6409  Webcam
> +	6413  Integrated Webcam
> +	6417  Integrated Webcam
> +	6419  Integrated Webcam
> +	641d  1.3 MPixel Integrated Webcam
> +	6433  Laptop Integrated Webcam HD (Composite Device)
> +	643f  Dell Integrated HD Webcam
> +	644d  1.3 MPixel Integrated Webcam
> +	6480  Sonix 1.3 MP Laptop Integrated Webcam
> +	648b  Integrated Webcam
> +	64ad  Dell Laptop Integrated Webcam HD
> +	64bd  Sony Visual Communication Camera
> +	64d0  Integrated Webcam
> +	64d2  Integrated Webcam
> +	651b  HP Webcam
> +	652f  Backlit Gaming Keyboard
> +	6705  Integrated HD Webcam
> +	670c  Integrated Webcam HD
> +	6710  Integrated Webcam
> +	6712  Integrated Webcam HD
> +	671d  Integrated_Webcam_HD
> +	7401  TEMPer Temperature Sensor
> +	7402  TEMPerHUM Temperature & Humidity Sensor
> +	7403  Foot Switch
> +	7404  Foot switch FS1-P
> +	8000  DC31VC
> +	8006  Dual Mode Camera (8006 VGA)
> +	800a  Vivitar Vivicam3350B
> +0c46  WaveRider Communications, Inc.
> +0c4a  ALGE-TIMING GmbH
> +	0889  Timy
> +	088a  Timy 2
> +0c4b  Reiner SCT Kartensysteme GmbH
> +	0100  cyberJack e-com/pinpad
> +	0300  cyberJack pinpad(a)
> +	0400  cyberJack e-com(a)
> +	0401  cyberJack pinpad(a2)
> +	0500  cyberJack RFID standard dual interface smartcard reader
> +	0501  cyberJack RFID comfort dual interface smartcard reader
> +	0502  cyberJack compact
> +	0504  cyberJack go / go plus
> +	0505  cyberJack wave
> +	9102  cyberJack RFID basis contactless smartcard reader
> +0c4c  Needham's Electronics
> +	0021  EMP-21 Universal Programmer
> +0c52  Sealevel Systems, Inc.
> +	2101  SeaLINK+232
> +	2102  SeaLINK+485
> +	2103  SeaLINK+232I
> +	2104  SeaLINK+485I
> +	2211  SeaPORT+2/232 (Port 1)
> +	2212  SeaPORT+2/485 (Port 1)
> +	2213  SeaPORT+2 (Port 1)
> +	2221  SeaPORT+2/232 (Port 2)
> +	2222  SeaPORT+2/485 (Port 2)
> +	2223  SeaPORT+2 (Port 2)
> +	2411  SeaPORT+4/232 (Port 1)
> +	2412  SeaPORT+4/485 (Port 1)
> +	2413  SeaPORT+4 (Port 1)
> +	2421  SeaPORT+4/232 (Port 2)
> +	2422  SeaPORT+4/485 (Port 2)
> +	2423  SeaPORT+4 (Port 2)
> +	2431  SeaPORT+4/232 (Port 3)
> +	2432  SeaPORT+4/485 (Port 3)
> +	2433  SeaPORT+4 (Port 3)
> +	2441  SeaPORT+4/232 (Port 4)
> +	2442  SeaPORT+4/485 (Port 4)
> +	2443  SeaPORT+4 (Port 4)
> +	2811  SeaLINK+8/232 (Port 1)
> +	2812  SeaLINK+8/485 (Port 1)
> +	2813  SeaLINK+8 (Port 1)
> +	2821  SeaLINK+8/232 (Port 2)
> +	2822  SeaLINK+8/485 (Port 2)
> +	2823  SeaLINK+8 (Port 2)
> +	2831  SeaLINK+8/232 (Port 3)
> +	2832  SeaLINK+8/485 (Port 3)
> +	2833  SeaLINK+8 (Port 3)
> +	2841  SeaLINK+8/232 (Port 4)
> +	2842  SeaLINK+8/485 (Port 4)
> +	2843  SeaLINK+8 (Port 4)
> +	2851  SeaLINK+8/232 (Port 5)
> +	2852  SeaLINK+8/485 (Port 5)
> +	2853  SeaLINK+8 (Port 5)
> +	2861  SeaLINK+8/232 (Port 6)
> +	2862  SeaLINK+8/485 (Port 6)
> +	2863  SeaLINK+8 (Port 6)
> +	2871  SeaLINK+8/232 (Port 7)
> +	2872  SeaLINK+8/485 (Port 7)
> +	2873  SeaLINK+8 (Port 7)
> +	2881  SeaLINK+8/232 (Port 8)
> +	2882  SeaLINK+8/485 (Port 8)
> +	2883  SeaLINK+8 (Port 8)
> +	9020  SeaLINK+422
> +	a02a  SeaLINK+8 (Port 1+2)
> +	a02b  SeaLINK+8 (Port 3+4)
> +	a02c  SeaLINK+8 (Port 5+6)
> +	a02d  SeaLINK+8 (Port 7+8)
> +0c53  ViewPLUS, Inc.
> +0c54  Glory, Ltd
> +0c55  Spectrum Digital, Inc.
> +	0510  Spectrum Digital XDS510 JTAG Debugger
> +	0540  SPI540
> +	5416  TMS320C5416 DSK
> +	6416  TMS320C6416 DDB
> +0c56  Billion Bright, Ltd
> +0c57  Imaginative Design Operation Co., Ltd
> +0c58  Vidar Systems Corp.
> +0c59  Dong Guan Shinko Wire Co., Ltd
> +0c5a  TRS International Mfg., Inc.
> +0c5e  Xytronix Research & Design
> +0c60  Apogee Electronics Corp.
> +	0001  MiniMe
> +	0002  MiniDAC
> +	0003  ONE
> +	0004  GiO
> +	0007  Duet
> +	0009  Jam
> +	000a  Jam Bootloader
> +	000b  MiC
> +	000c  MiC Bootloader
> +	8007  Duet DFU Mode
> +0c62  Chant Sincere Co., Ltd
> +0c63  Toko, Inc.
> +0c64  Signality System Engineering Co., Ltd
> +0c65  Eminence Enterprise Co., Ltd
> +0c66  Rexon Electronics Corp.
> +0c67  Concept Telecom, Ltd
> +0c6a  ACS
> +	0005  Color 320 x 240 LCD Display Terminal with Touchscreen
> +0c6c  JETI Technische Instrumente GmbH
> +	04b2  Specbos 1201
> +0c70  MCT Elektronikladen
> +	0000  USB08 Development board
> +	0747  Eye Movement Recorder [Visagraph]/[ReadAlyzer]
> +0c72  PEAK System
> +	000c  PCAN-USB
> +	000d  PCAN Pro
> +0c74  Optronic Laboratories Inc.
> +	0002  OL 700-30 Goniometer
> +0c76  JMTek, LLC.
> +	0001  Mass Storage Controller
> +	0002  Mass Storage Controller
> +	0003  USBdisk
> +	0004  Mass Storage Controller
> +	0005  Transcend Flash disk
> +	0006  Transcend JetFlash
> +	0007  Mass Storage Device
> +	1600  Ion Quick Play LP turntable
> +	1605  SSS Headphone Set
> +	1607  audio controller
> +	5663  Audio Device
> +0c77  Sipix Group, Ltd
> +	1001  SiPix Web2
> +	1002  SiPix SC2100
> +	1010  SiPix Snap
> +	1011  SiPix Blink 2
> +	1015  SiPix CAMeleon
> +0c78  Detto Corp.
> +0c79  NuConnex Technologies Pte., Ltd
> +0c7a  Wing-Span Enterprise Co., Ltd
> +0c86  NDA Technologies, Inc.
> +0c88  Kyocera Wireless Corp.
> +	0021  Handheld
> +	17da  Qualcomm Kyocera CDMA Technologies MSM
> +0c89  Honda Tsushin Kogyo Co., Ltd
> +0c8a  Pathway Connectivity, Inc.
> +0c8b  Wavefly Corp.
> +0c8c  Coactive Networks
> +0c8d  Tempo
> +0c8e  Cesscom Co., Ltd
> +	6000  Luxian Series
> +0c8f  Applied Microsystems
> +0c94  Cryptera
> +	a000  EPP 1217
> +0c98  Berkshire Products, Inc.
> +	1140  USB PC Watchdog
> +0c99  Innochips Co., Ltd
> +0c9a  Hanwool Robotics Corp.
> +0c9b  Jobin Yvon, Inc.
> +0c9c  Brand Innovators BV
> +	1511  BI-1511 Laser Simulator
> +	1512  BI-1512 Syncbus Monitor
> +	1514  BI-1514 HPC
> +	1532  BI-1532 GPC
> +0c9d  SemTek
> +	0170  3873 Manual Insert card reader
> +0ca2  Zyfer
> +0ca3  Sega Corp.
> +0ca4  ST&T Instrument Corp.
> +0ca5  BAE Systems Canada, Inc.
> +0ca6  Castles Technology Co., Ltd
> +	0010  EZUSB PC/SC Smart Card Reader
> +	0050  EZ220PU Reader Controller
> +	1077  Bludrive Family Smart Card Reader
> +	107e  Reader Controller
> +	2010  myPad110 PC/SC Smart Card Reader
> +	3050  EZ710 Smart Card Reader
> +0ca7  Information Systems Laboratories
> +0caa  Allied Telesis KK.
> +	3001  AT-VT-Kit3 Serial Adapter
> +0cad  Motorola CGISS
> +	1007  APX Series Consolette
> +	1020  MOTOTRBO Series Radio (Portable)
> +	1030  APX Series Radio (Portable)
> +	1031  APX Series Radio (Mobile)
> +	1602  IMPRES Battery Data Reader
> +	9001  PowerPad Pocket PC Device
> +0cae  Ascom Business Systems, Ltd
> +0caf  Buslink
> +	2507  Hi-Speed USB-to-IDE Bridge Controller
> +	2515  Flash Disk Embedded Hub
> +	2516  Flash Disk Security Device
> +	2517  Flash Disk Mass Storage Device
> +	25c7  Hi-Speed USB-to-IDE Bridge Controller
> +	3a00  Hard Drive
> +	3a20  Mass Storage Device
> +	3acd  Mass Storage Device
> +0cb0  Flying Pig Systems
> +0cb1  Innovonics, Inc.
> +0cb6  Celestix Networks, Pte., Ltd
> +0cb7  Singatron Enterprise Co., Ltd
> +0cb8  Opticis Co., Ltd
> +0cba  Trust Electronic (Shanghai) Co., Ltd
> +0cbb  Shanghai Darong Electronics Co., Ltd
> +0cbc  Palmax Technology Co., Ltd
> +	0101  Pocket PC P6C
> +	0201  Personal Digital Assistant
> +	0301  Personal Digital Assistant P6M+
> +	0401  Pocket PC
> +0cbd  Pentel Co., Ltd (Electronics Equipment Div.)
> +0cbe  Keryx Technologies, Inc.
> +0cbf  Union Genius Computer Co., Ltd
> +0cc0  Kuon Yi Industrial Corp.
> +0cc1  Given Imaging, Ltd
> +0cc2  Timex Corp.
> +0cc3  Rimage Corp.
> +0cc4  emsys GmbH
> +0cc5  Sendo
> +0cc6  Intermagic Corp.
> +0cc8  Technotools Corp.
> +0cc9  BroadMAX Technologies, Inc.
> +0cca  Amphenol
> +0ccb  SKNet Co., Ltd
> +0ccc  Domex Technology Corp.
> +0ccd  TerraTec Electronic GmbH
> +	0012  PHASE 26
> +	0013  PHASE 26
> +	0014  PHASE 26
> +	0015  Flash Update for TerraTec PHASE 26
> +	0021  Cameo Grabster 200
> +	0023  Mystify Claw
> +	0028  Aureon 5.1 MkII
> +	0032  MIDI HUBBLE
> +	0035  Miditech Play'n Roll
> +	0036  Cinergy 250 Audio
> +	0037  Cinergy 250 Audio
> +	0038  Cinergy T² DVB-T Receiver
> +	0039  Grabster AV 400
> +	003b  Cinergy 400
> +	003c  Grabster AV 250
> +	0042  Cinergy Hybrid T XS
> +	0043  Cinergy T XS
> +	004e  Cinergy T XS
> +	004f  Cinergy Analog XS
> +	0055  Cinergy T XE (Version 1, AF9005)
> +	005c  Cinergy T²
> +	0069  Cinergy T XE (Version 2, AF9015)
> +	006b  Cinergy HT PVR (EU)
> +	0072  Cinergy Hybrid T
> +	0077  Aureon Dual USB
> +	0078  Cinergy T XXS
> +	0086  Cinergy Hybrid XE
> +	008e  Cinergy HTC XS
> +	0096  Grabby
> +	0097  Cinergy T RC MKII
> +	0099  AfaTech 9015 [Cinergy T Stick Dual]
> +	00a5  Cinergy Hybrid Stick
> +	00a9  RTL2838 DVB-T COFDM Demodulator [TerraTec Cinergy T Stick Black]
> +	00b3  NOXON DAB/DAB+ Stick
> +	00b9  WDR DAB/DAB+ Stick
> +	00e0  NOXON DAB/DAB+ Stick V2
> +	0102  Cinergy S2 Stick
> +	0105  Cinergy S2 Box
> +	10a7  TerraTec G3
> +	10ad   Cinergy H5 Rev. 2
> +0cd4  Bang Olufsen
> +	0101  BeolinkPC2
> +0cd5  LabJack Corporation
> +	0003  U3
> +	0009  UE9
> +0cd6  Scheidt & Bachmann
> +	000c  S&B TPU
> +	000e  S&B BKV
> +	0011  Money Coin Unit
> +0cd7  NewChip S.r.l.
> +0cd8  JS Digitech, Inc.
> +	2007  Smart Card Reader/JSTU-9700
> +0cd9  Hitachi Shin Din Cable, Ltd
> +0cde  Z-Com
> +	0001  XI-750 802.11b Wireless Adapter [Atmel AT76C503A]
> +	0002  XI-725/726 Prism2.5 802.11b Adapter
> +	0003  Sagem 802.11b Dongle
> +	0004  Sagem 802.11b Dongle
> +	0005  XI-735 Prism3 802.11b Adapter
> +	0006  XG-300 802.11b Adapter
> +	0008  XG-703A 802.11g Wireless Adapter [Intersil ISL3887]
> +	0009  (ZD1211)IEEE 802.11b+g Adapter
> +	0011  ZD1211
> +	0012  AR5523
> +	0013  AR5523 driver (no firmware)
> +	0014  NB 802.11g Wireless LAN Adapter(3887A)
> +	0015  XG-705A 802.11g Wireless Adapter [Intersil ISL3887]
> +	0016  NB 802.11g Wireless LAN Adapter(3887A)
> +	0018  NB 802.11a/b/g Wireless LAN Adapter(3887A)
> +	001a  802.11bg
> +	001c  802.11b/g Wireless Network Adapter
> +	0020  AG-760A 802.11abg Wireless Adapter [ZyDAS ZD1211B]
> +	0022  802.11b/g/n Wireless Network Adapter
> +	0023  UB81 802.11bgn
> +	0025  802.11b/g/n USB Wireless Network Adapter
> +	0026  UB82 802.11abgn
> +	0027  Sphairon Homelink 1202 802.11n Wireless Adapter [Atheros AR9170]
> +0ce5  Validation Technologies International
> +	0003  Matrix
> +0ce9  Pico Technology
> +	1001  PicoScope3000 series PC Oscilloscope
> +	1007  PicoScope 2000 series PC Oscilloscope
> +	1008  PicoScope 5000 series PC Oscilloscope
> +	1009  PicoScope 4000 series PC Oscilloscope
> +	100e  PicoScope 6000 series PC Oscilloscope
> +	1012  PicoScope 3000A series PC Oscilloscope
> +	1016  PicoScope 2000A series PC Oscilloscope
> +	1018  PicoScope 4000A series PC Oscilloscope
> +	1200  PicoScope 2000 series PC Oscilloscope
> +	1201  PicoScope 3000 series PC Oscilloscope
> +	1202  PicoScope 4000 series PC Oscilloscope
> +	1203  PicoScope 5000 series PC Oscilloscope
> +	1204  PicoScope 6000 series PC Oscilloscope
> +	1211  PicoScope 3000 series PC Oscilloscope
> +	1212  PicoScope 4000 series PC Oscilloscope
> +0cf1  e-Conn Electronic Co., Ltd
> +0cf2  ENE Technology, Inc.
> +	6220  SD Card Reader (SG361)
> +	6225  SD card reader (UB6225)
> +	6230  SD Card Reader (UB623X)
> +	6250  SD card reader (UB6250)
> +0cf3  Qualcomm Atheros Communications
> +	0001  AR5523
> +	0002  AR5523 (no firmware)
> +	0003  AR5523
> +	0004  AR5523 (no firmware)
> +	0005  AR5523
> +	0006  AR5523 (no firmware)
> +	0036  AR9462 Bluetooth
> +	1001  Thomson TG121N [Atheros AR9001U-(2)NG]
> +	1002  TP-Link TL-WN821N v2 / TL-WN822N v1 802.11n [Atheros AR9170]
> +	1006  TP-Link TL-WN322G v3 / TL-WN422G v2 802.11g [Atheros AR9271]
> +	1010  3Com 3CRUSBN275 802.11abgn Wireless Adapter [Atheros AR9170]
> +	20ff  AR7010 (no firmware)
> +	3000  AR3011 Bluetooth (no firmware)
> +	3002  AR3011 Bluetooth
> +	3004  AR3012 Bluetooth 4.0
> +	3005  AR3011 Bluetooth
> +	3007  AR3012 Bluetooth 4.0 (no firmware)
> +	3008  Bluetooth (AR3011)
> +	311d  Bluetooth
> +	311f  AR3012 Bluetooth
> +	7015  TP-Link TL-WN821N v3 / TL-WN822N v2 802.11n [Atheros AR7010+AR9287]
> +	9170  AR9170 802.11n
> +	9271  AR9271 802.11n
> +	9378  QCA9377-7
> +	b002  Ubiquiti WiFiStation 802.11n [Atheros AR9271]
> +	b003  Ubiquiti WiFiStationEXT 802.11n [Atheros AR9271]
> +	e006  Dell Wireless 1802 Bluetooth 4.0 LE
> +	e300  QCA61x4 Bluetooth 4.0
> +0cf4  Fomtex Corp.
> +0cf5  Cellink Co., Ltd
> +0cf6  Compucable Corp.
> +0cf7  ishoni Networks
> +0cf8  Clarisys, Inc.
> +	0750  Claritel-i750 - vp
> +0cf9  Central System Research Co., Ltd
> +0cfa  Inviso, Inc.
> +0cfc  Minolta-QMS, Inc.
> +	2301  Magicolor 2300 DL
> +	2350  Magicolor 2350EN/3300
> +	3100  Magicolor 3100
> +	7300  Magicolor 5450/5550
> +0cff  SAFA MEDIA Co., Ltd.
> +	0320  SR-380N
> +0d06  telos EDV Systementwicklung GmbH
> +0d08  UTStarcom
> +	0602  DV007 [serial]
> +	0603  DV007 [storage]
> +0d0b  Contemporary Controls
> +0d0c  Astron Electronics Co., Ltd
> +0d0d  MKNet Corp.
> +0d0e  Hybrid Networks, Inc.
> +0d0f  Feng Shin Cable Co., Ltd
> +0d10  Elastic Networks
> +	0001  StormPort (WDM)
> +0d11  Maspro Denkoh Corp.
> +0d12  Hansol Electronics, Inc.
> +0d13  BMF Corp.
> +0d14  Array Comm, Inc.
> +0d15  OnStream b.v.
> +0d16  Hi-Touch Imaging Technologies Co., Ltd
> +	0001  PhotoShuttle
> +	0002  Photo Printer 730 series
> +	0004  Photo Printer 63xPL/PS
> +	0007  P510K
> +	0009  P72x Series
> +	000a  P728L
> +	000b  P510L
> +	000d  P518A
> +	000e  P910L
> +	0010  M610
> +	0100  Photo Printer 63xPL/PS
> +	0102  Photo Printer 64xPS
> +	0103  Photo Printer 730 series
> +	0104  Photo Printer 63xPL/PS
> +	0105  Photo Printer 64xPS
> +	010e  P510S
> +	0110  P110S
> +	0111  P510Si
> +	0112  P518S
> +	0200  Photo Printer 64xDL
> +	0309  CS-200e
> +	030a  CS-220e
> +	0501  P75x Series
> +	0502  P52x Series
> +	0503  P310L
> +	050a  P310W
> +	050f  P530D
> +	0800  X610
> +0d17  NALTEC, Inc.
> +0d18  coaXmedia
> +0d19  Hank Connection Industrial Co., Ltd
> +0d28  NXP
> +	0204  ARM mbed
> +0d2f  Andamiro
> +	0002  Pump It Up Pad
> +0d32  Leo Hui Electric Wire & Cable Co., Ltd
> +0d33  AirSpeak, Inc.
> +0d34  Rearden Steel Technologies
> +0d35  Dah Kun Co., Ltd
> +0d3a  Posiflex Technologies, Inc.
> +	0206  Series 3xxx Cash Drawer
> +	0207  Series 3xxx Cash Drawer
> +	0500  Magnetic Stripe Reader
> +0d3c  Sri Cable Technology, Ltd
> +0d3d  Tangtop Technology Co., Ltd
> +	0001  HID Keyboard
> +	0040  PS/2 Adapter
> +0d3e  Fitcom, inc.
> +0d3f  MTS Systems Corp.
> +0d40  Ascor, Inc.
> +0d41  Ta Yun Terminals Industrial Co., Ltd
> +0d42  Full Der Co., Ltd
> +0d46  Kobil Systems GmbH
> +	2012  KAAN Standard Plus (Smartcard reader)
> +	3003  mIDentity Light / KAAN SIM III
> +	3014  Smart Token
> +	4000  mIDentity (mass storage)
> +	4001  mIDentity Basic/Classic (composite device)
> +	4081  mIDentity Basic/Classic (installationless)
> +0d48  Promethean Limited
> +	0001  ACTIVboard
> +	0004  ACTIVboard
> +	0100  Audio
> +0d49  Maxtor
> +	3000  Drive
> +	3005  Personal Storage 3000LS
> +	3010  3000LE Drive
> +	3100  Hi-Speed USB-IDE Bridge Controller
> +	3200  Personal Storage 3200
> +	5000  5000XT Drive
> +	5010  5000LE Drive
> +	5020  Mobile Hard Disk Drive
> +	7000  OneTouch
> +	7010  OneTouch
> +	7100  OneTouch II 300GB External Hard Disk
> +	7310  OneTouch 4
> +	7410  Mobile Hard Disk Drive (1TB)
> +	7450  Basics Portable USB Device
> +0d4a  NF Corp.
> +0d4b  Grape Systems, Inc.
> +0d4c  Tedas AG
> +0d4d  Coherent, Inc.
> +0d4e  Agere Systems Netherland BV
> +	047a  WLAN Card
> +	1000  Wireless Card Model 0801
> +	1001  Wireless Card Model 0802
> +0d4f  EADS Airbus France
> +0d50  Cleware GmbH
> +	0011  USB-Temp2 Thermometer
> +	0030  Multiplexer
> +	0040  F4 foot switch
> +0d51  Volex (Asia) Pte., Ltd
> +0d53  HMI Co., Ltd
> +0d54  Holon Corp.
> +0d55  ASKA Technologies, Inc.
> +0d56  AVLAB Technology, Inc.
> +0d57  Solomon Microtech, Ltd
> +0d59  TRC Simulators b.v.
> +	02a8  Digital Clock
> +0d5c  SMC Networks, Inc.
> +	a001  SMC2662W (v1) EZ Connect 802.11b Wireless Adapter [Atmel AT76C503A]
> +	a002  SMC2662W v2 / SMC2662W-AR / Belkin F5D6050 [Atmel at76c503a]
> +0d5e  Myacom, Ltd
> +	2346  BT Digital Access adapter
> +0d5f  CSI, Inc.
> +0d60  IVL Technologies, Ltd
> +0d61  Meilu Electronics (Shenzhen) Co., Ltd
> +0d62  Darfon Electronics Corp.
> +	0003  Smartcard Reader
> +	0004  Keyboard
> +	001b  Keyboard
> +	001c  Benq X120 Internet Keyboard Pro
> +	0306  M530 Mouse
> +	0800  Magic Wheel
> +	2021  AM805 Keyboard
> +	2026  TECOM Bluetooth Device
> +	2050  Mouse
> +	2106  Dell L20U Multimedia Keyboard
> +	910e  HP Business Slim Keyboard
> +	a100  Optical Mouse
> +0d63  Fritz Gegauf AG
> +0d64  DXG Technology Corp.
> +	0105  Dual Mode Digital Camera 1.3M
> +	0107  Horus MT-409 Camera
> +	0108  Dual Mode Digital Camera
> +	0202  Dual Mode Video Camera Device
> +	0303  DXG-305V Camera
> +	1001  SiPix Stylecam/UMAX AstraPix 320s
> +	1002  Fashion Cam 01 Dual-Mode DSC (Video Camera)
> +	1003  Fashion Cam Dual-Mode DSC (Controller)
> +	1021  D-Link DSC 350F
> +	1208  Dual Mode Still Camera Device
> +	2208  Mass Storage
> +	3105  Dual Mode Digital Camera Disk
> +	3108  Digicam Mass Storage Device
> +	5566  Contour Roam Model 1600
> +0d65  KMJP Co., Ltd
> +0d66  TMT
> +0d67  Advanet, Inc.
> +0d68  Super Link Electronics Co., Ltd
> +0d69  NSI
> +0d6a  Megapower International Corp.
> +0d6b  And-Or Logic
> +0d70  Try Computer Co., Ltd
> +0d71  Hirakawa Hewtech Corp.
> +0d72  Winmate Communication, Inc.
> +0d73  Hit's Communications, Inc.
> +0d76  MFP Korea, Inc.
> +0d77  Power Sentry/Newpoint
> +0d78  Japan Distributor Corp.
> +0d7a  MARX Datentechnik GmbH
> +	0001  CrypToken
> +0d7b  Wellco Technology Co., Ltd
> +0d7c  Taiwan Line Tek Electronic Co., Ltd
> +0d7d  Phison Electronics Corp.
> +	0100  PS1001/1011/1006/1026 Flash Disk
> +	0110  Gigabyte FlexDrive
> +	0120  Disk Pro 64MB
> +	0124  GIGABYTE Disk
> +	0240  I/O-Magic/Transcend 6-in-1 Card Reader
> +	110e  NEC uPD720121/130 USB-ATA/ATAPI Bridge
> +	1240  Apacer 6-in-1 Card Reader 2.0
> +	1270  Wolverine SixPac 6000
> +	1300  Flash Disk
> +	1320  PS2031 Flash Disk
> +	1400  Attache 256MB USB 2.0 Flash Drive
> +	1420  PS2044 Pen Drive
> +	1470  Vosonic X's-Drive II+ VP2160
> +	1620  USB Disk Pro
> +	1900  USB Thumb Drive
> +0d7e  American Computer & Digital Components
> +	2507  Hi-Speed USB-to-IDE Bridge Controller
> +	2517  Hi-Speed Mass Storage Device
> +	25c7  Hi-Speed USB-to-IDE Bridge Controller
> +0d7f  Essential Reality LLC
> +	0100  P5 Glove glove controller
> +0d80  H.R. Silvine Electronics, Inc.
> +0d81  TechnoVision
> +0d83  Think Outside, Inc.
> +0d87  Dolby Laboratories Inc.
> +0d89  Oz Software
> +0d8a  King Jim Co., Ltd
> +	0101  TEPRA PRO
> +0d8b  Ascom Telecommunications, Ltd
> +0d8c  C-Media Electronics, Inc.
> +	0001  Audio Device
> +	0002  Composite Device
> +	0003  Sound Device
> +	0004  CM6631A Audio Processor
> +	0005  Blue Snowball
> +	0006  Storm HP-USB500 5.1 Headset
> +	000c  Audio Adapter
> +	000d  Composite Device
> +	000e  Audio Adapter (Planet UP-100, Genius G-Talk)
> +	0014  Audio Adapter (Unitek Y-247A)
> +	001f  CM108 Audio Controller
> +	0102  CM106 Like Sound Device
> +	0103  CM102-A+/102S+ Audio Controller
> +	0104  CM103+ Audio Controller
> +	0105  CM108 Audio Controller
> +	0107  CM108 Audio Controller
> +	010f  CM108 Audio Controller
> +	0115  CM108 Audio Controller
> +	0139  Multimedia Headset [Gigaware by Ignition L.P.]
> +	013c  CM108 Audio Controller
> +	0201  CM6501
> +	5000  Mass Storage Controller
> +	5200  Mass Storage Controller(0D8C,5200)
> +	b213  USB Phone CM109 (aka CT2000,VPT1000)
> +0d8d  Promotion & Display Technology, Ltd
> +	0234  V-234 Composite Device
> +	0550  V-550 Composite Device
> +	0551  V-551 Composite Device
> +	0552  V-552 Composite Device
> +	0651  V-651 Composite Device
> +	0652  V-652 Composite Device
> +	0653  V-653 Composite Device
> +	0654  V-654 Composite Device
> +	0655  V-655 Composite Device
> +	0656  V-656 Composite Device
> +	0657  V-657 Composite Device
> +	0658  V-658 Composite Device
> +	0659  V-659 Composite Device
> +	0660  V-660 Composite Device
> +	0661  V-661 Composite Device
> +	0662  V-662 Composite Device
> +	0850  V-850 Composite Device
> +	0851  V-851 Composite Device
> +	0852  V-852 Composite Device
> +	0901  V-901 Composite Device
> +	0902  V-902 Composite Device
> +	0903  V-903 Composite Device
> +	4754  Voyager DMP Composite Device
> +	bb00  Bloomberg Composite Device
> +	bb01  Bloomberg Composite Device
> +	bb02  Bloomberg Composite Device
> +	bb03  Bloomberg Composite Device
> +	bb04  Bloomberg Composite Device
> +	bb05  Bloomberg Composite Device
> +	fffe  Global Tuner Composite Device
> +	ffff  Voyager DMP Composite Device
> +0d8e  Global Sun Technology, Inc.
> +	0163  802.11g 54 Mbps Wireless Dongle
> +	1621  802.11b Wireless Adapter
> +	3762  Cohiba 802.11g Wireless Mini adapter [Intersil ISL3887]
> +	3763  802.11g Wireless dongle
> +	7100  802.11b Adapter
> +	7110  WL-210 / WU210P 802.11b Wireless Adapter [Atmel AT76C503A]
> +	7605  TRENDnet TEW-224UB 802.11b Wireless Adapter [Atmel AT76C503A]
> +	7801  AR5523
> +	7802  AR5523 (no firmware)
> +	7811  AR5523
> +	7812  AR5523 (no firmware)
> +	7a01  PRISM25 802.11b Adapter
> +0d8f  Pitney Bowes
> +0d90  Sure-Fire Electrical Corp.
> +0d96  Skanhex Technology, Inc.
> +	0000  Jenoptik JD350 video
> +	3300  SX330z Camera
> +	4100  SX410z Camera
> +	4102  MD 9700 Camera
> +	4104  Jenoptik JD-4100z3s
> +	410a  Medion 9801/Novatech SX-410z
> +	5200  SX-520z Camera
> +0d97  Santa Barbara Instrument Group
> +	0001  SBIG Astronomy Camera (without firmware)
> +	0101  SBIG Astronomy Camera (with firmware)
> +0d98  Mars Semiconductor Corp.
> +	0300  Avaya Wireless Card
> +	1007  Discovery Kids Digital Camera
> +0d99  Trazer Technologies, Inc.
> +0d9a  RTX AS
> +	0001  Bluetooth Device
> +0d9b  Tat Shing Electrical Co.
> +0d9c  Chee Chen Hi-Technology Co., Ltd
> +0d9d  Sanwa Supply, Inc.
> +0d9e  Avaya
> +	0300  Wireless Card
> +0d9f  Powercom Co., Ltd
> +	0001  Uninterruptible Power Supply
> +	0002  Black Knight PRO / WOW Uninterruptible Power Supply (Cypress HID->COM RS232)
> +	00a2  Imperial Uninterruptible Power Supply (HID PDC)
> +	00a3  Smart King PRO Uninterruptible Power Supply (HID PDC)
> +	00a4  WOW Uninterruptible Power Supply (HID PDC)
> +	00a5  Vanguard Uninterruptible Power Supply (HID PDC)
> +	00a6  Black Knight PRO Uninterruptible Power Supply (HID PDC)
> +0da0  Danger Research
> +0da1  Suzhou Peter's Precise Industrial Co., Ltd
> +0da2  Land Instruments International, Ltd
> +0da3  Nippon Electro-Sensory Devices Corp.
> +0da4  Polar Electro Oy
> +	0001  Interface
> +	0003  FlowLink
> +	0008  Loop
> +0da7  IOGear, Inc.
> +0da8  softDSP Co., Ltd
> +	0001  SDS 200A Oscilloscope
> +0dab  Cubig Group
> +	0100  DVR/CVR-M140 MP3 Player
> +0dad  Westover Scientific
> +0db0  Micro Star International
> +	1020  PC2PC WLAN Card
> +	1967  Bluetooth Dongle
> +	3713  Primo 73
> +	3801  Motorola Bluetooth 2.1+EDR Device
> +	3870  MS-3870 802.11bgn Wireless Module [Ralink RT3070]
> +	3871  MS-3871 802.11bgn Wireless Module [Ralink RT8070]
> +	4011  Medion Flash XL V2.0 Card Reader
> +	4023  Lexar Mobile Card Reader
> +	4600  802.11b/g Turbo Wireless Adapter
> +	5501  Mass Storage Device
> +	5502  Mass Storage Device
> +	5513  MP3 Player
> +	5515  MP3 Player
> +	5516  MP3 Player
> +	5580  Mega Sky 580 DVB-T Tuner [M902x]
> +	5581  Mega Sky 580 DVB-T Tuner [GL861]
> +	6823  UB11B/MS-6823 802.11b Wi-Fi adapter
> +	6826  IEEE 802.11g Wireless Network Adapter
> +	6855  Bluetooth Device
> +	6861  MSI-6861 802.11g WiFi adapter
> +	6865  RT2570
> +	6869  RT2570
> +	6874  RT2573
> +	6877  RT2573
> +	6881  Bluetooth Class I EDR Device
> +	688a  Bluetooth Class I EDR Device
> +	6899  802.11bgn 1T1R Mini Card Wireless Adapter
> +	6970  MS-6970 BToes Bluetooth adapter
> +	697a  Bluetooth Dongle
> +	6982  Medion Flash XL Card Reader
> +	a861  RT2573
> +	a874  RT2573
> +	a970  Bluetooth dongle
> +	a97a  Bluetooth EDR Device
> +	b970  Bluetooth EDR Device
> +	b97a  Bluetooth EDR Device
> +	ffff  Bluetooth Adapter in DFU mode
> +0db1  Wen Te Electronics Co., Ltd
> +0db2  Shian Hwi Plug Parts, Plastic Factory
> +0db3  Tekram Technology Co., Ltd
> +0db4  Chung Fu Chen Yeh Enterprise Corp.
> +0db5  Access IS
> +	0139  Barcode Module - CDC serial
> +	013a  Barcode Module - Virtual Keyboard
> +	013b  Barcode Module - HID
> +	0160  NFC and Smartcard Module (NSM)
> +	0164  NFC and Smartcard Module (NSM)with 4 SAM slots
> +0db7  ELCON Systemtechnik
> +	0002  Goldpfeil P-LAN
> +0dba  Digidesign
> +	1000  Mbox 1 [Mbox]
> +	3000  Mbox 2
> +	b011  Eleven Rack
> +0dbc  A&D Medical
> +	0003  AND Serial Cable [AND Smart Cable]
> +0dbe  Jiuh Shiuh Precision Industry Co., Ltd
> +0dbf  Jess-Link International
> +	0002  SmartDongle Security Key
> +	0200  HDD Storage Solution
> +	021b  USB-2.0 IDE Adapter
> +	0300  Storage Adapter
> +	0333  Storage Adapter
> +	0502  FSC Storagebird XL hard disk
> +	0707  ZIV Drive
> +0dc0  G7 Solutions (formerly Great Notions)
> +0dc1  Tamagawa Seiki Co., Ltd
> +0dc3  Athena Smartcard Solutions, Inc.
> +	0801  ASEDrive III
> +	0802  ASEDrive IIIe
> +	1104  ASEDrive IIIe KB
> +	1701  ASEKey
> +	1702  ASEKey
> +0dc4  inXtron, Inc.
> +	0040  Mass Storage Device
> +	0041  Mass Storage Device
> +	0042  Mass Storage Device
> +	0101  Hi-Speed Mass Storage Device
> +	0209  SK-3500 S2
> +	020a  Oyen Digital MiniPro 2.5" hard drive enclosure
> +	0290  Mass Storage Device [NT2 U3.1]
> +0dc5  SDK Co., Ltd
> +0dc6  Precision Squared Technology Corp.
> +	2301  Wireless Touchpad Keyboard
> +0dc7  First Cable Line, Inc.
> +0dcd  NetworkFab Corp.
> +	0001  Remote Interface Adapter
> +	0002  High Bandwidth Codec
> +0dd0  Access Solutions
> +	1002  Triple Talk Speech Synthesizer
> +0dd1  Contek Electronics Co., Ltd
> +0dd2  Power Quotient International Co., Ltd
> +	0003  Mass Storage (P)
> +0dd3  MediaQ
> +0dd4  Custom Engineering SPA
> +	0237  K80 80mm Thermal Printer
> +0dd5  California Micro Devices
> +0dd7  Kocom Co., Ltd
> +0dd8  Netac Technology Co., Ltd
> +	0562  Netac Portable SSD Z6s
> +	1060  USB-CF-Card
> +	e007  OnlyDisk U222 Pendrive
> +	f607  OnlyDisk U210 1G flash drive [U-SAFE]
> +0dd9  HighSpeed Surfing
> +0dda  Integrated Circuit Solution, Inc.
> +	0001  Multi-Card Reader 6in1
> +	0002  Multi-Card Reader 7in1
> +	0003  Flash Disk
> +	0005  Internal Multi-Card Reader 6in1
> +	0008  SD single card reader
> +	0009  MS single card reader
> +	000a  MS+SD Dual Card Reader
> +	000b  SM single card reader
> +	0101  All-In-One Card Reader
> +	0102  All-In-One Card Reader
> +	0301  MP3 Player
> +	0302  Multi-Card MP3 Player
> +	1001  Multi-Flash Disk
> +	2001  Multi-Card Reader
> +	2002  Q018 default PID
> +	2003  Multi-Card Reader
> +	2005  Datalux DLX-1611 16in1 Card Reader
> +	2006  All-In-One Card Reader
> +	2007  USB to ATAPI bridge
> +	2008  All-In-One Card Reader
> +	2013  SD/MS Combo Card Reader
> +	2014  SD/MS Single Card Reader
> +	2023  card reader SD/MS DEMO board with ICSI brand name (MaskROM version)
> +	2024  card reader SD/MS DEMO board with Generic brand name (MaskROM version)
> +	2026  USB2.0 Card Reader
> +	2027  USB 2.0 Card Reader
> +	2315  UFD MP3 player (model 2)
> +	2318  UFD MP3 player (model 1)
> +	2321  UFD MP3 player
> +0ddb  Tamarack, Inc.
> +0ddd  Datelink Technology Co., Ltd
> +0dde  Ubicom, Inc.
> +0de0  BD Consumer Healthcare
> +0de7  USBmicro
> +	0191  U401 Interface card
> +	01a5  U421 interface card
> +	01c3  U451 relay interface card
> +0dea  UTECH Electronic (D.G.) Co., Ltd.
> +0ded  Novasonics
> +0dee  Lifetime Memory Products
> +	4010  Storage Adapter
> +0def  Full Rise Electronic Co., Ltd
> +0df4  NET&SYS
> +	0201  MNG-2005
> +0df6  Sitecom Europe B.V.
> +	0001  C-Media VOIP Device
> +	0004  Bluetooth 2.0 Adapter 100m
> +	0007  Bluetooth 2.0 Adapter 10m
> +	000b  Bluetooth 2.0 Adapter DFU
> +	000d  WL-168 Wireless Network Adapter 54g
> +	0017  WL-182 Wireless-N Network USB Card
> +	0019  Bluetooth 2.0 adapter 10m CN-512v2 001
> +	001a  Bluetooth 2.0 adapter 100m CN-521v2 001 
> +	002b  WL-188 Wireless Network 300N USB Adapter
> +	002c  WL-301 Wireless Network 300N USB Adapter
> +	002d  WL-302 Wireless Network 300N USB dongle 
> +	0036  WL-603 Wireless Adapter
> +	0039  WL-315 Wireless-N USB Adapter
> +	003b  WL-321 Wireless USB Gaming Adapter 300N
> +	003c  WL-323 Wireless-N USB Adapter
> +	003d  WL-324 Wireless USB Adapter 300N
> +	003e  WL-343 Wireless USB Adapter 150N X1
> +	003f  WL-608 Wireless USB Adapter 54g
> +	0040  WL-344 Wireless Adapter 300N X2 [Ralink RT3071]
> +	0041  WL-329 Wireless Dualband USB adapter 300N
> +	0042  WL-345 Wireless USB adapter 300N X3
> +	0045  WL-353 Wireless USB Adapter 150N Nano
> +	0047  WL-352v1 Wireless USB Adapter 300N 002
> +	0048  WL-349v1 Wireless Adapter 150N 002 [Ralink RT3070]
> +	0049  WL-356 Wireless Adapter 300N
> +	004a  WL-358v1 Wireless Micro USB Adapter 300N X3 002
> +	004b  WL-349v3 Wireless Micro Adapter 150N X1 [Realtek RTL8192SU]
> +	004c  WL-352 802.11n Adapter [Realtek RTL8191SU]
> +	0050  WL-349v4 Wireless Micro Adapter 150N X1 [Ralink RT3370]
> +	0056  LN-031 10/100/1000 Ethernet Adapter
> +	005d  WLA-2000 v1.001 WLAN [RTL8191SU]
> +	0060  WLA-4000 802.11bgn [Ralink RT3072]
> +	0062  WLA-5000 802.11abgn [Ralink RT3572]
> +	006f  WLA-5100
> +	0072  AX88179 Gigabit Ethernet [Sitecom]
> +	061c  LN-028 Network USB 2.0 Adapter
> +	214a  IDE/SATA Combo Adapter [CN-330]
> +	21f4  44 St Bluetooth Device
> +	2200  Sitecom bluetooth2.0 class 2 dongle CN-512
> +	2208  Sitecom bluetooth2.0 class 2 dongle CN-520
> +	2209  Sitecom bluetooth2.0 class 1 dongle CN-521
> +	3068  DC-104v2 ISDN Adapter [HFC-S]
> +	9071  WL-113 rev 1 Wireless Network USB Adapter
> +	9075  WL-117 Hi-Speed USB Adapter
> +	90ac  WL-172 Wireless Network USB Adapter 54g Turbo
> +	9712  WL-113 rev 2 Wireless Network USB Adapter
> +0df7  Mobile Action Technology, Inc.
> +	0620  MA-620 Infrared Adapter
> +	0700  MA-700 Bluetooth Adapter
> +	0720  MA-720 Bluetooth Adapter
> +	0722  Bluetooth Dongle
> +	0730  MA-730/MA-730G Bluetooth Adapter
> +	0800  Data Cable
> +	0820  Data Cable
> +	0900  MA i-gotU Travel Logger GPS
> +	1800  Generic Card Reader
> +	1802  Card Reader
> +0dfa  Toyo Communication Equipment Co., Ltd
> +0dfc  GeneralTouch Technology Co., Ltd
> +	0001  Touchscreen
> +	0003  MultiTouch TouchScreen(Dualtouch)
> +	0101  5-point Touch Screen
> +	d107  MultiTouch TouchScreen
> +0e03  Nippon Systemware Co., Ltd
> +0e08  Winbest Technology Co., Ltd
> +0e0b  Amigo Technology Inc.
> +	9031  802.11n Wireless USB Card
> +	9041  802.11n Wireless USB Card
> +0e0c  Gesytec
> +	0101  LonUSB LonTalk Network Adapter
> +0e0d  PicoQuant GmbH
> +	0003  PicoHarp 300
> +0e0f  VMware, Inc.
> +	0001  Device
> +	0002  Virtual USB Hub
> +	0003  Virtual Mouse
> +	0004  Virtual CCID
> +	0005  Virtual Mass Storage
> +	0006  Virtual Keyboard
> +	000a  Virtual Sensors
> +	8001  Root Hub
> +	8002  Root Hub
> +	8003  Root Hub
> +	f80a  Smoker FX2
> +0e16  JMTek, LLC
> +0e17  Walex Electronic, Ltd
> +0e1a  Unisys
> +0e1b  Crewave
> +0e1e  Green Hills Software
> +0e20  Pegasus Technologies Ltd.
> +	0101  NoteTaker
> +	0200  Seiko Instruments InkLink Handwriting System
> +0e21  Cowon Systems, Inc.
> +	0300  iAudio CW200
> +	0400  MP3 Player
> +	0500  iAudio M3
> +	0510  iAudio X5, subpack USB port
> +	0513  iAudio X5, side USB port
> +	0520  iAudio M5, side USB port
> +	0601  iAudio G3
> +	0681  iAUDIO E2
> +	0700  iAudio U3
> +	0751  iAudio 7
> +	0760  iAUDIO U5 / iAUDIO G2
> +	0800  Cowon D2 (UMS mode)
> +	0801  Cowon D2 (MTP mode)
> +	0910  iAUDIO 9
> +	0920  J3
> +0e22  Symbian Ltd.
> +0e23  Liou Yuane Enterprise Co., Ltd
> +0e25  VinChip Systems, Inc.
> +0e26  J-Phone East Co., Ltd
> +0e30  HeartMath LLC
> +0e34  Micro Computer Control Corp.
> +0e35  3Pea Technologies, Inc.
> +0e36  TiePie engineering
> +	0009  Handyscope HS3
> +	000b  Handyscope HS4
> +	000f  Handyscope HS4-DIFF (br)
> +	0010  Handyscope HS2
> +	0011  TiePieSCOPE HS805 (br)
> +	0012  TiePieSCOPE HS805
> +	0013  Handyprobe HP3
> +	0014  Handyprobe HP3
> +	0018  Handyprobe HP2
> +	001b  Handyscope HS5
> +	0042  TiePieSCOPE HS801
> +	00fd  USB To Parallel adapter
> +	00fe  USB To Parallel adapter
> +0e38  Stratitec, Inc.
> +0e39  Smart Modular Technologies, Inc.
> +	0137  Bluetooth Device
> +0e3a  Neostar Technology Co., Ltd
> +	1100  CW-1100 Wireless Network Adapter
> +0e3b  Mansella, Ltd
> +0e41  Line6, Inc.
> +	4147  TonePort GX
> +	414d  Pod HD500
> +	4156  POD HD Desktop
> +	4250  BassPODxt
> +	4252  BassPODxt Pro
> +	4642  BassPODxt Live
> +	4650  PODxt Live
> +	4750  GuitarPort
> +	5044  PODxt
> +	5050  PODxt Pro
> +	534d  SeaMonkey
> +0e44  Sun-Riseful Technology Co., Ltd.
> +0e48  Julia Corp., Ltd
> +	0100  CardPro SmartCard Reader
> +0e4a  Shenzhen Bao Hing Electric Wire & Cable Mfr. Co.
> +0e4c  Radica Games, Ltd
> +	1097  Gamester Controller
> +	1103  Gamester Reflex
> +	2390  Jtech Controller
> +	3510  Gamester for Xbox
> +	7288  funkey reader
> +0e50  TechnoData Interware
> +	0001  Matrix USB-Key
> +	0002  Matrixlock Dongle (HID)
> +0e55  Speed Dragon Multimedia, Ltd
> +	110a  Tanic S110-SG1 + ISSC IS1002N [Slow Infra-Red (SIR) & Bluetooth 1.2 (Class 2) Adapter]
> +	110b  MS3303H USB-to-Serial Bridge
> +0e56  Kingston Technology Company, Inc.
> +	6021  K-PEX 100
> +0e5a  Active Co., Ltd
> +0e5b  Union Power Information Industrial Co., Ltd
> +0e5c  Bitland Information Technology Co., Ltd
> +	6118  LCD Device
> +	6119  remote receive and control device
> +	6441  C-Media Sound Device
> +0e5d  Neltron Industrial Co., Ltd
> +0e5e  Conwise Technology Co., Ltd.
> +	6622  CW6622
> +0e66  Hawking Technologies
> +	0001  HWUN1 Hi-Gain Wireless-300N Adapter w/ Upgradable Antenna [Ralink RT2870]
> +	0003  HWDN1 Hi-Gain Wireless-300N Dish Adapter [Ralink RT2870]
> +	0009  HWUN2 Hi-Gain Wireless-150N Adapter w/ Upgradable Antenna [Ralink RT2770]
> +	000b  HWDN2 Hi-Gain Wireless-150N Dish Adapter [Ralink RT2770]
> +	0013  HWUN3 Hi-Gain Wireless-N Adapter [Ralink RT3070]
> +	0015  HWDN2 Rev. E Hi-Gain Wireless-150N Dish Adapter [Realtek RTL8191SU]
> +	0017  HAWNU1 Hi-Gain Wireless-150N Network Adapter with Range Amplifier [Ralink RT3070]
> +	0018  Wireless-N Network Adapter [Ralink RT2870]
> +	400b  UF100 10/100 Network Adapter
> +	400c  UF100 Ethernet [pegasus2]
> +0e67  Fossil, Inc.
> +	0002  Wrist PDA
> +0e6a  Megawin Technology Co., Ltd
> +	0101  MA100 [USB-UART Bridge IC]
> +	02c0  Defender Gaming Keyboard
> +	030b  Truly Ergonomic Computer Keyboard (Device Firmware Update mode)
> +	030c  Truly Ergonomic Computer Keyboard
> +	6001  GEMBIRD Flexible keyboard KB-109F-B-DE
> +	7f5c  BPF-015 Key Chain Photo Frame
> +0e6f  Logic3
> +	0003  Freebird wireless Controller
> +	0005  Eclipse wireless Controller
> +	0006  Edge wireless Controller
> +	0008  After Glow Pro Controller
> +	0105  Disney's High School Musical 3 Dance Pad for Xbox 360
> +	0113  Afterglow AX.1 Gamepad
> +	011f  Rock Candy Wired Controller for Xbox 360
> +	0128  Wireless PS3 Controller
> +	0131  PDP EA Sports Controller
> +	0133  Wired Controller
> +	0139  Afterglow Prismatic Wired Controller for Xbox One
> +	013a  PDP Xbox One Controller
> +	0146  Rock Candy Wired Controller for Xbox One
> +	0147  PDP Marvel Controller for Xbox One
> +	015c  PDP Arcade Stick for Xbox One
> +	0161  Camo Wired Controller for Xbox One
> +	0162  Xbox One Wired Controller
> +	0163  Legendary Collection Deliverer of Truth
> +	0164  Battlefield 1 Wired Controller for Xbox One
> +	0165  Titanfall 2 Wired Controller for Xbox One
> +	0201  Pelican PL-3601
> +	0213  Afterglow Gamepad for Xbox 360
> +	021f  Rock Candy Gamepad for Xbox 360
> +	0246  Rock Candy Gamepad for Xbox One
> +	0301  Controller
> +	0346  Rock Candy Wired Controller for Xbox One
> +	0401  Controller
> +	0413  Afterglow AX.1 Gamepad for Xbox 360
> +	0501  Wired Controller
> +	f501  Hi-TEC Essentials Wired Gamepad
> +	f900  Afterglow AX.1
> +0e70  Tokyo Electronic Industry Co., Ltd
> +0e72  Hsi-Chin Electronics Co., Ltd
> +0e75  TVS Electronics, Ltd
> +0e79  Archos, Inc.
> +	1106  Pocket Media Assistant - PMA400
> +	1204  Gmini XS 200
> +	1306  504 Portable Multimedia Player
> +	1330  5 Tablet
> +	1332  5 IMT
> +	1416  32 IT
> +	1417  A43 IT
> +	14ad  97 Titanium HD
> +	150e  80 G9
> +	3001  40 Titanium
> +0e7b  On-Tech Industry Co., Ltd
> +0e7e  Gmate, Inc.
> +	0001  Yopy 3000 PDA
> +	1001  YP3X00 PDA
> +0e82  Ching Tai Electric Wire & Cable Co., Ltd
> +0e83  Shin An Wire & Cable Co.
> +0e8c  Well Force Electronic Co., Ltd
> +0e8d  MediaTek Inc.
> +	0002  phone (mass storage mode) [Doro Primo 413]
> +	0003  MT6227 phone
> +	0004  MT6227 phone
> +	0023  S103 / Powertel M6200
> +	00a5  GSM modem [Medion Surfstick Model:S4222]
> +	1806  Samsung SE-208 Slim Portable DVD Writer
> +	1836  Samsung SE-S084 Super WriteMaster Slim External DVD writer
> +	1887  Slim Portable DVD Writer
> +	1956  Samsung SE-506 Portable BluRay Disc Writer
> +	2000  MT65xx Preloader
> +	2008  Cyrus Technology CS 24
> +	3329  Qstarz BT-Q1000XT
> +	7612  MT7612U 802.11a/b/g/n/ac Wireless Adapter
> +	763e  MT7630e Bluetooth Adapter
> +	7668  MT7668 2x2 Dual Band Dual Concurrent 802.11a/b/g/n/ac WiFi with MU-MIMO and Bluetooth 5.0 Radios
> +0e8f  GreenAsia Inc.
> +	0003  MaxFire Blaze2
> +	0012  Joystick/Gamepad
> +	0016  4 port USB 1.1 hub UH-174
> +	0020  USB to PS/2 Adapter
> +	0021  Multimedia Keyboard Controller
> +	0022  multimedia keyboard controller
> +	0201  SmartJoy Frag Xpad/PS2 adaptor
> +	3008  Xbox Controller
> +	300a  steering Wheel
> +0e90  WiebeTech, LLC
> +	0100  Storage Adapter V1
> +0e91  VTech Engineering Canada, Ltd
> +0e92  C's Glory Enterprise Co., Ltd
> +0e93  eM Technics Co., Ltd
> +0e95  Future Technology Co., Ltd
> +0e96  Aplux Communications, Ltd
> +	c001  TRUST 380 USB2 SPACEC@M
> +0e97  Fingerworks, Inc.
> +	0908  Composite HID (Keyboard and Mouse)
> +0e98  Advanced Analogic Technologies, Inc.
> +0e99  Parallel Dice Co., Ltd
> +0e9a  TA HSING Industries, Ltd
> +0e9b  ADTEC Corp.
> +0e9c  Streamzap, Inc.
> +	0000  Streamzap Remote Control
> +0e9f  Tamura Corp.
> +0ea0  Ours Technology, Inc.
> +	2126  7-in-1 Card Reader
> +	2153  SD Card Reader Key
> +	2168  Transcend JetFlash 2.0 / Astone USB Drive / Intellegent Stick 2.0
> +	2213  WinDroid N287 AH7N2502.013317
> +	6803  OTI-6803 Flash Disk
> +	6808  OTI-6808 Flash Disk
> +	6828  OTI-6828 Flash Disk
> +	6858  OTi-6858 serial adapter
> +0ea6  Nihon Computer Co., Ltd
> +0ea7  MSL Enterprises Corp.
> +0ea8  CenDyne, Inc.
> +0ead  Humax Co., Ltd
> +0eb0  NovaTech
> +	9020  NovaTech NV-902W
> +	9021  RT2573
> +0eb1  WIS Technologies, Inc.
> +	6666  WinFast WalkieTV TV Loader
> +	6668  WinFast WalkieTV TV Loader
> +	7007  WinFast WalkieTV WDM Capture
> +0eb2  Y-S Electronic Co., Ltd
> +0eb3  Saint Technology Corp.
> +0eb7  Endor AG
> +0eb8  Mettler Toledo
> +	2200  Ariva Scale
> +	f000  BC60 Scale
> +0ebb  Thermo Fisher Scientific
> +	0002  FT-IR Spectrometer
> +0ebe  VWeb Corp.
> +0ebf  Omega Technology of Taiwan, Inc.
> +0ec0  LHI Technology (China) Co., Ltd
> +0ec1  Abit Computer Corp.
> +0ec2  Sweetray Industrial, Ltd
> +0ec3  Axell Co., Ltd
> +0ec4  Ballracing Developments, Ltd
> +0ec5  GT Information System Co., Ltd
> +0ec6  InnoVISION Multimedia, Ltd
> +0ec7  Theta Link Corp.
> +	1008  So., Show 301 Digital Camera
> +0ecd  Lite-On IT Corp.
> +	1400  CD\RW 40X
> +	a100  LDW-411SX DVD/CD Rewritable Drive
> +0ece  TaiSol Electronics Co., Ltd
> +0ecf  Phogenix Imaging, LLC
> +0ed1  WinMaxGroup
> +	6660  Flash Disk 64M-C
> +	6680  Flash Disk 64M-B
> +	7634  MP3 Player
> +0ed2  Kyoto Micro Computer Co., Ltd
> +0ed3  Wing-Tech Enterprise Co., Ltd
> +0ed5  Fiberbyte
> +	e000  USB-inSync Device
> +	f000  Fiberbyte USB-inSync Device
> +	f201  Fiberbyte USB-inSync DAQ-2500X
> +0eda  Noriake Itron Corp.
> +0edf  e-MDT Co., Ltd
> +	2060  FID irock! 100 Series
> +0ee0  Shima Seiki Mfg., Ltd
> +0ee1  Sarotech Co., Ltd
> +0ee2  AMI Semiconductor, Inc.
> +0ee3  ComTrue Technology Corp.
> +	1000  Image Tank 1.5
> +0ee4  Sunrich Technology, Ltd
> +	0690  SATA 3 Adapter
> +0eee  Digital Stream Technology, Inc.
> +	8810  Mass Storage Drive
> +0eef  D-WAV Scientific Co., Ltd
> +	0001  Titan6001 Surface Acoustic Wave Touchscreen Controller [eGalax]
> +	0002  Touchscreen Controller(Professional)
> +	7200  Touchscreen Controller
> +	7904  Multitouch Capacitive Touchscreen eGalaxTouch EXC7904-21v00_T13 [IIyama Prolite T1932-MSC]
> +	a802  eGalaxTouch EXC7920
> +	b10e  eGalaxTouch EXC3000
> +	c000  Multitouch Capacitive Touchscreen eGalaxTouch EXC3188-4643-08.00.00.00 Sirius_4643 PCAP3188UR Series [IIyama Prolite PLT1932MSC]
> +0ef0  Hitachi Cable, Ltd
> +0ef1  Aichi Micro Intelligent Corp.
> +0ef2  I/O Magic Corp.
> +0ef3  Lynn Products, Inc.
> +0ef4  DSI Datotech
> +0ef5  PointChips
> +	2202  Flash Disk
> +	2366  Flash Disk
> +0ef6  Yield Microelectronics Corp.
> +0ef7  SM Tech Co., Ltd (Tulip)
> +0efd  Oasis Semiconductor
> +0efe  Wem Technology, Inc.
> +0f03  Unitek UPS Systems
> +	0001  Alpha 1200Sx
> +0f06  Visual Frontier Enterprise Co., Ltd
> +0f08  CSL Wire & Plug (Shen Zhen) Co.
> +0f0c  CAS Corp.
> +0f0d  Hori Co., Ltd
> +	000a  Dead or Alive 4 FightStick for Xbox 360
> +	000c  Horipad EX Turbo for Xbox 360
> +	000d  Fighting Stick EX2 for Xbox 360
> +	0011  Real Arcade Pro 3
> +	0016  Real Arcade Pro.EX for Xbox 360
> +	001b  Real Aracde Pro.VX
> +	0063  Real Arcade Pro Hayabusa for Xbox One
> +	0067  Horipad One
> +	0078  Real Arcade Pro V Kai for Xbox One / Xbox 360
> +	0090  Horipad Ultimate
> +	00c1  HORIPAD for Nintendo Switch
> +0f0e  Energy Full Corp.
> +0f0f  Silego Technology Inc
> +	0006  GreenPak Universal Dev Board (Active Mode)
> +	8006  GreenPak Universal Dev Board (Reset Mode)
> +0f11  LD Didactic GmbH
> +	1000  CASSY-S
> +	1010  Pocket-CASSY
> +	1020  Mobile-CASSY
> +	1080  Joule and Wattmeter
> +	1081  Digital Multimeter P
> +	1090  UMI P
> +	1100  X-Ray Apparatus
> +	1101  X-Ray Apparatus
> +	1200  VideoCom
> +	2000  COM3LAB
> +	2010  Terminal Adapter
> +	2020  Network Analyser
> +	2030  Converter Control Unit
> +	2040  Machine Test System
> +0f12  Mars Engineering Corp.
> +0f13  Acetek Technology Co., Ltd
> +0f14  Ingenico
> +	0012  Vital'Act 3S
> +	0038  XIRING Smart Card Terminal LEO V2
> +0f18  Finger Lakes Instrumentation
> +	0002  CCD
> +	0006  Focuser
> +	0007  Filter Wheel
> +	000a  ProLine CCD
> +	000b  Color Filter Wheel 4
> +	000c  PDF2
> +	000d  Guider
> +0f19  Oracom Co., Ltd
> +0f1b  Onset Computer Corp.
> +0f1c  Funai Electric Co., Ltd
> +0f1d  Iwill Corp.
> +0f21  IOI Technology Corp.
> +0f22  Senior Industries, Inc.
> +0f23  Leader Tech Manufacturer Co., Ltd
> +0f24  Flex-P Industries, Snd., Bhd.
> +0f2d  ViPower, Inc.
> +0f2e  Geniality Maple Technology Co., Ltd
> +0f2f  Priva Design Services
> +0f30  Jess Technology Co., Ltd
> +	001c  PS3 Guitar Controller Dongle
> +	010b  Philips Recoil
> +	0110  Dual Analog Rumble Pad
> +	0111  Colour Rumble Pad
> +	0202  Joytech Advanced Controller
> +	0208  Xbox & PC Gamepad
> +	8888  BigBen XBMiniPad Controller
> +0f31  Chrysalis Development
> +0f32  YFC-BonEagle Electric Co., Ltd
> +0f37  Kokuyo Co., Ltd
> +0f38  Nien-Yi Industrial Corp.
> +0f39  TG3 Electronics
> +	0404  Recreated ZX Spectrum Keyboard
> +	0876  Keyboard [87 Francium Pro]
> +	1086  DK2108SZ Keyboard [Ducky Zero]
> +0f3d  Airprime, Incorporated
> +	0112  CDMA 1xEVDO PC Card, PC 5220
> +0f41  RDC Semiconductor Co., Ltd
> +0f42  Nital Consulting Services, Inc.
> +0f44  Polhemus
> +	ef11  Patriot (firmware not loaded)
> +	ef12  Patriot
> +	ff11  Liberty (firmware not loaded)
> +	ff12  Liberty
> +0f49  Evolis SA
> +	0a00  Zenius
> +0f4b  St. John Technology Co., Ltd
> +0f4c  WorldWide Cable Opto Corp.
> +0f4d  Microtune, Inc.
> +	1000  Bluetooth Dongle
> +0f4e  Freedom Scientific
> +0f52  Wing Key Electrical Co., Ltd
> +0f53  Dongguan White Horse Cable Factory, Ltd
> +0f54  Kawai Musical Instruments Mfg. Co., Ltd
> +	0101  MP6 Stage Piano
> +0f55  AmbiCom, Inc.
> +0f5c  Prairiecomm, Inc.
> +0f5d  NewAge International, LLC
> +	9455  Compact Drive
> +0f5f  Key Technology Corp.
> +0f60  NTK, Ltd
> +0f61  Varian, Inc.
> +0f62  Acrox Technologies Co., Ltd
> +	1001  Targus Mini Trackball Optical Mouse
> +0f63  LeapFrog Enterprises
> +	0010  Leapster Explorer
> +	0022  Leap Reader
> +	0500  Fly Fusion
> +	0600  Leap Port Turbo
> +	0700  POGO
> +	0800  Didj
> +	0900  TAGSchool
> +	0a00  Leapster 2
> +	0b00  Crammer
> +	0c00  Tag Jr
> +	0d00  My Pal Scout
> +	0e00  Tag32
> +	0f00  Tag64
> +	1000  Kiwi16
> +	1100  Leapster L2x
> +	1111  Fly Fusion
> +	1300  Didj UK/France (Leapster Advance)
> +0f68  Kobe Steel, Ltd
> +0f69  Dionex Corp.
> +0f6a  Vibren Technologies, Inc.
> +0f6e  INTELLIGENT SYSTEMS
> +	0100  IS-CGB-EMULATOR
> +	0201  GameBoy Advance Flash Gang Writer
> +	0202  IS-AGB-CAPTURE
> +	0300  IS-DOL-VIEWER
> +	0400  IS-NITRO-EMULATOR
> +	0401  IS-NITRO-UIC
> +	0402  IS-NITRO-WRITER
> +	0403  IS-NITRO-CAPTURE
> +	0404  IS-NITRO-EMULATOR (DS Lite)
> +	0500  IS-TWL-DEBUGGER
> +	0501  IS-TWL-CAPTURE
> +0f73  DFI
> +0f78  Guntermann & Drunck GmbH
> +0f7c  DQ Technology, Inc.
> +0f7d  NetBotz, Inc.
> +0f7e  Fluke Corp.
> +0f88  VTech Holdings, Ltd
> +	3012  RT2570
> +	3014  ZD1211B
> +0f8b  Yazaki Corp.
> +0f8c  Young Generation International Corp.
> +0f8d  Uniwill Computer Corp.
> +0f8e  Kingnet Technology Co., Ltd
> +0f8f  Soma Networks
> +0f97  CviLux Corp.
> +0f98  CyberBank Corp.
> +0f9c  Hyun Won, Inc.
> +	0301  M-Any Premium DAH-610 MP3/WMA Player
> +	0332  mobiBLU DAH-1200 MP3/Ogg Player
> +0f9e  Lucent Technologies
> +0fa3  Starconn Electronic Co., Ltd
> +0fa4  ATL Technology
> +0fa5  Sotec Co., Ltd
> +0fa7  Epox Computer Co., Ltd
> +0fa8  Logic Controls, Inc.
> +0faf  Winpoint Electronic Corp.
> +0fb0  Haurtian Wire & Cable Co., Ltd
> +0fb1  Inclose Design, Inc.
> +0fb2  Juan-Chern Industrial Co., Ltd
> +0fb6  Heber Ltd
> +	3fc3  Firefly X10i I/O Board (with firmware)
> +	3fc4  Firefly X10i I/O Board (without firmware)
> +0fb8  Wistron Corp.
> +	0002  eHome Infrared Receiver
> +0fb9  AACom Corp.
> +0fba  San Shing Electronics Co., Ltd
> +0fbb  Bitwise Systems, Inc.
> +0fc1  Mitac Internatinal Corp.
> +0fc2  Plug and Jack Industrial, Inc.
> +0fc5  Delcom Engineering
> +	1222  I/O Development Board
> +0fc6  Dataplus Supplies, Inc.
> +0fca  Research In Motion, Ltd.
> +	0001  Blackberry Handheld
> +	0004  Blackberry Handheld
> +	0006  Blackberry Pearl
> +	0008  Blackberry Pearl
> +	8001  Blackberry Handheld
> +	8004  Blackberry
> +	8007  Blackberry Handheld
> +	8010  Blackberry Playbook (Connect to Windows mode)
> +	8011  Blackberry Playbook (Connect to Mac mode)
> +	8014  Blackberry Handheld Z30
> +	8020  Blackberry Playbook (CD-Rom mode)
> +	8037  Blackberry PRIV
> +0fce  Sony Ericsson Mobile Communications AB
> +	0076  W910i (Multimedia mode)
> +	00af  V640i Phone [PTP Camera]
> +	00d4  C902 [MTP]
> +	00d9  C702 Phone
> +	0112  W995 Walkman Phone
> +	014e  J108i Cedar (MTP mode)
> +	015a  Xperia Pro [Media Transfer Protocol]
> +	0166  Xperia Mini Pro
> +	0167  ST15i (Xperia mini)
> +	0169  Xperia S
> +	0172  Xperia P
> +	0177  Xperia Ion [Mass Storage]
> +	0188  ST26i
> +	019c  C6833
> +	019e  C6903
> +	01a5  SO-04F
> +	01a7  D5503
> +	01ba  D6603 [Xperia Z3]
> +	01bb  D5803 [Xperia Z3 Compact] (MTP mode)
> +	01e0  F5122 [Xperia X dual] (MTP mode)
> +	01e8  F5321 [Xperia X Compact] (MTP mode)
> +	01f9  H8314 [Xperia XZ2 Compact]
> +	1010  WMC Modem
> +	10af  V640i Phone [PictBridge]
> +	10d4  C902 Phone [PictBridge]
> +	2105  W715 Phone
> +	2137  Xperia X10 mini (USB debug)
> +	2138  Xperia X10 mini pro (Debug)
> +	2149  Xperia X8 (debug)
> +	214e  J108i Cedar (Windows-driver mode)
> +	3137  Xperia X10 mini
> +	3138  Xperia X10 mini pro
> +	3149  Xperia X8
> +	514f  Xperia arc S [Adb-Enable Mode]
> +	5169  Xperia S [Adb-Enable Mode]
> +	5177  Xperia Ion [Debug Mode]
> +	518c  C1605 [Xperia E dual] MTD mode
> +	51a7  D5503 (Xperia Z1 Compact)
> +	51e0  F5122 [Xperia X dual] (developer mode)
> +	614f  Xperia X12 (debug mode)
> +	6166  Xperia Mini Pro
> +	618c  C1605 [Xperia E dual] MSC mode
> +	715a  Xperia Pro [Tethering]
> +	7166  Xperia Mini Pro (Tethering mode)
> +	7177  Xperia Ion [Tethering]
> +	71f4  G8441 (Xperia XZ1 Compact) [Tethering]
> +	71f9  H8314 [Xperia XZ2 Compact] (Tethering)
> +	8004  9000 Phone [Mass Storage]
> +	81f4  G8441 (Xperia XZ1 Compact) [Tethering]
> +	adde  C2005 (Xperia M dual) in service mode
> +	c1e0  F5122 [Xperia X dual] (MIDI mode)
> +	c1e8  F5321 [Xperia X Compact] (MIDI mode)
> +	c1f9  H8314 [Xperia XZ2 Compact] (MIDI)
> +	d008  V800-Vodafone 802SE Phone
> +	d016  K750i Phone
> +	d017  K608i Phone
> +	d019  VDC EGPRS Modem
> +	d025  520 WMC Data Modem
> +	d028  W800i
> +	d038  W850i Phone
> +	d039  K800i (phone mode)
> +	d041  K510i Phone
> +	d042  W810i Phone
> +	d043  V630i Phone
> +	d046  K610i Phone
> +	d065  W960i Phone (PC Suite)
> +	d076  W910i (Phone mode)
> +	d079  K530 Phone
> +	d089  W580i Phone (mass storage)
> +	d0a1  K810
> +	d0af  V640i Phone
> +	d0cf  MD300 Mobile Broadband Modem
> +	d0d4  C902 Phone [Modem]
> +	d0e1  MD400 Mobile Broadband Modem
> +	d12a  U100i Yari Phone
> +	d12e  Xperia X10
> +	d14e  J108i Cedar (modem mode)
> +	e000  K810 (PictBridge mode)
> +	e039  K800i (msc mode)
> +	e042  W810i Phone
> +	e043  V630i Phone [Mass Storage]
> +	e075  K850i
> +	e076  W910i (Mass storage)
> +	e089  W580i Phone
> +	e090  W200 Phone (Mass Storage)
> +	e0a1  K810 (Mass Storage mode)
> +	e0a3  W660i
> +	e0af  V640i Phone [Mass Storage]
> +	e0d4  C902 Phone [Mass Storage] 
> +	e0ef  C905 Phone [Mass Storage]
> +	e0f3  W595
> +	e105  W705
> +	e112  W995 Phone (Mass Storage)
> +	e12e  X10i Phone
> +	e133  Vivaz
> +	e14e  J108i Cedar (mass-storage mode)
> +	e14f  Xperia Arc/X12
> +	e15a  Xperia Pro [Mass Storage Class]
> +	e161  Xperia Ray
> +	e166  Xperia Mini Pro
> +	e167  XPERIA mini
> +	e19b  C2005 [Xperia M dual] (Mass Storage)
> +	e1a9  D5303
> +	e1aa  D2303
> +	e1ad  D5103
> +	e1b0  D6708
> +	e1b5  D2004
> +	e1ba  D6683
> +	e1bb  SO-02G
> +	e1bc  D2203
> +	e1c0  SGP621
> +	e1c2  D2533
> +	e1c9  E6553
> +	e1cf  SGP771
> +	f0fa  MN800 / Smartwatch 2 (DFU mode)
> +0fcf  Dynastream Innovations, Inc.
> +	1003  ANT Development Board
> +	1004  ANTUSB Stick
> +	1006  ANT Development Board
> +	1008  ANTUSB2 Stick
> +	1009  ANTUSB-m Stick
> +0fd0  Tulip Computers B.V.
> +0fd1  Giant Electronics Ltd.
> +0fd2  Seac Banche
> +	0001  RDS 6000
> +0fd4  Tenovis GmbH & Co., KG
> +0fd5  Direct Access Technology, Inc.
> +0fd9  Elgato Systems GmbH
> +	0011  EyeTV Diversity
> +	0018  EyeTV Hybrid
> +	0020  EyeTV DTT Deluxe
> +	0021  EyeTV DTT
> +	002a  EyeTV Sat
> +	002c  EyeTV DTT Deluxe v2
> +	0033  Video Capture
> +	0037  Video Capture v2
> +	0060  Stream Deck
> +	0063  Stream Deck Mini
> +	006c  Stream Deck XL
> +	006d  Stream Deck original V2
> +0fda  Quantec Networks GmbH
> +	0100  quanton flight control
> +0fdc  Micro Plus
> +0fde  Oregon Scientific
> +	ca01  WMRS200 weather station
> +	ca05  CM160
> +	ca08  WMR300 Professional Weather System
> +0fe0  Osterhout Design Group
> +	0100  Bluetooth Mouse
> +	0101  Bluetooth IMU
> +	0200  Bluetooth Keypad
> +0fe2  Air Techniques
> +0fe4  IN-Tech Electronics, Ltd
> +0fe5  Greenconn (U.S.A.), Inc.
> +0fe6  ICS Advent
> +	8101  DM9601 Fast Ethernet Adapter
> +	811e  Parallel Adapter
> +	9700  DM9601 Fast Ethernet Adapter
> +0fe9  DVICO
> +	4020  TViX M-6500
> +	9010  FusionRemote IR receiver
> +	db00  FusionHDTV DVB-T (MT352+LgZ201) (uninitialized)
> +	db01  FusionHDTV DVB-T (MT352+LgZ201) (initialized)
> +	db10  FusionHDTV DVB-T (MT352+Thomson7579) (uninitialized)
> +	db11  FusionHDTV DVB-T (MT352+Thomson7579) (initialized)
> +	db78  FusionHDTV DVB-T Dual Digital 4 (ZL10353+xc2028/xc3028) (initialized)
> +0fea  United Computer Accessories
> +0feb  CRS Electronic Co., Ltd
> +0fec  UMC Electronics Co., Ltd
> +0fed  Access Co., Ltd
> +0fee  Xsido Corp.
> +0fef  MJ Research, Inc.
> +0ff6  Core Valley Co., Ltd
> +0ff7  CHI SHING Computer Accessories Co., Ltd
> +0ffc  Clavia DMI AB
> +	0021  Nord Stage 2
> +	002a  Nord Piano 4
> +0ffd  EarlySense
> +	ff00  OEM
> +0fff  Aopen, Inc.
> +1000  Speed Tech Corp.
> +	153b  TerraTec Electronic GmbH
> +1001  Ritronics Components (S) Pte., Ltd
> +1003  Sigma Corp.
> +	0003  SD14
> +	0100  SD9/SD10
> +	8781  Dock UD-01
> +1004  LG Electronics, Inc.
> +	1fae  U8120 3G Cellphone
> +	6000  Various Mobile Phones
> +	6005  T5100
> +	6018  GM360/GD510/GW520/KP501
> +	618e  Ally/Optimus One/Vortex (debug mode)
> +	618f  Ally/Optimus One
> +	61c5  P880 / Charge only
> +	61c6  Vortex (msc)
> +	61cc  Optimus S
> +	61da  G2 Android Phone [tethering mode]
> +	61f1  Optimus Android Phone [LG Software mode]
> +	61f9  Optimus (Various Models) MTP Mode
> +	61fc  Optimus 3
> +	61fe  Optimus Android Phone [USB tethering mode]
> +	627f  G3 (VS985) Android Phone (MTP/Download mode)
> +	6300  G2/Optimus Android Phone [Charge mode]
> +	631c  LM-X420xxx/G2/Optimus Android Phone (charge mode)
> +	631d  Optimus Android Phone (Camera/PTP Mode)
> +	631e  LM-X420xxx/G2/Optimus Android Phone (PTP/camera mode)
> +	631f  Optimus Android Phone (Charge Mode)
> +	633a  Ultimate 2 Android Phone L41C
> +	633e  LM-X420xxx/G2/G3 Android Phone (MTP/download mode)
> +	6344  LM-X420xxx/G2 Android Phone (USB tethering mode)
> +	6348  LM-X420xxx Android Phone (MIDI mode)
> +	6356  Optimus Android Phone [Virtual CD mode]
> +	6800  CDMA Modem
> +	7000  LG LDP-7024D(LD)USB
> +	91c8  P880 / USB tethering
> +	a400  Renoir (KC910)
> +1005  Apacer Technology, Inc.
> +	1001  MP3 Player
> +	1004  MP3 Player
> +	1006  MP3 Player
> +	b113  Handy Steno/AH123 / Handy Steno 2.0/HT203
> +	b155  Disk Module
> +	b223  CD-RW + 6in1 Card Reader Digital Storage / Converter
> +1006  iRiver, Ltd.
> +	3001  iHP-100
> +	3002  iHP-120/140 MP3 Player
> +	3003  H320/H340
> +	3004  H340 (mtp)
> +1009  Emuzed, Inc.
> +	000e  eHome Infrared Receiver
> +	0013  Angel MPEG Device
> +	0015  Lumanate Wave PAL SECAM DVBT Device
> +	0016  Lumanate Wave NTSC/ATSC Combo Device
> +100a  AV Chaseway, Ltd
> +	2402  MP3 Player
> +	2404  MP3 Player
> +	2405  MP3 Player
> +	2406  MP3 Player
> +	a0c0  MP3 Player
> +100b  Chou Chin Industrial Co., Ltd
> +100d  Netopia, Inc.
> +	3342  Cayman 3352 DSL Modem
> +	3382  3380 Series Network Interface
> +	6072  DSL Modem
> +	9031  Motorola 802.11n Dualband USB Wireless Adapter
> +	9032  Motorola 802.11n 5G USB Wireless Adapter
> +	cb01  Cayman 3341 Ethernet DSL Router
> +1010  Fukuda Denshi Co., Ltd
> +1011  Mobile Media Tech.
> +	0001  AccFast Mp3
> +1012  SDKM Fibres, Wires & Cables Berhad
> +1013  TST-Touchless Sensor Technology AG
> +1014  Densitron Technologies PLC
> +1015  Softronics Pty., Ltd
> +1016  Xiamen Hung's Enterprise Co., Ltd
> +1017  Speedy Industrial Supplies, Pte., Ltd
> +	9015  M625 [Vendor: DELUX]
> +1019  Elitegroup Computer Systems (ECS)
> +	0c55  Flash Reader, Desknote UCR-61S2B
> +	0f38  Infrared Receiver
> +1020  Labtec
> +	0006  Wireless Keyboard
> +	000a  Wireless Optical Mouse
> +	0106  Wireless Optical Mouse/Keyboard
> +1022  Shinko Shoji Co., Ltd
> +1025  Hyper-Paltek
> +	005e  USB DVB-T device
> +	005f  USB DVB-T device
> +	0300  MP3 Player
> +	0350  MP3 Player
> +1026  Newly Corp.
> +1027  Time Domain
> +1028  Inovys Corp.
> +1029  Atlantic Coast Telesys
> +102a  Ramos Technology Co., Ltd
> +102b  Infotronic America, Inc.
> +102c  Etoms Electronics Corp.
> +	6151  Q-Cam Sangha CIF
> +	6251  Q-Cam VGA
> +	ff0c  Joytech Wireless Advanced Controller
> +102d  Winic Corp.
> +1031  Comax Technology, Inc.
> +1032  C-One Technology Corp.
> +1033  Nucam Corp.
> +	0068  3,5'' HDD case MD-231
> +1038  SteelSeries ApS
> +	0100  Ideazon Zboard
> +	1260  Arctis 7 wireless adapter
> +	1361  Ideazon Sensei
> +	1410  SRW-S1 [Simraceway Steering Wheel]
> +	1720  Mouse
> +1039  devolo AG
> +	0824  1866 802.11bg [Texas Instruments TNETW1450]
> +	2140  dsl+ 1100 duo
> +103a  PSA
> +	f000  Actia Evo XS
> +103d  Stanton
> +	0100  ScratchAmp
> +	0101  ScratchAmp
> +1043  iCreate Technologies Corp.
> +	160f  Wireless Network Adapter
> +	4901  AV-836 Video Capture Device
> +	8006  Flash Disk 32-256 MB
> +	8012  Flash Disk 256 MB
> +1044  Chu Yuen Enterprise Co., Ltd
> +	7001  Gigabyte U7000 DVB-T tuner
> +	7002  Gigabyte U8000 DVB-T tuner
> +	7004  Gigabyte U7100 DVB-T tuner
> +	7005  Gigabyte U7200 DVB-T tuner [AF9035]
> +	7006  Gigabyte U6000 DVB-T tuner [em2863]
> +	8001  GN-54G
> +	8002  GN-BR402W
> +	8003  GN-WLBM101
> +	8004  GN-WLBZ101 802.11b Adapter
> +	8005  GN-WLBZ201 802.11b Adapter
> +	8006  GN-WBZB-M 802.11b Adapter
> +	8007  GN-WBKG
> +	8008  GN-WB01GS
> +	800a  GN-WI05GS
> +	800b  GN-WB30N 802.11n WLAN Card
> +	800c  GN-WB31N 802.11n USB WLAN Card
> +	800d  GN-WB32L 802.11n USB WLAN Card
> +1046  Winbond Electronics Corp. [hex]
> +	6694  Generic W6694 USB
> +	8901  Bluetooth Device
> +	9967  W9967CF/W9968CF Webcam IC
> +1048  Targus Group International
> +	2010  4-Port hub
> +104b  Mylex / Buslogic
> +104c  AMCO TEC International, Inc.
> +104d  Newport Corporation
> +	1003  Model-52 LED Light Source Power Supply and Driver
> +	3001  ESP301 3 Axis Motion Controller
> +104f  WB Electronics
> +	0001  Infinity Phoenix
> +	0002  Smartmouse
> +	0003  FunProgrammer
> +	0004  Infinity Unlimited
> +	0006  Infinity Smart
> +	0007  Infinity Smart module
> +	0008  Infinity CryptoKey
> +	0009  RE-BL PlayStation 3 IR-to-Bluetooth converter
> +1050  Yubico.com
> +	0010  Yubikey (v1 or v2)
> +	0110  Yubikey NEO(-N) OTP
> +	0111  Yubikey NEO(-N) OTP+CCID
> +	0112  Yubikey NEO(-N) CCID
> +	0113  Yubikey NEO(-N) U2F
> +	0114  Yubikey NEO(-N) OTP+U2F
> +	0115  Yubikey NEO(-N) U2F+CCID
> +	0116  Yubikey NEO(-N) OTP+U2F+CCID
> +	0120  Yubikey Touch U2F Security Key
> +	0200  Gnubby U2F
> +	0211  Gnubby
> +	0401  Yubikey 4/5 OTP
> +	0402  Yubikey 4/5 U2F
> +	0403  Yubikey 4/5 OTP+U2F
> +	0404  Yubikey 4/5 CCID
> +	0405  Yubikey 4/5 OTP+CCID
> +	0406  Yubikey 4/5 U2F+CCID
> +	0407  Yubikey 4/5 OTP+U2F+CCID
> +	0410  Yubikey plus OTP+U2F
> +1053  Immanuel Electronics Co., Ltd
> +1054  BMS International Beheer N.V.
> +	5004  DSL 7420 Loader
> +	5005  DSL 7420 LAN Modem
> +1055  Complex Micro Interconnection Co., Ltd
> +1056  Hsin Chen Ent Co., Ltd
> +1057  ON Semiconductor
> +1058  Western Digital Technologies, Inc.
> +	0200  FireWire USB Combo
> +	0400  External HDD
> +	0500  hub
> +	0701  WD Passport (WDXMS)
> +	0702  WD Passport (WDXMS)
> +	0704  My Passport Essential (WDME)
> +	0705  My Passport Elite (WDML)
> +	070a  My Passport Essential (WDBAAA), My Passport for Mac (WDBAAB), My Passport Essential SE (WDBABM), My Passport SE for Mac (WDBABW)
> +	070b  My Passport Elite (WDBAAC)
> +	070c  My Passport Studio (WDBAAE)
> +	071a  My Passport Essential (WDBAAA)
> +	071d  My Passport Studio (WDBALG)
> +	0730  My Passport Essential (WDBACY)
> +	0732  My Passport Essential SE (WDBGYS)
> +	0740  My Passport Essential (WDBACY)
> +	0741  My Passport Ultra
> +	0742  My Passport Essential SE (WDBGYS)
> +	0748  My Passport (WDBKXH, WDBY8L)
> +	07a8  My Passport (WDBBEP), My Passport for Mac (WDBLUZ)
> +	07ae  My Passport Edge for Mac (WDBJBH)
> +	07ba  PiDrive (WDLB)
> +	0810  My Passport Ultra (WDBZFP)
> +	0816  My Passport Air (WDBBLW)
> +	0820  My Passport Ultra (WDBMWV, WDBZFP)
> +	0822  My Passport Ultra (WDBBUZ)
> +	0824  My Passport Slim (WDBPDZ)
> +	0830  My Passport Ultra (WDBZFP)
> +	0837  My Passport Ultra (WDBBKD)
> +	0900  MyBook Essential External HDD
> +	0901  My Book Essential Edition (Green Ring) (WDG1U)
> +	0902  My Book Pro Edition (WDG1T)
> +	0903  My Book Premium Edition
> +	0905  My Book Pro Edition II (WD10000C033-001)
> +	0910  My Book Essential Edition (Green Ring) (WDG1U)
> +	1001  Elements Desktop (WDE1U)
> +	1003  WD Elements Desktop (WDE1UBK)
> +	1010  Elements Portable (WDBAAR)
> +	1021  Elements Desktop (WDBAAU)
> +	1023  Elements SE Portable (WDBABV)
> +	1042  Elements SE Portable (WDBPCK)
> +	1048  Elements Portable (WDBU6Y)
> +	1078  Elements Portable (WDBUZG)
> +	107c  Elements Desktop (WDBWLG)
> +	10a2  Elements SE Portable (WDBPCK)
> +	10a8  Elements Portable (WDBUZG)
> +	10b8  Elements Portable (WDBU6Y, WDBUZG)
> +	1100  My Book Essential Edition 2.0 (WDH1U)
> +	1102  My Book Home Edition (WDH1CS)
> +	1103  My Book Studio
> +	1104  My Book Mirror Edition (WDH2U)
> +	1105  My Book Studio II
> +	1110  My Book Essential (WDBAAF), My Book for Mac (WDBAAG)
> +	1111  My Book Elite (WDBAAH)
> +	1112  My Book Studio (WDBAAJ), My Book Studio LX (WDBACH)
> +	1123  My Book 3.0 (WDBABP)
> +	1130  My Book Essential (WDBACW)
> +	1140  My Book Essential (WDBACW)
> +	1170  My Book Essential 3TB (WDBACW0030HBK)
> +	1230  My Book (WDBFJK)
> +	1235  My Book (WDBFJK0040HBK)
> +	2599  My Passport Ultra (WD40NMZW)
> +	259d  My Passport Ultra (WDBBKD)
> +	259f  My Passport Ultra (WD10JMVW)
> +	25a1  Elements / My Passport
> +	25a2  Elements 25A2
> +	25a3  Elements Desktop (WDBWLG)
> +	25da  My Book (WDBFJK)
> +	25e1  My Passport (WD20NMVW)
> +	25e2  My Passport (WD40NMZW)
> +	25ee  My Book 25EE
> +	25f3  My Passport SSD (WDBK3E)
> +	25fa  easystore Portable 5TB (WDBKUZ0050)
> +	25fb  easystore Desktop (WDBCKA)
> +	2603  My Passport Game Storage for PS4 4TB (WDBZGE0040)
> +	2624  easystore Portable 5TB (WDBKUZ0050)
> +	2626  My Passport (WDBPKJ)
> +	30a0  SATA adapter cable
> +1059  Giesecke & Devrient GmbH
> +	000b  StarSign Bio Token 3.0
> +105b  Foxconn International, Inc.
> +	e065  BCM43142A0 Bluetooth module
> +105c  Hong Ji Electric Wire & Cable (Dongguan) Co., Ltd
> +105d  Delkin Devices, Inc.
> +105e  Valence Semiconductor Design, Ltd
> +105f  Chin Shong Enterprise Co., Ltd
> +1060  Easthome Industrial Co., Ltd
> +1063  Motorola Electronics Taiwan, Ltd [hex]
> +	1555  MC141555 Hub
> +	4100  SB4100 USB Cable Modem
> +1065  CCYU Technology
> +	0020  USB-DVR2 Dev Board
> +	2136  EasyDisk ED1064
> +1068  Micropi Elettronica
> +	0001  CPUSB - V 1.8 - software-rights management key
> +106a  Loyal Legend, Ltd
> +106c  Curitel Communications, Inc.
> +	1101  CDMA 2000 1xRTT USB modem (HX-550C)
> +	1102  Packet Service
> +	1103  Packet Service Diagnostic Serial Port (WDM)
> +	1104  Packet Service Diagnostic Serial Port (WDM)
> +	1105  Composite Device
> +	1106  Packet Service Diagnostic Serial Port (WDM)
> +	1301  Composite Device
> +	1302  Packet Service Diagnostic Serial Port (WDM)
> +	1303  Packet Service
> +	1304  Packet Service
> +	1401  Composite Device
> +	1402  Packet Service
> +	1403  Packet Service Diagnostic Serial Port (WDM)
> +	1501  Packet Service
> +	1502  Packet Service Diagnostic Serial Port (WDM)
> +	1503  Packet Service
> +	1601  Packet Service
> +	1602  Packet Service Diagnostic Serial Port (WDM)
> +	1603  Packet Service
> +	2101  AudioVox 8900 Cell Phone
> +	2102  Packet Service
> +	2103  Packet Service Diagnostic Serial Port (WDM)
> +	2301  Packet Service
> +	2302  Packet Service Diagnostic Serial Port (WDM)
> +	2303  Packet Service
> +	2401  Packet Service Diagnostic Serial Port (WDM)
> +	2402  Packet Service
> +	2403  Packet Service Diagnostic Serial Port (WDM)
> +	2501  Packet Service
> +	2502  Packet Service Diagnostic Serial Port (WDM)
> +	2503  Packet Service
> +	2601  Packet Service
> +	2602  Packet Service Diagnostic Serial Port (WDM)
> +	2603  Packet Service
> +	3701  Broadband Wireless modem
> +	3702  Pantech PX-500
> +	3714  PANTECH USB MODEM [UM175]
> +	3716  UMW190 Modem
> +	3721  Option Beemo (GI0801) LTE surfstick
> +	3b14  Option Beemo (GI0801) LTE surfstick
> +	3eb4  Packet Service Diagnostic Serial Port (WDM)
> +	4101  Packet Service Diagnostic Serial Port (WDM)
> +	4102  Packet Service
> +	4301  Composite Device
> +	4302  Packet Service Diagnostic Serial Port (WDM)
> +	4401  Composite Device
> +	4402  Packet Service
> +	4501  Packet Service
> +	4502  Packet Service Diagnostic Serial Port (WDM)
> +	4601  Composite Device
> +	4602  Packet Service Diagnostic Serial Port (WDM)
> +	5101  Packet Service
> +	5102  Packet Service Diagnostic Serial Port (WDM)
> +	5301  Packet Service Diagnostic Serial Port (WDM)
> +	5302  Packet Service
> +	5401  Packet Service
> +	5402  Packet Service Diagnostic Serial Port (WDM)
> +	5501  Packet Service Diagnostic Serial Port (WDM)
> +	5502  Packet Service
> +	5601  Packet Service Diagnostic Serial Port (WDM)
> +	5602  Packet Service
> +	7101  Composite Device
> +	7102  Packet Service
> +	a000  Packet Service
> +	a001  Packet Service Diagnostic Serial Port (WDM)
> +	c100  Packet Service
> +	c200  Packet Service
> +	c500  Packet Service Diagnostic Serial Port (WDM)
> +	e200  Packet Service
> +106d  San Chieh Manufacturing, Ltd
> +106e  ConectL
> +106f  Money Controls
> +	0009  CT10x Coin Transaction
> +	000a  CR10x Coin Recycler
> +	000c  Xchange
> +1076  GCT Semiconductor, Inc.
> +	0031  Bluetooth Device
> +	0032  Bluetooth Device
> +	8002  LU150 LTE Modem [Yota LU150]
> +107b  Gateway, Inc.
> +	3009  eHome Infrared Transceiver
> +	55b2  WBU-110 802.11b Wireless Adapter [Intersil PRISM 3]
> +	55f2  WGU-210 802.11g Adapter [Intersil ISL3886]
> +107d  Arlec Australia, Ltd
> +107e  Midoriya Electric Co., Ltd
> +107f  KidzMouse, Inc.
> +1082  Shin-Etsukaken Co., Ltd
> +1083  Canon Electronics, Inc.
> +	160c  CR-55
> +	160f  DR-1210C
> +	1614  DR-4010C
> +	1617  DR-2510C
> +	1618  DR-X10C
> +	161a  CR-25
> +	161b  DR-2010C Scanner
> +	161d  DR-3010C
> +	1620  DR-7090C
> +	1622  DR-9050C
> +	1623  DR-7550C
> +	1624  DR-6050C
> +	1626  DR-6010C
> +	162c  P-150 Scanner
> +	1638  DR-6030C
> +	1639  CR-135i
> +	163e  DR-M160
> +	163f  DR-M140
> +	1640  DR-C125
> +	1641  DR-P215
> +	1648  FSU-201
> +	164a  DR-C130
> +	164b  DR-P208
> +	164f  DR-G1130
> +	1650  DR-G1100
> +	1651  DR-C120
> +	1654  DR-F120
> +	1657  DR-M1060
> +	1658  DR-C225
> +	1659  DR-P215II
> +	165d  DR-P208II
> +1084  Pantech Co., Ltd
> +108a  Chloride Power Protection
> +108b  Grand-tek Technology Co., Ltd
> +	0005  HID Keyboard/Mouse PS/2 Translator
> +108c  Robert Bosch GmbH
> +	017e  GTC 400 C
> +108e  Lotes Co., Ltd.
> +1091  Numerik Jena
> +	8101  Absoflex
> +1099  Surface Optics Corp.
> +109a  DATASOFT Systems GmbH
> +109b  Hisense
> +	9109  CROSSCALL Trekker-M1 Core (MTP-Mode)
> +	9118  Medion P4013 Mobile
> +	9119  CROSSCALL Trekker-M1 Core (PTP-Mode)
> +	f009  CROSSCALL Trekker-M1 Core (CD-ROM-Mode)
> +109f  eSOL Co., Ltd
> +	3163  Trigem Mobile SmartDisplay84
> +	3164  Trigem Mobile SmartDisplay121
> +10a0  Hirotech, Inc.
> +10a3  Mitsubishi Materials Corp.
> +10a9  SK Teletech Co., Ltd
> +	1102  Sky Love Actually IM-U460K
> +	1104  Sky Vega IM-A650S
> +	1105  VEGA Android composite
> +	1106  VEGA Android composite
> +	1107  VEGA Android composite
> +	1108  VEGA Android composite
> +	1109  VEGA Android composite
> +	6021  SIRIUS alpha
> +	6031  Pantech Android composite
> +	6032  Pantech Android composite
> +	6033  Pantech Android composite
> +	6034  Pantech Android composite
> +	6035  Pantech Android composite
> +	6036  Pantech Android composite
> +	6037  Pantech Android composite
> +	6050  Pantech Android composite
> +	6051  Pantech Android composite
> +	6052  Pantech Android composite
> +	6053  Pantech Android composite
> +	6054  Pantech Android composite
> +	6055  Pantech Android composite
> +	6056  Pantech Android composite
> +	6057  Pantech Android composite
> +	6058  Pantech Android composite
> +	6059  Pantech Android composite
> +	6080  MHS291LVW LTE Modem [Verizon Jetpack 4G LTE Mobile Hotspot MHS291L] (Zero CD Mode)
> +	6085  MHS291LVW LTE Modem [Verizon Jetpack 4G LTE Mobile Hotspot MHS291L] (Modem Mode)
> +	7031  Pantech Android composite
> +	7032  Pantech Android composite
> +	7033  Pantech Android composite
> +	7034  Pantech Android composite
> +	7035  Pantech Android composite
> +	7036  Pantech Android composite
> +	7037  Pantech Android composite
> +10aa  Cables To Go
> +10ab  USI Co., Ltd
> +	1002  Bluetooth Device
> +	1003  BC02-EXT in DFU
> +	1005  Bluetooth Adptr
> +	1006  BC04-EXT in DFU
> +	10c5  Sony-Ericsson / Samsung DataCable
> +10ac  Honeywell, Inc.
> +10ae  Princeton Technology Corp.
> +10af  Liebert Corp.
> +	0000  UPS
> +	0001  PowerSure PSA UPS
> +	0002  PowerSure PST UPS
> +	0003  PowerSure PSP UPS
> +	0004  PowerSure PSI UPS
> +	0005  UPStation GXT 2U UPS
> +	0006  UPStation GXT UPS
> +	0007  Nfinity Power Systems UPS
> +	0008  PowerSure Interactive UPS
> +10b5  Comodo (PLX?)
> +	9060  Test Board
> +10b8  DiBcom
> +	0bb8  DVB-T reference design (MOD300) (cold)
> +	0bb9  DVB-T reference design (MOD300) (warm)
> +	0bc6  DVB-T reference design (MOD3000P) (cold)
> +	0bc7  DVB-T reference design (MOD3000P) (warm)
> +10bb  TM Technology, Inc.
> +10bc  Dinging Technology Co., Ltd
> +10bd  TMT Technology, Inc.
> +	1427  Ethernet
> +10bf  SmartHome
> +	0001  SmartHome PowerLinc
> +10c3  Universal Laser Systems, Inc.
> +	00a4  ULS PLS Series Laser Engraver Firmware Loader
> +	00a5  ULS Print Support
> +10c4  Silicon Labs
> +	0002  F32x USBXpress Device
> +	0003  CommandIR
> +	800a  SPORTident
> +	800b  AES
> +	8030  K4JRG Ham Radio devices
> +	8044  USB Debug Adapter
> +	804e  Software Bisque Paramount ME
> +	80a9  CP210x to UART Bridge Controller
> +	80c4  Infrared Thermometer Adapter
> +	80ca  ATM2400 Sensor Device
> +	813f  tams EasyControl
> +	8149  West Mountain Radio Computerized Battery Analyzer
> +	814a  West Mountain Radio RIGblaster P&P
> +	814b  West Mountain Radio RIGtalk
> +	818a  Silicon Labs FM Radio Reference Design
> +	81e8  Zephyr BioHarness
> +	834b  Infrared Online Sensor Adapter
> +	834e  Infrared Sensor Adapter
> +	8460  Sangoma Wanpipe VoiceTime
> +	8461  Sangoma U100
> +	8470  Juniper Networks BX Series System Console
> +	8477  Balluff RFID Reader
> +	8496  SiLabs Cypress FW downloader
> +	8497  SiLabs Cypress EVB
> +	84fb  Infrared Blackbody Adapter
> +	8508  RS485 Adapter
> +	8605  dilitronics ESoLUX solar lighting controller
> +	8660  Netronics CANdoISO
> +	86bc  C8051F34x AudioDelay [AD-340]
> +	8789  C8051F34x Extender & EDID MGR [EMX-DVI]
> +	87be  C8051F34x HDMI Audio Extractor [EMX-HD-AUD]
> +	8863  C8051F34x Bootloader
> +	8897  C8051F38x HDMI Splitter [UHBX]
> +	88c9  AES HID device
> +	8918  C8051F38x HDMI Audio Extractor [VSA-HA-DP]
> +	8973  C8051F38x HDMI Extender [UHBX-8X]
> +	89c6  SPORTident HID device
> +	89e1  C8051F38x HDMI Extender [UHBX-SW3-WP]
> +	89fb  Qivicon ZigBee Stick
> +	8a3c  C8051F38x HDBaseT Receiver [UHBX-R-XT]
> +	8a6c  C8051F38x 4K HDMI Audio Extractor [EMX-AMP]
> +	8acb  C8051F38x HDBaseT Wall Plate Receiver with IR, RS-232, and PoH [UHBX-R-WP]
> +	8af8  C8051F38x 4K HDMI Audio Extractor w/Audio Amplifier, HDBT Input, Line Audio Input RS-232 Ports and IP Control [VSA-X21]
> +	8b8c  C8051F38x 4K HDMI Audio Extractor w/Audio Amplifier, HDBT Input, Line Audio Input RS-232 Ports and IP Control [SC-3H]
> +	8db5  C8051F38x CATx HDMI Receiver with USB [EX-HDU-R]
> +	8db6  C8051F38x CATx HDMI Receiver
> +	ea60  CP210x UART Bridge
> +	ea61  CP210x UART Bridge
> +	ea63  CP210x UART Bridge
> +	ea70  CP2105 Dual UART Bridge
> +	ea71  CP2108 Quad UART Bridge
> +	ea80  CP2110 HID UART Bridge
> +	ea90  CP2112 HID I2C Bridge
> +	ea91  CP2112 HID SMBus/I2C Bridge for CP2614 Evaluation Kit
> +	ea93  CP2112 HID SMBus/I2C Bridge for CP2615 Evaluation Kit
> +	eab0  CP2114 I2S Audio Bridge
> +	eac0  CP2614 MFi Accessory Digital Audio Bridge
> +	eac1  CP2615 I2S Audio Bridge
> +	eac9  EFM8UB1 Bootloader
> +	eaca  EFM8UB2 Bootloader
> +	eacb  EFM8UB3 Bootloader
> +10c5  Sanei Electric, Inc.
> +	819a  FM Radio
> +10c6  Intec, Inc.
> +10cb  Eratech
> +10cc  GBM Connector Co., Ltd
> +	1101  MP3 Player
> +10cd  Kycon, Inc.
> +10ce  Silicon Labs
> +	0007  Shinko/Sinfonia CHC-S1245
> +	000e  Shinko/Sinfonia CHC-S2145
> +	0019  Shinko/Sinfonia CHC-S6145
> +	001d  Shinko/Sinfonia CHC-S6245
> +	001e  Ciaat Brava 21
> +	0039  Sinfonia CHC-S2245
> +	10ce  Sinfonia CHC-S2245
> +	ea6a  MobiData EDGE USB Modem
> +10cf  Velleman Components, Inc.
> +	2011  R-Engine MPEG2 encoder/decoder
> +	5500  8055 Experiment Interface Board (address=0)
> +	5501  8055 Experiment Interface Board (address=1)
> +	5502  8055 Experiment Interface Board (address=2)
> +	5503  8055 Experiment Interface Board (address=3)
> +10d1  Hottinger Baldwin Measurement
> +	0101  USB-Module for Spider8, CP32
> +	0202  CP22 - Communication Processor
> +	0301  CP42 - Communication Processor
> +10d2  RayComposer - R. Adams
> +	5243  RayComposer
> +10d4  Man Boon Manufactory, Ltd
> +10d5  Uni Class Technology Co., Ltd
> +	0004  PS/2 Converter
> +	5552  KVM Human Interface Composite Device (Keyboard/Mouse ports)
> +	55a2  2Port KVMSwitcher
> +	5a08  Dual Bay Docking Station
> +10d6  Actions Semiconductor Co., Ltd
> +	0c02  BioniQ 1001 Tablet
> +	1000  MP3 Player
> +	1100  MPMan MP-Ki 128 MP3 Player/Recorder
> +	1101  D-Wave 2GB MP4 Player / AK1025 MP3/MP4 Player
> +	2200  Acer MP-120 MP3 player
> +	8888  ADFU Device
> +	ff51  ADFU Device
> +	ff61  MP4 Player
> +	ff66  Craig 2GB MP3/Video Player
> +10de  Authenex, Inc.
> +10df  In-Win Development, Inc.
> +	0500  iAPP CR-e500 Card reader
> +10e0  Post-Op Video, Inc.
> +10e1  CablePlus, Ltd
> +10e2  Nada Electronics, Ltd
> +10ec  Vast Technologies, Inc.
> +10f0  Nexio Co., Ltd
> +	2002  iNexio Touchscreen controller
> +10f1  Importek
> +	1a08  Internal Webcam
> +	1a1e  Laptop Integrated Webcam 1.3M
> +	1a2a  Laptop Integrated Webcam
> +	1a2e  HP Truevision HD Integrated Webcam
> +10f5  Turtle Beach
> +	0200  Audio Advantage Roadie
> +	0231  Ear Force P11 Headset
> +	10f5  EarForce PX21 Gaming Headset
> +10f8  Cesys GmbH
> +	3201  CeboLC
> +	3202  CeboStick
> +	3203  CeboMSA64
> +	3204  CeboDFN
> +	3205  PSAA2304W_CASC
> +	c401  USBV4F unconfigured
> +	c402  EFM01 unconfigured
> +	c403  MISS2 unconfigured
> +	c404  CID unconfigured
> +	c405  USBS6 unconfigured
> +	c406  OP_MISS2 unconfigured
> +	c407  NanoUsb uncofigured
> +	c481  USBV4F
> +	c482  EFM01
> +	c483  MISS2
> +	c484  CID
> +	c485  USBS6
> +	c486  OP_MISS2
> +	c487  NanoUsb
> +	c501  EFM02 unconfigured
> +	c502  EFM02/B unconfigured
> +	c503  EFM03 unconfigured
> +	c581  EFM02
> +	c582  EFM02/B
> +	c583  EFM03
> +10fb  Pictos Technologies, Inc.
> +10fd  Anubis Electronics, Ltd
> +	7e50  FlyCam Usb 100
> +	804d  Typhoon Webshot II Webcam [zc0301]
> +	8050  FlyCAM-USB 300 XP2
> +	de00  WinFast WalkieTV WDM Capture Driver.
> +10fe  Thrane & Thrane
> +	000c  TT-3750 BGAN-XL Radio Module
> +1100  VirTouch, Ltd
> +	0001  VTPlayer VTP-1 Braille Mouse
> +1101  EasyPass Industrial Co., Ltd
> +	0001  FSK Electronics Super GSM Reader
> +1108  Brightcom Technologies, Ltd
> +110a  Moxa Technologies Co., Ltd.
> +	1110  UPort 1110
> +	1150  UPort 1150 1-Port RS-232/422/485
> +	1250  UPort 1250 2-Port RS-232/422/485
> +	1251  UPort 1250I 2-Port RS-232/422/485 with Isolation
> +	1410  UPort 1410 4-Port RS-232
> +	1450  UPort 1450 4-Port RS-232/422/485
> +	1451  UPort 1450I 4-Port RS-232/422/485 with Isolation
> +	1613  UPort 1610-16 16-Port RS-232
> +	1618  UPort 1610-8 8-Port RS-232
> +	1653  UPort 1650-16 16-Port RS-232/422/485
> +	1658  UPort 1650-8 8-Port RS-232/422/485
> +1110  Analog Devices Canada, Ltd (Allied Telesyn)
> +	5c01  Huawei MT-882 Remote NDIS Network Device
> +	6489  ADSL ETH/USB RTR
> +	9000  ADSL LAN Adapter
> +	9001  ADSL Loader
> +	900f  AT-AR215 DSL Modem
> +	9010  AT-AR215 DSL Modem
> +	9021  ADSL WAN Adapter
> +	9022  ADSL Loader
> +	9023  ADSL WAN Adapter
> +	9024  ADSL Loader
> +	9031  ADSL LAN Adapter
> +	9032  ADSL Loader
> +1111  Pandora International Ltd.
> +	8888  Evolution Device
> +1112  YM ELECTRIC CO., Ltd
> +1113  Medion AG
> +	a0a2  Active Sync device
> +111e  VSO Electric Co., Ltd
> +112a  RedRat
> +	0001  RedRat3 IR Transceiver
> +	0005  RedRat3II IR Transceiver
> +112e  Master Hill Electric Wire and Cable Co., Ltd
> +112f  Cellon International, Inc.
> +1130  Tenx Technology, Inc.
> +	0001  BlyncLight
> +	0002  iBuddy
> +	0004  iBuddy Twins
> +	0202  Rocket Launcher
> +	6604  MCE IR-Receiver
> +	6606  U+P Mouse
> +	660c  Foot Pedal/Thermometer
> +	6626  Key
> +	6806  Keychain photo frame
> +	c301  Digital Photo viewer [Wallet Pix]
> +	f211  TP6911 Audio Headset
> +1131  Integrated System Solution Corp.
> +	1001  KY-BT100 Bluetooth Adapter
> +	1002  Bluetooth Device
> +	1003  Bluetooth Device
> +	1004  Bluetooth Device
> +1132  Toshiba Corp., Digital Media Equipment [hex]
> +	4331  PDR-M4/M5/M70 Digital Camera
> +	4332  PDR-M60 Digital Camera
> +	4333  PDR-M2300/PDR-M700
> +	4334  PDR-M65
> +	4335  PDR-M61
> +	4337  PDR-M11
> +	4338  PDR-M25
> +1136  CTS Electronincs
> +	3131  CTS LS515
> +113c  Arin Tech Co., Ltd
> +113d  Mapower Electronics Co., Ltd
> +113f  Integrated Biometrics, LLC
> +	1020  Watson Two-Finger Roll Scanner
> +	1100  Columbo Single-Finger Scanner
> +1141  V One Multimedia, Pte., Ltd
> +1142  CyberScan Technologies, Inc.
> +	0709  Cyberview High Speed Scanner
> +1145  Japan Radio Company
> +	0001  AirH PHONE AH-J3001V/J3002V
> +1146  Shimane SANYO Electric Co., Ltd.
> +1147  Ever Great Electric Wire and Cable Co., Ltd
> +114b  Sphairon Access Systems GmbH
> +	0110  Turbolink UB801R WLAN Adapter
> +	0150  Turbolink UB801RE Wireless 802.11g 54Mbps Network Adapter [RTL8187]
> +114c  Tinius Olsen Testing Machine Co., Inc.
> +114d  Alpha Imaging Technology Corp.
> +114f  Wavecom
> +	1234  Fastrack Xtend FXT001 Modem
> +115b  Salix Technology Co., Ltd.
> +1162  Secugen Corp.
> +1163  DeLorme Publishing, Inc.
> +	0100  Earthmate GPS (orig)
> +	0200  Earthmate GPS (LT-20, LT-40)
> +	2020  Earthmate GPS (PN-40)
> +1164  YUAN High-Tech Development Co., Ltd
> +	0300  ELSAVISION 460D
> +	0601  Analog TV Tuner
> +	0900  TigerBird BMP837 USB2.0 WDM Encoder
> +	0bc7  Digital TV Tuner
> +	521b  MC521A mini Card ATSC Tuner
> +	6601  Digital TV Tuner Card [RTL2832U]
> +1165  Telson Electronics Co., Ltd
> +1166  Bantam Interactive Technologies
> +1167  Salient Systems Corp.
> +1168  BizConn International Corp.
> +116e  Gigastorage Corp.
> +116f  Silicon 10 Technology Corp.
> +	0005  Flash Card Reader
> +	c108  Flash Card Reader
> +	c109  Flash Card Reader
> +1175  Shengyih Steel Mold Co., Ltd
> +117d  Santa Electronic, Inc.
> +117e  JNC, Inc.
> +1182  Venture Corp., Ltd
> +1183  Compaq Computer Corp. [hex] (Digital Dream ??)
> +	0001  DigitalDream l'espion XS
> +	19c7  ISDN TA
> +	4008  56k FaxModem
> +	504a  PJB-100 Personal Jukebox
> +1184  Kyocera Elco Corp.
> +1188  Bloomberg L.P.
> +1189  Acer Communications & Multimedia
> +	0893  EP-1427X-2 Ethernet Adapter [Acer]
> +118f  You Yang Technology Co., Ltd
> +1190  Tripace
> +1191  Loyalty Founder Enterprise Co., Ltd
> +1196  Yankee Robotics, LLC
> +	0010  Trifid Camera without code
> +	0011  Trifid Camera
> +1197  Technoimagia Co., Ltd
> +1198  StarShine Technology Corp.
> +1199  Sierra Wireless, Inc.
> +	0019  AC595U
> +	0021  AC597E
> +	0024  MC5727 CDMA modem
> +	0110  Composite Device
> +	0112  CDMA 1xEVDO PC Card, AirCard 580
> +	0120  AC595U
> +	0218  MC5720 Wireless Modem
> +	6467  MP Series Network Adapter
> +	6468  MP Series Network Adapter
> +	6469  MP Series Network Adapter
> +	6802  MC8755 Device
> +	6803  MC8765 Device
> +	6804  MC8755 Device
> +	6805  MC8765 Device
> +	6812  MC8775 Device
> +	6820  AC875 Device
> +	6832  MC8780 Device
> +	6833  MC8781 Device
> +	683a  MC8785 Device
> +	683c  Mobile Broadband 3G/UMTS (MC8790 Device)
> +	6850  AirCard 880 Device
> +	6851  AirCard 881 Device
> +	6852  AirCard 880E Device
> +	6853  AirCard 881E Device
> +	6854  AirCard 885 Device
> +	6856  ATT "USB Connect 881"
> +	6870  MC8780 Device
> +	6871  MC8781 Device
> +	6893  MC8777 Device
> +	68a3  MC8700 Modem
> +	68aa  4G LTE adapter
> +	9000  Gobi 2000 Wireless Modem (QDL mode)
> +	9001  Gobi 2000 Wireless Modem
> +	9002  Gobi 2000 Wireless Modem
> +	9003  Gobi 2000 Wireless Modem
> +	9004  Gobi 2000 Wireless Modem
> +	9005  Gobi 2000 Wireless Modem
> +	9006  Gobi 2000 Wireless Modem
> +	9007  Gobi 2000 Wireless Modem
> +	9008  Gobi 2000 Wireless Modem
> +	9009  Gobi 2000 Wireless Modem
> +	900a  Gobi 2000 Wireless Modem
> +	9011  MC8305 Modem
> +	9013  Sierra Wireless Gobi 3000 Modem device (MC8355)
> +	9041  EM7305 Modem
> +	9055  Gobi 9x15 Multimode 3G/4G LTE Modem (NAT mode)
> +	9057  Gobi 9x15 Multimode 3G/4G LTE Modem (IP passthrough mode)
> +	9071  AirPrime MC7455 3G/4G LTE Modem
> +	9079  EM7455
> +119a  ZHAN QI Technology Co., Ltd
> +119b  ruwido austria GmbH
> +	0400  Infrared Keyboard V2.01
> +11a0  Chipcon AS
> +	eb11  CC2400EB 2.0 ZigBee Sniffer
> +11a3  Technovas Co., Ltd
> +	8031  MP3 Player
> +	8032  MP3 Player
> +11aa  GlobalMedia Group, LLC
> +	1518  iREZ K2
> +11ab  Exito Electronics Co., Ltd
> +11ac  Nike
> +	6565  FuelBand
> +11b0  ATECH FLASH TECHNOLOGY
> +	6208  PRO-28U
> +	6298  Kingston SNA-DC/U
> +11be  R&D International NV
> +	f0a0  Martin Maxxyz DMX
> +11c0  Betop
> +	5506  Gamepad
> +11c5  Inmax
> +	0521  IMT-0521 Smartcard Reader
> +11c9  Nacon
> +	55f0  GC-100XF
> +11ca  VeriFone Inc
> +	0201  MX870/MX880
> +	0207  PIN Pad VX 810
> +	0220  PIN Pad VX 805
> +11db  Topfield Co., Ltd.
> +	1000  PVR
> +	1100  PVR
> +11e6  K.I. Technology Co. Ltd.
> +11f5  Siemens AG
> +	0001  SX1
> +	0003  Mobile phone USB cable
> +	0004  X75
> +	0005  SXG75/EF81
> +	0008  UMTS/HSDPA Data Card
> +	0101  RCU Connect
> +11f6  Prolific
> +	2001  Willcom WSIM
> +11f7  Alcatel (?)
> +	02df  Serial cable (v2) for TD-10 Mobile Phone
> +1203  TSC Auto ID Technology Co., Ltd
> +	0140  TTP-245C
> +1209  Generic
> +	0001  pid.codes Test PID
> +	0002  pid.codes Test PID
> +	0003  pid.codes Test PID
> +	0004  pid.codes Test PID
> +	0005  pid.codes Test PID
> +	0006  pid.codes Test PID
> +	0007  pid.codes Test PID
> +	0008  pid.codes Test PID
> +	0009  pid.codes Test PID
> +	000a  pid.codes Test PID
> +	000b  pid.codes Test PID
> +	000c  pid.codes Test PID
> +	000d  pid.codes Test PID
> +	000e  pid.codes Test PID
> +	000f  pid.codes Test PID
> +	0010  pid.codes Test PID
> +	01c0  Input Club Kiibohd Device
> +	01cb  Input Club Kiibohd Device Bootloader
> +	0256  Schwalm & Tate LLC pISO Raspberry Pi Hat
> +	053a  Hackerspace San Salvador HSSV SAMR21-Mote
> +	0cbd  Andrzej Szombierski kuku.eu.org keyboard
> +	0d32  ODrive Robotics ODrive v3
> +	1001  InterBiometrics Hub
> +	1002  InterBiometrics Relais
> +	1003  InterBiometrics IBSecureCam-P
> +	1004  InterBiometrics IBSecureCam-O
> +	1005  InterBiometrics IBSecureCam-N
> +	1006  InterBiometrics Mini IO-Board
> +	1007  e-radionica.com Croduino SAMD
> +	1986  dgrubb Jaguar Tap
> +	1ab5  Arachnid Labs Tsunami
> +	1ab6  Arachnid Labs Tsunami Bootloader
> +	2000  Zygmunt Krynicki Lantern Brightness Sensor
> +	2001  OSHEC Pi-pilot opensource and openhardware autopilot system
> +	2002  Peter Lawrence PIC16F1-USB-DFU-Bootloader
> +	2003  Peter Lawrence SAMDx1-USB-DFU-Bootloader
> +	2004  GCBASIC Serial CDC Stack
> +	2005  GCBASIC OakTree Stack
> +	2006  GCBASIC Simulation Stack
> +	2016  Cupkee
> +	2017  Benjamin Shockley Mini SAM
> +	2020  Captain Credible Gate Crystal
> +	2048  Housedillon.com MRF49XA Transceiver
> +	2100  TinyFPGA B1 and B2 Boards
> +	2101  TinyFPGA A-Series Programmer
> +	2200  Dygma Shortcut Bootloader
> +	2201  Dygma Shortcut Keyboard
> +	2222  LabConnect Signalgenerator
> +	2300  Keyboardio Model 01 Bootloader
> +	2301  Keyboardio Model 01
> +	2323  bytewerk.org candleLight
> +	2327  K.T.E.C. Bootloader Device
> +	2328  K.T.E.C. Keyboard Device
> +	2333  Kai Ryu Kimera
> +	2334  Kai Ryu Staryu
> +	2335  Portwell Sense8
> +	2336  Portwell Sense8
> +	2337  /Dev /Net
> +	2342  Andreas Bogk Big Red Button
> +	2345  VV-Soft Simple Generic HID IO
> +	2357  KarolKucza TinyPassword
> +	2400  phooky Snap-Pad
> +	2488  Peter Lawrence CMSIS-DAP Dapper Miser
> +	2552  ProjectIota Electrolink
> +	2600  Majenko Technologies chipKIT Lenny
> +	2635  Sevinz GameBot
> +	2800  Entropic Engineering Triangulation
> +	2801  Entropic Engineering Object Manipulation
> +	2a00  mooware Wii adapter
> +	2a01  mooware SNES adapter
> +	3000  lloyd3000
> +	3100  OpenSimHardware Pedals & Buttons Controller
> +	317e  Codecrete Wirekite
> +	3210  OSH Lab, LLC Magic Keys
> +	3333  LabConnect Digitalnetzteil
> +	345b  kinX Hub
> +	345c  kinX Keyboard Controller
> +	3690  Kigakudoh TouchMIDI32
> +	4096  CynaraKrewe Cynara
> +	414c  Adi Linden
> +	414d  Adi Linden
> +	4242  Komakallio Astrophotography Community KomaHub Remote Power Switch
> +	4256  CuVoodoo BusVoodoo multi-protocol debugging adapter
> +	4321  mooltipass Offline Password Keeper Bootloader
> +	4322  mooltipass Arduino Sketch
> +	4356  CuVoodoo firmware
> +	4443  j1rie IRMP_STM32 Bootloader
> +	4444  j1rie IRMP_STM32
> +	4545  SlothCo Enterprises Teletype Adapter
> +	4646  SmartPID SPC1000
> +	4748  Kate Gray GHETT-iO Bootloader
> +	4750  Chris Pavlina (c4757p) C4-x computer (development interface)
> +	4757  Chris Pavlina (c4757p) WCP52 Gain/Phase Analyzer
> +	4801  Wojciech Krutnik NVMemProg
> +	4c60  MightyPork GEX module
> +	4c61  MightyPork GEX wireless dongle
> +	4d53  mindsensors.com NXTCam5
> +	5038  frotz.net mdebug rswd protocol
> +	5039  frotz.net lpcboot protocol
> +	5050  trebb ISO50
> +	5070  SoloHacker security key [SoloKey]
> +	50b0  boot for security key [SoloKey]
> +	5222  telavivmakers attami
> +	53c0  SatoshiLabs TREZOR Bootloader
> +	53c1  SatoshiLabs TREZOR
> +	5432  Open Programmer
> +	5457  Openlab.Taipei Taiwanduino
> +	571c  StreetoArcade PancadariaStick
> +	5a22  ikari_01 sd2snes
> +	6000  Pulsar Heavy Industries Cenx4
> +	600d  Makdaam N93 Interface
> +	6464  Electric Exploits Shinewave
> +	6502  jj1bdx avrhwrng v2rev1
> +	6570  Iowa Scaled Engineering, LLC CKT-AVRPROGRAMMER
> +	6666  Talpa Chen VSFLogic
> +	6667  SensePost Universal Serial aBUSe - Generic HID
> +	6742  NPK Cubitel Atomic Force Microscope
> +	6809  Tach Radio Doppelganger
> +	6948  MySensors Sensebender Gateway BootLoader
> +	6949  MySensors Sensebender Gateway
> +	6bcf  blaste Gameboy Cart Flasher
> +	7000  Secalot Dongle
> +	7001  Secalot Bootloader
> +	70b1  Sutajio Ko-Usagi (Kosagi) Tomu
> +	7331  Dangerous Prototypes Bus Pirate Next Gen CDC
> +	7332  Dangerous Prototypes Bus Pirate Next Gen Logic Analyzer
> +	7401  Beststream-jp Tool_CDC
> +	7530  PotentialLabs Refflion - IoT Development Board - Bootloader
> +	7531  PotentialLabs Refflion - IoT Development Board - Sketch
> +	7551  The Tessel Project Tessel 2
> +	7777  circuitvalley IO Board V3
> +	7778  circuitvalley IO Board V3 Bootloader
> +	7950  PIC18F87J94 Bootloader [GenII]
> +	7951  PIC18F87J94 Application [GenII]
> +	7952  PIC18F87J94 Bootloader [GenIII/IV]
> +	7953  PIC18F87J94 Application [GenIII/IV]
> +	7954  PIC18F87J94 Application [GenIII/IV]
> +	7bd0  pokey9000 Tiny Bit Dingus
> +	8000  Autonomii NODii 2
> +	8086  MisfitTech Nano Zero Bootloader
> +	8087  MisfitTech Nano Zero
> +	8123  Danyboard M0 bootloader
> +	812a  Danyboard M0
> +	813a  MickMad HACK Bootloader
> +	813b  MickMad HACK Sketch
> +	8242  Tom Wimmenhove Electronics NBS-DAC 192/24 UAC1
> +	8243  Tom Wimmenhove Electronics NBS-DAC 192/24 UAC2
> +	8472  Shantea Controls OpenDeck
> +	8661  ProgHQ TL866 programmer
> +	8844  munia.io MUNIA
> +	8888  Blinkinlabs POV Pendant
> +	8889  Blinkinlabs POV Pendant (bootloader)
> +	8b00  ReSwitched Libtransistor Serial Console
> +	9021  Connected Community Hackerspace ESPlant
> +	9317  Sutajio Ko-Usagi (Kosagi) Palawan-Tx
> +	9999  Sandeepan Sengupta CodeBridge Infineo
> +	9db5  PD Buddy Sink
> +	a033  area0x33 Memtype
> +	a100  KB LES Narsil analog breakout
> +	a10c  KB LES Aminoacid Synthesizer
> +	a1e5  Atreus Keyboards Atreus Keyboard
> +	a3a4  MK::Box MK::Kbd
> +	a3a5  MK::Box MK::Kbd Bootloader
> +	a55a  Forever Young Software ATTINY2313
> +	a602  Robotips RTBoard
> +	a7ea  area3001 Knixx SW04
> +	a800  sowbug.com WebLight
> +	a8b0  Intelectron BootWare
> +	a8b1  Intelectron FrameWare
> +	aa00  Serg Oskin LinuxCNC HID Extender
> +	aa0b  Open Bionics
> +	ab3d  3DArtists Alligator board
> +	abba  CoinWISE SafeWISE
> +	abc0  Omzlo controller
> +	abcd  Sandeepan Sengupta CodeBridge
> +	abd1  OpenMV Cam
> +	acdc  Gediminas Zukaitis midi-grid
> +	ace5  SimAces Panel Ace
> +	aced  Open Lighting Project Ja Rule Device
> +	acee  Open Lighting Project Ja Rule Bootloader
> +	adb0  tibounise ADB converter
> +	adda  MicroPython Boards
> +	b007  Konsgn Global_Boot
> +	b00b  CrapLab Random Device
> +	b010  IObitZ CodeBridge
> +	b01d  WyoLum VeloKey
> +	b058  Model B, LLC Holoseat
> +	b0b0  Monero Hardware Monero Bootloader
> +	b100  ptrandem iBizi
> +	b101  IObitZ Infineo
> +	b195  flehrad Big Switch PCB
> +	bab1  ElectronicCats Meow Meow
> +	babe  brunofreitas.com STM32 HID Bootloader
> +	bad1  Gregory POTEAU CommLinkUSB
> +	bad2  Gregory POTEAU XLinkUSB
> +	bade  Semarme SemarmeHID
> +	bb00  keyplus split keyboard firmware
> +	bb01  keyplus xusb bootloader
> +	bb02  keyplus nRF24 wireless keyboard dongle
> +	bb03  keyplus nrf24lu1p-512 bootloader
> +	bb05  keyplus kp_boot_32u4 bootloader
> +	beba  serasidis.gr STM32 HID Bootloader
> +	beef  Modal MC-USB
> +	c001  Cynteract Alpha
> +	c0c0  Geppetto_Electronics Orthrus
> +	c0c1  Michael Bemmerl cookie-mouse
> +	c0ca  Jean THOMAS DirtyJTAG
> +	c0d3  Samy Kamkar USBdriveby
> +	c0da  Monero Hardware Monero Firmware
> +	c0de  KMRH Labs SBL Brain
> +	c0f5  unethi PERswitch
> +	c1aa  Proyecto CIAA Computadora Industrial Abierta Argentina
> +	c1b1  Chibitronics Love-to-Code
> +	c311  bg nerilex GB-USB-Link
> +	ca1c  KnightOS Generic Hub
> +	ca1d  KnightOS MTP Device
> +	caea  Open Music Kontrollers Chimaera
> +	cafe  ii iigadget
> +	cc14  trebb NaN-15
> +	cc86  Manfred's Technologies Anastasia Bootloader
> +	ceb0  KG4LNE GE-FlashUSB
> +	cf20  Smart Citizen SCK 2.0
> +	d00d  Monero Hardware Monero Developer
> +	d017  empiriKit empiriKit Controller
> +	d11d  Koi Science DI-Lambda AVR
> +	d3d8  Duet3d Duet 0.8.5
> +	d706  SkyBean SkyDrop
> +	da42  Devan Lai dap42 debug access probe
> +	daa0  darknao btClubSportWheel
> +	dada  Rebel Technology OWL
> +	db42  Devan Lai dapboot DFU bootloader
> +	dc21  FPGA-Computer Dual Charger
> +	dddd  Stephan Electronics OpenCVMeter
> +	dead  chaosfield.at AVR-Ruler
> +	deaf  CrapLab 4chord MIDI
> +	ded1  ManCave Made Quark One
> +	deed  Kroneum Time Tracker
> +	df00  D.F.Mac. @TripArts Music mi:muz:tuch
> +	df01  D.F.Mac. @TripArts Music mi:muz:can
> +	df02  D.F.Mac. @TripArts Music mi:muz:can-lite
> +	e116  Elijah Motornyy open-oscilloscope-stm32f3
> +	e1ec  FreeSRP
> +	e4ee  trebb keytee
> +	e500  GitleMikkelsen Helios Laser DAC
> +	eaea  Pinscape Controller
> +	eb01  RobotMaker.club EB1
> +	eba7  VictorGrigoryev USBscope
> +	ee00  Explore Embedded SODA(SWD OpenSource Debug Adapter)
> +	ee02  Explore Embedded Explore M3 VCOM
> +	ee03  Explore Embedded Explore M3 DFU
> +	ee2c  jaka USB2RS485
> +	effa  EffigyLabs atmega32u4-USB-LUFA-Bootloader
> +	effe  EffigyLabs Control Pedal
> +	f000  Uniti ARC
> +	f00d  RomanStepanov Shifter/Pedals Adapter
> +	f12e  Michael Bemmerl Feuermelder
> +	f16a  uri_ba Cougar TQS adapter
> +	f16c  uri_ba adapter for Vipercore's FCC3 Force Sensing Module
> +	f380  Windsor Schmidt MD-380 Open Radio Firmware
> +	f3fc  dRonin Flight controller-Lumenier Lux
> +	f49a  TimVideos.us & HDMI2USB.tv Projects FPGA Programmer & UART Bridge (PIC based Firmware)
> +	fa11  moonglow OpenXHC
> +	fa57  3DRacers Pilot Board
> +	fa58  3DRacers Pilot Board (Bootloader)
> +	fab1  PAP Mechatronic Technology LamDiNao
> +	face  Protean Synth Craft
> +	fade  Open Collector dude
> +	feed  ProgramGyar AVR-IR Sender
> +	ffff  Life2Device Smart House
> +120e  Hudson Soft Co., Ltd
> +120f  Magellan
> +	524e  RoadMate 1475T
> +	5260  Triton Handheld GPS Receiver (300/400/500/1500/2000)
> +1210  DigiTech
> +	000d  RP250 Guitar Multi-Effects Processor
> +	0016  RP500 Guitar Multi-Effects Processor
> +	001b  RP155 Guitar Multi-Effects Processor
> +	001c  RP255 Guitar Multi-Effects Processor
> +121e  Jungsoft Co., Ltd
> +	3403  Muzio JM250 Audio Player
> +121f  Panini S.p.A.
> +	0001  VisionX without Firmware
> +	0002  VisionX with Firmware
> +	0010  I-Deal
> +	0020  wI-Deal
> +	0021  VisionX Page Scanner Extension
> +	0030  VisionNext
> +	0040  mI:Deal Check Scanner
> +	0041  EverNext Check Scanner
> +1220  TC Electronic
> +	000a  Hall of Fame Reverb
> +	002a  Polytune
> +	0032  Ditto X2 Looper
> +	0039  Alter Ego X4 Vintage Echo
> +1221  Unknown manufacturer
> +	3234  Disk (Thumb drive)
> +1222  TiPro
> +	faca  programmable keyboard
> +1223  SKYCABLE ENTERPRISE. CO., LTD.
> +1228  Datapaq Limited
> +	0012  Q18 Data Logger
> +	0015  TPaq21/MPaq21 Datalogger
> +	584c  XL2 Logger
> +1230  Chipidea-Microelectronica, S.A.
> +1233  Denver Electronics
> +	5677  FUSB200 mp3 player
> +1234  Brain Actuated Technologies
> +	0000  Neural Impulse Actuator Prototype 1.0 [NIA]
> +	4321  Human Interface Device
> +	ed02  Emotiv EPOC Developer Headset Wireless Dongle
> +1235  Focusrite-Novation
> +	0001  ReMOTE Audio/XStation First Edition
> +	0002  Speedio
> +	0003  RemoteSL + ZeroSL
> +	0004  ReMOTE LE
> +	0005  XIOSynth [First Edition]
> +	0006  XStation
> +	0007  XIOSynth
> +	0008  ReMOTE SL Compact
> +	0009  nIO
> +	000a  Nocturn
> +	000b  ReMOTE SL MkII
> +	000c  ZeRO MkII
> +	000e  Launchpad
> +	0010  Saffire 6
> +	0011  Ultranova
> +	0012  Nocturn Keyboard
> +	0013  VRM Box
> +	0014  VRM Box Audio Class (2-out)
> +	0015  Dicer
> +	0016  Ultranova
> +	0018  Twitch
> +	0019  Impulse 25
> +	001a  Impulse 49
> +	001b  Impulse 61
> +	0032  Launchkey 61
> +	0069  Launchpad MK2
> +	0102  LaunchKey Mini MK3
> +	4661  ReMOTE25
> +	8000  Scarlett 18i6
> +	8002  Scarlett 8i6
> +	8006  Focusrite Scarlett 2i2
> +	8008  Saffire 6
> +	800a  Scarlett 2i4
> +	800c  Scarlett 18i20
> +	800e  iTrack Solo
> +	8010  Forte
> +	8012  Scarlett 6i6
> +	8014  Scarlett 18i8
> +	8016  Focusrite Scarlett 2i2
> +	8202  Focusrite Scarlett 2i2 2nd Gen
> +	8203  Focusrite Scarlett 6i6
> +	8204  Scarlett 18i8 2nd Gen
> +	8210  Scarlett 2i2 Camera
> +	8211  Scarlett Solo (3rd Gen.)
> +	8214  Scarlett 18i8 3rd Gen
> +	8215  Scarlett 18i20 3rd Gen
> +1241  Belkin
> +	0504  Wireless Trackball Keyboard
> +	1111  Mouse
> +	1122  Typhoon Stream Optical Mouse USB+PS/2
> +	1155  Memorex Optical ScrollPro Mouse SE MX4600
> +	1166  MI-2150 Trust Mouse
> +	1177  Mouse [HT82M21A]
> +	1503  Keyboard
> +	1603  Keyboard
> +	f767  Keyboard
> +1243  Holtek Semiconductor, Inc.
> +	e000  Unique NFC/RFID reader (keyboard emulation)
> +124a  AirVast
> +	168b  PRISM3 WLAN Adapter
> +	4017  PC-Chips 802.11b Adapter
> +	4023  WM168g 802.11bg Wireless Adapter [Intersil ISL3886]
> +	4025  IOGear GWU513 v2 802.11bg Wireless Adapter [Intersil ISL3887]
> +124b  Nyko (Honey Bee)
> +	4d01  Airflo EX Joystick
> +124c  MXI - Memory Experts International, Inc.
> +	3200  Stealth MXP 1GB
> +125c  Apogee Inc.
> +	0010  Alta series CCD
> +125d  JMicron
> +	0580  JM580
> +125f  A-DATA Technology Co., Ltd.
> +	312a  Superior S102
> +	312b  Superior S102 Pro
> +	a15a  DashDrive Durable HD710 portable HDD various size
> +	a22a  DashDrive Elite HE720 500GB
> +	a31a  HV620 Portable HDD
> +	a91a  Portable HDD CH91
> +	c08a  C008 Flash Drive
> +	c81a  Flash drive
> +	c93a  4GB Pen Drive
> +	c96a  C906 Flash Drive
> +	cb10  Dash Drive UV100
> +	cb20  DashDrive UV110
> +1260  Standard Microsystems Corp.
> +	ee22  SMC2862W-G v3 EZ Connect 802.11g Adapter [Intersil ISL3887]
> +1264  Covidien Energy-based Devices
> +1266  Pirelli Broadband Solutions
> +	6302  Fastweb DRG A226M ADSL Router
> +1267  Logic3 / SpectraVideo plc
> +	0103  G-720 Keyboard
> +	0201  Mouse
> +	0210  LG Optical Mouse 3D-310
> +	a001  JP260 PC Game Pad
> +	c002  Wireless Optical Mouse
> +126c  Aristocrat Technologies
> +126d  Bel Stewart
> +126e  Strobe Data, Inc.
> +126f  TwinMOS
> +	0163  Storage device (2gB thumb drive)
> +	1325  Mobile Disk
> +	2168  Mobile Disk III
> +	a006  G240 802.11bg
> +1274  Ensoniq
> +1275  Xaxero Marine Software Engineering, Ltd.
> +	0002  WeatherFax 2000 Demodulator
> +	0080  SkyEye Weather Satellite Receiver
> +	0090  WeatherFax 2000 Demodulator
> +1278  Starlight Xpress
> +	0105  SXV-M5
> +	0107  SXV-M7
> +	0109  SXV-M9
> +	0110  SXVF-H16
> +	0115  SXVF-H5
> +	0119  SXV-H9
> +	0135  SXVF-H35
> +	0136  SXVF-H36
> +	0200  SXV interface for paraller MX cameras
> +	0305  SXV-M5C
> +	0307  SXV-M7C
> +	0319  SXV-H9C
> +	0325  SXV-M25C
> +	0326  SXVR-M26C
> +	0507  Lodestar autoguider
> +	0517  CoStar
> +1283  zebris Medical GmbH
> +	0100  USB-RS232 Adaptor
> +	0110  CMS20
> +	0111  CMS 10
> +	0112  CMS 05
> +	0114  ARCUS digma PC-Interface
> +	0115  SAM Axioquick recorder
> +	0116  SAM Axioquick recorder
> +	0120  emed-X
> +	0121  emed-AT
> +	0130  PDM
> +	0150  CMS10GI (Golf)
> +1286  Marvell Semiconductor, Inc.
> +	00bc  Marvell JTAG Probe
> +	1fab  88W8338 [Libertas] 802.11g
> +	2001  88W8388 802.11a/b/g WLAN
> +	2006  88W8362 802.11n WLAN
> +	203c  K30326 802.11bgn Wireless Module [Marvell 88W8786U]
> +	204c  Bluetooth and Wireless LAN Composite
> +	8001  BLOB boot loader firmware
> +1291  Qualcomm Flarion Technologies, Inc. / Leadtek Research, Inc.
> +	0010  FDM 2xxx Flash-OFDM modem
> +	0011  LR7F06/LR7F14 Flash-OFDM modem
> +1292  Innomedia
> +	0258  Creative Labs VoIP Blaster
> +	4154  Retro Link Atari cable
> +1293  Belkin Components [hex]
> +	0002  F5U002 Parallel Port [uss720]
> +	2101  104-key keyboard
> +1294  RISO KAGAKU CORP.
> +	1320  Webmail Notifier
> +1297  DekTec
> +	020f  DTU-215 Multi-Standard Modulator
> +129b  CyberTAN Technology
> +	160b  Siemens S30853-S1031-R351 802.11g Wireless Adapter [Atheros AR5523]
> +	160c  Siemens S30853-S1038-R351 802.11g Wireless Adapter [Atheros AR5523]
> +	1666  TG54USB 802.11bg
> +	1667  802.11bg
> +	1828  Gigaset USB Adapter 300
> +12a7  Trendchip Technologies Corp.
> +12ab  Honey Bee Electronic International Ltd.
> +	0004  Dance Pad for Xbox 360
> +	0301  Afterglow Wired Controller for Xbox 360
> +	0303  Mortal Kombat Klassic FightStick for Xbox 360
> +	8809  Dance Dance Revolution Dance Pad
> +12b8  Zhejiang Xinya Electronic Technology Co., Ltd.
> +12b9  E28
> +12ba  Licensed by Sony Computer Entertainment America
> +	0032  Wireless Stereo Headset
> +	0042  Wireless Stereo Headset
> +	00ff  Rocksmith Guitar Adapter
> +	0100  RedOctane Guitar for PlayStation(R)3
> +	0120  RedOctane Drum Kit for PlayStation(R)3
> +	0200  Harmonix Guitar for PlayStation(R)3
> +	0210  Harmonix Drum Kit for PlayStation(R)3
> +12bd  Gembird
> +	d012  JPD Shockforce gamepad
> +	d015  Generic 4-button NES USB Controller
> +12c4  Autocue Group Ltd
> +	0006  Teleprompter Two-button Hand Control (v1)
> +	0008  Teleprompter Foot Control (v1)
> +12cf  DEXIN
> +	0170  Tt eSPORTS BLACK Gaming mouse
> +	600b  Cougar 600M Gaming Mouse
> +12d1  Huawei Technologies Co., Ltd.
> +	1001  E161/E169/E620/E800 HSDPA Modem
> +	1003  E220 HSDPA Modem / E230/E270/E870 HSDPA/HSUPA Modem
> +	1004  E220 (bis)
> +	1009  U120
> +	1010  ETS2252+ CDMA Fixed Wireless Terminal
> +	1021  U8520
> +	1035  U8120
> +	1037  Ideos
> +	1038  Ideos (debug mode)
> +	1039  Ideos (tethering mode)
> +	1052  MT7-L09 / P7-L10 / Y330-U01
> +	1053  P7-L10 (PTP)
> +	1054  P7-L10 (PTP + debug)
> +	1079  GEM-703LT [Honor/MediaPad X2]
> +	107e  P10 smartphone
> +	1404  EM770W miniPCI WCDMA Modem
> +	1406  E1750
> +	140b  EC1260 Wireless Data Modem HSD USB Card
> +	140c  E180v
> +	1412  EC168c
> +	1436  Broadband stick
> +	1446  HSPA modem
> +	1465  K3765 HSPA
> +	14ac  E815
> +	14c3  K5005 Vodafone LTE/UMTS/GSM Modem/Networkcard
> +	14c8  K5005 Vodafone LTE/UMTS/GSM MOdem/Networkcard
> +	14c9  K3770 3G Modem
> +	14cf  K3772
> +	14d1  K3770 3G Modem (Mass Storage Mode)
> +	14db  E353/E3131
> +	14dc  E3372 LTE/UMTS/GSM HiLink Modem/Networkcard
> +	14f1  Gobi 3000 HSPA+ Modem
> +	14fe  Modem (Mass Storage Mode)
> +	1501  Pulse
> +	1505  E398 LTE/UMTS/GSM Modem/Networkcard
> +	1506  Modem/Networkcard
> +	150a  E398 LTE/UMTS/GSM Modem/Networkcard
> +	1520  K3765 HSPA
> +	1521  K4505 HSPA+
> +	155a  R205 Mobile WiFi (CD-ROM mode)
> +	1573  ME909u-521 mPCIe LTE/GPS card
> +	1575  K5150 LTE modem
> +	15bb  ME936 LTE/HSDPA+ 4G modem
> +	15c1  ME906s LTE M.2 Module
> +	15ca  E3131 3G/UMTS/HSPA+ Modem (Mass Storage Mode)
> +	1805  AT&T Go Phone U2800A phone
> +	1c05  Broadband stick (modem on)
> +	1c0b  E173s 3G broadband stick (modem off)
> +	1c20  R205 Mobile WiFi (Charging)
> +	1d50  ET302s TD-SCDMA/TD-HSDPA Mobile Broadband
> +	1f01  E353/E3131 (Mass storage mode)
> +	1f16  K5150 LTE modem (Mass Storage Mode)
> +	360e  Y330-U01 (MTP Mode)
> +	380b  WiMAX USB modem(s)
> +12d2  LINE TECH INDUSTRIAL CO., LTD.
> +12d3  LINAK
> +	0002  DeskLine CBD Control Box
> +12d6  EMS Dr. Thomas Wuensche
> +	0444  CPC-USB/ARM7
> +	0888  CPC-USB/M16C
> +12d7  BETTER WIRE FACTORY CO., LTD.
> +12d8  Araneus Information Systems Oy
> +	0001  Alea I True Random Number Generator
> +12e6  Waldorf Music GmbH
> +	0013  Blofeld
> +12ef  Tapwave, Inc.
> +	0100  Tapwave Handheld [Tapwave Zodiac]
> +12f2  ViewPlus Technologies, Inc.
> +	000a  Braille embosser [SpotDot Emprint]
> +12f5  Dynamic System Electronics Corp.
> +12f7  Memorex Products, Inc.
> +	1a00  TD Classic 003B
> +	1e23  TravelDrive 2007 Flash Drive
> +12fd  AIN Comm. Technology Co., Ltd
> +	1001  AWU2000b 802.11b Stick
> +12ff  Fascinating Electronics, Inc.
> +	0101  Advanced RC Servo Controller
> +1306  FM20 Barcode Scanner
> +1307  Transcend Information, Inc.
> +	0163  256MB/512MB/1GB Flash Drive
> +	0165  2GB/4GB/8GB Flash Drive
> +	0190  Ut190 8 GB Flash Drive with MicroSD reader
> +	0310  SD/MicroSD CardReader [hama]/IT1327E [Basic Line flash drive]
> +	0330  63-in-1 Multi-Card Reader/Writer
> +	0361  CR-75: 51-in-1 Card Reader/Writer [Sakar]
> +	1169  TS2GJF210 JetFlash 210 2GB
> +	1171  Fingerprint Reader
> +1308  Shuttle, Inc.
> +	0003  VFD Module
> +	c001  eHome Infrared Transceiver
> +1310  Roper
> +	0001  Class 1 Bluetooth Dongle
> +1312  ICS Electronics
> +1313  ThorLabs
> +	0010  LC1 Linear Camera (Jungo)
> +	0011  SP1 Spectrometer (Jungo)
> +	0012  SP2 Spectrometer (Jungo)
> +	0110  LC1 Linear Camera (VISA)
> +	0111  SP1 Spectrometer (VISA)
> +	0112  SP2 Spectrometer (VISA)
> +	8001  TXP-Series Slot (TXP5001, TXP5004)
> +	8011  BP1 Slit Beam Profiler
> +	8012  BC106 Camera Beam Profiler
> +	8013  WFS10 Wavefront Sensor
> +	8016  DMP40 Deformable Mirror
> +	8017  BC206 Camera Beam Profiler
> +	8019  BP2 Multi Slit Beam Profiler
> +	8020  PM300 Optical Power Meter
> +	8021  PM300E Optical Power and Energy Meter
> +	8022  PM320E Optical Power and Energy Meter
> +	8025  WFS20 Wavefront Sensor
> +	8030  ER100 Extinction Ratio Meter
> +	8039  PAX1000 Rotating Waveplate Polarimeter
> +	8047  CLD1000
> +	8048  TED4000
> +	8049  LDC4000
> +	804a  ITC4000
> +	8058  LC-100
> +	8060  DC3100
> +	8061  DC4100
> +	8062  DC2100
> +	8065  CS2010
> +	8066  DC4104
> +	8070  PM100D
> +	8072  PM100USB Power and Energy Meter Interface
> +	8073  PM106 Wireless Powermeter Photodiode Sensor
> +	8074  PM160T Wireless Powermeter Thermal Sensor
> +	8075  PM400 Handheld Optical Power/Energy Meter
> +	8076  PM101 Serial PD Power Meter
> +	8078  PM100D Compact Power and Energy Meter Console
> +	8080  CCS100 - Compact Spectrometer
> +	8081  CCS100 Compact Spectrometer
> +	8083  CCS125 Spectrometer
> +	8085  CCS150 UV Spectrometer
> +	8087  CCS175 NIR Spectrometer
> +	8089  CCS200 Wide Range Spectrometer
> +	8090  SPCM Single Photon Counter
> +	80a0  LC100 series smart line camera
> +	80b0  PM200 Handheld Power and Energy Meter
> +	80c0  DC2200
> +	80c9  MTD Series
> +	80f0  TSP01
> +	80f1  M2SET Dongle
> +	8180  OCT Probe Controller (OCTH-1300)
> +	8181  OCT Device
> +131d  Natural Point
> +	0155  TrackIR 3 Pro Head Tracker
> +	0156  TrackIR 4 Pro Head Tracker
> +	0158  TrackIR 5 Pro Head Tracker
> +1325  ams AG
> +	00d6  I2C/SPI InterfaceBoard
> +	0c08  Embedded Linux Sensor Bridge
> +	4002  I2C Dongle
> +132a  Envara Inc.
> +	1502  WiND 802.11abg / 802.11bg WLAN
> +132b  Konica Minolta
> +	0000  Dimage A2 Camera
> +	0001  Minolta DiMAGE A2 (ptp)
> +	0003  Dimage Xg Camera
> +	0006  Dimage Z2 Camera
> +	0007  Minolta DiMAGE Z2 (PictBridge mode)
> +	0008  Dimage X21 Camera
> +	000a  Dimage Scan Dual IV AF-3200 (2891)
> +	000b  Dimage Z10 Camera
> +	000d  Dimage X50 Camera [storage?]
> +	000f  Dimage X50 Camera [p2p?]
> +	0010  Dimage G600 Camera
> +	0012  Dimage Scan Elite 5400 II (2892)
> +	0013  Dimage X31 Camera
> +	0015  Dimage G530 Camera
> +	0017  Dimage Z3 Camera
> +	0018  Minolta DiMAGE Z3 (PictBridge mode)
> +	0019  Dimage A200 Camera
> +	0021  Dimage Z5 Camera
> +	0022  Minolta DiMAGE Z5 (PictBridge mode)
> +	002c  Dynax 5D camera
> +	2001  Magicolor 2400w
> +	2004  Magicolor 5430DL
> +	2005  Magicolor 2430 DL
> +	2029  Magicolor 5440DL
> +	2030  PagePro 1350E(N)
> +	2033  PagePro 1400W
> +	2043  Magicolor 2530DL
> +	2045  Magicolor 2500W
> +	2049  Magicolor 2490MF
> +133e  Kemper Digital GmbH
> +	0815  Virus TI Desktop
> +1342  Mobility
> +	0200  EasiDock 200 Hub
> +	0201  EasiDock 200 Keyboard and Mouse Port
> +	0202  EasiDock 200 Serial Port
> +	0203  EasiDock 200 Printer Port
> +	0204  Ethernet
> +	0304  EasiDock Ethernet
> +1343  Citizen Systems
> +	0002  CW-01
> +	0003  CX / DNP DS40
> +	0004  CX-W / DNP DS80 / Mitsubishi CP3800
> +	0005  CY / DNP DSRX1
> +	0006  CW-02 / OP900ii
> +	0007  DNP DS80DX
> +	0008  DNP DS620 (old)
> +	000a  CX-02
> +	000b  CX-02W
> +1345  Sino Lite Technology Corp.
> +	001c  Xbox Controller Hub
> +	6006  Defender Wireless Controller
> +1347  Moravian Instruments
> +	0400  G2CCD USB 1.1 obsolete
> +	0401  G2CCD-S with Sony ICX285 CCD
> +	0402  G2CCD2
> +	0403  G2/G3CCD-I KAI CCD
> +	0404  G2/G3/G4 CCD-F KAF CCD
> +	0405  Gx CCD-I CCD
> +	0406  Gx CCD-F CCD
> +	0410  G1-0400 CCD
> +	0411  G1-0800 CCD
> +	0412  G1-0300 CCD
> +	0413  G1-2000 CCD
> +	0414  G1-1400 CCD
> +	0415  G1-1200 CCD
> +	04b0  Gx CCD-B CCD
> +	04b1  Gx CCD-BI CCD
> +1348  Katsuragawa Electric Co., Ltd.
> +134c  PanJit International Inc.
> +	0001  Touch Panel Controller
> +	0002  Touch Panel Controller
> +	0003  Touch Panel Controller
> +	0004  Touch Panel Controller
> +134e  Digby's Bitpile, Inc. DBA D Bit
> +1357  P&E Microcomputer Systems
> +	0089  OpenSDA - CDC Serial Port
> +	0503  USB-ML-12 HCS08/HCS12 Multilink
> +	0504  DEMOJM
> +	1000  Smart Control Touchpad
> +135e  Insta GmbH
> +	0021  Berker KNX Data Interface
> +	0022  Gira KNX Data Interface
> +	0023  JUNG KNX Data Interface
> +	0024  Merten/Schneider Electric KNX Data Interface
> +	0025  Hager KNX Data Interface
> +	0026  Feller KNX Data Interface
> +135f  Control Development Inc.
> +	0110  Linear Spectrograph
> +	0111  Spectrograph - Renumerated
> +	0200  Linear Spectrograph
> +	0201  Spectrograph - Renumerated
> +	0240  MPP Spectrograph
> +1366  SEGGER
> +	0101  J-Link PLUS
> +	1015  J-Link
> +136b  STEC
> +136e  Andor Technology Ltd.
> +	0012  iXon Ultra CCD
> +	0014  Zyla 5.5 sCMOS camera
> +1370  Swissbit
> +	0323  Swissmemory cirrusWHITE
> +	6828  Victorinox Flash Drive
> +1371  CNet Technology Inc.
> +	0001  CNUSB-611AR Wireless Adapter-G [AT76C503]
> +	0002  CNUSB-611AR Wireless Adapter-G [AT76C503] (FiberLine WL-240U)
> +	0013  CNUSB-611 Wireless Adapter [AT76C505]
> +	0014  CNUSB-611 Wireless Adapter [AT76C505] (FiberLine WL-240U)
> +	5743  CNUSB-611 (D) Wireless Adapter [AT76C503]
> +	9022  CWD-854 [RT2573]
> +	9032  CWD-854 rev F
> +	9401  CWD-854 Wireless 802.11g 54Mbps Network Adapter [RTL8187]
> +1376  Vimtron Electronics Co., Ltd.
> +1377  Sennheiser electronic GmbH & Co. KG
> +	4000  HDVD800
> +137b  SCAPS GmbH
> +	0002  SCAPS USC-2 Scanner Controller
> +137c  YASKAWA ELECTRIC CORP.
> +	0220  MP Series
> +	0250  SIGMA Series
> +	0401  AC Drive
> +1385  Netgear, Inc
> +	4250  WG111T
> +	4251  WG111T (no firmware)
> +	5f00  WPN111 RangeMax(TM) Wireless USB 2.0 Adapter
> +	5f01  WPN111 (no firmware)
> +	5f02  WPN111 (no firmware)
> +	6e00  WPNT121 802.11g 240Mbps Wireless Adapter [Airgo AGN300]
> +138a  Validity Sensors, Inc.
> +	0001  VFS101 Fingerprint Reader
> +	0005  VFS301 Fingerprint Reader
> +	0007  VFS451 Fingerprint Reader
> +	0008  VFS300 Fingerprint Reader
> +	0010  VFS Fingerprint sensor
> +	0011  VFS5011 Fingerprint Reader
> +	0015  VFS 5011 fingerprint sensor
> +	0017  VFS 5011 fingerprint sensor
> +	0018  Fingerprint scanner
> +	003c  VFS471 Fingerprint Reader
> +	003d  VFS491
> +	003f  VFS495 Fingerprint Reader
> +	0050  Swipe Fingerprint Sensor
> +	0090  VFS7500 Touch Fingerprint Sensor
> +	0091  VFS7552 Touch Fingerprint Sensor
> +138e  Jungo LTD
> +	9000  Raisonance S.A. STM32 ARM evaluation board / RLink dongle
> +1390  TOMTOM B.V.
> +	0001  GO 520 T / GO 630 / ONE / ONE XL
> +	5454  Blue & Me 2
> +	7474  GPS Sport Watch [Runner, Multi-Sport]
> +	a001  Bandit Action Camera Batt-Stick
> +1391  IdealTEK, Inc.
> +	1000  URTC-1000
> +1395  Sennheiser Communications
> +	0025  Headset [PC 8]
> +	0026  SC230
> +	0027  SC260
> +	0028  SC230 CTRL
> +	0029  SC260 CTRL
> +	002a  SC230 for Lync
> +	002b  SC260 for Lync
> +	002d  BTD-800
> +	002e  Presence
> +	0030  CEHS-CI 02
> +	0031  U320 Gaming
> +	0032  SC30 for Lync
> +	0033  SC60 for Lync
> +	0034  SC30 Control
> +	0035  SC60 Control
> +	0036  SC630 for Lync
> +	0037  SC660 for Lync
> +	0038  SC630 CTRL
> +	0039  SC660 CTRL
> +	003f  SP 20
> +	0040  MB Pro 1/2
> +	0041  SP 20 for Lync
> +	0042  SP 10
> +	0043  SP 10 for Lync
> +	0046  PXC 550
> +	004a  MOMENTUM M2 OEBT
> +	004b  MOMENTUM M2 AEBT
> +	004f  SC230 for MS II
> +	0050  SC260 for MS II
> +	0051  USB-ED CC 01
> +	0058  USB-ED CC 01 for MS
> +	0059  SC40 for MS
> +	005a  SC70 for MS
> +	005b  SC40 CTRL
> +	005c  SC70 CTRL
> +	0060  SCx5 MS
> +	0061  SCx5 CTRL
> +	0064  MB 660 MS
> +	0065  MB 660
> +	0066  SP 20 D UC
> +	0067  SP 20 D MS
> +	006b  SC5x5 MS
> +	0072  Headset
> +	3556  USB Headset
> +1397  BEHRINGER International GmbH
> +	0004  FCA1616
> +	00bc  BCF2000
> +1398  Q-tec
> +	2103  USB 2.0 Storage Device
> +13ad  Baltech
> +	9999  Card reader
> +13b0  PerkinElmer Optoelectronics
> +	000a  Alesis Photon X25 MIDI Controller
> +13b1  Linksys
> +	000a  WUSB54G v2 802.11g Adapter [Intersil ISL3887]
> +	000b  WUSB11 v4.0 802.11b Adapter [ALi M4301]
> +	000c  WUSB54AG 802.11a/g Adapter [Intersil ISL3887]
> +	000d  WUSB54G v4 802.11g Adapter [Ralink RT2500USB]
> +	000e  WUSB54GS v1 802.11g Adapter [Broadcom 4320 USB]
> +	0011  WUSB54GP v4.0 802.11g Adapter [Ralink RT2500USB]
> +	0014  WUSB54GS v2 802.11g Adapter [Broadcom 4320 USB]
> +	0018  USB200M 10/100 Ethernet Adapter
> +	001a  HU200TS Wireless Adapter
> +	001e  WUSBF54G 802.11bg
> +	0020  WUSB54GC v1 802.11g Adapter [Ralink RT73]
> +	0022  WUSB54GX4 802.11g 240Mbps Wireless Adapter [Airgo AGN300]
> +	0023  WUSB54GR
> +	0024  WUSBF54G v1.1 802.11bg
> +	0026  WUSB54GSC v1 802.11g Adapter [Broadcom 4320 USB]
> +	0028  WUSB200 802.11g Adapter [Ralink RT2671]
> +	0029  WUSB300N 802.11bgn Wireless Adapter [Marvell 88W8362+88W8060]
> +	002f  AE1000 v1 802.11n [Ralink RT3572]
> +	0031  AM10 v1 802.11n [Ralink RT3072]
> +	0039  AE1200 802.11bgn Wireless Adapter [Broadcom BCM43235]
> +	003a  AE2500 802.11abgn Wireless Adapter [Broadcom BCM43236]
> +	003b  AE3000 802.11abgn (3x3) Wireless Adapter [Ralink RT3573]
> +	003e  AE6000 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7610U]
> +	003f  WUSB6300 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU]
> +	0041  Gigabit Ethernet Adapter
> +	0042  WUSB6100M 802.11a/b/g/n/ac Wireless Adapter
> +	13b1  WUSB200: Wireless-G Business Network Adapter with Rangebooster
> +13b2  Alesis
> +	0030  Multimix 8
> +13b3  Nippon Dics Co., Ltd.
> +13ba  PCPlay
> +	0001  Konig Electronic CMP-KEYPAD12 Numeric Keypad
> +	0017  PS/2 Keyboard+Mouse Adapter
> +	0018  Barcode PCP-BCG4209
> +13be  Ricoh Printing Systems, Ltd.
> +13ca  JyeTai Precision Industrial Co., Ltd.
> +13cf  Wisair Ltd.
> +	1200  Olidata Wireless Multimedia Adapter
> +13d0  Techsan Electronics Co., Ltd.
> +	2282  TechniSat DVB-PC TV Star 2
> +13d1  A-Max Technology Macao Commercial Offshore Co. Ltd.
> +	7019  MD 82288
> +	abe6  Wireless 802.11g 54Mbps Network Adapter [RTL8187]
> +13d2  Shark Multimedia
> +	0400  Pocket Ethernet [klsi]
> +13d3  IMC Networks
> +	3201  VisionDTV USB-Ter/HAMA USB DVB-T device cold
> +	3202  VisionDTV USB-Ter/HAMA USB DVB-T device warm
> +	3203  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
> +	3204  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
> +	3205  DNTV Live! Tiny USB2 BDA (No Remote)
> +	3206  DNTV Live! Tiny USB2 BDA (No Remote)
> +	3207  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
> +	3208  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
> +	3209  DTV-DVB UDST7022BDA DVB-S Box(Without HID)
> +	3211  DTV-DVB Hybrid Analog/Capture / Pinnacle PCTV 310e
> +	3212  DTV-DVB UDTT704C - DVBT/NTSC/PAL Driver(PCM4)
> +	3213  DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver (PCM4)
> +	3214  DTV-DVB UDTT704F -(MiniCard) DVBT/NTSC/PAL Driver(Without HID)
> +	3215  DTV-DVB UDAT7240 - ATSC/NTSC/PAL Driver(PCM4)
> +	3216  DTV-DVB UDTT 7047-USB 2.0 DVB-T Driver
> +	3217  Digital-TV Receiver.
> +	3219  DTV-DVB UDTT7049 - DVB-T Driver(Without HID)
> +	3220  DTV-DVB UDTT 7047M-USB 2.0 DVB-T Driver
> +	3223  DNTV Live! Tiny USB2 BDA (No Remote)
> +	3224  DNTV Live! Tiny USB2 BDA (No Remote)
> +	3226  DigitalNow TinyTwin DVB-T Receiver
> +	3234  DVB-T FTA Half Minicard [RTL2832U]
> +	3236  DTV-DVB UDTT 7047A-USB 2.0 DVB-T Driver
> +	3237  DTV-DVB UDTT 704J - dual DVB-T Driver
> +	3239  DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver(Without HID)
> +	3240  DTV-DVB UDXTTM6010 - A/D Driver(Without HID)
> +	3241  DTV-DVB UDXTTM6010 - A/D Driver(Without HID)
> +	3242  DTV-DVB UDAT7240LP - ATSC/NTSC/PAL Driver(Without HID)
> +	3243  DTV-DVB UDXTTM6010 - A/D Driver(Without HID)
> +	3244  DTV-DVB UDTT 7047Z-USB 2.0 DVB-T Driver
> +	3247  AW-NU222 802.11bgn Wireless Module [Ralink RT2770+RT2720]
> +	3249  Internal Bluetooth
> +	3250  Broadcom Bluetooth 2.1
> +	3262  802.11 n/g/b Wireless LAN USB Adapter
> +	3273  802.11 n/g/b Wireless LAN USB Mini-Card
> +	3274  DVB-T Dongle [RTL2832U]
> +	3282  DVB-T + GPS Minicard [RTL2832U]
> +	3284  Wireless LAN USB Mini-Card
> +	3304  Asus Integrated Bluetooth module [AR3011]
> +	3306  Mediao 802.11n WLAN [Realtek RTL8191SU]
> +	3315  Bluetooth module
> +	3327  AW-NU137 802.11bgn Wireless Module [Atheros AR9271]
> +	3362  Atheros AR3012 Bluetooth 4.0 Adapter
> +	3375  Atheros AR3012 Bluetooth 4.0 Adapter
> +	3392  Azurewave 43228+20702
> +	3394  Bluetooth
> +	3474  Atheros AR3012 Bluetooth
> +	3526  Bluetooth Radio
> +	5070  Webcam
> +	5111  Integrated Webcam
> +	5115  Integrated Webcam
> +	5116  Integrated Webcam
> +	5122  2M Integrated Webcam
> +	5126  PC Cam
> +	5130  Integrated Webcam
> +	5134  Integrated Webcam
> +	5615  Lenovo EasyCamera
> +	5670  HP TrueVision HD
> +	5682  SunplusIT Integrated Camera
> +	5702  UVC VGA Webcam
> +	5710  UVC VGA Webcam
> +	5716  UVC VGA Webcam
> +	5a07  VGA UVC WebCam
> +	7020  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
> +	7022  DTV-DVB UDST7022BDA DVB-S Box(Without HID)
> +	784b  XHC Camera
> +13d7  Guidance Software, Inc.
> +	0001  T5 PATA forensic bridge
> +	000c  T8-R2 forensic bridge
> +13dc  ALEREON, INC.
> +13dd  i.Tech Dynamic Limited
> +13e1  Kaibo Wire & Cable (Shenzhen) Co., Ltd.
> +13e5  Rane
> +	0001  SL-1
> +	0003  TTM 57SL
> +13e6  TechnoScope Co., Ltd.
> +13ea  Hengstler
> +	0001  C-56 Thermal Printer
> +13ec  Zydacron
> +	0006  HID Remote Control
> +13ee  MosArt
> +	0001  Optical Mouse
> +	0003  Optical Mouse
> +13fd  Initio Corporation
> +	0550  INIC-1530 PATA Bridge
> +	0840  INIC-1618L SATA
> +	0841  Samsung SE-T084M DVD-RW
> +	0940  ASUS SBW-06D2X-U
> +	1040  INIC-1511L PATA Bridge
> +	1340  Hi-Speed USB to SATA Bridge
> +	160f  RocketFish SATA Bridge [INIC-1611]
> +	1640  INIC-1610L SATA Bridge
> +	1669  INIC-1609PN
> +	1840  INIC-1608 SATA bridge
> +	1e40  INIC-1610P SATA bridge
> +	2040  Samsung Writemaster external DVD writer
> +	3920  INIC-3619PN SATA Bridge
> +	3940  external DVD burner ECD819-SU3
> +	3960  INIC-3639
> +	3e40  ZALMAN ZM-VE350
> +13fe  Kingston Technology Company Inc.
> +	1a00  512MB/1GB Flash Drive
> +	1a23  512MB Flash Drive
> +	1d00  DataTraveler 2.0 1GB/4GB Flash Drive / Patriot Xporter 4GB Flash Drive
> +	1e00  Flash Drive 2 GB [ICIDU 2 GB]
> +	1e50  U3 Smart Drive
> +	1f00  Kingston DataTraveler / Patriot Xporter
> +	1f23  PS2232 flash drive controller
> +	2240  microSD card reader
> +	3100  2/4 GB stick
> +	3123  Verbatim STORE N GO 4GB
> +	3200  flash drive (2GB, EMTEC)
> +	3600  flash drive (4GB, EMTEC)
> +	3800  Rage XT Flash Drive
> +	3d00  Flash Drive
> +	3e00  Flash Drive
> +	4100  Flash drive
> +	4200  Platinum USB drive mini
> +	5000  USB flash drive (32 GB SHARKOON Accelerate)
> +	5100  Flash Drive
> +	5200  DataTraveler R3.0
> +	5500  Flash drive
> +	6300  SP Mobile C31 (64GB)
> +1400  Axxion Group Corp.
> +1402  Bowe Bell & Howell
> +1403  Sitronix
> +	0001  Digital Photo Frame
> +	0003  Digital Photo Frame (DPF-1104)
> +1404  Fundamental Software, Inc.
> +	cddc  Dongle
> +1409  IDS Imaging Development Systems GmbH
> +	1000  generic (firmware not loaded yet)
> +	1485  uEye UI1485
> +	3240  uEye UI3240
> +140e  Telechips, Inc.
> +	b011  TCC780X-based player (USB Boot mode)
> +	b021  TCC77X-based players (USB Boot mode)
> +1410  Novatel Wireless
> +	1110  Merlin S620
> +	1120  Merlin EX720
> +	1130  Merlin S720
> +	1400  Merlin U730/U740 (Vodafone)
> +	1410  Merlin U740 (non-Vodafone)
> +	1430  Merlin XU870
> +	1450  Merlin X950D
> +	2110  Ovation U720/MCD3000
> +	2410  Expedite EU740
> +	2420  Expedite EU850D/EU860D/EU870D
> +	4100  U727
> +	4400  Ovation MC930D/MC950D
> +	9010  Expedite E362
> +	a001  Gobi Wireless Modem
> +	a008  Gobi Wireless Modem (QDL mode)
> +	b001  Ovation MC551
> +1415  Nam Tai E&E Products Ltd. or OmniVision Technologies, Inc.
> +	0000  Sony SingStar USBMIC
> +	0020  Sony Wireless SingStar
> +	2000  Sony Playstation Eye
> +1419  ABILITY ENTERPRISE CO., LTD.
> +1421  Sensor Technology
> +	0605  Sentech Camera
> +1424  Posnet Polska S.A.
> +	1001  Temo
> +	1002  Thermal
> +	1003  Neo
> +	1004  Combo DF
> +	1005  Thermal-A
> +	1006  Thermal FV
> +	1007  Bingo HS
> +	1008  Thermal HS FV
> +	1009  Thermal FV EJ
> +	100a  Thermal HD
> +	100b  Thermal
> +	100c  Neo
> +	100d  Ergo
> +	100e  Trio
> +	1010  Thermal HS FV EJ
> +	1011  Neo EJ
> +	1012  Thermal-A
> +	1013  Thermal-A EJ
> +	1014  Mobile
> +	1015  Temo HS
> +	1016  Mobile HS
> +	1017  TH230+ FV EJ
> +	1018  4610-1NR FV EJ
> +1429  Vega Technologies Industrial (Austria) Co.
> +142a  Thales E-Transactions
> +	0003  Artema Hybrid
> +	0005  Artema Modular
> +	0043  medCompact
> +142b  Arbiter Systems, Inc.
> +	03a5  933A Portable Power Sentinel
> +1430  RedOctane
> +	0150  wireless receiver for skylanders wii
> +	4734  Guitar Hero4 hub
> +	4748  Guitar Hero X-plorer
> +	474b  Guitar Hero MIDI interface
> +	8888  TX6500+ Dance Pad
> +	f801  Controller
> +1431  Pertech Resources, Inc.
> +1435  Wistron NeWeb
> +	0427  UR054g 802.11g Wireless Adapter [Intersil ISL3887]
> +	0711  UR055G 802.11bg
> +	0804  AR9170+AR9104 802.11abgn Wireless Adapter
> +	0826  AR5523
> +	0827  AR5523 (no firmware)
> +	0828  AR5523
> +	0829  AR5523 (no firmware)
> +1436  Denali Software, Inc.
> +143c  Altek Corporation
> +1443  Digilent
> +	0007  Development board JTAG
> +1446  X.J.GROUP
> +	6a73  Stamps.com Model 510 5LB Scale
> +	6a78  DYMO Endicia 75lb Digital Scale
> +1451  Force Dimension
> +	0301  haptic device
> +	0302  haptic device
> +	0400  haptic device
> +	0401  delta.x haptic device
> +	0402  omega.x haptic device
> +	0403  sigma.x haptic device
> +	0404  haptic controller
> +	0405  dedicated haptic device
> +	0406  dedicated haptic device
> +	0407  dedicated haptic device
> +	0408  dedicated haptic device
> +1452  Dai Nippon Printing, Inc
> +	8b01  DS620
> +	9001  DS820
> +1453  Radio Shack
> +	4026  26-183 Serial Cable
> +1456  Extending Wire & Cable Co., Ltd.
> +1457  First International Computer, Inc.
> +	5117  OpenMoko Neo1973 kernel usbnet (g_ether, CDC Ethernet) mode
> +	5118  OpenMoko Neo1973 Debug board (V2+)
> +	5119  OpenMoko Neo1973 u-boot cdc_acm serial port
> +	511a  HXD8 u-boot usbtty CDC ACM Mode
> +	511b  SMDK2440 u-boot usbtty CDC ACM mode
> +	511c  SMDK2443 u-boot usbtty CDC ACM mode
> +	511d  QT2410 u-boot usbtty CDC ACM mode
> +	5120  OpenMoko Neo1973 u-boot usbtty generic serial
> +	5121  OpenMoko Neo1973 kernel mass storage (g_storage) mode
> +	5122  OpenMoko Neo1973 / Neo Freerunner kernel cdc_ether USB network
> +	5123  OpenMoko Neo1973 internal USB CSR4 module
> +	5124  OpenMoko Neo1973 Bluetooth Device ID service
> +145f  Trust
> +	0106  K56 V92 Modem
> +	013d  PC Camera (SN9C201 + OV7660)
> +	013f  Megapixel Auto Focus Webcam
> +	0142  WB-6250X Webcam
> +	015a  WB-8300X 2MP Webcam
> +	0161  15901 802.11bg Wireless Adapter [Realtek RTL8187L]
> +	0167  Widescreen 3MP Webcam
> +	0176  Isla Keyboard
> +	019f  17676 Webcam
> +	01e5  Keyboard [GXT 830]
> +	0212  Panora Widescreen Graphic Tablet
> +	023f  Mouse [GXT 168]
> +1460  Tatung Co.
> +	9150  eHome Infrared Transceiver
> +1461  Staccato Communications
> +1462  Micro Star International
> +	5512  MegaStick-1 Flash Stick
> +	8807  DIGIVOX mini III [af9015]
> +146b  BigBen Interactive
> +	0601  Controller for Xbox 360
> +	0902  Wired Mini PS3 Game Controller
> +1472  Huawei-3Com
> +	0007  Aolynk WUB300g [ZyDAS ZD1211]
> +	0009  Aolynk WUB320g
> +147a  Formosa Industrial Computing, Inc.
> +	e015  eHome Infrared Receiver
> +	e016  eHome Infrared Receiver
> +	e017  eHome Infrared Receiver
> +	e018  eHome Infrared Receiver
> +	e02c  Infrared Receiver
> +	e03a  eHome Infrared Receiver
> +	e03c  eHome Infrared Receiver
> +	e03d  2 Channel Audio
> +	e03e  Infrared Receiver [IR605A/Q]
> +147e  Upek
> +	1000  Biometric Touchchip/Touchstrip Fingerprint Sensor
> +	1001  TCS5B Fingerprint sensor
> +	1002  Biometric Touchchip/Touchstrip Fingerprint Sensor
> +	2016  Biometric Touchchip/Touchstrip Fingerprint Sensor
> +	2020  TouchChip Fingerprint Coprocessor (WBF advanced mode)
> +	3000  TCS1C EIM/Cypress Fingerprint sensor
> +	3001  TCS1C EIM/STM32 Fingerprint sensor
> +147f  Hama GmbH & Co., KG
> +1482  Vaillant
> +	1005  VRD PC-Interface
> +1484  Elsa AG [hex]
> +	1746  Ecomo 19H99 Monitor
> +	7616  Elsa Hub
> +1485  Silicom
> +	0001  U2E
> +	0002  Psion Gold Port Ethernet
> +1487  DSP Group, Ltd.
> +148e  EVATRONIX SA
> +148f  Ralink Technology, Corp.
> +	1000  Motorola BC4 Bluetooth 3.0+HS Adapter
> +	1706  RT2500USB Wireless Adapter
> +	2070  RT2070 Wireless Adapter
> +	2570  RT2570 Wireless Adapter
> +	2573  RT2501/RT2573 Wireless Adapter
> +	2671  RT2601/RT2671 Wireless Adapter
> +	2770  RT2770 Wireless Adapter
> +	2870  RT2870 Wireless Adapter
> +	3070  RT2870/RT3070 Wireless Adapter
> +	3071  RT3071 Wireless Adapter
> +	3072  RT3072 Wireless Adapter
> +	3370  RT3370 Wireless Adapter
> +	3572  RT3572 Wireless Adapter
> +	3573  RT3573 Wireless Adapter
> +	5370  RT5370 Wireless Adapter
> +	5372  RT5372 Wireless Adapter
> +	5572  RT5572 Wireless Adapter
> +	7601  MT7601U Wireless Adapter
> +	760b  MT7601U Wireless Adapter
> +	761a  MT7610U ("Archer T2U" 2.4G+5G WLAN Adapter
> +	9020  RT2500USB Wireless Adapter
> +	9021  RT2501USB Wireless Adapter
> +1491  Futronic Technology Co. Ltd.
> +	0020  FS81 Fingerprint Scanner Module
> +	0088  Fingerprint Scanner Model FS88
> +1493  Suunto
> +	0010  Bluebird [Ambit]
> +	0019  Duck [Ambit2]
> +	001a  Colibri [Ambit2 S]
> +	001b  Emu [Ambit3 Peak]
> +	001c  Finch [Ambit3 Sport]
> +	001d  Greentit [Ambit2 R]
> +	001e  Ibisbill [Ambit3 Run]
> +1497  Panstrong Company Ltd.
> +1498  Microtek International Inc.
> +	a090  DVB-T Tuner
> +149a  Imagination Technologies
> +	069b  PURE Digital Evoke-1XT Tri-band
> +	2107  DBX1 DSP core
> +14aa  WideView Technology Inc.
> +	0001  Avermedia AverTV DVBT USB1.1 (cold)
> +	0002  Avermedia AverTV DVBT USB1.1 (warm)
> +	0201  AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (cold)
> +	0221  WT-220U DVB-T dongle
> +	022b  WT-220U DVB-T dongle
> +	0301  AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (warm)
> +14ad  CTK Corporation
> +14ae  Printronix Inc.
> +14af  ATP Electronics Inc.
> +14b0  StarTech.com Ltd.
> +	3410  Serial Adapter ICUSB2321X [TUSB3410I]
> +14b2  Ralink Technology, Corp.
> +	3a93  Topcom 802.11bg Wireless Adapter [Atheros AR5523]
> +	3a95  Toshiba WUS-G06G-JT 802.11bg Wireless Adapter [Atheros AR5523]
> +	3a98  Airlink101 AWLL4130 802.11bg Wireless Adapter [Atheros AR5523]
> +	3c02  Conceptronic C54RU v2 802.11bg Wireless Adapter [Ralink RT2571]
> +	3c05  rt2570 802.11g WLAN
> +	3c06  Conceptronic C300RU v1 802.11bgn Wireless Adapter [Ralink RT2870]
> +	3c07  802.11n adapter
> +	3c09  802.11n adapter
> +	3c22  Conceptronic C54RU v3 802.11bg Wireless Adapter [Ralink RT2571W]
> +	3c23  Airlink101 AWLL6080 802.11bgn Wireless Adapter [Ralink RT2870]
> +	3c24  NEC NP01LM 802.11abg Wireless Adapter [Ralink RT2571W]
> +	3c25  DrayTek Vigor N61 802.11bgn Wireless Adapter [Ralink RT2870]
> +	3c27  Airlink101 AWLL6070 802.11bgn Wireless Adapter [Ralink RT2770]
> +	3c28  Conceptronic C300RU v2 802.11bgn Wireless Adapter [Ralink RT2770]
> +	3c2b  NEC NP02LM 802.11bgn Wireless Adapter [Ralink RT3072]
> +	3c2c  Keebox W150NU 802.11bgn Wireless Adapter [Ralink RT3070]
> +14c0  Rockwell Automation, Inc.
> +14c2  Gemlight Computer, Ltd
> +	0250  Storage Adapter V2
> +	0350  Storage Adapter V2
> +14c8  Zytronic
> +	0005  Touchscreen Controller
> +14cd  Super Top
> +	1212  microSD card reader (SY-T18)
> +	121c  microSD card reader
> +	121f  microSD CardReader SY-T18
> +	123a  SD/MMC/RS-MMC Card Reader
> +	125c  SD card reader
> +	127b  SDXC Reader
> +	168a  Elecom Co., Ltd MR-K013 Multicard Reader
> +	6116  M6116 SATA Bridge
> +	6600  M110E PATA bridge
> +	6700  Card Reader
> +	6900  Card Reader
> +	8123  SD MMC Reader
> +	8125  SD MMC Reader
> +	8601  4-Port hub
> +	8608  Hub [Super Top]
> +14d8  JAMER INDUSTRIES CO., LTD.
> +14dd  Raritan Computer, Inc.
> +	1007  D2CIM-VUSB KVM connector
> +14e0  WiNRADiO Communications
> +	0501  WR-G528e 'CHEETAH'
> +14e1  Dialogue Technology Corp.
> +	5000  PenMount 5000 Touch Controller
> +14e5  SAIN Information & Communications Co., Ltd.
> +14ea  Planex Communications
> +	ab10  GW-US54GZ
> +	ab11  GU-1000T
> +	ab13  GW-US54Mini 802.11bg
> +14ed  Shure Inc.
> +	1000  MV5
> +	1002  MV51
> +	1003  MVi
> +	1004  SHA900
> +	1005  KSE1500
> +	1011  MV88+
> +	1100  ANIUSB-MATRIX
> +	1101  P300
> +	29b6  X2u Adapter
> +	3000  RMCE-USB
> +14f7  TechniSat Digital GmbH
> +	0001  SkyStar 2 HD CI
> +	0002  SkyStar 2 HD CI
> +	0003  CableStar Combo HD CI
> +	0004  AirStar TeleStick 2
> +	0500  DVB-PC TV Star HD
> +1500  Ellisys
> +1501  Pine-Tum Enterprise Co., Ltd.
> +1504  Bixolon CO LTD
> +	001f  SRP-350II Thermal Receipt Printer
> +1508  Fibocom
> +1509  First International Computer, Inc.
> +	0a01  LI-3100 Area Meter
> +	0a02  LI-7000 CO2/H2O Gas Analyzer
> +	0a03  C-DiGit Blot Scanner
> +	9242  eHome Infrared Transceiver
> +1513  medMobile
> +	0444  medMobile
> +1514  Actel
> +	2003  FlashPro3 Programmer
> +	2004  FlashPro3 Programmer
> +	2005  FlashPro3 Programmer
> +1516  CompUSA
> +	1603  Flash Drive
> +	8628  Pen Drive
> +1518  Cheshire Engineering Corp.
> +	0001  HDReye High Dynamic Range Camera
> +	0002  HDReye (before firmware loads)
> +1519  Comneon
> +	0020  HSIC Device
> +151f  Opal Kelly Incorporated
> +	0020  XEM3001v1
> +	0021  XEM3001v2
> +	0022  XEM3010
> +	0023  XEM3005
> +	0028  XEM3050
> +	002b  XEM5010
> +	002c  XEM6001
> +	002d  XEM6010-LX45
> +	002e  XEM6010-LX150
> +	0030  XEM6006-LX16
> +	0033  XEM6002-LX9
> +	0034  XEM7001-A15
> +	0036  XEM7010-A50
> +	0037  XEM7010-A200
> +	0120  ZEM4310
> +	0121  XEM6310-LX45
> +	0122  XEM6310-LX150
> +	0123  XEM6310MT-LX45T
> +	0125  XEM7350-K70T
> +	0126  XEM7350-K160T
> +	0127  XEM7350-K410T
> +	0128  XEM6310MT-LX150T
> +	0129  ZEM5305-A2
> +	012b  XEM7360-K160T
> +	012c  XEM7360-K410T
> +	012d  ZEM5310-A4
> +	0130  XEM7310-A75
> +	0131  XEM7310-A200
> +1520  Bitwire Corp.
> +1524  ENE Technology Inc
> +	6680  UTS 6680
> +1527  Silicon Portals
> +	0200  YAP Phone (no firmware)
> +	0201  YAP Phone
> +1529  UBIQUAM Co., Ltd.
> +	3100  CDMA 1xRTT USB Modem (U-100/105/200/300/520)
> +152a  Thesycon Systemsoftware & Consulting GmbH
> +	8350  NET Gmbh iCube Camera
> +	8400  INI DVS128
> +	840d  INI DAViS
> +	841a  INI DAViS FX3
> +152b  MIR Srl
> +	0001  spirobank II
> +	0002  spirolab III
> +	0003  MiniSpir
> +	0004  Oxi
> +	0005  spiros II
> +	0006  smiths spirobank II
> +	0007  smiths spirobank G-USB
> +	0008  smiths MiniSpir
> +	0009  spirobank G-USB
> +	000a  smiths Oxi
> +	000b  smiths spirolab III
> +	000c  chorus III
> +	000d  spirolab III Bw
> +	000e  spirolab III
> +	000f  easySpiro
> +	0010  Spirotel converter
> +	0011  spirobank
> +	0012  spiro3 Zimmer
> +	0013  spirotel serial
> +	0014  spirotel II
> +	0015  spirodoc
> +152d  JMicron Technology Corp. / JMicron USA Technology Corp.
> +	0539  JMS539/567 SuperSpeed SATA II/III 3.0G/6.0G Bridge
> +	0551  JMS551 SuperSpeed two ports SATA 3Gb/s bridge
> +	0561  JMS551 - Sharkoon SATA QuickPort Duo
> +	0562  JMS567 SATA 6Gb/s bridge
> +	0567  JMS567 SATA 6Gb/s bridge
> +	0576  Gen1 SATA 6Gb/s Bridge
> +	0578  JMS578 SATA 6Gb/s
> +	0583  JMS583Gen 2 to PCIe Gen3x2 Bridge
> +	0770  Alienware Integrated Webcam
> +	1561  JMS561U two ports SATA 6Gb/s bridge
> +	1576  External Disk 3.0
> +	2329  JM20329 SATA Bridge
> +	2335  ATA/ATAPI Bridge
> +	2336  Hard Disk Drive
> +	2337  ATA/ATAPI Bridge
> +	2338  JM20337 Hi-Speed USB to SATA & PATA Combo Bridge
> +	2339  JM20339 SATA Bridge
> +	2352  ATA/ATAPI Bridge
> +	2509  JMS539, JMS551 SATA 3Gb/s bridge
> +	2551  JMS551 SATA 3Gb/s bridge
> +	2561  CEB-2235S-U3 external RAID box
> +	2566  JMS566 SATA 3Gb/s bridge
> +	2590  JMS567 SATA 6Gb/s bridge
> +	3562  JMS567 SATA 6Gb/s bridge
> +	3569  JMS566 SATA 3Gb/s bridge
> +	578e  JMS578 SATA 6Gb/s bridge
> +	8561  salcar docking station two disks
> +152e  LG (HLDS)
> +	1640  INIC-1605 SATA Bridge
> +	2507  PL-2507 IDE Controller
> +	2571  GP08NU6W DVD-RW
> +	e001  GSA-5120D DVD-RW
> +1532  Razer USA, Ltd
> +	0001  RZ01-020300 Optical Mouse [Diamondback]
> +	0002  Diamondback Optical Mouse
> +	0003  Krait Mouse
> +	0005  Boomslang CE
> +	0007  DeathAdder Mouse
> +	0009  Gaming Mouse [Tempest Habu]
> +	000a  Mamba (Wired)
> +	000c  Lachesis
> +	000d  DiamondBack 3G
> +	000e  Megalodon
> +	000f  Mamba (Wireless)
> +	0012  Gaming Mouse [Salmosa]
> +	0013  Orochi 2011
> +	0015  Naga Mouse
> +	0016  DeathAdder 3.5G
> +	0017  RZ01-0035 Laser Gaming Mouse [Imperator]
> +	0019  Marauder
> +	001a  Spectre
> +	001b  Gaming Headset
> +	001c  RZ01-0036 Optical Gaming Mouse [Abyssus]
> +	001e  Lachesis (5600 DPI)
> +	001f  Naga Epic (Wired)
> +	0020  Abyssus 1800
> +	0021  Naga Epic Dock (Wireless, Bluetooth)
> +	0022  Gaming Mouse [TRON]
> +	0023  Gaming Keyboard [TRON]
> +	0024  Mamba 2012 (Wired)
> +	0025  Mamba 2012 (Wireless)
> +	0029  DeathAdder Black Edition
> +	002a  Gaming Mouse [Star Wars: The Old Republic]
> +	002b  Gaming Keyboard [Star Wars: The Old Republic]
> +	002c  Gaming Headset [Star Wars: The Old Republic]
> +	002e  RZ01-0058 Gaming Mouse [Naga 2012]
> +	002f  Imperator 2012
> +	0031  Gaming Mouse Dock [Star Wars: The Old Republic]
> +	0032  Ouroboros 2012 (Wired)
> +	0033  Ouroboros 2012 (Wireless)
> +	0034  Taipan
> +	0035  Krait 2013 Essential
> +	0036  RZ01-0075, Gaming Mouse [Naga Hex (Red)]
> +	0037  DeathAdder 2013
> +	0038  DeathAdder 1800
> +	0039  Orochi 2013
> +	003e  Naga Epic Chroma (Wired)
> +	003f  Naga Epic Chroma (Wireless)
> +	0040  Naga 2014
> +	0041  Naga Hex
> +	0042  Abyssus 2014
> +	0043  DeathAdder Chroma
> +	0044  Mamba Chroma (Wired)
> +	0045  Mamba Chroma (Wireless)
> +	0046  Mamba 2015 Tournament Edition [RZ01-01370100-R3]
> +	0048  Orochi 2015 (Wired)
> +	004a  RZ03-0133 Gaming Lapboard, Keyboard Mouse Combo, Dongle [Turret Dongle]
> +	004c  Diamondback Chroma
> +	004d  DeathAdder 2000 (Cynosa Pro Bundle)
> +	004f  RZ01-0145, Gaming Mouse [DeathAdder 2000 (Alternate)]
> +	0050  Naga Hex V2
> +	0053  Naga Chroma
> +	0054  DeathAdder 3500
> +	0056  Orochi 2015 (Wireless)
> +	0059  RZ01-0212 Gaming Mouse [Lancehead (Wired)]
> +	005a  RZ01-0212 Gaming Mouse [Lancehead (Wireless)]
> +	005b  Abyssus V2
> +	005c  DeathAdder Elite
> +	005e  Abyssus 2000
> +	005f  DeathAdder 2000
> +	0060  RZ01-0213 Gaming Mouse [Lancehead Tournament Edition]
> +	0062  Atheris
> +	0064  Basilisk
> +	0065  RZ01-0265, Gaming Mouse [Basilisk Essential]
> +	0067  Naga Trinity
> +	0068  Gaming Mouse Mat [Firefly Hyperflux]
> +	0069  Gaming Mouse [Mamba Hyperflux]
> +	006a  Abyssus Elite (D.Va Edition)
> +	006b  Abyssus Essential
> +	006c  Mamba Elite (Wired)
> +	006e  DeathAdder Essential
> +	006f  RZ01-0257 Gaming Mouse [Lancehead Wireless (2019, Wireless, Receiver)]
> +	0070  RZ01-0257 Gaming Mouse [Lancehead Wireless (2019, Wired)]
> +	0071  RZ01-0254 Gaming Mouse [DeathAdder Essential White Edition]
> +	0072  Mamba 2018 (Wireless)
> +	0073  Mamba 2018 (Wired)
> +	0078  Viper (wired)
> +	007a  RC30-0305 Gaming Mouse [Viper Ultimate (Wired)]
> +	007b  RC30-0305 Gaming Mouse Dongle [Viper Ultimate (Wireless)]
> +	007e  RC30-030502 Mouse Dock
> +	0083  RC30-0315, Gaming Mouse [Basilisk X HyperSpeed]
> +	0084  RZ01-0321 Gaming Mouse [DeathAdder V2]
> +	0085  RZ01-0316 Gaming Mouse [Basilisk V2]
> +	0086  Gaming Mouse [Basilisk Ultimate, Wired]
> +	0088  Gaming Mouse [Basilisk Ultimate, Wireless, Receiver]
> +	008a  RZ01-0325, Gaming Mouse [Viper Mini]
> +	0101  Copperhead Mouse
> +	0102  Tarantula Keyboard
> +	0103  Gaming Keyboard [Reclusa]
> +	0105  Gaming Keyboard [ProType]
> +	0106  Gaming Keyboard [ProType]
> +	0109  Lycosa Keyboard
> +	010b  Gaming Keyboard [Arctosa]
> +	010d  BlackWidow Ultimate 2012
> +	010e  BlackWidow Classic (Alternate)
> +	010f  Anansi
> +	0110  Cyclosa
> +	0111  Nostromo
> +	0113  RZ07-0074 Gaming Keypad [Orbweaver]
> +	0114  DeathStalker Ultimate
> +	0116  Blade Pro (2015)
> +	0118  RZ03-0080, Gaming Keyboard [Deathstalker Essential]
> +	0119  Gaming Keyboard [Lycosa]
> +	011a  BlackWidow Ultimate 2013
> +	011b  BlackWidow Classic
> +	011c  BlackWidow Tournament Edition Stealth
> +	011d  Blade 2013
> +	011e  Gaming Keyboard Dock [Edge Keyboard Dock]
> +	011f  Deathstalker Essential 2014
> +	0200  Gaming Keyboard [Reclusa]
> +	0201  Tartarus
> +	0202  DeathStalker Expert
> +	0203  BlackWidow Chroma
> +	0204  DeathStalker Chroma
> +	0205  Blade Stealth
> +	0207  Orbweaver Chroma keypad
> +	0208  Tartarus Chroma
> +	0209  BlackWidow Tournament Edition Chroma
> +	020d  Cynosa Pro keyboard (Cynosa Pro Bundle)
> +	020f  Blade QHD
> +	0210  Blade Pro (Late 2016)
> +	0211  BlackWidow Chroma (Overwatch)
> +	0214  BlackWidow Ultimate 2016
> +	0215  Core
> +	0216  BlackWidow X Chroma
> +	0217  BlackWidow X Ultimate
> +	021a  BlackWidow X Tournament Edition Chroma
> +	021b  Gaming Keyboard [BlackWidow X Tournament Edition]
> +	021e  Ornata Chroma
> +	021f  Ornata
> +	0220  Blade Stealth (2016)
> +	0221  RZ03-0203 Gaming Keyboard [BlackWidow Chroma V2]
> +	0224  Blade (Late 2016)
> +	0225  Blade Pro (2017)
> +	0226  Huntsman Elite
> +	0227  Huntsman
> +	0228  BlackWidow Elite
> +	022a  Cynosa Chroma
> +	022b  Tartarus V2
> +	022c  Cynosa Chroma Pro
> +	022d  Blade Stealth (Mid 2017)
> +	022f  Blade Pro FullHD (2017)
> +	0232  Blade Stealth (Late 2017)
> +	0233  Blade 15 (2018)
> +	0234  Blade Pro 17 (2019)
> +	0235  BlackWidow Lite (2018)
> +	0237  BlackWidow Essential
> +	0239  Blade Stealth (2019)
> +	023a  Blade 15 (2019) Advanced
> +	023b  Blade 15 (2018) Base Model
> +	023f  RZ03-0274 Gaming Keyboard [Cynosa Lite]
> +	0240  Blade 15 (2018) Mercury
> +	0241  BlackWidow (2019)
> +	0243  Huntsman Tournament Edition
> +	0244  RZ07-0311 Gaming Keypad [Tartarus Pro]
> +	0245  Blade 15 (Mid 2019) Mercury
> +	0246  Blade 15 (Mid 2019) Base Model
> +	024a  Blade Stealth (Late 2019)
> +	024b  Gaming Laptop [Blade 15 Advanced (Late 2019)]
> +	024c  Gaming Laptop [Blade Pro (Late 2019)]
> +	024d  Blade 15 Studio Edition (2019)
> +	0253  RZ09-0330, Gaming Laptop [Blade 15 Advanced (Early 2020)]
> +	0255  RZ09-0328, Gaming Laptop [Blade 15 Base Model (2020)]
> +	0256  RZ09--0329, Gaming Laptop [Blade Pro 17 Full HD (2020)]
> +	025d  RZ03-0338, Gaming Keyboard [Ornata V2]
> +	0300  RZ06-0063 Motion Sensing Controllers [Hydra]
> +	0401  Gaming Arcade Stick [Panthera]
> +	0501  Kraken 7.1
> +	0502  Gaming Headset [Kraken USB]
> +	0504  Kraken 7.1 Chroma
> +	0506  Kraken 7.1 (Alternate Version)
> +	0510  Kraken 7.1 V2
> +	0511  RZ19-0229 Gaming Microphone
> +	0514  Electra V2 USB
> +	0517  Nommo Chroma
> +	0518  Nommo Pro
> +	051a  Nari Ultimate
> +	051c  Nari (Wireless)
> +	051d  Nari (Wired)
> +	051e  RC30-026902, Gaming Headset [Nari Essential, Wireless, Receiver]
> +	051f  RC30-026901, Gaming Headset [Nari Essential, Wired]
> +	0520  Kraken Tournament Edition
> +	0521  Kraken Kitty Edition
> +	0527  RZ04-0318 Gaming Headset [Kraken Ultimate]
> +	0904  R201-0282 Gaming Keyboard, Mouse Combination [Turret For Xbox One]
> +	0a00  Atrox Arcade Stick for Xbox One
> +	0a02  ManO'War
> +	0a03  Wildcat
> +	0a15  RZ06-0199, Gaming Controller [Wolverine Tournament Edition]
> +	0c00  RZ02-0135 Hard Gaming Mouse Mat [Firefly]
> +	0c01  Goliathus
> +	0c02  Goliathus Extended
> +	0c04  Firefly V2
> +	0e03  Gaming Webcam [Kiyo]
> +	0f03  Tiamat 7.1 V2
> +	0f07  Chroma Mug Holder
> +	0f08  Base Station Chroma
> +	0f09  Chroma HDK
> +	0f0d  Laptop Stand Chroma
> +	0f13  Lian Li O11 Dynamic Razer Edition
> +	0f1a  Core X Chroma
> +	1000  Gaming Controller [Raiju]
> +	1004  Gaming Controller [Raiju Ultimate Wired]
> +	1007  Gaming Controller [Raiju 2 Tournament Edition (USB)]
> +	1008  Gaming Flightstick [Panthera Evo]
> +	1009  Gaming Controller [Raiju 2 Ultimate Edition (BT)]
> +	100a  Gaming Controller [Raiju 2 Tournament Edition (BT)]
> +	110d  Bootloader (Alternate)
> +	800e  Bootloader
> +153b  TerraTec Electronic GmbH
> +	1181  Cinergy S2 PCIe Dual Port 1
> +	1182  Cinergy S2 PCIe Dual Port 2
> +1546  U-Blox AG
> +	01a4  Antaris 4
> +	01a5  [u-blox 5]
> +	01a6  [u-blox 6]
> +	01a7  [u-blox 7]
> +	01a8  [u-blox 8]
> +	1102  LISA-U2
> +1547  SG Intec Ltd & Co KG
> +	1000  SG-Lock[U2]
> +154a  Celectronic GmbH
> +	8180  CARD STAR/medic2
> +154b  PNY
> +	000f  Flash Drive
> +	0010  USB 2.0 Flash Drive
> +	0048  Flash Drive
> +	004d  8 GB Flash Drive
> +	0053  Flash Drive
> +	0057  32GB Micro Slide Attache Flash Drive
> +	005b  Flash Drive
> +	0062  Flash Drive
> +	007a  Classic Attache Flash Drive
> +	5408  2.5in drive enclosure
> +	6000  Flash Drive
> +	6545  FD Device
> +	fa05  Flash Drive
> +154d  ConnectCounty Holdings Berhad
> +154e  D&M Holdings, Inc. (Denon/Marantz)
> +	3000  Marantz RC9001 Remote Control
> +154f  SNBC CO., Ltd
> +1554  Prolink Microsystems Corp.
> +	5010  PV-D231U(RN)-F [PixelView PlayTV SBTVD Full-Seg]
> +1557  OQO
> +	0002  model 01 WiFi interface
> +	0003  model 01 Bluetooth interface
> +	0a80  Gobi Wireless Modem (QDL mode)
> +	7720  model 01+ Ethernet
> +	8150  model 01 Ethernet interface
> +1568  Sunf Pu Technology Co., Ltd
> +156f  Quantum Corporation
> +1570  ALLTOP TECHNOLOGY CO., LTD.
> +157b  Ketron SRL
> +157e  TRENDnet
> +	3006  TEW-444UB EU [TRENDnet]
> +	3007  TEW-444UB EU (no firmware)
> +	300a  TEW-429UB 802.11bg
> +	300b  TEW-429UB 802.11bg
> +	300c  TEW-429UF A1 802.11bg Wireless Adapter [ZyDAS ZD1211B]
> +	300d  TEW-429UB C1 802.11bg
> +	300e  SMC SMCWUSB-N 802.11bgn 2x2:2 Wireless Adapter [Ralink RT2870]
> +	3012  TEW-604UB 802.11bg Wireless Adapter [Atheros AR5523]
> +	3013  TEW-645UB 802.11bgn 1x2:2 Wireless Adapter [Ralink RT2770]
> +	3204  Allnet ALL0298 v2 802.11bg
> +	3205  Allnet ALL0283 [AR5523]
> +	3206  Allnet ALL0283 [AR5523](no firmware)
> +	3207  TEW-509UB A1 802.11abg Wireless Adapter [ZyDAS ZD1211]
> +	3208  TEW-509UB 1.1R 802.11abg Wireless Adapter
> +1582  Fiberline
> +	6003  WL-430U 802.11bg
> +1587  SMA Technologie AG
> +158d  Oakley Inc.
> +158e  JDS Uniphase Corporation (JDSU)
> +	0820  SmartPocket Class Device
> +1598  Kunshan Guoji Electronics Co., Ltd.
> +15a2  Freescale Semiconductor, Inc.
> +	0038  9S08JS Bootloader
> +	003b  USB2CAN Application for ColdFire DEMOJM board
> +	0041  i.MX51 SystemOnChip in RecoveryMode
> +	0042  OSBDM - Debug Port
> +	004e  i.MX53 SystemOnChip in RecoveryMode
> +	004f  i.MX28 SystemOnChip in RecoveryMode
> +	0052  i.MX50 SystemOnChip in RecoveryMode
> +	0054  i.MX 6Dual/6Quad SystemOnChip in RecoveryMode
> +	0061  i.MX 6Solo/6DualLite SystemOnChip in RecoveryMode
> +	006a  Vybrid series SystemOnChip in RecoveryMode
> +	0076  i.MX 7Solo/7Dual SystemOnChip in RecoveryMode
> +	0080  i.MX 6ULL SystemOnChip in RecoveryMode
> +15a4  Afatech Technologies, Inc.
> +	1000  AF9015/AF9035 DVB-T stick
> +	1001  AF9015/AF9035 DVB-T stick
> +	1336  SDHC/MicroSD/MMC/MS/M2/CF/XD Flash Card Reader
> +	9015  AF9015 DVB-T USB2.0 stick
> +	9016  AF9015 DVB-T USB2.0 stick
> +15a8  Teams Power Limited
> +15a9  Gemtek
> +	0002  SparkLAN WL-682 802.11bg Wireless Adapter [Intersil ISL3887]
> +	0004  WUBR-177G [Ralink RT2571W]
> +	0006  Wireless 11n USB Adapter
> +	0010  802.11n USB Wireless Card
> +	0012  WUBR-208N 802.11abgn Wireless Adapter [Ralink RT2870]
> +	002d  WLTUBA-107 [Yota 4G LTE]
> +15aa  Gearway Electronics (Dong Guan) Co., Ltd.
> +15ad  VMware Inc.
> +15ba  Olimex Ltd.
> +	0003  OpenOCD JTAG
> +	0004  OpenOCD JTAG TINY
> +	002a  ARM-USB-TINY-H JTAG interface
> +	002b  ARM-USB-OCD-H JTAG+RS232
> +	003c  TERES Keyboard+Touchpad
> +15c0  XL Imaging
> +	0001  2M pixel Microscope Camera
> +	0002  3M pixel Microscope Camera
> +	0003  1.3M pixel Microscope Camera (mono)
> +	0004  1.3M pixel Microscope Camera (colour)
> +	0005  3M pixel Microscope Camera (Mk 2)
> +	0006  2M pixel Microscope Camera (with capture button)
> +	0007  3M pixel Microscope Camera (with capture button)
> +	0008  1.3M pixel Microscope Camera (colour, with capture button)
> +	0009  1.3M pixel Microscope Camera (colour, with capture button)
> +	000a  2M pixel Microscope Camera (Mk 2)
> +	0010  1.3M pixel "Tinycam"
> +	0101  3M pixel Microscope Camera
> +15c2  SoundGraph Inc.
> +	0036  LC16M VFD Display/IR Receiver
> +	0038  GD01 MX LCD Display/IR Receiver
> +	0042  Antec Veris Multimedia Station E-Z IR Receiver
> +	ffda  iMON PAD Remote Controller
> +	ffdc  iMON PAD Remote Controller
> +15c5  Pressure Profile Systems, Inc.
> +	0008  Advance Multimedia Internet Technology Inc. (AMIT) WL532U 802.11g Adapter
> +15c6  Laboratoires MXM
> +	1000  DigistimSP (cold)
> +	1001  DigistimSP (warm)
> +	1002  DigimapSP USB (cold)
> +	1003  DigimapSP USB (warm)
> +	1004  DigistimSP (cold)
> +	1005  DigistimSP (warm)
> +	1100  Odyssee (cold)
> +	1101  Odyssee (warm)
> +	1200  Digispy
> +15c8  KTF Technologies
> +	3201  EVER EV-W100/EV-W250
> +15c9  D-Box Technologies
> +15ca  Textech International Ltd.
> +	00c3  Mini Optical Mouse
> +	0101  MIDI Interface cable
> +	1806  MIDI Interface cable
> +15d5  Coulomb Electronics Ltd.
> +15d9  Trust International B.V.
> +	0a33  Optical Mouse
> +	0a37  Mouse
> +	0a41  MI-2540D [Optical mouse]
> +	0a4c  USB+PS/2 Optical Mouse
> +	0a4d  Optical Mouse
> +	0a4e  AM-5400 [Optical Mouse]
> +	0a4f  Optical Mouse
> +15dc  Hynix Semiconductor Inc.
> +15e0  Seong Ji Industrial Co., Ltd.
> +15e1  RSA
> +	2007  RSA SecurID (R) Authenticator
> +15e4  Numark
> +	0024  Mixtrack
> +	003c  DJ2GO2 Touch
> +	0140  ION VCR 2 PC / Video 2 PC
> +	3f00  Power A Mini Pro Elite
> +	3f0a  Airflo Wired Controller for Xbox 360
> +	3f10  Batarang controller for Xbox 360
> +15e8  SohoWare
> +	9100  NUB100 Ethernet [pegasus]
> +	9110  10/100 USB Ethernet
> +15e9  Pacific Digital Corp.
> +	04ce  MemoryFrame MF-570
> +	1968  MemoryFrame MF-570
> +	1969  Digital Frame
> +15ec  Belcarra Technologies Corp.
> +15f4  HanfTek
> +	0001  HanfTek UMT-010 USB2.0 DVB-T (cold)
> +	0025  HanfTek UMT-010 USB2.0 DVB-T (warm)
> +	0131  Astrometa DVB-T/T2/C FM & DAB receiver [RTL2832P]
> +	0135  Astrometa T2hybrid
> +1604  Tascam
> +	10c0  Dell Integrated Hub
> +	8000  US-428 Audio/Midi Controller (without fw)
> +	8001  US-428 Audio/Midi Controller
> +	8004  US-224 Audio/Midi Controller (without fw)
> +	8005  US-224 Audio/Midi Controller
> +	8006  US-122 Audio/Midi Interface (without fw)
> +	8007  US-122 Audio/Midi Interface
> +1605  ACCES I/O Products, Inc.
> +	0001  DIO-32 (No Firmware Yet)
> +	0002  USB-DIO-48 (No Firmware Yet)
> +	0003  USB-DIO-96 (No Firmware Yet)
> +	0004  USB-DIO-32I (No Firmware Yet)
> +	0005  USB-DIO24 (based on -CTR6) (No Firmware Yet)
> +	0006  USB-DIO24-CTR6 (No Firmware Yet)
> +1606  Umax
> +	0002  Astra 1236U Scanner
> +	0010  Astra 1220U
> +	0030  Astra 1600U/2000U
> +	0050  Scanner
> +	0060  Astra 3400/3450
> +	0070  Astra 4400/4450
> +	0130  Astra 2100U
> +	0160  Astra 5400U
> +	0170  Uniscan D50
> +	0230  Astra 2200/2200SU
> +	0350  Astra 4800/4850 Scanner
> +	1030  Astra 4000U
> +	1220  Genesys Logic Scanner Controller NT5.0
> +	2010  AstraCam Digital Camera
> +	2020  AstraCam 1000
> +	2030  AstraCam 1800 Digital Camera
> +1608  Inside Out Networks [hex]
> +	0001  EdgePort/4 Serial Port
> +	0002  Edgeport/8
> +	0003  Rapidport/4
> +	0004  Edgeport/4
> +	0005  Edgeport/2
> +	0006  Edgeport/4i
> +	0007  Edgeport/2i
> +	0008  Edgeport/8
> +	000c  Edgeport/421
> +	000d  Edgeport/21
> +	000e  Edgeport/4
> +	000f  Edgeport/8
> +	0010  Edgeport/2
> +	0011  Edgeport/4
> +	0012  Edgeport/416
> +	0014  Edgeport/8i
> +	0018  Edgeport/412
> +	0019  Edgeport/412
> +	001a  Edgeport/2+2i
> +	0101  Edgeport/4
> +	0105  Edgeport/2
> +	0106  Edgeport/4i
> +	0107  Edgeport/2i
> +	010c  Edgeport/421
> +	010d  Edgeport/21
> +	0110  Edgeport/2
> +	0111  Edgeport/4
> +	0112  Edgeport/416
> +	0114  Edgeport/8i
> +	0201  Edgeport/4
> +	0203  Rapidport/4
> +	0204  Edgeport/4
> +	0205  Edgeport/2
> +	0206  Edgeport/4i
> +	0207  Edgeport/2i
> +	020c  Edgeport/421
> +	020d  Edgeport/21
> +	020e  Edgeport/4
> +	020f  Edgeport/8
> +	0210  Edgeport/2
> +	0211  Edgeport/4
> +	0212  Edgeport/416
> +	0214  Edgeport/8i
> +	0215  Edgeport/1
> +	0216  EPOS/44
> +	0217  Edgeport/42
> +	021a  Edgeport/2+2i
> +	021b  Edgeport/2c
> +	021c  Edgeport/221c
> +	021d  Edgeport/22c
> +	021e  Edgeport/21c
> +	021f  Edgeport/62
> +	0240  Edgeport/1
> +	0241  Edgeport/1i
> +	0242  Edgeport/4s
> +	0243  Edgeport/8s
> +	0244  Edgeport/8
> +	0245  Edgeport/22c
> +	0301  Watchport/P
> +	0302  Watchport/M
> +	0303  Watchport/W
> +	0304  Watchport/T
> +	0305  Watchport/H
> +	0306  Watchport/E
> +	0307  Watchport/L
> +	0308  Watchport/R
> +	0309  Watchport/A
> +	030a  Watchport/D
> +	030b  Watchport/D
> +	030c  Power Management Port
> +	030e  Power Management Port
> +	030f  Watchport/G
> +	0310  Watchport/Tc
> +	0311  Watchport/Hc
> +	1403  MultiTech Systems MT4X56 Modem
> +	1a17  Agilent Technologies (E6473)
> +160a  VIA Technologies, Inc.
> +	3184  VIA VNT-6656 [WiFi 802.11b/g USB Dongle]
> +160e  INRO
> +	0001  E2USBKey
> +1614  Amoi Electronics
> +	0404  WMA9109 UMTS Phone
> +	0600  Vodafone VDA GPS / Toschiba Protege G710
> +	0804  WP-S1 Phone
> +1617  Sony Corp.
> +	2002  NVX-P1 Personal Navigation System
> +1619  L & K Precision Technology Co., Ltd.
> +161c  Digitech Systems
> +	0002  DTC-02U [Digi Touch Controller]
> +1621  Wionics Research
> +1628  Stonestreet One, Inc.
> +162a  Airgo Networks Inc.
> +162f  WiQuest Communications, Inc.
> +1630  2Wire, Inc.
> +	0005  802.11g Wireless Adapter [Intersil ISL3886]
> +	0011  PC Port 10 Mps Adapter
> +	ff81  802.11b Wireless Adapter [Lucent/Agere Hermes I]
> +1631  Good Way Technology
> +	6200  GWUSB2E
> +	c019  RT2573
> +1633  AIM GmbH
> +	4510  ASC1553
> +	4520  ASC429
> +	4560  ASC-FDX
> +1645  Entrega [hex]
> +	0001  1S Serial Port
> +	0002  2S Serial Port
> +	0003  1S25 Serial Port
> +	0004  4S Serial Port
> +	0005  E45 Ethernet [klsi]
> +	0006  Parallel Port
> +	0007  U1-SC25 SCSI
> +	0008  Ethernet
> +	0016  Bi-directional to Parallel Printer Converter
> +	0080  1 port to Serial Converter
> +	0081  1 port to Serial Converter
> +	0093  1S9 Serial Port
> +	8000  EZ-USB
> +	8001  1 port to Serial
> +	8002  2x Serial Port
> +	8003  1 port to Serial
> +	8004  2U4S serial/usb hub
> +	8005  Ethernet
> +	8080  1 port to Serial
> +	8081  1 port to Serial
> +	8093  PortGear Serial Port
> +1649  SofTec Microsystems
> +	0102  uDART In-Circuit Debugger
> +	0200  SpYder USBSPYDER08
> +164a  ChipX
> +164c  Matrix Vision GmbH
> +	0101  mvBlueFOX camera (no firmware)
> +	0103  mvBlueFOX camera
> +	0201  mvBlueLYNX-X intelligent camera (bootloader)
> +	0203  mvBlueLYNX-X intelligent camera
> +1657  Struck Innovative Systeme GmbH
> +	3150  SIS3150 USB2.0 to VME interface
> +165b  Frontier Design Group
> +	8101  Tranzport Control Surface
> +	fad1  Alphatrack Control Surface
> +165c  Kondo Kagaku
> +	0002  Serial Adapter
> +	0006  FT232 [ICS adapter HS]
> +	0008  FT232 [Dual adapter HS]
> +1660  Creatix Polymedia GmbH
> +1667  GIGA-TMS INC.
> +	0005  PCR330A RFID Reader (125 kHz, keyboard emulation)
> +1668  Actiontec Electronics, Inc. [hex]
> +	0009  Gateway
> +	0333  Modem
> +	0358  InternetPhoneWizard
> +	0405  Gateway
> +	0408  Prism2.5 802.11b Adapter
> +	0413  Gateway
> +	0421  Prism2.5 802.11b Adapter
> +	0441  IBM Integrated Bluetooth II
> +	0500  BTM200B BlueTooth Adapter
> +	1050  802UIG-1 802.11g Wireless Mini Adapter [Intersil ISL3887]
> +	1200  802AIN Wireless N Network Adapter [Atheros AR9170+AR9101]
> +	1441  IBM Integrated Bluetooth II
> +	2441  BMDC-2 IBM Bluetooth III w.56k
> +	3441  IBM Integrated Bluetooth III
> +	6010  Gateway
> +	6097  802.11b Wireless Adapter
> +	6106  802UI3(B) 802.11b Wireless Adapter [Intersil PRISM 3]
> +	7605  UAT1 Wireless Ethernet Adapter
> +1669  PiKRON Ltd. [hex]
> +	1001  uLan2USB Converter - PS1 protocol
> +166a  Clipsal
> +	0101  C-Bus Multi-room Audio Matrix Switcher
> +	0201  C-Bus Pascal Automation Controller
> +	0301  C-Bus Wireless PC Interface
> +	0303  C-Bus interface
> +	0304  C-Bus Black and White Touchscreen
> +	0305  C-Bus Spectrum Colour Touchscreen
> +	0401  C-Bus Architectural Dimmer
> +1677  China Huada Integrated Circuit Design (Group) Co., Ltd. (CIDC Group)
> +	0103  Token
> +1679  Total Phase
> +	2001  Beagle Protocol Analyzer
> +	2002  Cheetah SPI Host Adapter
> +167b  Pure Digital Technologies, Inc.
> +	2009  Flip Ultra U1120
> +1680  Golden Bridge Electech Inc.
> +	a332  DVB-T Dongle [RTL2832U]
> +1681  Prevo Technologies, Inc.
> +	0001  Tuner's Dashboard
> +	0002  DocuBrain(R) Tubachron
> +	0003  DocuBrain(R) I2C
> +	0004  DocuBrain(R) WWVB Receiver
> +	0005  DocuBrain(R) WWVB Transmitter
> +1682  Maxwise Production Enterprise Ltd.
> +1684  Godspeed Computer Corp.
> +1685  Delock
> +	0200  Infrared adapter
> +1686  ZOOM Corporation
> +	0045  Handy Recorder stereo mix
> +	01c0  Zoom Handy Recorder card reader
> +	01c5  Zoom Handy Recorder multi track
> +	03d5  LiveTrak L-12
> +1687  Kingmax Digital Inc.
> +	5289  FlashDisk
> +	6211  FlashDisk
> +	6213  FlashDisk
> +1688  Saab AB
> +1689  Razer USA, Ltd
> +	fd00  Onza Tournament Edition controller
> +	fd01  Onza Classic Edition
> +	fe00  Sabertooth Elite
> +168c  Atheros Communications
> +	0001  AR5523
> +	0002  AR5523 (no firmware)
> +1690  Askey Computer Corp. [hex]
> +	0001  Arcaze Gamepad
> +	0101  Creative Modem Blaster DE5670
> +	0102  V1456 VQE-R2 Modem [conexant]
> +	0103  1456 VQE-R3 Modem [conexant]
> +	0104  HCF V90 Data Fax RTAD Modem
> +	0107  HCF V.90 Data,Fax,RTAD Modem
> +	0109  MagicXpress V.90 Pocket Modem [conexant]
> +	0203  Voyager ADSL Modem Loader
> +	0204  Voyager ADSL Modem
> +	0205  DSL Modem
> +	0206  GlobeSpan ADSL WAN Modem
> +	0208  DSL Modem
> +	0209  Voyager 100 ADSL Modem
> +	0211  Globespan Virata ADSL LAN Modem
> +	0212  DSL Modem
> +	0213  HM121d DSL Modem
> +	0214  HM121d DSL Modem
> +	0215  Voyager 105 ADSL Modem
> +	0701  WLAN
> +	0710  SMCWUSBT-G
> +	0711  SMCWUSBT-G (no firmware)
> +	0712  AR5523
> +	0713  AR5523 (no firmware)
> +	0715  Name: Voyager 1055 Laptop 802.11g Adapter [Broadcom 4320]
> +	0722  RT2573
> +	0726  Wi-Fi Wireless LAN Adapter
> +	0740  802.11n Wireless LAN Card
> +	0901  Voyager 205 ADSL Router
> +	2000  naturaSign Pad Standard
> +	2001  naturaSign Pad Standard
> +	fe12  Bootloader
> +1696  Hitachi Video and Information System, Inc.
> +1697  VTec Test, Inc.
> +16a5  Shenzhen Zhengerya Cable Co., Ltd.
> +16a6  Unigraf
> +	3000  VTG-3xxx Video Test Generator family
> +	4000  VTG-4xxx Video Test Generator family
> +	5000  VTG-5xxx Video Test Generator family
> +	5001  VTG-5xxx Special (update) mode of VTG-5xxx family
> +16ab  Global Sun Technology
> +	7801  AR5523
> +	7802  AR5523 (no firmware)
> +	7811  AR5523
> +	7812  AR5523 (no firmware)
> +16ac  Dongguan ChingLung Wire & Cable Co., Ltd.
> +16b4  iStation
> +	0801  U43
> +16b5  Persentec, Inc.
> +	0002  Otto driving companion
> +16c0  Van Ooijen Technische Informatica
> +	03e8  free for internal lab use 1000
> +	03e9  free for internal lab use 1001
> +	03ea  free for internal lab use 1002
> +	03eb  free for internal lab use 1003
> +	03ec  free for internal lab use 1004
> +	03ed  free for internal lab use 1005
> +	03ee  free for internal lab use 1006
> +	03ef  free for internal lab use 1007
> +	03f0  free for internal lab use 1008
> +	03f1  free for internal lab use 1009
> +	0477  Teensy Rebootor
> +	0478  Teensy Halfkay Bootloader
> +	0479  Teensy Debug
> +	047a  Teensy Serial
> +	047b  Teensy Serial+Debug
> +	047c  Teensy Keyboard
> +	047d  Teensy Keyboard+Debug
> +	047e  Teensy Mouse
> +	047f  Teensy Mouse+Debug
> +	0480  Teensy RawHID
> +	0481  Teensy RawHID+Debug
> +	0482  Teensyduino Keyboard+Mouse+Joystick
> +	0483  Teensyduino Serial
> +	0484  Teensyduino Disk
> +	0485  Teensyduino MIDI
> +	0486  Teensyduino RawHID
> +	0487  Teensyduino Serial+Keyboard+Mouse+Joystick
> +	0488  Teensyduino Flight Sim Controls
> +	05b5  BU0836
> +	05dc  shared ID for use with libusb
> +	05dd  BlackcatUSB2
> +	05de  Flashcat
> +	05df  HID device except mice, keyboards, and joysticks
> +	05e1  Free shared USB VID/PID pair for CDC devices
> +	05e4  Free shared USB VID/PID pair for MIDI devices
> +	06b4  USB2LPT with 2 interfaces
> +	06b5  USB2LPT with 3 interfaces (native, HID, printer)
> +	074e  DSP-Weuffen USB-HPI-Programmer
> +	074f  DSP-Weuffen USB2-HPI-Programmer
> +	0762  Osmocom SIMtrace
> +	076b  OpenPCD 13.56MHz RFID Reader
> +	076c  OpenPICC 13.56MHz RFID Simulator (native)
> +	08ac  OpenBeacon USB stick
> +	08ca  Alpermann+Velte Universal Display
> +	08cb  Alpermann+Velte Studio Clock
> +	08cc  Alpermann+Velte SAM7S MT Boot Loader
> +	08cd  Alpermann+Velte SAM7X MT Boot Loader
> +	09ce  LINKUSB
> +	0a32  jbmedia Light-Manager Pro
> +	27d8  libusb-bound devices
> +	27d9  HID device except mice, keyboards, and joysticks
> +	27da  Mouse
> +	27db  Keyboard
> +	27dc  Joystick
> +	27dd  CDC-ACM class devices (modems)
> +	27de  MIDI class devices
> +	294a  Eye Movement Recorder [Visagraph]
> +	294b  Eye Movement Recorder [ReadAlyzer]
> +16ca  Wireless Cables, Inc.
> +	1502  Bluetooth Dongle
> +16cc  silex technology, Inc.
> +16d0  MCS
> +	0436  Xylanta Ltd, XSP Device
> +	0498  Braintechnology USB-LPS
> +	0504  RETRO Innovations ZoomFloppy
> +	054b  GrauTec ReelBox OLED Display (external)
> +	05be  EasyLogic Board
> +	05f0  Superior Freedom Programmable IR Remote
> +	06cc  Trinamic TMCM-3110
> +	06f0  Axium AX-R4C Controller
> +	06f1  Axium AX-R1D Controller
> +	06f9  Gabotronics Xminilab
> +	0726  Autonomic M400 Amplifier
> +	0727  Autonomic M800 Amplifier
> +	0753  Digistump DigiSpark
> +	075c  AB-1.x UAC1 [Audio Widget]
> +	075d  AB-1.x UAC2 [Audio Widget]
> +	07cc  Xylanta Ltd, Saint3 Device
> +	07f8  Axium AX-R4D Controller
> +	080a  S2E1 Interface
> +	0830  DMXControl Projects e.V., Nodle U1
> +	0831  DMXControl Projects e.V., Desklamp
> +	0832  DMXControl Projects e.V., Nodle U2
> +	0833  DMXControl Projects e.V., Nodle R4S
> +	0870  Kaufmann Automotive GmbH, RKS+CAN Interface
> +	09f2  Axium AX-1250 Amplifier
> +	09f4  Axium AX-Mini4 Amplifier
> +	0b03  AIS Receiver [dAISy]
> +	0b7d  Autonomic M801 Amplifier
> +	0b7e  Autonomic M401 Amplifier
> +	0b7f  Autonomic M120e Amplifier
> +	0bd4  codesrc SCSI2SD
> +	0c9b  Fermium LABS srl/LabTrek srl Hall Effect Apparatus
> +	0d3c  InputStick BT4.0
> +	0e1e  AtomMiner
> +16d1  Suprema Inc.
> +	0401  SUP-SFR400(A) BioMini Fingerprint Reader
> +16d3  Frontline Test Equipment, Inc.
> +16d5  AnyDATA Corporation
> +	6202  CDMA/UMTS/GPRS modem
> +	6501  CDMA 2000 1xRTT/EV-DO Modem
> +	6502  CDMA/UMTS/GPRS modem
> +	6603  ADU-890WH modem
> +16d6  JABLOCOM s.r.o.
> +	8000  GDP-04 desktop phone
> +	8001  EYE-02
> +	8003  GDP-04 modem
> +	8004  Bootloader
> +	8005  GDP-04i
> +	8007  BTP-06 modem
> +16d8  CMOTECH Co., Ltd.
> +	5141  CMOTECH CDMA Technologies modem
> +	5533  CCU-550 CDMA EV-DO modem
> +	5543  CDMA 2000 1xRTT/1xEVDO modem
> +	6280  CMOTECH CDMA Technologies modem
> +	6803  CNU-680 CDMA EV-DO modem
> +	8001  Gobi 2000 Wireless Modem (QDL mode)
> +	8002  Gobi 2000 Wireless Modem
> +16dc  Wiener, Plein & Baus
> +	0001  CC
> +	000b  VM
> +	0010  PL512 Power Supply System
> +	0011  MARATON Power Supply System
> +	0012  MPOD Multi Channel Power Supply System
> +	0015  CML Control, Measurement and Data Logging System
> +16de  Telemecanique
> +16df  King Billion Electronics Co., Ltd.
> +16f0  GN Hearing A/S
> +	0001  Speedlink Programming Interface
> +	0003  Airlink Wireless Programming Interface
> +	0004  Accessory Programming Interface
> +16f5  Futurelogic Inc.
> +1702  FDI-MATELEC
> +	0002  Encodeur
> +1706  BlueView Technologies, Inc.
> +1707  ARTIMI
> +170b  Swissonic
> +	0011  MIDI-USB 1x1
> +170d  Avnera
> +1711  Leica Microsystems
> +	0101  DFC-365FX camera
> +	3020  IC80 HD Camera
> +1724  Meyer Instruments (MIS)
> +	0115  PAXcam5
> +1725  Vitesse Semiconductor
> +1726  Axesstel, Inc.
> +	1000  wireless modem
> +	2000  wireless modem
> +	3000  wireless modem
> +172f  Waltop International Corp.
> +	0022  Tablet
> +	0024  Tablet
> +	0025  Tablet
> +	0026  Tablet
> +	0031  Slim Tablet 12.1"
> +	0032  Slim Tablet 5.8"
> +	0034  Slim Tablet 12.1"
> +	0038  Genius G-Pen F509
> +	0500  Media Tablet 14.1"
> +	0501  Media Tablet 10.6"
> +	0502  Sirius Battery Free Tablet
> +1733  Cellink Technology Co., Ltd
> +	0101  RF Wireless Optical Mouse OP-701
> +1736  CANON IMAGING SYSTEM TECHNOLOGIES INC.
> +1737  802.11g Adapter [Linksys WUSB54GC v3]
> +	0039  USB1000 Gigabit Notebook Adapter
> +	0070  WUSB100 v1 RangePlus Wireless Network Adapter [Ralink RT2870]
> +	0071  WUSB600N v1 Dual-Band Wireless-N Network Adapter [Ralink RT2870]
> +	0073  WUSB54GC v2 802.11g Adapter [Realtek RTL8187B]
> +	0075  WUSB54GSC v2 802.11g Adapter [Broadcom 4326U]
> +	0077  WUSB54GC v3 802.11g Adapter [Ralink RT2070L]
> +	0078  WUSB100 v2 RangePlus Wireless Network Adapter [Ralink RT3070]
> +	0079  WUSB600N v2 Dual-Band Wireless-N Network Adapter [Ralink RT3572]
> +173a  Roche
> +	2198  Accu-Chek Mobile
> +	21ca  ACCU-CHEK Mobile Model U1
> +173d  QSENN
> +	0002  GP-K7000 keyboard
> +1740  Senao
> +	0100  EUB1200AC AC1200 DB Wireless Adapter [Realtek RTL8812AU]
> +	0600  EUB600v1 802.11abgn Wireless Adapter [Ralink RT3572]
> +	0605  LevelOne WUA-0605 N_Max Wireless USB Adapter
> +	0615  LevelOne WUA-0615 N_Max Wireless USB Adapter
> +	1000  NUB-350 802.11g Wireless Adapter [Intersil ISL3887]
> +	2000  NUB-8301 802.11bg
> +	3701  EUB-3701 EXT 802.11g Wireless Adapter [Ralink RT2571W]
> +	9603  RTL8188S WLAN Adapter
> +	9701  EnGenius 802.11n Wireless USB Adapter
> +	9702  EnGenius 802.11n Wireless USB Adapter
> +	9703  EnGenius 802.11n Wireless USB Adapter
> +	9705  EnGenius 802.11n Wireless USB Adapter
> +	9706  EUB9706 802.11n Wireless Adapter [Ralink RT3072]
> +	9801  EUB9801 802.11abgn Wireless Adapter [Ralink RT3572]
> +1743  General Atomics
> +1748  MQP Electronics
> +	0101  Packet-Master USB12
> +174c  ASMedia Technology Inc.
> +	07d1  Transcend ESD400 Portable SSD (USB 3.0)
> +	1151  ASM1151W
> +	1153  ASM1153 SATA 3Gb/s bridge
> +	2074  ASM1074 High-Speed hub
> +	3074  ASM1074 SuperSpeed hub
> +	5106  ASM1051 SATA 3Gb/s bridge
> +	5136  ASM1053 SATA 3Gb/s bridge
> +	51d6  ASM1051W SATA 3Gb/s bridge
> +	55aa  ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
> +174f  Syntek
> +	1105  SM-MS/Pro-MMC-XD Card Reader
> +	110b  HP Webcam
> +	1122  HP Webcam
> +	1169  Lenovo EasyCamera
> +	1403  Integrated Webcam
> +	1404  USB Camera device, 1.3 MPixel Web Cam
> +	1758  XYZ printing cameraR2
> +	1759  XYZ printing cameraL2
> +	5212  USB 2.0 UVC PC Camera
> +	5a11  PC Camera
> +	5a31  Sonix USB 2.0 Camera
> +	5a35  Sonix 1.3MPixel USB 2.0 Camera
> +	6a31  Web Cam - Asus A8J, F3S, F5R, VX2S, V1S
> +	6a33  Web Cam - Asus F3SA, F9J, F9S
> +	6a51  2.0MPixel Web Cam - Asus Z96J, Z96S, S96S
> +	6a54  Web Cam
> +	6d51  2.0Mpixel Web Cam - Eurocom D900C
> +	8a12  Syntek 0.3MPixel USB 2.0 UVC PC Camera
> +	8a33  Syntek USB 2.0 UVC PC Camera
> +	a311  1.3MPixel Web Cam - Asus A3A, A6J, A6K, A6M, A6R, A6T, A6V, A7T, A7sv, A7U
> +	a312  1.3MPixel Web Cam
> +	a821  Web Cam - Packard Bell BU45, PB Easynote MX66-208W
> +	aa11  Web Cam
> +1753  GERTEC Telecomunicacoes Ltda.
> +	c901  PPC900 Pinpad Terminal
> +1756  ENENSYS Technologies
> +	0006  DiviPitch
> +1759  LucidPort Technology, Inc.
> +1761  ASUSTek Computer, Inc. (wrong ID)
> +	0b05  802.11n Network Adapter (wrong ID - swapped vendor and device)
> +1770  MSI
> +	ff00  steel series rgb keyboard
> +1772  System Level Solutions, Inc.
> +1776  Arowana
> +	501c  300K CMOS Camera
> +1777  Microscan Systems, Inc.
> +	0003  MicroHAWK ID-20
> +177f  Sweex
> +	0004  MM004V5 Photo Key Chain (Digital Photo Frame) 1.5"
> +	0153  LW153 802.11n Adapter [ralink rt3070]
> +	0154  LW154 802.11bgn (1x1:1) Wireless Adapter [Realtek RTL8188SU]
> +	0313  LW313 802.11n Adapter [ralink rt2770 + rt2720]
> +1781  Multiple Vendors
> +	07df  Axium AX-800DAV Amplifier
> +	07e1  Axium AX-KPC Keypad
> +	07e2  Axium AX-KPD Keypad
> +	07e3  Axium AX-400DA Amplifier
> +	083e  MetaGeek Wi-Spy
> +	083f  MetaGeek Wi-Spy 2.4x
> +	0938  Iguanaworks USB IR Transceiver
> +	0941  qNimble Quark
> +	0a96  raphnet.net usb_game12
> +	0a97  raphnet.net SNES mouse adapter
> +	0a98  raphnet.net USBTenki
> +	0a99  raphnet.net NES
> +	0a9a  raphnet.net Gamecube/N64 controller
> +	0a9b  raphnet.net DB9Joy
> +	0a9c  raphnet.net Intellivision
> +	0a9d  raphnet.net 4nes4snes
> +	0a9e  raphnet.net Megadrive multitap
> +	0a9f  raphnet.net MultiDB9joy
> +	0bad  Mantracourt Load Cell
> +	0c30  Telldus TellStick
> +	0c31  Telldus TellStick Duo
> +	0c9f  USBtiny
> +	1eef  OpenAPC SecuKey
> +	1ef0  E1701 Modular Controller Card
> +	1ef1  E1701 Modular Controller Card
> +	1ef2  E1803 Compact Controller Card
> +1782  Spreadtrum Communications Inc.
> +	3d00  F200n mobile phone
> +1784  TopSeed Technology Corp.
> +	0001  eHome Infrared Transceiver
> +	0004  RF Combo Device
> +	0006  eHome Infrared Transceiver
> +	0007  eHome Infrared Transceiver
> +	0008  eHome Infrared Transceiver
> +	000a  eHome Infrared Transceiver
> +	0011  eHome Infrared Transceiver
> +1787  ATI AIB
> +1788  ShenZhen Litkconn Technology Co., Ltd.
> +178e  ASUSTek Computer, Inc. (wrong ID)
> +	0b05  CrossLink cable 2GB (wrong ID - swapped vendor and device)
> +1796  Printrex, Inc.
> +1797  JALCO CO., LTD.
> +1799  Thales Norway A/S
> +	7051  Belkin F5D7051 802.11g Adapter v1000 [Broadcom 4320]
> +	8051  Belkin F5D8051 v2 802.11bgn Wireless Adapter [Marvell 88W8362]
> +179d  Ricavision International, Inc.
> +	0010  Internal Infrared Transceiver
> +17a0  Samson Technologies Corp.
> +	0001  C01U condenser microphone
> +	0002  Q1U dynamic microphone
> +	0100  C03U multi-pattern microphone
> +	0101  UB1 boundary microphone
> +	0120  Meteorite condenser microphone
> +	0130  Go Mic Direct
> +	0132  Go Mic Mobile wireless receiver
> +	0200  StudioDock monitors (internal hub)
> +	0201  StudioDock monitors (audio)
> +	0210  StudioGT monitors
> +	0211  StudioGT monitors [CM6400]
> +	0240  Go Mic Connect
> +	0241  G-Track Pro microphone
> +	0301  Q2U handheld microphone with XLR
> +	0302  GoMic compact condenser microphone
> +	0303  C01U Pro condenser microphone
> +	0304  Q2U handheld mic with XLR
> +	0305  GoMic compact condenser mic
> +	0310  Meteor condenser microphone
> +	0311  Satellite condenser microphone
> +	1616  RXD1 wireless receiver
> +	b241  G-Track Pro firmware update
> +	b311  Satellite firmware update
> +17a4  Concept2
> +	0001  Performance Monitor 3
> +	0002  Performance Monitor 4
> +17a5  Advanced Connection Technology Inc.
> +17a7  MICOMSOFT CO., LTD.
> +17a8  Kamstrup A/S
> +	0001  Optical Eye/3-wire
> +	0005  M-Bus Master MultiPort 250D
> +	0010  444MHz Radio Mesh Frontend
> +	0011  444MHz RF sniffer
> +	0012  870MHz Radio Mesh Frontend
> +	0013  870MHz RF sniffer
> +17b3  Grey Innovation
> +	0004  Linux-USB Midi Gadget
> +17b5  Lunatone
> +	0010  MFT Sensor
> +17ba  SAURIS GmbH
> +	0001  SAU510-USB [no firmware]
> +	0510  SAU510-USB and SAU510-USB plus JTAG Emulators
> +	0511  SAU510-USB Iso Plus JTAG Emulator
> +	0520  SAU510-USB Nano JTAG Emulator
> +	1511  Onboard Emulator on SAUModule development kit
> +17c3  Singim International Corp.
> +17cc  Native Instruments
> +	041c  Audio 2 DJ
> +	041d  Traktor Audio 2
> +	0808  Maschine Controller
> +	0815  Audio Kontrol 1
> +	0839  Audio 4 DJ
> +	0d8d  Guitarrig Mobile
> +	1001  Komplete Audio 6
> +	1110  Maschine Mikro
> +	1915  Session I/O
> +	1940  RigKontrol3
> +	1969  RigKontrol2
> +	1978  Audio 8 DJ
> +	2280  Medion MDPNA1500 in card reader mode
> +	2305  Traktor Kontrol X1
> +	4711  Kore Controller
> +	4712  Kore Controller 2
> +	baff  Traktor Kontrol S4
> +17cf  Hip Hing Cable & Plug Mfy. Ltd.
> +17d0  Sanford L.P.
> +17d3  Korea Techtron Co., Ltd.
> +17e9  DisplayLink
> +	0051  USB VGA Adaptor
> +	0198  DisplayLink
> +	019e  Overfly FY-1016A
> +	028f  HIS Multi-View II
> +	030b  HP T100
> +	0377  Plugable UD-160-A (M)
> +	0378  Plugable UGA-2K-A
> +	0379  Plugable UGA-125
> +	037a  Plugable UGA-165
> +	037b  Plugable USB-VGA-165
> +	037c  Plugable DC-125
> +	037d  Plugable USB2-HDMI-165
> +	410a  HDMI Adapter
> +	430a  HP Port Replicator (Composite Device)
> +	430f  Kensington Dock (Composite Device)
> +	4312  S2340T
> +	436e  Dell D3100 Docking Station
> +	ff10  I1659FWUX {AOC Powered Monitor]
> +17eb  Cornice, Inc.
> +17ef  Lenovo
> +	1000  ThinkPad X6 UltraBase
> +	1003  Integrated Smart Card Reader
> +	1004  Integrated Webcam
> +	1005  ThinkPad X200 Ultrabase (42X4963 )
> +	1008  Hub
> +	100a  ThinkPad Mini Dock Plus Series 3
> +	100f  ThinkPad Ultra Dock Hub
> +	1010  ThinkPad Ultra Dock Hub
> +	1020  ThinkPad Dock Hub
> +	1021  ThinkPad Dock Hub [Cypress HX2VL]
> +	3049  ThinkPad OneLink integrated audio
> +	304b  AX88179 Gigabit Ethernet [ThinkPad OneLink GigaLAN]
> +	304f  RTL8153 Gigabit Ethernet [ThinkPad OneLink Pro Dock]
> +	3060  ThinkPad Dock
> +	3062  ThinkPad Dock Ethernet [Realtek RTL8153B]
> +	3063  ThinkPad Dock Audio
> +	3066  ThinkPad Thunderbolt 3 Dock MCU
> +	3069  ThinkPad TBT3 LAN
> +	306a  ThinkPad Thunderbolt 3 Dock Audio
> +	3815  ChipsBnk 2GB USB Stick
> +	4802  Vc0323+MI1310_SOC Camera
> +	4807  UVC Camera
> +	480c  Integrated Webcam
> +	480d  Integrated Webcam [R5U877]
> +	480e  Integrated Webcam [R5U877]
> +	480f  Integrated Webcam [R5U877]
> +	4810  Integrated Webcam [R5U877]
> +	4811  Integrated Webcam [R5U877]
> +	4812  Integrated Webcam [R5U877]
> +	4813  Integrated Webcam [R5U877]
> +	4814  Integrated Webcam [R5U877]
> +	4815  Integrated Webcam [R5U877]
> +	4816  Integrated Webcam
> +	481c  Integrated Webcam
> +	481d  Integrated Webcam
> +	6004  ISD-V4 Tablet Pen
> +	6007  Smartcard Keyboard
> +	6009  ThinkPad Keyboard with TrackPoint
> +	600e  Optical Mouse
> +	6014  Mini Wireless Keyboard N5901
> +	6019  M-U0025-O Mouse
> +	6022  Ultraslim Plus Wireless Keyboard and Mouse
> +	6025  ThinkPad Travel Mouse
> +	602d  Black Silk Keyboard
> +	6032  Wireless Dongle for Keyboard and Mouse
> +	6044  ThinkPad Laser Mouse
> +	6047  ThinkPad Compact Keyboard with TrackPoint
> +	604b  Precision Wireless Mouse
> +	608d  Optical Mouse
> +	609b  Professional Wireless Keyboard and Mouse Combo
> +	609c  Professional Wireless Keyboard
> +	7203  Ethernet adapter [U2L 100P-Y1]
> +	7205  Thinkpad LAN
> +	7217  VGA adapter
> +	7423  IdeaPad A1 Tablet
> +	7435  A789 (Mass Storage mode, with debug)
> +	743a  A789 (Mass Storage mode)
> +	7497  A789 (MTP mode)
> +	7498  A789 (MTP mode, with debug)
> +	749a  A789 (PTP mode)
> +	749b  A789 (PTP mode, with debug)
> +	7604  A760 (Mass Storage mode)
> +	7605  A760 (Mass Storage mode, with debug)
> +	760a  A760 (MTP mode)
> +	760b  A760 (MTP mode, with debug)
> +	760c  A760 (PTP mode)
> +	760d  A760 (PTP mode, with debug)
> +	76fc  B8000-H (Yoga Tablet 10) (mass storage)
> +	76fd  B8000-H (Yoga Tablet 10) (debug , mass storage)
> +	76fe  B8000-H (Yoga Tablet 10) (MTP)
> +	76ff  B8000-H (Yoga Tablet 10) (debug , MTP)
> +	7702  B8000-H (Yoga Tablet 10) (PTP)
> +	7703  B8000-H (Yoga Tablet 10) (debug , PTP)
> +	7704  B8000-H (Yoga Tablet 10) (USB tether)
> +	7705  B8000-H (Yoga Tablet 10) (debug , USB tether)
> +	7706  B8000-H (Yoga Tablet 10) (zerocd)
> +	7707  B8000-H (Yoga Tablet 10) (debug , zerocd)
> +	785f  TAB 2 A7-10 Tablet
> +	b000  Virtual Keyboard and Mouse
> +	b001  Ethernet
> +	b003  Virtual Keyboard and Mouse / Mass Storage
> +	f003  MEDION LIFETAB X10605 MTP mode
> +17f4  WaveSense
> +	aaaa  Jazz Blood Glucose Meter
> +17f5  K.K. Rocky
> +17f6  Unicomp, Inc.
> +	0709  Model M Keyboard
> +	0822  Ruffian 6 Keyboard v3 [Model M]
> +1809  Advantech
> +	4604  USB-4604
> +	4761  USB-4761 Portable Data Acquisition Module
> +1822  Twinhan
> +	3201  VisionDTV USB-Ter/HAMA USB DVB-T device cold
> +	3202  VisionDTV USB-Ter/HAMA USB DVB-T device warm
> +1831  Gwo Jinn Industries Co., Ltd.
> +1832  Huizhou Shenghua Industrial Co., Ltd.
> +183d  VIVOphone
> +	0010  VoiceKey
> +1843  Vaisala
> +1849  ASRock Incorporation
> +184f  K2L GmbH
> +	0012  MOCCA compact
> +1852  GYROCOM C&C Co., LTD
> +	7022  Fiio E10
> +	7921  Audiotrak ProDigy CUBE
> +	7922  Audiotrak DR.DAC2 DX [GYROCOM C&C]
> +1854  Memory Devices Ltd.
> +185b  Compro
> +	3020  K100 Infrared Receiver
> +	3082  K100 Infrared Receiver v2
> +	d000  Compro Videomate DVB-U2000 - DVB-T USB cold
> +	d001  Compro Videomate DVB-U2000 - DVB-T USB warm
> +1861  Tech Technology Industrial Company
> +1862  Teridian Semiconductor Corp.
> +1870  Nexio Co., Ltd
> +	0001  iNexio Touchscreen controller
> +1871  Aveo Technology Corp.
> +	0101  UVC camera (Bresser microscope)
> +	0141  Camera
> +	0d01  USB2.0 Camera
> +1873  Navilock
> +	ee93  EasyLogger
> +187c  Alienware Corporation
> +	0511  AlienFX Mobile lighting
> +	0513  Gaming Desktop [Aurora R4]
> +	0550  LED controller
> +	0600  Dual Compatible Game Pad
> +187f  Siano Mobile Silicon
> +	0010  Stallar Board
> +	0100  Stallar Board
> +	0200  Nova A
> +	0201  Nova B
> +	0202  Nice
> +	0300  Vega
> +	0301  VeNice
> +1892  Vast Technologies, Inc.
> +1894  Topseed
> +	5632  Atek Tote Remote
> +	5641  TSAM-004 Presentation Remote
> +1897  Evertop Wire Cable Co.
> +189f  3Shape A/S
> +	0002  Legato2 3D Scanner
> +18a4  CSSN
> +	0001  Snapshell IDR
> +18a5  Verbatim, Ltd
> +	0214  Portable Hard Drive
> +	0216  External Hard Drive
> +	0218  External Hard Drive
> +	0224  Store 'n' Go Micro Plus
> +	0227  Pocket Hard Drive
> +	022b  Portable Hard Drive (Store'n'Go)
> +	0237  Portable Harddrive
> +	0243  Flash Drive (Store'n'Go)
> +	0245  Store'n'Stay
> +	0302  Flash Drive
> +	0304  Store 'n' Go
> +	0408  Store 'n' Go
> +	4123  Store N Go
> +18b1  Petalynx
> +	0037  Maxter Remote Control
> +18b4  e3C Technologies
> +	1001  DUTV007
> +	1002  EC168 (v5) based USB DVB-T receiver
> +	1689  DUTV009
> +	fffa  EC168 (v2) based USB DVB-T receiver
> +	fffb  EC168 (v3) based USB DVB-T receiver
> +18b6  Mikkon Technology Limited
> +18b7  Zotek Electronic Co., Ltd.
> +18c5  AMIT Technology, Inc.
> +	0002  CG-WLUSB2GO
> +	0008  CG-WLUSB2GNR Corega Wireless USB Adapter
> +	0012  CG-WLUSB10 Corega Wireless USB Adapter
> +18cd  Ecamm
> +	cafe  Pico iMage
> +18d1  Google Inc.
> +	0001  Onda V972 (storage access)
> +	0003  Android-powered device using AllWinner Technology SoC
> +	0006  Onda V972 MTP
> +	0008  Onda V972 PTP (camera)
> +	0d02  Celkon A88
> +	2d00  Android Open Accessory device (accessory)
> +	2d01  Android Open Accessory device (accessory + ADB)
> +	2d02  Android Open Accessory device (audio)
> +	2d03  Android Open Accessory device (audio + ADB)
> +	2d04  Android Open Accessory device (accessory + audio)
> +	2d05  Android Open Accessory device (accessory + audio + ADB)
> +	4e11  Nexus One
> +	4e12  Nexus One (debug)
> +	4e13  Nexus One (tether)
> +	4e20  Nexus S (fastboot)
> +	4e21  Nexus S
> +	4e22  Nexus S (debug)
> +	4e24  Nexus S (tether)
> +	4e30  Galaxy Nexus (fastboot)
> +	4e40  Nexus 7 (fastboot)
> +	4e41  Nexus 7 (MTP)
> +	4e42  Nexus 7 (debug)
> +	4e43  Nexus 7 (PTP)
> +	4e44  Nexus 7 2012 (PTP)
> +	4ee0  Nexus/Pixel Device (fastboot)
> +	4ee1  Nexus/Pixel Device (MTP)
> +	4ee2  Nexus/Pixel Device (MTP + debug)
> +	4ee3  Nexus/Pixel Device (tether)
> +	4ee4  Nexus/Pixel Device (tether+ debug)
> +	4ee5  Nexus/Pixel Device (PTP)
> +	4ee6  Nexus/Pixel Device (PTP + debug)
> +	4ee7  Nexus/Pixel Device (charging + debug)
> +	4ee8  Nexus/Pixel Device (MIDI)
> +	4ee9  Nexus/Pixel Device (MIDI + debug)
> +	5033  Pixel earbuds
> +	7102  Toshiba Thrive tablet
> +	b004  Pandigital / B&N Novel 9" tablet
> +	d001  Nexus 4 (fastboot)
> +	d002  Nexus 4 (debug)
> +	d00d  Xiaomi Mi/Redmi 2 (fastboot)
> +	d109  LG G2x MTP
> +	d10a  LG G2x MTP (debug)
> +18d5  Starline International Group Limited
> +18d9  Kaba
> +	01a0  B-Net 91 07
> +18dc  LKC Technologies, Inc.
> +18dd  Planon System Solutions Inc.
> +	1000  DocuPen RC800
> +18e3  Fitipower Integrated Technology Inc
> +	7102  Multi Card Reader (Internal)
> +	9101  All-in-1 Card Reader
> +	9102  Multi Card Reader
> +	9512  Webcam
> +18e8  Qcom
> +	6144  LR802UA 802.11b Wireless Adapter [ALi M4301AU]
> +	6196  RT2573
> +	6229  RT2573
> +	6232  Wireless 802.11g 54Mbps Network Adapter [RTL8187]
> +18ea  Matrox Graphics, Inc.
> +	0002  DualHead2Go [Analog Edition]
> +	0004  TripleHead2Go [Digital Edition]
> +18ec  Arkmicro Technologies Inc.
> +	3118  USB to IrDA adapter [ARK3116T]
> +	3188  ARK3188 UVC Webcam
> +	3299  Webcam Carrefour
> +	3366  Bresser Biolux NV
> +	5850  CVBS / S-Video Capture Device [UVC]
> +18ef  ELV Elektronik AG
> +	e014  FS20PCE
> +	e015  FS20PCS
> +	e01a  Bedien-Anzeige-Terminal
> +18f8  [Maxxter]
> +	0f97  Optical Gaming Mouse [Xtrem]
> +	0f99  Optical gaming mouse
> +	1142  Optical gaming mouse
> +	1486  X5s ZEUS Macro Pro Gaming Mouse
> +18fb  Scriptel Corporation
> +	01c0  ST1501-STN
> +	01c1  ST1526-STN
> +	01c2  ST1501-PYJ
> +	01c3  ST1501B-PYJ
> +	01c4  ST1501-PUN
> +	01c5  ST1401-STN
> +	01c7  ST1526-PYJ
> +	01c8  ST1501-ECA
> +	01c9  ST1476-STN
> +	01cb  ST1571-STN
> +	0200  ST1500
> +	0201  ST1550
> +	0202  ST1525
> +	0204  ST1400
> +	0206  ST1475
> +	0207  ST1570
> +18fd  FineArch Inc.
> +1901  GE Healthcare
> +	0015  Nemo Tracker
> +1908  GEMBIRD
> +	0102  Digital Photo Frame
> +	0226  MicroSD Card Reader/Writer
> +	1315  Digital Photo Frame
> +	1320  DM8261 Flashdisc
> +	2070  Honk HK-5002 USB Speaker
> +	2220  Buildwin Media-Player
> +	2311  Generic UVC 1.00 camera [AppoTech AX2311]
> +190d  Motorola GSG
> +1914  Alco Digital Devices Limited
> +1915  Nordic Semiconductor ASA
> +	000c  Wireless Desktop nRF24L01 CX-1766
> +	0101  HP Prime Wireless Kit [FOK65AA] (Flash mode)
> +	2233  Linksys WUSB11 v2.8 802.11b Adapter [Atmel AT76C505]
> +	2234  Linksys WUSB54G v1 OEM 802.11g Adapter [Intersil ISL3886]
> +	2235  Linksys WUSB54GP v1 OEM 802.11g Adapter [Intersil ISL3886]
> +	2236  Linksys WUSB11 v3.0 802.11b Adapter [Intersil PRISM 3]
> +	7777  Bitcraze Crazyradio (PA) dongle
> +191c  Innovative Technology LTD
> +	4104  Banknote validator NV-150
> +1923  FitLinxx
> +	0002  Personal SyncPoint
> +1926  NextWindow
> +	0003  1900 HID Touchscreen
> +	0006  1950 HID Touchscreen
> +	0064  1950 HID Touchscreen
> +	0065  1950 HID Touchscreen
> +	0066  1950 HID Touchscreen
> +	0067  1950 HID Touchscreen
> +	0068  1950 HID Touchscreen
> +	0069  1950 HID Touchscreen
> +	0071  1950 HID Touchscreen
> +	0072  1950 HID Touchscreen
> +	0073  1950 HID Touchscreen
> +	0074  1950 HID Touchscreen
> +	0075  1950 HID Touchscreen
> +	0076  1950 HID Touchscreen
> +	0077  1950 HID Touchscreen
> +	0078  1950 HID Touchscreen
> +	0079  1950 HID Touchscreen
> +	007a  1950 HID Touchscreen
> +	007e  1950 HID Touchscreen
> +	007f  1950 HID Touchscreen
> +	0080  1950 HID Touchscreen
> +	0081  1950 HID Touchscreen
> +	0082  1950 HID Touchscreen
> +	0083  1950 HID Touchscreen
> +	0084  1950 HID Touchscreen
> +	0085  1950 HID Touchscreen
> +	0086  1950 HID Touchscreen
> +	0087  1950 HID Touchscreen
> +	0dbf  HID Touchscreen
> +	0dc2  HID Touchscreen
> +1928  Proceq SA
> +	0400  Equotip Piccolo
> +192f  Avago Technologies, Pte.
> +	0000  Mouse
> +	0416  ADNS-5700 Optical Mouse Controller (3-button)
> +	0616  ADNS-5700 Optical Mouse Controller (5-button)
> +	0916  ADNS-2710 Optical Mouse Controller
> +1930  Shenzhen Xianhe Technology Co., Ltd.
> +1931  Ningbo Broad Telecommunication Co., Ltd.
> +1934  Feature Integration Technology Inc. (Fintek)
> +	0602  F71610 or F71612 Consumer Infrared Receiver/Transceiver
> +	0702  Integrated Consumer Infrared Receiver/Transceiver
> +	5168  F71610A or F71612A Consumer Infrared Receiver/Transceiver
> +1935  Elektron Music Machines
> +	000d  Elektron Digitakt
> +1938  Meinberg Funkuhren GmbH & Co. KG
> +	0501  TCR51USB IRIG Time Code Reader
> +	0502  TCR600USB IRIG Time Code Reader
> +1941  Dream Link
> +	8021  WH1080 Weather Station / USB Missile Launcher
> +1943  Sensoray Co., Inc.
> +	2250  Model 2250 MPEG and JPEG Capture Card
> +	2253  Model 2253 Audio/Video Codec Card
> +	2255  Model 2255 4 Channel Capture Card
> +	2257  Model 2257 4 Channel Capture Card
> +	2263  Model 2263 UVC HD Audio/Video Codec Card
> +	a250  Model 2250 MPEG and JPEG Capture Card (cold)
> +	a253  Model 2253 Audio/Video Codec Card (cold)
> +1949  Lab126, Inc.
> +	0002  Amazon Kindle
> +	0004  Amazon Kindle 3/4/Paperwhite
> +	0006  Amazon Kindle Fire
> +	0008  Amazon Kindle Fire HD 8.9"
> +	000a  Amazon Kindle Fire 2nd generation (2012)
> +	0331  Kindle Fire HD 8 (2018)
> +	0417  Amazon Zukey; clone of Yubikey 4 OTP+U2F
> +	0800  Fire Phone
> +194f  PreSonus Audio Electronics, Inc.
> +	0101  AudioBox 22 VSL
> +	0102  AudioBox 44 VSL
> +	0103  AudioBox 1818 VSL
> +	0201  FaderPort
> +	0301  AudioBox
> +1951  Hyperstone AG
> +1953  Ironkey Inc.
> +	0202  S200 2GB Rev. 1
> +1954  Radiient Technologies
> +195d  Itron Technology iONE
> +	2030  Func KB-460 Gaming Keyboard
> +	7002  Libra-Q11 IR remote
> +	7006  Libra-Q26 / 1.0 Remote
> +	7777  Scorpius wireless keyboard
> +	7779  Scorpius-P20MT
> +1963  IK Multimedia
> +	0005  iRig KEYS
> +	0046  UNO Synth
> +1965  Uniden Corporation
> +	0016  HomePatrol-1
> +	0018  UBC125XLT
> +	001a  BCD436HP Scanner
> +1967  CASIO HITACHI Mobile Communications Co., Ltd.
> +196b  Wispro Technology Inc.
> +1970  Dane-Elec Corp. USA
> +	0000  Z Mate 16GB
> +1973  Spectralink Corporation
> +	0002  Pivot recovery
> +	0003  Pivot Media Transfer Protocol
> +	0004  Pivot Media Transfer Protocol
> +1975  Dongguan Guneetal Wire & Cable Co., Ltd.
> +1976  Chipsbrand Microelectronics (HK) Co., Ltd.
> +	1307  microSD Card Reader
> +	6025  CBM2090 Flash Drive
> +1977  T-Logic
> +	0111  TL203 MP3 Player and Voice Recorder
> +197d  Leuze electronic
> +	0222  BCL 508i
> +1980  Storage Appliance Corporation
> +	0808  Clickfree C2 Slimline (527SE)
> +1989  Nuconn Technology Corp.
> +198f  Beceem Communications Inc.
> +	0210  BCS200 WiMAX Adapter
> +	0220  BCSM250 WiMAX Adapter
> +1990  Acron Precision Industrial Co., Ltd.
> +1995  Trillium Technology Pty. Ltd.
> +	3202  REC-ADPT-USB (recorder)
> +	3203  REC-A-ADPT-USB (recorder)
> +1996  PixeLINK
> +	3010  Camera Release 4
> +	3011  OEM Camera
> +	3012  e-ImageData Corp. ScanPro
> +1997  Shenzhen Riitek Technology Co., Ltd
> +	0409  wireless mini keyboard with touchpad
> +	2433  wireless mini keyboard with touchpad
> +199b  MicroStrain, Inc.
> +	3065  3DM-GX3-25 Orientation Sensor
> +199e  The Imaging Source Europe GmbH
> +	8101  DFx 21BU04 Camera
> +	8457  DFK AFU130-L53 camera
> +199f  Benica Corporation
> +19a5  HARRIS Corp.
> +	0004  Remote NDIS Network Device
> +	0012  RF-7800S Secure Personal Radio
> +	0401  Mass Storage Device
> +	0402  Falcon III RF-7800V family RNDIS
> +19a8  Biforst Technology Inc.
> +19ab  Bodelin
> +	1000  ProScope HR
> +19af  S Life
> +	6611  Celestia VoIP Phone
> +19b2  Batronix
> +	0010  BX32 Batupo
> +	0011  BX32P Barlino
> +	0012  BX40 Bagero
> +	0013  BX48 Batego
> +19b4  Celestron
> +	0002  SkyScout Personal Planetarium
> +	0101  Handheld Digital Microscope 44302
> +19b5  B & W Group
> +19b6  Infotech Logistic, LLC
> +19b9  Data Robotics
> +	4b10  Drobo
> +	8d20  Drobo Elite
> +19c2  Futuba
> +	6a11  MDM166A Fluorescent Display
> +19ca  Mindtribe
> +	0001  Sandio 3D HID Mouse
> +19cf  Parrot SA
> +	0001  MiniKit Slim handsfree car kit in firmware update mode
> +19d1  BYD
> +19d2  ZTE WCDMA Technologies MSM
> +	0001  CDMA Wireless Modem
> +	0002  MF632/ONDA ET502HS/MT505UP
> +	0007  TU25 WiMAX Adapter [Beceem BCS200]
> +	0017  MF669
> +	0031  MF110/MF627/MF636
> +	0037  ONDA MC503HSA
> +	0039  MF100
> +	0063  K3565-Z HSDPA
> +	0064  MF627 AU
> +	0083  MF190
> +	0103  MF112
> +	0104  K4505-Z
> +	0117  MF667
> +	0146  MF 195E (HSPA+ Modem)
> +	0167  MF820 4G LTE
> +	0172  AX226 WIMAX MODEM (After Modeswitch)
> +	0325  LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard
> +	0326  LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard
> +	0501  Lever Cell Phone Model Z936L
> +	1001  K3805-Z vodafone WCDMA/GSM Modem - storage mode (made by ZTE)
> +	1002  K3805-Z vodafone WCDMA/GSM Modem/Networkcard (made by ZTE)
> +	1008  K3570-Z
> +	1010  K3571-Z
> +	1017  K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard
> +	1018  K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard
> +	1203  MF691 [ T-Mobile webConnect Rocket 2.0]
> +	1217  MF652
> +	1218  MF652
> +	1270  MF667
> +	2000  MF627/MF628/MF628+/MF636+ HSDPA/HSUPA
> +	fff2  Gobi Wireless Modem (QDL mode)
> +	fff3  Gobi Wireless Modem
> +19db  KFI Printers
> +	02f1  NAUT324C
> +19e1  WeiDuan Electronic Accessory (S.Z.) Co., Ltd.
> +19e8  Industrial Technology Research Institute
> +19ef  Pak Heng Technology (Shenzhen) Co., Ltd.
> +19f7  RODE Microphones
> +	0001  Podcaster
> +19fa  Gampaq Co.Ltd
> +	0607  GAME CONTROLLER
> +	0703  Steering Wheel
> +19fd  MTI Instruments Inc.
> +19ff  Dynex
> +	0102  1.3MP Webcam
> +	0201  Rocketfish Wireless 2.4G Laser Mouse
> +	0220  RF-HDWEBLT RocketFish HD WebCam
> +	0238  DX-WRM1401 Mouse
> +	0239  Bluetooth 4.0 Adapter [Broadcom, 1.12, BCM20702A0]
> +1a08  Bellwood International, Inc.
> +1a0a  USB-IF non-workshop
> +	badd  USB OTG Compliance test device
> +1a12  KES Co., Ltd.
> +1a1d  Veho
> +	0407  Mimi WiFi speakers
> +1a25  Amphenol East Asia Ltd.
> +1a2a  Seagate Branded Solutions
> +1a2c  China Resource Semico Co., Ltd
> +	0021  Keyboard
> +	0024  Multimedia Keyboard
> +	2124  Keyboard
> +	2d23  Keyboard
> +	427c  Backlit Keyboard [Cougar Vantar]
> +1a32  Quanta Microsystems, Inc.
> +	0304  802.11n Wireless LAN Card
> +1a34  ACRUX
> +	0802  Gamepad
> +1a36  Biwin Technology Ltd.
> +1a40  Terminus Technology Inc.
> +	0101  Hub
> +	0201  FE 2.1 7-port Hub
> +1a41  Action Electronics Co., Ltd.
> +1a44  VASCO Data Security International
> +	0001  Digipass 905 SmartCard Reader
> +1a4a  Silicon Image
> +1a4b  SafeBoot International B.V.
> +1a5a  Tandberg Data
> +1a61  Abbott Diabetes Care
> +	3410  CoPilot System Cable
> +	3650  FreeStyle Libre
> +	3850  FreeStyle Optium/Precision Neo
> +	3950  FreeStyle Libre 2
> +1a64  Mastervolt
> +	0000  MasterBus Link
> +1a6a  Spansion Inc.
> +1a6d  SamYoung Electronics Co., Ltd
> +1a6e  Global Unichip Corp.
> +1a6f  Sagem Orga GmbH
> +1a72  Physik Instrumente
> +	1008  E-861 PiezoWalk NEXACT Controller
> +1a79  Bayer Health Care LLC
> +	6002  Contour
> +	6210  Contour Next Link 2.4 glucometer
> +	6300  Contour next link
> +	7410  Contour Next
> +	7800  Contour Plus One
> +1a7b  Lumberg Connect  GmbH & Co. KG
> +1a7c  Evoluent
> +	0068  VerticalMouse 3
> +	0168  VerticalMouse 3 Wireless
> +	0191  VerticalMouse 4
> +	0195  VerticalMouse C Wireless
> +1a7e  Meltec Systementwicklung
> +	1001  UFT75, UT150, UT60
> +	1003  Thermostick
> +1a81  Holtek Semiconductor, Inc.
> +	1004  Wireless Dongle 2.4 GHZ HT82D40REW
> +	1701  Wireless dongle
> +	2004  Keyboard
> +	2203  Laser Gaming mouse
> +	2204  Optical Mouse
> +	2205  Laser Mouse
> +	4001  Keyboard
> +1a86  QinHeng Electronics
> +	5512  CH341 in EPP/MEM/I2C mode, EPP/I2C adapter
> +	5523  CH341 in serial mode, usb to serial port converter
> +	5584  CH341 in parallel mode, usb to printer port converter
> +	7523  CH340 serial converter
> +	752d  CH345 MIDI adapter
> +	7584  CH340S
> +	e008  HID-based serial adapater
> +1a89  Dynalith Systems Co., Ltd.
> +1a8b  SGS Taiwan Ltd.
> +1a8d  BandRich, Inc.
> +	1002  BandLuxe 3.5G HSDPA Adapter
> +	1009  BandLuxe 3.5G HSPA Adapter
> +	100d  4G LTE adapter
> +1a98  Leica Camera AG
> +1aa4  Data Drive Thru, Inc.
> +1aa5  UBeacon Technologies, Inc.
> +1aa6  eFortune Technology Corp.
> +1aab  Silvercreations Software AG
> +	7736  sceye (Gen 2)
> +	7737  sceye (Gen 3)
> +	7738  sceye (Gen 4, 3 Mpix)
> +	7750  sceyeS (Gen 5, 5 MPix)
> +1aad  KeeTouch
> +	0001  Touchscreen
> +1ab1  Rigol Technologies
> +	04b0  DS6000 SERIES
> +	04be  DS4000 SERIES
> +	04ce  DS1xx4Z/MSO1xxZ series
> +	0588  DS1000 SERIES
> +1ab2  Allied Vision
> +	0001  Vision device
> +1acb  Salcomp Plc
> +1acc  Midiplus Co, Ltd.
> +	0103  AudioLink plus 4x4 2.9.28
> +1ad1  Desay Wire Co., Ltd.
> +1ad4  APS
> +	0002  KM290-HRS
> +1adb  Schweitzer Engineering Laboratories, Inc
> +	0001  C662 Serial Cable
> +	0003  CDC Ethernet Gadget
> +1ae4  ic-design Reinhard Gottinger GmbH
> +1ae7  X-TENSIONS
> +	0381  VS-DVB-T 380U (af9015 based)
> +	0525  X-Tensions ISDN TA XC-525 [HFC-S USB]
> +	2001  SpeedLink Snappy Mic webcam (SL-6825-SBK)
> +	9003  SpeedLink Vicious And Devine Laplace webcam, white (VD-1504-SWT)
> +	9004  SpeedLink Vicious And Devine Laplace webcam, black (VD-1504-SBK)
> +1aed  High Top Precision Electronic Co., Ltd.
> +1aef  Conntech Electronic (Suzhou) Corporation
> +1af1  Connect One Ltd.
> +1af3  Kingsis Technology Corporation
> +	0001  ZOWIE Gaming mouse
> +1afe  A. Eberle GmbH & Co. KG
> +	0001  PQ Box 100
> +1b04  Meilhaus Electronic GmbH
> +	0630  ME-630
> +	0940  ME-94
> +	0950  ME-95
> +	0960  ME-96
> +	1000  ME-1000
> +	100a  ME-1000
> +	100b  ME-1000
> +	1400  ME-1400
> +	140a  ME-1400A
> +	140b  ME-1400B
> +	140c  ME-1400C
> +	140d  ME-1400D
> +	140e  ME-1400E
> +	14ea  ME-1400EA
> +	14eb  ME-1400EB
> +	1604  ME-1600/4U
> +	1608  ME-1600/8U
> +	160c  ME-1600/12U
> +	160f  ME-1600/16U
> +	168f  ME-1600/16U8I
> +	4610  ME-4610
> +	4650  ME-4650
> +	4660  ME-4660
> +	4661  ME-4660I
> +	4662  ME-4660
> +	4663  ME-4660I
> +	4670  ME-4670
> +	4671  ME-4670I
> +	4672  ME-4670S
> +	4673  ME-4670IS
> +	4680  ME-4680
> +	4681  ME-4680I
> +	4682  ME-4680S
> +	4683  ME-4680IS
> +	6004  ME-6000/4
> +	6008  ME-6000/8
> +	600f  ME-6000/16
> +	6014  ME-6000I/4
> +	6018  ME-6000I/8
> +	601f  ME-6000I/16
> +	6034  ME-6000ISLE/4
> +	6038  ME-6000ISLE/8
> +	603f  ME-6000ISLE/16
> +	6044  ME-6000/4/DIO
> +	6048  ME-6000/8/DIO
> +	604f  ME-6000/16/DIO
> +	6054  ME-6000I/4/DIO
> +	6058  ME-6000I/8/DIO
> +	605f  ME-6000I/16/DIO
> +	6074  ME-6000ISLE/4/DIO
> +	6078  ME-6000ISLE/8/DIO
> +	607f  ME-6000ISLE/16/DIO
> +	6104  ME-6100/4
> +	6108  ME-6100/8
> +	610f  ME-6100/16
> +	6114  ME-6100I/4
> +	6118  ME-6100I/8
> +	611f  ME-6100I/16
> +	6134  ME-6100ISLE/4
> +	6138  ME-6100ISLE/8
> +	613f  ME-6100ISLE/16
> +	6144  ME-6100/4/DIO
> +	6148  ME-6100/8/DIO
> +	614f  ME-6100/16/DIO
> +	6154  ME-6100I/4/DIO
> +	6158  ME-6100I/8/DIO
> +	615f  ME-6100I/16/DIO
> +	6174  ME-6100ISLE/4/DIO
> +	6178  ME-6100ISLE/8/DIO
> +	617f  ME-6100ISLE/16/DIO
> +	6259  ME-6200I/9/DIO
> +	6359  ME-6300I/9/DIO
> +	810a  ME-8100A
> +	810b  ME-8100B
> +	820a  ME-8200A
> +	820b  ME-8200B
> +1b0e  BLUTRONICS S.r.l.
> +	1078  BLUDRIVE II CCID
> +	1079  BLUDRIVE II CCID
> +	1080  WRITECHIP II CCID
> +1b12  Eventide
> +	0011  ModFactor
> +1b1c  Corsair
> +	0890  Flash Padlock
> +	0a00  SP2500 Speakers
> +	0a60  Vengeance K60 Keyboard
> +	0c04  Link Cooling Node
> +	0c06  RM-Series C-Link Adapter
> +	0c0a  Hydro Series H115i Liquid CPU Cooler
> +	0c0b  Lighting Node Pro
> +	0c0c  Lighting Node Loader
> +	0c22  iCUE H150i RGB PRO XT Liquid CPU Cooler
> +	1a01  Flash Voyager GT
> +	1a03  Voyager 3.0
> +	1a09  Voyager GT 3.0
> +	1a0a  Survivor Stealth Flash Drive
> +	1a0b  Flash Voyager LS
> +	1a0e  Voyager GTX
> +	1a14  Voyager Vega
> +	1a15  Voyager Slider Flash Drive
> +	1a90  Flash Voyager GT
> +	1ab1  Voyager
> +	1b04  Raptor K50 Keyboard
> +	1b07  Vengeance K65 Gaming Keyboard
> +	1b08  Vengeance K95 Keyboard
> +	1b09  Vengeance K70R keyboard
> +	1b11  K95 RGB Mechanical Gaming Keyboard
> +	1b13  Vengeance K70RGB keyboard
> +	1b20  STRAFE RGB Gaming Keyboard
> +	1b2d  K95 RGB Platinum Keyboard [RGP0056]
> +	1b2e  Corsair Corsair Gaming M65 Pro RGB Mouse
> +	1b2f  Sabre RGB [CH-9303011-XX]
> +	1b3d  Corsair Corsair Gaming K55 RGB Keyboard
> +	1b5e  Harpoon Wireless Mouse
> +	1b65  Harpoon Wireless Dongle
> +	1c00  Controller for Corsair Link
> +	1c02  AX1500i Power Supply
> +	1c05  HX750i Power Supply
> +	1c07  HX1000i Power Supply
> +	1c08  HX1200i Power Supply
> +	1c0b  RM750i Power Supply
> +	1c0c  RM850i Power Supply
> +	1c1a  Corsair CORSAIR Lighting Node CORE
> +1b1e  General Imaging / General Electric
> +	1003  A1250
> +1b1f  eQ-3 Entwicklung GmbH
> +	c00f  HM-CFG-USB/HM-CFG-USB-2 [HomeMatic Configuration adapter]
> +	c020  HmIP-RFUSB
> +1b20  MStar Semiconductor, Inc.
> +1b22  WiLinx Corp.
> +1b24  Telegent Systems, Inc.
> +	4001  TLG2300 Hybrid TV Device
> +1b26  Cellex Power Products, Inc.
> +1b27  Current Electronics Inc.
> +1b28  NAVIsis Inc.
> +1b32  Ugobe Life Forms, Inc.
> +	0064  Pleo robotic dinosaur
> +1b36  ViXS Systems, Inc.
> +1b3b  iPassion Technology Inc.
> +	2933  PC Camera/Webcam controller
> +	2935  PC Camera/Webcam controller
> +	2936  PC Camera/Webcam controller
> +	2937  PC Camera/Webcam controller
> +	2938  PC Camera/Webcam controller
> +	2939  PC Camera/Webcam controller
> +	2950  PC Camera/Webcam controller
> +	2951  PC Camera/Webcam controller
> +	2952  PC Camera/Webcam controller
> +	2953  PC Camera/Webcam controller
> +	2955  PC Camera/Webcam controller
> +	2956  PC Camera/Webcam controller
> +	2957  PC Camera/Webcam controller
> +	2958  PC Camera/Webcam controller
> +	2959  PC Camera/Webcam controller
> +	2960  PC Camera/Webcam controller
> +	2961  PC Camera/Webcam controller
> +	2962  PC Camera/Webcam controller
> +	2963  PC Camera/Webcam controller
> +	2965  PC Camera/Webcam controller
> +	2966  PC Camera/Webcam controller
> +	2967  PC Camera/Webcam controller
> +	2968  PC Camera/Webcam controller
> +	2969  PC Camera/Webcam controller
> +1b3f  Generalplus Technology Inc.
> +	0c52  808 Camera #9 (mass storage mode)
> +	2002  808 Camera #9 (web-cam mode)
> +	2003  GPD6000 [Digital MP3 Player]
> +1b47  Energizer Holdings, Inc.
> +	0001  CHUSB Duo Charger (NiMH AA/AAA USB smart charger)
> +1b48  Plastron Precision Co., Ltd.
> +1b52  ARH Inc.
> +	2101  FXMC Neural Network Controller
> +	2102  FXMC Neural Network Controller V2
> +	2103  FXMC Neural Network Controller V3
> +	4101  Passport Reader CLR device
> +	4201  Passport Reader PRM device
> +	4202  Passport Reader PRM extension device
> +	4203  Passport Reader PRM DSP device
> +	4204  Passport Reader PRMC device
> +	4205  Passport Reader CSHR device
> +	4206  Passport Reader PRMC V2 device
> +	4301  Passport Reader MRZ device
> +	4302  Passport Reader MRZ DSP device
> +	4303  Passport Reader CSLR device
> +	4401  Card Reader
> +	4501  Passport Reader RFID device
> +	4502  Passport Reader RFID AIG device
> +	6101  Neural Network Controller
> +	6202  Fingerprint Reader device
> +	6203  Fingerprint Scanner device
> +	8101  Camera V1
> +	8102  Recovery / Camera V2
> +	8103  Camera V3
> +1b59  K.S. Terminals Inc.
> +1b5a  Chao Zhou Kai Yuan Electric Co., Ltd.
> +1b65  The Hong Kong Standards and Testing Centre Ltd.
> +1b71  Fushicai
> +	0050  Encore ENUTV-4 Analog TV Tuner
> +	3002  USBTV007 Video Grabber [EasyCAP]
> +1b72  ATERGI TECHNOLOGY CO., LTD.
> +1b73  Fresco Logic
> +	1000  xHC1 Controller
> +1b75  Ovislink Corp.
> +	3072  AirLive WN-360USB adapter
> +	8171  WN-370USB 802.11bgn Wireless Adapter [Realtek RTL8188SU]
> +	8187  AirLive WL-1600USB 802.11g Adapter [Realtek RTL8187L]
> +	9170  AirLive X.USB 802.11abgn [Atheros AR9170+AR9104]
> +	a200  AirLive WN-200USB wireless 11b/g/n dongle
> +1b76  Legend Silicon Corp.
> +1b80  Afatech
> +	c810  MC810 [af9015]
> +	d393  DVB-T receiver [RTL2832U]
> +	d396  UB396-T [RTL2832U]
> +	d397  DVB-T receiver [RTL2832U]
> +	d398  DVB-T receiver [RTL2832U]
> +	d700  FM Radio SnapMusic Mobile 700 (FM700)
> +	e297  Conceptronic DVB-T CTVDIGRCU V3.0
> +	e302  CVBS / S-Video Capture Device [Pinnacle Dazzle / UB315-E]
> +	e34c  UB435-Q ATSC TV Stick
> +	e383  DVB-T UB383-T [af9015]
> +	e385  DVB-T UB385-T [af9015]
> +	e386  DVB-T UB385-T [af9015]
> +	e399  DVB-T KWorld PlusTV 399U [af9015]
> +	e39a  DVB-T395U [af9015]
> +	e39b  DVB-T395U [af9015]
> +	e401  Sveon STV22 DVB-T [af9015]
> +	e409  IT9137FN Dual DVB-T [KWorld UB499-2T]
> +1b86  Dongguan Guanshang Electronics Co., Ltd.
> +1b88  ShenMing Electron (Dong Guan) Co., Ltd.
> +1b8c  Altium Limited
> +1b8d  e-MOVE Technology Co., Ltd.
> +1b8e  Amlogic, Inc.
> +1b8f  MA LABS, Inc.
> +1b96  N-Trig
> +	0001  Duosense Transparent Electromagnetic Digitizer
> +1b98  YMax Communications Corp.
> +1b99  Shenzhen Yuanchuan Electronic
> +1ba1  JINQ CHERN ENTERPRISE CO., LTD.
> +1ba2  Lite Metals & Plastic (Shenzhen) Co., Ltd.
> +1ba4  Ember Corporation
> +	0001  InSight USB Link
> +	0002  EM358 Virtual COM Port
> +1ba6  Abilis Systems
> +1ba8  China Telecommunication Technology Labs
> +1bad  Harmonix Music
> +	0002  Rock Band Guitar for Xbox 360
> +	0003  Rock Band Drum Kit for Xbox 360
> +	0130  Ion Drum Rocker for Xbox 360
> +	028e  Controller
> +	3330  Rock Band 3 Keyboard wii interface
> +	f016  Controller
> +	f018  Street Fighter IV SE FightStick for Xbox 360
> +	f019  BrawlStick for Xbox 360
> +	f021  Ghost Recon Future Soldier Gamepad for Xbox 360
> +	f023  MLG Pro Circuit Controller for Xbox 360
> +	f025  Call of Duty Controller for Xbox 360
> +	f027  FPS Pro Controller for Xbox 360
> +	f028  Street Fighter IV FightPad for Xbox 360
> +	f02e  FightPad
> +	f030  MC2 MicroCON Racing Wheel for Xbox 360
> +	f036  MicroCON Gamepad Pro for Xbox 360
> +	f038  Street Fighter IV FightStick TE for Xbox 360
> +	f039  Marvel VS Capcom 2 Tournament Stick for Xbox 360
> +	f03a  Street Fighter X Tekken FightStick Pro for Xbox 360
> +	f03d  Street Fighter IV Arcade Stick TE for Xbox 360
> +	f03e  MLG Arcade FightStick TE for Xbox 360
> +	f03f  Soulcalibur FightStick for Xbox 360
> +	f042  Arcade FightStick TE S+ for Xbox 360
> +	f080  FightStick TE2 for Xbox 360
> +	f501  Horipad EX2 Turbo for Xbox 360
> +	f502  Real Arcade Pro.VX SA for Xbox 360
> +	f503  Fighting Stick VX for Xbox 360
> +	f504  Real Arcade Pro.EX
> +	f505  Fighting Stick EX2B for Xbox 360
> +	f506  Real Arcade Pro.EX Premium VLX for Xbox 360
> +	f900  Controller
> +	f901  GameStop Controller
> +	f903  Tron Controller for Xbox 360
> +	f904  PDP Versus Fighting Pad for Xbox 360
> +	f906  Mortal Kombat FightStick for Xbox 360
> +	f907  Afterglow Gamepad
> +	fa01  Gamepad
> +	fd00  Razer Onza Tournament Edition
> +	fd01  Razer Onza Classic Edition
> +1bae  Vuzix Corporation
> +	0002  VR920 Immersive Eyewear
> +1bbb  T & A Mobile Phones
> +	0003  Alcatel one touch 4030D modem connection
> +	0017  HSPA Data Card
> +	007a  Alcatel OneTouch (firmware upgrade mode)
> +	011e  Alcatel One Touch L100V / Telekom Speedstick LTE II
> +	0169  Alcatel ONE TOUCH Fierce
> +	0195  Alcatel OneTouch L850V / Telekom Speedstick LTE
> +	a00e  Vodafone Smart Tab 4G
> +	f000  Alcatel OneTouch (mass storage mode)
> +	f017  Alcatel One Touch L100V / Telekom Speedstick LTE II
> +1bbd  Videology Imaging Solutions, Inc.
> +	0060  1.3MP Mono Camera
> +	0066  1.3MP Mono Camera
> +	0067  1.3MP Mono Camera
> +1bc0  Beijing Senseshield Technology Co.,Ltd.
> +	0013  Elitee-e
> +	0014  Elite4
> +	0020  iToken
> +	0021  Mikey
> +	0051  Elite5
> +	0055  Elite5 v3.x
> +	485d  EliteIV
> +1bc4  Ford Motor Co.
> +1bc5  AVIXE Technology (China) Ltd.
> +1bc7  Telit Wireless Solutions
> +	0020  HE863
> +	0021  HE910
> +	0022  GE910-QUAD
> +	0023  HE910-D ECM
> +	0032  LE910-EU V2
> +	1003  UC864-E
> +	1004  UC864-G
> +	1005  CC864-DUAL
> +	1006  CC864-SINGLE
> +	1010  DE910-DUAL
> +	1011  CE910-DUAL
> +	1012  UE910 V2
> +	1101  ME910C1
> +	110a  ME310
> +	1200  LE920 (old firmware)
> +	1201  LE910 / LE920
> +1bce  Contac Cable Industrial Limited
> +1bcf  Sunplus Innovation Technology Inc.
> +	0005  Optical Mouse
> +	0007  Optical Mouse
> +	053a  Targa Silvercrest OMC807-C optische Funkmaus
> +	05c5  SPRF2413A [2.4GHz Wireless Keyboard/Mouse Receiver]
> +	05cf  Micro keyboard & mouse receiver
> +	08a0  Gaming mouse [Philips SPK9304]
> +	0c31  SPIF30x Serial-ATA bridge
> +	2281  SPCA2281 Web Camera
> +	2880  Dell HD Webcam
> +	2883  Asus Webcam
> +	2885  ASUS Webcam
> +	2888  HP Universal Camera
> +	2895  Dell Integrated Webcam
> +	28a2  Dell Integrated Webcam
> +	28a6  DELL XPS Integrated Webcam
> +	28ae  Laptop Integrated Webcam HD
> +	28bd  Dell Integrated HD Webcam
> +	2985  Laptop Integrated Webcam HD
> +	2b83  Laptop Integrated Webcam FHD
> +	2b91  Dell E5570 integrated webcam
> +	2b97  Laptop Integrated Webcam FHD
> +	2c6e  Laptop Integrated WebCam HD
> +1bd0  Hangzhou Riyue Electronic Co., Ltd.
> +1bd5  BG Systems, Inc.
> +1bda  University Of Southampton
> +	0010  Power Board v4 Rev B
> +	0011  Student Robotics SBv4B
> +1bde  P-TWO INDUSTRIES, INC.
> +1bef  Shenzhen Tongyuan Network-Communication Cables Co., Ltd
> +1bf0  RealVision Inc.
> +1bf5  Extranet Systems Inc.
> +1bf6  Orient Semiconductor Electronics, Ltd.
> +1bfd  TouchPack
> +	1268  Touch Screen
> +	1368  Touch Screen
> +	1568  Capacitive Touch Screen
> +	1668  IR Touch Screen
> +	1688  Resistive Touch Screen
> +	2968  Touch Screen
> +	5968  Touch Screen
> +	6968  Touch Screen
> +1c02  Kreton Corporation
> +1c04  QNAP System Inc.
> +	2074  ASM1074 High-Speed hub
> +	3074  ASM1074 SuperSpeed hub
> +1c05  Shenxhen Stager Electric
> +	ea75  G540 Programmer
> +1c0c  Ionics EMS, Inc.
> +	0102  Plug Computer
> +1c0d  Relm Wireless
> +1c10  Lanterra Industrial Co., Ltd.
> +1c11  Input Club Inc.
> +	b04d  ErgoDox Infinity
> +1c13  ALECTRONIC LIMITED
> +1c1a  Datel Electronics Ltd.
> +	0100  Action Replay DS "3DS/DSi/DS/Lite Compatible"
> +1c1b  Volkswagen of America, Inc.
> +1c1f  Goldvish S.A.
> +1c20  Fuji Electric Device Technology Co., Ltd.
> +1c21  ADDMM LLC
> +1c22  ZHONGSHAN CHIANG YU ELECTRIC CO., LTD.
> +1c26  Shanghai Haiying Electronics Co., Ltd.
> +1c27  HuiYang D & S Cable Co., Ltd.
> +1c28  PMD Technologies
> +	c003  CamCube
> +	c004  CamBoard
> +	c005  ConceptCam
> +	c006  CamBoard 22
> +	c007  CamBoard nano
> +	c008  CamBoard mod
> +	c009  CamBoard plus
> +	c00a  DigiCam
> +	c00d  CamBoard pico LDD
> +	c00f  CamBoard pico
> +1c29  Elster GmbH
> +	0001  ExMFE5 Simulator
> +	10fc  enCore device
> +1c31  LS Cable Ltd.
> +1c34  SpringCard
> +	7241  Prox'N'Roll RFID Scanner
> +1c37  Authorizer Technologies, Inc.
> +	6190  U2F Fido-compliant cryptotoken
> +1c3d  NONIN MEDICAL INC.
> +1c3e  Wep Peripherals
> +1c40  EZPrototypes
> +	0533  TiltStick
> +	0534  i2c-tiny-usb interface
> +	0535  glcd2usb interface
> +	0536  Swiss ColorPAL
> +	0537  MIST Board
> +1c49  Cherng Weei Technology Corp.
> +1c4b  Geratherm Medical AG
> +	026f  Spirostik
> +1c4f  SiGma Micro
> +	0002  Keyboard TRACER Gamma Ivory
> +	0003  HID controller
> +	000e  Genius KB-120 Keyboard
> +	0026  Keyboard
> +	0032  Optical Mouse with Scroll Wheel
> +	0034  XM102K Optical Wheel Mouse
> +	0063  Touchpad (integrated in detachable keyboard of Chuwi SurBook)
> +	0065  Optical Wheel Mouse [Rapoo N1130]
> +	3000  Micro USB Web Camera
> +	3002  WebCam SiGma Micro
> +1c57  Zalman Tech Co., Ltd.
> +	1e45  FPSGUN FG1000 Mouse
> +1c6b  Philips & Lite-ON Digital Solutions Corporation
> +	a220  DVD Writer Slimtype eSAU108
> +	a222  DVD Writer Slimtype eTAU108
> +	a223  DVD Writer Slimtype eUAU108
> +1c6c  Skydigital Inc.
> +1c71  Humanware Inc
> +	c004  Braille Note Apex (braille terminal mode)
> +1c73  AMT
> +	861f  Anysee E30 USB 2.0 DVB-T Receiver
> +1c75  Arturia
> +	0288  KeyStep
> +1c77  Kaetat Industrial Co., Ltd.
> +1c78  Datascope Corp.
> +1c79  Unigen Corporation
> +1c7a  LighTuning Technology Inc.
> +	0577  Fingerprint Sensor
> +	0603  ES603 Swipe Fingerprint Sensor
> +	0801  Fingerprint Reader
> +1c7b  LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD.
> +1c82  Atracsys
> +	0200  spryTrac
> +1c83  Schomaecker GmbH
> +	0001  RS150 V2
> +	0002  RFID card reader
> +	0003  Communicator
> +	0005  Mobile RFID Reader
> +1c87  2N TELEKOMUNIKACE a.s.
> +1c88  Somagic, Inc.
> +	0007  SMI Grabber (EasyCAP DC60+ clone) (no firmware) [SMI-2021CBE]
> +	003c  SMI Grabber (EasyCAP DC60+ clone) [SMI-2021CBE]
> +1c89  HONGKONG WEIDIDA ELECTRON LIMITED
> +1c8e  ASTRON INTERNATIONAL CORP.
> +1c98  ALPINE ELECTRONICS, INC.
> +1c9e  OMEGA TECHNOLOGY
> +	6061  WL-72B 3.5G MODEM
> +1ca0  ACCARIO Inc.
> +1ca1  Symwave
> +	18ab  SATA bridge
> +1cac  Kinstone
> +	a332  C8 Webcam
> +	b288  C18 Webcam
> +1cb3  Aces Electronic Co., Ltd.
> +1cb4  OPEX CORPORATION
> +1cb6  IdeaCom Technology Inc.
> +	6681  IDC6681
> +1cbe  Luminary Micro Inc.
> +	0002  CDC serial port [TivaWare]
> +	00fd  In-Circuit Debug Interface
> +	00ff  Stellaris ROM DFU Bootloader
> +	0166  CANAL USB2CAN
> +	0240  McGill Robotics TM4C Microcontroller
> +1cbf  FORTAT SKYMARK INDUSTRIAL COMPANY
> +1cc0  PlantSense
> +1cca  NextWave Broadband Inc.
> +1ccd  Bodatong Technology (Shenzhen) Co., Ltd.
> +1cd4  adp corporation
> +1cd5  Firecomms Ltd.
> +1cd6  Antonio Precise Products Manufactory Ltd.
> +1cde  Telecommunications Technology Association (TTA)
> +1cdf  WonTen Technology Co., Ltd.
> +1ce0  EDIMAX TECHNOLOGY CO., LTD.
> +1ce1  Amphenol KAE
> +1cf1  Dresden Elektronik
> +	0001  Sensor Terminal Board
> +	0004  Wireless Handheld Terminal
> +	0017  deRFusbSniffer 2.4 GHz
> +	0018  deRFusb24E001
> +	0019  deRFusb14E001
> +	001a  deRFusb23E00
> +	001b  deRFusb13E00
> +	001c  deRFnode
> +	001d  deRFnode / gateway
> +	0022  deUSB level shifter
> +	0023  deRFusbSniffer Sub-GHz
> +	0025  deRFusb23E06
> +	0027  deRFusb13E06
> +	0030  ZigBee gateway [ConBee II]
> +1cfc  ANDES TECHNOLOGY CORPORATION
> +1cfd  Flextronics Digital Design Japan, LTD.
> +1d03  iCON
> +	0028  iCreativ MIDI Controller
> +1d07  Solid-Motion
> +1d08  NINGBO HENTEK DRAGON ELECTRONICS CO., LTD.
> +1d09  TechFaith Wireless Technology Limited
> +	1026  HSUPA Modem FLYING-LARK46-VER0.07 [Flying Angel]
> +1d0a  Johnson Controls, Inc. The Automotive Business Unit
> +1d0b  HAN HUA CABLE & WIRE TECHNOLOGY (J.X.) CO., LTD.
> +1d0d  TDKMedia
> +	0214  Trans-It Drive
> +1d0f  Sonix Technology Co., Ltd.
> +1d14  ALPHA-SAT TECHNOLOGY LIMITED
> +1d17  C-Thru Music Ltd.
> +	0001  AXiS-49 Harmonic Table MIDI Keyboard
> +1d19  Dexatek Technology Ltd.
> +	1101  DK DVB-T Dongle
> +	1102  DK mini DVB-T Dongle
> +	1103  DK 5217 DVB-T Dongle
> +	1104  MSI DigiVox Micro HD
> +	6105  Video grabber
> +	610a  Video grabber
> +	8202  DK DVBC/T DONGLE
> +1d1f  Diostech Co., Ltd.
> +1d20  SAMTACK INC.
> +1d27  ASUS
> +	0601  Xtion
> +1d34  Dream Cheeky
> +	0001  Fidget
> +	0002  Fidget (Basketball)
> +	0003  Fidget (Golf Ball)
> +	0004  Webmail Notifier
> +	0008  button
> +	000a  Mailbox Friends Alert
> +	000d  Big Red Button
> +	0013  LED Message Board
> +	0020  Stress Ball
> +1d45  Touch
> +	1d45  Foxlink Optical touch sensor
> +	459d  BenQ F5
> +	465c  Harrier Mini by EE
> +1d4d  PEGATRON CORPORATION
> +	0002  Ralink RT2770/2720 802.11b/g/n Wireless LAN Mini-USB Device
> +	000c  Ralink RT3070 802.11b/g/n Wireless Lan USB Device
> +	000e  Ralink RT3070 802.11b/g/n Wireless Lan USB Device
> +1d50  OpenMoko, Inc.
> +	1db5  IDBG (DFU)
> +	1db6  IDBG
> +	5117  Neo1973/FreeRunner kernel usbnet (g_ether, CDC Ethernet) mode
> +	5118  Neo1973/FreeRunner Debug board (V2+)
> +	5119  Neo1973/FreeRunner u-boot cdc_acm serial port
> +	511a  HXD8 u-boot usbtty CDC ACM Mode
> +	511b  SMDK2440 u-boot usbtty CDC ACM mode
> +	511c  SMDK2443 u-boot usbtty CDC ACM mode
> +	511d  QT2410 u-boot usbtty CDC ACM mode
> +	5120  Neo1973/FreeRunner u-boot usbtty generic serial
> +	5121  Neo1973/FreeRunner kernel mass storage (g_storage) mode
> +	5122  Neo1973/FreeRunner kernel cdc_ether USB network
> +	5123  Neo1973/FreeRunner internal USB CSR4 module
> +	5124  Neo1973/FreeRunner Bluetooth Device ID service
> +	5300  Rockbox
> +	530e  iriver H10 20GB (Rockbox)
> +	530f  iriver H10 5/6GB (Rockbox)
> +	5314  Apple iPod Color/Photo (Rockbox)
> +	5315  Apple iPod Nano 1g (Rockbox)
> +	5316  Apple iPod Video (Rockbox)
> +	5318  Apple iPod 4g Grayscale (Rockbox)
> +	5319  Apple iPod Mini 1g (Rockbox)
> +	531a  Apple iPod Mini 2g (Rockbox)
> +	531c  Apple iPod Nano 2g (Rockbox)
> +	531d  Apple iPod Classic/6G (Rockbox)
> +	5321  Cowon D2 (Rockbox)
> +	5329  Toshiba Gigabeat S (Rockbox)
> +	5332  Sandisk Sansa e200 series (Rockbox)
> +	5334  Sandisk Sansa c200 series (Rockbox)
> +	5337  Sandisk Sansa Clip (Rockbox)
> +	5338  Sandisk Sansa e200v2 series (Rockbox)
> +	5339  Sandisk Sansa m200 v4 series (Rockbox)
> +	533a  Sandisk Sansa Fuze (Rockbox)
> +	533b  Sandisk Sansa c200v2 series (Rockbox)
> +	533c  Sandisk Sansa Clipv2 (Rockbox)
> +	533e  Sandisk Sansa Clip+ (Rockbox)
> +	533f  Sandisk Sansa Fuze v2 (Rockbox)
> +	5340  Sandisk Sansa Fuze+ (Rockbox)
> +	5341  Sandisk Sansa Zip (Rockbox)
> +	5342  Sandisk Sansa Connect (Rockbox)
> +	5346  Olympus M:Robe 500i (Rockbox)
> +	5347  Olympus m:robe MR-100 (Rockbox)
> +	5359  Creative Zen X-Fi Style (Rockbox)
> +	535d  Creative Zen X-Fi2 (Rockbox)
> +	535e  Creative Zen X-Fi3 (Rockbox)
> +	5360  Creative Zen X-Fi (Rockbox)
> +	5361  Creative ZEN Mozaic (Rockbox)
> +	5362  Creative Zen (Rockbox)
> +	5364  Philips GoGear SA9200 (Rockbox)
> +	5365  Philips GoGear HDD16x0 (Rockbox)
> +	5366  Philips GoGear HDD63x0 (Rockbox)
> +	5378  Onda VX747 (Rockbox)
> +	5379  Onda VX767 (Rockbox)
> +	537b  Onda VX777 (Rockbox)
> +	538c  Samsung YH-820 (Rockbox)
> +	538d  Samsung YH-920 (Rockbox)
> +	538e  Samsung YH-925 (Rockbox)
> +	53a0  Packard Bell Vibe 500 (Rockbox)
> +	53b4  Rockchip 27xx generic (Rockbox)
> +	53be  HiFiMAN HM-60x (Rockbox)
> +	53bf  HiFiMAN HM-801 (Rockbox)
> +	53d2  HiFi E.T. MA9 (Rockbox)
> +	53d3  HiFi E.T. MA9C (Rockbox)
> +	53d4  HiFi E.T. MA8 (Rockbox)
> +	53d5  HiFi E.T. MA8C (Rockbox)
> +	53dc  Sony NWZ-E370/E380 series (Rockbox)
> +	53dd  Sony NWZ-E360 series (Rockbox)
> +	53e6  IHIFI 760 (Rockbox)
> +	53e7  IHIFI 960 (Rockbox)
> +	53ff  Generic Rockbox device
> +	6000  Ubertooth Zero
> +	6001  Ubertooth Zero (DFU)
> +	6002  Ubertooth One
> +	6003  Ubertooth One (DFU)
> +	6004  LeoLipo
> +	6005  LED Flower S
> +	6006  LED Cube
> +	6007  LED Flower
> +	6008  Kisbee 802.15.4 transceiver
> +	6009  Adjacent Reality Tracker
> +	600a  AVR Programmer
> +	600b  Hypna Go Go
> +	600c  CatNip LPC1343 development board
> +	600d  Enhanced RoboBrrd Brain board
> +	600e  OpenRISC Ordb2a-ep4ce22 development board
> +	600f  Paparazzi Lisa/M (DFU)
> +	6010  OpenPipe: OSHW Bagpipes MIDI controller
> +	6011  LeoLipo (DFU)
> +	6012  Universal C64 Cartridge
> +	6013  DiscFerret magnetic disc analyser (bootloader)
> +	6014  DiscFerret magnetic disc analyser
> +	6015  Smoothieboard
> +	6016  phInterface
> +	6017  Black Magic Debug Probe (DFU)
> +	6018  Black Magic Debug Probe (Application)
> +	6019  4pi 5 axis motion controller
> +	601a  Paparazzi Lisa/M
> +	601b  IST-2 chronograph for bullet speeds
> +	601c  EPOSMote II
> +	601d  UDS18B20 temperature sensor
> +	601e  5x5 STM32 prototyping board
> +	601f  uNSF
> +	6020  Toad3
> +	6021  AlphaSphere
> +	6022  LightPack
> +	6023  Pixelkit
> +	6024  Illucia
> +	6025  Keyglove (HID)
> +	6026  Keyglove (Serial)
> +	6027  Key64 Keyboard
> +	6028  Teensy 2.0 Development Board [ErgoDox Keyboard]
> +	6029  Marlin 2.0 (Serial)
> +	602a  Marlin 2.0 (Mass Storage)
> +	602b  FPGALink
> +	602c  5nes5snes (5x8)
> +	602d  5nes5snes (4x12)
> +	602e  Flexibity
> +	602f  K-copter
> +	6030  USB-oscope
> +	6031  Handmade GSM GPS tracker
> +	6032  ncrmnt.org uISP
> +	6033  frobiac / adnw keyboard
> +	6034  Tiflomag Ergo 2
> +	6035  FreeLaserTag Gun
> +	6036  FreeLaserTag Big Brother
> +	6037  FreeLaserTag Node
> +	6038  Monaka
> +	6039  eXtreme Feedback Device
> +	603a  TiLDA
> +	603b  Raspiface
> +	603c  Paparazzi (bootloader)
> +	603d  Paparazzi (Serial)
> +	603e  Paparazzi (Mass Storage)
> +	603f  airGuitar
> +	6040  moco
> +	6041  AlphaSphere (bootloader)
> +	6042  Dspace robot controller
> +	6043  pc-power
> +	6044  open-usb-can (DFU)
> +	6045  open-usb-can
> +	6046  mimus-weigand
> +	6047  RfCat Chronos Dongle
> +	6048  RfCat Dons Dongle
> +	6049  RfCat Chronos bootloader
> +	604a  RfCat Dons bootloader
> +	604b  HackRF Jawbreaker Software-Defined Radio
> +	604c  Makibox A6
> +	604d  Paella Pulse height analyzer
> +	604e  Miniscope v2b
> +	604f  Miniscope v2c
> +	6050  GoodFET
> +	6051  pinocc.io
> +	6052  APB Team Robotic Development Board
> +	6053  Darkgame Controller
> +	6054  Satlab/AAUSAT3 BlueBox
> +	6055  RADiuS ER900TRS-02 transciever with SMA Connector
> +	6056  The Glitch
> +	6057  OpenPipe MIDI Shield
> +	6058  Novena OTG port
> +	6059  xser serial
> +	605a  Daisho test
> +	605b  RfCat YARD Stick One
> +	605c  YARD Stick One bootloader
> +	605d  Funky Sensor v2
> +	605e  Blinkiverse Analog LED Fader
> +	605f  Small DIP package Cypress FX2
> +	6060  Data logger using the Cypress FX2
> +	6061  Power Manager
> +	6062  WhiteRabbit console and Wishbone bridge
> +	6063  CPC FPGA
> +	6064  CPC FPGA (DFU)
> +	6065  CPC FPGA (Serial)
> +	6066  Nuand BladeRF
> +	6067  Orbotron 9000 (Serial)
> +	6068  Orbotron 9000 (HID)
> +	6069  xser (DFU)
> +	606a  xser (legacy)
> +	606b  S08-245, urJtag compatible firmware for S08JS
> +	606c  Blinkytape full-color light tape
> +	606d  TinyG open source motion controller
> +	606e  Reefangel Evolution 1.0
> +	606f  Geschwister Schneider CAN adapter
> +	6070  Open Pinball Project
> +	6071  The Glitch HID
> +	6072  The Glitch Disk
> +	6073  The Glitch Serial
> +	6074  The Glitch MIDI
> +	6075  The Glitch RawHID
> +	6076  Vultureprog BIOS chip programmer
> +	6077  PaintDuino
> +	6078  DTplug
> +	6079  Mood Light
> +	607a  Fadecandy
> +	607b  RCDongle for IR remote control
> +	607c  OpenVizsla USB sniffer/analyzer
> +	607d  Spark Core Arduino-compatible board with WiFi
> +	607e  OSHUG Wuthering multi-tool
> +	607f  Spark Core Arduino-compatible board with WiFi (bootloader)
> +	6080  arcin arcade controller
> +	6081  BladeRF (bootloader)
> +	6082  Facecandy (DFU)
> +	6083  LightUp (bootloader)
> +	6084  arcin arcade controller (DFU)
> +	6085  IRKit for controlloing home electronics from iOS devices
> +	6086  OneRNG entropy device
> +	6087  Blinkytape (alternate endpoint config)
> +	6088  picp PIC16F145x based PIC16F145x programmer
> +	6089  Great Scott Gadgets HackRF One SDR
> +	608a  BLEduino
> +	608b  Loctronix ASR-2300 SDR/motion sensing module
> +	608c  Fx2lafw
> +	608d  Fx2lafw
> +	608e  Fx2lafw
> +	608f  Fx2lafw
> +	6090  Fx2lafw
> +	6091  Fx2lafw
> +	6092  Fx2lafw
> +	6093  Fx2lafw
> +	6094  Fx2lafw
> +	6095  Fx2lafw
> +	6096  LightUp (sketch)
> +	6097  Tessel JavaScript enabled Microcontroller with built-in WiFi
> +	6098  RFIDler
> +	6099  RASDR Radio Astronomy SDR Rx Interface
> +	609a  RASDR Radio Astronomy SDR Tx Interface
> +	609b  RASDR Radio Astronomy SDR (bootloader)
> +	609c  antiAFK keyboard
> +	609d  PIC16F145x bootloader
> +	609e  Clyde Lamp by Fabule (bootloader)
> +	609f  Clyde Lamp by Fabule (sketch)
> +	60a0  Smoothiepanel robotic control interface
> +	60a1  Airspy
> +	60a2  barebox (DFU)
> +	60a3  keyboard (bootloader)
> +	60a4  Papilio Duo (AVR)
> +	60a5  Papilio Duo (FPGA)
> +	60a6  HydraBus/HydraNFC (bootloader)
> +	60a7  HydraBus/HydraNFC
> +	60a8  reserved
> +	60a9  Blinky Light Controller (DFU)
> +	60aa  Blinky Light Controller
> +	60ab  AllPixel
> +	60ac  OpenBLT generic microcontroller (bootloader)
> +	60ad  Clasic Gamepad Adapter (NES)
> +	60ae  Clasic Gamepad Adapter (N64)
> +	60af  Clasic Gamepad Adapter (DB9)
> +	60b0  Waterott Arduino based Clock (caterina bootloader)
> +	60b1  Drinkbot (processing)
> +	60b2  Drinkbot (OTG-tablet support)
> +	60b3  calc.pw password generator device (standard)
> +	60b4  calc.pw password generator device (enhanced)
> +	60b5  TimVideos' HDMI2USB (FX2) - Unconfigured device
> +	60b6  TimVideos' HDMI2USB (FX2) - Firmware load/upgrade
> +	60b7  TimVideos' HDMI2USB (FX2) - HDMI/DVI Capture Device
> +	60b8  TimVideos' HDMI2USB (Soft+UTMI) - Unconfigured device
> +	60b9  TimVideos' HDMI2USB (Soft+UTMI) - Firmware upgrade
> +	60ba  TimVideos' HDMI2USB (Soft+UTMI) - HDMI/DVI Capture Device
> +	60bc  Simple CC25xx programmer / serial board
> +	60bd  Open Source control interface for multimedia applications
> +	60be  Pixelmatix Aurora (bootloader)
> +	60bf  Pixelmatix Aurora
> +	60c0  Nucular Keyboard adapter
> +	60c1  BrewBit Model-T pOSHW temperature controller for homebrewers (bootloader)
> +	60c2  BrewBit Model-T pOSHW temperature controller for homebrewers
> +	60c3  X Antenna Tracker arduino board
> +	60c4  CAN bus communication device
> +	60c5  PIC16F1 bootloader
> +	60c6  USBtrng hardware random number generator
> +	60c7  Zubax GNSS positioning module for light UAV systems
> +	60c8  Xlink data transfer and control system for Commodore C64
> +	60c9  random number generator
> +	60ca  FinalKey password manager
> +	60cb  PteroDAQ Data Acquisition on FRDM-KL25Z and future boards
> +	60cc  LamDiNao
> +	60cd  Open Lighting DMX512 / RDM widget
> +	60de  Cryptech.is random number generator
> +	60df  Numato Opsis HDMI2USB board (unconfigured)
> +	60e0  Numato Opsis HDMI2USB board (JTAG Programming Mode)
> +	60e1  Numato Opsis HDMI2USB board (User Mode)
> +	60e2  Osmocom SIMtrace 2 (DFU)
> +	60e3  Osmocom SIMtrace 2
> +	60e4  3D printed racing game - (Catalina CDC bootloader)
> +	60e5  3D printed racing game
> +	60e6  replacement for GoodFET/FaceDancer - GreatFet
> +	60e7  replacement for GoodFET/FaceDancer - GreatFet target
> +	60e8  Alpen Clack keyboard
> +	60e9  keyman64 keyboard itercepter
> +	60ea  Wiggleport FPGA-based I/O board
> +	60eb  candleLight CAN adapter
> +	60ec  Duet 2 WiFi or Duet 2 Ethernet 3D printer control electronics
> +	60ed  Duet 2 Maestro 3D printer control electronics
> +	60ee  Duet 3 motion control electronics
> +	60f0  UDAD-T1 data aquisition device (boot)
> +	60f1  UDAD-T1 data aquisition device
> +	60f2  UDAD-T2 data aquisition device (boot)
> +	60f3  UDAD-T2 data aquisition device
> +	60f4  Uniti ARC motor controller
> +	60f5  EightByEight Blinky Badge (DFU)
> +	60f6  EightByEight Blinky Badge
> +	60f7  cardio NFC/RFID card reader (bootloader)
> +	60f8  cardio NFC/RFID card reader
> +	60fc  OnlyKey Two-factor Authentication and Password Solution
> +	6100  overlay64 video overlay module
> +	6104  ScopeFun open source instrumentation
> +	6108  Myriad-RF LimeSDR
> +	610c  Magic Keys (boot)
> +	610d  Magic Keys
> +	6114  MIDI key
> +	6118  Thomson MO5 keyboard
> +	6122  Ultimate Hacking Keyboard
> +	614c  dwtk In-Circuit Emulator
> +	8085  Box0 (box0-v5)
> +	cc15  rad1o badge for CCC summer camp 2015
> +1d57  Xenta
> +	0005  Wireless Receiver (Keyboard and Mouse)
> +	0006  Wireless Receiver (RC Laser Pointer)
> +	000c  Optical Mouse
> +	130f  2.4Ghz wireless optical mouse receiver
> +	2400  Wireless Mouse Receiver
> +	32da  2.4GHz Receiver (Keyboard and Mouse)
> +	83d0  Click-mouse!
> +	ac01  Wireless Receiver (Keyboard and Mouse)
> +	ac02  ViFit Activity Tracker
> +	ac08  RFID Receiver (Keyboard)
> +	ad02  SE340D PC Remote Control
> +	ad03  [T3] 2.4GHz and IR Air Mouse Remote Control
> +	af01  AUVIO Universal Remote Receiver for PlayStation 3
> +	af03  Wireless Receiver
> +	fa20  2.4GHz Wireless Reciever (Mini Keyboard & Mouse)
> +1d5b  Smartronix, Inc.
> +1d5c  Fresco Logic
> +	2000  FL2000/FL2000DX VGA/DVI/HDMI Adapter
> +1d6b  Linux Foundation
> +	0001  1.1 root hub
> +	0002  2.0 root hub
> +	0003  3.0 root hub
> +	0100  PTP Gadget
> +	0101  Audio Gadget
> +	0102  EEM Gadget
> +	0103  NCM (Ethernet) Gadget
> +	0104  Multifunction Composite Gadget
> +	0105  FunctionFS Gadget
> +	0200  Qemu Audio Device
> +1d88  Mahr GmbH
> +	0001  Measurement Device [MarECon]
> +	0002  Probe
> +	0003  Surface Measurement [PS10]
> +1d90  Citizen
> +	201e  PPU-700
> +	2037  CL-S631 Barcode Printer
> +	20f0  Thermal Receipt Printer [CT-E351]
> +1d9d  Sigma Sport
> +	1010  Docking Station Topline 2009
> +	1011  Docking Station Topline 2012
> +	1012  Docking Station Topline 2016
> +1dd2  Leo Bodnar Electronics Ltd
> +1dd3  Dajc Inc.
> +	0001  Expert I/O 1000
> +1de1  Actions Microelectronics Co.
> +	1101  Generic Display Device (Mass storage mode)
> +	c101  Generic Display Device
> +1de6  MICRORISC s.r.o.
> +1df7  SDRplay
> +	2500  RSP1
> +	3000  RSP1a
> +	3010  RSP2/RSP2pro
> +	3020  RSPduo
> +	3030  RSPdx
> +1e0e  Qualcomm / Option
> +	f000  iCON 210 UMTS Surfstick
> +1e10  Point Grey Research, Inc.
> +	2004  Sony 1.3MP 1/3" ICX445 IIDC video camera [Chameleon]
> +1e17  Mirion Technologies Dosimetry Services Division
> +	0001  instadose dosimeter
> +1e1d  Kanguru Solutions
> +	0165  Secure Pen drive
> +	1101  FlashBlu Flash Drive
> +1e1f  INVIA
> +1e29  Festo AG & Co. KG
> +	0101  CPX Adapter
> +	0102  CPX Adapter >=HW10.09 [CP2102]
> +	0401  iL3-TP [AT90USB646]
> +	0402  FTDI232 [EasyPort]
> +	0403  FTDI232 [EasyPort Mini]
> +	0404  FTDI232 [Netzteil-GL]
> +	0405  FTDI232 [MotorPrüfstand]
> +	0406  STM32F103 [EasyKit]
> +	0407  LPC2378 [Robotino]
> +	0408  LPC2378 [Robotino-Arm]
> +	0409  LPC2378 [Robotino-Arm Bootloader]
> +	040a  LPC2378 [Robotino Bootloader]
> +	040b  LPC2378 [Robotino XT]
> +	040c  LPC2378 [Robotino XT Bootloader]
> +	040d  LPC2378 [Robotino 3]
> +	040e  LPC2378 [Robotino 3 Bootloader]
> +	040f  LPC2148 [Robotino gripper]
> +	0410  LPC2148 [Robotino IR panel]
> +	0501  CP2102 [CMSP]
> +	0601  CMMP-AS
> +	0602  FTDI232 [CMMS]
> +1e2d  Gemalto M2M GmbH
> +	004f  EGS3 GSM/GPRS modem
> +	0054  PH8 wireless module
> +	0058  Wireless Module [Cinterion EHS6]
> +	0059  Wireless Module [Cinterion BGx]
> +	005b  Zoom 4625 Modem
> +	0061  ALSx PLSx LTE modem
> +	00a0  Cinterion ELS31-V
> +1e3d  Chipsbank Microelectronics Co., Ltd
> +	198a  Flash Disk
> +	2093  CBM209x Flash Drive (OEM)
> +	4082  CBM4082 SD Card Reader
> +1e41  Cleverscope
> +	0001  CS328A PC Oscilloscope
> +	0004  CS448
> +1e44  SHIMANO INC.
> +	7220  SM-BCR2
> +1e4e  Cubeternet
> +	0100  WebCam
> +	0102  GL-UPC822 UVC WebCam
> +	0109  EtronTech CMOS based eSP570 WebCam [Onyx Titanium TC101]
> +1e54  TypeMatrix
> +	2030  2030 USB Keyboard
> +1e68  TrekStor GmbH & Co. KG
> +	001b  DataStation maxi g.u
> +	004c  DataStation Pocket Click
> +	0050  DataStation maxi light
> +	1045  ST70408-3 [SurfTab breeze 7.0 quad 3G] (MTP Mode)
> +	1046  ST70408-3 [SurfTab breeze 7.0 quad 3G] (PTP Mode)
> +1e71  NZXT
> +	0001  Avatar Optical Mouse
> +	170e  Kraken X
> +	1711  Grid+ V3
> +	1714  Smart Device
> +	1715  Kraken M22
> +	2006  Smart Device V2
> +1e74  Coby Electronics Corporation
> +	2211  MP300
> +	2647  2 GB 2 Go Video MP3 Player [MP601-2G]
> +	2659  Coby 4GB Go Video MP3 Player [MP620-4G]
> +	4641  A8705 MP3/Video Player
> +	6511  MP705-8G MP3 player
> +	6512  MP705-4G
> +	7111  MP957 Music and Video Player
> +1e7b  Zurich Instruments
> +	0002  HF2
> +	0003  UHF
> +	0004  MFLI
> +1e7d  ROCCAT
> +	2c24  Pyra Mouse (wired)
> +	2c2e  Lua Mouse
> +	2c38  Kiro Mouse
> +	2ced  Kone Mouse
> +	2cee  Kova 2016 Gray Mouse
> +	2cef  Kova 2016 White Mouse
> +	2cf0  Kova 2016 Black Mouse
> +	2cf6  Pyra Mouse (wireless)
> +	2d50  Kova[+] Mouse
> +	2d51  Kone[+] Mouse
> +	2d5a  Savu Mouse
> +	2db4  Kone Pure Optical Mouse
> +	2dbe  Kone Pure Mouse
> +	2dbf  Kone Pure Military Mouse
> +	2dc2  Kone Pure Optical Black Mouse
> +	2dcb  Kone Pure SE(L) Mouse
> +	2e22  Kone XTD Mouse
> +	2e23  Kone XTD Optical Mouse
> +	2e27  Kone AIMO Mouse
> +	2e4a  Tyon Black Mouse
> +	2e4b  Tyon White Mouse
> +	2e7c  Nyth Black Mouse
> +	2e7d  Nyth White Mouse
> +	2f76  Sova Keyboard
> +	2f94  Sova MK Keyboard
> +	2fa8  Suora Keyboard
> +	2fc6  Skeltr Keyboard
> +	2fda  Ryos MK FX Keyboard
> +	30d4  Arvo Keyboard
> +	3138  Ryos MK Keyboard
> +	316a  Ryos TKL Keyboard
> +	319c  Isku Keyboard
> +	31ce  Ryos MK Glow Keyboard
> +	3232  Ryos MK Pro Keyboard
> +	3246  Suora FX Keyboard
> +	3264  Isku FX Keyboard
> +1e8e  Airbus Defence and Space
> +	6001  P8GR
> +1e91  Other World Computing
> +	b0b1  miniStack
> +1ea7  SHARKOON Technologies GmbH
> +	0030  Trust GXT 158 Orna Laser Gaming Mouse
> +	0064  2.4GHz Wireless rechargeable vertical mouse [More&Better]
> +	0066  [Mediatrack Edge Mini Keyboard]
> +	0907  Keyboard
> +	1002  Vintorez Gaming Mouse
> +	2007  SHARK ZONE K30 Illuminated Gaming Keyboard
> +1eab  Fujian Newland Computer Co., Ltd
> +	0103  HR200 Barcode scanner engine (HID keyboard)
> +	0106  HR200 Barcode scanner engine (Serial CDC)
> +	0110  HR200 Barcode scanner engine (HID Pos)
> +	0c03  HR100/HR3260 cordless/HR3290 cordless/BS80 Barcode scanner engine (HID keyboard)
> +	0c06  HR100/HR3260 cordless/HR3290 cordless/BS80 Barcode scanner engine (USB Serial CDC)
> +	0c10  HR100/HR3260 cordless/HR3290 cordless/BS80 Barcode scanner engine (HID Pos)
> +	0d03  EM2028 Barcode scanner engine (HID keyboard)
> +	0d06  EM2028 Barcode scanner engine (Serial CDC)
> +	0d10  EM2028 Barcode scanner engine (HID Pos)
> +	1303  EM30xx/EM20xx/HR3260 corded/HR200C Barcode scanner engine (HID keyboard)
> +	1306  EM30xx/EM20xx/HR3260 corded/HR200C Barcode scanner engine (USB serial CDC)
> +	1310  EM30xx/EM20xx/HR3260 corded/HR200C Barcode scanner engine (HID Pos)
> +	1403  HR15-xx Barcode scanner engine (HID keyboard)
> +	1406  HR15-xx Barcode scanner engine (Serial CDC)
> +	1410  HR15-xx Barcode scanner engine (HID Pos)
> +	1603  FM100-M/3250 Barcode scanner engine (HID keyboard)
> +	1606  FM100-M/3250 Barcode scanner engine (Serial CDC)
> +	1610  FM100-M/3250 Barcode scanner engine (HID Pos)
> +	1903  EM1300 Barcode scanner engine (HID keyboard)
> +	1906  EM1300 Barcode scanner engine (Serial CDC)
> +	1910  EM1300 Barcode scanner engine (HID Pos)
> +	1a03  HR3290 corded/HR22 Barcode scanner engine (HID keyboard)
> +	1a06  HR3290 corded/HR22 Barcode scanner engine (Serial CDC)
> +	1a10  HR3290 corded/HR22 Barcode scanner engine (HID Pos)
> +	1c03  HR2150 Barcode scanner engine (HID keyboard)
> +	1c06  HR2150 Barcode scanner engine (Serial CDC)
> +	1c10  HR2150 Barcode scanner engine (HID Pos)
> +	1d03  FM430 Barcode scanner engine (HID keyboard)
> +	1d06  FM430 Barcode scanner engine (Serial CDC)
> +	1d10  FM430 Barcode scanner engine (HID Pos)
> +	1e03  HR42 Barcode scanner engine (HID keyboard)
> +	1e06  HR42 Barcode scanner engine (Serial CDC)
> +	1e10  HR42 Barcode scanner engine (HID Pos)
> +	1f03  HR11+ Barcode scanner engine (HID keyboard)
> +	1f06  HR11+ Barcode scanner engine (Serial CDC)
> +	1f10  HR11+ Barcode scanner engine (HID Pos)
> +	2003  EM2037v2 Barcode scanner engine (HID keyboard)
> +	2006  EM2037v2 Barcode scanner engine (Serial CDC)
> +	2010  EM2037v2 Barcode scanner engine (HID Pos)
> +	8003  EM13x5-LD/HR15-70/HR100-70/HR12/HR1150-70 Barcode scanner engine (HID keyboard)
> +	8006  EM13x5-LD/HR15-70/HR100-70/HR12/HR1150-70 Barcode scanner engine (USB Serial CDC)
> +	8010  EM13x5-LD/HR15-70/HR100-70/HR12/HR1150-70 Barcode scanner engine (HID Pos)
> +	8203  EM3080-01/EM3095/FR20/FM30 Barcode scanner engine (HID keyboard)
> +	8206  EM3080-01/EM3095/FR20/FM30 Barcode scanner engine (USB Serial CDC)
> +	8210  EM3080-01/EM3095/FR20/FM30 Barcode scanner engine (HID Pos)
> +	8303  HR2160 Barcode scanner engine (HID keyboard)
> +	8306  HR2160 Barcode scanner engine (Serial CDC)
> +	8310  HR2160 Barcode scanner engine (HID Pos)
> +1eaf  Leaflabs
> +	0003  Maple DFU interface
> +	0004  Maple serial interface
> +1eb8  Modacom Co., Ltd.
> +	7f00  MW-U3500 WiMAX adapter
> +1ebb  NuCORE Technology, Inc.
> +1ecb  AMTelecom
> +	02e2  JMR1140 [Jiofi]
> +1ed8  FENDER MUSICAL INSTRUMENTS CORPORATION
> +	0004  Mustang I/II
> +	0005  Mustang III/IV/V
> +	0006  Mustang I/II [Firmware Update]
> +	0007  Mustang III/IV/V [Firmware Update]
> +	0010  Mustang Mini
> +	0011  Mustang Mini [Firmware Update]
> +	0014  Mustang I (V.2)
> +	0016  Mustang IV v.2
> +1eda  AirTies Wireless Networks
> +	2012  Air2210 54 Mbps Wireless Adapter
> +	2210  Air2210 54 Mbps Wireless Adapter
> +	2310  Air2310 150 Mbps Wireless Adapter
> +	2410  Air2410 300 Mbps Wireless Adapter
> +1edb  Blackmagic design
> +	bd3b  Intensity Shuttle
> +	bd46  Mini Converter Analog to SDI
> +	bd75  2.5K Cinema Camera (BMCC)
> +1ee8  ONDA COMMUNICATION S.p.a.
> +	0014  MT833UP
> +1ef6  EADS Deutschland GmbH
> +	2233  Cassidian NH90 STTE
> +	5064  FDR Interface
> +	5523  Cassidian SSDC Adapter II
> +	5545  Cassidian SSDC Adapter III
> +	5648  RIU CSMU/BSD
> +	564a  Cassidian RIU CSMU/BSD Simulator
> +1f0c  CMX Systems
> +	2000  HP StreamSmart 410 [NW278AA]
> +1f28  Cal-Comp
> +	0020  CDMA USB Modem A600
> +	0021  CD INSTALLER USB Device
> +1f3a  Allwinner Technology
> +	1000  Prestigio PER3464B ebook reader (Mass storage mode)
> +	1002  mediacom XPRO 415
> +	1010  Android device in fastboot mode
> +	efe8  sunxi SoC OTG connector in FEL/flashing mode
> +1f44  The Neat Company
> +	0001  NM-1000 scanner
> +1f48  H-TRONIC GmbH
> +	0627  Data capturing system
> +	0628  Data capturing and control module
> +1f4d  G-Tek Electronics Group
> +	a115  EVOLVEO XtraTV stick [DVB-T]
> +	b803  Lifeview LV5TDLX DVB-T [RTL2832U]
> +	c803  NotOnlyTV (Lifeview) LV5TDLX DVB-T [RTL2832U]
> +	d220  Geniatech T220 DVB-T2 TV Stick
> +1f52  Systems & Electronic Development FZCO (SEDCO)
> +	0001  Ultima 49 Printer
> +	0002  Ultima 90 Printer
> +	0003  FormsPro 50 Printer
> +	0004  Ultima 90+ Printer
> +1f6f  Aliph
> +	0023  Jawbone Jambox
> +	8000  Jawbone Jambox - Updating
> +1f75  Innostor Technology Corporation
> +	0611  IS611 SATA/PATA Bridge Controller
> +	0621  IS621 SATA Storage Controller
> +	0888  IS888 SATA Storage Controller
> +	0902  IS902 UFD controller
> +	0916  IS916 Flash Drive
> +	0917  IS917 Mass storage
> +	0918  IS918 Flash Drive
> +1f82  TANDBERG
> +	0001  PrecisionHD Camera
> +1f84  Alere, Inc.
> +	1f7e  Lateral Flow Engine
> +1f87  Stantum
> +	0002  Multi-touch HID Controller
> +1f9b  Ubiquiti Networks, Inc.
> +	0241  AirView2-EXT
> +	b0b1  UniFi VoIP Phone
> +1fab  Samsung Opto-Electroncs Co., Ltd.
> +	104d  ES65
> +1fac  Franklin Wireless
> +	0232  U770 3G/4G Wimax/4G LTE Modem
> +1fae  Lumidigm
> +	0040  M311 Fingerprint Scanner
> +	212c  M30x (Mercury) fingerprint sensor
> +1fb2  Withings
> +	0001  Wi-Fi Body Scale (WBS01)
> +1fba  DERMALOG Identification Systems GmbH
> +1fbd  Delphin Technology AG
> +	0001  Expert Key - Data aquisition system
> +1fc9  NXP Semiconductors
> +	0003  LPC1343
> +	000c  LPC4330FET180 [ARM Cortex M4 + M0] (device firmware upgrade mode)
> +	0082  LPC4330FET180 [ARM Cortex M4 + M0] (mass storage controller mode)
> +	010b  PR533
> +	0126  i.MX 7ULP SystemOnChip in RecoveryMode
> +	012b  i.MX 8M Dual/8M QuadLite/8M Quad Serial Downloader
> +	5002  PTN5002 [Startech VGA/DVI-D adapter]
> +	8124  SharkRF Bootloader
> +	824c  LumiNode1
> +1fde  ILX Lightwave Corporation
> +	0001  UART Bridge
> +1fe7  Vertex Wireless Co., Ltd.
> +	1000  VW100 series CDMA EV-DO Rev.A modem
> +1ff7  CVT Electronics.Co.,Ltd
> +	0013  CVTouch Screen (HID)
> +	001a  Human Interface Device
> +1ffb  Pololu Corporation
> +	0081  AVR Programmer
> +	0083  Jrk 21v3 Motor Controller
> +	0089  Micro Maestro 6-Servo Controller
> +	008a  Mini Maestro 12-Channel Servo Controller
> +	008b  Mini Maestro 18-Channel Servo Controller
> +	008c  Mini Maestro 24-Channel Servo Controller
> +	00b0  AVR Programmer v2
> +1fff  Ideofy Inc.
> +2000  CMX Systems
> +	1f0c  HP StreamSmart 410 [NW278AA]
> +2001  D-Link Corp.
> +	0001  DWL-120 WIRELESS ADAPTER
> +	0201  DHN-120 10Mb Home Phoneline Adapter
> +	1a00  DUB-E100 Fast Ethernet Adapter(rev.A) [ASIX AX88172]
> +	1a02  DUB-E100 Fast Ethernet Adapter(rev.C1) [ASIX AX88772]
> +	200c  10/100 Ethernet
> +	3101  DWA-182 AC1200 DB Wireless Adapter(rev.A1) [Broadcom BCM43526]
> +	3200  DWL-120 802.11b Wireless Adapter(rev.E1) [Atmel at76c503a]
> +	3301  DWA-130 802.11n Wireless N Adapter(rev.C1) [Realtek RTL8192U]
> +	3306  DWL-G122 Wireless Adapter(rev.F1) [Realtek RTL8188SU]
> +	3308  DWA-121 802.11n Wireless N 150 Pico Adapter [Realtek RTL8188CUS]
> +	3309  DWA-135 802.11n Wireless N Adapter(rev.A1) [Realtek RTL8192CU]
> +	330a  DWA-133 802.11n Wireless N Adapter [Realtek RTL8192CU]
> +	330d  DWA-131 802.11n Wireless N Nano Adapter (rev.B1) [Realtek RTL8192CU]
> +	330f  DWA-125 Wireless N 150 Adapter(rev.D1) [Realtek RTL8188ETV]
> +	3310  DWA-123 Wireless N 150 Adapter (rev.D1)
> +	3314  DWA-171 AC600 DB Wireless Adapter(rev.A1) [Realtek RTL8811AU]
> +	3315  DWA-182 Wireless AC Dualband Adapter(rev.C) [Realtek RTL8812AU]
> +	3317  DWA-137 Wireless N High-Gain Adapter [Ralink RT5372]
> +	3319  DWA-131 Wireless N Nano Adapter (Rev. E1) [Realtek RTL8192EU]
> +	3500  Elitegroup Computer Systems WLAN card WL-162
> +	3700  DWL-122 802.11b [Intersil Prism 3]
> +	3701  DWL-G120 Spinnaker 802.11g [Intersil ISL3886]
> +	3702  DWL-120 802.11b Wireless Adapter(rev.F) [Intersil ISL3871]
> +	3703  AirPlus G DWL-G122 Wireless Adapter(rev.A1) [Intersil ISL3880]
> +	3704  AirPlus G DWL-G122 Wireless Adapter(rev.A2) [Intersil ISL3887]
> +	3705  AirPlus G DWL-G120 Wireless Adapter(rev.C) [Intersil ISL3887]
> +	3761  IEEE 802.11g USB2.0 Wireless Network Adapter-PN
> +	3a00  DWL-AG132 [Atheros AR5523]
> +	3a01  DWL-AG132 (no firmware) [Atheros AR5523]
> +	3a02  DWL-G132 [Atheros AR5523]
> +	3a03  DWL-G132 (no firmware) [Atheros AR5523]
> +	3a04  DWL-AG122 [Atheros AR5523]
> +	3a05  DWL-AG122 (no firmware) [Atheros AR5523]
> +	3a80  AirPlus Xtreme G DWL-G132 Wireless Adapter
> +	3a81  predator Bootloader Download
> +	3a82  AirPremier AG DWL-AG132 Wireless Adapter
> +	3a83  predator Bootloader Download
> +	3b00  AirPlus DWL-120+ Wireless Adapter [Texas Instruments ACX100USB]
> +	3b01  WLAN Boot Device
> +	3c00  AirPlus G DWL-G122 Wireless Adapter(rev.B1) [Ralink RT2571]
> +	3c01  AirPlus AG DWL-AG122 Wireless Adapter
> +	3c02  AirPlus G DWL-G122 Wireless Adapter
> +	3c05  DUB-E100 Fast Ethernet Adapter(rev.B1) [ASIX AX88772]
> +	3c15  DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT5372]
> +	3c17  DWA-123 Wireless N 150 Adapter(rev.A1) [Ralink RT3370]
> +	3c19  DWA-125 Wireless N 150 Adapter(rev.A3) [Ralink RT5370]
> +	3c1a  DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.B2) [Ralink RT5572]
> +	3c1b  DWA-127 Wireless N 150 High-Gain Adapter(rev.A1) [Ralink RT3070]
> +	3c1e  DWA-125 Wireless N 150 Adapter(rev.B1) [Ralink RT5370]
> +	4000  DSB-650C Ethernet [klsi]
> +	4001  DSB-650TX Ethernet [pegasus]
> +	4002  DSB-650TX Ethernet [pegasus]
> +	4003  DSB-650TX-PNA Ethernet [pegasus]
> +	400b  10/100 Ethernet
> +	4102  10/100 Ethernet
> +	4a00  DUB-1312 Gigabit Ethernet Adapter
> +	5100  DSL-200 ADSL ATM Modem
> +	5102  DSL-200 ADSL Loader
> +	5b00  Remote NDIS Network Device
> +	9414  Cable Modem
> +	9b00  Broadband Cable Modem Remote NDIS Device
> +	abc1  DSB-650 Ethernet [pegasus]
> +	f013  DLink 7 port USB2.0 Hub
> +	f103  DUB-H7 7-port USB 2.0 hub
> +	f10d  Accent Communications Modem
> +	f110  DUB-AV300 A/V Capture
> +	f111  DBT-122 Bluetooth adapter
> +	f112  DUB-T210 Audio Device
> +	f116  Formosa 2
> +	f117  Formosa 3
> +	f118  Formosa 4
> +2002  DAP Technologies
> +2003  detectomat
> +	ea61  dc3500
> +2006  LenovoMobile
> +2009  iStorage
> +	5004  datAshur 4GB
> +	5016  datAshur 16GB
> +	5032  datAshur 32GB
> +200c  Reloop
> +	100b  Play audio soundcard
> +2013  PCTV Systems
> +	0242  QuatroStick 510e
> +	0245  PCTV 73ESE
> +	0246  PCTV 74E
> +	0248  PCTV 282E
> +	024c  DVB-S2 Stick 460e
> +	024f  nanoStick T2 290e
> +	0251  QuatroStick nano 520e
> +	0258  DVB-S2 Stick 461e
> +	025a  AndroiDTV 78e
> +	025f  tripleStick 292e
> +	0262  microStick 79e
> +2018  Deutsche Telekom AG
> +	0406  Eumex 800
> +	0408  Eumex 800
> +2019  PLANEX
> +	3220  GW-US11S WLAN [Atmel AT76C503A]
> +	4901  GW-USSuper300 802.11bgn Wireless Adapter [Realtek RTL8191SU]
> +	4903  GW-USFang300 802.11abgn Wireless Adapter [Realtek RTL8192DU]
> +	4904  GW-USUltra300 802.11abgn Wireless Adapter [Realtek RTL8192DU]
> +	5303  GW-US54GXS 802.11bg
> +	5304  GWUS300 802.11n
> +	ab01  GW-US54HP
> +	ab24  GW-US300MiniS
> +	ab25  GW-USMini2N 802.11n Wireless Adapter [Ralink RT2870]
> +	ab28  GW-USNano
> +	ab29  GW-USMicro300
> +	ab2a  GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS]
> +	ab2b  GW-USEco300 802.11bgn Wireless Adapter [Realtek RTL8192CU]
> +	ab2c  GW-USDual300 802.11abgn Wireless Adapter [Realtek RTL8192DU]
> +	ab50  GW-US54Mini2
> +	c002  GW-US54SG
> +	c007  GW-US54GZL
> +	ed02  GW-USMM
> +	ed06  GW-US300MiniW 802.11bgn Wireless Adapter
> +	ed10  GW-US300Mini2
> +	ed14  GW-USMicroN
> +	ed16  GW-USMicroN2W 802.11bgn Wireless Adapter [Realtek RTL8188SU]
> +	ed17  GW-USValue-EZ 802.11n Wireless Adapter [Realtek RTL8188CUS]
> +	ed18  GW-USHyper300 / GW-USH300N 802.11bgn Wireless Adapter [Realtek RTL8191SU]
> +201e  Haier
> +	2009  CE100 CDMA EVDO
> +203a  PARALLELS
> +203d  Encore Electronics Inc.
> +	1480  ENUWI-N3 [802.11n Wireless N150 Adapter]
> +2040  Hauppauge
> +	0265  WinTV-dualHD DVB
> +	026d  WinTV-dualHD ATSC
> +	0c80  Windham
> +	0c90  Windham
> +	1605  WinTV-HVR 930C HD
> +	1700  CataMount
> +	1800  Okemo A
> +	1801  Okemo B
> +	2000  Tiger Minicard
> +	2009  Tiger Minicard R2
> +	200a  Tiger Minicard
> +	2010  Tiger Minicard
> +	2011  WinTV MiniCard [Dell Digital TV Receiver]
> +	2019  Tiger Minicard
> +	2400  WinTV PVR USB2 (Model 24019)
> +	4200  WinTV
> +	4700  WinTV Nova-S-USB2
> +	4902  HD PVR
> +	4903  HS PVR
> +	4982  HD PVR
> +	5500  Windham
> +	5510  Windham
> +	5520  Windham
> +	5530  Windham
> +	5580  Windham
> +	5590  Windham
> +	6500  WinTV HVR-900
> +	6502  WinTV HVR-900
> +	6503  WinTV HVR-930
> +	6513  WinTV HVR-950/HVR-980
> +	6600  WinTV HVR-900H (Model 660xx)
> +	7050  Nova-T Stick
> +	7060  Nova-T Stick 2
> +	7070  Nova-T Stick 3
> +	7240  WinTV HVR-850
> +	8400  WinTV Nova-T-500
> +	9300  WinTV NOVA-T USB2 (cold)
> +	9301  WinTV NOVA-T USB2 (warm)
> +	9941  WinTV Nova-T-500
> +	9950  WinTV Nova-T-500
> +	b123  WinTV-HVR-955Q
> +	b138  WinTV-HVR-900 model 00246 [WinTV-T Video]
> +	b910  Windham
> +	b980  Windham
> +	b990  Windham
> +	c000  Windham
> +	c010  Windham
> +2047  Texas Instruments
> +	0013  MSP eZ-FET lite
> +	0014  MSP-FET
> +	0200  MSP430 Bootloader
> +	0203  eZ-FET Bootloader
> +	0204  MSP-FET Bootloader
> +	0300  MSP430 CDC Example
> +	0301  MSP430 HID Datapipe Example
> +	0302  MSP430 CDC+HID Example
> +	0309  MSP430 HID Mouse Example
> +	0313  MSP430 CDC+CDC Example
> +	0314  MSP430 HID+HID Example
> +	0315  MSP430 HID Keyboard Example
> +	0316  MSP430 MSC File System Emulation Example
> +	0317  MSP430 MSC SD Card Example
> +	0318  MSP430 MSC Multiple LUNs Example
> +	0319  MSP430 MSC+CDC+HID Example
> +	0320  MSP430 SYSBIOS Tasks MSC+CDC+HID Example
> +	0321  MSP430 SYSBIOS SWIs MSC+CDC+HID Example
> +	0322  MSP430 MSC Double-Buffering Example
> +	0323  MSP430 MSC CD-ROM Example
> +	03df  MSP430 User Experiment
> +	03e0  MSP430 User Experiment
> +	03e1  MSP430 User Experiment
> +	03e2  MSP430 User Experiment
> +	03e3  MSP430 User Experiment
> +	03e4  MSP430 User Experiment
> +	03e5  MSP430 User Experiment
> +	03e6  MSP430 User Experiment
> +	03e7  MSP430 User Experiment
> +	03e8  MSP430 User Experiment
> +	03e9  MSP430 User Experiment
> +	03ea  MSP430 User Experiment
> +	03eb  MSP430 User Experiment
> +	03ec  MSP430 User Experiment
> +	03ed  MSP430 User Experiment
> +	03ee  MSP430 User Experiment
> +	03ef  MSP430 User Experiment
> +	03f0  MSP430 User Experiment
> +	03f1  MSP430 User Experiment
> +	03f2  MSP430 User Experiment
> +	03f3  MSP430 User Experiment
> +	03f4  MSP430 User Experiment
> +	03f5  MSP430 User Experiment
> +	03f6  MSP430 User Experiment
> +	03f7  MSP430 User Experiment
> +	03f8  MSP430 User Experiment
> +	03f9  MSP430 User Experiment
> +	03fa  MSP430 User Experiment
> +	03fb  MSP430 User Experiment
> +	03fc  MSP430 User Experiment
> +	03fd  MSP430 User Experiment
> +	0401  MSP430 Keyboard Example
> +	0855  Invensense Embedded MotionApp HID Sensor
> +	08f8  FDC2x14/LDC13xx/LDC16xx EVM
> +	0964  Inventio Software MSP430
> +	0a76  GEOKON S-3810A-5 USB-RS485 CONVERTER
> +	ffe7  HID v1.00 Device [Improv Device]
> +2058  Nano River Technology
> +	2058  ViperBoard I2C, SPI, GPIO interface
> +2077  Taicang T&W Electronics Co. Ltd
> +	9002  W1M100 HSPA/WCDMA Module
> +2080  Barnes & Noble
> +	0001  nook
> +	0002  NOOKcolor
> +	0003  NOOK Simple Touch
> +	0004  NOOK Tablet
> +	0005  BNTV600 [Nook HD+]
> +	0006  BNTV400 [Nook HD]
> +	0007  BNRV500 [Nook Glowlight]
> +	000a  BNRV510 [Nook Glowlight Plus]
> +	000b  BNRV520 [Nook Glowlight 3]
> +	000c  BNRV700 [Nook Glowlight Plus]
> +2086  SIMPASS
> +2087  Cando
> +	0a01  Multi Touch Panel
> +	0a02  Multi Touch Panel
> +	0b03  Multi Touch Panel
> +20a0  Clay Logic
> +	0006  flirc
> +	4107  GPF Crypto Stick V1.2
> +	4123  IKALOGIC SCANALOGIC 2
> +	414a  MDE SPI Interface
> +	415a  OpenPilot
> +	415b  CopterControl
> +	415c  PipXtreme
> +	41e5  BlinkStick
> +	4211  Nitrokey Start
> +	4223  ATSAMD21 [castAR]
> +	428d  Electrosense wideband converter
> +20b1  XMOS Ltd
> +	10ad  XUSB Loader
> +	f7d1  XTAG2 - JTAG Adapter
> +20b3  Hanvon
> +	0a18  10.1 Touch screen overlay
> +20b7  Qi Hardware
> +	0713  Milkymist JTAG/serial
> +	1540  ben-wpan, AT86RF230-based
> +	1db5  IDBG in DFU mode
> +	1db6  IDBG in normal mode
> +	9db1  Glasgow Debug Tool
> +	c25b  C2 Dongle
> +	cb72  ben-wpan, cntr
> +20bc  ShenZhen ShanWan Technology Co., Ltd.
> +	5500  Frostbite controller
> +20ce  Minicircuits
> +	0012  RF Sythesizer 250-4200MHz model SSG-4000LH
> +	0021  RF Switch Matrix
> +	0022  I/O Controller
> +20df  Simtec Electronics
> +	0001  Entropy Key [UDEKEY01]
> +20f0  L3Harris Technologies
> +	2102  EWLA V2 Module
> +20f1  NET New Electronic Technology GmbH
> +	0101  iCube3 Camera
> +20f4  TRENDnet
> +	646b  TEW-646UBH High Power 150Mbps Wireless N Adapter [Realtek RTL8188SU]
> +	648b  TEW-648UBM 802.11n 150Mbps Micro Wireless N Adapter [Realtek RTL8188CUS]
> +	664b  TEW-664UB H/W:V2.0R
> +	804b  TEW-804UB 802.11a/b/g/n/ac (1x1) Wireless Adapter [Realtek RTL8811AU]
> +	805b  TEW-805UB 300Mbps+867Mbps Wireless AC Adapter [Realtek RTL8812AU]
> +	806b  TEW-806UBH 802.11a/b/g/n/ac (1x1) Wireless Adapter [MediaTek MT7610U]
> +20f7  XIMEA
> +	3001  MQ or MD camera
> +	3002  MU camera
> +	3021  MJ camera
> +	30b3  MQ in U3V mode or MC camera
> +	a003  MU camera
> +2100  RT Systems
> +	0e56  USB62C Radio Cable [Yaesu 857/D - 897/D]
> +	9e50  USB-59 Radio Cable [Yaesu VX-8/D/DR]
> +	9e52  Yaesu VX-7
> +	9e54  CT29B Radio Cable
> +	9e57  RTS01 Radio Cable
> +	9e58  USB63C Radio Cable [Yaesu FTDX-1200]
> +	9e5d  K4Y Radio Cable
> +	9e5f  FT232RL [RTS05 Serial Cable]
> +2101  ActionStar
> +	0201  SIIG 4-to-2 Printer Switch
> +	1402  Keyboard/Mouse Switch
> +2104  Tobii Technology AB
> +	0050  Eye tracker [EYEX2]
> +	0124  Eyechip
> +2107  RDING TECH CO.,LTD
> +2109  VIA Labs, Inc.
> +	0210  Hub
> +	0700  VL700 SATA 3Gb/s bridge
> +	0701  VL701 SATA 3Gb/s bridge
> +	0711  VL711 SATA 6Gb/s bridge
> +	0715  VL817 SATA Adaptor
> +	0810  VL81x Hub
> +	0811  Hub
> +	0812  VL812 Hub
> +	0813  VL813 Hub
> +	0820  VL820 Hub
> +	2210  Hub
> +	2811  Hub
> +	2812  VL812 Hub
> +	2813  VL813 Hub
> +	2820  VL820 Hub
> +	3431  Hub
> +	711f  External
> +	8110  Hub
> +2113  Softkinetic
> +	0137  DepthSense 311 (3D)
> +	0145  DepthSense 325
> +	8000  DepthSense 311 (Color)
> +2116  KT Tech
> +	000a  IDE Hard Drive Enclosure
> +211f  CELOT Corporation
> +	6801  CDMA Products
> +2123  Cheeky Dream
> +	1010  Rocket Launcher
> +2125  Fiberpro Inc.
> +	0000  Bootloader
> +	0010  MCB-100 Series
> +2133  signotec GmbH
> +	0001  LCD Signature Pad Sigma
> +	0018  Delta Pen
> +	0019  Delta Touch
> +	001c  Kronos Pen
> +	0022  Epsilon Pen
> +2149  Advanced Silicon S.A.
> +	211b  Touchscreen Controller
> +	2306  TS58xxA/TC56xxA [CoolTouch]
> +	2703  TS58xxA/TC56xxA [CoolTouch]
> +214b  Huasheng Electronics
> +	7000  4-port hub [Maxxter ACT-HUB2-4P, HS8836, iSoul ultra-slim]
> +214e  Swiftpoint
> +	0005  Z - Gaming mouse [SM700]
> +2162  Broadxent (Creative Labs)
> +	2031  Network Blaster Wireless Adapter
> +	500c  DE5771 Modem Blaster
> +	8001  Broadxent BritePort DSL Bridge 8010U
> +2166  JVC Kenwood
> +	600b  TH-D74
> +2184  GW Instek
> +	0005  GDS-3000 Oscilloscope
> +	0006  GDS-3000 Oscilloscope
> +	0011  AFG Function Generator (CDC)
> +	0017  DSO
> +	0018  DSO
> +	0036  AFG-125 Function Generator (CDC)
> +2188  No brand
> +	0610  Hub
> +	0611  Hub
> +	0620  Hub
> +	0625  Hub
> +	0754  Card Reader
> +	4042  CalDigit Pro Audio
> +219c  Seal One AG
> +	0010  USB 2200 K Secure Sign Token
> +21a1  Emotiv Systems Pty. Ltd.
> +	0001  EPOC Consumer Headset Wireless Dongle
> +21a4  Electronic Arts Inc.
> +	ac27  SPORTS Active 2 Wireless Controller for PS3
> +	ac40  SPORTS Active 2 Wireless Controller for Wii
> +21a9  Saleae, Inc.
> +	1001  16-channel Logic Analyzer [Logic16]
> +	1003  Logic 4
> +	1004  Logic8
> +	1005  Logic Pro 8
> +	1006  Logic Pro 16
> +21ab  Planeta Informatica
> +	0010  RC700 NFC SmartCard Reader
> +	0011  DSR700 SmartCard Reader
> +21b4  AudioQuest
> +	0081  DragonFly
> +	0082  DragonFly Red
> +21d6  Agecodagis SARL
> +	0002  Seismic recorder [Tellus]
> +2207  Fuzhou Rockchip Electronics Company
> +	0010  GoClever Tab R83
> +	0011  SmartTab
> +	281a  RK2818 in Mask ROM mode
> +	290a  RK2918 in Mask ROM mode
> +	292a  RK2928 in Mask ROM mode
> +	292c  RK3026 in Mask ROM mode
> +	300a  RK3066 in Mask ROM mode
> +	300b  RK3168 in Mask ROM mode
> +	301a  RK3036 in Mask ROM mode
> +	310a  RK3066B in Mask ROM mode
> +	310b  RK3188 in Mask ROM mode
> +	310c  RK3126/RK3128 in Mask ROM mode
> +	310d  RK3126 in Mask ROM mode
> +	320a  RK3288 in Mask ROM mode
> +	320b  RK3228/RK3229 in Mask ROM mode
> +	320c  RK3328 in Mask ROM mode
> +	330a  RK3368 in Mask ROM mode
> +	330c  RK3399 in Mask ROM mode
> +221a  ZTEX GmbH
> +	0100  FPGA Boards
> +2222  MacAlly
> +	0004  iWebKey Keyboard
> +	0005  ICEKey Keyboard
> +	1001  Generic Hub
> +	2520  Mini Tablet
> +	4050  AirStick joystick
> +2226  Copper Mountain technologies
> +2227  SAMWOO Enterprise
> +	3105  SKYDATA SKD-U100
> +222a  ILI Technology Corp.
> +	0001  Multi-Touch Screen
> +	0037  Multi-Touch Screen
> +2230  Plugable
> +	0001  UD-160-A / M Integrated Hub
> +	0003  DC-125 / M Integrated Hub
> +2232  Silicon Motion
> +	1005  WebCam SCB-0385N
> +	1024  Webcam SC-13HDL11624N [Namuga Co., Ltd.]
> +	1028  WebCam SC-03FFL11939N
> +	1029  WebCam SC-13HDL11939N
> +	1037  WebCam SC-03FFM12339N
> +	1045  WebCam SC-10HDP12631N
> +2233  RadioShack Corporation
> +	6323  USB Electronic Scale
> +2237  Kobo Inc.
> +	4161  eReader White
> +	4163  Touch
> +	4173  Glo
> +2245  Aspeed Technology, Inc.
> +	1500  AST1500/1510 PC-over-LAN Virtual Hub
> +224f  APDM
> +	0001  Access Point
> +	0002  Docking Station
> +	0004  V2 Opal ACM
> +	0005  V2 Opal
> +	0006  V2 Docking Station
> +	0007  V2 Access Point ACM
> +	0008  V2 Access Point
> +2256  Faderfox
> +	1007  LV3 MIDI Controller
> +225d  Morpho
> +	0001  FINGER VP Multimodal Biometric Sensor
> +	0008  CBM-E3 Fingerprint Sensor
> +	0009  CBM-V3 Fingerprint Sensor
> +	000a  MSO1300-E3 Fingerprint Sensor
> +	000b  MSO1300-V3 Fingerprint Sensor
> +	000c  MSO1350-E3 Fingerprint Sensor & SmartCard Reader
> +	000d  MSO1350-V3 Fingerprint Sensor & SmartCard Reader
> +	000e  MorphoAccess SIGMA Biometric Access Control Terminal
> +	9015  Tablet 2
> +	9024  Tablet 2
> +	9039  Tablet 2 secure multifunction biometric tablet
> +	904d  Tablet 2 secure multifunction biometric tablet
> +	904e  Tablet 2 secure multifunction biometric tablet
> +	9091  Tablet 2 secure multifunction biometric tablet
> +	9092  Tablet 2 secure multifunction biometric tablet
> +	f000  Tablet 2 secure multifunction biometric tablet
> +	f003  Tablet 2 secure multifunction biometric tablet
> +	f006  Tablet 2 secure multifunction biometric tablet
> +	f00e  Tablet 2 secure multifunction biometric tablet
> +226e  DISPLAX
> +228d  8D Technologies inc.
> +	0001  Terminal Bike Key Reader
> +22a4  VERZO Technology
> +22a6  Pie Digital, Inc.
> +	ffff  PieKey "beta" 4GB model 4E4F41482E4F5247 (SM3251Q BB)
> +22a7  Fortinet Technologies
> +	1001  FortiGate Device
> +22b1  Secret Labs LLC
> +	1000  Netduino MCU pcb
> +22b8  Motorola PCS
> +	0001  Wally 2.2 chipset
> +	0002  Wally 2.4 chipset
> +	0005  V.60c/V.60i GSM Phone
> +	002e  XT1806
> +	0830  2386C-HT820
> +	0833  2386C-HT820 [Flash Mode]
> +	0850  Bluetooth Device
> +	1001  Patriot 1.0 (GSM) chipset
> +	1002  Patriot 2.0 chipset
> +	1005  T280e GSM/GPRS Phone
> +	1101  Patriot 1.0 (TDMA) chipset
> +	1801  Rainbow chipset flash
> +	2035  Bluetooth Device
> +	2805  GSM Modem
> +	2821  T720 GSM Phone
> +	2822  V.120e GSM Phone
> +	2823  Flash Interface
> +	2a01  MSM6050 chipset
> +	2a02  CDMA modem
> +	2a03  MSM6050 chipset flash
> +	2a21  V710 GSM Phone (P2K)
> +	2a22  V710 GSM Phone (AT)
> +	2a23  MSM6100 chipset flash
> +	2a41  MSM6300 chipset
> +	2a42  Usb Modem
> +	2a43  MSM6300 chipset flash
> +	2a61  E815 GSM Phone (P2K)
> +	2a62  E815 GSM Phone (AT)
> +	2a63  MSM6500 chipset flash
> +	2a81  MSM6025 chipset
> +	2a83  MSM6025 chipset flash
> +	2ac1  MSM6100 chipset
> +	2ac3  MSM6100 chipset flash
> +	2d78  XT300[SPICE]
> +	2e82  XT1541 [Moto G 3rd Gen]
> +	2e83  XT1033 [Moto G], PTP mode
> +	3001  A835/E1000 GSM Phone (P2K)
> +	3002  A835/E1000 GSM Phone (AT)
> +	3801  C350L/C450 (P2K)
> +	3802  C330/C350L/C450/EZX GSM Phone (AT)
> +	3803  Neptune LT chipset flash
> +	4001  OMAP 1.0 chipset
> +	4002  A920/A925 UMTS Phone
> +	4003  OMAP 1.0 chipset flash
> +	4008  OMAP 1.0 chipset RDL
> +	41d6  Droid X (Windows media mode)
> +	41d9  Droid/Milestone
> +	41db  Droid/Milestone (Debug mode)
> +	41de  Droid X (PC mode)
> +	4204  MPx200 Smartphone
> +	4214  MPc GSM
> +	4224  MPx220 Smartphone
> +	4234  MPc CDMA
> +	4244  MPx100 Smartphone
> +	4285  Droid X (Mass storage)
> +	42d9  XT910 [Droid RAZR]
> +	4801  Neptune LTS chipset
> +	4803  Neptune LTS chipset flash
> +	4810  Triplet GSM Phone (storage)
> +	4901  Triplet GSM Phone (P2K)
> +	4902  Triplet GSM Phone (AT)
> +	4903  Neptune LTE chipset flash
> +	4a01  Neptune LTX chipset
> +	4a03  Neptune LTX chipset flash
> +	4a32  L6-imode Phone
> +	5801  Neptune ULS chipset
> +	5803  Neptune ULS chipset flash
> +	5901  Neptune VLT chipset
> +	5903  Neptune VLT chipset flash
> +	6001  Dalhart EZX
> +	6003  Dalhart flash
> +	6004  EZX GSM Phone (CDC Net)
> +	6006  MOTOROKR E6
> +	6008  Dalhart RDL
> +	6009  EZX GSM Phone (P2K)
> +	600a  Dalhart EZX config 17
> +	600b  Dalhart EZX config 18
> +	600c  EZX GSM Phone (USBLAN)
> +	6021  JUIX chipset
> +	6023  JUIX chipset flash
> +	6026  Flash RAM Downloader/miniOS
> +	6027  USBLAN
> +	604c  EZX GSM Phone (Storage)
> +	6101  Talon integrated chipset
> +	6401  Argon chipset
> +	6403  Argon chipset flash
> +	6411  ROKR Z6 (print mode)
> +	6415  ROKR Z6 (MTP mode)
> +	6422  ROKR Z6 (modem mode)
> +	6426  ROKR Z6 (storage mode)
> +	6604  Washington CDMA Phone
> +	6631  CDC Modem
> +	7001  Q Smartphone
> +	7086  Atrix
> +	70a8  Xoom Tablet
> +	fe01  StarTAC III MS900
> +22b9  eTurboTouch Technology, Inc.
> +	0006  Touch Screen
> +22ba  Technology Innovation Holdings, Ltd
> +	0108  Double Shock Steering Wheel HID
> +	0109  Double Shock Steering Wheel Hub
> +22c9  StepOver GmbH
> +	0601  naturaSign Pad Colour
> +	0701  naturaSign Pad Mobile
> +	0801  naturaSign Pad Comfort
> +	0881  naturaSign Pad Flawless
> +	0901  naturaSign Pad Classic
> +	09e1  naturaSign Pad Biometric
> +	0ce1  duraSign Pad Brilliance
> +	0cf1  duraSign Pad Biometric 5.0
> +	0d01  duraSign 10.0
> +	0df1  duraSign Pad Biometric 10.0
> +22cd  Kinova Robotics Inc.
> +22d4  Laview Technology
> +	1301  Mionix NAOS 8200 [STM32F103 MCU]
> +	1308  Mionix Avior 7000
> +	130c  Mionix Naos 7000
> +	1316  Mionix Castor
> +22d9  OPPO Electronics Corp.
> +	2765  Oppo N1
> +	2767  Oppo Find 5 (X909)
> +22db  Phase One
> +	0003  IQ3 100MP IG030372
> +22dc  Mellanox Technologies
> +	0004  BlueField SOC
> +22de  WeTelecom Incorporated
> +22df  Medicom MTD, Ltd
> +22e0  secunet Security Networks AG
> +	0002  SINA Flash Drive
> +	0003  SINA ID Token A
> +22e8  Cambridge Audio
> +	6512  651N Audio
> +	6969  Audio Prototype
> +	7512  751R Audio
> +	770a  X70A Audio
> +	850c  851C Audio [Azur 850C]
> +	851d  851D Audio [Azur 851D]
> +	ca02  Audio
> +	ca04  Audio
> +	ca06  AmpMagic
> +	dac2  DacMagic Plus
> +	dac3  Azur DacMagic 100
> +	dac4  Azur DacMagic 100
> +	dac6  DacMagicXS 2.0
> +	dac8  Audio
> +2304  Pinnacle Systems, Inc.
> +	0109  Studio PCTV USB (SECAM)
> +	0110  Studio PCTV USB (PAL)
> +	0111  Miro PCTV USB
> +	0112  Studio PCTV USB (NTSC) with FM radio
> +	0201  Systems MovieBox Device
> +	0204  MovieBox USB_B
> +	0205  DVC 150B
> +	0206  Systems MovieBox Deluxe Device
> +	0207  Dazzle DVC90 Video Device
> +	0208  Studio PCTV USB2
> +	020e  PCTV 200e
> +	020f  PCTV 400e BDA Device
> +	0210  Studio PCTV USB (PAL) with FM radio
> +	0212  Studio PCTV USB (NTSC)
> +	0213  500-USB Device
> +	0214  Studio PCTV USB (PAL) with FM radio
> +	0216  PCTV 60e
> +	0219  PCTV 260e
> +	021a  Dazzle DVC100 Audio Device
> +	021b  Dazzle DVC130/DVC170
> +	021d  Dazzle DVC130
> +	021e  Dazzle DVC170
> +	021f  PCTV Sat HDTV Pro BDA Device
> +	0222  PCTV Sat Pro BDA Device
> +	0223  DazzleTV Sat BDA Device
> +	0225  Remote Kit Infrared Transceiver
> +	0226  PCTV 330e
> +	0227  PCTV for Mac, HD Stick
> +	0228  PCTV DVB-T Flash Stick
> +	0229  PCTV Dual DVB-T 2001e
> +	022a  PCTV 160e
> +	022b  PCTV 71e [Afatech AF9015]
> +	0232  PCTV 170e
> +	0236  PCTV 72e [DiBcom DiB7000PC]
> +	0237  PCTV 73e [DiBcom DiB7000PC]
> +	023a  PCTV 801e
> +	023b  PCTV 801e SE
> +	023d  PCTV 340e
> +	023e  PCTV 340e SE
> +	0300  Studio Linx Video input cable (NTSC)
> +	0301  Studio Linx Video input cable (PAL)
> +	0302  Dazzle DVC120
> +	0419  PCTV Bungee USB (PAL) with FM radio
> +	061d  PCTV Deluxe (NTSC) Device
> +	061e  PCTV Deluxe (PAL) Device
> +	2304  1689
> +230d  Teracom
> +	0103  Huwaii 3g wireless modem
> +2314  INQ Mobile
> +2318  Shining Technologies, Inc. [hex]
> +	0011  CitiDISK Jr. IDE Enclosure
> +2319  Tronsmart
> +	0014  TSM01 Air Mouse + Keyboard
> +232b  Pantum Ltd.
> +	0810  P2000
> +232e  EA Elektro-Automatik GmbH & Co. KG
> +	0010  EA-PS-2000 B Series Power Supply
> +2340  Teleepoch
> +2341  Arduino SA
> +	0001  Uno (CDC ACM)
> +	0010  Mega 2560 (CDC ACM)
> +	0036  Leonardo Bootloader
> +	003b  Serial Adapter (CDC ACM)
> +	003d  Due Programming Port
> +	003e  Due
> +	003f  Mega ADK (CDC ACM)
> +	0042  Mega 2560 R3 (CDC ACM)
> +	0043  Uno R3 (CDC ACM)
> +	0044  Mega ADK R3 (CDC ACM)
> +	0045  Serial R3 (CDC ACM)
> +	0049  ISP
> +	8036  Leonardo (CDC ACM, HID)
> +	8038  Robot Control Board (CDC ACM, HID)
> +	8039  Robot Motor Board (CDC ACM, HID)
> +2349  P2 Engineering Group, LLC
> +234b  Free Software Initiative of Japan
> +	0000  Gnuk Token
> +	0001  NeuG True RNG
> +2357  TP-Link
> +	0005  M7350 4G Mi-Fi Router
> +	0100  TL-WN8200ND [Realtek RTL8192CU]
> +	0101  RTL8812AU Archer T4U 802.11ac
> +	0103  Archer T4UH wireless Realtek 8812AU
> +	0105  Archer T1U 802.11a/n/ac Wireless Adapter [MediaTek MT7610U]
> +	0106  Archer T9UH v1 [Realtek RTL8814AU]
> +	0107  TL-WN821N v5/v6 [RTL8192EU]
> +	0108  TL-WN822N Version 4 RTL8192EU
> +	0109  TL-WN823N v2/v3 [Realtek RTL8192EU]
> +	010b  Archer T2UHP [MediaTek MT7610U]
> +	010c  TL-WN722N v2/v3 [Realtek RTL8188EUS]
> +	010d  Archer T4U v2 [Realtek RTL8812AU]
> +	010e  Archer T4UH v2 [Realtek RTL8812AU]
> +	010f  Archer T4UHP [Realtek RTL8812AU]
> +	0115  Archer T4U ver.3
> +	011e  AC600 wireless Realtek RTL8811AU [Archer T2U Nano]
> +	0120  Archer T2U PLUS [RTL8821AU]
> +	012d  Archer T3U [Realtek RTL8812BU]
> +	0200  MA 180 Zero CD
> +	0201  HSUPA Modem MA180
> +	0600  UE300 10/100/1000 LAN (mass storage CD-ROM mode) [Realtek RTL8153]
> +	0601  UE300 10/100/1000 LAN (ethernet mode) [Realtek RTL8153]
> +2366  Bitmanufaktur GmbH
> +	0001  Reserved Prototyping PID
> +	0002  OpenBeacon USB 2
> +	0003  OpenPCD 2 RFID Reader for 13.56MHz
> +	0004  OpenBeacon
> +	0005  Blinkenlights WDIM
> +	0006  Blinkenlights WMCU
> +	0007  OpenBeacon Ethernet EasyReader PoE II - Active 2.4GHz RFID Reader
> +	0008  OpenBeacon WLAN
> +	0009  OpenPCD 2 RFID Reader for 13.56MHz
> +	000a  OpenPCD 2 Audio & LCD Display
> +2367  Teenage Engineering
> +	0002  OP-1 Portable synthesizer
> +	000c  OP-Z Portable synthesizer
> +2368  Peterson Electro-Musical Products Inc.
> +	0001  BBS-1 [BodyBeat Sync]
> +236a  SiBEAM
> +	1965  SB6501 802.11ad Wireless Network Adapter
> +2373  Pumatronix Ltda
> +	0001  5 MegaPixel Digital Still Camera [DSC5M]
> +2375  Digit@lway, Inc.
> +	0001  Digital Audio Player
> +2378  OnLive
> +	100a  Universal Wireless Controller
> +237d  Cradlepoint
> +	0400  MC400
> +2386  Raydium Corporation
> +	3125  Touch System
> +	4328  Touch System
> +	432f  Touch System
> +238b  Hytera Communications
> +	0a11  DMR Radio
> +239a  Adafruit
> +	0001  CDC Bootloader
> +	801e  Trinket M0
> +23a0  BIFIT
> +	0001  Token iBank2key
> +	0002  iBank2Key Type M Token
> +	0003  iToken
> +	0008  MS_KEY K - Angara
> +23a6  Tronical Components GmbH
> +	2000  Gibson Firebird X Pedal Board
> +	2001  Gibson Firebird X Switch Board
> +23b4  Dental Wings Inc.
> +	0200  DW0200 Color Camera
> +	0300  DW0300 Hight Speed Monochrome Camera
> +23c7  Gemini
> +	1021  FirstMix
> +23fc  SesKion GmbH
> +	0201  SPI-Simulyzer box for SPI data communication
> +	0202  PSI5-Simulyzer box for PSI5 (Peripheral-Sensor-Interfacs) data communication
> +	0203  SENT-Simulyzer box for SENT data communication
> +	0204  DSI-Simulyzer box for DSI3 data communication
> +2405  Custom Computer Services, Inc
> +	0002  West Mountain Radio RIGblaster Advantage Audio
> +	0003  West Mountain Radio RIGblaster Advantage
> +2406  SANHO Digital Electronics Co., Ltd.
> +	6688  PD7X Portable Storage
> +2420  IRiver
> +242e  Vossloh-Schwabe Deutschland GmbH
> +	0001  DALI Master
> +	0002  LiCS Bootloader Mode
> +	0003  LiCS Running Mode
> +	0004  iProgrammer
> +	0005  NFC programming device
> +2433  ASETEK
> +	b200  [NZXT Kraken X60]
> +2443  Aessent Technology Ltd
> +	00dc  aes220 FPGA Mini-Module
> +2457  Ocean Optics Inc.
> +	100a  HR2000 Spectrometer 1.00.0
> +	1012  HR4000 Spectrometer
> +2458  Bluegiga Technologies
> +	0001  BLED112 Bluetooth 4.0 Single Mode Dongle
> +245f  Chord Electronics Limited
> +2464  Nest
> +	0001  Learning Thermostat
> +	0002  Learning Thermostat (2nd Generation)
> +	0010  Protect : Smoke + Carbon Monoxide
> +	0020  Heat Link
> +2466  Fractal Audio Systems
> +	8003  Axe-Fx II
> +	8010  Axe-FX III
> +2476  YEI Technology
> +	1040  3-Space Embedded Sensor
> +2478  Tripp-Lite
> +	2008  U209-000-R Serial Port
> +248a  Maxxter
> +	8366  Wireless Optical Mouse ACT-MUSW-002
> +	8367  Telink Wireless Receiver
> +249c  M2Tech s.r.l.
> +24a4  Primare AB
> +	0002  I15_v1.06 [Primare Audio DAC]
> +24ae  Shenzhen Rapoo Technology Co., Ltd.
> +	0001  KX Keyboard
> +	0197  meva Barcode Scanner
> +	1813  E9260 Wireless Multi-mode Keyboard
> +	2000  2.4G Wireless Device Serial
> +	2001  5 GHz Wireless Receiver
> +	2003  5GHz Wireless Transceiver
> +	4110  Optical Gaming Mouse [V280]
> +	6000  Wireless Audio
> +24c0  Chaney Instrument
> +	0003  Model 01036 weather center
> +24c6  ThrustMaster, Inc.
> +	5000  Razer Atrox Gaming Arcade Stick
> +	5300  PowerA Mini ProEX Controller for Xbox 360
> +	5303  Airflo Wired Controller for Xbox 360
> +	530a  ProEX Controller for Xbox 360
> +	531a  Pro Ex mini for XBOX
> +	5397  FUS1ON Tournament Controller
> +	541a  PowerA CPFA115320-01 [Mini Controller for Xbox One]
> +	542a  Spectra for Xbox One
> +	543a  PowerA Wired Controller for Xbox One
> +	5500  Horipad EX2 Turbo
> +	5501  Hori Real Arcade Pro.VX-SA for Xbox 360
> +	5502  Hori Fighting Stick VX Alt for Xbox 360
> +	5503  Hori Fighting Edge for Xbox 360
> +	5506  Hori Soulcalibur V Stick for Xbox 360
> +	550d  Hori Gem Controller for Xbox 360
> +	550e  Real Arcade Pro V Kai for Xbox One / Xbox 360
> +	551a  Fusion Pro Controller
> +	561a  Fusion Controller for Xbox One
> +	5b00  Ferrari 458 Italia Racing Wheel
> +	5b02  GPX Controller
> +	5d04  Sabertooth Elite
> +	fa00  INF-8032385 Disney Infinity Reader
> +	fafb  Aplay Controller
> +	fafd  Afterglow Gamepad for Xbox 360
> +	fafe  Rock Candy Gamepad for Xbox 360
> +24cf  Lytro, Inc.
> +	00a1  Light Field Camera
> +24dc  Aladdin R.D.
> +	0406  JaCarta SF GOST
> +24e0  Yoctopuce Sarl
> +24e1  Paratronic
> +	3001  Adp-usb
> +	3005  Radius
> +24e3  K-Touch
> +24ea  Meva
> +	0197  Barcode Scanner
> +24ed  Zen Group
> +	044d  Chat Headset
> +24f0  Metadot
> +	0105  Das Keyboard 4
> +	0140  Das Keyboard 4
> +	2020  Das Keyboard 5Q
> +24ff  Acroname Inc.
> +2500  Ettus Research LLC
> +	0020  USRP B210
> +	0021  USRP B200-mini
> +	0022  USRP B205-mini
> +	0200  USRP B200
> +2516  Cooler Master Co., Ltd.
> +	0003  Storm Xornet
> +	0004  Storm QuickFire Rapid Mechanical Keyboard
> +	0006  Storm Recon
> +	0007  Storm Sentinel Advance II
> +	0009  Storm Quick Fire PRO
> +	0011  Storm Quick Fire TK 6keys
> +	0014  Storm Quick Fire TK Nkeys
> +	0015  Storm QuickFire Pro/Ultimate keyboard
> +	0017  CM Storm Quick Fire Stealth
> +	001a  Storm Quick Fire XT
> +	0020  QuickFire Rapid-i Keyboard
> +	0027  CM Storm Coolermaster Novatouch TKL
> +	002d  Alcor mouse
> +	0042  Masterkeys Lite L Combo RGB Keyboard
> +	0044  Masterkeys Lite L Combo RGB Mouse
> +	0046  Masterkeys PRO L
> +	0047  MasterKeys Pro L
> +	0055  MasterKeys L
> +	1006  MasterCase SL600M
> +	9494  Sirus Headset
> +2520  ANA-U GmbH
> +	0001  EasyPrinter S3
> +2527  Software Bisque
> +	1388  Paramount 5
> +2537  Norelsys
> +	1066  NS1066
> +	1068  NS1068/NS1068X SATA Bridge Controller
> +2544  Energy Micro AS
> +2546  Ravensburger
> +	e301  TipToi Pen
> +2548  Pulse-Eight
> +	1001  CEC Adapter
> +	1002  CEC Adapter
> +254e  SHF Communication Technologies AG
> +	e2b3  SHF 58035 A BiasBoard
> +2554  ASSA ABLOY AB
> +2555  Basis Science Inc.
> +	0001  B1 Fitness Band
> +255e  Beijing Bonxeon Technology Co., Ltd.
> +	0001  Device
> +	0002  Dual
> +2560  e-con Systems
> +	c152  See3CAM_CU51 5 Mpx monochrome camera
> +2563  ShenZhen ShanWan Technology Co., Ltd.
> +	031d  DXT Mouse
> +	0523  BM0523 WirelessGamepad
> +	0575  ZD-V+ Wired Gaming Controller
> +256b  Perreaux Industries Ltd
> +	0121  Audiant 80i
> +256f  3Dconnexion
> +	c62e  SpaceMouse Wireless (cabled)
> +	c62f  SpaceMouse Wireless Receiver
> +	c631  SpaceMouse Pro Wireless (cabled)
> +	c632  SpaceMouse Pro Wireless Receiver
> +	c633  SpaceMouse Enterprise
> +	c635  SpaceMouse Compact
> +	c651  CadMouse Wireless
> +	c652  Universal Receiver
> +	c654  CadMouse Pro Wireless
> +	c657  CadMouse Pro Wireless Left
> +2573  ESI Audiotechnik GmbH
> +	0017  MAYA22
> +2574  AVer Information, Inc.
> +	0901  VC520
> +	0910  CAM520
> +	0920  VC320
> +	0930  CAM530
> +	0940  CAM340
> +	0950  VC322
> +	0960  VB342
> +2575  Weida Hi-Tech Co., Ltd.
> +2576  AFO Co., Ltd.
> +	0003  TCM
> +	0005  BL [Boot Loader]
> +	0011  THM
> +2578  Pluscom
> +	4168  2.4GHZ Wireless Arc Folding Mouse
> +2581  Plug-up
> +	1807  Generic HID Smartcard
> +	1808  WinUSB Smartcard
> +	f1d0  FIDO U2F Security Key
> +258d  Sequans Communications
> +259a  TriQuint Semiconductor
> +25a7  Areson Technology Corp
> +	2410  Laser mouse
> +	fa23  2.4G Receiver
> +	fa61  Elecom Co., Ltd MR-K013 Multicard Reader
> +25b5  FlatFrog
> +	0002  Multitouch 3200
> +25bb  Brunner Elektronik AG
> +	0063  PRT.5105 [Yoke]
> +	0064  PRT.5105 [reserved]
> +	0065  PRT.5096 [Battery Management System]
> +	0066  PRT.5096 [Battery Management System]
> +	0067  PRT.5094
> +	0068  PRT.5094
> +	0069  PRT.5119 [Ethernet2CAN LC Gateway]
> +	006a  PRT.5113 [CLS CANaerospace Gateway]
> +	006b  PRT.5123
> +	006c  PRT.5123 [reserved]
> +	006d  PRT.5127
> +	00ff  MSP430 HID Update Agent
> +25bf  Elegant Invention
> +	0001  Isostick
> +	0002  Isostick updater
> +25c4  ARCAM
> +25c6  Vitus Audio (AVA Group A/S)
> +25c8  Visual Planet Ltd
> +	0014  Single User touchfoil(tm) (SU2-80)
> +25da  Netatmo
> +	0001  Weather Station
> +25dd  Bit4id Srl
> +	1101  miniLector-s
> +	1201  cryptokey
> +	2221  iAM
> +	2311  keyfour-a1
> +	2321  CKey4
> +	2341  tokenME FIPS v3
> +	2351  Digital DNA Key
> +	2354  Digital-DNA Key
> +	2361  Digital-DNA Key BT
> +	2362  Digital-DNA Key
> +	2371  TokenME EVO v2
> +	23b4  ArubaKey AK901
> +	3111  miniLector EVO
> +	3211  miniLector AIR EVO
> +	3403  miniLector AIR NFC v3
> +	3503  mLector AIR DI V3
> +	b001  miniLector Blue
> +25e3  Lumigon
> +25f0  ShanWan
> +	c131  Gioteck PS3 2.4G Wireless Controller
> +25fb  Pentax Ricoh Imaging Co., Ltd
> +	0102  K-5
> +2604  Tenda
> +	0012  U12
> +2625  MilDef AB
> +2626  Aruba Networks
> +	ea60  UART Bridge Controller [cp210x]
> +262a  SAVITECH Corp.
> +	100e  SA9027 Audio Streaming Controller
> +	10e0  SA9023 Audio Streaming Controller
> +	9020  SA9020 audio controller
> +	9023  SA9023 audio controller
> +	9027  SA9027 audio controller
> +	9226  SA9226 192KHz audio controller
> +	9227  SA9227 384KHz audio controller
> +	9228  SA9228 384KHz/DSD audio controller
> +2632  TwinMOS
> +	3209  7-in-1 Card Reader
> +2639  Xsens
> +	0001  MTi-10 IMU
> +	0002  MTi-20 VRU
> +	0003  MTi-30 AHRS
> +	0011  MTi-100 IMU
> +	0012  MTi-200 VRU
> +	0013  MTi-300 AHRS
> +	0017  MTi-G 7xx GNSS/INS
> +	0100  Body Pack
> +	0101  Awinda Station
> +	0102  Awinda Dongle
> +	0103  Sync Station
> +	0200  MTw
> +	0300  Motion Tracker Development Board
> +	0301  MTi Converter
> +	d00d  Wireless Receiver
> +264a  Thermaltake
> +	1004  Ventus
> +2650  Electronics For Imaging, Inc. [hex]
> +	1311  eBeam Classic [Luidia]
> +2659  Sundtek
> +	1101  TNT DVB-T/DAB/DAB+/FM
> +	1201  FM Transmitter/Receiver
> +	1202  MediaTV Analog/FM/DVB-T
> +	1203  MediaTV Analog/FM/DVB-T MiniPCIe
> +	1204  MediaTV Analog/FM/ATSC
> +	1205  SkyTV Ultimate V
> +	1206  MediaTV DVB-T MiniPCIe
> +	1207  Sundtek HD Capture
> +	1208  Sundtek SkyTV Ultimate III
> +	1209  MediaTV Analog/FM/ATSC MiniPCIe
> +	1210  MediaTV Pro III (EU)
> +	1211  MediaTV Pro III (US)
> +	1212  MediaTV Pro III MiniPCIe (EU)
> +	1213  MediaTV Pro III MiniPCIe (US)
> +2662  Moog Music Inc.
> +266e  Silicon Integrated Systems
> +2672  GoPro
> +	0004  Hero 3
> +	0006  HERO 3+ Silver Edition
> +	0007  HERO 3+ Black
> +	000e  HERO4 Black
> +	0011  Hero 3+ Black
> +2676  Basler AG
> +	ba02  ace
> +	ba03  ba03 dart Vision Caera
> +	ba04  ba04 pulse Vision Camera
> +	ba05  Vision Camera
> +	ba06  Vision Camera
> +	ba07  Vision Camera
> +	ba08  Vision Camera
> +	ba09  Vision Camera
> +	ba0a  Vision Camera
> +	ba0b  Vision Camera
> +	ba0c  Vision Camera
> +	ba0d  Vision Camera
> +	ba0e  Vision Camera
> +	ba0f  Vision Camera
> +2685  Cardo Peripheral Systems LTD
> +	0900  [Packtalk Bold Bluetooth Motorcycle Intercom]
> +2687  Fitbit Inc.
> +	fb01  Base Station
> +2689  StepOver International GmbH
> +	0601  naturaSign Pad POS
> +	0901  naturaSign Pad Light
> +	0ce1  Pad Vivid US
> +	0cf1  Pad Biometric US 5.0
> +	0d01  duraSign Pad US 10.0
> +	0df1  duraSign Pad Biometric US 10.0
> +268b  Dimension Engineering
> +	0101  DELink 2
> +	0201  Sabertooth 2x32
> +	0405  Evolv DNA 200
> +	0406  Evolv DNA 200
> +	0407  Evolv DNA 200
> +	0408  Evolv DNA 75
> +	0409  Evolv DNA 250
> +	0412  Evolv DNA 60
> +	0413  Evolv DNA 200
> +	0414  Evolv DNA 250
> +	0415  Evolv DNA 75
> +	0416  Evolv DNA 60
> +	0417  Evolv DNA Go
> +	0419  Evolv DNA 250 Color
> +	0423  Evolv DNA 200
> +	0424  Evolv DNA 250
> +	0425  Evolv DNA 75
> +	0426  Evolv DNA 60
> +	8405  Evolv DNA 200 (recovery mode)
> +	8406  Evolv DNA 200 (recovery mode)
> +	8407  Evolv DNA 200 (recovery mode)
> +	8408  Evolv DNA 75 (recovery mode)
> +	8409  Evolv DNA 250 (recovery mode)
> +	8412  Evolv DNA 60 (recovery mode)
> +	8413  Evolv DNA 200 (recovery mode)
> +	8414  Evolv DNA 250 (recovery mode)
> +	8415  Evolv DNA 75 (recovery mode)
> +	8416  Evolv DNA 60 (recovery mode)
> +	8423  Evolv DNA 200 (recovery mode)
> +	8424  Evolv DNA 250 (recovery mode)
> +	8425  Evolv DNA 75 (recovery mode)
> +	8426  Evolv DNA 60 (recovery mode)
> +26a9  Research Industrial Systems Engineering
> +	0001  Payment Terminal v1.0
> +26aa  Yaesu Musen
> +	0001  FT-1D
> +	000e  FTA-550
> +	000f  FTA-750
> +26b5  Electrocompaniet
> +	0002  ECD 2
> +	0003  ECD 2 (Audio Class 1)
> +	0004  PI 2D
> +	0005  PI 2D (Audio Class 1)
> +	0006  ECI 6
> +	0007  ECI 6 (Audio Class 1)
> +	0020  ECI 80
> +26bd  Integral Memory
> +	9917  Fusion Flash Drive
> +26e2  Ingenieurbuero Dietzsch und Thiele, PartG
> +26f2  Micromega
> +	0200  MyDac
> +2707  Bardac Corporation
> +	0005  drive.web
> +270d  Rosand Technologies
> +	1001  R-Idge Bootloader
> +	1002  R-Idge Router
> +2717  Xiaomi Inc.
> +	0011  100Mbps Network Card Adapter
> +	0360  Mi3W
> +	0368  Mi4 LTE
> +	3801  Mi ANC & Type-C In-Ear Earphones
> +	4106  MediaTek MT7601U [MI WiFi]
> +	ff08  Redmi Note 3 (ADB Interface)
> +	ff10  Mi/Redmi series (PTP)
> +	ff18  Mi/Redmi series (PTP + ADB)
> +	ff40  Mi/Redmi series (MTP)
> +	ff48  Mi/Redmi series (MTP + ADB)
> +	ff60  redmi prime 2
> +	ff68  Mi-4c
> +	ff80  Mi/Redmi series (RNDIS)
> +	ff88  Mi/Redmi series (RNDIS + ADB)
> +272a  StarLeaf Ltd.
> +272c  Signum Systems
> +	7d13  I-jet
> +2730  Citizen
> +	0fff  CT-S2000/4000/310/CLP-521/621/631/CL-S700 Series
> +	1004  PPU-700
> +	2002  CT-S2000 Thermal Printer (Parallel mode)
> +	200f  CT-S310 Label printer
> +2735  DigitalWay
> +	0003  MPIO HS100
> +	1001  MPIO FY200
> +	1002  MPIO FL100
> +	1003  MPIO FD100
> +	1004  MPIO HD200
> +	1005  MPIO HD300
> +	1006  MPIO FG100
> +	1007  MPIO FG130
> +	1008  MPIO FY300
> +	1009  MPIO FY400
> +	100a  MPIO FL300
> +	100b  MPIO HS200
> +	100c  MPIO FL350
> +	100d  MPIO FY500
> +	100e  MPIO FY500
> +	100f  MPIO FY600
> +	1012  MPIO FL400
> +	1013  MPIO HD400
> +	1014  MPIO HD400
> +	1016  MPIO FY700
> +	1017  MPIO FY700
> +	1018  MPIO FY800
> +	1019  MPIO FY800
> +	101a  MPIO FY900
> +	101b  MPIO FY900
> +	102b  MPIO FL500
> +	102c  MPIO FL500
> +	103f  MPIO FY570
> +	1040  MPIO FY570
> +	1041  MPIO FY670
> +	1042  MPIO FY670
> +	1043  HCT HMD-180A
> +	1044  HCT HMD-180A
> +273f  Hughski Limited
> +	1000  ColorHug bootloader
> +	1001  ColorHug
> +	1002  ColorHug+
> +	1003  ColorHug+ Bootloader
> +	1004  ColorHug2
> +	1005  ColorHug2 bootloader
> +2756  Victor Hasselblad AB
> +	0002  X1D Camera
> +2759  Philip Morris Products S.A.
> +	0003  IQOS Pocket Charger 2.4
> +2765  Firstbeat Technologies, Ltd.
> +	0004  Bodyguard 2
> +2766  LifeScan
> +	0000  OneTouch Verio
> +2770  NHJ, Ltd
> +	0a01  ScanJet 4600 series
> +	905c  Che-Ez Snap SNAP-U/Digigr8/Soundstar TDC-35
> +	9060  A130
> +	9120  Che-ez! Snap / iClick Tiny VGA Digital Camera
> +	9130  TCG 501
> +	913c  Argus DC-1730
> +	9150  Mini Cam
> +	9153  iClick 5X
> +	915d  Cyberpix S-210S / Little Tikes My Real Digital Camera
> +	930b  CCD Webcam(PC370R)
> +	930c  CCD Webcam(PC370R)
> +27a8  Square, Inc.
> +	a120  Contactless + Chip Reader
> +27b8  ThingM
> +	01ed  blink(1)
> +27bd  Codethink Ltd.
> +	0001  Slab Node Manager
> +	0002  Slab Node Manager JTAG
> +27c0  Cadwell Laboratories, Inc.
> +	0818  Paperlike HD-FT
> +27c6  Shenzhen Goodix Technology Co.,Ltd.
> +	5117  Fingerprint Reader
> +	5201  Fingerprint Reader
> +	5301  Fingerprint Reader
> +	530c  Fingerprint Reader
> +	532d  Fingerprint
> +	5381  Fingerprint Reader
> +	5385  Fingerprint Reader
> +	538c  Fingerprint Reader
> +	5395  Fingerprint Reader
> +	5584  Fingerprint Reader
> +	55b4  Fingerprint Reader
> +	5740  Fingerprint Reader
> +27d4  Blackstar Amplification Limited
> +27dd  Mindeo
> +	0002  Mindeo Virtual COM Port
> +27f2  Softnautics LLP
> +2803  StarLine LLC.
> +	0001  Controller Area Network car alarm module [SLCAN-2]
> +2806  SIMPASS
> +	0001  N-PASS X1
> +2817  Signal Hound, Inc.
> +	0002  BB60C Spectrum Analyzer
> +	0004  SM200A Spectrum Analyzer
> +2818  Codex Digital Limited
> +	0001  Transfer Drive Dock
> +2821  ASUSTek Computer Inc.
> +	0161  WL-161 802.11b Wireless Adapter [SiS 162U]
> +	160f  WL-160g 802.11g Wireless Adapter [Envara WiND512]
> +	3300  WL-140 / Hawking HWU36D 802.11b Wireless Adapter [Intersil PRISM 3]
> +2822  REFLEXdigital
> +2833  Oculus VR, Inc.
> +	0001  Rift Developer Kit 1
> +	0021  Rift DK2
> +	0031  Rift CV1
> +	0101  Latency Tester
> +	0137  Quest Headset
> +	0201  Camera DK2
> +	0211  Rift CV1 Sensor
> +	0330  Rift CV1 Audio
> +	1031  Rift CV1
> +	2021  Rift DK2
> +	2031  Rift CV1
> +	3031  Rift CV1
> +2836  OUYA
> +286b  STANEO SAS
> +	0003  D6BB/D9 seismic digitizer
> +2886  Seeed Technology Co., Ltd.
> +	0002  Seeeduino Lite
> +2890  Teknic, Inc
> +	0213  ClearPath 4-axis Comm Hub
> +2899  Toptronic Industrial Co., Ltd
> +	012c  Camera Device
> +289b  Dracal/Raphnet technologies
> +	0001  Gamecube/N64 controller v2.2
> +	0002  2nes2snes
> +	0003  4nes4snes
> +	0004  Gamecube/N64 controller v2.3
> +	0005  Saturn (Joystick mode)
> +	0006  Saturn (Mouse mode)
> +	0007  Famicom controller
> +	0008  Dreamcast (Joystick mode)
> +	0009  Dreamcast (Mouse mode)
> +	000a  Dreamcast (Keyboard mode)
> +	000b  Gamecube/N64 controller v2.9 (Keyboard mode)
> +	000c  Gamecube/N64 controller v2.9 (Joystick mode)
> +	000e  VirtualBoy controller
> +	0010  WUSBMote v1.2 (Joystick mode)
> +	0011  WUSBMote v1.2 (Mouse mode)
> +	0012  WUSBMote v1.2.1 (Joystick mode)
> +	0013  WUSBMote v1.2.1 (Mouse mode)
> +	0014  WUSBMote v1.3 (Joystick mode)
> +	0015  WUSBMote v1.3 (Mouse mode)
> +	0016  WUSBMote v1.3 (I2C interface mode)
> +	0017  Gamecube/N64 controller v3.0
> +	0018  Atari Jaguar controller
> +	0019  MultiDB9joy v3
> +	001a  MultiDB9joy v3 (multitap mode)
> +	0100  Dual-relay board
> +	0500  Energy meter
> +	0502  Precision barometer
> +289d  Seek Thermal, Inc.
> +	0010  PIR206 Thermal Camera [Seek Compact]
> +28bd  XP-Pen
> +	0920  Star G960 Graphic Tablet
> +28c7  Ultimaker B.V.
> +	0001  3D printer serial interface
> +28d4  Devialet
> +	0008  120/200/250/400/800/D-Premier
> +28de  Valve Software
> +	1102  Wired Controller
> +	1142  Wireless Steam Controller
> +	2000  Lighthouse FPGA RX
> +	2012  Virtual Reality Controller [VRC]
> +	2101  Watchman Dongle
> +	2500  Lighthouse Base Station
> +28e0  PT. Prasimax Inovasi Teknologi
> +	1001  BTS Monitoring Config for Prototype
> +	5740  TRUMON TS-107
> +	5741  TRUMON TS-108
> +28e9  GDMicroelectronics
> +	0189  GD32 DFU Bootloader (Longan Nano)
> +28f3  Clover Network, Inc.
> +	2000  Mobile Wi-Fi (C200)
> +	3000  Mini
> +	4000  Flex
> +28f9  Profitap HQ BV
> +	0001  Profishark 1G Black
> +	0003  Profishark 1G+
> +	0004  Profishark 1G
> +	0005  Profishark 10G
> +	0006  Profishark 100M
> +290c  R. Hamilton & Co. Ltd.
> +	4b4d  Mercury iPod Dock
> +2912  Audioengine
> +	20c8  D1 24-bit DAC
> +	30c8  D1 24-bit DAC
> +2916  Yota Devices
> +2931  Jolla Oy
> +	0a01  Jolla Phone MTP
> +	0a02  Jolla Phone Developer
> +	0a05  Jolla PC connection
> +	0a07  Phone MTP
> +	0afe  Jolla charging only
> +2939  Zaber Technologies Inc.
> +	4959  A-MCB2
> +	495a  X-MCB1
> +	495b  X-MCB2
> +	49b1  X-MCB1
> +	49b2  X-MCB2
> +	49c1  X-MCC1
> +	49c2  X-MCC2
> +	49c3  X-MCC3
> +	49c4  X-MCC4
> +2957  Obsidian Research Corporation
> +	0001  Management Console
> +2961  Miselu
> +	0001  C.24 keyboard
> +296b  Xacti Corporation
> +	3917  CX-WE100 Camera
> +2972  FiiO Electronics Technology
> +	0007  X3 2nd gen audio player / DAC
> +298d  Next Biometrics
> +	2020  NB-2020-U Fingerprint Reader
> +29bd  Silicon Works
> +	4101  Multi-touch Device
> +29c1  Taztag
> +	1105  M17-G903-1 [Tazpad]
> +	1107  M17-G903-A [Tazpad] (CCID)
> +29c2  Lewitt GmbH
> +	0001  DGT 650
> +	0003  DGT 450
> +	0009  DGT 260
> +	0011  Stream 4x5
> +29c3  Noviga
> +29e2  Huatune Technology (Shanghai) Co., Ltd.
> +29e7  Brunel University
> +29e8  4Links Limited
> +29ea  Kinesis Corporation
> +	0102  Advantage2 Keyboard
> +29f1  Canaan Creative Co., Ltd
> +	33f1  Avalon nano 1.0
> +	33f2  Avalon USB2IIC Converter
> +	33f3  Avalon nano 2.0
> +	40f1  Avalon4 mini
> +2a03  dog hunter AG
> +	0001  Linino ONE (bootloader)
> +	0036  Arduino Leonardo (bootloader)
> +	0037  Arduino Micro (bootloader)
> +	0038  Arduino Robot Control (bootloader)
> +	0039  Arduino Robot Motor (bootloader)
> +	003a  Arduino Micro ADK rev3 (bootloader)
> +	003b  Arduino usb2serial
> +	003c  Arduino Explora (bootloader)
> +	003d  Arduino Due (usb2serial)
> +	003e  Arduino Due
> +	0041  Arduino Yun (bootloader)
> +	0042  Arduino Mega 2560 Rev3
> +	0043  Arduino Uno Rev3
> +	004d  Arduino Zero Pro (bootloader)
> +	8001  Linino ONE (CDC ACM)
> +	8036  Arduino Leonardo (CDC ACM)
> +	8037  Arduino Micro (CDC ACM)
> +	8038  Arduino Robot Control (CDC ACM)
> +	8039  Arduino Robot Motor (CDC ACM)
> +	803a  Arduino Micro ADK rev3 (CDC ACM)
> +	803c  Arduino Explora (CDC ACM)
> +	8041  Arduino Yun (CDC ACM)
> +	804d  Arduino Zero Pro (CDC ACM)
> +2a0e  Shenzhen DreamSource Technology Co., Ltd.
> +2a13  Grabba International
> +	0000  S-Series data capture device
> +2a19  Numato Systems Pvt. Ltd
> +	1002  Mimas V2 Spartan6 FPGA Development Board
> +	5440  TimVideos' HDMI2USB Opsis (FX2) - Unconfigured device
> +	5441  TimVideos' HDMI2USB Opsis (FX2) - Firmware load/upgrade
> +	5442  TimVideos' HDMI2USB Opsis (FX2) - HDMI/DVI Capture Device
> +2a1d  Oxford Nanopore Technologies, Ltd
> +	0000  MinION
> +	0001  MinION
> +	0010  VolTRAX
> +	0011  VolTRAX
> +	0020  GridION
> +	0021  GridION
> +2a37  RTD Embedded Technologies, Inc.
> +	5110  UPS35110/UPS25110
> +2a39  RME
> +	3fb0  Babyface Pro (Class Compliant Mode)
> +	3fc0  Babyface Pro
> +	3fc1  Fireface UFX+
> +	3fc2  Fireface UFX+
> +	3fd1  Fireface UFX+
> +2a3c  Trinamic Motion Control GmbH & Co KG
> +	0100  Stepper Device
> +	0200  BLDC/PMSM Device
> +	0300  Motor Control Device
> +	0400  Motor Control Device
> +	0500  PANdrive(TM)
> +	0600  motionCookie(TM)
> +	0700  Evaluation Device
> +	0800  Interface Device
> +	0900  Generic Device
> +2a45  Meizu Corp.
> +	0001  MX Phone (BICR)
> +	0c02  MX Phone (MTP & ADB)
> +	0c03  MX Phone (BICR & ADB)
> +	2008  MX Phone (MTP)
> +	200a  MX Phone (MTP & ACM & ADB)
> +	200b  MX Phone (PTP)
> +	200c  MX Phone (PTP & ADB)
> +	2012  MX Phone (MTP & ACM)
> +2a47  Mundo Reader, S.L.
> +	0c02  bq Aquaris E4.5
> +	201d  Tablet Edison 3
> +	903a  bq Aquaris U
> +2a4b  EMULEX Corporation
> +	0400  Pilot4 Integrated Hub
> +2a62  Flymaster Avionics
> +	b301  LiveSD
> +	b302  NavSD
> +2a6e  Bare Conductive
> +	0003  Touch Board
> +	8003  Touch Board
> +2a70  OnePlus Technology (Shenzhen) Co., Ltd.
> +	4ee7  ONEPLUS A3010 [OnePlus 3T] / A5010 [OnePlus 5T] / A6003 [OnePlus 6] (Charging + USB debugging modes)
> +	904d  A3000 phone (PTP mode) [3T]
> +	904e  A3000 phone (PTP mode, with debug) [3T]
> +2a88  DFU Technology Ltd
> +	ffff  DFU
> +2a8d  Keysight Technologies, Inc.
> +2ab6  T+A elektroakustik GmbH & Co KG, Germany
> +	0001  PDP3000HV DAC
> +	0002  MP1000E, MP2000R, MP2500R, MP3100HV
> +	0003  TA HD AUDIO V2
> +2ac7  Ultrahaptics Ltd.
> +	0101  Evaluation Kit [Dragonfly]
> +	0102  UHDK5
> +	0104  Touchbase
> +	0110  STRATOS Explore
> +	0111  STRATOS Explore DFU
> +	0112  STRATOS Inspire
> +	0113  STRATOS Inspire DFU
> +	ffff  DFU
> +2ad1  Picotronic GmbH
> +	7ab8  Turningtable
> +2ae5  Fairphone B.V.
> +	9015  2 (Mass storage & ADB)
> +	9024  2 (RNDIS & ADB)
> +	9039  2 (MTP & ADB)
> +	904d  2 (PTP)
> +	904e  2 (PTP & ADB)
> +	90de  2 (Charging)
> +	f000  2 (Mass storage)
> +	f003  2 (MTP)
> +	f005  2 (tethering)
> +	f00e  2 (RNDIS)
> +2aec  Ambiq Micro, Inc.
> +	6011  Converter
> +2af4  ROLI Ltd.
> +	0100  Seaboard GRAND
> +	0200  Seaboard RISE
> +	0300  BlueWing Proto
> +	0400  VOICE
> +	0500  BLOCKS
> +2b03  STEREOLABS
> +	f580  ZED camera
> +	f582  ZED camera
> +	f680  ZED-M camera
> +	f681  ZED-M HID Interface
> +	f682  ZED-M camera
> +	f683  ZED-M HID Interface
> +	f684  ZED-M camera
> +2b0e  LeEco
> +	171b  Le2
> +	171e  Le2 in USB tethering mode
> +	1830  Le1 Pro
> +	1844  Le Max2
> +	2b0e  LeEco
> +	6108  Lex720 [LePro 3] in connection sharing usb
> +	610b  Lex720 [LePro 3] in Camera mode
> +	610c  Lex720 [LePro 3]
> +	610d  Lex720 [LePro 3] in debug
> +2b23  Red Hat, Inc.
> +	cafe  UsbDk (USB Development Kit)
> +2b24  KeepKey LLC
> +	0001  Bitcoin Wallet [KeepKey]
> +	0002  Bitcoin Wallet
> +2b3e  NewAE Technology Inc.
> +	ace2  CW1173 [ChipWhisperer-Lite]
> +2b4c  ZUK
> +	1004  Z1 MTP
> +2bc5  Orbbec 3D Technology International, Inc
> +	0401  Astra
> +	0403  Astra Pro
> +	0407  Astra Mini S
> +2bcc  InoTec GmbH Organisationssysteme
> +2bd6  Coroware, Inc.
> +	4201  RS-485 Controller and Interface [Cypress Semiconductor]
> +2bd8  ROPEX Industrie-Elektronik GmbH
> +2c02  Planex Communications
> +	14ea  GW-US11H WLAN
> +2c1a  Dolphin Peripherals
> +	0000  Wireless Optical Mouse
> +2c23  Supermicro Computer Incorporated
> +	1b83  NIC
> +2c4e  Mercucys INC
> +	0100  MW300UM RTL8192EU wifi
> +2c4f  Canon Electronic Business Machines Co., Ltd.
> +	3003  PR Wireless Presenter
> +2c55  Magic Leap, Inc.
> +	a100  ML1 Lightpack (MLDB)
> +	b100  ML1 Lightpack (fastboot)
> +	c001  ML1 Control (COM)
> +	c002  ML1 Control (Bootloader)
> +2c7c  Quectel Wireless Solutions Co., Ltd.
> +	0121  EC21 LTE modem
> +	0125  EC25 LTE modem
> +	0191  EG91 LTE modem
> +	0195  EG95 LTE modem
> +	0296  BG96 CAT-M1/NB-IoT modem
> +	0306  EG06/EP06/EM06 LTE-A modem
> +	0435  AG35 LTE modem
> +2c97  Ledger
> +	0000  Blue
> +	0001  Nano S
> +	0004  Nano X
> +2c99  Prusa
> +	0001  i3 MK2S
> +2c9c  Vayyar Imaging Ltd.
> +	1000  Walabot Makers Series
> +	1020  Walabot DIY
> +	1022  Walabot DIY Plus
> +	1030  Walabot Home (vHC)
> +	9100  VNAKit
> +2c9d  Nod Inc
> +	90a0  Goa
> +	bac5  Backspin
> +2ca3  DJI Technology Co., Ltd.
> +	0008  Mavic Mini MR1SD25 Remote controller
> +2cb7  Fibocom
> +	0210  L830-EB-00 LTE WWAN Modem
> +2cc0  Hangzhou Zero Zero Infinity Technology Co., Ltd.
> +2cc2  Lautsprecher Teufel GmbH
> +2ccf  Hypersecu
> +	0880  HyperFIDO
> +2cd9  Cambrionix Ltd
> +	0804  PowerSync4 USBPD Hub
> +2cdc  Sea & Sun Technology GmbH
> +	f232  CTD48Mc CTD Probe
> +2ce5  InX8 Inc [AKiTiO]
> +	0014  Mass Storage [NT2 U31C]
> +2cf0  Nuand LLC
> +	5246  bladeRF
> +	5250  bladeRF 2.0 micro
> +2d1f  Wacom Taiwan Information Co. Ltd.
> +2d25  Kronegger GmbH.
> +2d2d  proxmark.org
> +	504d  Proxmark3
> +2d37  Zhuhai Poskey Technology Co.,Ltd
> +2d6b  NetUP Inc.
> +	7777  Joker TV universal DTV receiver
> +2d81  Evollve Inc.
> +	4f01  Ozobot Evo
> +2d84  Zhuhai Poskey Technology Co.,Ltd
> +	b806  DT-108B Thermal Label Printer
> +2dc8  8BitDo
> +	5006  M30 Bluetooth gamepad
> +	5750  Bootloader
> +	6000  SF30 Pro gamepad
> +	6001  SN30/SF30 Pro gamepad
> +	ab11  F30 gamepad
> +	ab12  N30 gamepad
> +	ab20  SN30/SF30 gamepad
> +	ab21  SF30 gamepad
> +2dcf  Dialog Semiconductor
> +	c951  Audio Class 1.0 Devices
> +	c952  Audio Class 2.0 Devices
> +2def  Kirale Technologies
> +	0000  KiNOS Boot DFU
> +	0102  KTWM102 Module
> +2df2  LIPS Corporation
> +	0213  LIPSedge DL 3D ToF Camera
> +	0215  LIPSedge DL RGB Camera
> +	2102  LIPSedge 5 Megapixel RGB Camera
> +2e04  HMD Global
> +	0001  Nokia 3310 3G
> +	0002  Nokia 3310 3G
> +	0a14  Nokia 3310 3G
> +	c008  Tethering Network Interface
> +	c009  Nokia 1 (bootloader)
> +	c025  Nokia 8 (MTP mode)
> +	c026  Nokia Smartphone
> +	c029  Nokia 8 (PTP mode)
> +	c031  Nokia 1 (PTP)
> +	c03f  Nokia 8 (MIDI mode)
> +2e0e  Hatteland Display AS
> +	0001  CAN Gateway
> +2e24  Hyperkin
> +	0652  Duke Xbox One controller
> +	1688  X91 Xbox One controller
> +2e3b  uSens Inc.
> +2e57  MEGWARE Computer Vertrieb und Service GmbH
> +	454d  SlideSX EnergyMeter
> +	454e  SlideSX EnergyMeter DFU
> +	5cba  SlideSX / ClustSafe Bus Adapter
> +2e69  Swift Navigation
> +	1001  Piksi Multi
> +2e95  SCUF Gaming
> +	7725  Controller
> +2f76  KeyXentic Inc.
> +	0905  KX905 Smart Terminal
> +	0906  KX906 Smart Card Reader
> +	1906  KX906 Smart Token (Mass Storage)
> +2fad  Definium Technologies
> +2fb0  Infocrypt
> +2fb2  Fujitsu, Ltd
> +2fc0  Sensidyne, LP
> +	0001  Project Archer
> +2fc6  Comtrue Inc.
> +	6012  UAC2 Device GB
> +2fe0  Xaptum, Inc.
> +	8b01  XAP-RC-001 ENF Router Card
> +	8b02  XAP-RW-001 ENF Router Card with WiFi
> +	8bde  XAP-EA-002 ENF Access Card
> +	8bee  XAP-EA-003 ENF Access Card
> +2fe3  NordicSemiconductor
> +2fe7  ELGIN S.A.
> +	0001  SMART S@T
> +2feb  Beijing Veikk E-Commerce Co., Ltd.
> +	0004  Veikk A15 Pen Tablet
> +2ff4  Quixant Plc
> +3016  Boundary Devices, LLC
> +	0001  Nitrogen Bootloader
> +3036  Control iD
> +	0001  Print iD
> +	0002  iDBio
> +3037  Beijing Chushifengmang Technology Development Co.,Ltd.
> +3057  Kingsis Corporation
> +	0002  ZOWIE Gaming mouse
> +308f  Input Club
> +	0000  Infinity 60% Bootloader
> +	0001  Infinity 60% - Standard
> +	0002  Infinity 60% - Hacker
> +	0003  Infinity Ergodox Bootloader
> +	0004  Infinity Ergodox
> +	0005  WhiteFox Bootloader
> +	0006  WhiteFox - Vanilla
> +	0007  WhiteFox - ISO
> +	0008  WhiteFox - Aria
> +	0009  WhiteFox - Winkeyless
> +	000a  WhiteFox - True Fox
> +	000b  WhiteFox - Jack of All Trades
> +	000c  Infinity 60% LED Bootloader
> +	000d  Infinity 60% LED - Standard
> +	000e  Infinity 60% LED - Hacker
> +	000f  Infinity 60% LED - Alphabet
> +	0010  K-Type Bootloader
> +	0011  K-Type
> +	0012  Kira Bootloader
> +	0013  Kira
> +	0014  Gemini Dawn/Dusk Bootloader
> +	0015  Gemini Dawn/Dusk
> +	0016  Re:Type Bootloader
> +	0017  Re:Type
> +	0018  Re:Type USB Hub
> +	0019  WhiteFox (SAM4S) Bootloader
> +	001a  WhiteFox (SAM4S) - Vanilla
> +	001b  WhiteFox (SAM4S) - ISO
> +	001c  WhiteFox (SAM4S) - Aria
> +	001d  WhiteFox (SAM4S) - Winkeyless
> +	001e  WhiteFox (SAM4S) - True Fox
> +	001f  WhiteFox (SAM4S) - Jack of All Trades
> +30a4  Blues Wireless
> +	0001  Notecard
> +30c2  UNPARALLEL Innovation, Lda
> +	1388  SPL Meter
> +30c9  Luxvisions Innotech Limited
> +30ee  Fujitsu Connected Technologies Limited
> +	1001  F-01L
> +30f2  Varex Imaging
> +3111  Hiperscan GmbH
> +	0000  SGS-NT Microspectrometer
> +3112  Meteca SA
> +	0001  MBC-WB01 (CDC-ACM)
> +	0002  MBC-WB01 (Bootloader)
> +	0003  ABC (CDC ACM)
> +	0004  ABC (Bootloader)
> +3125  Eagletron
> +	0001  TrackerPod Camera Stand
> +3136  Navini Networks
> +3145  SafeLogic Inc.
> +3147  Tanvas, Inc.
> +316c  SigmaSense, LLC
> +316d  Purism, SPC
> +	4c4b  Librem Key
> +316e  SPECINFOSYSTEMS
> +	0001  DIAMOND token
> +3171  8086 Consultancy
> +	0011  ClusterCTRL DA
> +	0012  ClusterCTRL pHAT
> +	0013  ClusterCTRL A+6
> +	0014  ClusterCTRL Triple
> +	0015  ClusterCTRL Single
> +3176  Whanam Electronics Co., Ltd
> +3195  Link Instruments
> +	f190  MSO-19
> +	f280  MSO-28
> +	f281  MSO-28
> +31c9  BeiJing LanXum Computer Technology Co., Ltd.
> +	1001  Printer
> +	1301  Black and White Laser Printer
> +	1501  LaserPrint GA50 series
> +3200  Alcatel-Lucent Enterprise
> +	2100  ALE 8058s
> +	2101  ALE 8068s
> +	2102  8078s
> +3219  Smak Tecnologia e Automacao LTDA
> +	0044  SKO44 Optical Keyboard
> +321c  Premio, Inc.
> +324c  CUPRIS Ltd.
> +326d  Agile Display Solutions Co., Ltd
> +	0001  Avocor USB Camera
> +3275  VidzMedia Pte Ltd
> +	4fb1  MonsterTV P2H
> +3293  Unhuman Inc.
> +32b3  TEXA
> +	d1a6  TXT Multihub
> +	d1a7  TXT Multihub
> +3310  MUDITA Sp. z o.o.
> +	0100  Pure
> +	0101  Pure tethering
> +3333  InLine
> +	3333  2 port KVM switch model 60652K
> +3334  AEI
> +	1701  Fast Ethernet
> +3340  Yakumo
> +	043a  Mio A701 DigiWalker PPCPhone
> +	0e3a  Pocket PC 300 GPS SL / Typhoon MyGuide 3500
> +	a0a3  deltaX 5 BT (D) PDA
> +	ffff  Mio DigiWalker Sync
> +3344  Leaguer Microelectronics (LME)
> +	3744  OEM PC Remote
> +3384  System76
> +	0000  Thelio Io (thelio-io)
> +	0001  Launch Configurable Keyboard (launch_1)
> +348f  ISY
> +	2322  Wireless Presenter
> +3504  Micro Star
> +	f110  Security Key
> +3538  Power Quotient International Co., Ltd
> +	0001  Travel Flash
> +	0015  Mass Storge Device
> +	0022  Hi-Speed Mass Storage Device
> +	0042  Cool Drive U339 Flash Disk
> +	0054  Flash Drive (2GB)
> +	0901  Traveling Disk U273 (4GB)
> +3579  DIVA
> +	6901  Media Reader
> +357d  Sharkoon
> +	7788  JMicron JMS567 ATA/ATAPI Bridge
> +3636  InVibro
> +3767  Fanatec
> +	0101  Speedster 3 Forceshock Wheel
> +3838  WEM
> +	0001  5-in-1 Card Reader
> +	1031  2.4G Wireless Mouse
> +3923  National Instruments Corp.
> +	12c0  DAQPad-6020E
> +	12d0  DAQPad-6507
> +	12e0  NI 4350
> +	12f0  NI 5102
> +	1750  DAQPad-6508
> +	17b0  USB-ISA-Bridge
> +	1820  DAQPad-6020E (68 pin I/O)
> +	1830  DAQPad-6020E (BNC)
> +	1f00  DAQPad-6024E
> +	1f10  DAQPad-6024E
> +	1f20  DAQPad-6025E
> +	1f30  DAQPad-6025E
> +	1f40  DAQPad-6036E
> +	1f50  DAQPad-6036E
> +	2f80  DAQPad-6052E
> +	2f90  DAQPad-6052E
> +	702a  GPIB-USB-B
> +	702b  GPIB-USB-B Initialization
> +	703c  USB-485 RS485 Cable
> +	709b  GPIB-USB-HS
> +	7166  USB-8451
> +	716e  USB-8451 Firmware Loader
> +	717a  USB-6008
> +	717b  USB-6009
> +	71d6  USB-6008 OEM
> +	71d7  USB-6009 OEM
> +	71d8  USB-6009 OEM
> +	7254  NI MIO (data acquisition card) firmware updater
> +	729e  USB-6251 (OEM) data acquisition card
> +	7346  USB-6229
> +	755b  myDAQ
> +	76af  USB-6000
> +	76b0  USB-6000 OEM
> +	76bf  USB-6001
> +	76c0  USB-6001 OEM
> +	76c4  USB-6002
> +	76c5  USB-6002 OEM
> +	76c6  USB-6003
> +	76c7  USB-6003 OEM
> +40bb  I-O Data
> +	0a09  USB2.0-SCSI Bridge USB2-SC
> +4101  i-rocks
> +	1301  IR-2510 usb phone
> +4102  iRiver, Ltd.
> +	1001  iFP-100 series mp3 player
> +	1003  iFP-300 series mp3 player
> +	1005  iFP-500 series mp3 player
> +	1007  iFP-700 series mp3/ogg vorbis player
> +	1008  iFP-800 series mp3/ogg vorbis player
> +	100a  iFP-1000 series mp3/ogg vorbis player
> +	1014  T20 series mp3/ogg vorbis player (ums firmware)
> +	1019  T30
> +	1034  T60
> +	1040  M1Player
> +	1041  E100 (ums)
> +	1101  iFP-100 series mp3 player (ums firmware)
> +	1103  iFP-300 series mp3 player (ums firmware)
> +	1105  iFP-500 series mp3 player (ums firmware)
> +	1113  T10 (alternate)
> +	1117  T10
> +	1119  T30 series mp3/ogg/wma player
> +	1141  E100 (mtp)
> +	2002  H10 6GB
> +	2101  H10 20GB (mtp)
> +	2102  H10 5GB (mtp)
> +	2105  H10 5/6GB (mtp)
> +413c  Dell Computer Corp.
> +	0000  DRAC 5 Virtual Keyboard and Mouse
> +	0001  DRAC 5 Virtual Media
> +	0058  Port Replicator
> +	1001  Keyboard Hub
> +	1002  Keyboard Hub
> +	1003  Keyboard Hub
> +	1005  Multimedia Pro Keyboard Hub
> +	2001  Keyboard HID Support
> +	2002  SK-8125 Keyboard
> +	2003  Keyboard SK-8115
> +	2005  RT7D50 Keyboard
> +	2010  Keyboard
> +	2011  Multimedia Pro Keyboard
> +	2100  SK-3106 Keyboard
> +	2101  SK-3205 SmartCard Reader Keyboard
> +	2105  Model L100 Keyboard
> +	2106  QuietKey Keyboard
> +	2107  KB212-B Quiet Key Keyboard
> +	2113  KB216 Wired Keyboard
> +	2134  Hub of E-Port Replicator
> +	21d7  Dell Wireless 5560 HSPA+ Mobile Broadband Modem
> +	2500  DRAC4 Remote Access Card
> +	2501  Keyboard and mouse dongle
> +	2513  internal USB Hub of E-Port Replicator
> +	3010  Optical Wheel Mouse
> +	3012  Optical Wheel Mouse
> +	3016  Optical 5-Button Wheel Mouse
> +	301a  Dell MS116 Optical Mouse
> +	301b  Universal Bluetooth Receiver
> +	3200  Mouse
> +	4001  Axim X5
> +	4002  Axim X3
> +	4003  Axim X30
> +	4004  Axim Sync
> +	4005  Axim Sync
> +	4006  Axim Sync
> +	4007  Axim Sync
> +	4008  Axim Sync
> +	4009  Axim Sync
> +	4011  Axim X51v
> +	5103  AIO Printer A940
> +	5105  AIO Printer A920
> +	5107  AIO Printer A960
> +	5109  Photo AIO Printer 922
> +	5110  Photo AIO Printer 962
> +	5111  Photo AIO Printer 942
> +	5112  Photo AIO Printer 924
> +	5113  Photo AIO Printer 944
> +	5114  Photo AIO Printer 964
> +	5115  Photo AIO Printer 926
> +	5116  AIO Printer 946
> +	5117  Photo AIO Printer 966
> +	5118  AIO 810
> +	5124  Laser MFP 1815
> +	5128  Photo AIO 928
> +	5133  968 AIO Printer
> +	5200  Laser Printer
> +	5202  Printing Support
> +	5203  Printing Support
> +	5210  Printing Support
> +	5211  1110 Laser Printer
> +	5220  Laser MFP 1600n
> +	5225  Printing Support
> +	5226  Printing Support
> +	5228  Laser Printer 1720dn
> +	5300  Laser Printer
> +	5400  Laser Printer
> +	5401  Laser Printer
> +	5404  1250c Color Printer
> +	5513  WLA3310 Wireless Adapter [Intersil ISL3887]
> +	5534  Hub of E-Port Replicator
> +	5601  Laser Printer 3100cn
> +	5602  Laser Printer 3000cn
> +	5607  MFP Color Laser Printer 3115cn
> +	5631  Laser Printer 5100cn
> +	564a  C1765 series Multifunction Color LaserPrinter, Scanner & Copier
> +	5905  Printing Support
> +	8000  BC02 Bluetooth Adapter
> +	8010  TrueMobile Bluetooth Module in
> +	8100  TrueMobile 1180 802.11b Adapter [Intersil PRISM 3]
> +	8102  TrueMobile 1300 802.11g Wireless Adapter [Intersil ISL3880]
> +	8103  Wireless 350 Bluetooth
> +	8104  Wireless 1450 Dual-band (802.11a/b/g) Adapter [Intersil ISL3887]
> +	8105  U2 in HID - Driver
> +	8106  Wireless 350 Bluetooth Internal Card in
> +	8110  Wireless 3xx Bluetooth Internal Card
> +	8111  Wireless 3xx Bluetooth Internal Card in
> +	8114  Wireless 5700 Mobile Broadband (CDMA EV-DO) Minicard Modem
> +	8115  Wireless 5500 Mobile Broadband (3G HSDPA) Minicard Modem
> +	8116  Wireless 5505 Mobile Broadband (3G HSDPA) Minicard Modem
> +	8117  Wireless 5700 Mobile Broadband (CDMA EV-DO) Expresscard Modem
> +	8118  Wireless 5510 Mobile Broadband (3G HSDPA) Expresscard Status Port
> +	8120  Bluetooth adapter
> +	8121  Eastfold in HID
> +	8122  Eastfold in DFU
> +	8123  eHome Infrared Receiver
> +	8124  eHome Infrared Receiver
> +	8126  Wireless 355 Bluetooth
> +	8127  Wireless 355 Module with Bluetooth 2.0 + EDR Technology.
> +	8128  Wireless 5700-Sprint Mobile Broadband (CDMA EV-DO) Mini-Card Status Port
> +	8129  Wireless 5700-Telus Mobile Broadband (CDMA EV-DO) Mini-Card Status Port
> +	8131  Wireless 360 Bluetooth 2.0 + EDR module.
> +	8133  Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port
> +	8134  Wireless 5720 Sprint Mobile Broadband (EVDO Rev-A) Minicard Status Port
> +	8135  Wireless 5720 TELUS Mobile Broadband (EVDO Rev-A) Minicard Diagnostics Port
> +	8136  Wireless 5520 Cingular Mobile Broadband (3G HSDPA) Minicard Diagnostics Port
> +	8137  Wireless 5520 Voda L Mobile Broadband (3G HSDPA) Minicard Status Port
> +	8138  Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard EAP-SIM Port
> +	8140  Wireless 360 Bluetooth
> +	8142  Mobile 360 in DFU
> +	8143  Broadcom BCM20702A0 Bluetooth
> +	8147  F3507g Mobile Broadband Module
> +	8156  Wireless 370 Bluetooth Mini-card
> +	8157  Integrated Keyboard
> +	8158  Integrated Touchpad / Trackstick
> +	8160  Wireless 365 Bluetooth
> +	8161  Integrated Keyboard
> +	8162  Integrated Touchpad [Synaptics]
> +	8171  Gobi Wireless Modem (QDL mode)
> +	8172  Gobi Wireless Modem
> +	8183  F3607gw Mobile Broadband Module
> +	8184  F3607gw v2 Mobile Broadband Module
> +	8185  Gobi 2000 Wireless Modem (QDL mode)
> +	8186  Gobi 2000 Wireless Modem
> +	8187  DW375 Bluetooth Module
> +	818e  DW5560 miniPCIe HSPA+ Mobile Broadband Modem
> +	8197  BCM20702A0 Bluetooth Module
> +	81a0  Wireless 5808 Mobile Broadband (Sierra Wireless MC7355 Mini PCIE, 4G UMTS,HSDPA,HSPA+,LTE,1xRTT,EVDO Rev A,GSM,GPRS)
> +	81a3  Hub of E-Port Replicator
> +	81a8  Wireless 5808 Mobile Broadband (Sierra Wireless Mini PCIE, 4G UMTS,HSDPA,HSPA+,LTE,1xRTT,EVDO Rev A,GSM,GPRS)
> +	8501  Bluetooth Adapter
> +	9001  ATA Bridge
> +	9009  Portable Device
> +	9500  USB CP210x UART Bridge Controller [DW700]
> +	a001  Hub
> +	a005  Internal 2.0 Hub
> +	a101  Internal Dual SD Card module
> +	a102  iDRAC Virtual NIC
> +	a503  AC511 Sound Bar
> +	a700  Hub (in 1905FP LCD Monitor)
> +	b007  Streak 5 Android Tablet
> +4146  USBest Technology
> +	9281  Iomega Micro Mini 128MB Flash Drive
> +	ba01  Intuix Flash Drive
> +4168  Targus
> +	1010  Wireless Compact Laser Mouse
> +4242  USB Design by Example
> +	4201  Buttons and Lights HID device
> +	4220  Echo 1 Camera
> +4255  GoPro
> +	1000  9FF2 [Digital Photo Display]
> +	2000  HD2-14 [Hero 2 Camera]
> +4317  Broadcom Corp.
> +	0700  U.S. Robotics USR5426 802.11g Adapter
> +	0701  U.S. Robotics USR5425 Wireless MAXg Adapter
> +	0711  Belkin F5D7051 v3000 802.11g
> +	0720  Dynex DX-BUSB
> +	0721  Dynex DX-EBUSB
> +4348  WinChipHead
> +	5523  USB->RS 232 adapter with Prolific PL 2303 chipset
> +	5537  13.56Mhz RFID Card Reader and Writer
> +	5584  CH34x printer adapter cable
> +4572  Shuttle, Inc.
> +	4572  Shuttle PN31 Remote
> +4586  Panram
> +	1026  Crystal Bar Flash Drive
> +4670  EMS Production
> +	9394  Game Cube USB Memory Adaptor 64M
> +46f4  QEMU
> +4752  Miditech
> +	0011  Midistart-2
> +4757  GW Instek
> +	2009  PEL-2000 Series Electronic Load (CDC)
> +	2010  PEL-2000 Series Electronic Load (CDC)
> +4766  Aceeca
> +	0001  MEZ1000 RDA
> +4855  Memorex
> +	7288  Ultra Traveldrive 160G 2.5" HDD
> +4971  SimpleTech
> +	1004  Hitachi LifeStudio Desk (3.5" HDD) [w/o flash key]
> +	1013  Touro Desk Pro
> +	1015  Touro Desk 3.0
> +	8001  G-Tech G-DRIVE Mobile
> +	cb01  SP-U25/120G
> +	cd15  Simple Drive Mini (2.5" HDD)
> +	ce07  SimpleDrive (3.5" HDD)
> +	ce12  FV-U35
> +	ce17  1TB SimpleDrive II USB External Hard Drive
> +	ce18  (re)Drive
> +	ce21  JMicron JM20329 SATA Bridge [eg. HITACHI SimpleDrive mini]
> +	ce22  Hitachi SimpleTough (3.5" HDD)
> +4d46  Musical Fidelity
> +	0001  V-Link
> +	0002  V-DAC II
> +5032  Grandtec
> +	0bb8  Grandtec USB1.1 DVB-T (cold)
> +	0bb9  Grandtec USB1.1 DVB-T (warm)
> +	0fa0  Grandtec USB1.1 DVB-T (cold)
> +	0fa1  Grandtec USB1.1 DVB-T (warm)
> +50c2  Averatec (?)
> +	4013  WLAN Adapter
> +5131  MSR
> +	2007  MSR-101U Mini HID magnetic card reader
> +5173  Sweex
> +	1809  ZD1211
> +5219  I-Tetra
> +	1001  Cetus CDC Device
> +5332  Clearly Superior Technologies, Inc.
> +	1300  CST2545-5W (L-Trac)
> +5345  Owon
> +	1234  PDS6062T Oscilloscope
> +534c  SatoshiLabs
> +	0001  Bitcoin Wallet [TREZOR]
> +	0002  Bitcoin Wallet [TREZOR v2]
> +534d  MacroSilicon
> +	0021  MS210x Video Grabber [EasierCAP]
> +	6021  VGA Display Adapter
> +5354  Meyer Instruments (MIS)
> +	0017  PAXcam2
> +544d  Transmeta Corp.
> +5543  UC-Logic Technology Corp.
> +	0002  SuperPen WP3325U Tablet
> +	0003  Tablet WP4030U
> +	0004  Tablet WP5540U
> +	0005  Tablet WP8060U
> +	0041  Genius PenSketch 6x8 Tablet
> +	0042  Tablet PF1209
> +	004a  XP-Pen Artist 10S tablet
> +	004d  Tablet Monitor MSP19U
> +	0064  Aiptek HyperPen 10000U
> +	3031  Graphics tablet [DrawImage G3, Ugee G3]
> +5555  Epiphan Systems Inc.
> +	1110  VGA2USB
> +	1120  KVM2USB
> +	2222  DVI2USB
> +	3333  VGA2USB Pro
> +	3337  KVM2USB Pro
> +	3340  VGA2USB LR
> +	3344  KVM2USB LR
> +	3411  DVI2USB Solo
> +	3422  DVI2USB Duo
> +	3500  DVI2USB3
> +	3501  DVI2USB3 Rev3
> +	3510  DVI2USB3_ET
> +	3520  SDI2USB3
> +55aa  OnSpec Electronic, Inc.
> +	0015  Hard Drive
> +	0102  SuperDisk
> +	0103  IDE Hard Drive
> +	0201  DDI to Reader-19
> +	1234  ATAPI Bridge
> +	a103  Sandisk SDDR-55 SmartMedia Card Reader
> +	b000  USB to CompactFlash Card Reader
> +	b004  OnSpec MMC/SD Reader/Writer
> +	b00b  USB to Memory Stick Card Reader
> +	b00c  USB to SmartMedia Card Reader
> +	b012  Mitsumi FA402M 8-in-2 Card Reader
> +	b200  Compact Flash Reader
> +	b204  MMC/ SD Reader
> +	b207  Memory Stick Reader
> +5654  Gotview
> +	ca42  MasterHD 3
> +5656  Uni-Trend Group Limited
> +	0832  UT2000/UT3000 Digital Storage Oscilloscope
> +595a  IRTOUCHSYSTEMS Co. Ltd.
> +	0001  Touchscreen
> +5986  Acer, Inc
> +	0100  Orbicam
> +	0101  USB2.0 Camera
> +	0102  Crystal Eye Webcam
> +	0137  HP Webcam
> +	0141  BisonCam, NB Pro
> +	0149  HP Webcam-101
> +	014c  MSI Integrated Webcam
> +	01a6  Lenovo Integrated Webcam
> +	01a7  Lenovo Integrated Webcam
> +	01a9  Lenovo Integrated Webcam
> +	0200  OrbiCam
> +	0202  Fujitsu Webcam
> +	0203  BisonCam NB Pro 1300
> +	0205  Lenovo EasyCamera
> +	0217  Integrated Webcam
> +	0241  BisonCam, NB Pro
> +	0268  SunplusIT INC. Integrated Camera
> +	026a  Integrated Camera
> +	0292  Lenovo Integrated Webcam
> +	0294  Lenovo Integrated Webcam
> +	0295  Lenovo Integrated Webcam
> +	0299  Lenovo Integrated Webcam
> +	029c  Lenovo EasyCamera
> +	02ac  HP TrueVision HD Webcam
> +	02d0  Lenovo Integrated Webcam [R5U877]
> +	02d2  ThinkPad Integrated Camera
> +	02d5  Integrated Camera
> +	03b3  Lenovo Integrated Webcam
> +	03d0  Lenovo Integrated Webcam [R5U877]
> +	0400  BisonCam, NB Pro
> +	0535  Lenovo EasyCamera integrated webcam
> +	055a  Lenovo Integrated Webcam
> +	0652  Lenovo EasyCamera
> +	0670  Lenovo EasyCamera
> +	0671  Lenovo EasyCamera
> +	0706  ThinkPad P50 Integrated Camera
> +	2113  SunplusIT Integrated Camera
> +	a002  Lenovo EasyCamera Integrated Webcam
> +59e3  Nonolith Labs
> +5a57  Zinwell
> +	0260  RT2570
> +	0280  802.11a/b/g/n USB Wireless LAN Card
> +	0282  802.11b/g/n USB Wireless LAN Card
> +	0283  802.11b/g/n USB Wireless LAN Card
> +	0284  802.11a/b/g/n USB Wireless LAN Card
> +	0290  ZW-N290 802.11n [Realtek RTL8192U]
> +	5257  Metronic 495257 wifi 802.11ng
> +6000  Beholder International Ltd.
> +	0001  Trident TVBOX Video Grabber
> +	dec0  TV Wander
> +	dec1  TV Voyage
> +601a  Ingenic Semiconductor Ltd.
> +	4740  XBurst Jz4740 boot mode
> +	4760  JZ4760 Boot Device
> +6022  Xektek
> +	0500  SuperPro Universal Device Programmer
> +6189  Sitecom
> +	182d  LN-029 10/100 Ethernet Adapter
> +	2068  USB to serial cable (v2)
> +6244  LightingSoft AG
> +	0101  Intelligent Usb Dmx Interface SIUDI5A
> +	0201  Intelligent Usb Dmx Interface SIUDI5C
> +	0300  Intelligent Usb Dmx Interface SIUDI6 Firmware download
> +	0301  Intelligent Usb Dmx Interface SIUDI6C
> +	0302  Intelligent Usb Dmx Interface SIUDI6A
> +	0303  Intelligent Usb Dmx Interface SIUDI6D
> +	0400  Touch Sensitive Intelligent Control Keypad STICK1A
> +	0401  Touch Sensitive Intelligent Control Keypad STICK1A
> +	0410  Intelligent Usb Dmx Interface SIUDI7 Firmware Download
> +	0411  Intelligent Usb Dmx Interface SIUDI7A
> +	0420  Intelligent Usb Dmx Interface SIUDI8A Firmware Download
> +	0421  Intelligent Usb Dmx Interface SIUDI8A
> +	0430  Intelligent Usb Dmx Interface SIUDI8C Firmware Download
> +	0431  Intelligent Usb Dmx Interface SIUDI8C
> +	0440  Intelligent Usb Dmx Interface SIUDI9A Firmware Download
> +	0441  Intelligent Usb Dmx Interface SIUDI9A
> +	0450  Intelligent Usb Dmx Interface SIUDI9C Firmware Download
> +	0451  Intelligent Usb Dmx Interface SIUDI9C
> +	0460  Touch Sensitive Intelligent Control Keypad STICK2 Firmware download
> +	0461  Touch Sensitive Intelligent Control Keypad STICK2
> +	0470  Touch Sensitive Intelligent Control Keypad STICK1B Firmware download
> +	0471  Touch Sensitive Intelligent Control Keypad STICK1B
> +	0480  Touch Sensitive Intelligent Control Keypad STICK3 Firmware download
> +	0481  Touch Sensitive Intelligent Control Keypad STICK3
> +	0490  Intelligent Usb Dmx Interface SIUDI9D Firmware Download
> +	0491  Intelligent Usb Dmx Interface SIUDI9D
> +	0500  Touch Sensitive Intelligent Control Keypad STICK2B Firmware download
> +	0501  Touch Sensitive Intelligent Control Keypad STICK2B
> +	0520  Touch Sensitive Intelligent Control Keypad (STICK2C Firmware download, 32/64bits
> +	0521  Touch Sensitive Intelligent Control Keypad (STICK2C, 32/64bits)
> +	0540  Sunlite Universal Smart Handy Interface (SUSHI1A Firmware download, 32/64bits)
> +	0541  Sunlite Universal Smart Handy Interface (SUSHI1A, 32/64bits)
> +	0570  Touch Sensitive Intelligent Control Keypad (STICK4A Firmware download, 32/64bits)
> +	0571  Touch Sensitive Intelligent Control Keypad (STICK4A, 32/64bits)
> +	0580  Touch Sensitive Intelligent Control Keypad (STICK5A Firmware download, 32/64bits)
> +	0581  Touch Sensitive Intelligent Control Keypad (STICK5A, 32/64bits)
> +	0590  Intelligent Dmx Interface (SIUDI9S Firmware Download, 32/64bits)
> +	0591  Intelligent Dmx Interface (SIUDI9S, 32/64bits)
> +	0600  Intelligent Dmx Interface (SIUDI9M Firmware Download, 32/64bits)
> +	0601  Intelligent Dmx Interface (SIUDI9M, 32/64bits)
> +	0610  Intelligent Dmx Interface SIUDI10A Firmware Download
> +	0611  Intelligent Dmx Interface SIUDI10A
> +6253  TwinHan Technology Co., Ltd
> +	0100  Ir reciver f. remote control
> +636c  CoreLogic, Inc.
> +6472  Sony Corp.
> +	01c8  PlayStation Portable [Mass Storage]
> +6547  Arkmicro Technologies Inc.
> +	0232  ARK3116 Serial
> +6557  Emtec
> +	5500  Mass Storage Device
> +	8005  Car Key
> +6615  IRTOUCHSYSTEMS Co. Ltd.
> +	0001  Touchscreen
> +	0020  IRTOUCH InfraRed TouchScreen
> +	0081  TouchScreen
> +6666  Prototype product Vendor ID
> +	0667  WiseGroup Smart Joy PSX, PS-PC Smart JoyPad
> +	1c40  TELEMIC 802.15.4 Sensor node (Bootloader)
> +	1c41  TELEMIC 802.15.4 Sensor node
> +	2667  JCOP BlueZ Smartcard reader
> +	8802  SmartJoy Dual Plus PS2 converter
> +	8804  WiseGroup SuperJoy Box 5
> +6677  WiseGroup, Ltd.
> +	8802  SmartJoy Dual Plus PS2 converter
> +	8811  Deluxe Dance Mat
> +675d  Humanscale
> +	062a  Switch Mouse
> +6891  3Com
> +	a727  3CRUSB10075 802.11bg [ZyDAS ZD1211]
> +695c  Opera1
> +	3829  Opera1 DVB-S (warm state)
> +6993  Yealink Network Technology Co., Ltd.
> +	b001  VoIP Phone
> +6a75  Shanghai Jujo Electronics Co., Ltd
> +7104  CME (Central Music Co.)
> +	2202  UF5/UF6/UF7/UF8 MIDI Master Keyboard
> +726c  StackFoundry LLC
> +	2149  EntropyKing Random Number Generator
> +7302  Solinftec
> +	0001  HUB 4X232
> +734c  TBS Technologies China
> +	5920  Q-Box II DVB-S2 HD
> +	5928  Q-Box II DVB-S2 HD
> +7373  Beijing STONE Technology Co. Ltd.
> +	5740  Intelligent TFT-LCD Module
> +7392  Edimax Technology Co., Ltd
> +	7711  EW-7711UTn nLite Wireless Adapter [Ralink RT3070]
> +	7717  EW-7717UN 802.11n Wireless Adapter [Ralink RT2770]
> +	7718  EW-7718UN 802.11n Wireless Adapter [Ralink RT2870]
> +	7722  EW-7722UTn 802.11n Wireless Adapter [Ralink RT3072]
> +	7733  EW-7733UnD 802.11abgn 3x3:3 [Ralink RT3573]
> +	7811  EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
> +	7822  EW-7612UAn V2 802.11n Wireless Adapter [Realtek RTL8192CU]
> +	a611  EW-7611ULB 802.11b/g/n and Bluetooth 4.0 Adapter
> +	a711  EW-7711MAC 802.11ac Wireless Adapter
> +	a811  EW-7811UTC 802.11ac Wireless Adapter
> +	b711  EW-7722UAC 802.11a/b/g/n/ac (2x2) Wireless Adapter [MediaTek MT7612U]
> +	b822  EW-7822ULC 802.11ac Wireless Adapter [Realtek RTL8812AU]
> +73d8  Progeny Dental Equipment Specialists
> +	0104  VetPro DR, Size 1
> +	0105  VetPro DR, Size 2
> +7669  Venable Instruments
> +	350c  Model 350c, Frequency Response Analyzer
> +	5140  Model 5140, Frequency Response Analyzer
> +	6305  Model 6305, Frequency Response Analyzer
> +	6320  Model 6320, Frequency Response Analyzer
> +	6340  Model 6340, Frequency Response Analyzer
> +	7405  Model 7405, Frequency Response Analyzer
> +	7420  Model 7420, Frequency Response Analyzer
> +	7440  Model 7440, Frequency Response Analyzer
> +	8805  Model 8805, Frequency Response Analyzer
> +	8820  Model 8820, Frequency Response Analyzer
> +	8840  Model 8840, Frequency Response Analyzer
> +7825  Other World Computing
> +	a2a4  External SATA Hard Drive Adapter cable PA023U3
> +	b0b3  miniStack MAX
> +8070  ACCES I/O Products, Inc.
> +	8003  USB-DIO-96
> +	8070  USB-AO16-16A
> +8086  Intel Corp.
> +	0001  AnyPoint (TM) Home Network 1.6 Mbps Wireless Adapter
> +	0044  CPU DRAM Controller
> +	0046  HD Graphics
> +	0100  Personal Audio Player 3000
> +	0101  Personal Audio Player 3000
> +	0110  Easy PC Camera
> +	0120  PC Camera CS120
> +	0180  WiMAX Connection 2400m
> +	0181  WiMAX Connection 2400m
> +	0182  WiMAX Connection 2400m
> +	0186  WiMAX Connection 2400m
> +	0188  WiMAX Connection 2400m
> +	0189  Centrino Advanced-N 6230 Bluetooth adapter
> +	0200  AnyPoint(TM) Wireless II Network 11Mbps Adapter [Atmel AT76C503A]
> +	0431  Pro Video PC Camera
> +	0510  Digital Movie Creator
> +	0630  Pocket PC Camera
> +	0780  CS780 Microphone Input
> +	07d3  BLOB boot loader firmware
> +	07dc  Bluetooth 4.0* Smart Ready (low energy)
> +	0b07  RealSense D435
> +	0dad  Cherry MiniatureCard Keyboard
> +	1010  AnyPoint(TM) Home Network 10 Mbps Phoneline Adapter
> +	110a  Bluetooth Controller from (Ericsson P4A)
> +	110b  Bluetooth Controller from (Intel/CSR)
> +	1110  PRO/Wireless LAN Module
> +	1111  PRO/Wireless 2011B 802.11b Adapter [Intersil PRISM 2.5]
> +	1122  Integrated Hub
> +	1134  Hollister Mobile Monitor
> +	1139  In-Target Probe (ITP)
> +	1234  Prototype Reader/Writer
> +	1403  WiMAX Connection 2400m
> +	1405  WiMAX Connection 2400m
> +	1406  WiMAX Connection 2400m
> +	2448  82801 PCI Bridge
> +	3100  PRO/DSL 3220 Modem - WAN
> +	3101  PRO/DSL 3220 Modem
> +	3240  AnyPoint® 3240 Modem - WAN
> +	3241  AnyPoint® 3240 Modem
> +	8602  Miniature Card Slot
> +	8c26  8 Series/C220 Series  EHCI #1
> +	8c2d  8 Series/C220 Series EHCI #2
> +	8c31  eXtensible Host Controller
> +	9303  8x930Hx Hub
> +	9500  CE 9500 DVB-T
> +	9890  82930 Test Board
> +	beef  SCM Miniature Card Reader/Writer
> +	c013  Wireless HID Station
> +	dead  Galileo
> +	f001  XScale PXA27x Bulverde flash
> +	f1a5  Z-U130 [Value Solid State Drive]
> +8087  Intel Corp.
> +	0020  Integrated Rate Matching Hub
> +	0024  Integrated Rate Matching Hub
> +	0025  Wireless-AC 9260 Bluetooth Adapter
> +	0026  AX201 Bluetooth
> +	0029  AX200 Bluetooth
> +	0032  AX210 Bluetooth
> +	0716  Modem Flashloader
> +	07da  Centrino Bluetooth Wireless Transceiver
> +		8087 07da  Centrino Advanced-N 6235
> +	07db  Atom C2000 Root Hub
> +	07dc  Bluetooth wireless interface
> +	07eb  Oaktrail tablet
> +	0a2a  Bluetooth wireless interface
> +	0a2b  Bluetooth wireless interface
> +	0a9e  Edison
> +	0aa7  Wireless-AC 3168 Bluetooth
> +	0aaa  Bluetooth 9460/9560 Jefferson Peak (JfP)
> +	0fff  Intel Android Bootloader Interface
> +	8000  Integrated Rate Matching Hub
> +	8001  Integrated Hub
> +	8002  8 channel internal hub
> +	8008  Integrated Rate Matching Hub
> +	800a  Hub
> +80ee  VirtualBox
> +	0021  USB Tablet
> +	0022  multitouch tablet
> +8282  Keio
> +	3201  Retro Adapter
> +	3301  Retro Adapter Mouse
> +8301  Hapurs
> +	0089  HPBT05R 2.4 G Mini Wireless Touchpad Keyboard
> +8341  EGO Systems, Inc.
> +	2000  Flashdisk
> +8564  Transcend Information, Inc.
> +	1000  JetFlash
> +	4000  microSD/SD/CF UHS-II Card Reader [RDF8, RDF9]
> +	6000  digital photo frame PF830
> +	6002  digital photo frame PF830
> +	7000  StoreJet 25H3
> +8644  Intenso GmbG
> +	8003  Micro Line
> +	800b  Micro Line (4GB)
> +8e06  CH Products, Inc.
> +	f700  DT225 Trackball
> +8ea3  Doosl
> +	a02c  Wireless Presenter Receiver
> +9016  Sitecom
> +	182d  WL-022 802.11b Adapter
> +9022  TeVii Technology Ltd.
> +	d630  DVB-S S630
> +	d650  DVB-S2 S650
> +	d660  DVB-S2 S660
> +9148  GeoLab, Ltd
> +# All of GeoLab's devices share the same ID 0004.
> +	0004  R3 Compatible Device
> +9516  Studiologic
> +9710  MosChip Semiconductor
> +	7703  MCS7703 Serial Port Adapter
> +	7705  MCS7705 Parallel port adapter
> +	7715  MCS7715 Parallel and serial port adapter
> +	7717  MCS7717 3-port hub with serial and parallel adapter
> +	7720  MCS7720 Dual serial port adapter
> +	7730  MCS7730 10/100 Mbps Ethernet adapter
> +	7780  MCS7780 4Mbps Fast IrDA Adapter
> +	7784  MCS7784 115.2Kb IrDA Adapter
> +	7810  MCS7810 Serial Port Adapter
> +	7820  MCS7820 Dual Serial Port Adapter
> +	7830  MCS7830 10/100 Mbps Ethernet adapter
> +	7832  MCS7832 10/100 Mbps Ethernet adapter
> +	7840  MCS7820/MCS7840 2/4 port serial adapter
> +	9990  MCS9990 PCIe Host Controller
> +9849  Bestmedia CD Recordable GmbH & Co. KG
> +	0701  Platinum MyDrive HP
> +9886  Astro Gaming
> +	0015  A50
> +9999  Odeon
> +	0001  JAF Mobile Phone Flasher Interface
> +99fa  Grandtec
> +	8988  V.cap Camera Device
> +9ac4  J. Westhues
> +	4b8f  ProxMark-3 RFID Instrument
> +9e88  Marvell Semiconductor, Inc.
> +	9e8f  Plug Computer Basic [SheevaPlug]
> +a014  Insignia (Best Buy)
> +	b014  Desktop Microphone NS-PAUM50
> +a108  Ingenic Semiconductor Co.,Ltd
> +	1000  X1000
> +	4775  JZ4775 Boot Device
> +a128  AnMo Electronics Corp. / Dino-Lite (?)
> +	0610  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
> +	0611  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
> +	0612  Dino-Lite Digital Microscope (SN9C120 + HV7131R)
> +	0613  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
> +	0614  Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111)
> +	0615  Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111)
> +	0616  Dino-Lite Digital Microscope (SN9C120 + HV7131R)
> +	0617  Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111)
> +	0618  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
> +a168  AnMo Electronics Corporation
> +	0610  Dino-Lite Digital Microscope
> +	0611  Dino-Lite Digital Microscope
> +	0613  Dino-Lite Digital Microscope
> +	0614  Dino-Lite Pro Digital Microscope
> +	0615  Dino-Lite Pro Digital Microscope
> +	0617  Dino-Lite Pro Digital Microscope
> +	0618  Dino-Lite Digital Microscope
> +a466  Haikou Xingong Electronics Co.,Ltd
> +	0a53  TL866II Plus Device Programmer [MiniPRO]
> +a600  ASIX s.r.o.
> +	5500  zuban H2OPS - GPS for canoeing
> +	a000  SIGMA Logic Analyzer
> +	a002  EMUSB interface pro MU Beta
> +	c000  MREL Data Trap II
> +	c001  VUTS DMU4
> +	c002  Electrone MASH
> +	c005  MREL HTU HandiTrap cable
> +	c006  JRC COmeter
> +	e110  OK1ZIA Davac 4.x
> +	e112  OK1ZIA Antenna rotator
> +	e113  OK1ZIA GPIO
> +	e114  OK1ZIA HD&Keyb
> +a727  3Com
> +	6893  3CRUSB20075 OfficeConnect Wireless 108Mbps 11g Adapter [Atheros AR5523]
> +	6895  AR5523
> +	6897  AR5523
> +a88a  Clas Ohlsson
> +	3003  PCFree Multimedia Remote Control PC
> +aaaa  MXT
> +	8815  microSD CardReader
> +	8816  microSD CardReader
> +ab12  aplic
> +	34cd  JMICRON JMS578 SATA 6Gb/s bridge
> +abcd  LogiLink
> +	1234  UDisk flash drive
> +	6104  PCCloneEX Lite+ SATA docking station [QP0017]
> +	cdee  Petcam
> +b58e  Blue Microphones
> +	9e84  Yeti Stereo Microphone
> +ba77  Clockmaker
> +	7147  Agterbosch
> +c216  Card Device Expert Co., LTD
> +	0180  MSR90 MagStripe reader
> +c251  Keil Software, Inc.
> +	1705  MCB2300
> +	2710  ULink
> +	2723  ULink-ME
> +c502  AGPTek
> +	0029  Rocker
> +cace  CACE Technologies Inc.
> +	0002  AirPCAP Classic 802.11 packet capture adapter
> +	0300  AirPcap NX [Atheros AR9170+AR9104]
> +cd12  SMART TECHNOLOGY INDUSTRIAL LTD.
> +d208  Ultimarc
> +	0310  Mini-PAC Arcade Control Interface
> +d209  Ultimarc
> +	0301  I-PAC Arcade Control Interface
> +	0501  Ultra-Stik Ultimarc Ultra-Stik Player 1
> +	1571  A-PAC Arcade Control Interface
> +d904  LogiLink
> +	0003  Laser Mouse (ID0009A)
> +e2b7  Jie Li
> +	0811  CD002
> +	0812  CD005 MP3 Player
> +e4e4  Xorcom Ltd.
> +	1130  Astribank series
> +	1131  Astribank series
> +	1132  Astribank series
> +	1140  Astribank series
> +	1141  Astribank series
> +	1142  Astribank series
> +	1150  Astribank series
> +	1151  Astribank series
> +	1152  Astribank series
> +	1160  Astribank 2 series
> +	1161  Astribank 2 series
> +	1162  Astribank 2 series
> +eb03  MakingThings
> +	0920  Make Controller Kit
> +eb1a  eMPIA Technology, Inc.
> +	17de  KWorld V-Stream XPERT DTV - DVB-T USB cold
> +	17df  KWorld V-Stream XPERT DTV - DVB-T USB warm
> +	2571  M035 Compact Web Cam
> +	2710  SilverCrest Webcam
> +	2750  ECS Elitegroup G220 integrated Webcam
> +	2761  EeePC 701 integrated Webcam
> +	2776  Combined audio and video input device
> +	2800  EM2800 Video Capture
> +	2801  EM2801 Video Capture
> +	2820  EM2820 Video Capture
> +	2821  EM2820 Video Capture
> +	2840  EM2840 Video Capture
> +	2841  EM2840 Video Capture
> +	2861  EasyCAP DC60+ [EM2861]
> +	2863  Video Grabber
> +	2870  Pinnacle PCTV Stick
> +	2881  EM2881 Video Controller
> +	50a3  Gadmei UTV380 TV Box
> +	50a6  Gadmei UTV330 TV Box
> +	5166  video grabber 28282
> +	5184  VIDBOX NW06 [EM28281]
> +	8179  Terratec Cinergy T2 Stick HD
> +	e305  KWorld PlusTV Analog Stick
> +	e355  KWorld DVB-T 355U Digital TV Dongle
> +eb2a  KWorld
> +ef18  SMART TECHNOLOGY INDUSTRIAL LTD.
> +f003  Hewlett Packard
> +	6002  PhotoSmart C500
> +f007  Teslong
> +	a999  Endoscope Camera
> +	b999  Otoscope Camera
> +f182  Leap Motion
> +	0003  Controller
> +f3f0  CCT, Inc
> +	0740  multi-function device
> +	1340  multi-function printer
> +	1440  printer device
> +	1921  printer
> +f4ec  Atten Electronics / Siglent Technologies
> +	ee38  Digital Storage Oscilloscope
> +f4ed  Shenzhen Siglent Co., Ltd.
> +	ee37  SDG1010 Waveform Generator
> +	ee3a  SDG1010 Waveform Generator (TMC mode)
> +f766  Hama
> +	0001  PC-Gamepad "Greystorm"
> +fa11  DyingLight
> +	5afe  DyingLight
> +fc08  Conrad Electronic SE
> +	0101  MIDI Cable UA0037
> +ff00  Power Delivery
> +ffee  FNK Tech
> +	0100  Card Reader Controller RTS5101/RTS5111/RTS5116
> +
> +# List of known device classes, subclasses and protocols
> +
> +# Syntax:
> +# C class  class_name
> +#	subclass  subclass_name			<-- single tab
> +#		protocol  protocol_name		<-- two tabs
> +
> +C 00  (Defined at Interface level)
> +C 01  Audio
> +	01  Control Device
> +	02  Streaming
> +	03  MIDI Streaming
> +C 02  Communications
> +	01  Direct Line
> +	02  Abstract (modem)
> +		00  None
> +		01  AT-commands (v.25ter)
> +		02  AT-commands (PCCA101)
> +		03  AT-commands (PCCA101 + wakeup)
> +		04  AT-commands (GSM)
> +		05  AT-commands (3G)
> +		06  AT-commands (CDMA)
> +		fe  Defined by command set descriptor
> +		ff  Vendor Specific (MSFT RNDIS?)
> +	03  Telephone
> +	04  Multi-Channel
> +	05  CAPI Control
> +	06  Ethernet Networking
> +	07  ATM Networking
> +	08  Wireless Handset Control
> +	09  Device Management
> +	0a  Mobile Direct Line
> +	0b  OBEX
> +	0c  Ethernet Emulation
> +		07  Ethernet Emulation (EEM)
> +C 03  Human Interface Device
> +	00  No Subclass
> +		00  None
> +		01  Keyboard
> +		02  Mouse
> +	01  Boot Interface Subclass
> +		00  None
> +		01  Keyboard
> +		02  Mouse
> +C 05  Physical Interface Device
> +C 06  Imaging
> +	01  Still Image Capture
> +		01  Picture Transfer Protocol (PIMA 15470)
> +C 07  Printer
> +	01  Printer
> +		00  Reserved/Undefined
> +		01  Unidirectional
> +		02  Bidirectional
> +		03  IEEE 1284.4 compatible bidirectional
> +		ff  Vendor Specific
> +C 08  Mass Storage
> +	01  RBC (typically Flash)
> +		00  Control/Bulk/Interrupt
> +		01  Control/Bulk
> +		50  Bulk-Only
> +	02  SFF-8020i, MMC-2 (ATAPI)
> +	03  QIC-157
> +	04  Floppy (UFI)
> +		00  Control/Bulk/Interrupt
> +		01  Control/Bulk
> +		50  Bulk-Only
> +	05  SFF-8070i
> +	06  SCSI
> +		00  Control/Bulk/Interrupt
> +		01  Control/Bulk
> +		50  Bulk-Only
> +C 09  Hub
> +	00  Unused
> +		00  Full speed (or root) hub
> +		01  Single TT
> +		02  TT per port
> +C 0a  CDC Data
> +	00  Unused
> +		30  I.430 ISDN BRI
> +		31  HDLC
> +		32  Transparent
> +		50  Q.921M
> +		51  Q.921
> +		52  Q.921TM
> +		90  V.42bis
> +		91  Q.932 EuroISDN
> +		92  V.120 V.24 rate ISDN
> +		93  CAPI 2.0
> +		fd  Host Based Driver
> +		fe  CDC PUF
> +		ff  Vendor specific
> +C 0b  Chip/SmartCard
> +C 0d  Content Security
> +C 0e  Video
> +	00  Undefined
> +	01  Video Control
> +	02  Video Streaming
> +	03  Video Interface Collection
> +C 58  Xbox
> +	42  Controller
> +C dc  Diagnostic
> +	01  Reprogrammable Diagnostics
> +		01  USB2 Compliance
> +C e0  Wireless
> +	01  Radio Frequency
> +		01  Bluetooth
> +		02  Ultra WideBand Radio Control
> +		03  RNDIS
> +	02  Wireless USB Wire Adapter
> +		01  Host Wire Adapter Control/Data Streaming
> +		02  Device Wire Adapter Control/Data Streaming
> +		03  Device Wire Adapter Isochronous Streaming
> +C ef  Miscellaneous Device
> +	01  ?
> +		01  Microsoft ActiveSync
> +		02  Palm Sync
> +	02  ?
> +		01  Interface Association
> +		02  Wire Adapter Multifunction Peripheral
> +	03  ?
> +		01  Cable Based Association
> +	05  USB3 Vision
> +C fe  Application Specific Interface
> +	01  Device Firmware Update
> +	02  IRDA Bridge
> +	03  Test and Measurement
> +		01  TMC
> +		02  USB488
> +C ff  Vendor Specific Class
> +	ff  Vendor Specific Subclass
> +		ff  Vendor Specific Protocol
> +
> +# List of Audio Class Terminal Types
> +
> +# Syntax:
> +# AT terminal_type  terminal_type_name
> +
> +AT 0100  USB Undefined
> +AT 0101  USB Streaming
> +AT 01ff  USB Vendor Specific
> +AT 0200  Input Undefined
> +AT 0201  Microphone
> +AT 0202  Desktop Microphone
> +AT 0203  Personal Microphone
> +AT 0204  Omni-directional Microphone
> +AT 0205  Microphone Array
> +AT 0206  Processing Microphone Array
> +AT 0300  Output Undefined
> +AT 0301  Speaker
> +AT 0302  Headphones
> +AT 0303  Head Mounted Display Audio
> +AT 0304  Desktop Speaker
> +AT 0305  Room Speaker
> +AT 0306  Communication Speaker
> +AT 0307  Low Frequency Effects Speaker
> +AT 0400  Bidirectional Undefined
> +AT 0401  Handset
> +AT 0402  Headset
> +AT 0403  Speakerphone, no echo reduction
> +AT 0404  Echo-suppressing speakerphone
> +AT 0405  Echo-canceling speakerphone
> +AT 0500  Telephony Undefined
> +AT 0501  Phone line
> +AT 0502  Telephone
> +AT 0503  Down Line Phone
> +AT 0600  External Undefined
> +AT 0601  Analog Connector
> +AT 0602  Digital Audio Interface
> +AT 0603  Line Connector
> +AT 0604  Legacy Audio Connector
> +AT 0605  SPDIF interface
> +AT 0606  1394 DA stream
> +AT 0607  1394 DV stream soundtrack
> +AT 0700  Embedded Undefined
> +AT 0701  Level Calibration Noise Source
> +AT 0702  Equalization Noise
> +AT 0703  CD Player
> +AT 0704  DAT
> +AT 0705  DCC
> +AT 0706  MiniDisc
> +AT 0707  Analog Tape
> +AT 0708  Phonograph
> +AT 0709  VCR Audio
> +AT 070a  Video Disc Audio
> +AT 070b  DVD Audio
> +AT 070c  TV Tuner Audio
> +AT 070d  Satellite Receiver Audio
> +AT 070e  Cable Tuner Audio
> +AT 070f  DSS Audio
> +AT 0710  Radio Receiver
> +AT 0711  Radio Transmitter
> +AT 0712  Multitrack Recorder
> +AT 0713  Synthesizer
> +
> +# List of HID Descriptor Types
> +
> +# Syntax:
> +# HID descriptor_type  descriptor_type_name
> +
> +HID 21  HID
> +HID 22  Report
> +HID 23  Physical
> +
> +# List of HID Descriptor Item Types
> +# Note: 2 bits LSB encode data length following
> +
> +# Syntax:
> +# R item_type  item_type_name
> +
> +R 04  Usage Page
> +R 08  Usage
> +R 14  Logical Minimum
> +R 18  Usage Minimum
> +R 24  Logical Maximum
> +R 28  Usage Maximum
> +R 34  Physical Minimum
> +R 38  Designator Index
> +R 44  Physical Maximum
> +R 48  Designator Minimum
> +R 54  Unit Exponent
> +R 58  Designator Maximum
> +R 64  Unit
> +R 74  Report Size
> +R 78  String Index
> +R 80  Input
> +R 84  Report ID
> +R 88  String Minimum
> +R 90  Output
> +R 94  Report Count
> +R 98  String Maximum
> +R a0  Collection
> +R a4  Push
> +R a8  Delimiter
> +R b0  Feature
> +R b4  Pop
> +R c0  End Collection
> +
> +# List of Physical Descriptor Bias Types
> +
> +# Syntax:
> +# BIAS item_type  item_type_name
> +
> +BIAS 0  Not Applicable
> +BIAS 1  Right Hand
> +BIAS 2  Left Hand
> +BIAS 3  Both Hands
> +BIAS 4  Either Hand
> +
> +# List of Physical Descriptor Item Types
> +
> +# Syntax:
> +# PHY item_type  item_type_name
> +
> +PHY 00  None
> +PHY 01  Hand
> +PHY 02  Eyeball
> +PHY 03  Eyebrow
> +PHY 04  Eyelid
> +PHY 05  Ear
> +PHY 06  Nose
> +PHY 07  Mouth
> +PHY 08  Upper Lip
> +PHY 09  Lower Lip
> +PHY 0a  Jaw
> +PHY 0b  Neck
> +PHY 0c  Upper Arm
> +PHY 0d  Elbow
> +PHY 0e  Forearm
> +PHY 0f  Wrist
> +PHY 10  Palm
> +PHY 11  Thumb
> +PHY 12  Index Finger
> +PHY 13  Middle Finger
> +PHY 14  Ring Finger
> +PHY 15  Little Finger
> +PHY 16  Head
> +PHY 17  Shoulder
> +PHY 18  Hip
> +PHY 19  Waist
> +PHY 1a  Thigh
> +PHY 1b  Knee
> +PHY 1c  calf
> +PHY 1d  Ankle
> +PHY 1e  Foot
> +PHY 1f  Heel
> +PHY 20  Ball of Foot
> +PHY 21  Big Toe
> +PHY 22  Second Toe
> +PHY 23  Third Toe
> +PHY 24  Fourth Toe
> +PHY 25  Fifth Toe
> +PHY 26  Brow
> +PHY 27  Cheek
> +
> +# List of HID Usages
> +
> +# Syntax:
> +# HUT hi  _usage_page  hid_usage_page_name
> +#	hid_usage  hid_usage_name
> +
> +HUT 00  Undefined
> +HUT 01  Generic Desktop Controls
> +	000  Undefined
> +	001  Pointer
> +	002  Mouse
> +	004  Joystick
> +	005  Gamepad
> +	006  Keyboard
> +	007  Keypad
> +	008  Multi-Axis Controller
> +	030  Direction-X
> +	031  Direction-Y
> +	032  Direction-Z
> +	033  Rotate-X
> +	034  Rotate-Y
> +	035  Rotate-Z
> +	036  Slider
> +	037  Dial
> +	038  Wheel
> +	039  Hat Switch
> +	03a  Counted Buffer
> +	03b  Byte Count
> +	03c  Motion Wakeup
> +	03d  Start
> +	03e  Select
> +	040  Vector-X
> +	041  Vector-Y
> +	042  Vector-Z
> +	043  Vector-X relative Body
> +	044  Vector-Y relative Body
> +	045  Vector-Z relative Body
> +	046  Vector
> +	080  System Control
> +	081  System Power Down
> +	082  System Sleep
> +	083  System Wake Up
> +	084  System Context Menu
> +	085  System Main Menu
> +	086  System App Menu
> +	087  System Menu Help
> +	088  System Menu Exit
> +	089  System Menu Select
> +	08a  System Menu Right
> +	08b  System Menu Left
> +	08c  System Menu Up
> +	08d  System Menu Down
> +	090  Direction Pad Up
> +	091  Direction Pad Down
> +	092  Direction Pad Right
> +	093  Direction Pad Left
> +HUT 02  Simulation Controls
> +	000  Undefined
> +	001  Flight Simulation Device
> +	002  Automobile Simulation Device
> +	003  Tank Simulation Device
> +	004  Spaceship Simulation Device
> +	005  Submarine Simulation Device
> +	006  Sailing Simulation Device
> +	007  Motorcycle Simulation Device
> +	008  Sports Simulation Device
> +	009  Airplane Simualtion Device
> +	00a  Helicopter Simulation Device
> +	00b  Magic Carpet Simulation Device
> +	00c  Bicycle Simulation Device
> +	020  Flight Control Stick
> +	021  Flight Stick
> +	022  Cyclic Control
> +	023  Cyclic Trim
> +	024  Flight Yoke
> +	025  Track Control
> +	0b0  Aileron
> +	0b1  Aileron Trim
> +	0b2  Anti-Torque Control
> +	0b3  Autopilot Enable
> +	0b4  Chaff Release
> +	0b5  Collective Control
> +	0b6  Dive Break
> +	0b7  Electronic Countermeasures
> +	0b8  Elevator
> +	0b9  Elevator Trim
> +	0ba  Rudder
> +	0bb  Throttle
> +	0bc  Flight COmmunications
> +	0bd  Flare Release
> +	0be  Landing Gear
> +	0bf  Toe Break
> +	0c0  Trigger
> +	0c1  Weapon Arm
> +	0c2  Weapons Select
> +	0c3  Wing Flaps
> +	0c4  Accelerator
> +	0c5  Brake
> +	0c6  Clutch
> +	0c7  Shifter
> +	0c8  Steering
> +	0c9  Turret Direction
> +	0ca  Barrel Elevation
> +	0cb  Drive Plane
> +	0cc  Ballast
> +	0cd  Bicylce Crank
> +	0ce  Handle Bars
> +	0cf  Front Brake
> +	0d0  Rear Brake
> +HUT 03  VR Controls
> +	000  Unidentified
> +	001  Belt
> +	002  Body Suit
> +	003  Flexor
> +	004  Glove
> +	005  Head Tracker
> +	006  Head Mounted Display
> +	007  Hand Tracker
> +	008  Oculometer
> +	009  Vest
> +	00a  Animatronic Device
> +	020  Stereo Enable
> +	021  Display Enable
> +HUT 04  Sport Controls
> +	000  Unidentified
> +	001  Baseball Bat
> +	002  Golf Club
> +	003  Rowing Machine
> +	004  Treadmill
> +	030  Oar
> +	031  Slope
> +	032  Rate
> +	033  Stick Speed
> +	034  Stick Face Angle
> +	035  Stick Heel/Toe
> +	036  Stick Follow Through
> +	038  Stick Type
> +	039  Stick Height
> +	047  Stick Temp
> +	050  Putter
> +	051  1 Iron
> +	052  2 Iron
> +	053  3 Iron
> +	054  4 Iron
> +	055  5 Iron
> +	056  6 Iron
> +	057  7 Iron
> +	058  8 Iron
> +	059  9 Iron
> +	05a  10 Iron
> +	05b  11 Iron
> +	05c  Sand Wedge
> +	05d  Loft Wedge
> +	05e  Power Wedge
> +	05f  1 Wood
> +	060  3 Wood
> +	061  5 Wood
> +	062  7 Wood
> +	063  9 Wood
> +HUT 05  Game Controls
> +	000  Undefined
> +	001  3D Game Controller
> +	002  Pinball Device
> +	003  Gun Device
> +	020  Point Of View
> +	021  Turn Right/Left
> +	022  Pitch Right/Left
> +	023  Roll Forward/Backward
> +	024  Move Right/Left
> +	025  Move Forward/Backward
> +	026  Move Up/Down
> +	027  Lean Right/Left
> +	028  Lean Forward/Backward
> +	029  Height of POV
> +	02a  Flipper
> +	02b  Secondary Flipper
> +	02c  Bump
> +	02d  New Game
> +	02e  Shoot Ball
> +	02f  Player
> +	030  Gun Bolt
> +	031  Gun Clip
> +	032  Gun Selector
> +	033  Gun Single Shot
> +	034  Gun Burst
> +	035  Gun Automatic
> +	036  Gun Safety
> +	037  Gamepad Fire/Jump
> +	038  Gamepad Fun
> +	039  Gamepad Trigger
> +HUT 07  Keyboard
> +	000  No Event
> +	001  Keyboard ErrorRollOver
> +	002  Keyboard POSTfail
> +	003  Keyboard Error Undefined
> +	004  A
> +	005  B
> +	006  C
> +	007  D
> +	008  E
> +	009  F
> +	00a  G
> +	00b  H
> +	00c  I
> +	00d  J
> +	00e  K
> +	00f  L
> +	010  M
> +	011  N
> +	012  O
> +	013  P
> +	014  Q
> +	015  R
> +	016  S
> +	017  T
> +	018  U
> +	019  V
> +	01a  W
> +	01b  X
> +	01c  Y
> +	01d  Z
> +	01e  1 and ! (One and Exclamation)
> +	01f  2 and @ (2 and at)
> +	020  3 and # (3 and Hash)
> +	021  4 and $ (4 and Dollar Sign)
> +	022  5 and % (5 and Percent Sign)
> +	023  6 and ^ (6 and circumflex)
> +	024  7 and & (Seven and Ampersand)
> +	025  8 and * (Eight and asterisk)
> +	026  9 and ( (Nine and Parenthesis Left)
> +	027  0 and ) (Zero and Parenthesis Right)
> +	028  Return (Enter)
> +	029  Escape
> +	02a  Delete (Backspace)
> +	02b  Tab
> +	02c  Space Bar
> +	02d  - and _ (Minus and underscore)
> +	02e  = and + (Equal and Plus)
> +	02f  [ and { (Bracket and Braces Left)
> +	030  ] and } (Bracket and Braces Right)
> +	031  \ and | (Backslash and Bar)
> +	032  # and ~ (Hash and Tilde, Non-US Keyboard near right shift)
> +	033  ; and : (Semicolon and Colon)
> +	034  � and " (Accent Acute and Double Quotes)
> +	035  ` and ~ (Accent Grace and Tilde)
> +	036  , and < (Comma and Less)
> +	037  . and > (Period and Greater)
> +	038  / and ? (Slash and Question Mark)
> +	039  Caps Lock
> +	03a  F1
> +	03b  F2
> +	03c  F3
> +	03d  F4
> +	03e  F5
> +	03f  F6
> +	040  F7
> +	041  F8
> +	042  F9
> +	043  F10
> +	044  F11
> +	045  F12
> +	046  Print Screen
> +	047  Scroll Lock
> +	048  Pause
> +	049  Insert
> +	04a  Home
> +	04b  Page Up
> +	04c  Delete Forward (without Changing Position)
> +	04d  End
> +	04e  Page Down
> +	04f  Right Arrow
> +	050  Left Arrow
> +	051  Down Arrow
> +	052  Up Arrow
> +	053  Num Lock and Clear
> +	054  Keypad / (Division Sign)
> +	055  Keypad * (Multiplication Sign)
> +	056  Keypad - (Subtraction Sign)
> +	057  Keypad + (Addition Sign)
> +	058  Keypad Enter
> +	059  Keypad 1 and END
> +	05a  Keypad 2 and Down Arrow
> +	05b  Keypad 3 and Page Down
> +	05c  Keypad 4 and Left Arrow
> +	05d  Keypad 5 (Tactilei Raised)
> +	05f  Keypad 6 and Right Arrow
> +	060  Keypad 7 and Home
> +	061  Keypad 8 and Up Arrow
> +	062  Keypad 8 and Page Up
> +	063  Keypad . (decimal delimiter) and Delete
> +	064  \ and | (Backslash and Bar, UK and Non-US Keyboard near left shift)
> +	065  Keyboard Application (Windows Key for Win95 or Compose)
> +	066  Power (not a key)
> +	067  Keypad = (Equal Sign)
> +	068  F13
> +	069  F14
> +	06a  F15
> +	06b  F16
> +	06c  F17
> +	06d  F18
> +	06e  F19
> +	06f  F20
> +	070  F21
> +	071  F22
> +	072  F23
> +	073  F24
> +	074  Execute
> +	075  Help
> +	076  Menu
> +	077  Select
> +	078  Stop
> +	079  Again
> +	07a  Undo
> +	07b  Cut
> +	07c  Copy
> +	07d  Paste
> +	07e  Find
> +	07f  Mute
> +	080  Volume Up
> +	081  Volume Down
> +	082  Locking Caps Lock
> +	083  Locking Num Lock
> +	084  Locking Scroll Lock
> +	085  Keypad Comma
> +	086  Keypad Equal Sign (AS/400)
> +	087  International 1 (PC98)
> +	088  International 2 (PC98)
> +	089  International 3 (PC98)
> +	08a  International 4 (PC98)
> +	08b  International 5 (PC98)
> +	08c  International 6 (PC98)
> +	08d  International 7 (Toggle Single/Double Byte Mode)
> +	08e  International 8
> +	08f  International 9
> +	090  LANG 1 (Hangul/English Toggle, Korea)
> +	091  LANG 2 (Hanja Conversion, Korea)
> +	092  LANG 3 (Katakana, Japan)
> +	093  LANG 4 (Hiragana, Japan)
> +	094  LANG 5 (Zenkaku/Hankaku, Japan)
> +	095  LANG 6
> +	096  LANG 7
> +	097  LANG 8
> +	098  LANG 9
> +	099  Alternate Erase
> +	09a  SysReq/Attention
> +	09b  Cancel
> +	09c  Clear
> +	09d  Prior
> +	09e  Return
> +	09f  Separator
> +	0a0  Out
> +	0a1  Open
> +	0a2  Clear/Again
> +	0a3  CrSel/Props
> +	0a4  ExSel
> +	0e0  Control Left
> +	0e1  Shift Left
> +	0e2  Alt Left
> +	0e3  GUI Left
> +	0e4  Control Right
> +	0e5  Shift Right
> +	0e6  Alt Rigth
> +	0e7  GUI Right
> +HUT 08  LEDs
> +	000  Undefined
> +	001  NumLock
> +	002  CapsLock
> +	003  Scroll Lock
> +	004  Compose
> +	005  Kana
> +	006  Power
> +	007  Shift
> +	008  Do not disturb
> +	009  Mute
> +	00a  Tone Enabke
> +	00b  High Cut Filter
> +	00c  Low Cut Filter
> +	00d  Equalizer Enable
> +	00e  Sound Field ON
> +	00f  Surround On
> +	010  Repeat
> +	011  Stereo
> +	012  Sampling Rate Detect
> +	013  Spinning
> +	014  CAV
> +	015  CLV
> +	016  Recording Format Detect
> +	017  Off-Hook
> +	018  Ring
> +	019  Message Waiting
> +	01a  Data Mode
> +	01b  Battery Operation
> +	01c  Battery OK
> +	01d  Battery Low
> +	01e  Speaker
> +	01f  Head Set
> +	020  Hold
> +	021  Microphone
> +	022  Coverage
> +	023  Night Mode
> +	024  Send Calls
> +	025  Call Pickup
> +	026  Conference
> +	027  Stand-by
> +	028  Camera On
> +	029  Camera Off
> +	02a  On-Line
> +	02b  Off-Line
> +	02c  Busy
> +	02d  Ready
> +	02e  Paper-Out
> +	02f  Paper-Jam
> +	030  Remote
> +	031  Forward
> +	032  Reverse
> +	033  Stop
> +	034  Rewind
> +	035  Fast Forward
> +	036  Play
> +	037  Pause
> +	038  Record
> +	039  Error
> +	03a  Usage Selected Indicator
> +	03b  Usage In Use Indicator
> +	03c  Usage Multi Indicator
> +	03d  Indicator On
> +	03e  Indicator Flash
> +	03f  Indicator Slow Blink
> +	040  Indicator Fast Blink
> +	041  Indicator Off
> +	042  Flash On Time
> +	043  Slow Blink On Time
> +	044  Slow Blink Off Time
> +	045  Fast Blink On Time
> +	046  Fast Blink Off Time
> +	047  Usage Color Indicator
> +	048  Indicator Red
> +	049  Indicator Green
> +	04a  Indicator Amber
> +	04b  Generic Indicator
> +	04c  System Suspend
> +	04d  External Power Connected
> +HUT 09  Buttons
> +	000  No Button Pressed
> +	001  Button 1 (Primary)
> +	002  Button 2 (Secondary)
> +	003  Button 3 (Tertiary)
> +	004  Button 4
> +	005  Button 5
> +HUT 0a  Ordinal
> +	001  Instance 1
> +	002  Instance 2
> +	003  Instance 3
> +HUT 0b  Telephony
> +	000  Unassigned
> +	001  Phone
> +	002  Answering Machine
> +	003  Message Controls
> +	004  Handset
> +	005  Headset
> +	006  Telephony Key Pad
> +	007  Programmable Button
> +	020  Hook Switch
> +	021  Flash
> +	022  Feature
> +	023  Hold
> +	024  Redial
> +	025  Transfer
> +	026  Drop
> +	027  Park
> +	028  Forward Calls
> +	029  Alternate Function
> +	02a  Line
> +	02b  Speaker Phone
> +	02c  Conference
> +	02d  Ring Enable
> +	02e  Ring Select
> +	02f  Phone Mute
> +	030  Caller ID
> +	050  Speed Dial
> +	051  Store Number
> +	052  Recall Number
> +	053  Phone Directory
> +	070  Voice Mail
> +	071  Screen Calls
> +	072  Do Not Disturb
> +	073  Message
> +	074  Answer On/Offf
> +	090  Inside Dial Tone
> +	091  Outside Dial Tone
> +	092  Inside Ring Tone
> +	093  Outside Ring Tone
> +	094  Priority Ring Tone
> +	095  Inside Ringback
> +	096  Priority Ringback
> +	097  Line Busy Tone
> +	098  Recorder Tone
> +	099  Call Waiting Tone
> +	09a  Confirmation Tone 1
> +	09b  Confirmation Tone 2
> +	09c  Tones Off
> +	09d  Outside Ringback
> +	0b0  Key 1
> +	0b1  Key 2
> +	0b3  Key 3
> +	0b4  Key 4
> +	0b5  Key 5
> +	0b6  Key 6
> +	0b7  Key 7
> +	0b8  Key 8
> +	0b9  Key 9
> +	0ba  Key Star
> +	0bb  Key Pound
> +	0bc  Key A
> +	0bd  Key B
> +	0be  Key C
> +	0bf  Key D
> +HUT 0c  Consumer
> +	000  Unassigned
> +	001  Consumer Control
> +	002  Numeric Key Pad
> +	003  Programmable Buttons
> +	020  +10
> +	021  +100
> +	022  AM/PM
> +	030  Power
> +	031  Reset
> +	032  Sleep
> +	033  Sleep After
> +	034  Sleep Mode
> +	035  Illumination
> +	036  Function Buttons
> +	040  Menu
> +	041  Menu Pick
> +	042  Menu Up
> +	043  Menu Down
> +	044  Menu Left
> +	045  Menu Right
> +	046  Menu Escape
> +	047  Menu Value Increase
> +	048  Menu Value Decrease
> +	060  Data on Screen
> +	061  Closed Caption
> +	062  Closed Caption Select
> +	063  VCR/TV
> +	064  Broadcast Mode
> +	065  Snapshot
> +	066  Still
> +	080  Selection
> +	081  Assign Selection
> +	082  Mode Step
> +	083  Recall Last
> +	084  Enter Channel
> +	085  Order Movie
> +	086  Channel
> +	087  Media Selection
> +	088  Media Select Computer
> +	089  Media Select TV
> +	08a  Media Select WWW
> +	08b  Media Select DVD
> +	08c  Media Select Telephone
> +	08d  Media Select Program Guide
> +	08e  Media Select Video Phone
> +	08f  Media Select Games
> +	090  Media Select Messages
> +	091  Media Select CD
> +	092  Media Select VCR
> +	093  Media Select Tuner
> +	094  Quit
> +	095  Help
> +	096  Media Select Tape
> +	097  Media Select Cable
> +	098  Media Select Satellite
> +	099  Media Select Security
> +	09a  Media Select Home
> +	09b  Media Select Call
> +	09c  Channel Increment
> +	09d  Channel Decrement
> +	09e  Media Select SAP
> +	0a0  VCR Plus
> +	0a1  Once
> +	0a2  Daily
> +	0a3  Weekly
> +	0a4  Monthly
> +	0b0  Play
> +	0b1  Pause
> +	0b2  Record
> +	0b3  Fast Forward
> +	0b4  Rewind
> +	0b5  Scan Next Track
> +	0b6  Scan Previous Track
> +	0b7  Stop
> +	0b8  Eject
> +	0b9  Random Play
> +	0ba  Select Disc
> +	0bb  Enter Disc
> +	0bc  Repeat
> +	0bd  Tracking
> +	0be  Track Normal
> +	0bf  Slow Tracking
> +	0c0  Frame Forward
> +	0c1  Frame Back
> +	0c2  Mark
> +	0c3  Clear Mark
> +	0c4  Repeat from Mark
> +	0c5  Return to Mark
> +	0c6  Search Mark Forward
> +	0c7  Search Mark Backward
> +	0c8  Counter Reset
> +	0c9  Show Counter
> +	0ca  Tracking Increment
> +	0cb  Tracking Decrement
> +	0cc  Stop/Eject
> +	0cd  Play/Pause
> +	0ce  Play/Skip
> +	0e0  Volume
> +	0e1  Balance
> +	0e2  Mute
> +	0e3  Bass
> +	0e4  Treble
> +	0e5  Bass Boost
> +	0e6  Surround Mode
> +	0e7  Loudness
> +	0e8  MPX
> +	0e9  Volume Increment
> +	0ea  Volume Decrement
> +	0f0  Speed Select
> +	0f1  Playback Speed
> +	0f2  Standard Play
> +	0f3  Long Play
> +	0f4  Extended Play
> +	0f5  Slow
> +	100  Fan Enable
> +	101  Fan Speed
> +	102  Light Enable
> +	103  Light Illumination Level
> +	104  Climate Control Enable
> +	105  Room Temperature
> +	106  Security Enable
> +	107  Fire Alarm
> +	108  Police Alarm
> +	150  Balance Right
> +	151  Balance Left
> +	152  Bass Increment
> +	153  Bass Decrement
> +	154  Treble Increment
> +	155  Treble Decrement
> +	160  Speaker System
> +	161  Channel Left
> +	162  Channel Right
> +	163  Channel Center
> +	164  Channel Front
> +	165  Channel Center Front
> +	166  Channel Side
> +	167  Channel Surround
> +	168  Channel Low Frequency Enhancement
> +	169  Channel Top
> +	16a  Channel Unknown
> +	170  Sub-Channel
> +	171  Sub-Channel Increment
> +	172  Sub-Channel Decrement
> +	173  Alternative Audio Increment
> +	174  Alternative Audio Decrement
> +	180  Application Launch Buttons
> +	181  AL Launch Button Configuration Tool
> +	182  AL Launch Button Configuration
> +	183  AL Consumer Control Configuration
> +	184  AL Word Processor
> +	185  AL Text Editor
> +	186  AL Spreadsheet
> +	187  AL Graphics Editor
> +	188  AL Presentation App
> +	189  AL Database App
> +	18a  AL Email Reader
> +	18b  AL Newsreader
> +	18c  AL Voicemail
> +	18d  AL Contacts/Address Book
> +	18e  AL Calendar/Schedule
> +	18f  AL Task/Project Manager
> +	190  AL Log/Jounal/Timecard
> +	191  AL Checkbook/Finance
> +	192  AL Calculator
> +	193  AL A/V Capture/Playback
> +	194  AL Local Machine Browser
> +	195  AL LAN/Wan Browser
> +	196  AL Internet Browser
> +	197  AL Remote Networking/ISP Connect
> +	198  AL Network Conference
> +	199  AL Network Chat
> +	19a  AL Telephony/Dialer
> +	19b  AL Logon
> +	19c  AL Logoff
> +	19d  AL Logon/Logoff
> +	19e  AL Terminal Local/Screensaver
> +	19f  AL Control Panel
> +	1a0  AL Command Line Processor/Run
> +	1a1  AL Process/Task Manager
> +	1a2  AL Select Task/Application
> +	1a3  AL Next Task/Application
> +	1a4  AL Previous Task/Application
> +	1a5  AL Preemptive Halt Task/Application
> +	200  Generic GUI Application Controls
> +	201  AC New
> +	202  AC Open
> +	203  AC CLose
> +	204  AC Exit
> +	205  AC Maximize
> +	206  AC Minimize
> +	207  AC Save
> +	208  AC Print
> +	209  AC Properties
> +	21a  AC Undo
> +	21b  AC Copy
> +	21c  AC Cut
> +	21d  AC Paste
> +	21e  AC Select All
> +	21f  AC Find
> +	220  AC Find and Replace
> +	221  AC Search
> +	222  AC Go To
> +	223  AC Home
> +	224  AC Back
> +	225  AC Forward
> +	226  AC Stop
> +	227  AC Refresh
> +	228  AC Previous Link
> +	229  AC Next Link
> +	22b  AC History
> +	22c  AC Subscriptions
> +	22d  AC Zoom In
> +	22e  AC Zoom Out
> +	22f  AC Zoom
> +	230  AC Full Screen View
> +	231  AC Normal View
> +	232  AC View Toggle
> +	233  AC Scroll Up
> +	234  AC Scroll Down
> +	235  AC Scroll
> +	236  AC Pan Left
> +	237  AC Pan Right
> +	238  AC Pan
> +	239  AC New Window
> +	23a  AC Tile Horizontally
> +	23b  AC Tile Vertically
> +	23c  AC Format
> +HUT 0d  Digitizer
> +	000  Undefined
> +	001  Digitizer
> +	002  Pen
> +	003  Light Pen
> +	004  Touch Screen
> +	005  Touch Pad
> +	006  White Board
> +	007  Coordinate Measuring Machine
> +	008  3D Digitizer
> +	009  Stereo Plotter
> +	00a  Articulated Arm
> +	00b  Armature
> +	00c  Multiple Point Digitizer
> +	00d  Free Space Wand
> +	020  Stylus
> +	021  Puck
> +	022  Finger
> +	030  Tip Pressure
> +	031  Barrel Pressure
> +	032  In Range
> +	033  Touch
> +	034  Untouch
> +	035  Tap
> +	036  Quality
> +	037  Data Valid
> +	038  Transducer Index
> +	039  Tablet Function Keys
> +	03a  Program Change Keys
> +	03b  Battery Strength
> +	03c  Invert
> +	03d  X Tilt
> +	03e  Y Tilt
> +	03f  Azimuth
> +	040  Altitude
> +	041  Twist
> +	042  Tip Switch
> +	043  Secondary Tip Switch
> +	044  Barrel Switch
> +	045  Eraser
> +	046  Tablet Pick
> +	047  Confidence
> +	048  Width
> +	049  Height
> +	051  Contact ID
> +	052  Input Mode
> +	053  Device Index
> +	054  Contact Count
> +	055  Maximum Contact Number
> +HUT 0f  PID Page
> +	000  Undefined
> +	001  Physical Interface Device
> +	020  Normal
> +	021  Set Effect Report
> +	022  Effect Block Index
> +	023  Parameter Block Offset
> +	024  ROM Flag
> +	025  Effect Type
> +	026  ET Constant Force
> +	027  ET Ramp
> +	028  ET Custom Force Data
> +	030  ET Square
> +	031  ET Sine
> +	032  ET Triangle
> +	033  ET Sawtooth Up
> +	034  ET Sawtooth Down
> +	040  ET Spring
> +	041  ET Damper
> +	042  ET Inertia
> +	043  ET Friction
> +	050  Duration
> +	051  Sample Period
> +	052  Gain
> +	053  Trigger Button
> +	054  Trigger Repeat Interval
> +	055  Axes Enable
> +	056  Direction Enable
> +	057  Direction
> +	058  Type Specific Block Offset
> +	059  Block Type
> +	05A  Set Envelope Report
> +	05B  Attack Level
> +	05C  Attack Time
> +	05D  Fade Level
> +	05E  Fade Time
> +	05F  Set Condition Report
> +	060  CP Offset
> +	061  Positive Coefficient
> +	062  Negative Coefficient
> +	063  Positive Saturation
> +	064  Negative Saturation
> +	065  Dead Band
> +	066  Download Force Sample
> +	067  Isoch Custom Force Enable
> +	068  Custom Force Data Report
> +	069  Custom Force Data
> +	06A  Custom Force Vendor Defined Data
> +	06B  Set Custom Force Report
> +	06C  Custom Force Data Offset
> +	06D  Sample Count
> +	06E  Set Periodic Report
> +	06F  Offset
> +	070  Magnitude
> +	071  Phase
> +	072  Period
> +	073  Set Constant Force Report
> +	074  Set Ramp Force Report
> +	075  Ramp Start
> +	076  Ramp End
> +	077  Effect Operation Report
> +	078  Effect Operation
> +	079  Op Effect Start
> +	07A  Op Effect Start Solo
> +	07B  Op Effect Stop
> +	07C  Loop Count
> +	07D  Device Gain Report
> +	07E  Device Gain
> +	07F  PID Pool Report
> +	080  RAM Pool Size
> +	081  ROM Pool Size
> +	082  ROM Effect Block Count
> +	083  Simultaneous Effects Max
> +	084  Pool Alignment
> +	085  PID Pool Move Report
> +	086  Move Source
> +	087  Move Destination
> +	088  Move Length
> +	089  PID Block Load Report
> +	08B  Block Load Status
> +	08C  Block Load Success
> +	08D  Block Load Full
> +	08E  Block Load Error
> +	08F  Block Handle
> +	090  PID Block Free Report
> +	091  Type Specific Block Handle
> +	092  PID State Report
> +	094  Effect Playing
> +	095  PID Device Control Report
> +	096  PID Device Control
> +	097  DC Enable Actuators
> +	098  DC Disable Actuators
> +	099  DC Stop All Effects
> +	09A  DC Device Reset
> +	09B  DC Device Pause
> +	09C  DC Device Continue
> +	09F  Device Paused
> +	0A0  Actuators Enabled
> +	0A4  Safety Switch
> +	0A5  Actuator Override Switch
> +	0A6  Actuator Power
> +	0A7  Start Delay
> +	0A8  Parameter Block Size
> +	0A9  Device Managed Pool
> +	0AA  Shared Parameter Blocks
> +	0AB  Create New Effect Report
> +	0AC  RAM Pool Available
> +HUT 10  Unicode
> +HUT 14  Alphanumeric Display
> +	000  Undefined
> +	001  Alphanumeric Display
> +	020  Display Attributes Report
> +	021  ASCII Character Set
> +	022  Data Read Back
> +	023  Font Read Back
> +	024  Display Control Report
> +	025  Clear Display
> +	026  Display Enable
> +	027  Screen Saver Delay
> +	028  Screen Saver Enable
> +	029  Vertical Scroll
> +	02a  Horizontal Scroll
> +	02b  Character Report
> +	02c  Display Data
> +	02d  Display Status
> +	02e  Stat Not Ready
> +	02f  Stat Ready
> +	030  Err Not a loadable Character
> +	031  Err Font Data Cannot Be Read
> +	032  Cursur Position Report
> +	033  Row
> +	034  Column
> +	035  Rows
> +	036  Columns
> +	037  Cursor Pixel Positioning
> +	038  Cursor Mode
> +	039  Cursor Enable
> +	03a  Cursor Blink
> +	03b  Font Report
> +	03c  Font Data
> +	03d  Character Width
> +	03e  Character Height
> +	03f  Character Spacing Horizontal
> +	040  Character Spacing Vertical
> +	041  Unicode Character Set
> +HUT 80  USB Monitor
> +	001  Monitor Control
> +	002  EDID Information
> +	003  VDIF Information
> +	004  VESA Version
> +HUT 81  USB Monitor Enumerated Values
> +HUT 82  Monitor VESA Virtual Controls
> +	001  Degauss
> +	010  Brightness
> +	012  Contrast
> +	016  Red Video Gain
> +	018  Green Video Gain
> +	01a  Blue Video Gain
> +	01c  Focus
> +	020  Horizontal Position
> +	022  Horizontal Size
> +	024  Horizontal Pincushion
> +	026  Horizontal Pincushion Balance
> +	028  Horizontal Misconvergence
> +	02a  Horizontal Linearity
> +	02c  Horizontal Linearity Balance
> +	030  Vertical Position
> +	032  Vertical Size
> +	034  Vertical Pincushion
> +	036  Vertical Pincushion Balance
> +	038  Vertical Misconvergence
> +	03a  Vertical Linearity
> +	03c  Vertical Linearity Balance
> +	040  Parallelogram Balance (Key Distortion)
> +	042  Trapezoidal Distortion (Key)
> +	044  Tilt (Rotation)
> +	046  Top Corner Distortion Control
> +	048  Top Corner Distortion Balance
> +	04a  Bottom Corner Distortion Control
> +	04c  Bottom Corner Distortion Balance
> +	056  Horizontal Moire
> +	058  Vertical Moire
> +	05e  Input Level Select
> +	060  Input Source Select
> +	06c  Red Video Black Level
> +	06e  Green Video Black Level
> +	070  Blue Video Black Level
> +	0a2  Auto Size Center
> +	0a4  Polarity Horizontal Sychronization
> +	0a6  Polarity Vertical Synchronization
> +	0aa  Screen Orientation
> +	0ac  Horizontal Frequency in Hz
> +	0ae  Vertical Frequency in 0.1 Hz
> +	0b0  Settings
> +	0ca  On Screen Display (OSD)
> +	0d4  Stereo Mode
> +HUT 84  Power Device Page
> +	000  Undefined
> +	001  iName
> +	002  Present Status
> +	003  Changed Status
> +	004  UPS
> +	005  Power Supply
> +	010  Battery System
> +	011  Battery System ID
> +	012  Battery
> +	013  Battery ID
> +	014  Charger
> +	015  Charger ID
> +	016  Power Converter
> +	017  Power Converter ID
> +	018  Outlet System
> +	019  Outlet System ID
> +	01a  Input
> +	01b  Input ID
> +	01c  Output
> +	01d  Output ID
> +	01e  Flow
> +	01f  Flow ID
> +	020  Outlet
> +	021  Outlet ID
> +	022  Gang
> +	023  Gang ID
> +	024  Power Summary
> +	025  Power Summary ID
> +	030  Voltage
> +	031  Current
> +	032  Frequency
> +	033  Apparent Power
> +	034  Active Power
> +	035  Percent Load
> +	036  Temperature
> +	037  Humidity
> +	038  Bad Count
> +	040  Config Voltage
> +	041  Config Current
> +	042  Config Frequency
> +	043  Config Apparent Power
> +	044  Config Active Power
> +	045  Config Percent Load
> +	046  Config Temperature
> +	047  Config Humidity
> +	050  Switch On Control
> +	051  Switch Off Control
> +	052  Toggle Control
> +	053  Low Voltage Transfer
> +	054  High Voltage Transfer
> +	055  Delay Before Reboot
> +	056  Delay Before Startup
> +	057  Delay Before Shutdown
> +	058  Test
> +	059  Module Reset
> +	05a  Audible Alarm Control
> +	060  Present
> +	061  Good
> +	062  Internal Failure
> +	063  Voltage out of range
> +	064  Frequency out of range
> +	065  Overload
> +	066  Over Charged
> +	067  Over Temperature
> +	068  Shutdown Requested
> +	069  Shutdown  Imminent
> +	06a  Reserved
> +	06b  Switch On/Off
> +	06c  Switchable
> +	06d  Used
> +	06e  Boost
> +	06f  Buck
> +	070  Initialized
> +	071  Tested
> +	072  Awaiting Power
> +	073  Communication Lost
> +	0fd  iManufacturer
> +	0fe  iProduct
> +	0ff  iSerialNumber
> +HUT 85  Battery System Page
> +	000  Undefined
> +	001  SMB Battery Mode
> +	002  SMB Battery Status
> +	003  SMB Alarm Warning
> +	004  SMB Charger Mode
> +	005  SMB Charger Status
> +	006  SMB Charger Spec Info
> +	007  SMB Selector State
> +	008  SMB Selector Presets
> +	009  SMB Selector Info
> +	010  Optional Mfg. Function 1
> +	011  Optional Mfg. Function 2
> +	012  Optional Mfg. Function 3
> +	013  Optional Mfg. Function 4
> +	014  Optional Mfg. Function 5
> +	015  Connection to SMBus
> +	016  Output Connection
> +	017  Charger Connection
> +	018  Battery Insertion
> +	019  Use Next
> +	01a  OK to use
> +	01b  Battery  Supported
> +	01c  SelectorRevision
> +	01d  Charging Indicator
> +	028  Manufacturer Access
> +	029  Remaining Capacity Limit
> +	02a  Remaining Time Limit
> +	02b  At Rate
> +	02c  Capacity Mode
> +	02d  Broadcast To Charger
> +	02e  Primary Battery
> +	02f  Charge Controller
> +	040  Terminate Charge
> +	041  Terminate Discharge
> +	042  Below Remaining Capacity Limit
> +	043  Remaining Time Limit Expired
> +	044  Charging
> +	045  Discharging
> +	046  Fully Charged
> +	047  Fully Discharged
> +	048  Conditioning Flag
> +	049  At Rate OK
> +	04a  SMB Error Code
> +	04b  Need Replacement
> +	060  At Rate Time To Full
> +	061  At Rate Time To Empty
> +	062  Average Current
> +	063  Max Error
> +	064  Relative State Of Charge
> +	065  Absolute State Of Charge
> +	066  Remaining Capacity
> +	067  Full Charge Capacity
> +	068  Run Time To Empty
> +	069  Average Time To Empty
> +	06a  Average Time To Full
> +	06b  Cycle Count
> +	080  Batt. Pack Model Level
> +	081  Internal Charge Controller
> +	082  Primary Battery Support
> +	083  Design Capacity
> +	084  Specification Info
> +	085  Manufacturer Date
> +	086  Serial Number
> +	087  iManufacturerName
> +	088  iDeviceName
> +	089  iDeviceChemistry
> +	08a  Manufacturer Data
> +	08b  Rechargeable
> +	08c  Warning Capacity Limit
> +	08d  Capacity Granularity 1
> +	08e  Capacity Granularity 2
> +	08f  iOEMInformation
> +	0c0  Inhibit Charge
> +	0c1  Enable Polling
> +	0c2  Reset To Zero
> +	0d0  AC Present
> +	0d1  Battery Present
> +	0d2  Power Fail
> +	0d3  Alarm Inhibited
> +	0d4  Thermistor Under Range
> +	0d5  Thermistor Hot
> +	0d6  Thermistor Cold
> +	0d7  Thermistor Over Range
> +	0d8  Voltage Out Of Range
> +	0d9  Current Out Of Range
> +	0da  Current Not Regulated
> +	0db  Voltage Not Regulated
> +	0dc  Master Mode
> +	0f0  Charger Selector Support
> +	0f1  Charger Spec
> +	0f2  Level 2
> +	0f3  Level 3
> +HUT 86  Power Pages
> +HUT 87  Power Pages
> +HUT 8c  Bar Code Scanner Page (POS)
> +HUT 8d  Scale Page (POS)
> +HUT 90  Camera Control Page
> +HUT 91  Arcade Control Page
> +HUT f0  Cash Device
> +	0f1  Cash Drawer
> +	0f2  Cash Drawer Number
> +	0f3  Cash Drawer Set
> +	0f4  Cash Drawer Status
> +HUT ff  Vendor Specific
> +
> +# List of Languages
> +
> +# Syntax:
> +# L language_id  language_name
> +#	dialect_id  dialect_name
> +
> +L 0001  Arabic
> +	01  Saudi Arabia
> +	02  Iraq
> +	03  Egypt
> +	04  Libya
> +	05  Algeria
> +	06  Morocco
> +	07  Tunesia
> +	08  Oman
> +	09  Yemen
> +	0a  Syria
> +	0b  Jordan
> +	0c  Lebanon
> +	0d  Kuwait
> +	0e  U.A.E
> +	0f  Bahrain
> +	10  Qatar
> +L 0002  Bulgarian
> +L 0003  Catalan
> +L 0004  Chinese
> +	01  Traditional
> +	02  Simplified
> +	03  Hongkong SAR, PRC
> +	04  Singapore
> +	05  Macau SAR
> +L 0005  Czech
> +L 0006  Danish
> +L 0007  German
> +	01  German
> +	02  Swiss
> +	03  Austrian
> +	04  Luxembourg
> +	05  Liechtenstein
> +L 0008  Greek
> +L 0009  English
> +	01  US
> +	02  UK
> +	03  Australian
> +	04  Canadian
> +	05  New Zealand
> +	06  Ireland
> +	07  South Africa
> +	08  Jamaica
> +	09  Carribean
> +	0a  Belize
> +	0b  Trinidad
> +	0c  Zimbabwe
> +	0d  Philippines
> +L 000a  Spanish
> +	01  Castilian
> +	02  Mexican
> +	03  Modern
> +	04  Guatemala
> +	05  Costa Rica
> +	06  Panama
> +	07  Dominican Republic
> +	08  Venzuela
> +	09  Colombia
> +	0a  Peru
> +	0b  Argentina
> +	0c  Ecuador
> +	0d  Chile
> +	0e  Uruguay
> +	0f  Paraguay
> +	10  Bolivia
> +	11  El Salvador
> +	12  Honduras
> +	13  Nicaragua
> +	14  Puerto Rico
> +L 000b  Finnish
> +L 000c  French
> +	01  French
> +	02  Belgian
> +	03  Canadian
> +	04  Swiss
> +	05  Luxembourg
> +	06  Monaco
> +L 000d  Hebrew
> +L 000e  Hungarian
> +L 000f  Idelandic
> +L 0010  Italian
> +	01  Italian
> +	02  Swiss
> +L 0011  Japanese
> +L 0012  Korean
> +	01  Korean
> +L 0013  Dutch
> +	01  Dutch
> +	02  Belgian
> +L 0014  Norwegian
> +	01  Bokmal
> +	02  Nynorsk
> +L 0015  Polish
> +L 0016  Portuguese
> +	01  Portuguese
> +	02  Brazilian
> +L 0017  forgotten
> +L 0018  Romanian
> +L 0019  Russian
> +L 001a  Serbian
> +	01  Croatian
> +	02  Latin
> +	03  Cyrillic
> +L 001b  Slovak
> +L 001c  Albanian
> +L 001d  Swedish
> +	01  Swedish
> +	02  Finland
> +L 001e  Thai
> +L 001f  Turkish
> +L 0020  Urdu
> +	01  Pakistan
> +	02  India
> +L 0021  Indonesian
> +L 0022  Ukrainian
> +L 0023  Belarusian
> +L 0024  Slovenian
> +L 0025  Estonian
> +L 0026  Latvian
> +L 0027  Lithuanian
> +	01  Lithuanian
> +L 0028  forgotten
> +L 0029  Farsi
> +L 002a  Vietnamese
> +L 002b  Armenian
> +L 002c  Azeri
> +	01  Cyrillic
> +	02  Latin
> +L 002d  Basque
> +L 002e  forgotten
> +L 002f  Macedonian
> +L 0036  Afrikaans
> +L 0037  Georgian
> +L 0038  Faeroese
> +L 0039  Hindi
> +L 003e  Malay
> +	01  Malaysia
> +	02  Brunei Darassalam
> +L 003f  Kazak
> +L 0041  Awahili
> +L 0043  Uzbek
> +	01  Latin
> +	02  Cyrillic
> +L 0044  Tatar
> +L 0045  Bengali
> +L 0046  Punjabi
> +L 0047  Gujarati
> +L 0048  Oriya
> +L 0049  Tamil
> +L 004a  Telugu
> +L 004b  Kannada
> +L 004c  Malayalam
> +L 004d  Assamese
> +L 004e  Marathi
> +L 004f  Sanskrit
> +L 0057  Konkani
> +L 0058  Manipuri
> +L 0059  Sindhi
> +L 0060  Kashmiri
> +	02  India
> +L 0061  Nepali
> +	02  India
> +
> +# HID Descriptor bCountryCode
> +# HID Specification 1.11 (2001-06-27) page 23
> +#
> +# Syntax:
> +# HCC country_code keymap_type
> +
> +HCC 00  Not supported
> +HCC 01  Arabic
> +HCC 02  Belgian
> +HCC 03  Canadian-Bilingual
> +HCC 04  Canadian-French
> +HCC 05  Czech Republic
> +HCC 06  Danish
> +HCC 07  Finnish
> +HCC 08  French
> +HCC 09  German
> +HCC 10  Greek
> +HCC 11  Hebrew
> +HCC 12  Hungary
> +HCC 13  International (ISO)
> +HCC 14  Italian
> +HCC 15  Japan (Katakana)
> +HCC 16  Korean
> +HCC 17  Latin American
> +HCC 18  Netherlands/Dutch
> +HCC 19  Norwegian
> +HCC 20  Persian (Farsi)
> +HCC 21  Poland
> +HCC 22  Portuguese
> +HCC 23  Russia
> +HCC 24  Slovakia
> +HCC 25  Spanish
> +HCC 26  Swedish
> +HCC 27  Swiss/French
> +HCC 28  Swiss/German
> +HCC 29  Switzerland
> +HCC 30  Taiwan
> +HCC 31  Turkish-Q
> +HCC 32  UK
> +HCC 33  US
> +HCC 34  Yugoslavia
> +HCC 35  Turkish-F
> +
> +# List of Video Class Terminal Types
> +
> +# Syntax:
> +# VT terminal_type  terminal_type_name
> +
> +VT 0100  USB Vendor Specific
> +VT 0101  USB Streaming
> +VT 0200  Input Vendor Specific
> +VT 0201  Camera Sensor
> +VT 0202  Sequential Media
> +VT 0300  Output Vendor Specific
> +VT 0301  Generic Display
> +VT 0302  Sequential Media
> +VT 0400  External Vendor Specific
> +VT 0401  Composite Video
> +VT 0402  S-Video
> +VT 0403  Component Video
> diff --git a/rules/usbutils.in b/rules/usbutils.in
> index f259f9c4e..b92be8b39 100644
> --- a/rules/usbutils.in
> +++ b/rules/usbutils.in
> @@ -2,6 +2,8 @@
>  
>  menuconfig USBUTILS
>  	select LIBUSB
> +	select UDEV
> +	select UDEV_LIBUDEV
>  	tristate
>  	prompt "usbutils                      "
>  	help
> diff --git a/rules/usbutils.make b/rules/usbutils.make
> index 80af5a2bb..61c552d7c 100644
> --- a/rules/usbutils.make
> +++ b/rules/usbutils.make
> @@ -15,8 +15,8 @@ PACKAGES-$(PTXCONF_USBUTILS) += usbutils
>  #
>  # Paths and names
>  #
> -USBUTILS_VERSION	:= 007
> -USBUTILS_MD5		:= c9df5107ae9d26b10a1736a261250139
> +USBUTILS_VERSION	:= 014
> +USBUTILS_MD5		:= f21aa68ee7870b161921a590be7765e6
>  USBUTILS		:= usbutils-$(USBUTILS_VERSION)
>  USBUTILS_SUFFIX		:= tar.xz
>  USBUTILS_URL		:= $(call ptx/mirror, KERNEL, utils/usb/usbutils/$(USBUTILS).$(USBUTILS_SUFFIX))
> @@ -36,9 +36,7 @@ USBUTILS_ENV 	:= $(CROSS_ENV)
>  #
>  USBUTILS_AUTOCONF := \
>  	$(CROSS_AUTOCONF_USR) \
> -	$(GLOBAL_LARGE_FILE_OPTION) \
> -	--disable-zlib \
> -	--enable-usbids
> +	$(GLOBAL_LARGE_FILE_OPTION)
>  
>  # ----------------------------------------------------------------------------
>  # Target-Install
> @@ -62,7 +60,7 @@ endif
>  ifdef PTXCONF_USBUTILS_USBDEVICES
>  	@$(call install_copy, usbutils, 0, 0, 0755, -, /usr/bin/usb-devices)
>  endif
> -	@$(call install_copy, usbutils, 0, 0, 0644, -, /usr/share/usb.ids,n)
> +	@$(call install_alternative, usbutils, 0, 0, 0644, /usr/share/usb.ids,n)
>  
>  	@$(call install_finish, usbutils)
>  
> -- 
> 2.30.2
> 
> 
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
> To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [PATCH] libcap: Version bump 2.51 -> 2.62.
  2022-01-05 12:32     ` Christian Melki
@ 2022-01-05 12:46       ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-05 12:46 UTC (permalink / raw)
  To: Christian Melki; +Cc: ptxdist

On Wed, Jan 05, 2022 at 01:32:11PM +0100, Christian Melki wrote:
> https://git.kernel.org/pub/scm/libs/libcap/libcap.git/tree/Make.Rules?h=v1.2.62&id=cc91f55960ce81e7cc24ef0bf729bdf02e2f60e1#n100
> 
> Maybe I misunderstood the rationale behind it.
> Anyway, that comment led to the change for the new version.

Right, so the change is correct for host-libcap. But it should be part of
the version bump. For me, the patch came before the version bump patch, so
I looked at the old code...
So, squash the two patches but remove the USE_GPERF=no from the target
package.

Michael

> Regards,
> Christian
> 
> On 1/5/22 1:21 PM, Michael Olbrich wrote:
> > On Wed, Dec 22, 2021 at 02:02:52PM +0100, Christian Melki wrote:
> > > Update posix capability library.
> > > 
> > > Signed-off-by: Christian Melki <christian.melki@t2data.com>
> > > ---
> > >   rules/libcap.make | 5 +++--
> > >   1 file changed, 3 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/rules/libcap.make b/rules/libcap.make
> > > index 5ed11b1f3..3159f7b01 100644
> > > --- a/rules/libcap.make
> > > +++ b/rules/libcap.make
> > > @@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_LIBCAP) += libcap
> > >   #
> > >   # Paths and names
> > >   #
> > > -LIBCAP_VERSION	:= 2.51
> > > -LIBCAP_MD5	:= 4c9febc1bf0afca6a4d9f86fcdb6d900
> > > +LIBCAP_VERSION	:= 2.62
> > > +LIBCAP_MD5	:= 342c7560ed2103899f6914d1de75a89f
> > >   LIBCAP		:= libcap-$(LIBCAP_VERSION)
> > >   LIBCAP_SUFFIX	:= tar.xz
> > >   LIBCAP_URL	:= \
> > > @@ -35,6 +35,7 @@ LIBCAP_MAKE_OPT	:= \
> > >   	BUILD_CC=$(HOSTCC) \
> > >   	DYNAMIC=yes \
> > >   	GOLANG=no \
> > > +	USE_GPERF=no \
> > 
> > Ah, maybe the USE_GPERF is from the new version? (See my question about
> > host-libcap).
> > 
> > For the target package, we select HOST_GPERF, so it should be used here.
> > If I remember this correctly then libcap performs better at runtime if
> > gperf is available at build-time. So we want it for the target package, but
> > we don't care about the host package.
> > 
> > Michael
> > 
> > >   	LIBATTR=$(call ptx/yesno, PTXCONF_LIBCAP_SETCAP) \
> > >   	PAM_CAP=$(call ptx/yesno, PTXCONF_GLOBAL_PAM)
> > > -- 
> > > 2.30.2
> > > 
> > > 
> > > _______________________________________________
> > > ptxdist mailing list
> > > ptxdist@pengutronix.de
> > > To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
> > > 
> > 
> 
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
> To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [PATCH] strace: Version bump 5.9 -> 5.15
  2021-12-22 13:03 ` [ptxdist] [PATCH] strace: Version bump 5.9 -> 5.15 Christian Melki
@ 2022-01-05 12:53   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-05 12:53 UTC (permalink / raw)
  To: Christian Melki; +Cc: ptxdist

On Wed, Dec 22, 2021 at 02:03:00PM +0100, Christian Melki wrote:
> Maintenance.

The license file changed. Please check if the license changed and update
accordingly. And add a comment in the commit message here.

Michael

> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> ---
>  rules/strace.make | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/rules/strace.make b/rules/strace.make
> index 6c15f1baa..2b06e6cb6 100644
> --- a/rules/strace.make
> +++ b/rules/strace.make
> @@ -16,8 +16,8 @@ PACKAGES-$(PTXCONF_STRACE) += strace
>  #
>  # Paths and names
>  #
> -STRACE_VERSION	:= 5.9
> -STRACE_MD5	:= fef7264b3501c6af86224c685751d0c6
> +STRACE_VERSION	:= 5.15
> +STRACE_MD5	:= a627c23fda3ecd668d6161c288fdcd79
>  STRACE		:= strace-$(STRACE_VERSION)
>  STRACE_SUFFIX	:= tar.xz
>  STRACE_URL	:= https://strace.io/files/$(STRACE_VERSION)/$(STRACE).$(STRACE_SUFFIX)
> -- 
> 2.30.2
> 
> 
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
> To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12).
  2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
                   ` (21 preceding siblings ...)
  2021-12-22 13:03 ` [ptxdist] [PATCH] zstd: Version bump 1.5.0 -> 1.5.1 Christian Melki
@ 2022-01-05 13:00 ` Michael Olbrich
  22 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-05 13:00 UTC (permalink / raw)
  To: Christian Melki; +Cc: ptxdist

On Wed, Dec 22, 2021 at 02:02:42PM +0100, Christian Melki wrote:
> Upgrade bash to 5.1.8 plus patches to patchlevel 12.
> Roll up patches as in previous series.
> 
> Fixes CVE-2019-18276 and CVE-2019-9924 with a new baseline, without patches.
> Fixes loads of bugs in bash.

License file changed. Please check & update.

"ptxdist licensecheck <package>" is your friend :-).

Michael

> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> ---
>  .../bash-4.3.30/0001-Bash-4.3-patch-31.patch  | 5467 -----------------
>  .../bash-4.3.30/0002-Bash-4.3-patch-32.patch  | 5409 ----------------
>  .../bash-4.3.30/0003-Bash-4.3-patch-33.patch  |  204 -
>  patches/bash-4.3.30/series                    |    6 -
>  .../bash-5.1.8/0001-Bash-5.1-patch-12.patch   |  262 +
>  patches/bash-5.1.8/series                     |    1 +
>  rules/bash.make                               |    4 +-
>  7 files changed, 265 insertions(+), 11088 deletions(-)
>  delete mode 100644 patches/bash-4.3.30/0001-Bash-4.3-patch-31.patch
>  delete mode 100644 patches/bash-4.3.30/0002-Bash-4.3-patch-32.patch
>  delete mode 100644 patches/bash-4.3.30/0003-Bash-4.3-patch-33.patch
>  delete mode 100644 patches/bash-4.3.30/series
>  create mode 100644 patches/bash-5.1.8/0001-Bash-5.1-patch-12.patch
>  create mode 100644 patches/bash-5.1.8/series
> 
> diff --git a/patches/bash-4.3.30/0001-Bash-4.3-patch-31.patch b/patches/bash-4.3.30/0001-Bash-4.3-patch-31.patch
> deleted file mode 100644
> index d9a187dcb..000000000
> --- a/patches/bash-4.3.30/0001-Bash-4.3-patch-31.patch
> +++ /dev/null
> @@ -1,5467 +0,0 @@
> -From: Chet Ramey <chet.ramey@case.edu>
> -Date: Thu, 15 Jan 2015 10:20:04 -0500
> -Subject: [PATCH] Bash-4.3 patch 31
> -
> ----
> - patchlevel.h     |    2 +-
> - subst.h          |    1 +
> - variables.c      |   32 +-
> - variables.c.orig | 5365 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
> - 4 files changed, 5397 insertions(+), 3 deletions(-)
> - create mode 100644 variables.c.orig
> -
> -diff --git a/patchlevel.h b/patchlevel.h
> -index e5dde5245275..0ad46aafbdd9 100644
> ---- a/patchlevel.h
> -+++ b/patchlevel.h
> -@@ -25,6 +25,6 @@
> -    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
> -    looks for to find the patch level (for the sccs version string). */
> - 
> --#define PATCHLEVEL 30
> -+#define PATCHLEVEL 31
> - 
> - #endif /* _PATCHLEVEL_H_ */
> -diff --git a/subst.h b/subst.h
> -index cedaf8b6b444..1c300ab96b04 100644
> ---- a/subst.h
> -+++ b/subst.h
> -@@ -47,6 +47,7 @@
> - #define ASS_MKASSOC	0x0004
> - #define ASS_MKGLOBAL	0x0008	/* force global assignment */
> - #define ASS_NAMEREF	0x0010	/* assigning to nameref variable */
> -+#define ASS_FROMREF	0x0020	/* assigning from value of nameref variable */
> - 
> - /* Flags for the string extraction functions. */
> - #define SX_NOALLOC	0x0001	/* just skip; don't return substring */
> -diff --git a/variables.c b/variables.c
> -index 7c82710e0f0b..81b7877e32e8 100644
> ---- a/variables.c
> -+++ b/variables.c
> -@@ -2516,10 +2516,27 @@ bind_variable_internal (name, value, table, hflags, aflags)
> -      HASH_TABLE *table;
> -      int hflags, aflags;
> - {
> --  char *newval;
> -+  char *newname, *newval;
> -   SHELL_VAR *entry;
> -+#if defined (ARRAY_VARS)
> -+  arrayind_t ind;
> -+  char *subp;
> -+  int sublen;
> -+#endif
> - 
> -+  newname = 0;
> -+#if defined (ARRAY_VARS)
> -+  if ((aflags & ASS_FROMREF) && (hflags & HASH_NOSRCH) == 0 && valid_array_reference (name))
> -+    {
> -+      newname = array_variable_name (name, &subp, &sublen);
> -+      if (newname == 0)
> -+	return (SHELL_VAR *)NULL;	/* XXX */
> -+      entry = hash_lookup (newname, table);
> -+    }
> -+  else
> -+#endif
> -   entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
> -+
> -   /* Follow the nameref chain here if this is the global variables table */
> -   if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
> -     {
> -@@ -2550,6 +2567,16 @@ bind_variable_internal (name, value, table, hflags, aflags)
> -       var_setvalue (entry, make_variable_value (entry, value, 0));
> -       }
> -     }
> -+#if defined (ARRAY_VARS)
> -+  else if (entry == 0 && newname)
> -+    {
> -+      entry = make_new_array_variable (newname);	/* indexed array by default */
> -+      if (entry == 0)
> -+	return entry;
> -+      ind = array_expand_index (name, subp, sublen);
> -+      bind_array_element (entry, ind, value, aflags);
> -+    }
> -+#endif
> -   else if (entry == 0)
> -     {
> -       entry = make_new_variable (name, table);
> -@@ -2670,7 +2697,8 @@ bind_variable (name, value, flags)
> - 			 normal. */
> - 		      if (nameref_cell (nv) == 0)
> - 			return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
> --		      return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags));
> -+		      /* XXX - bug here with ref=array[index] */
> -+		      return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags|ASS_FROMREF));
> - 		    }
> - 		  else
> - 		    v = nv;
> -diff --git a/variables.c.orig b/variables.c.orig
> -new file mode 100644
> -index 000000000000..7c82710e0f0b
> ---- /dev/null
> -+++ b/variables.c.orig
> -@@ -0,0 +1,5365 @@
> -+/* variables.c -- Functions for hacking shell variables. */
> -+
> -+/* Copyright (C) 1987-2013 Free Software Foundation, Inc.
> -+
> -+   This file is part of GNU Bash, the Bourne Again SHell.
> -+
> -+   Bash is free software: you can redistribute it and/or modify
> -+   it under the terms of the GNU General Public License as published by
> -+   the Free Software Foundation, either version 3 of the License, or
> -+   (at your option) any later version.
> -+
> -+   Bash is distributed in the hope that it will be useful,
> -+   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> -+   GNU General Public License for more details.
> -+
> -+   You should have received a copy of the GNU General Public License
> -+   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
> -+*/
> -+
> -+#include "config.h"
> -+
> -+#include "bashtypes.h"
> -+#include "posixstat.h"
> -+#include "posixtime.h"
> -+
> -+#if defined (__QNX__)
> -+#  if defined (__QNXNTO__)
> -+#    include <sys/netmgr.h>
> -+#  else
> -+#    include <sys/vc.h>
> -+#  endif /* !__QNXNTO__ */
> -+#endif /* __QNX__ */
> -+
> -+#if defined (HAVE_UNISTD_H)
> -+#  include <unistd.h>
> -+#endif
> -+
> -+#include <stdio.h>
> -+#include "chartypes.h"
> -+#if defined (HAVE_PWD_H)
> -+#  include <pwd.h>
> -+#endif
> -+#include "bashansi.h"
> -+#include "bashintl.h"
> -+
> -+#define NEED_XTRACE_SET_DECL
> -+
> -+#include "shell.h"
> -+#include "flags.h"
> -+#include "execute_cmd.h"
> -+#include "findcmd.h"
> -+#include "mailcheck.h"
> -+#include "input.h"
> -+#include "hashcmd.h"
> -+#include "pathexp.h"
> -+#include "alias.h"
> -+#include "jobs.h"
> -+
> -+#include "version.h"
> -+
> -+#include "builtins/getopt.h"
> -+#include "builtins/common.h"
> -+#include "builtins/builtext.h"
> -+
> -+#if defined (READLINE)
> -+#  include "bashline.h"
> -+#  include <readline/readline.h>
> -+#else
> -+#  include <tilde/tilde.h>
> -+#endif
> -+
> -+#if defined (HISTORY)
> -+#  include "bashhist.h"
> -+#  include <readline/history.h>
> -+#endif /* HISTORY */
> -+
> -+#if defined (PROGRAMMABLE_COMPLETION)
> -+#  include "pcomplete.h"
> -+#endif
> -+
> -+#define TEMPENV_HASH_BUCKETS	4	/* must be power of two */
> -+
> -+#define ifsname(s)	((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0')
> -+
> -+#define BASHFUNC_PREFIX		"BASH_FUNC_"
> -+#define BASHFUNC_PREFLEN	10	/* == strlen(BASHFUNC_PREFIX */
> -+#define BASHFUNC_SUFFIX		"%%"
> -+#define BASHFUNC_SUFFLEN	2	/* == strlen(BASHFUNC_SUFFIX) */
> -+
> -+extern char **environ;
> -+
> -+/* Variables used here and defined in other files. */
> -+extern int posixly_correct;
> -+extern int line_number, line_number_base;
> -+extern int subshell_environment, indirection_level, subshell_level;
> -+extern int build_version, patch_level;
> -+extern int expanding_redir;
> -+extern int last_command_exit_value;
> -+extern char *dist_version, *release_status;
> -+extern char *shell_name;
> -+extern char *primary_prompt, *secondary_prompt;
> -+extern char *current_host_name;
> -+extern sh_builtin_func_t *this_shell_builtin;
> -+extern SHELL_VAR *this_shell_function;
> -+extern char *the_printed_command_except_trap;
> -+extern char *this_command_name;
> -+extern char *command_execution_string;
> -+extern time_t shell_start_time;
> -+extern int assigning_in_environment;
> -+extern int executing_builtin;
> -+extern int funcnest_max;
> -+
> -+#if defined (READLINE)
> -+extern int no_line_editing;
> -+extern int perform_hostname_completion;
> -+#endif
> -+
> -+/* The list of shell variables that the user has created at the global
> -+   scope, or that came from the environment. */
> -+VAR_CONTEXT *global_variables = (VAR_CONTEXT *)NULL;
> -+
> -+/* The current list of shell variables, including function scopes */
> -+VAR_CONTEXT *shell_variables = (VAR_CONTEXT *)NULL;
> -+
> -+/* The list of shell functions that the user has created, or that came from
> -+   the environment. */
> -+HASH_TABLE *shell_functions = (HASH_TABLE *)NULL;
> -+
> -+#if defined (DEBUGGER)
> -+/* The table of shell function definitions that the user defined or that
> -+   came from the environment. */
> -+HASH_TABLE *shell_function_defs = (HASH_TABLE *)NULL;
> -+#endif
> -+
> -+/* The current variable context.  This is really a count of how deep into
> -+   executing functions we are. */
> -+int variable_context = 0;
> -+
> -+/* The set of shell assignments which are made only in the environment
> -+   for a single command. */
> -+HASH_TABLE *temporary_env = (HASH_TABLE *)NULL;
> -+
> -+/* Set to non-zero if an assignment error occurs while putting variables
> -+   into the temporary environment. */
> -+int tempenv_assign_error;
> -+
> -+/* Some funky variables which are known about specially.  Here is where
> -+   "$*", "$1", and all the cruft is kept. */
> -+char *dollar_vars[10];
> -+WORD_LIST *rest_of_args = (WORD_LIST *)NULL;
> -+
> -+/* The value of $$. */
> -+pid_t dollar_dollar_pid;
> -+
> -+/* Non-zero means that we have to remake EXPORT_ENV. */
> -+int array_needs_making = 1;
> -+
> -+/* The number of times BASH has been executed.  This is set
> -+   by initialize_variables (). */
> -+int shell_level = 0;
> -+
> -+/* An array which is passed to commands as their environment.  It is
> -+   manufactured from the union of the initial environment and the
> -+   shell variables that are marked for export. */
> -+char **export_env = (char **)NULL;
> -+static int export_env_index;
> -+static int export_env_size;
> -+
> -+#if defined (READLINE)
> -+static int winsize_assignment;		/* currently assigning to LINES or COLUMNS */
> -+#endif
> -+
> -+static HASH_TABLE *last_table_searched;	/* hash_lookup sets this */
> -+
> -+/* Some forward declarations. */
> -+static void create_variable_tables __P((void));
> -+
> -+static void set_machine_vars __P((void));
> -+static void set_home_var __P((void));
> -+static void set_shell_var __P((void));
> -+static char *get_bash_name __P((void));
> -+static void initialize_shell_level __P((void));
> -+static void uidset __P((void));
> -+#if defined (ARRAY_VARS)
> -+static void make_vers_array __P((void));
> -+#endif
> -+
> -+static SHELL_VAR *null_assign __P((SHELL_VAR *, char *, arrayind_t, char *));
> -+#if defined (ARRAY_VARS)
> -+static SHELL_VAR *null_array_assign __P((SHELL_VAR *, char *, arrayind_t, char *));
> -+#endif
> -+static SHELL_VAR *get_self __P((SHELL_VAR *));
> -+
> -+#if defined (ARRAY_VARS)
> -+static SHELL_VAR *init_dynamic_array_var __P((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int));
> -+static SHELL_VAR *init_dynamic_assoc_var __P((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int));
> -+#endif
> -+
> -+static SHELL_VAR *assign_seconds __P((SHELL_VAR *, char *, arrayind_t, char *));
> -+static SHELL_VAR *get_seconds __P((SHELL_VAR *));
> -+static SHELL_VAR *init_seconds_var __P((void));
> -+
> -+static int brand __P((void));
> -+static void sbrand __P((unsigned long));		/* set bash random number generator. */
> -+static void seedrand __P((void));			/* seed generator randomly */
> -+static SHELL_VAR *assign_random __P((SHELL_VAR *, char *, arrayind_t, char *));
> -+static SHELL_VAR *get_random __P((SHELL_VAR *));
> -+
> -+static SHELL_VAR *assign_lineno __P((SHELL_VAR *, char *, arrayind_t, char *));
> -+static SHELL_VAR *get_lineno __P((SHELL_VAR *));
> -+
> -+static SHELL_VAR *assign_subshell __P((SHELL_VAR *, char *, arrayind_t, char *));
> -+static SHELL_VAR *get_subshell __P((SHELL_VAR *));
> -+
> -+static SHELL_VAR *get_bashpid __P((SHELL_VAR *));
> -+
> -+#if defined (HISTORY)
> -+static SHELL_VAR *get_histcmd __P((SHELL_VAR *));
> -+#endif
> -+
> -+#if defined (READLINE)
> -+static SHELL_VAR *get_comp_wordbreaks __P((SHELL_VAR *));
> -+static SHELL_VAR *assign_comp_wordbreaks __P((SHELL_VAR *, char *, arrayind_t, char *));
> -+#endif
> -+
> -+#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS)
> -+static SHELL_VAR *assign_dirstack __P((SHELL_VAR *, char *, arrayind_t, char *));
> -+static SHELL_VAR *get_dirstack __P((SHELL_VAR *));
> -+#endif
> -+
> -+#if defined (ARRAY_VARS)
> -+static SHELL_VAR *get_groupset __P((SHELL_VAR *));
> -+
> -+static SHELL_VAR *build_hashcmd __P((SHELL_VAR *));
> -+static SHELL_VAR *get_hashcmd __P((SHELL_VAR *));
> -+static SHELL_VAR *assign_hashcmd __P((SHELL_VAR *,  char *, arrayind_t, char *));
> -+#  if defined (ALIAS)
> -+static SHELL_VAR *build_aliasvar __P((SHELL_VAR *));
> -+static SHELL_VAR *get_aliasvar __P((SHELL_VAR *));
> -+static SHELL_VAR *assign_aliasvar __P((SHELL_VAR *,  char *, arrayind_t, char *));
> -+#  endif
> -+#endif
> -+
> -+static SHELL_VAR *get_funcname __P((SHELL_VAR *));
> -+static SHELL_VAR *init_funcname_var __P((void));
> -+
> -+static void initialize_dynamic_variables __P((void));
> -+
> -+static SHELL_VAR *hash_lookup __P((const char *, HASH_TABLE *));
> -+static SHELL_VAR *new_shell_variable __P((const char *));
> -+static SHELL_VAR *make_new_variable __P((const char *, HASH_TABLE *));
> -+static SHELL_VAR *bind_variable_internal __P((const char *, char *, HASH_TABLE *, int, int));
> -+
> -+static void dispose_variable_value __P((SHELL_VAR *));
> -+static void free_variable_hash_data __P((PTR_T));
> -+
> -+static VARLIST *vlist_alloc __P((int));
> -+static VARLIST *vlist_realloc __P((VARLIST *, int));
> -+static void vlist_add __P((VARLIST *, SHELL_VAR *, int));
> -+
> -+static void flatten __P((HASH_TABLE *, sh_var_map_func_t *, VARLIST *, int));
> -+
> -+static int qsort_var_comp __P((SHELL_VAR **, SHELL_VAR **));
> -+
> -+static SHELL_VAR **vapply __P((sh_var_map_func_t *));
> -+static SHELL_VAR **fapply __P((sh_var_map_func_t *));
> -+
> -+static int visible_var __P((SHELL_VAR *));
> -+static int visible_and_exported __P((SHELL_VAR *));
> -+static int export_environment_candidate __P((SHELL_VAR *));
> -+static int local_and_exported __P((SHELL_VAR *));
> -+static int variable_in_context __P((SHELL_VAR *));
> -+#if defined (ARRAY_VARS)
> -+static int visible_array_vars __P((SHELL_VAR *));
> -+#endif
> -+
> -+static SHELL_VAR *find_nameref_at_context __P((SHELL_VAR *, VAR_CONTEXT *));
> -+static SHELL_VAR *find_variable_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **));
> -+static SHELL_VAR *find_variable_last_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **));
> -+
> -+static SHELL_VAR *bind_tempenv_variable __P((const char *, char *));
> -+static void push_temp_var __P((PTR_T));
> -+static void propagate_temp_var __P((PTR_T));
> -+static void dispose_temporary_env __P((sh_free_func_t *));     
> -+
> -+static inline char *mk_env_string __P((const char *, const char *, int));
> -+static char **make_env_array_from_var_list __P((SHELL_VAR **));
> -+static char **make_var_export_array __P((VAR_CONTEXT *));
> -+static char **make_func_export_array __P((void));
> -+static void add_temp_array_to_env __P((char **, int, int));
> -+
> -+static int n_shell_variables __P((void));
> -+static int set_context __P((SHELL_VAR *));
> -+
> -+static void push_func_var __P((PTR_T));
> -+static void push_exported_var __P((PTR_T));
> -+
> -+static inline int find_special_var __P((const char *));
> -+
> -+static void
> -+create_variable_tables ()
> -+{
> -+  if (shell_variables == 0)
> -+    {
> -+      shell_variables = global_variables = new_var_context ((char *)NULL, 0);
> -+      shell_variables->scope = 0;
> -+      shell_variables->table = hash_create (0);
> -+    }
> -+
> -+  if (shell_functions == 0)
> -+    shell_functions = hash_create (0);
> -+
> -+#if defined (DEBUGGER)
> -+  if (shell_function_defs == 0)
> -+    shell_function_defs = hash_create (0);
> -+#endif
> -+}
> -+
> -+/* Initialize the shell variables from the current environment.
> -+   If PRIVMODE is nonzero, don't import functions from ENV or
> -+   parse $SHELLOPTS. */
> -+void
> -+initialize_shell_variables (env, privmode)
> -+     char **env;
> -+     int privmode;
> -+{
> -+  char *name, *string, *temp_string;
> -+  int c, char_index, string_index, string_length, ro;
> -+  SHELL_VAR *temp_var;
> -+
> -+  create_variable_tables ();
> -+
> -+  for (string_index = 0; string = env[string_index++]; )
> -+    {
> -+      char_index = 0;
> -+      name = string;
> -+      while ((c = *string++) && c != '=')
> -+	;
> -+      if (string[-1] == '=')
> -+	char_index = string - name - 1;
> -+
> -+      /* If there are weird things in the environment, like `=xxx' or a
> -+	 string without an `=', just skip them. */
> -+      if (char_index == 0)
> -+	continue;
> -+
> -+      /* ASSERT(name[char_index] == '=') */
> -+      name[char_index] = '\0';
> -+      /* Now, name = env variable name, string = env variable value, and
> -+	 char_index == strlen (name) */
> -+
> -+      temp_var = (SHELL_VAR *)NULL;
> -+
> -+      /* If exported function, define it now.  Don't import functions from
> -+	 the environment in privileged mode. */
> -+      if (privmode == 0 && read_but_dont_execute == 0 && 
> -+          STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) &&
> -+          STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) &&
> -+	  STREQN ("() {", string, 4))
> -+	{
> -+	  size_t namelen;
> -+	  char *tname;		/* desired imported function name */
> -+
> -+	  namelen = char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN;
> -+
> -+	  tname = name + BASHFUNC_PREFLEN;	/* start of func name */
> -+	  tname[namelen] = '\0';		/* now tname == func name */
> -+
> -+	  string_length = strlen (string);
> -+	  temp_string = (char *)xmalloc (namelen + string_length + 2);
> -+
> -+	  memcpy (temp_string, tname, namelen);
> -+	  temp_string[namelen] = ' ';
> -+	  memcpy (temp_string + namelen + 1, string, string_length + 1);
> -+
> -+	  /* Don't import function names that are invalid identifiers from the
> -+	     environment, though we still allow them to be defined as shell
> -+	     variables. */
> -+	  if (absolute_program (tname) == 0 && (posixly_correct == 0 || legal_identifier (tname)))
> -+	    parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
> -+
> -+	  if (temp_var = find_function (tname))
> -+	    {
> -+	      VSETATTR (temp_var, (att_exported|att_imported));
> -+	      array_needs_making = 1;
> -+	    }
> -+	  else
> -+	    {
> -+	      if (temp_var = bind_variable (name, string, 0))
> -+		{
> -+		  VSETATTR (temp_var, (att_exported | att_imported | att_invisible));
> -+		  array_needs_making = 1;
> -+		}
> -+	      last_command_exit_value = 1;
> -+	      report_error (_("error importing function definition for `%s'"), tname);
> -+	    }
> -+
> -+	  /* Restore original suffix */
> -+	  tname[namelen] = BASHFUNC_SUFFIX[0];
> -+	}
> -+#if defined (ARRAY_VARS)
> -+#  if ARRAY_EXPORT
> -+      /* Array variables may not yet be exported. */
> -+      else if (*string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')')
> -+	{
> -+	  string_length = 1;
> -+	  temp_string = extract_array_assignment_list (string, &string_length);
> -+	  temp_var = assign_array_from_string (name, temp_string);
> -+	  FREE (temp_string);
> -+	  VSETATTR (temp_var, (att_exported | att_imported));
> -+	  array_needs_making = 1;
> -+	}
> -+#  endif /* ARRAY_EXPORT */
> -+#endif
> -+#if 0
> -+      else if (legal_identifier (name))
> -+#else
> -+      else
> -+#endif
> -+	{
> -+	  ro = 0;
> -+	  if (posixly_correct && STREQ (name, "SHELLOPTS"))
> -+	    {
> -+	      temp_var = find_variable ("SHELLOPTS");
> -+	      ro = temp_var && readonly_p (temp_var);
> -+	      if (temp_var)
> -+		VUNSETATTR (temp_var, att_readonly);
> -+	    }
> -+	  temp_var = bind_variable (name, string, 0);
> -+	  if (temp_var)
> -+	    {
> -+	      if (legal_identifier (name))
> -+		VSETATTR (temp_var, (att_exported | att_imported));
> -+	      else
> -+		VSETATTR (temp_var, (att_exported | att_imported | att_invisible));
> -+	      if (ro)
> -+		VSETATTR (temp_var, att_readonly);
> -+	      array_needs_making = 1;
> -+	    }
> -+	}
> -+
> -+      name[char_index] = '=';
> -+      /* temp_var can be NULL if it was an exported function with a syntax
> -+	 error (a different bug, but it still shouldn't dump core). */
> -+      if (temp_var && function_p (temp_var) == 0)	/* XXX not yet */
> -+	{
> -+	  CACHE_IMPORTSTR (temp_var, name);
> -+	}
> -+    }
> -+
> -+  set_pwd ();
> -+
> -+  /* Set up initial value of $_ */
> -+  temp_var = set_if_not ("_", dollar_vars[0]);
> -+
> -+  /* Remember this pid. */
> -+  dollar_dollar_pid = getpid ();
> -+
> -+  /* Now make our own defaults in case the vars that we think are
> -+     important are missing. */
> -+  temp_var = set_if_not ("PATH", DEFAULT_PATH_VALUE);
> -+#if 0
> -+  set_auto_export (temp_var);	/* XXX */
> -+#endif
> -+
> -+  temp_var = set_if_not ("TERM", "dumb");
> -+#if 0
> -+  set_auto_export (temp_var);	/* XXX */
> -+#endif
> -+
> -+#if defined (__QNX__)
> -+  /* set node id -- don't import it from the environment */
> -+  {
> -+    char node_name[22];
> -+#  if defined (__QNXNTO__)
> -+    netmgr_ndtostr(ND2S_LOCAL_STR, ND_LOCAL_NODE, node_name, sizeof(node_name));
> -+#  else
> -+    qnx_nidtostr (getnid (), node_name, sizeof (node_name));
> -+#  endif
> -+    temp_var = bind_variable ("NODE", node_name, 0);
> -+    set_auto_export (temp_var);
> -+  }
> -+#endif
> -+
> -+  /* set up the prompts. */
> -+  if (interactive_shell)
> -+    {
> -+#if defined (PROMPT_STRING_DECODE)
> -+      set_if_not ("PS1", primary_prompt);
> -+#else
> -+      if (current_user.uid == -1)
> -+	get_current_user_info ();
> -+      set_if_not ("PS1", current_user.euid == 0 ? "# " : primary_prompt);
> -+#endif
> -+      set_if_not ("PS2", secondary_prompt);
> -+    }
> -+  set_if_not ("PS4", "+ ");
> -+
> -+  /* Don't allow IFS to be imported from the environment. */
> -+  temp_var = bind_variable ("IFS", " \t\n", 0);
> -+  setifs (temp_var);
> -+
> -+  /* Magic machine types.  Pretty convenient. */
> -+  set_machine_vars ();
> -+
> -+  /* Default MAILCHECK for interactive shells.  Defer the creation of a
> -+     default MAILPATH until the startup files are read, because MAIL
> -+     names a mail file if MAILPATH is not set, and we should provide a
> -+     default only if neither is set. */
> -+  if (interactive_shell)
> -+    {
> -+      temp_var = set_if_not ("MAILCHECK", posixly_correct ? "600" : "60");
> -+      VSETATTR (temp_var, att_integer);
> -+    }
> -+
> -+  /* Do some things with shell level. */
> -+  initialize_shell_level ();
> -+
> -+  set_ppid ();
> -+
> -+  /* Initialize the `getopts' stuff. */
> -+  temp_var = bind_variable ("OPTIND", "1", 0);
> -+  VSETATTR (temp_var, att_integer);
> -+  getopts_reset (0);
> -+  bind_variable ("OPTERR", "1", 0);
> -+  sh_opterr = 1;
> -+
> -+  if (login_shell == 1 && posixly_correct == 0)
> -+    set_home_var ();
> -+
> -+  /* Get the full pathname to THIS shell, and set the BASH variable
> -+     to it. */
> -+  name = get_bash_name ();
> -+  temp_var = bind_variable ("BASH", name, 0);
> -+  free (name);
> -+
> -+  /* Make the exported environment variable SHELL be the user's login
> -+     shell.  Note that the `tset' command looks at this variable
> -+     to determine what style of commands to output; if it ends in "csh",
> -+     then C-shell commands are output, else Bourne shell commands. */
> -+  set_shell_var ();
> -+
> -+  /* Make a variable called BASH_VERSION which contains the version info. */
> -+  bind_variable ("BASH_VERSION", shell_version_string (), 0);
> -+#if defined (ARRAY_VARS)
> -+  make_vers_array ();
> -+#endif
> -+
> -+  if (command_execution_string)
> -+    bind_variable ("BASH_EXECUTION_STRING", command_execution_string, 0);
> -+
> -+  /* Find out if we're supposed to be in Posix.2 mode via an
> -+     environment variable. */
> -+  temp_var = find_variable ("POSIXLY_CORRECT");
> -+  if (!temp_var)
> -+    temp_var = find_variable ("POSIX_PEDANTIC");
> -+  if (temp_var && imported_p (temp_var))
> -+    sv_strict_posix (temp_var->name);
> -+
> -+#if defined (HISTORY)
> -+  /* Set history variables to defaults, and then do whatever we would
> -+     do if the variable had just been set.  Do this only in the case
> -+     that we are remembering commands on the history list. */
> -+  if (remember_on_history)
> -+    {
> -+      name = bash_tilde_expand (posixly_correct ? "~/.sh_history" : "~/.bash_history", 0);
> -+
> -+      set_if_not ("HISTFILE", name);
> -+      free (name);
> -+    }
> -+#endif /* HISTORY */
> -+
> -+  /* Seed the random number generator. */
> -+  seedrand ();
> -+
> -+  /* Handle some "special" variables that we may have inherited from a
> -+     parent shell. */
> -+  if (interactive_shell)
> -+    {
> -+      temp_var = find_variable ("IGNOREEOF");
> -+      if (!temp_var)
> -+	temp_var = find_variable ("ignoreeof");
> -+      if (temp_var && imported_p (temp_var))
> -+	sv_ignoreeof (temp_var->name);
> -+    }
> -+
> -+#if defined (HISTORY)
> -+  if (interactive_shell && remember_on_history)
> -+    {
> -+      sv_history_control ("HISTCONTROL");
> -+      sv_histignore ("HISTIGNORE");
> -+      sv_histtimefmt ("HISTTIMEFORMAT");
> -+    }
> -+#endif /* HISTORY */
> -+
> -+#if defined (READLINE) && defined (STRICT_POSIX)
> -+  /* POSIXLY_CORRECT will only be 1 here if the shell was compiled
> -+     -DSTRICT_POSIX */
> -+  if (interactive_shell && posixly_correct && no_line_editing == 0)
> -+    rl_prefer_env_winsize = 1;
> -+#endif /* READLINE && STRICT_POSIX */
> -+
> -+     /*
> -+      * 24 October 2001
> -+      *
> -+      * I'm tired of the arguing and bug reports.  Bash now leaves SSH_CLIENT
> -+      * and SSH2_CLIENT alone.  I'm going to rely on the shell_level check in
> -+      * isnetconn() to avoid running the startup files more often than wanted.
> -+      * That will, of course, only work if the user's login shell is bash, so
> -+      * I've made that behavior conditional on SSH_SOURCE_BASHRC being defined
> -+      * in config-top.h.
> -+      */
> -+#if 0
> -+  temp_var = find_variable ("SSH_CLIENT");
> -+  if (temp_var && imported_p (temp_var))
> -+    {
> -+      VUNSETATTR (temp_var, att_exported);
> -+      array_needs_making = 1;
> -+    }
> -+  temp_var = find_variable ("SSH2_CLIENT");
> -+  if (temp_var && imported_p (temp_var))
> -+    {
> -+      VUNSETATTR (temp_var, att_exported);
> -+      array_needs_making = 1;
> -+    }
> -+#endif
> -+
> -+  /* Get the user's real and effective user ids. */
> -+  uidset ();
> -+
> -+  temp_var = find_variable ("BASH_XTRACEFD");
> -+  if (temp_var && imported_p (temp_var))
> -+    sv_xtracefd (temp_var->name);
> -+
> -+  /* Initialize the dynamic variables, and seed their values. */
> -+  initialize_dynamic_variables ();
> -+}
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*	     Setting values for special shell variables		    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+static void
> -+set_machine_vars ()
> -+{
> -+  SHELL_VAR *temp_var;
> -+
> -+  temp_var = set_if_not ("HOSTTYPE", HOSTTYPE);
> -+  temp_var = set_if_not ("OSTYPE", OSTYPE);
> -+  temp_var = set_if_not ("MACHTYPE", MACHTYPE);
> -+
> -+  temp_var = set_if_not ("HOSTNAME", current_host_name);
> -+}
> -+
> -+/* Set $HOME to the information in the password file if we didn't get
> -+   it from the environment. */
> -+
> -+/* This function is not static so the tilde and readline libraries can
> -+   use it. */
> -+char *
> -+sh_get_home_dir ()
> -+{
> -+  if (current_user.home_dir == 0)
> -+    get_current_user_info ();
> -+  return current_user.home_dir;
> -+}
> -+
> -+static void
> -+set_home_var ()
> -+{
> -+  SHELL_VAR *temp_var;
> -+
> -+  temp_var = find_variable ("HOME");
> -+  if (temp_var == 0)
> -+    temp_var = bind_variable ("HOME", sh_get_home_dir (), 0);
> -+#if 0
> -+  VSETATTR (temp_var, att_exported);
> -+#endif
> -+}
> -+
> -+/* Set $SHELL to the user's login shell if it is not already set.  Call
> -+   get_current_user_info if we haven't already fetched the shell. */
> -+static void
> -+set_shell_var ()
> -+{
> -+  SHELL_VAR *temp_var;
> -+
> -+  temp_var = find_variable ("SHELL");
> -+  if (temp_var == 0)
> -+    {
> -+      if (current_user.shell == 0)
> -+	get_current_user_info ();
> -+      temp_var = bind_variable ("SHELL", current_user.shell, 0);
> -+    }
> -+#if 0
> -+  VSETATTR (temp_var, att_exported);
> -+#endif
> -+}
> -+
> -+static char *
> -+get_bash_name ()
> -+{
> -+  char *name;
> -+
> -+  if ((login_shell == 1) && RELPATH(shell_name))
> -+    {
> -+      if (current_user.shell == 0)
> -+	get_current_user_info ();
> -+      name = savestring (current_user.shell);
> -+    }
> -+  else if (ABSPATH(shell_name))
> -+    name = savestring (shell_name);
> -+  else if (shell_name[0] == '.' && shell_name[1] == '/')
> -+    {
> -+      /* Fast path for common case. */
> -+      char *cdir;
> -+      int len;
> -+
> -+      cdir = get_string_value ("PWD");
> -+      if (cdir)
> -+	{
> -+	  len = strlen (cdir);
> -+	  name = (char *)xmalloc (len + strlen (shell_name) + 1);
> -+	  strcpy (name, cdir);
> -+	  strcpy (name + len, shell_name + 1);
> -+	}
> -+      else
> -+	name = savestring (shell_name);
> -+    }
> -+  else
> -+    {
> -+      char *tname;
> -+      int s;
> -+
> -+      tname = find_user_command (shell_name);
> -+
> -+      if (tname == 0)
> -+	{
> -+	  /* Try the current directory.  If there is not an executable
> -+	     there, just punt and use the login shell. */
> -+	  s = file_status (shell_name);
> -+	  if (s & FS_EXECABLE)
> -+	    {
> -+	      tname = make_absolute (shell_name, get_string_value ("PWD"));
> -+	      if (*shell_name == '.')
> -+		{
> -+		  name = sh_canonpath (tname, PATH_CHECKDOTDOT|PATH_CHECKEXISTS);
> -+		  if (name == 0)
> -+		    name = tname;
> -+		  else
> -+		    free (tname);
> -+		}
> -+	     else
> -+		name = tname;
> -+	    }
> -+	  else
> -+	    {
> -+	      if (current_user.shell == 0)
> -+		get_current_user_info ();
> -+	      name = savestring (current_user.shell);
> -+	    }
> -+	}
> -+      else
> -+	{
> -+	  name = full_pathname (tname);
> -+	  free (tname);
> -+	}
> -+    }
> -+
> -+  return (name);
> -+}
> -+
> -+void
> -+adjust_shell_level (change)
> -+     int change;
> -+{
> -+  char new_level[5], *old_SHLVL;
> -+  intmax_t old_level;
> -+  SHELL_VAR *temp_var;
> -+
> -+  old_SHLVL = get_string_value ("SHLVL");
> -+  if (old_SHLVL == 0 || *old_SHLVL == '\0' || legal_number (old_SHLVL, &old_level) == 0)
> -+    old_level = 0;
> -+
> -+  shell_level = old_level + change;
> -+  if (shell_level < 0)
> -+    shell_level = 0;
> -+  else if (shell_level > 1000)
> -+    {
> -+      internal_warning (_("shell level (%d) too high, resetting to 1"), shell_level);
> -+      shell_level = 1;
> -+    }
> -+
> -+  /* We don't need the full generality of itos here. */
> -+  if (shell_level < 10)
> -+    {
> -+      new_level[0] = shell_level + '0';
> -+      new_level[1] = '\0';
> -+    }
> -+  else if (shell_level < 100)
> -+    {
> -+      new_level[0] = (shell_level / 10) + '0';
> -+      new_level[1] = (shell_level % 10) + '0';
> -+      new_level[2] = '\0';
> -+    }
> -+  else if (shell_level < 1000)
> -+    {
> -+      new_level[0] = (shell_level / 100) + '0';
> -+      old_level = shell_level % 100;
> -+      new_level[1] = (old_level / 10) + '0';
> -+      new_level[2] = (old_level % 10) + '0';
> -+      new_level[3] = '\0';
> -+    }
> -+
> -+  temp_var = bind_variable ("SHLVL", new_level, 0);
> -+  set_auto_export (temp_var);
> -+}
> -+
> -+static void
> -+initialize_shell_level ()
> -+{
> -+  adjust_shell_level (1);
> -+}
> -+
> -+/* If we got PWD from the environment, update our idea of the current
> -+   working directory.  In any case, make sure that PWD exists before
> -+   checking it.  It is possible for getcwd () to fail on shell startup,
> -+   and in that case, PWD would be undefined.  If this is an interactive
> -+   login shell, see if $HOME is the current working directory, and if
> -+   that's not the same string as $PWD, set PWD=$HOME. */
> -+
> -+void
> -+set_pwd ()
> -+{
> -+  SHELL_VAR *temp_var, *home_var;
> -+  char *temp_string, *home_string;
> -+
> -+  home_var = find_variable ("HOME");
> -+  home_string = home_var ? value_cell (home_var) : (char *)NULL;
> -+
> -+  temp_var = find_variable ("PWD");
> -+  if (temp_var && imported_p (temp_var) &&
> -+      (temp_string = value_cell (temp_var)) &&
> -+      same_file (temp_string, ".", (struct stat *)NULL, (struct stat *)NULL))
> -+    set_working_directory (temp_string);
> -+  else if (home_string && interactive_shell && login_shell &&
> -+	   same_file (home_string, ".", (struct stat *)NULL, (struct stat *)NULL))
> -+    {
> -+      set_working_directory (home_string);
> -+      temp_var = bind_variable ("PWD", home_string, 0);
> -+      set_auto_export (temp_var);
> -+    }
> -+  else
> -+    {
> -+      temp_string = get_working_directory ("shell-init");
> -+      if (temp_string)
> -+	{
> -+	  temp_var = bind_variable ("PWD", temp_string, 0);
> -+	  set_auto_export (temp_var);
> -+	  free (temp_string);
> -+	}
> -+    }
> -+
> -+  /* According to the Single Unix Specification, v2, $OLDPWD is an
> -+     `environment variable' and therefore should be auto-exported.
> -+     Make a dummy invisible variable for OLDPWD, and mark it as exported. */
> -+  temp_var = bind_variable ("OLDPWD", (char *)NULL, 0);
> -+  VSETATTR (temp_var, (att_exported | att_invisible));
> -+}
> -+
> -+/* Make a variable $PPID, which holds the pid of the shell's parent.  */
> -+void
> -+set_ppid ()
> -+{
> -+  char namebuf[INT_STRLEN_BOUND(pid_t) + 1], *name;
> -+  SHELL_VAR *temp_var;
> -+
> -+  name = inttostr (getppid (), namebuf, sizeof(namebuf));
> -+  temp_var = find_variable ("PPID");
> -+  if (temp_var)
> -+    VUNSETATTR (temp_var, (att_readonly | att_exported));
> -+  temp_var = bind_variable ("PPID", name, 0);
> -+  VSETATTR (temp_var, (att_readonly | att_integer));
> -+}
> -+
> -+static void
> -+uidset ()
> -+{
> -+  char buff[INT_STRLEN_BOUND(uid_t) + 1], *b;
> -+  register SHELL_VAR *v;
> -+
> -+  b = inttostr (current_user.uid, buff, sizeof (buff));
> -+  v = find_variable ("UID");
> -+  if (v == 0)
> -+    {
> -+      v = bind_variable ("UID", b, 0);
> -+      VSETATTR (v, (att_readonly | att_integer));
> -+    }
> -+
> -+  if (current_user.euid != current_user.uid)
> -+    b = inttostr (current_user.euid, buff, sizeof (buff));
> -+
> -+  v = find_variable ("EUID");
> -+  if (v == 0)
> -+    {
> -+      v = bind_variable ("EUID", b, 0);
> -+      VSETATTR (v, (att_readonly | att_integer));
> -+    }
> -+}
> -+
> -+#if defined (ARRAY_VARS)
> -+static void
> -+make_vers_array ()
> -+{
> -+  SHELL_VAR *vv;
> -+  ARRAY *av;
> -+  char *s, d[32], b[INT_STRLEN_BOUND(int) + 1];
> -+
> -+  unbind_variable ("BASH_VERSINFO");
> -+
> -+  vv = make_new_array_variable ("BASH_VERSINFO");
> -+  av = array_cell (vv);
> -+  strcpy (d, dist_version);
> -+  s = strchr (d, '.');
> -+  if (s)
> -+    *s++ = '\0';
> -+  array_insert (av, 0, d);
> -+  array_insert (av, 1, s);
> -+  s = inttostr (patch_level, b, sizeof (b));
> -+  array_insert (av, 2, s);
> -+  s = inttostr (build_version, b, sizeof (b));
> -+  array_insert (av, 3, s);
> -+  array_insert (av, 4, release_status);
> -+  array_insert (av, 5, MACHTYPE);
> -+
> -+  VSETATTR (vv, att_readonly);
> -+}
> -+#endif /* ARRAY_VARS */
> -+
> -+/* Set the environment variables $LINES and $COLUMNS in response to
> -+   a window size change. */
> -+void
> -+sh_set_lines_and_columns (lines, cols)
> -+     int lines, cols;
> -+{
> -+  char val[INT_STRLEN_BOUND(int) + 1], *v;
> -+
> -+#if defined (READLINE)
> -+  /* If we are currently assigning to LINES or COLUMNS, don't do anything. */
> -+  if (winsize_assignment)
> -+    return;
> -+#endif
> -+
> -+  v = inttostr (lines, val, sizeof (val));
> -+  bind_variable ("LINES", v, 0);
> -+
> -+  v = inttostr (cols, val, sizeof (val));
> -+  bind_variable ("COLUMNS", v, 0);
> -+}
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*		   Printing variables and values		    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+/* Print LIST (a list of shell variables) to stdout in such a way that
> -+   they can be read back in. */
> -+void
> -+print_var_list (list)
> -+     register SHELL_VAR **list;
> -+{
> -+  register int i;
> -+  register SHELL_VAR *var;
> -+
> -+  for (i = 0; list && (var = list[i]); i++)
> -+    if (invisible_p (var) == 0)
> -+      print_assignment (var);
> -+}
> -+
> -+/* Print LIST (a list of shell functions) to stdout in such a way that
> -+   they can be read back in. */
> -+void
> -+print_func_list (list)
> -+     register SHELL_VAR **list;
> -+{
> -+  register int i;
> -+  register SHELL_VAR *var;
> -+
> -+  for (i = 0; list && (var = list[i]); i++)
> -+    {
> -+      printf ("%s ", var->name);
> -+      print_var_function (var);
> -+      printf ("\n");
> -+    }
> -+}
> -+      
> -+/* Print the value of a single SHELL_VAR.  No newline is
> -+   output, but the variable is printed in such a way that
> -+   it can be read back in. */
> -+void
> -+print_assignment (var)
> -+     SHELL_VAR *var;
> -+{
> -+  if (var_isset (var) == 0)
> -+    return;
> -+
> -+  if (function_p (var))
> -+    {
> -+      printf ("%s", var->name);
> -+      print_var_function (var);
> -+      printf ("\n");
> -+    }
> -+#if defined (ARRAY_VARS)
> -+  else if (array_p (var))
> -+    print_array_assignment (var, 0);
> -+  else if (assoc_p (var))
> -+    print_assoc_assignment (var, 0);
> -+#endif /* ARRAY_VARS */
> -+  else
> -+    {
> -+      printf ("%s=", var->name);
> -+      print_var_value (var, 1);
> -+      printf ("\n");
> -+    }
> -+}
> -+
> -+/* Print the value cell of VAR, a shell variable.  Do not print
> -+   the name, nor leading/trailing newline.  If QUOTE is non-zero,
> -+   and the value contains shell metacharacters, quote the value
> -+   in such a way that it can be read back in. */
> -+void
> -+print_var_value (var, quote)
> -+     SHELL_VAR *var;
> -+     int quote;
> -+{
> -+  char *t;
> -+
> -+  if (var_isset (var) == 0)
> -+    return;
> -+
> -+  if (quote && posixly_correct == 0 && ansic_shouldquote (value_cell (var)))
> -+    {
> -+      t = ansic_quote (value_cell (var), 0, (int *)0);
> -+      printf ("%s", t);
> -+      free (t);
> -+    }
> -+  else if (quote && sh_contains_shell_metas (value_cell (var)))
> -+    {
> -+      t = sh_single_quote (value_cell (var));
> -+      printf ("%s", t);
> -+      free (t);
> -+    }
> -+  else
> -+    printf ("%s", value_cell (var));
> -+}
> -+
> -+/* Print the function cell of VAR, a shell variable.  Do not
> -+   print the name, nor leading/trailing newline. */
> -+void
> -+print_var_function (var)
> -+     SHELL_VAR *var;
> -+{
> -+  char *x;
> -+
> -+  if (function_p (var) && var_isset (var))
> -+    {
> -+      x = named_function_string ((char *)NULL, function_cell(var), FUNC_MULTILINE|FUNC_EXTERNAL);
> -+      printf ("%s", x);
> -+    }
> -+}
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*		 	Dynamic Variables			    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+/* DYNAMIC VARIABLES
> -+
> -+   These are variables whose values are generated anew each time they are
> -+   referenced.  These are implemented using a pair of function pointers
> -+   in the struct variable: assign_func, which is called from bind_variable
> -+   and, if arrays are compiled into the shell, some of the functions in
> -+   arrayfunc.c, and dynamic_value, which is called from find_variable.
> -+
> -+   assign_func is called from bind_variable_internal, if
> -+   bind_variable_internal discovers that the variable being assigned to
> -+   has such a function.  The function is called as
> -+	SHELL_VAR *temp = (*(entry->assign_func)) (entry, value, ind)
> -+   and the (SHELL_VAR *)temp is returned as the value of bind_variable.  It
> -+   is usually ENTRY (self).  IND is an index for an array variable, and
> -+   unused otherwise.
> -+
> -+   dynamic_value is called from find_variable_internal to return a `new'
> -+   value for the specified dynamic varible.  If this function is NULL,
> -+   the variable is treated as a `normal' shell variable.  If it is not,
> -+   however, then this function is called like this:
> -+	tempvar = (*(var->dynamic_value)) (var);
> -+
> -+   Sometimes `tempvar' will replace the value of `var'.  Other times, the
> -+   shell will simply use the string value.  Pretty object-oriented, huh?
> -+
> -+   Be warned, though: if you `unset' a special variable, it loses its
> -+   special meaning, even if you subsequently set it.
> -+
> -+   The special assignment code would probably have been better put in
> -+   subst.c: do_assignment_internal, in the same style as
> -+   stupidly_hack_special_variables, but I wanted the changes as
> -+   localized as possible.  */
> -+
> -+#define INIT_DYNAMIC_VAR(var, val, gfunc, afunc) \
> -+  do \
> -+    { \
> -+      v = bind_variable (var, (val), 0); \
> -+      v->dynamic_value = gfunc; \
> -+      v->assign_func = afunc; \
> -+    } \
> -+  while (0)
> -+
> -+#define INIT_DYNAMIC_ARRAY_VAR(var, gfunc, afunc) \
> -+  do \
> -+    { \
> -+      v = make_new_array_variable (var); \
> -+      v->dynamic_value = gfunc; \
> -+      v->assign_func = afunc; \
> -+    } \
> -+  while (0)
> -+
> -+#define INIT_DYNAMIC_ASSOC_VAR(var, gfunc, afunc) \
> -+  do \
> -+    { \
> -+      v = make_new_assoc_variable (var); \
> -+      v->dynamic_value = gfunc; \
> -+      v->assign_func = afunc; \
> -+    } \
> -+  while (0)
> -+
> -+static SHELL_VAR *
> -+null_assign (self, value, unused, key)
> -+     SHELL_VAR *self;
> -+     char *value;
> -+     arrayind_t unused;
> -+     char *key;
> -+{
> -+  return (self);
> -+}
> -+
> -+#if defined (ARRAY_VARS)
> -+static SHELL_VAR *
> -+null_array_assign (self, value, ind, key)
> -+     SHELL_VAR *self;
> -+     char *value;
> -+     arrayind_t ind;
> -+     char *key;
> -+{
> -+  return (self);
> -+}
> -+#endif
> -+
> -+/* Degenerate `dynamic_value' function; just returns what's passed without
> -+   manipulation. */
> -+static SHELL_VAR *
> -+get_self (self)
> -+     SHELL_VAR *self;
> -+{
> -+  return (self);
> -+}
> -+
> -+#if defined (ARRAY_VARS)
> -+/* A generic dynamic array variable initializer.  Initialize array variable
> -+   NAME with dynamic value function GETFUNC and assignment function SETFUNC. */
> -+static SHELL_VAR *
> -+init_dynamic_array_var (name, getfunc, setfunc, attrs)
> -+     char *name;
> -+     sh_var_value_func_t *getfunc;
> -+     sh_var_assign_func_t *setfunc;
> -+     int attrs;
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  v = find_variable (name);
> -+  if (v)
> -+    return (v);
> -+  INIT_DYNAMIC_ARRAY_VAR (name, getfunc, setfunc);
> -+  if (attrs)
> -+    VSETATTR (v, attrs);
> -+  return v;
> -+}
> -+
> -+static SHELL_VAR *
> -+init_dynamic_assoc_var (name, getfunc, setfunc, attrs)
> -+     char *name;
> -+     sh_var_value_func_t *getfunc;
> -+     sh_var_assign_func_t *setfunc;
> -+     int attrs;
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  v = find_variable (name);
> -+  if (v)
> -+    return (v);
> -+  INIT_DYNAMIC_ASSOC_VAR (name, getfunc, setfunc);
> -+  if (attrs)
> -+    VSETATTR (v, attrs);
> -+  return v;
> -+}
> -+#endif
> -+
> -+/* The value of $SECONDS.  This is the number of seconds since shell
> -+   invocation, or, the number of seconds since the last assignment + the
> -+   value of the last assignment. */
> -+static intmax_t seconds_value_assigned;
> -+
> -+static SHELL_VAR *
> -+assign_seconds (self, value, unused, key)
> -+     SHELL_VAR *self;
> -+     char *value;
> -+     arrayind_t unused;
> -+     char *key;
> -+{
> -+  if (legal_number (value, &seconds_value_assigned) == 0)
> -+    seconds_value_assigned = 0;
> -+  shell_start_time = NOW;
> -+  return (self);
> -+}
> -+
> -+static SHELL_VAR *
> -+get_seconds (var)
> -+     SHELL_VAR *var;
> -+{
> -+  time_t time_since_start;
> -+  char *p;
> -+
> -+  time_since_start = NOW - shell_start_time;
> -+  p = itos(seconds_value_assigned + time_since_start);
> -+
> -+  FREE (value_cell (var));
> -+
> -+  VSETATTR (var, att_integer);
> -+  var_setvalue (var, p);
> -+  return (var);
> -+}
> -+
> -+static SHELL_VAR *
> -+init_seconds_var ()
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  v = find_variable ("SECONDS");
> -+  if (v)
> -+    {
> -+      if (legal_number (value_cell(v), &seconds_value_assigned) == 0)
> -+	seconds_value_assigned = 0;
> -+    }
> -+  INIT_DYNAMIC_VAR ("SECONDS", (v ? value_cell (v) : (char *)NULL), get_seconds, assign_seconds);
> -+  return v;      
> -+}
> -+     
> -+/* The random number seed.  You can change this by setting RANDOM. */
> -+static unsigned long rseed = 1;
> -+static int last_random_value;
> -+static int seeded_subshell = 0;
> -+
> -+/* A linear congruential random number generator based on the example
> -+   one in the ANSI C standard.  This one isn't very good, but a more
> -+   complicated one is overkill. */
> -+
> -+/* Returns a pseudo-random number between 0 and 32767. */
> -+static int
> -+brand ()
> -+{
> -+  /* From "Random number generators: good ones are hard to find",
> -+     Park and Miller, Communications of the ACM, vol. 31, no. 10,
> -+     October 1988, p. 1195. filtered through FreeBSD */
> -+  long h, l;
> -+
> -+  /* Can't seed with 0. */
> -+  if (rseed == 0)
> -+    rseed = 123459876;
> -+  h = rseed / 127773;
> -+  l = rseed % 127773;
> -+  rseed = 16807 * l - 2836 * h;
> -+#if 0
> -+  if (rseed < 0)
> -+    rseed += 0x7fffffff;
> -+#endif
> -+  return ((unsigned int)(rseed & 32767));	/* was % 32768 */
> -+}
> -+
> -+/* Set the random number generator seed to SEED. */
> -+static void
> -+sbrand (seed)
> -+     unsigned long seed;
> -+{
> -+  rseed = seed;
> -+  last_random_value = 0;
> -+}
> -+
> -+static void
> -+seedrand ()
> -+{
> -+  struct timeval tv;
> -+
> -+  gettimeofday (&tv, NULL);
> -+  sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid ());
> -+}
> -+
> -+static SHELL_VAR *
> -+assign_random (self, value, unused, key)
> -+     SHELL_VAR *self;
> -+     char *value;
> -+     arrayind_t unused;
> -+     char *key;
> -+{
> -+  sbrand (strtoul (value, (char **)NULL, 10));
> -+  if (subshell_environment)
> -+    seeded_subshell = getpid ();
> -+  return (self);
> -+}
> -+
> -+int
> -+get_random_number ()
> -+{
> -+  int rv, pid;
> -+
> -+  /* Reset for command and process substitution. */
> -+  pid = getpid ();
> -+  if (subshell_environment && seeded_subshell != pid)
> -+    {
> -+      seedrand ();
> -+      seeded_subshell = pid;
> -+    }
> -+
> -+  do
> -+    rv = brand ();
> -+  while (rv == last_random_value);
> -+  return rv;
> -+}
> -+
> -+static SHELL_VAR *
> -+get_random (var)
> -+     SHELL_VAR *var;
> -+{
> -+  int rv;
> -+  char *p;
> -+
> -+  rv = get_random_number ();
> -+  last_random_value = rv;
> -+  p = itos (rv);
> -+
> -+  FREE (value_cell (var));
> -+
> -+  VSETATTR (var, att_integer);
> -+  var_setvalue (var, p);
> -+  return (var);
> -+}
> -+
> -+static SHELL_VAR *
> -+assign_lineno (var, value, unused, key)
> -+     SHELL_VAR *var;
> -+     char *value;
> -+     arrayind_t unused;
> -+     char *key;
> -+{
> -+  intmax_t new_value;
> -+
> -+  if (value == 0 || *value == '\0' || legal_number (value, &new_value) == 0)
> -+    new_value = 0;
> -+  line_number = line_number_base = new_value;
> -+  return var;
> -+}
> -+
> -+/* Function which returns the current line number. */
> -+static SHELL_VAR *
> -+get_lineno (var)
> -+     SHELL_VAR *var;
> -+{
> -+  char *p;
> -+  int ln;
> -+
> -+  ln = executing_line_number ();
> -+  p = itos (ln);
> -+  FREE (value_cell (var));
> -+  var_setvalue (var, p);
> -+  return (var);
> -+}
> -+
> -+static SHELL_VAR *
> -+assign_subshell (var, value, unused, key)
> -+     SHELL_VAR *var;
> -+     char *value;
> -+     arrayind_t unused;
> -+     char *key;
> -+{
> -+  intmax_t new_value;
> -+
> -+  if (value == 0 || *value == '\0' || legal_number (value, &new_value) == 0)
> -+    new_value = 0;
> -+  subshell_level = new_value;
> -+  return var;
> -+}
> -+
> -+static SHELL_VAR *
> -+get_subshell (var)
> -+     SHELL_VAR *var;
> -+{
> -+  char *p;
> -+
> -+  p = itos (subshell_level);
> -+  FREE (value_cell (var));
> -+  var_setvalue (var, p);
> -+  return (var);
> -+}
> -+
> -+static SHELL_VAR *
> -+get_bashpid (var)
> -+     SHELL_VAR *var;
> -+{
> -+  int pid;
> -+  char *p;
> -+
> -+  pid = getpid ();
> -+  p = itos (pid);
> -+
> -+  FREE (value_cell (var));
> -+  VSETATTR (var, att_integer|att_readonly);
> -+  var_setvalue (var, p);
> -+  return (var);
> -+}
> -+
> -+static SHELL_VAR *
> -+get_bash_command (var)
> -+     SHELL_VAR *var;
> -+{
> -+  char *p;
> -+
> -+  if (the_printed_command_except_trap)
> -+    p = savestring (the_printed_command_except_trap);
> -+  else
> -+    {
> -+      p = (char *)xmalloc (1);
> -+      p[0] = '\0';
> -+    }
> -+  FREE (value_cell (var));
> -+  var_setvalue (var, p);
> -+  return (var);
> -+}
> -+
> -+#if defined (HISTORY)
> -+static SHELL_VAR *
> -+get_histcmd (var)
> -+     SHELL_VAR *var;
> -+{
> -+  char *p;
> -+
> -+  p = itos (history_number ());
> -+  FREE (value_cell (var));
> -+  var_setvalue (var, p);
> -+  return (var);
> -+}
> -+#endif
> -+
> -+#if defined (READLINE)
> -+/* When this function returns, VAR->value points to malloced memory. */
> -+static SHELL_VAR *
> -+get_comp_wordbreaks (var)
> -+     SHELL_VAR *var;
> -+{
> -+  /* If we don't have anything yet, assign a default value. */
> -+  if (rl_completer_word_break_characters == 0 && bash_readline_initialized == 0)
> -+    enable_hostname_completion (perform_hostname_completion);
> -+
> -+  FREE (value_cell (var));
> -+  var_setvalue (var, savestring (rl_completer_word_break_characters));
> -+
> -+  return (var);
> -+}
> -+
> -+/* When this function returns, rl_completer_word_break_characters points to
> -+   malloced memory. */
> -+static SHELL_VAR *
> -+assign_comp_wordbreaks (self, value, unused, key)
> -+     SHELL_VAR *self;
> -+     char *value;
> -+     arrayind_t unused;
> -+     char *key;
> -+{
> -+  if (rl_completer_word_break_characters &&
> -+      rl_completer_word_break_characters != rl_basic_word_break_characters)
> -+    free (rl_completer_word_break_characters);
> -+
> -+  rl_completer_word_break_characters = savestring (value);
> -+  return self;
> -+}
> -+#endif /* READLINE */
> -+
> -+#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS)
> -+static SHELL_VAR *
> -+assign_dirstack (self, value, ind, key)
> -+     SHELL_VAR *self;
> -+     char *value;
> -+     arrayind_t ind;
> -+     char *key;
> -+{
> -+  set_dirstack_element (ind, 1, value);
> -+  return self;
> -+}
> -+
> -+static SHELL_VAR *
> -+get_dirstack (self)
> -+     SHELL_VAR *self;
> -+{
> -+  ARRAY *a;
> -+  WORD_LIST *l;
> -+
> -+  l = get_directory_stack (0);
> -+  a = array_from_word_list (l);
> -+  array_dispose (array_cell (self));
> -+  dispose_words (l);
> -+  var_setarray (self, a);
> -+  return self;
> -+}
> -+#endif /* PUSHD AND POPD && ARRAY_VARS */
> -+
> -+#if defined (ARRAY_VARS)
> -+/* We don't want to initialize the group set with a call to getgroups()
> -+   unless we're asked to, but we only want to do it once. */
> -+static SHELL_VAR *
> -+get_groupset (self)
> -+     SHELL_VAR *self;
> -+{
> -+  register int i;
> -+  int ng;
> -+  ARRAY *a;
> -+  static char **group_set = (char **)NULL;
> -+
> -+  if (group_set == 0)
> -+    {
> -+      group_set = get_group_list (&ng);
> -+      a = array_cell (self);
> -+      for (i = 0; i < ng; i++)
> -+	array_insert (a, i, group_set[i]);
> -+    }
> -+  return (self);
> -+}
> -+
> -+static SHELL_VAR *
> -+build_hashcmd (self)
> -+     SHELL_VAR *self;
> -+{
> -+  HASH_TABLE *h;
> -+  int i;
> -+  char *k, *v;
> -+  BUCKET_CONTENTS *item;
> -+
> -+  h = assoc_cell (self);
> -+  if (h)
> -+    assoc_dispose (h);
> -+
> -+  if (hashed_filenames == 0 || HASH_ENTRIES (hashed_filenames) == 0)
> -+    {
> -+      var_setvalue (self, (char *)NULL);
> -+      return self;
> -+    }
> -+
> -+  h = assoc_create (hashed_filenames->nbuckets);
> -+  for (i = 0; i < hashed_filenames->nbuckets; i++)
> -+    {
> -+      for (item = hash_items (i, hashed_filenames); item; item = item->next)
> -+	{
> -+	  k = savestring (item->key);
> -+	  v = pathdata(item)->path;
> -+	  assoc_insert (h, k, v);
> -+	}
> -+    }
> -+
> -+  var_setvalue (self, (char *)h);
> -+  return self;
> -+}
> -+
> -+static SHELL_VAR *
> -+get_hashcmd (self)
> -+     SHELL_VAR *self;
> -+{
> -+  build_hashcmd (self);
> -+  return (self);
> -+}
> -+
> -+static SHELL_VAR *
> -+assign_hashcmd (self, value, ind, key)
> -+     SHELL_VAR *self;
> -+     char *value;
> -+     arrayind_t ind;
> -+     char *key;
> -+{
> -+  phash_insert (key, value, 0, 0);
> -+  return (build_hashcmd (self));
> -+}
> -+
> -+#if defined (ALIAS)
> -+static SHELL_VAR *
> -+build_aliasvar (self)
> -+     SHELL_VAR *self;
> -+{
> -+  HASH_TABLE *h;
> -+  int i;
> -+  char *k, *v;
> -+  BUCKET_CONTENTS *item;
> -+
> -+  h = assoc_cell (self);
> -+  if (h)
> -+    assoc_dispose (h);
> -+
> -+  if (aliases == 0 || HASH_ENTRIES (aliases) == 0)
> -+    {
> -+      var_setvalue (self, (char *)NULL);
> -+      return self;
> -+    }
> -+
> -+  h = assoc_create (aliases->nbuckets);
> -+  for (i = 0; i < aliases->nbuckets; i++)
> -+    {
> -+      for (item = hash_items (i, aliases); item; item = item->next)
> -+	{
> -+	  k = savestring (item->key);
> -+	  v = ((alias_t *)(item->data))->value;
> -+	  assoc_insert (h, k, v);
> -+	}
> -+    }
> -+
> -+  var_setvalue (self, (char *)h);
> -+  return self;
> -+}
> -+
> -+static SHELL_VAR *
> -+get_aliasvar (self)
> -+     SHELL_VAR *self;
> -+{
> -+  build_aliasvar (self);
> -+  return (self);
> -+}
> -+
> -+static SHELL_VAR *
> -+assign_aliasvar (self, value, ind, key)
> -+     SHELL_VAR *self;
> -+     char *value;
> -+     arrayind_t ind;
> -+     char *key;
> -+{
> -+  add_alias (key, value);
> -+  return (build_aliasvar (self));
> -+}
> -+#endif /* ALIAS */
> -+
> -+#endif /* ARRAY_VARS */
> -+
> -+/* If ARRAY_VARS is not defined, this just returns the name of any
> -+   currently-executing function.  If we have arrays, it's a call stack. */
> -+static SHELL_VAR *
> -+get_funcname (self)
> -+     SHELL_VAR *self;
> -+{
> -+#if ! defined (ARRAY_VARS)
> -+  char *t;
> -+  if (variable_context && this_shell_function)
> -+    {
> -+      FREE (value_cell (self));
> -+      t = savestring (this_shell_function->name);
> -+      var_setvalue (self, t);
> -+    }
> -+#endif
> -+  return (self);
> -+}
> -+
> -+void
> -+make_funcname_visible (on_or_off)
> -+     int on_or_off;
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  v = find_variable ("FUNCNAME");
> -+  if (v == 0 || v->dynamic_value == 0)
> -+    return;
> -+
> -+  if (on_or_off)
> -+    VUNSETATTR (v, att_invisible);
> -+  else
> -+    VSETATTR (v, att_invisible);
> -+}
> -+
> -+static SHELL_VAR *
> -+init_funcname_var ()
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  v = find_variable ("FUNCNAME");
> -+  if (v)
> -+    return v;
> -+#if defined (ARRAY_VARS)
> -+  INIT_DYNAMIC_ARRAY_VAR ("FUNCNAME", get_funcname, null_array_assign);
> -+#else
> -+  INIT_DYNAMIC_VAR ("FUNCNAME", (char *)NULL, get_funcname, null_assign);
> -+#endif
> -+  VSETATTR (v, att_invisible|att_noassign);
> -+  return v;
> -+}
> -+
> -+static void
> -+initialize_dynamic_variables ()
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  v = init_seconds_var ();
> -+
> -+  INIT_DYNAMIC_VAR ("BASH_COMMAND", (char *)NULL, get_bash_command, (sh_var_assign_func_t *)NULL);
> -+  INIT_DYNAMIC_VAR ("BASH_SUBSHELL", (char *)NULL, get_subshell, assign_subshell);
> -+
> -+  INIT_DYNAMIC_VAR ("RANDOM", (char *)NULL, get_random, assign_random);
> -+  VSETATTR (v, att_integer);
> -+  INIT_DYNAMIC_VAR ("LINENO", (char *)NULL, get_lineno, assign_lineno);
> -+  VSETATTR (v, att_integer);
> -+
> -+  INIT_DYNAMIC_VAR ("BASHPID", (char *)NULL, get_bashpid, null_assign);
> -+  VSETATTR (v, att_integer|att_readonly);
> -+
> -+#if defined (HISTORY)
> -+  INIT_DYNAMIC_VAR ("HISTCMD", (char *)NULL, get_histcmd, (sh_var_assign_func_t *)NULL);
> -+  VSETATTR (v, att_integer);
> -+#endif
> -+
> -+#if defined (READLINE)
> -+  INIT_DYNAMIC_VAR ("COMP_WORDBREAKS", (char *)NULL, get_comp_wordbreaks, assign_comp_wordbreaks);
> -+#endif
> -+
> -+#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS)
> -+  v = init_dynamic_array_var ("DIRSTACK", get_dirstack, assign_dirstack, 0);
> -+#endif /* PUSHD_AND_POPD && ARRAY_VARS */
> -+
> -+#if defined (ARRAY_VARS)
> -+  v = init_dynamic_array_var ("GROUPS", get_groupset, null_array_assign, att_noassign);
> -+
> -+#  if defined (DEBUGGER)
> -+  v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, att_noassign|att_nounset);
> -+  v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, att_noassign|att_nounset);
> -+#  endif /* DEBUGGER */
> -+  v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, att_noassign|att_nounset);
> -+  v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, att_noassign|att_nounset);
> -+
> -+  v = init_dynamic_assoc_var ("BASH_CMDS", get_hashcmd, assign_hashcmd, att_nofree);
> -+#  if defined (ALIAS)
> -+  v = init_dynamic_assoc_var ("BASH_ALIASES", get_aliasvar, assign_aliasvar, att_nofree);
> -+#  endif
> -+#endif
> -+
> -+  v = init_funcname_var ();
> -+}
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*		Retrieving variables and values			    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+/* How to get a pointer to the shell variable or function named NAME.
> -+   HASHED_VARS is a pointer to the hash table containing the list
> -+   of interest (either variables or functions). */
> -+
> -+static SHELL_VAR *
> -+hash_lookup (name, hashed_vars)
> -+     const char *name;
> -+     HASH_TABLE *hashed_vars;
> -+{
> -+  BUCKET_CONTENTS *bucket;
> -+
> -+  bucket = hash_search (name, hashed_vars, 0);
> -+  /* If we find the name in HASHED_VARS, set LAST_TABLE_SEARCHED to that
> -+     table. */
> -+  if (bucket)
> -+    last_table_searched = hashed_vars;
> -+  return (bucket ? (SHELL_VAR *)bucket->data : (SHELL_VAR *)NULL);
> -+}
> -+
> -+SHELL_VAR *
> -+var_lookup (name, vcontext)
> -+     const char *name;
> -+     VAR_CONTEXT *vcontext;
> -+{
> -+  VAR_CONTEXT *vc;
> -+  SHELL_VAR *v;
> -+
> -+  v = (SHELL_VAR *)NULL;
> -+  for (vc = vcontext; vc; vc = vc->down)
> -+    if (v = hash_lookup (name, vc->table))
> -+      break;
> -+
> -+  return v;
> -+}
> -+
> -+/* Look up the variable entry named NAME.  If SEARCH_TEMPENV is non-zero,
> -+   then also search the temporarily built list of exported variables.
> -+   The lookup order is:
> -+	temporary_env
> -+	shell_variables list
> -+*/
> -+
> -+SHELL_VAR *
> -+find_variable_internal (name, force_tempenv)
> -+     const char *name;
> -+     int force_tempenv;
> -+{
> -+  SHELL_VAR *var;
> -+  int search_tempenv;
> -+  VAR_CONTEXT *vc;
> -+
> -+  var = (SHELL_VAR *)NULL;
> -+
> -+  /* If explicitly requested, first look in the temporary environment for
> -+     the variable.  This allows constructs such as "foo=x eval 'echo $foo'"
> -+     to get the `exported' value of $foo.  This happens if we are executing
> -+     a function or builtin, or if we are looking up a variable in a
> -+     "subshell environment". */
> -+  search_tempenv = force_tempenv || (expanding_redir == 0 && subshell_environment);
> -+
> -+  if (search_tempenv && temporary_env)		
> -+    var = hash_lookup (name, temporary_env);
> -+
> -+  vc = shell_variables;
> -+#if 0
> -+if (search_tempenv == 0 && /* (subshell_environment & SUBSHELL_COMSUB) && */
> -+    expanding_redir &&
> -+    (this_shell_builtin == eval_builtin || this_shell_builtin == command_builtin))
> -+  {
> -+  itrace("find_variable_internal: search_tempenv == 0: skipping VC_BLTNENV");
> -+  while (vc && (vc->flags & VC_BLTNENV))
> -+    vc = vc->down;
> -+  if (vc == 0)
> -+    vc = shell_variables;
> -+  }
> -+#endif
> -+
> -+  if (var == 0)
> -+    var = var_lookup (name, vc);
> -+
> -+  if (var == 0)
> -+    return ((SHELL_VAR *)NULL);
> -+
> -+  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
> -+}
> -+
> -+/* Look up and resolve the chain of nameref variables starting at V all the
> -+   way to NULL or non-nameref. */
> -+SHELL_VAR *
> -+find_variable_nameref (v)
> -+     SHELL_VAR *v;
> -+{
> -+  int level;
> -+  char *newname;
> -+  SHELL_VAR *orig, *oldv;
> -+
> -+  level = 0;
> -+  orig = v;
> -+  while (v && nameref_p (v))
> -+    {
> -+      level++;
> -+      if (level > NAMEREF_MAX)
> -+	return ((SHELL_VAR *)0);	/* error message here? */
> -+      newname = nameref_cell (v);
> -+      if (newname == 0 || *newname == '\0')
> -+	return ((SHELL_VAR *)0);
> -+      oldv = v;
> -+      v = find_variable_internal (newname, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
> -+      if (v == orig || v == oldv)
> -+	{
> -+	  internal_warning (_("%s: circular name reference"), orig->name);
> -+	  return ((SHELL_VAR *)0);
> -+	}
> -+    }
> -+  return v;
> -+}
> -+
> -+/* Resolve the chain of nameref variables for NAME.  XXX - could change later */
> -+SHELL_VAR *
> -+find_variable_last_nameref (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *v, *nv;
> -+  char *newname;
> -+  int level;
> -+
> -+  nv = v = find_variable_noref (name);
> -+  level = 0;
> -+  while (v && nameref_p (v))
> -+    {
> -+      level++;
> -+      if (level > NAMEREF_MAX)
> -+        return ((SHELL_VAR *)0);	/* error message here? */
> -+      newname = nameref_cell (v);
> -+      if (newname == 0 || *newname == '\0')
> -+	return ((SHELL_VAR *)0);
> -+      nv = v;
> -+      v = find_variable_internal (newname, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
> -+    }
> -+  return nv;
> -+}
> -+
> -+/* Resolve the chain of nameref variables for NAME.  XXX - could change later */
> -+SHELL_VAR *
> -+find_global_variable_last_nameref (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *v, *nv;
> -+  char *newname;
> -+  int level;
> -+
> -+  nv = v = find_global_variable_noref (name);
> -+  level = 0;
> -+  while (v && nameref_p (v))
> -+    {
> -+      level++;
> -+      if (level > NAMEREF_MAX)
> -+        return ((SHELL_VAR *)0);	/* error message here? */
> -+      newname = nameref_cell (v);
> -+      if (newname == 0 || *newname == '\0')
> -+	return ((SHELL_VAR *)0);
> -+      nv = v;
> -+      v = find_global_variable_noref (newname);
> -+    }
> -+  return nv;
> -+}
> -+
> -+static SHELL_VAR *
> -+find_nameref_at_context (v, vc)
> -+     SHELL_VAR *v;
> -+     VAR_CONTEXT *vc;
> -+{
> -+  SHELL_VAR *nv, *nv2;
> -+  VAR_CONTEXT *nvc;
> -+  char *newname;
> -+  int level;
> -+
> -+  nv = v;
> -+  level = 1;
> -+  while (nv && nameref_p (nv))
> -+    {
> -+      level++;
> -+      if (level > NAMEREF_MAX)
> -+        return ((SHELL_VAR *)NULL);
> -+      newname = nameref_cell (nv);
> -+      if (newname == 0 || *newname == '\0')
> -+        return ((SHELL_VAR *)NULL);      
> -+      nv2 = hash_lookup (newname, vc->table);
> -+      if (nv2 == 0)
> -+        break;
> -+      nv = nv2;
> -+    }
> -+  return nv;
> -+}
> -+
> -+/* Do nameref resolution from the VC, which is the local context for some
> -+   function or builtin, `up' the chain to the global variables context.  If
> -+   NVCP is not NULL, return the variable context where we finally ended the
> -+   nameref resolution (so the bind_variable_internal can use the correct
> -+   variable context and hash table). */
> -+static SHELL_VAR *
> -+find_variable_nameref_context (v, vc, nvcp)
> -+     SHELL_VAR *v;
> -+     VAR_CONTEXT *vc;
> -+     VAR_CONTEXT **nvcp;
> -+{
> -+  SHELL_VAR *nv, *nv2;
> -+  VAR_CONTEXT *nvc;
> -+
> -+  /* Look starting at the current context all the way `up' */
> -+  for (nv = v, nvc = vc; nvc; nvc = nvc->down)
> -+    {
> -+      nv2 = find_nameref_at_context (nv, nvc);
> -+      if (nv2 == 0)
> -+        continue;
> -+      nv = nv2;
> -+      if (*nvcp)
> -+        *nvcp = nvc;
> -+      if (nameref_p (nv) == 0)
> -+        break;
> -+    }
> -+  return (nameref_p (nv) ? (SHELL_VAR *)NULL : nv);
> -+}
> -+
> -+/* Do nameref resolution from the VC, which is the local context for some
> -+   function or builtin, `up' the chain to the global variables context.  If
> -+   NVCP is not NULL, return the variable context where we finally ended the
> -+   nameref resolution (so the bind_variable_internal can use the correct
> -+   variable context and hash table). */
> -+static SHELL_VAR *
> -+find_variable_last_nameref_context (v, vc, nvcp)
> -+     SHELL_VAR *v;
> -+     VAR_CONTEXT *vc;
> -+     VAR_CONTEXT **nvcp;
> -+{
> -+  SHELL_VAR *nv, *nv2;
> -+  VAR_CONTEXT *nvc;
> -+
> -+  /* Look starting at the current context all the way `up' */
> -+  for (nv = v, nvc = vc; nvc; nvc = nvc->down)
> -+    {
> -+      nv2 = find_nameref_at_context (nv, nvc);
> -+      if (nv2 == 0)
> -+	continue;
> -+      nv = nv2;
> -+      if (*nvcp)
> -+        *nvcp = nvc;
> -+    }
> -+  return (nameref_p (nv) ? nv : (SHELL_VAR *)NULL);
> -+}
> -+
> -+/* Find a variable, forcing a search of the temporary environment first */
> -+SHELL_VAR *
> -+find_variable_tempenv (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *var;
> -+
> -+  var = find_variable_internal (name, 1);
> -+  if (var && nameref_p (var))
> -+    var = find_variable_nameref (var);
> -+  return (var);
> -+}
> -+
> -+/* Find a variable, not forcing a search of the temporary environment first */
> -+SHELL_VAR *
> -+find_variable_notempenv (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *var;
> -+
> -+  var = find_variable_internal (name, 0);
> -+  if (var && nameref_p (var))
> -+    var = find_variable_nameref (var);
> -+  return (var);
> -+}
> -+
> -+SHELL_VAR *
> -+find_global_variable (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *var;
> -+
> -+  var = var_lookup (name, global_variables);
> -+  if (var && nameref_p (var))
> -+    var = find_variable_nameref (var);
> -+
> -+  if (var == 0)
> -+    return ((SHELL_VAR *)NULL);
> -+
> -+  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
> -+}
> -+
> -+SHELL_VAR *
> -+find_global_variable_noref (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *var;
> -+
> -+  var = var_lookup (name, global_variables);
> -+
> -+  if (var == 0)
> -+    return ((SHELL_VAR *)NULL);
> -+
> -+  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
> -+}
> -+
> -+SHELL_VAR *
> -+find_shell_variable (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *var;
> -+
> -+  var = var_lookup (name, shell_variables);
> -+  if (var && nameref_p (var))
> -+    var = find_variable_nameref (var);
> -+
> -+  if (var == 0)
> -+    return ((SHELL_VAR *)NULL);
> -+
> -+  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
> -+}
> -+
> -+/* Look up the variable entry named NAME.  Returns the entry or NULL. */
> -+SHELL_VAR *
> -+find_variable (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  last_table_searched = 0;
> -+  v = find_variable_internal (name, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
> -+  if (v && nameref_p (v))
> -+    v = find_variable_nameref (v);
> -+  return v;
> -+}
> -+
> -+SHELL_VAR *
> -+find_variable_noref (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  v = find_variable_internal (name, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
> -+  return v;
> -+}
> -+
> -+/* Look up the function entry whose name matches STRING.
> -+   Returns the entry or NULL. */
> -+SHELL_VAR *
> -+find_function (name)
> -+     const char *name;
> -+{
> -+  return (hash_lookup (name, shell_functions));
> -+}
> -+
> -+/* Find the function definition for the shell function named NAME.  Returns
> -+   the entry or NULL. */
> -+FUNCTION_DEF *
> -+find_function_def (name)
> -+     const char *name;
> -+{
> -+#if defined (DEBUGGER)
> -+  return ((FUNCTION_DEF *)hash_lookup (name, shell_function_defs));
> -+#else
> -+  return ((FUNCTION_DEF *)0);
> -+#endif
> -+}
> -+
> -+/* Return the value of VAR.  VAR is assumed to have been the result of a
> -+   lookup without any subscript, if arrays are compiled into the shell. */
> -+char *
> -+get_variable_value (var)
> -+     SHELL_VAR *var;
> -+{
> -+  if (var == 0)
> -+    return ((char *)NULL);
> -+#if defined (ARRAY_VARS)
> -+  else if (array_p (var))
> -+    return (array_reference (array_cell (var), 0));
> -+  else if (assoc_p (var))
> -+    return (assoc_reference (assoc_cell (var), "0"));
> -+#endif
> -+  else
> -+    return (value_cell (var));
> -+}
> -+
> -+/* Return the string value of a variable.  Return NULL if the variable
> -+   doesn't exist.  Don't cons a new string.  This is a potential memory
> -+   leak if the variable is found in the temporary environment.  Since
> -+   functions and variables have separate name spaces, returns NULL if
> -+   var_name is a shell function only. */
> -+char *
> -+get_string_value (var_name)
> -+     const char *var_name;
> -+{
> -+  SHELL_VAR *var;
> -+
> -+  var = find_variable (var_name);
> -+  return ((var) ? get_variable_value (var) : (char *)NULL);
> -+}
> -+
> -+/* This is present for use by the tilde and readline libraries. */
> -+char *
> -+sh_get_env_value (v)
> -+     const char *v;
> -+{
> -+  return get_string_value (v);
> -+}
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*		  Creating and setting variables		    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+/* Set NAME to VALUE if NAME has no value. */
> -+SHELL_VAR *
> -+set_if_not (name, value)
> -+     char *name, *value;
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  if (shell_variables == 0)
> -+    create_variable_tables ();
> -+
> -+  v = find_variable (name);
> -+  if (v == 0)
> -+    v = bind_variable_internal (name, value, global_variables->table, HASH_NOSRCH, 0);
> -+  return (v);
> -+}
> -+
> -+/* Create a local variable referenced by NAME. */
> -+SHELL_VAR *
> -+make_local_variable (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *new_var, *old_var;
> -+  VAR_CONTEXT *vc;
> -+  int was_tmpvar;
> -+  char *tmp_value;
> -+
> -+  /* local foo; local foo;  is a no-op. */
> -+  old_var = find_variable (name);
> -+  if (old_var && local_p (old_var) && old_var->context == variable_context)
> -+    return (old_var);
> -+
> -+  was_tmpvar = old_var && tempvar_p (old_var);
> -+  /* If we're making a local variable in a shell function, the temporary env
> -+     has already been merged into the function's variable context stack.  We
> -+     can assume that a temporary var in the same context appears in the same
> -+     VAR_CONTEXT and can safely be returned without creating a new variable
> -+     (which results in duplicate names in the same VAR_CONTEXT->table */
> -+  /* We can't just test tmpvar_p because variables in the temporary env given
> -+     to a shell function appear in the function's local variable VAR_CONTEXT
> -+     but retain their tempvar attribute.  We want temporary variables that are
> -+     found in temporary_env, hence the test for last_table_searched, which is
> -+     set in hash_lookup and only (so far) checked here. */
> -+  if (was_tmpvar && old_var->context == variable_context && last_table_searched != temporary_env)
> -+    {
> -+      VUNSETATTR (old_var, att_invisible);
> -+      return (old_var);
> -+    }
> -+  if (was_tmpvar)
> -+    tmp_value = value_cell (old_var);
> -+
> -+  for (vc = shell_variables; vc; vc = vc->down)
> -+    if (vc_isfuncenv (vc) && vc->scope == variable_context)
> -+      break;
> -+
> -+  if (vc == 0)
> -+    {
> -+      internal_error (_("make_local_variable: no function context at current scope"));
> -+      return ((SHELL_VAR *)NULL);
> -+    }
> -+  else if (vc->table == 0)
> -+    vc->table = hash_create (TEMPENV_HASH_BUCKETS);
> -+
> -+  /* Since this is called only from the local/declare/typeset code, we can
> -+     call builtin_error here without worry (of course, it will also work
> -+     for anything that sets this_command_name).  Variables with the `noassign'
> -+     attribute may not be made local.  The test against old_var's context
> -+     level is to disallow local copies of readonly global variables (since I
> -+     believe that this could be a security hole).  Readonly copies of calling
> -+     function local variables are OK. */
> -+  if (old_var && (noassign_p (old_var) ||
> -+		 (readonly_p (old_var) && old_var->context == 0)))
> -+    {
> -+      if (readonly_p (old_var))
> -+	sh_readonly (name);
> -+      else if (noassign_p (old_var))
> -+	builtin_error (_("%s: variable may not be assigned value"), name);
> -+#if 0
> -+      /* Let noassign variables through with a warning */
> -+      if (readonly_p (old_var))
> -+#endif
> -+	return ((SHELL_VAR *)NULL);
> -+    }
> -+
> -+  if (old_var == 0)
> -+    new_var = make_new_variable (name, vc->table);
> -+  else
> -+    {
> -+      new_var = make_new_variable (name, vc->table);
> -+
> -+      /* If we found this variable in one of the temporary environments,
> -+	 inherit its value.  Watch to see if this causes problems with
> -+	 things like `x=4 local x'. XXX - see above for temporary env
> -+	 variables with the same context level as variable_context */
> -+      /* XXX - we should only do this if the variable is not an array. */
> -+      if (was_tmpvar)
> -+	var_setvalue (new_var, savestring (tmp_value));
> -+
> -+      new_var->attributes = exported_p (old_var) ? att_exported : 0;
> -+    }
> -+
> -+  vc->flags |= VC_HASLOCAL;
> -+
> -+  new_var->context = variable_context;
> -+  VSETATTR (new_var, att_local);
> -+
> -+  if (ifsname (name))
> -+    setifs (new_var);
> -+
> -+  if (was_tmpvar == 0)
> -+    VSETATTR (new_var, att_invisible);	/* XXX */
> -+  return (new_var);
> -+}
> -+
> -+/* Create a new shell variable with name NAME. */
> -+static SHELL_VAR *
> -+new_shell_variable (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *entry;
> -+
> -+  entry = (SHELL_VAR *)xmalloc (sizeof (SHELL_VAR));
> -+
> -+  entry->name = savestring (name);
> -+  var_setvalue (entry, (char *)NULL);
> -+  CLEAR_EXPORTSTR (entry);
> -+
> -+  entry->dynamic_value = (sh_var_value_func_t *)NULL;
> -+  entry->assign_func = (sh_var_assign_func_t *)NULL;
> -+
> -+  entry->attributes = 0;
> -+
> -+  /* Always assume variables are to be made at toplevel!
> -+     make_local_variable has the responsibility of changing the
> -+     variable context. */
> -+  entry->context = 0;
> -+
> -+  return (entry);
> -+}
> -+
> -+/* Create a new shell variable with name NAME and add it to the hash table
> -+   TABLE. */
> -+static SHELL_VAR *
> -+make_new_variable (name, table)
> -+     const char *name;
> -+     HASH_TABLE *table;
> -+{
> -+  SHELL_VAR *entry;
> -+  BUCKET_CONTENTS *elt;
> -+
> -+  entry = new_shell_variable (name);
> -+
> -+  /* Make sure we have a shell_variables hash table to add to. */
> -+  if (shell_variables == 0)
> -+    create_variable_tables ();
> -+
> -+  elt = hash_insert (savestring (name), table, HASH_NOSRCH);
> -+  elt->data = (PTR_T)entry;
> -+
> -+  return entry;
> -+}
> -+
> -+#if defined (ARRAY_VARS)
> -+SHELL_VAR *
> -+make_new_array_variable (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *entry;
> -+  ARRAY *array;
> -+
> -+  entry = make_new_variable (name, global_variables->table);
> -+  array = array_create ();
> -+
> -+  var_setarray (entry, array);
> -+  VSETATTR (entry, att_array);
> -+  return entry;
> -+}
> -+
> -+SHELL_VAR *
> -+make_local_array_variable (name, assoc_ok)
> -+     char *name;
> -+     int assoc_ok;
> -+{
> -+  SHELL_VAR *var;
> -+  ARRAY *array;
> -+
> -+  var = make_local_variable (name);
> -+  if (var == 0 || array_p (var) || (assoc_ok && assoc_p (var)))
> -+    return var;
> -+
> -+  array = array_create ();
> -+
> -+  dispose_variable_value (var);
> -+  var_setarray (var, array);
> -+  VSETATTR (var, att_array);
> -+  return var;
> -+}
> -+
> -+SHELL_VAR *
> -+make_new_assoc_variable (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *entry;
> -+  HASH_TABLE *hash;
> -+
> -+  entry = make_new_variable (name, global_variables->table);
> -+  hash = assoc_create (0);
> -+
> -+  var_setassoc (entry, hash);
> -+  VSETATTR (entry, att_assoc);
> -+  return entry;
> -+}
> -+
> -+SHELL_VAR *
> -+make_local_assoc_variable (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *var;
> -+  HASH_TABLE *hash;
> -+
> -+  var = make_local_variable (name);
> -+  if (var == 0 || assoc_p (var))
> -+    return var;
> -+
> -+  dispose_variable_value (var);
> -+  hash = assoc_create (0);
> -+
> -+  var_setassoc (var, hash);
> -+  VSETATTR (var, att_assoc);
> -+  return var;
> -+}
> -+#endif
> -+
> -+char *
> -+make_variable_value (var, value, flags)
> -+     SHELL_VAR *var;
> -+     char *value;
> -+     int flags;
> -+{
> -+  char *retval, *oval;
> -+  intmax_t lval, rval;
> -+  int expok, olen, op;
> -+
> -+  /* If this variable has had its type set to integer (via `declare -i'),
> -+     then do expression evaluation on it and store the result.  The
> -+     functions in expr.c (evalexp()) and bind_int_variable() are responsible
> -+     for turning off the integer flag if they don't want further
> -+     evaluation done. */
> -+  if (integer_p (var))
> -+    {
> -+      if (flags & ASS_APPEND)
> -+	{
> -+	  oval = value_cell (var);
> -+	  lval = evalexp (oval, &expok);	/* ksh93 seems to do this */
> -+	  if (expok == 0)
> -+	    {
> -+	      top_level_cleanup ();
> -+	      jump_to_top_level (DISCARD);
> -+	    }
> -+	}
> -+      rval = evalexp (value, &expok);
> -+      if (expok == 0)
> -+	{
> -+	  top_level_cleanup ();
> -+	  jump_to_top_level (DISCARD);
> -+	}
> -+      /* This can be fooled if the variable's value changes while evaluating
> -+	 `rval'.  We can change it if we move the evaluation of lval to here. */
> -+      if (flags & ASS_APPEND)
> -+	rval += lval;
> -+      retval = itos (rval);
> -+    }
> -+#if defined (CASEMOD_ATTRS)
> -+  else if (capcase_p (var) || uppercase_p (var) || lowercase_p (var))
> -+    {
> -+      if (flags & ASS_APPEND)
> -+	{
> -+	  oval = get_variable_value (var);
> -+	  if (oval == 0)	/* paranoia */
> -+	    oval = "";
> -+	  olen = STRLEN (oval);
> -+	  retval = (char *)xmalloc (olen + (value ? STRLEN (value) : 0) + 1);
> -+	  strcpy (retval, oval);
> -+	  if (value)
> -+	    strcpy (retval+olen, value);
> -+	}
> -+      else if (*value)
> -+	retval = savestring (value);
> -+      else
> -+	{
> -+	  retval = (char *)xmalloc (1);
> -+	  retval[0] = '\0';
> -+	}
> -+      op = capcase_p (var) ? CASE_CAPITALIZE
> -+			 : (uppercase_p (var) ? CASE_UPPER : CASE_LOWER);
> -+      oval = sh_modcase (retval, (char *)0, op);
> -+      free (retval);
> -+      retval = oval;
> -+    }
> -+#endif /* CASEMOD_ATTRS */
> -+  else if (value)
> -+    {
> -+      if (flags & ASS_APPEND)
> -+	{
> -+	  oval = get_variable_value (var);
> -+	  if (oval == 0)	/* paranoia */
> -+	    oval = "";
> -+	  olen = STRLEN (oval);
> -+	  retval = (char *)xmalloc (olen + (value ? STRLEN (value) : 0) + 1);
> -+	  strcpy (retval, oval);
> -+	  if (value)
> -+	    strcpy (retval+olen, value);
> -+	}
> -+      else if (*value)
> -+	retval = savestring (value);
> -+      else
> -+	{
> -+	  retval = (char *)xmalloc (1);
> -+	  retval[0] = '\0';
> -+	}
> -+    }
> -+  else
> -+    retval = (char *)NULL;
> -+
> -+  return retval;
> -+}
> -+
> -+/* Bind a variable NAME to VALUE in the HASH_TABLE TABLE, which may be the
> -+   temporary environment (but usually is not). */
> -+static SHELL_VAR *
> -+bind_variable_internal (name, value, table, hflags, aflags)
> -+     const char *name;
> -+     char *value;
> -+     HASH_TABLE *table;
> -+     int hflags, aflags;
> -+{
> -+  char *newval;
> -+  SHELL_VAR *entry;
> -+
> -+  entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
> -+  /* Follow the nameref chain here if this is the global variables table */
> -+  if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
> -+    {
> -+      entry = find_global_variable (entry->name);
> -+      /* Let's see if we have a nameref referencing a variable that hasn't yet
> -+	 been created. */
> -+      if (entry == 0)
> -+	entry = find_variable_last_nameref (name);	/* XXX */
> -+      if (entry == 0)					/* just in case */
> -+        return (entry);
> -+    }
> -+
> -+  /* The first clause handles `declare -n ref; ref=x;' */
> -+  if (entry && invisible_p (entry) && nameref_p (entry))
> -+    goto assign_value;
> -+  else if (entry && nameref_p (entry))
> -+    {
> -+      newval = nameref_cell (entry);
> -+#if defined (ARRAY_VARS)
> -+      /* declare -n foo=x[2] */
> -+      if (valid_array_reference (newval))
> -+        /* XXX - should it be aflags? */
> -+	entry = assign_array_element (newval, make_variable_value (entry, value, 0), aflags);
> -+      else
> -+#endif
> -+      {
> -+      entry = make_new_variable (newval, table);
> -+      var_setvalue (entry, make_variable_value (entry, value, 0));
> -+      }
> -+    }
> -+  else if (entry == 0)
> -+    {
> -+      entry = make_new_variable (name, table);
> -+      var_setvalue (entry, make_variable_value (entry, value, 0)); /* XXX */
> -+    }
> -+  else if (entry->assign_func)	/* array vars have assign functions now */
> -+    {
> -+      INVALIDATE_EXPORTSTR (entry);
> -+      newval = (aflags & ASS_APPEND) ? make_variable_value (entry, value, aflags) : value;
> -+      if (assoc_p (entry))
> -+	entry = (*(entry->assign_func)) (entry, newval, -1, savestring ("0"));
> -+      else if (array_p (entry))
> -+	entry = (*(entry->assign_func)) (entry, newval, 0, 0);
> -+      else
> -+	entry = (*(entry->assign_func)) (entry, newval, -1, 0);
> -+      if (newval != value)
> -+	free (newval);
> -+      return (entry);
> -+    }
> -+  else
> -+    {
> -+assign_value:
> -+      if (readonly_p (entry) || noassign_p (entry))
> -+	{
> -+	  if (readonly_p (entry))
> -+	    err_readonly (name);
> -+	  return (entry);
> -+	}
> -+
> -+      /* Variables which are bound are visible. */
> -+      VUNSETATTR (entry, att_invisible);
> -+
> -+#if defined (ARRAY_VARS)
> -+      if (assoc_p (entry) || array_p (entry))
> -+        newval = make_array_variable_value (entry, 0, "0", value, aflags);
> -+      else
> -+#endif
> -+
> -+      newval = make_variable_value (entry, value, aflags);	/* XXX */
> -+
> -+      /* Invalidate any cached export string */
> -+      INVALIDATE_EXPORTSTR (entry);
> -+
> -+#if defined (ARRAY_VARS)
> -+      /* XXX -- this bears looking at again -- XXX */
> -+      /* If an existing array variable x is being assigned to with x=b or
> -+	 `read x' or something of that nature, silently convert it to
> -+	 x[0]=b or `read x[0]'. */
> -+      if (assoc_p (entry))
> -+	{
> -+	  assoc_insert (assoc_cell (entry), savestring ("0"), newval);
> -+	  free (newval);
> -+	}
> -+      else if (array_p (entry))
> -+	{
> -+	  array_insert (array_cell (entry), 0, newval);
> -+	  free (newval);
> -+	}
> -+      else
> -+#endif
> -+	{
> -+	  FREE (value_cell (entry));
> -+	  var_setvalue (entry, newval);
> -+	}
> -+    }
> -+
> -+  if (mark_modified_vars)
> -+    VSETATTR (entry, att_exported);
> -+
> -+  if (exported_p (entry))
> -+    array_needs_making = 1;
> -+
> -+  return (entry);
> -+}
> -+	
> -+/* Bind a variable NAME to VALUE.  This conses up the name
> -+   and value strings.  If we have a temporary environment, we bind there
> -+   first, then we bind into shell_variables. */
> -+
> -+SHELL_VAR *
> -+bind_variable (name, value, flags)
> -+     const char *name;
> -+     char *value;
> -+     int flags;
> -+{
> -+  SHELL_VAR *v, *nv;
> -+  VAR_CONTEXT *vc, *nvc;
> -+  int level;
> -+
> -+  if (shell_variables == 0)
> -+    create_variable_tables ();
> -+
> -+  /* If we have a temporary environment, look there first for the variable,
> -+     and, if found, modify the value there before modifying it in the
> -+     shell_variables table.  This allows sourced scripts to modify values
> -+     given to them in a temporary environment while modifying the variable
> -+     value that the caller sees. */
> -+  if (temporary_env)
> -+    bind_tempenv_variable (name, value);
> -+
> -+  /* XXX -- handle local variables here. */
> -+  for (vc = shell_variables; vc; vc = vc->down)
> -+    {
> -+      if (vc_isfuncenv (vc) || vc_isbltnenv (vc))
> -+	{
> -+	  v = hash_lookup (name, vc->table);
> -+	  nvc = vc;
> -+	  if (v && nameref_p (v))
> -+	    {
> -+	      nv = find_variable_nameref_context (v, vc, &nvc);
> -+	      if (nv == 0)
> -+		{
> -+		  nv = find_variable_last_nameref_context (v, vc, &nvc);
> -+		  if (nv && nameref_p (nv))
> -+		    {
> -+		      /* If this nameref variable doesn't have a value yet,
> -+			 set the value.  Otherwise, assign using the value as
> -+			 normal. */
> -+		      if (nameref_cell (nv) == 0)
> -+			return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
> -+		      return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags));
> -+		    }
> -+		  else
> -+		    v = nv;
> -+		}
> -+	      else
> -+	        v = nv;
> -+	    }
> -+	  if (v)
> -+	    return (bind_variable_internal (v->name, value, nvc->table, 0, flags));
> -+	}
> -+    }
> -+  /* bind_variable_internal will handle nameref resolution in this case */
> -+  return (bind_variable_internal (name, value, global_variables->table, 0, flags));
> -+}
> -+
> -+SHELL_VAR *
> -+bind_global_variable (name, value, flags)
> -+     const char *name;
> -+     char *value;
> -+     int flags;
> -+{
> -+  SHELL_VAR *v, *nv;
> -+  VAR_CONTEXT *vc, *nvc;
> -+  int level;
> -+
> -+  if (shell_variables == 0)
> -+    create_variable_tables ();
> -+
> -+  /* bind_variable_internal will handle nameref resolution in this case */
> -+  return (bind_variable_internal (name, value, global_variables->table, 0, flags));
> -+}
> -+
> -+/* Make VAR, a simple shell variable, have value VALUE.  Once assigned a
> -+   value, variables are no longer invisible.  This is a duplicate of part
> -+   of the internals of bind_variable.  If the variable is exported, or
> -+   all modified variables should be exported, mark the variable for export
> -+   and note that the export environment needs to be recreated. */
> -+SHELL_VAR *
> -+bind_variable_value (var, value, aflags)
> -+     SHELL_VAR *var;
> -+     char *value;
> -+     int aflags;
> -+{
> -+  char *t;
> -+  int invis;
> -+
> -+  invis = invisible_p (var);
> -+  VUNSETATTR (var, att_invisible);
> -+
> -+  if (var->assign_func)
> -+    {
> -+      /* If we're appending, we need the old value, so use
> -+	 make_variable_value */
> -+      t = (aflags & ASS_APPEND) ? make_variable_value (var, value, aflags) : value;
> -+      (*(var->assign_func)) (var, t, -1, 0);
> -+      if (t != value && t)
> -+	free (t);      
> -+    }
> -+  else
> -+    {
> -+      t = make_variable_value (var, value, aflags);
> -+#if defined (ARRAY_VARS)
> -+      if ((aflags & ASS_NAMEREF) && (t == 0 || *t == 0 || (legal_identifier (t) == 0 && valid_array_reference (t) == 0)))
> -+#else
> -+      if ((aflags & ASS_NAMEREF) && (t == 0 || *t == 0 || legal_identifier (t) == 0))
> -+#endif
> -+	{
> -+	  free (t);
> -+	  if (invis)
> -+	    VSETATTR (var, att_invisible);	/* XXX */
> -+	  return ((SHELL_VAR *)NULL);
> -+	}
> -+      FREE (value_cell (var));
> -+      var_setvalue (var, t);
> -+    }
> -+
> -+  INVALIDATE_EXPORTSTR (var);
> -+
> -+  if (mark_modified_vars)
> -+    VSETATTR (var, att_exported);
> -+
> -+  if (exported_p (var))
> -+    array_needs_making = 1;
> -+
> -+  return (var);
> -+}
> -+
> -+/* Bind/create a shell variable with the name LHS to the RHS.
> -+   This creates or modifies a variable such that it is an integer.
> -+
> -+   This used to be in expr.c, but it is here so that all of the
> -+   variable binding stuff is localized.  Since we don't want any
> -+   recursive evaluation from bind_variable() (possible without this code,
> -+   since bind_variable() calls the evaluator for variables with the integer
> -+   attribute set), we temporarily turn off the integer attribute for each
> -+   variable we set here, then turn it back on after binding as necessary. */
> -+
> -+SHELL_VAR *
> -+bind_int_variable (lhs, rhs)
> -+     char *lhs, *rhs;
> -+{
> -+  register SHELL_VAR *v;
> -+  int isint, isarr, implicitarray;
> -+
> -+  isint = isarr = implicitarray = 0;
> -+#if defined (ARRAY_VARS)
> -+  if (valid_array_reference (lhs))
> -+    {
> -+      isarr = 1;
> -+      v = array_variable_part (lhs, (char **)0, (int *)0);
> -+    }
> -+  else
> -+#endif
> -+    v = find_variable (lhs);
> -+
> -+  if (v)
> -+    {
> -+      isint = integer_p (v);
> -+      VUNSETATTR (v, att_integer);
> -+#if defined (ARRAY_VARS)
> -+      if (array_p (v) && isarr == 0)
> -+	implicitarray = 1;
> -+#endif
> -+    }
> -+
> -+#if defined (ARRAY_VARS)
> -+  if (isarr)
> -+    v = assign_array_element (lhs, rhs, 0);
> -+  else if (implicitarray)
> -+    v = bind_array_variable (lhs, 0, rhs, 0);
> -+  else
> -+#endif
> -+    v = bind_variable (lhs, rhs, 0);
> -+
> -+  if (v && isint)
> -+    VSETATTR (v, att_integer);
> -+
> -+  VUNSETATTR (v, att_invisible);
> -+
> -+  return (v);
> -+}
> -+
> -+SHELL_VAR *
> -+bind_var_to_int (var, val)
> -+     char *var;
> -+     intmax_t val;
> -+{
> -+  char ibuf[INT_STRLEN_BOUND (intmax_t) + 1], *p;
> -+
> -+  p = fmtulong (val, 10, ibuf, sizeof (ibuf), 0);
> -+  return (bind_int_variable (var, p));
> -+}
> -+
> -+/* Do a function binding to a variable.  You pass the name and
> -+   the command to bind to.  This conses the name and command. */
> -+SHELL_VAR *
> -+bind_function (name, value)
> -+     const char *name;
> -+     COMMAND *value;
> -+{
> -+  SHELL_VAR *entry;
> -+
> -+  entry = find_function (name);
> -+  if (entry == 0)
> -+    {
> -+      BUCKET_CONTENTS *elt;
> -+
> -+      elt = hash_insert (savestring (name), shell_functions, HASH_NOSRCH);
> -+      entry = new_shell_variable (name);
> -+      elt->data = (PTR_T)entry;
> -+    }
> -+  else
> -+    INVALIDATE_EXPORTSTR (entry);
> -+
> -+  if (var_isset (entry))
> -+    dispose_command (function_cell (entry));
> -+
> -+  if (value)
> -+    var_setfunc (entry, copy_command (value));
> -+  else
> -+    var_setfunc (entry, 0);
> -+
> -+  VSETATTR (entry, att_function);
> -+
> -+  if (mark_modified_vars)
> -+    VSETATTR (entry, att_exported);
> -+
> -+  VUNSETATTR (entry, att_invisible);		/* Just to be sure */
> -+
> -+  if (exported_p (entry))
> -+    array_needs_making = 1;
> -+
> -+#if defined (PROGRAMMABLE_COMPLETION)
> -+  set_itemlist_dirty (&it_functions);
> -+#endif
> -+
> -+  return (entry);
> -+}
> -+
> -+#if defined (DEBUGGER)
> -+/* Bind a function definition, which includes source file and line number
> -+   information in addition to the command, into the FUNCTION_DEF hash table.*/
> -+void
> -+bind_function_def (name, value)
> -+     const char *name;
> -+     FUNCTION_DEF *value;
> -+{
> -+  FUNCTION_DEF *entry;
> -+  BUCKET_CONTENTS *elt;
> -+  COMMAND *cmd;
> -+
> -+  entry = find_function_def (name);
> -+  if (entry)
> -+    {
> -+      dispose_function_def_contents (entry);
> -+      entry = copy_function_def_contents (value, entry);
> -+    }
> -+  else
> -+    {
> -+      cmd = value->command;
> -+      value->command = 0;
> -+      entry = copy_function_def (value);
> -+      value->command = cmd;
> -+
> -+      elt = hash_insert (savestring (name), shell_function_defs, HASH_NOSRCH);
> -+      elt->data = (PTR_T *)entry;
> -+    }
> -+}
> -+#endif /* DEBUGGER */
> -+
> -+/* Add STRING, which is of the form foo=bar, to the temporary environment
> -+   HASH_TABLE (temporary_env).  The functions in execute_cmd.c are
> -+   responsible for moving the main temporary env to one of the other
> -+   temporary environments.  The expansion code in subst.c calls this. */
> -+int
> -+assign_in_env (word, flags)
> -+     WORD_DESC *word;
> -+     int flags;
> -+{
> -+  int offset, aflags;
> -+  char *name, *temp, *value;
> -+  SHELL_VAR *var;
> -+  const char *string;
> -+
> -+  string = word->word;
> -+
> -+  aflags = 0;
> -+  offset = assignment (string, 0);
> -+  name = savestring (string);
> -+  value = (char *)NULL;
> -+
> -+  if (name[offset] == '=')
> -+    {
> -+      name[offset] = 0;
> -+
> -+      /* don't ignore the `+' when assigning temporary environment */
> -+      if (name[offset - 1] == '+')
> -+	{
> -+	  name[offset - 1] = '\0';
> -+	  aflags |= ASS_APPEND;
> -+	}
> -+
> -+      var = find_variable (name);
> -+      if (var && (readonly_p (var) || noassign_p (var)))
> -+	{
> -+	  if (readonly_p (var))
> -+	    err_readonly (name);
> -+	  free (name);
> -+  	  return (0);
> -+	}
> -+
> -+      temp = name + offset + 1;
> -+      value = expand_assignment_string_to_string (temp, 0);
> -+
> -+      if (var && (aflags & ASS_APPEND))
> -+	{
> -+	  temp = make_variable_value (var, value, aflags);
> -+	  FREE (value);
> -+	  value = temp;
> -+	}
> -+    }
> -+
> -+  if (temporary_env == 0)
> -+    temporary_env = hash_create (TEMPENV_HASH_BUCKETS);
> -+
> -+  var = hash_lookup (name, temporary_env);
> -+  if (var == 0)
> -+    var = make_new_variable (name, temporary_env);
> -+  else
> -+    FREE (value_cell (var));
> -+
> -+  if (value == 0)
> -+    {
> -+      value = (char *)xmalloc (1);	/* like do_assignment_internal */
> -+      value[0] = '\0';
> -+    }
> -+
> -+  var_setvalue (var, value);
> -+  var->attributes |= (att_exported|att_tempvar);
> -+  var->context = variable_context;	/* XXX */
> -+
> -+  INVALIDATE_EXPORTSTR (var);
> -+  var->exportstr = mk_env_string (name, value, 0);
> -+
> -+  array_needs_making = 1;
> -+
> -+  if (flags)
> -+    stupidly_hack_special_variables (name);
> -+
> -+  if (echo_command_at_execute)
> -+    /* The Korn shell prints the `+ ' in front of assignment statements,
> -+	so we do too. */
> -+    xtrace_print_assignment (name, value, 0, 1);
> -+
> -+  free (name);
> -+  return 1;
> -+}
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*			Copying variables			    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+#ifdef INCLUDE_UNUSED
> -+/* Copy VAR to a new data structure and return that structure. */
> -+SHELL_VAR *
> -+copy_variable (var)
> -+     SHELL_VAR *var;
> -+{
> -+  SHELL_VAR *copy = (SHELL_VAR *)NULL;
> -+
> -+  if (var)
> -+    {
> -+      copy = (SHELL_VAR *)xmalloc (sizeof (SHELL_VAR));
> -+
> -+      copy->attributes = var->attributes;
> -+      copy->name = savestring (var->name);
> -+
> -+      if (function_p (var))
> -+	var_setfunc (copy, copy_command (function_cell (var)));
> -+#if defined (ARRAY_VARS)
> -+      else if (array_p (var))
> -+	var_setarray (copy, array_copy (array_cell (var)));
> -+      else if (assoc_p (var))
> -+	var_setassoc (copy, assoc_copy (assoc_cell (var)));
> -+#endif
> -+      else if (nameref_cell (var))	/* XXX - nameref */
> -+	var_setref (copy, savestring (nameref_cell (var)));
> -+      else if (value_cell (var))	/* XXX - nameref */
> -+	var_setvalue (copy, savestring (value_cell (var)));
> -+      else
> -+	var_setvalue (copy, (char *)NULL);
> -+
> -+      copy->dynamic_value = var->dynamic_value;
> -+      copy->assign_func = var->assign_func;
> -+
> -+      copy->exportstr = COPY_EXPORTSTR (var);
> -+
> -+      copy->context = var->context;
> -+    }
> -+  return (copy);
> -+}
> -+#endif
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*		  Deleting and unsetting variables		    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+/* Dispose of the information attached to VAR. */
> -+static void
> -+dispose_variable_value (var)
> -+     SHELL_VAR *var;
> -+{
> -+  if (function_p (var))
> -+    dispose_command (function_cell (var));
> -+#if defined (ARRAY_VARS)
> -+  else if (array_p (var))
> -+    array_dispose (array_cell (var));
> -+  else if (assoc_p (var))
> -+    assoc_dispose (assoc_cell (var));
> -+#endif
> -+  else if (nameref_p (var))
> -+    FREE (nameref_cell (var));
> -+  else
> -+    FREE (value_cell (var));
> -+}
> -+
> -+void
> -+dispose_variable (var)
> -+     SHELL_VAR *var;
> -+{
> -+  if (var == 0)
> -+    return;
> -+
> -+  if (nofree_p (var) == 0)
> -+    dispose_variable_value (var);
> -+
> -+  FREE_EXPORTSTR (var);
> -+
> -+  free (var->name);
> -+
> -+  if (exported_p (var))
> -+    array_needs_making = 1;
> -+
> -+  free (var);
> -+}
> -+
> -+/* Unset the shell variable referenced by NAME.  Unsetting a nameref variable
> -+   unsets the variable it resolves to but leaves the nameref alone. */
> -+int
> -+unbind_variable (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *v, *nv;
> -+  int r;
> -+
> -+  v = var_lookup (name, shell_variables);
> -+  nv = (v && nameref_p (v)) ? find_variable_nameref (v) : (SHELL_VAR *)NULL;
> -+
> -+  r = nv ? makunbound (nv->name, shell_variables) : makunbound (name, shell_variables);
> -+  return r;
> -+}
> -+
> -+/* Unbind NAME, where NAME is assumed to be a nameref variable */
> -+int
> -+unbind_nameref (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  v = var_lookup (name, shell_variables);
> -+  if (v && nameref_p (v))
> -+    return makunbound (name, shell_variables);
> -+  return 0;
> -+}
> -+
> -+/* Unset the shell function named NAME. */
> -+int
> -+unbind_func (name)
> -+     const char *name;
> -+{
> -+  BUCKET_CONTENTS *elt;
> -+  SHELL_VAR *func;
> -+
> -+  elt = hash_remove (name, shell_functions, 0);
> -+
> -+  if (elt == 0)
> -+    return -1;
> -+
> -+#if defined (PROGRAMMABLE_COMPLETION)
> -+  set_itemlist_dirty (&it_functions);
> -+#endif
> -+
> -+  func = (SHELL_VAR *)elt->data;
> -+  if (func)
> -+    {
> -+      if (exported_p (func))
> -+	array_needs_making++;
> -+      dispose_variable (func);
> -+    }
> -+
> -+  free (elt->key);
> -+  free (elt);
> -+
> -+  return 0;  
> -+}
> -+
> -+#if defined (DEBUGGER)
> -+int
> -+unbind_function_def (name)
> -+     const char *name;
> -+{
> -+  BUCKET_CONTENTS *elt;
> -+  FUNCTION_DEF *funcdef;
> -+
> -+  elt = hash_remove (name, shell_function_defs, 0);
> -+
> -+  if (elt == 0)
> -+    return -1;
> -+
> -+  funcdef = (FUNCTION_DEF *)elt->data;
> -+  if (funcdef)
> -+    dispose_function_def (funcdef);
> -+
> -+  free (elt->key);
> -+  free (elt);
> -+
> -+  return 0;  
> -+}
> -+#endif /* DEBUGGER */
> -+
> -+int
> -+delete_var (name, vc)
> -+     const char *name;
> -+     VAR_CONTEXT *vc;
> -+{
> -+  BUCKET_CONTENTS *elt;
> -+  SHELL_VAR *old_var;
> -+  VAR_CONTEXT *v;
> -+
> -+  for (elt = (BUCKET_CONTENTS *)NULL, v = vc; v; v = v->down)
> -+    if (elt = hash_remove (name, v->table, 0))
> -+      break;
> -+
> -+  if (elt == 0)
> -+    return (-1);
> -+
> -+  old_var = (SHELL_VAR *)elt->data;
> -+  free (elt->key);
> -+  free (elt);
> -+
> -+  dispose_variable (old_var);
> -+  return (0);
> -+}
> -+
> -+/* Make the variable associated with NAME go away.  HASH_LIST is the
> -+   hash table from which this variable should be deleted (either
> -+   shell_variables or shell_functions).
> -+   Returns non-zero if the variable couldn't be found. */
> -+int
> -+makunbound (name, vc)
> -+     const char *name;
> -+     VAR_CONTEXT *vc;
> -+{
> -+  BUCKET_CONTENTS *elt, *new_elt;
> -+  SHELL_VAR *old_var;
> -+  VAR_CONTEXT *v;
> -+  char *t;
> -+
> -+  for (elt = (BUCKET_CONTENTS *)NULL, v = vc; v; v = v->down)
> -+    if (elt = hash_remove (name, v->table, 0))
> -+      break;
> -+
> -+  if (elt == 0)
> -+    return (-1);
> -+
> -+  old_var = (SHELL_VAR *)elt->data;
> -+
> -+  if (old_var && exported_p (old_var))
> -+    array_needs_making++;
> -+
> -+  /* If we're unsetting a local variable and we're still executing inside
> -+     the function, just mark the variable as invisible.  The function
> -+     eventually called by pop_var_context() will clean it up later.  This
> -+     must be done so that if the variable is subsequently assigned a new
> -+     value inside the function, the `local' attribute is still present.
> -+     We also need to add it back into the correct hash table. */
> -+  if (old_var && local_p (old_var) && variable_context == old_var->context)
> -+    {
> -+      if (nofree_p (old_var))
> -+	var_setvalue (old_var, (char *)NULL);
> -+#if defined (ARRAY_VARS)
> -+      else if (array_p (old_var))
> -+	array_dispose (array_cell (old_var));
> -+      else if (assoc_p (old_var))
> -+	assoc_dispose (assoc_cell (old_var));
> -+#endif
> -+      else if (nameref_p (old_var))
> -+	FREE (nameref_cell (old_var));
> -+      else
> -+	FREE (value_cell (old_var));
> -+      /* Reset the attributes.  Preserve the export attribute if the variable
> -+	 came from a temporary environment.  Make sure it stays local, and
> -+	 make it invisible. */ 
> -+      old_var->attributes = (exported_p (old_var) && tempvar_p (old_var)) ? att_exported : 0;
> -+      VSETATTR (old_var, att_local);
> -+      VSETATTR (old_var, att_invisible);
> -+      var_setvalue (old_var, (char *)NULL);
> -+      INVALIDATE_EXPORTSTR (old_var);
> -+
> -+      new_elt = hash_insert (savestring (old_var->name), v->table, 0);
> -+      new_elt->data = (PTR_T)old_var;
> -+      stupidly_hack_special_variables (old_var->name);
> -+
> -+      free (elt->key);
> -+      free (elt);
> -+      return (0);
> -+    }
> -+
> -+  /* Have to save a copy of name here, because it might refer to
> -+     old_var->name.  If so, stupidly_hack_special_variables will
> -+     reference freed memory. */
> -+  t = savestring (name);
> -+
> -+  free (elt->key);
> -+  free (elt);
> -+
> -+  dispose_variable (old_var);
> -+  stupidly_hack_special_variables (t);
> -+  free (t);
> -+
> -+  return (0);
> -+}
> -+
> -+/* Get rid of all of the variables in the current context. */
> -+void
> -+kill_all_local_variables ()
> -+{
> -+  VAR_CONTEXT *vc;
> -+
> -+  for (vc = shell_variables; vc; vc = vc->down)
> -+    if (vc_isfuncenv (vc) && vc->scope == variable_context)
> -+      break;
> -+  if (vc == 0)
> -+    return;		/* XXX */
> -+
> -+  if (vc->table && vc_haslocals (vc))
> -+    {
> -+      delete_all_variables (vc->table);
> -+      hash_dispose (vc->table);
> -+    }
> -+  vc->table = (HASH_TABLE *)NULL;
> -+}
> -+
> -+static void
> -+free_variable_hash_data (data)
> -+     PTR_T data;
> -+{
> -+  SHELL_VAR *var;
> -+
> -+  var = (SHELL_VAR *)data;
> -+  dispose_variable (var);
> -+}
> -+
> -+/* Delete the entire contents of the hash table. */
> -+void
> -+delete_all_variables (hashed_vars)
> -+     HASH_TABLE *hashed_vars;
> -+{
> -+  hash_flush (hashed_vars, free_variable_hash_data);
> -+}
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*		     Setting variable attributes		    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+#define FIND_OR_MAKE_VARIABLE(name, entry) \
> -+  do \
> -+    { \
> -+      entry = find_variable (name); \
> -+      if (!entry) \
> -+	{ \
> -+	  entry = bind_variable (name, "", 0); \
> -+	  if (!no_invisible_vars && entry) entry->attributes |= att_invisible; \
> -+	} \
> -+    } \
> -+  while (0)
> -+
> -+/* Make the variable associated with NAME be readonly.
> -+   If NAME does not exist yet, create it. */
> -+void
> -+set_var_read_only (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *entry;
> -+
> -+  FIND_OR_MAKE_VARIABLE (name, entry);
> -+  VSETATTR (entry, att_readonly);
> -+}
> -+
> -+#ifdef INCLUDE_UNUSED
> -+/* Make the function associated with NAME be readonly.
> -+   If NAME does not exist, we just punt, like auto_export code below. */
> -+void
> -+set_func_read_only (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *entry;
> -+
> -+  entry = find_function (name);
> -+  if (entry)
> -+    VSETATTR (entry, att_readonly);
> -+}
> -+
> -+/* Make the variable associated with NAME be auto-exported.
> -+   If NAME does not exist yet, create it. */
> -+void
> -+set_var_auto_export (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *entry;
> -+
> -+  FIND_OR_MAKE_VARIABLE (name, entry);
> -+  set_auto_export (entry);
> -+}
> -+
> -+/* Make the function associated with NAME be auto-exported. */
> -+void
> -+set_func_auto_export (name)
> -+     const char *name;
> -+{
> -+  SHELL_VAR *entry;
> -+
> -+  entry = find_function (name);
> -+  if (entry)
> -+    set_auto_export (entry);
> -+}
> -+#endif
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*		     Creating lists of variables		    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+static VARLIST *
> -+vlist_alloc (nentries)
> -+     int nentries;
> -+{
> -+  VARLIST  *vlist;
> -+
> -+  vlist = (VARLIST *)xmalloc (sizeof (VARLIST));
> -+  vlist->list = (SHELL_VAR **)xmalloc ((nentries + 1) * sizeof (SHELL_VAR *));
> -+  vlist->list_size = nentries;
> -+  vlist->list_len = 0;
> -+  vlist->list[0] = (SHELL_VAR *)NULL;
> -+
> -+  return vlist;
> -+}
> -+
> -+static VARLIST *
> -+vlist_realloc (vlist, n)
> -+     VARLIST *vlist;
> -+     int n;
> -+{
> -+  if (vlist == 0)
> -+    return (vlist = vlist_alloc (n));
> -+  if (n > vlist->list_size)
> -+    {
> -+      vlist->list_size = n;
> -+      vlist->list = (SHELL_VAR **)xrealloc (vlist->list, (vlist->list_size + 1) * sizeof (SHELL_VAR *));
> -+    }
> -+  return vlist;
> -+}
> -+
> -+static void
> -+vlist_add (vlist, var, flags)
> -+     VARLIST *vlist;
> -+     SHELL_VAR *var;
> -+     int flags;
> -+{
> -+  register int i;
> -+
> -+  for (i = 0; i < vlist->list_len; i++)
> -+    if (STREQ (var->name, vlist->list[i]->name))
> -+      break;
> -+  if (i < vlist->list_len)
> -+    return;
> -+
> -+  if (i >= vlist->list_size)
> -+    vlist = vlist_realloc (vlist, vlist->list_size + 16);
> -+
> -+  vlist->list[vlist->list_len++] = var;
> -+  vlist->list[vlist->list_len] = (SHELL_VAR *)NULL;
> -+}
> -+
> -+/* Map FUNCTION over the variables in VAR_HASH_TABLE.  Return an array of the
> -+   variables for which FUNCTION returns a non-zero value.  A NULL value
> -+   for FUNCTION means to use all variables. */
> -+SHELL_VAR **
> -+map_over (function, vc)
> -+     sh_var_map_func_t *function;
> -+     VAR_CONTEXT *vc;
> -+{
> -+  VAR_CONTEXT *v;
> -+  VARLIST *vlist;
> -+  SHELL_VAR **ret;
> -+  int nentries;
> -+
> -+  for (nentries = 0, v = vc; v; v = v->down)
> -+    nentries += HASH_ENTRIES (v->table);
> -+
> -+  if (nentries == 0)
> -+    return (SHELL_VAR **)NULL;
> -+
> -+  vlist = vlist_alloc (nentries);
> -+
> -+  for (v = vc; v; v = v->down)
> -+    flatten (v->table, function, vlist, 0);
> -+
> -+  ret = vlist->list;
> -+  free (vlist);
> -+  return ret;
> -+}
> -+
> -+SHELL_VAR **
> -+map_over_funcs (function)
> -+     sh_var_map_func_t *function;
> -+{
> -+  VARLIST *vlist;
> -+  SHELL_VAR **ret;
> -+
> -+  if (shell_functions == 0 || HASH_ENTRIES (shell_functions) == 0)
> -+    return ((SHELL_VAR **)NULL);
> -+
> -+  vlist = vlist_alloc (HASH_ENTRIES (shell_functions));
> -+
> -+  flatten (shell_functions, function, vlist, 0);
> -+
> -+  ret = vlist->list;
> -+  free (vlist);
> -+  return ret;
> -+}
> -+
> -+/* Flatten VAR_HASH_TABLE, applying FUNC to each member and adding those
> -+   elements for which FUNC succeeds to VLIST->list.  FLAGS is reserved
> -+   for future use.  Only unique names are added to VLIST.  If FUNC is
> -+   NULL, each variable in VAR_HASH_TABLE is added to VLIST.  If VLIST is
> -+   NULL, FUNC is applied to each SHELL_VAR in VAR_HASH_TABLE.  If VLIST
> -+   and FUNC are both NULL, nothing happens. */
> -+static void
> -+flatten (var_hash_table, func, vlist, flags)
> -+     HASH_TABLE *var_hash_table;
> -+     sh_var_map_func_t *func;
> -+     VARLIST *vlist;
> -+     int flags;
> -+{
> -+  register int i;
> -+  register BUCKET_CONTENTS *tlist;
> -+  int r;
> -+  SHELL_VAR *var;
> -+
> -+  if (var_hash_table == 0 || (HASH_ENTRIES (var_hash_table) == 0) || (vlist == 0 && func == 0))
> -+    return;
> -+
> -+  for (i = 0; i < var_hash_table->nbuckets; i++)
> -+    {
> -+      for (tlist = hash_items (i, var_hash_table); tlist; tlist = tlist->next)
> -+	{
> -+	  var = (SHELL_VAR *)tlist->data;
> -+
> -+	  r = func ? (*func) (var) : 1;
> -+	  if (r && vlist)
> -+	    vlist_add (vlist, var, flags);
> -+	}
> -+    }
> -+}
> -+
> -+void
> -+sort_variables (array)
> -+     SHELL_VAR **array;
> -+{
> -+  qsort (array, strvec_len ((char **)array), sizeof (SHELL_VAR *), (QSFUNC *)qsort_var_comp);
> -+}
> -+
> -+static int
> -+qsort_var_comp (var1, var2)
> -+     SHELL_VAR **var1, **var2;
> -+{
> -+  int result;
> -+
> -+  if ((result = (*var1)->name[0] - (*var2)->name[0]) == 0)
> -+    result = strcmp ((*var1)->name, (*var2)->name);
> -+
> -+  return (result);
> -+}
> -+
> -+/* Apply FUNC to each variable in SHELL_VARIABLES, adding each one for
> -+   which FUNC succeeds to an array of SHELL_VAR *s.  Returns the array. */
> -+static SHELL_VAR **
> -+vapply (func)
> -+     sh_var_map_func_t *func;
> -+{
> -+  SHELL_VAR **list;
> -+
> -+  list = map_over (func, shell_variables);
> -+  if (list /* && posixly_correct */)
> -+    sort_variables (list);
> -+  return (list);
> -+}
> -+
> -+/* Apply FUNC to each variable in SHELL_FUNCTIONS, adding each one for
> -+   which FUNC succeeds to an array of SHELL_VAR *s.  Returns the array. */
> -+static SHELL_VAR **
> -+fapply (func)
> -+     sh_var_map_func_t *func;
> -+{
> -+  SHELL_VAR **list;
> -+
> -+  list = map_over_funcs (func);
> -+  if (list /* && posixly_correct */)
> -+    sort_variables (list);
> -+  return (list);
> -+}
> -+
> -+/* Create a NULL terminated array of all the shell variables. */
> -+SHELL_VAR **
> -+all_shell_variables ()
> -+{
> -+  return (vapply ((sh_var_map_func_t *)NULL));
> -+}
> -+
> -+/* Create a NULL terminated array of all the shell functions. */
> -+SHELL_VAR **
> -+all_shell_functions ()
> -+{
> -+  return (fapply ((sh_var_map_func_t *)NULL));
> -+}
> -+
> -+static int
> -+visible_var (var)
> -+     SHELL_VAR *var;
> -+{
> -+  return (invisible_p (var) == 0);
> -+}
> -+
> -+SHELL_VAR **
> -+all_visible_functions ()
> -+{
> -+  return (fapply (visible_var));
> -+}
> -+
> -+SHELL_VAR **
> -+all_visible_variables ()
> -+{
> -+  return (vapply (visible_var));
> -+}
> -+
> -+/* Return non-zero if the variable VAR is visible and exported.  Array
> -+   variables cannot be exported. */
> -+static int
> -+visible_and_exported (var)
> -+     SHELL_VAR *var;
> -+{
> -+  return (invisible_p (var) == 0 && exported_p (var));
> -+}
> -+
> -+/* Candidate variables for the export environment are either valid variables
> -+   with the export attribute or invalid variables inherited from the initial
> -+   environment and simply passed through. */
> -+static int
> -+export_environment_candidate (var)
> -+     SHELL_VAR *var;
> -+{
> -+  return (exported_p (var) && (invisible_p (var) == 0 || imported_p (var)));
> -+}
> -+
> -+/* Return non-zero if VAR is a local variable in the current context and
> -+   is exported. */
> -+static int
> -+local_and_exported (var)
> -+     SHELL_VAR *var;
> -+{
> -+  return (invisible_p (var) == 0 && local_p (var) && var->context == variable_context && exported_p (var));
> -+}
> -+
> -+SHELL_VAR **
> -+all_exported_variables ()
> -+{
> -+  return (vapply (visible_and_exported));
> -+}
> -+
> -+SHELL_VAR **
> -+local_exported_variables ()
> -+{
> -+  return (vapply (local_and_exported));
> -+}
> -+
> -+static int
> -+variable_in_context (var)
> -+     SHELL_VAR *var;
> -+{
> -+  return (invisible_p (var) == 0 && local_p (var) && var->context == variable_context);
> -+}
> -+
> -+SHELL_VAR **
> -+all_local_variables ()
> -+{
> -+  VARLIST *vlist;
> -+  SHELL_VAR **ret;
> -+  VAR_CONTEXT *vc;
> -+
> -+  vc = shell_variables;
> -+  for (vc = shell_variables; vc; vc = vc->down)
> -+    if (vc_isfuncenv (vc) && vc->scope == variable_context)
> -+      break;
> -+
> -+  if (vc == 0)
> -+    {
> -+      internal_error (_("all_local_variables: no function context at current scope"));
> -+      return (SHELL_VAR **)NULL;
> -+    }
> -+  if (vc->table == 0 || HASH_ENTRIES (vc->table) == 0 || vc_haslocals (vc) == 0)
> -+    return (SHELL_VAR **)NULL;
> -+    
> -+  vlist = vlist_alloc (HASH_ENTRIES (vc->table));
> -+
> -+  flatten (vc->table, variable_in_context, vlist, 0);
> -+
> -+  ret = vlist->list;
> -+  free (vlist);
> -+  if (ret)
> -+    sort_variables (ret);
> -+  return ret;
> -+}
> -+
> -+#if defined (ARRAY_VARS)
> -+/* Return non-zero if the variable VAR is visible and an array. */
> -+static int
> -+visible_array_vars (var)
> -+     SHELL_VAR *var;
> -+{
> -+  return (invisible_p (var) == 0 && array_p (var));
> -+}
> -+
> -+SHELL_VAR **
> -+all_array_variables ()
> -+{
> -+  return (vapply (visible_array_vars));
> -+}
> -+#endif /* ARRAY_VARS */
> -+
> -+char **
> -+all_variables_matching_prefix (prefix)
> -+     const char *prefix;
> -+{
> -+  SHELL_VAR **varlist;
> -+  char **rlist;
> -+  int vind, rind, plen;
> -+
> -+  plen = STRLEN (prefix);
> -+  varlist = all_visible_variables ();
> -+  for (vind = 0; varlist && varlist[vind]; vind++)
> -+    ;
> -+  if (varlist == 0 || vind == 0)
> -+    return ((char **)NULL);
> -+  rlist = strvec_create (vind + 1);
> -+  for (vind = rind = 0; varlist[vind]; vind++)
> -+    {
> -+      if (plen == 0 || STREQN (prefix, varlist[vind]->name, plen))
> -+	rlist[rind++] = savestring (varlist[vind]->name);
> -+    }
> -+  rlist[rind] = (char *)0;
> -+  free (varlist);
> -+
> -+  return rlist;
> -+}
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*		 Managing temporary variable scopes		    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+/* Make variable NAME have VALUE in the temporary environment. */
> -+static SHELL_VAR *
> -+bind_tempenv_variable (name, value)
> -+     const char *name;
> -+     char *value;
> -+{
> -+  SHELL_VAR *var;
> -+
> -+  var = temporary_env ? hash_lookup (name, temporary_env) : (SHELL_VAR *)NULL;
> -+
> -+  if (var)
> -+    {
> -+      FREE (value_cell (var));
> -+      var_setvalue (var, savestring (value));
> -+      INVALIDATE_EXPORTSTR (var);
> -+    }
> -+
> -+  return (var);
> -+}
> -+
> -+/* Find a variable in the temporary environment that is named NAME.
> -+   Return the SHELL_VAR *, or NULL if not found. */
> -+SHELL_VAR *
> -+find_tempenv_variable (name)
> -+     const char *name;
> -+{
> -+  return (temporary_env ? hash_lookup (name, temporary_env) : (SHELL_VAR *)NULL);
> -+}
> -+
> -+char **tempvar_list;
> -+int tvlist_ind;
> -+
> -+/* Push the variable described by (SHELL_VAR *)DATA down to the next
> -+   variable context from the temporary environment. */
> -+static void
> -+push_temp_var (data)
> -+     PTR_T data;
> -+{
> -+  SHELL_VAR *var, *v;
> -+  HASH_TABLE *binding_table;
> -+
> -+  var = (SHELL_VAR *)data;
> -+
> -+  binding_table = shell_variables->table;
> -+  if (binding_table == 0)
> -+    {
> -+      if (shell_variables == global_variables)
> -+	/* shouldn't happen */
> -+	binding_table = shell_variables->table = global_variables->table = hash_create (0);
> -+      else
> -+	binding_table = shell_variables->table = hash_create (TEMPENV_HASH_BUCKETS);
> -+    }
> -+
> -+  v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, 0);
> -+
> -+  /* XXX - should we set the context here?  It shouldn't matter because of how
> -+     assign_in_env works, but might want to check. */
> -+  if (binding_table == global_variables->table)		/* XXX */
> -+    var->attributes &= ~(att_tempvar|att_propagate);
> -+  else
> -+    {
> -+      var->attributes |= att_propagate;
> -+      if  (binding_table == shell_variables->table)
> -+	shell_variables->flags |= VC_HASTMPVAR;
> -+    }
> -+  v->attributes |= var->attributes;
> -+
> -+  if (find_special_var (var->name) >= 0)
> -+    tempvar_list[tvlist_ind++] = savestring (var->name);
> -+
> -+  dispose_variable (var);
> -+}
> -+
> -+static void
> -+propagate_temp_var (data)
> -+     PTR_T data;
> -+{
> -+  SHELL_VAR *var;
> -+
> -+  var = (SHELL_VAR *)data;
> -+  if (tempvar_p (var) && (var->attributes & att_propagate))
> -+    push_temp_var (data);
> -+  else
> -+    {
> -+      if (find_special_var (var->name) >= 0)
> -+	tempvar_list[tvlist_ind++] = savestring (var->name);
> -+      dispose_variable (var);
> -+    }
> -+}
> -+
> -+/* Free the storage used in the hash table for temporary
> -+   environment variables.  PUSHF is a function to be called
> -+   to free each hash table entry.  It takes care of pushing variables
> -+   to previous scopes if appropriate.  PUSHF stores names of variables
> -+   that require special handling (e.g., IFS) on tempvar_list, so this
> -+   function can call stupidly_hack_special_variables on all the
> -+   variables in the list when the temporary hash table is destroyed. */
> -+static void
> -+dispose_temporary_env (pushf)
> -+     sh_free_func_t *pushf;
> -+{
> -+  int i;
> -+
> -+  tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1);
> -+  tempvar_list[tvlist_ind = 0] = 0;
> -+    
> -+  hash_flush (temporary_env, pushf);
> -+  hash_dispose (temporary_env);
> -+  temporary_env = (HASH_TABLE *)NULL;
> -+
> -+  tempvar_list[tvlist_ind] = 0;
> -+
> -+  array_needs_making = 1;
> -+
> -+#if 0
> -+  sv_ifs ("IFS");		/* XXX here for now -- check setifs in assign_in_env */  
> -+#endif
> -+  for (i = 0; i < tvlist_ind; i++)
> -+    stupidly_hack_special_variables (tempvar_list[i]);
> -+
> -+  strvec_dispose (tempvar_list);
> -+  tempvar_list = 0;
> -+  tvlist_ind = 0;
> -+}
> -+
> -+void
> -+dispose_used_env_vars ()
> -+{
> -+  if (temporary_env)
> -+    {
> -+      dispose_temporary_env (propagate_temp_var);
> -+      maybe_make_export_env ();
> -+    }
> -+}
> -+
> -+/* Take all of the shell variables in the temporary environment HASH_TABLE
> -+   and make shell variables from them at the current variable context. */
> -+void
> -+merge_temporary_env ()
> -+{
> -+  if (temporary_env)
> -+    dispose_temporary_env (push_temp_var);
> -+}
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*	     Creating and manipulating the environment		    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+static inline char *
> -+mk_env_string (name, value, isfunc)
> -+     const char *name, *value;
> -+     int isfunc;
> -+{
> -+  size_t name_len, value_len;
> -+  char	*p, *q;
> -+
> -+  name_len = strlen (name);
> -+  value_len = STRLEN (value);
> -+
> -+  /* If we are exporting a shell function, construct the encoded function
> -+     name. */
> -+  if (isfunc && value)
> -+    {
> -+      p = (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFFLEN + value_len + 2);
> -+      q = p;
> -+      memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN);
> -+      q += BASHFUNC_PREFLEN;
> -+      memcpy (q, name, name_len);
> -+      q += name_len;
> -+      memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN);
> -+      q += BASHFUNC_SUFFLEN;
> -+    }
> -+  else
> -+    {
> -+      p = (char *)xmalloc (2 + name_len + value_len);
> -+      memcpy (p, name, name_len);
> -+      q = p + name_len;
> -+    }
> -+
> -+  q[0] = '=';
> -+  if (value && *value)
> -+    memcpy (q + 1, value, value_len + 1);
> -+  else
> -+    q[1] = '\0';
> -+
> -+  return (p);
> -+}
> -+
> -+#ifdef DEBUG
> -+/* Debugging */
> -+static int
> -+valid_exportstr (v)
> -+     SHELL_VAR *v;
> -+{
> -+  char *s;
> -+
> -+  s = v->exportstr;
> -+  if (s == 0)
> -+    {
> -+      internal_error (_("%s has null exportstr"), v->name);
> -+      return (0);
> -+    }
> -+  if (legal_variable_starter ((unsigned char)*s) == 0)
> -+    {
> -+      internal_error (_("invalid character %d in exportstr for %s"), *s, v->name);
> -+      return (0);
> -+    }
> -+  for (s = v->exportstr + 1; s && *s; s++)
> -+    {
> -+      if (*s == '=')
> -+	break;
> -+      if (legal_variable_char ((unsigned char)*s) == 0)
> -+	{
> -+	  internal_error (_("invalid character %d in exportstr for %s"), *s, v->name);
> -+	  return (0);
> -+	}
> -+    }
> -+  if (*s != '=')
> -+    {
> -+      internal_error (_("no `=' in exportstr for %s"), v->name);
> -+      return (0);
> -+    }
> -+  return (1);
> -+}
> -+#endif
> -+
> -+static char **
> -+make_env_array_from_var_list (vars)
> -+     SHELL_VAR **vars;
> -+{
> -+  register int i, list_index;
> -+  register SHELL_VAR *var;
> -+  char **list, *value;
> -+
> -+  list = strvec_create ((1 + strvec_len ((char **)vars)));
> -+
> -+#define USE_EXPORTSTR (value == var->exportstr)
> -+
> -+  for (i = 0, list_index = 0; var = vars[i]; i++)
> -+    {
> -+#if defined (__CYGWIN__)
> -+      /* We don't use the exportstr stuff on Cygwin at all. */
> -+      INVALIDATE_EXPORTSTR (var);
> -+#endif
> -+      if (var->exportstr)
> -+	value = var->exportstr;
> -+      else if (function_p (var))
> -+	value = named_function_string ((char *)NULL, function_cell (var), 0);
> -+#if defined (ARRAY_VARS)
> -+      else if (array_p (var))
> -+#  if ARRAY_EXPORT
> -+	value = array_to_assignment_string (array_cell (var));
> -+#  else
> -+	continue;	/* XXX array vars cannot yet be exported */
> -+#  endif /* ARRAY_EXPORT */
> -+      else if (assoc_p (var))
> -+#  if 0
> -+	value = assoc_to_assignment_string (assoc_cell (var));
> -+#  else
> -+	continue;	/* XXX associative array vars cannot yet be exported */
> -+#  endif
> -+#endif
> -+      else
> -+	value = value_cell (var);
> -+
> -+      if (value)
> -+	{
> -+	  /* Gee, I'd like to get away with not using savestring() if we're
> -+	     using the cached exportstr... */
> -+	  list[list_index] = USE_EXPORTSTR ? savestring (value)
> -+					   : mk_env_string (var->name, value, function_p (var));
> -+
> -+	  if (USE_EXPORTSTR == 0)
> -+	    SAVE_EXPORTSTR (var, list[list_index]);
> -+
> -+	  list_index++;
> -+#undef USE_EXPORTSTR
> -+
> -+#if 0	/* not yet */
> -+#if defined (ARRAY_VARS)
> -+	  if (array_p (var) || assoc_p (var))
> -+	    free (value);
> -+#endif
> -+#endif
> -+	}
> -+    }
> -+
> -+  list[list_index] = (char *)NULL;
> -+  return (list);
> -+}
> -+
> -+/* Make an array of assignment statements from the hash table
> -+   HASHED_VARS which contains SHELL_VARs.  Only visible, exported
> -+   variables are eligible. */
> -+static char **
> -+make_var_export_array (vcxt)
> -+     VAR_CONTEXT *vcxt;
> -+{
> -+  char **list;
> -+  SHELL_VAR **vars;
> -+
> -+#if 0
> -+  vars = map_over (visible_and_exported, vcxt);
> -+#else
> -+  vars = map_over (export_environment_candidate, vcxt);
> -+#endif
> -+
> -+  if (vars == 0)
> -+    return (char **)NULL;
> -+
> -+  list = make_env_array_from_var_list (vars);
> -+
> -+  free (vars);
> -+  return (list);
> -+}
> -+
> -+static char **
> -+make_func_export_array ()
> -+{
> -+  char **list;
> -+  SHELL_VAR **vars;
> -+
> -+  vars = map_over_funcs (visible_and_exported);
> -+  if (vars == 0)
> -+    return (char **)NULL;
> -+
> -+  list = make_env_array_from_var_list (vars);
> -+
> -+  free (vars);
> -+  return (list);
> -+}
> -+
> -+/* Add ENVSTR to the end of the exported environment, EXPORT_ENV. */
> -+#define add_to_export_env(envstr,do_alloc) \
> -+do \
> -+  { \
> -+    if (export_env_index >= (export_env_size - 1)) \
> -+      { \
> -+	export_env_size += 16; \
> -+	export_env = strvec_resize (export_env, export_env_size); \
> -+	environ = export_env; \
> -+      } \
> -+    export_env[export_env_index++] = (do_alloc) ? savestring (envstr) : envstr; \
> -+    export_env[export_env_index] = (char *)NULL; \
> -+  } while (0)
> -+
> -+/* Add ASSIGN to EXPORT_ENV, or supercede a previous assignment in the
> -+   array with the same left-hand side.  Return the new EXPORT_ENV. */
> -+char **
> -+add_or_supercede_exported_var (assign, do_alloc)
> -+     char *assign;
> -+     int do_alloc;
> -+{
> -+  register int i;
> -+  int equal_offset;
> -+
> -+  equal_offset = assignment (assign, 0);
> -+  if (equal_offset == 0)
> -+    return (export_env);
> -+
> -+  /* If this is a function, then only supersede the function definition.
> -+     We do this by including the `=() {' in the comparison, like
> -+     initialize_shell_variables does. */
> -+  if (assign[equal_offset + 1] == '(' &&
> -+     strncmp (assign + equal_offset + 2, ") {", 3) == 0)		/* } */
> -+    equal_offset += 4;
> -+
> -+  for (i = 0; i < export_env_index; i++)
> -+    {
> -+      if (STREQN (assign, export_env[i], equal_offset + 1))
> -+	{
> -+	  free (export_env[i]);
> -+	  export_env[i] = do_alloc ? savestring (assign) : assign;
> -+	  return (export_env);
> -+	}
> -+    }
> -+  add_to_export_env (assign, do_alloc);
> -+  return (export_env);
> -+}
> -+
> -+static void
> -+add_temp_array_to_env (temp_array, do_alloc, do_supercede)
> -+     char **temp_array;
> -+     int do_alloc, do_supercede;
> -+{
> -+  register int i;
> -+
> -+  if (temp_array == 0)
> -+    return;
> -+
> -+  for (i = 0; temp_array[i]; i++)
> -+    {
> -+      if (do_supercede)
> -+	export_env = add_or_supercede_exported_var (temp_array[i], do_alloc);
> -+      else
> -+	add_to_export_env (temp_array[i], do_alloc);
> -+    }
> -+
> -+  free (temp_array);
> -+}
> -+
> -+/* Make the environment array for the command about to be executed, if the
> -+   array needs making.  Otherwise, do nothing.  If a shell action could
> -+   change the array that commands receive for their environment, then the
> -+   code should `array_needs_making++'.
> -+
> -+   The order to add to the array is:
> -+   	temporary_env
> -+   	list of var contexts whose head is shell_variables
> -+  	shell_functions
> -+
> -+  This is the shell variable lookup order.  We add only new variable
> -+  names at each step, which allows local variables and variables in
> -+  the temporary environments to shadow variables in the global (or
> -+  any previous) scope.
> -+*/
> -+
> -+static int
> -+n_shell_variables ()
> -+{
> -+  VAR_CONTEXT *vc;
> -+  int n;
> -+
> -+  for (n = 0, vc = shell_variables; vc; vc = vc->down)
> -+    n += HASH_ENTRIES (vc->table);
> -+  return n;
> -+}
> -+
> -+int
> -+chkexport (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  v = find_variable (name);
> -+  if (v && exported_p (v))
> -+    {
> -+      array_needs_making = 1;
> -+      maybe_make_export_env ();
> -+      return 1;
> -+    }
> -+  return 0;
> -+}
> -+
> -+void
> -+maybe_make_export_env ()
> -+{
> -+  register char **temp_array;
> -+  int new_size;
> -+  VAR_CONTEXT *tcxt;
> -+
> -+  if (array_needs_making)
> -+    {
> -+      if (export_env)
> -+	strvec_flush (export_env);
> -+
> -+      /* Make a guess based on how many shell variables and functions we
> -+	 have.  Since there will always be array variables, and array
> -+	 variables are not (yet) exported, this will always be big enough
> -+	 for the exported variables and functions. */
> -+      new_size = n_shell_variables () + HASH_ENTRIES (shell_functions) + 1 +
> -+		 HASH_ENTRIES (temporary_env);
> -+      if (new_size > export_env_size)
> -+	{
> -+	  export_env_size = new_size;
> -+	  export_env = strvec_resize (export_env, export_env_size);
> -+	  environ = export_env;
> -+	}
> -+      export_env[export_env_index = 0] = (char *)NULL;
> -+
> -+      /* Make a dummy variable context from the temporary_env, stick it on
> -+	 the front of shell_variables, call make_var_export_array on the
> -+	 whole thing to flatten it, and convert the list of SHELL_VAR *s
> -+	 to the form needed by the environment. */
> -+      if (temporary_env)
> -+	{
> -+	  tcxt = new_var_context ((char *)NULL, 0);
> -+	  tcxt->table = temporary_env;
> -+	  tcxt->down = shell_variables;
> -+	}
> -+      else
> -+	tcxt = shell_variables;
> -+      
> -+      temp_array = make_var_export_array (tcxt);
> -+      if (temp_array)
> -+	add_temp_array_to_env (temp_array, 0, 0);
> -+
> -+      if (tcxt != shell_variables)
> -+	free (tcxt);
> -+
> -+#if defined (RESTRICTED_SHELL)
> -+      /* Restricted shells may not export shell functions. */
> -+      temp_array = restricted ? (char **)0 : make_func_export_array ();
> -+#else
> -+      temp_array = make_func_export_array ();
> -+#endif
> -+      if (temp_array)
> -+	add_temp_array_to_env (temp_array, 0, 0);
> -+
> -+      array_needs_making = 0;
> -+    }
> -+}
> -+
> -+/* This is an efficiency hack.  PWD and OLDPWD are auto-exported, so
> -+   we will need to remake the exported environment every time we
> -+   change directories.  `_' is always put into the environment for
> -+   every external command, so without special treatment it will always
> -+   cause the environment to be remade.
> -+
> -+   If there is no other reason to make the exported environment, we can
> -+   just update the variables in place and mark the exported environment
> -+   as no longer needing a remake. */
> -+void
> -+update_export_env_inplace (env_prefix, preflen, value)
> -+     char *env_prefix;
> -+     int preflen;
> -+     char *value;
> -+{
> -+  char *evar;
> -+
> -+  evar = (char *)xmalloc (STRLEN (value) + preflen + 1);
> -+  strcpy (evar, env_prefix);
> -+  if (value)
> -+    strcpy (evar + preflen, value);
> -+  export_env = add_or_supercede_exported_var (evar, 0);
> -+}
> -+
> -+/* We always put _ in the environment as the name of this command. */
> -+void
> -+put_command_name_into_env (command_name)
> -+     char *command_name;
> -+{
> -+  update_export_env_inplace ("_=", 2, command_name);
> -+}
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*		      Managing variable contexts		    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+/* Allocate and return a new variable context with NAME and FLAGS.
> -+   NAME can be NULL. */
> -+
> -+VAR_CONTEXT *
> -+new_var_context (name, flags)
> -+     char *name;
> -+     int flags;
> -+{
> -+  VAR_CONTEXT *vc;
> -+
> -+  vc = (VAR_CONTEXT *)xmalloc (sizeof (VAR_CONTEXT));
> -+  vc->name = name ? savestring (name) : (char *)NULL;
> -+  vc->scope = variable_context;
> -+  vc->flags = flags;
> -+
> -+  vc->up = vc->down = (VAR_CONTEXT *)NULL;
> -+  vc->table = (HASH_TABLE *)NULL;
> -+
> -+  return vc;
> -+}
> -+
> -+/* Free a variable context and its data, including the hash table.  Dispose
> -+   all of the variables. */
> -+void
> -+dispose_var_context (vc)
> -+     VAR_CONTEXT *vc;
> -+{
> -+  FREE (vc->name);
> -+
> -+  if (vc->table)
> -+    {
> -+      delete_all_variables (vc->table);
> -+      hash_dispose (vc->table);
> -+    }
> -+
> -+  free (vc);
> -+}
> -+
> -+/* Set VAR's scope level to the current variable context. */
> -+static int
> -+set_context (var)
> -+     SHELL_VAR *var;
> -+{
> -+  return (var->context = variable_context);
> -+}
> -+
> -+/* Make a new variable context with NAME and FLAGS and a HASH_TABLE of
> -+   temporary variables, and push it onto shell_variables.  This is
> -+   for shell functions. */
> -+VAR_CONTEXT *
> -+push_var_context (name, flags, tempvars)
> -+     char *name;
> -+     int flags;
> -+     HASH_TABLE *tempvars;
> -+{
> -+  VAR_CONTEXT *vc;
> -+
> -+  vc = new_var_context (name, flags);
> -+  vc->table = tempvars;
> -+  if (tempvars)
> -+    {
> -+      /* Have to do this because the temp environment was created before
> -+	 variable_context was incremented. */
> -+      flatten (tempvars, set_context, (VARLIST *)NULL, 0);
> -+      vc->flags |= VC_HASTMPVAR;
> -+    }
> -+  vc->down = shell_variables;
> -+  shell_variables->up = vc;
> -+
> -+  return (shell_variables = vc);
> -+}
> -+
> -+static void
> -+push_func_var (data)
> -+     PTR_T data;
> -+{
> -+  SHELL_VAR *var, *v;
> -+
> -+  var = (SHELL_VAR *)data;
> -+
> -+  if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate)))
> -+    {
> -+      /* Make sure we have a hash table to store the variable in while it is
> -+	 being propagated down to the global variables table.  Create one if
> -+	 we have to */
> -+      if ((vc_isfuncenv (shell_variables) || vc_istempenv (shell_variables)) && shell_variables->table == 0)
> -+	shell_variables->table = hash_create (0);
> -+      /* XXX - should we set v->context here? */
> -+      v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
> -+      if (shell_variables == global_variables)
> -+	var->attributes &= ~(att_tempvar|att_propagate);
> -+      else
> -+	shell_variables->flags |= VC_HASTMPVAR;
> -+      v->attributes |= var->attributes;
> -+    }
> -+  else
> -+    stupidly_hack_special_variables (var->name);	/* XXX */
> -+
> -+  dispose_variable (var);
> -+}
> -+
> -+/* Pop the top context off of VCXT and dispose of it, returning the rest of
> -+   the stack. */
> -+void
> -+pop_var_context ()
> -+{
> -+  VAR_CONTEXT *ret, *vcxt;
> -+
> -+  vcxt = shell_variables;
> -+  if (vc_isfuncenv (vcxt) == 0)
> -+    {
> -+      internal_error (_("pop_var_context: head of shell_variables not a function context"));
> -+      return;
> -+    }
> -+
> -+  if (ret = vcxt->down)
> -+    {
> -+      ret->up = (VAR_CONTEXT *)NULL;
> -+      shell_variables = ret;
> -+      if (vcxt->table)
> -+	hash_flush (vcxt->table, push_func_var);
> -+      dispose_var_context (vcxt);
> -+    }
> -+  else
> -+    internal_error (_("pop_var_context: no global_variables context"));
> -+}
> -+
> -+/* Delete the HASH_TABLEs for all variable contexts beginning at VCXT, and
> -+   all of the VAR_CONTEXTs except GLOBAL_VARIABLES. */
> -+void
> -+delete_all_contexts (vcxt)
> -+     VAR_CONTEXT *vcxt;
> -+{
> -+  VAR_CONTEXT *v, *t;
> -+
> -+  for (v = vcxt; v != global_variables; v = t)
> -+    {
> -+      t = v->down;
> -+      dispose_var_context (v);
> -+    }    
> -+
> -+  delete_all_variables (global_variables->table);
> -+  shell_variables = global_variables;
> -+}
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*	   Pushing and Popping temporary variable scopes	    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+VAR_CONTEXT *
> -+push_scope (flags, tmpvars)
> -+     int flags;
> -+     HASH_TABLE *tmpvars;
> -+{
> -+  return (push_var_context ((char *)NULL, flags, tmpvars));
> -+}
> -+
> -+static void
> -+push_exported_var (data)
> -+     PTR_T data;
> -+{
> -+  SHELL_VAR *var, *v;
> -+
> -+  var = (SHELL_VAR *)data;
> -+
> -+  /* If a temp var had its export attribute set, or it's marked to be
> -+     propagated, bind it in the previous scope before disposing it. */
> -+  /* XXX - This isn't exactly right, because all tempenv variables have the
> -+    export attribute set. */
> -+#if 0
> -+  if (exported_p (var) || (var->attributes & att_propagate))
> -+#else
> -+  if (tempvar_p (var) && exported_p (var) && (var->attributes & att_propagate))
> -+#endif
> -+    {
> -+      var->attributes &= ~att_tempvar;		/* XXX */
> -+      v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
> -+      if (shell_variables == global_variables)
> -+	var->attributes &= ~att_propagate;
> -+      v->attributes |= var->attributes;
> -+    }
> -+  else
> -+    stupidly_hack_special_variables (var->name);	/* XXX */
> -+
> -+  dispose_variable (var);
> -+}
> -+
> -+void
> -+pop_scope (is_special)
> -+     int is_special;
> -+{
> -+  VAR_CONTEXT *vcxt, *ret;
> -+
> -+  vcxt = shell_variables;
> -+  if (vc_istempscope (vcxt) == 0)
> -+    {
> -+      internal_error (_("pop_scope: head of shell_variables not a temporary environment scope"));
> -+      return;
> -+    }
> -+
> -+  ret = vcxt->down;
> -+  if (ret)
> -+    ret->up = (VAR_CONTEXT *)NULL;
> -+
> -+  shell_variables = ret;
> -+
> -+  /* Now we can take care of merging variables in VCXT into set of scopes
> -+     whose head is RET (shell_variables). */
> -+  FREE (vcxt->name);
> -+  if (vcxt->table)
> -+    {
> -+      if (is_special)
> -+	hash_flush (vcxt->table, push_func_var);
> -+      else
> -+	hash_flush (vcxt->table, push_exported_var);
> -+      hash_dispose (vcxt->table);
> -+    }
> -+  free (vcxt);
> -+
> -+  sv_ifs ("IFS");	/* XXX here for now */
> -+}
> -+
> -+/* **************************************************************** */
> -+/*								    */
> -+/*		 Pushing and Popping function contexts		    */
> -+/*								    */
> -+/* **************************************************************** */
> -+
> -+static WORD_LIST **dollar_arg_stack = (WORD_LIST **)NULL;
> -+static int dollar_arg_stack_slots;
> -+static int dollar_arg_stack_index;
> -+
> -+/* XXX - we might want to consider pushing and popping the `getopts' state
> -+   when we modify the positional parameters. */
> -+void
> -+push_context (name, is_subshell, tempvars)
> -+     char *name;	/* function name */
> -+     int is_subshell;
> -+     HASH_TABLE *tempvars;
> -+{
> -+  if (is_subshell == 0)
> -+    push_dollar_vars ();
> -+  variable_context++;
> -+  push_var_context (name, VC_FUNCENV, tempvars);
> -+}
> -+
> -+/* Only called when subshell == 0, so we don't need to check, and can
> -+   unconditionally pop the dollar vars off the stack. */
> -+void
> -+pop_context ()
> -+{
> -+  pop_dollar_vars ();
> -+  variable_context--;
> -+  pop_var_context ();
> -+
> -+  sv_ifs ("IFS");		/* XXX here for now */
> -+}
> -+
> -+/* Save the existing positional parameters on a stack. */
> -+void
> -+push_dollar_vars ()
> -+{
> -+  if (dollar_arg_stack_index + 2 > dollar_arg_stack_slots)
> -+    {
> -+      dollar_arg_stack = (WORD_LIST **)
> -+	xrealloc (dollar_arg_stack, (dollar_arg_stack_slots += 10)
> -+		  * sizeof (WORD_LIST *));
> -+    }
> -+  dollar_arg_stack[dollar_arg_stack_index++] = list_rest_of_args ();
> -+  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
> -+}
> -+
> -+/* Restore the positional parameters from our stack. */
> -+void
> -+pop_dollar_vars ()
> -+{
> -+  if (!dollar_arg_stack || dollar_arg_stack_index == 0)
> -+    return;
> -+
> -+  remember_args (dollar_arg_stack[--dollar_arg_stack_index], 1);
> -+  dispose_words (dollar_arg_stack[dollar_arg_stack_index]);
> -+  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
> -+  set_dollar_vars_unchanged ();
> -+}
> -+
> -+void
> -+dispose_saved_dollar_vars ()
> -+{
> -+  if (!dollar_arg_stack || dollar_arg_stack_index == 0)
> -+    return;
> -+
> -+  dispose_words (dollar_arg_stack[dollar_arg_stack_index]);
> -+  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
> -+}
> -+
> -+/* Manipulate the special BASH_ARGV and BASH_ARGC variables. */
> -+
> -+void
> -+push_args (list)
> -+     WORD_LIST *list;
> -+{
> -+#if defined (ARRAY_VARS) && defined (DEBUGGER)
> -+  SHELL_VAR *bash_argv_v, *bash_argc_v;
> -+  ARRAY *bash_argv_a, *bash_argc_a;
> -+  WORD_LIST *l;
> -+  arrayind_t i;
> -+  char *t;
> -+
> -+  GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a);
> -+  GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a);
> -+
> -+  for (l = list, i = 0; l; l = l->next, i++)
> -+    array_push (bash_argv_a, l->word->word);
> -+
> -+  t = itos (i);
> -+  array_push (bash_argc_a, t);
> -+  free (t);
> -+#endif /* ARRAY_VARS && DEBUGGER */
> -+}
> -+
> -+/* Remove arguments from BASH_ARGV array.  Pop top element off BASH_ARGC
> -+   array and use that value as the count of elements to remove from
> -+   BASH_ARGV. */
> -+void
> -+pop_args ()
> -+{
> -+#if defined (ARRAY_VARS) && defined (DEBUGGER)
> -+  SHELL_VAR *bash_argv_v, *bash_argc_v;
> -+  ARRAY *bash_argv_a, *bash_argc_a;
> -+  ARRAY_ELEMENT *ce;
> -+  intmax_t i;
> -+
> -+  GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a);
> -+  GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a);
> -+
> -+  ce = array_shift (bash_argc_a, 1, 0);
> -+  if (ce == 0 || legal_number (element_value (ce), &i) == 0)
> -+    i = 0;
> -+
> -+  for ( ; i > 0; i--)
> -+    array_pop (bash_argv_a);
> -+  array_dispose_element (ce);
> -+#endif /* ARRAY_VARS && DEBUGGER */
> -+}
> -+
> -+/*************************************************
> -+ *						 *
> -+ *	Functions to manage special variables	 *
> -+ *						 *
> -+ *************************************************/
> -+
> -+/* Extern declarations for variables this code has to manage. */
> -+extern int eof_encountered, eof_encountered_limit, ignoreeof;
> -+
> -+#if defined (READLINE)
> -+extern int hostname_list_initialized;
> -+#endif
> -+
> -+/* An alist of name.function for each special variable.  Most of the
> -+   functions don't do much, and in fact, this would be faster with a
> -+   switch statement, but by the end of this file, I am sick of switch
> -+   statements. */
> -+
> -+#define SET_INT_VAR(name, intvar)  intvar = find_variable (name) != 0
> -+
> -+/* This table will be sorted with qsort() the first time it's accessed. */
> -+struct name_and_function {
> -+  char *name;
> -+  sh_sv_func_t *function;
> -+};
> -+
> -+static struct name_and_function special_vars[] = {
> -+  { "BASH_COMPAT", sv_shcompat },
> -+  { "BASH_XTRACEFD", sv_xtracefd },
> -+
> -+#if defined (JOB_CONTROL)
> -+  { "CHILD_MAX", sv_childmax },
> -+#endif
> -+
> -+#if defined (READLINE)
> -+#  if defined (STRICT_POSIX)
> -+  { "COLUMNS", sv_winsize },
> -+#  endif
> -+  { "COMP_WORDBREAKS", sv_comp_wordbreaks },
> -+#endif
> -+
> -+  { "FUNCNEST", sv_funcnest },
> -+
> -+  { "GLOBIGNORE", sv_globignore },
> -+
> -+#if defined (HISTORY)
> -+  { "HISTCONTROL", sv_history_control },
> -+  { "HISTFILESIZE", sv_histsize },
> -+  { "HISTIGNORE", sv_histignore },
> -+  { "HISTSIZE", sv_histsize },
> -+  { "HISTTIMEFORMAT", sv_histtimefmt },
> -+#endif
> -+
> -+#if defined (__CYGWIN__)
> -+  { "HOME", sv_home },
> -+#endif
> -+
> -+#if defined (READLINE)
> -+  { "HOSTFILE", sv_hostfile },
> -+#endif
> -+
> -+  { "IFS", sv_ifs },
> -+  { "IGNOREEOF", sv_ignoreeof },
> -+
> -+  { "LANG", sv_locale },
> -+  { "LC_ALL", sv_locale },
> -+  { "LC_COLLATE", sv_locale },
> -+  { "LC_CTYPE", sv_locale },
> -+  { "LC_MESSAGES", sv_locale },
> -+  { "LC_NUMERIC", sv_locale },
> -+  { "LC_TIME", sv_locale },
> -+
> -+#if defined (READLINE) && defined (STRICT_POSIX)
> -+  { "LINES", sv_winsize },
> -+#endif
> -+
> -+  { "MAIL", sv_mail },
> -+  { "MAILCHECK", sv_mail },
> -+  { "MAILPATH", sv_mail },
> -+
> -+  { "OPTERR", sv_opterr },
> -+  { "OPTIND", sv_optind },
> -+
> -+  { "PATH", sv_path },
> -+  { "POSIXLY_CORRECT", sv_strict_posix },
> -+
> -+#if defined (READLINE)
> -+  { "TERM", sv_terminal },
> -+  { "TERMCAP", sv_terminal },
> -+  { "TERMINFO", sv_terminal },
> -+#endif /* READLINE */
> -+
> -+  { "TEXTDOMAIN", sv_locale },
> -+  { "TEXTDOMAINDIR", sv_locale },
> -+
> -+#if defined (HAVE_TZSET)
> -+  { "TZ", sv_tz },
> -+#endif
> -+
> -+#if defined (HISTORY) && defined (BANG_HISTORY)
> -+  { "histchars", sv_histchars },
> -+#endif /* HISTORY && BANG_HISTORY */
> -+
> -+  { "ignoreeof", sv_ignoreeof },
> -+
> -+  { (char *)0, (sh_sv_func_t *)0 }
> -+};
> -+
> -+#define N_SPECIAL_VARS	(sizeof (special_vars) / sizeof (special_vars[0]) - 1)
> -+
> -+static int
> -+sv_compare (sv1, sv2)
> -+     struct name_and_function *sv1, *sv2;
> -+{
> -+  int r;
> -+
> -+  if ((r = sv1->name[0] - sv2->name[0]) == 0)
> -+    r = strcmp (sv1->name, sv2->name);
> -+  return r;
> -+}
> -+
> -+static inline int
> -+find_special_var (name)
> -+     const char *name;
> -+{
> -+  register int i, r;
> -+
> -+  for (i = 0; special_vars[i].name; i++)
> -+    {
> -+      r = special_vars[i].name[0] - name[0];
> -+      if (r == 0)
> -+	r = strcmp (special_vars[i].name, name);
> -+      if (r == 0)
> -+	return i;
> -+      else if (r > 0)
> -+	/* Can't match any of rest of elements in sorted list.  Take this out
> -+	   if it causes problems in certain environments. */
> -+	break;
> -+    }
> -+  return -1;
> -+}
> -+
> -+/* The variable in NAME has just had its state changed.  Check to see if it
> -+   is one of the special ones where something special happens. */
> -+void
> -+stupidly_hack_special_variables (name)
> -+     char *name;
> -+{
> -+  static int sv_sorted = 0;
> -+  int i;
> -+
> -+  if (sv_sorted == 0)	/* shouldn't need, but it's fairly cheap. */
> -+    {
> -+      qsort (special_vars, N_SPECIAL_VARS, sizeof (special_vars[0]),
> -+		(QSFUNC *)sv_compare);
> -+      sv_sorted = 1;
> -+    }
> -+
> -+  i = find_special_var (name);
> -+  if (i != -1)
> -+    (*(special_vars[i].function)) (name);
> -+}
> -+
> -+/* Special variables that need hooks to be run when they are unset as part
> -+   of shell reinitialization should have their sv_ functions run here. */
> -+void
> -+reinit_special_variables ()
> -+{
> -+#if defined (READLINE)
> -+  sv_comp_wordbreaks ("COMP_WORDBREAKS");
> -+#endif
> -+  sv_globignore ("GLOBIGNORE");
> -+  sv_opterr ("OPTERR");
> -+}
> -+
> -+void
> -+sv_ifs (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  v = find_variable ("IFS");
> -+  setifs (v);
> -+}
> -+
> -+/* What to do just after the PATH variable has changed. */
> -+void
> -+sv_path (name)
> -+     char *name;
> -+{
> -+  /* hash -r */
> -+  phash_flush ();
> -+}
> -+
> -+/* What to do just after one of the MAILxxxx variables has changed.  NAME
> -+   is the name of the variable.  This is called with NAME set to one of
> -+   MAIL, MAILCHECK, or MAILPATH.  */
> -+void
> -+sv_mail (name)
> -+     char *name;
> -+{
> -+  /* If the time interval for checking the files has changed, then
> -+     reset the mail timer.  Otherwise, one of the pathname vars
> -+     to the users mailbox has changed, so rebuild the array of
> -+     filenames. */
> -+  if (name[4] == 'C')  /* if (strcmp (name, "MAILCHECK") == 0) */
> -+    reset_mail_timer ();
> -+  else
> -+    {
> -+      free_mail_files ();
> -+      remember_mail_dates ();
> -+    }
> -+}
> -+
> -+void
> -+sv_funcnest (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *v;
> -+  intmax_t num;
> -+
> -+  v = find_variable (name);
> -+  if (v == 0)
> -+    funcnest_max = 0;
> -+  else if (legal_number (value_cell (v), &num) == 0)
> -+    funcnest_max = 0;
> -+  else
> -+    funcnest_max = num;
> -+}
> -+
> -+/* What to do when GLOBIGNORE changes. */
> -+void
> -+sv_globignore (name)
> -+     char *name;
> -+{
> -+  if (privileged_mode == 0)
> -+    setup_glob_ignore (name);
> -+}
> -+
> -+#if defined (READLINE)
> -+void
> -+sv_comp_wordbreaks (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *sv;
> -+
> -+  sv = find_variable (name);
> -+  if (sv == 0)
> -+    reset_completer_word_break_chars ();
> -+}
> -+
> -+/* What to do just after one of the TERMxxx variables has changed.
> -+   If we are an interactive shell, then try to reset the terminal
> -+   information in readline. */
> -+void
> -+sv_terminal (name)
> -+     char *name;
> -+{
> -+  if (interactive_shell && no_line_editing == 0)
> -+    rl_reset_terminal (get_string_value ("TERM"));
> -+}
> -+
> -+void
> -+sv_hostfile (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  v = find_variable (name);
> -+  if (v == 0)
> -+    clear_hostname_list ();
> -+  else
> -+    hostname_list_initialized = 0;
> -+}
> -+
> -+#if defined (STRICT_POSIX)
> -+/* In strict posix mode, we allow assignments to LINES and COLUMNS (and values
> -+   found in the initial environment) to override the terminal size reported by
> -+   the kernel. */
> -+void
> -+sv_winsize (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *v;
> -+  intmax_t xd;
> -+  int d;
> -+
> -+  if (posixly_correct == 0 || interactive_shell == 0 || no_line_editing)
> -+    return;
> -+
> -+  v = find_variable (name);
> -+  if (v == 0 || var_isnull (v))
> -+    rl_reset_screen_size ();
> -+  else
> -+    {
> -+      if (legal_number (value_cell (v), &xd) == 0)
> -+	return;
> -+      winsize_assignment = 1;
> -+      d = xd;			/* truncate */
> -+      if (name[0] == 'L')	/* LINES */
> -+	rl_set_screen_size (d, -1);
> -+      else			/* COLUMNS */
> -+	rl_set_screen_size (-1, d);
> -+      winsize_assignment = 0;
> -+    }
> -+}
> -+#endif /* STRICT_POSIX */
> -+#endif /* READLINE */
> -+
> -+/* Update the value of HOME in the export environment so tilde expansion will
> -+   work on cygwin. */
> -+#if defined (__CYGWIN__)
> -+sv_home (name)
> -+     char *name;
> -+{
> -+  array_needs_making = 1;
> -+  maybe_make_export_env ();
> -+}
> -+#endif
> -+
> -+#if defined (HISTORY)
> -+/* What to do after the HISTSIZE or HISTFILESIZE variables change.
> -+   If there is a value for this HISTSIZE (and it is numeric), then stifle
> -+   the history.  Otherwise, if there is NO value for this variable,
> -+   unstifle the history.  If name is HISTFILESIZE, and its value is
> -+   numeric, truncate the history file to hold no more than that many
> -+   lines. */
> -+void
> -+sv_histsize (name)
> -+     char *name;
> -+{
> -+  char *temp;
> -+  intmax_t num;
> -+  int hmax;
> -+
> -+  temp = get_string_value (name);
> -+
> -+  if (temp && *temp)
> -+    {
> -+      if (legal_number (temp, &num))
> -+	{
> -+	  hmax = num;
> -+	  if (hmax < 0 && name[4] == 'S')
> -+	    unstifle_history ();	/* unstifle history if HISTSIZE < 0 */
> -+	  else if (name[4] == 'S')
> -+	    {
> -+	      stifle_history (hmax);
> -+	      hmax = where_history ();
> -+	      if (history_lines_this_session > hmax)
> -+		history_lines_this_session = hmax;
> -+	    }
> -+	  else if (hmax >= 0)	/* truncate HISTFILE if HISTFILESIZE >= 0 */
> -+	    {
> -+	      history_truncate_file (get_string_value ("HISTFILE"), hmax);
> -+	      if (hmax <= history_lines_in_file)
> -+		history_lines_in_file = hmax;
> -+	    }
> -+	}
> -+    }
> -+  else if (name[4] == 'S')
> -+    unstifle_history ();
> -+}
> -+
> -+/* What to do after the HISTIGNORE variable changes. */
> -+void
> -+sv_histignore (name)
> -+     char *name;
> -+{
> -+  setup_history_ignore (name);
> -+}
> -+
> -+/* What to do after the HISTCONTROL variable changes. */
> -+void
> -+sv_history_control (name)
> -+     char *name;
> -+{
> -+  char *temp;
> -+  char *val;
> -+  int tptr;
> -+
> -+  history_control = 0;
> -+  temp = get_string_value (name);
> -+
> -+  if (temp == 0 || *temp == 0)
> -+    return;
> -+
> -+  tptr = 0;
> -+  while (val = extract_colon_unit (temp, &tptr))
> -+    {
> -+      if (STREQ (val, "ignorespace"))
> -+	history_control |= HC_IGNSPACE;
> -+      else if (STREQ (val, "ignoredups"))
> -+	history_control |= HC_IGNDUPS;
> -+      else if (STREQ (val, "ignoreboth"))
> -+	history_control |= HC_IGNBOTH;
> -+      else if (STREQ (val, "erasedups"))
> -+	history_control |= HC_ERASEDUPS;
> -+
> -+      free (val);
> -+    }
> -+}
> -+
> -+#if defined (BANG_HISTORY)
> -+/* Setting/unsetting of the history expansion character. */
> -+void
> -+sv_histchars (name)
> -+     char *name;
> -+{
> -+  char *temp;
> -+
> -+  temp = get_string_value (name);
> -+  if (temp)
> -+    {
> -+      history_expansion_char = *temp;
> -+      if (temp[0] && temp[1])
> -+	{
> -+	  history_subst_char = temp[1];
> -+	  if (temp[2])
> -+	      history_comment_char = temp[2];
> -+	}
> -+    }
> -+  else
> -+    {
> -+      history_expansion_char = '!';
> -+      history_subst_char = '^';
> -+      history_comment_char = '#';
> -+    }
> -+}
> -+#endif /* BANG_HISTORY */
> -+
> -+void
> -+sv_histtimefmt (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *v;
> -+
> -+  if (v = find_variable (name))
> -+    {
> -+      if (history_comment_char == 0)
> -+	history_comment_char = '#';
> -+    }
> -+  history_write_timestamps = (v != 0);
> -+}
> -+#endif /* HISTORY */
> -+
> -+#if defined (HAVE_TZSET)
> -+void
> -+sv_tz (name)
> -+     char *name;
> -+{
> -+  if (chkexport (name))
> -+    tzset ();
> -+}
> -+#endif
> -+
> -+/* If the variable exists, then the value of it can be the number
> -+   of times we actually ignore the EOF.  The default is small,
> -+   (smaller than csh, anyway). */
> -+void
> -+sv_ignoreeof (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *tmp_var;
> -+  char *temp;
> -+
> -+  eof_encountered = 0;
> -+
> -+  tmp_var = find_variable (name);
> -+  ignoreeof = tmp_var != 0;
> -+  temp = tmp_var ? value_cell (tmp_var) : (char *)NULL;
> -+  if (temp)
> -+    eof_encountered_limit = (*temp && all_digits (temp)) ? atoi (temp) : 10;
> -+  set_shellopts ();	/* make sure `ignoreeof' is/is not in $SHELLOPTS */
> -+}
> -+
> -+void
> -+sv_optind (name)
> -+     char *name;
> -+{
> -+  char *tt;
> -+  int s;
> -+
> -+  tt = get_string_value ("OPTIND");
> -+  if (tt && *tt)
> -+    {
> -+      s = atoi (tt);
> -+
> -+      /* According to POSIX, setting OPTIND=1 resets the internal state
> -+	 of getopt (). */
> -+      if (s < 0 || s == 1)
> -+	s = 0;
> -+    }
> -+  else
> -+    s = 0;
> -+  getopts_reset (s);
> -+}
> -+
> -+void
> -+sv_opterr (name)
> -+     char *name;
> -+{
> -+  char *tt;
> -+
> -+  tt = get_string_value ("OPTERR");
> -+  sh_opterr = (tt && *tt) ? atoi (tt) : 1;
> -+}
> -+
> -+void
> -+sv_strict_posix (name)
> -+     char *name;
> -+{
> -+  SET_INT_VAR (name, posixly_correct);
> -+  posix_initialize (posixly_correct);
> -+#if defined (READLINE)
> -+  if (interactive_shell)
> -+    posix_readline_initialize (posixly_correct);
> -+#endif /* READLINE */
> -+  set_shellopts ();	/* make sure `posix' is/is not in $SHELLOPTS */
> -+}
> -+
> -+void
> -+sv_locale (name)
> -+     char *name;
> -+{
> -+  char *v;
> -+  int r;
> -+
> -+  v = get_string_value (name);
> -+  if (name[0] == 'L' && name[1] == 'A')	/* LANG */
> -+    r = set_lang (name, v);
> -+  else
> -+    r = set_locale_var (name, v);		/* LC_*, TEXTDOMAIN* */
> -+
> -+#if 1
> -+  if (r == 0 && posixly_correct)
> -+    last_command_exit_value = 1;
> -+#endif
> -+}
> -+
> -+#if defined (ARRAY_VARS)
> -+void
> -+set_pipestatus_array (ps, nproc)
> -+     int *ps;
> -+     int nproc;
> -+{
> -+  SHELL_VAR *v;
> -+  ARRAY *a;
> -+  ARRAY_ELEMENT *ae;
> -+  register int i;
> -+  char *t, tbuf[INT_STRLEN_BOUND(int) + 1];
> -+
> -+  v = find_variable ("PIPESTATUS");
> -+  if (v == 0)
> -+    v = make_new_array_variable ("PIPESTATUS");
> -+  if (array_p (v) == 0)
> -+    return;		/* Do nothing if not an array variable. */
> -+  a = array_cell (v);
> -+
> -+  if (a == 0 || array_num_elements (a) == 0)
> -+    {
> -+      for (i = 0; i < nproc; i++)	/* was ps[i] != -1, not i < nproc */
> -+	{
> -+	  t = inttostr (ps[i], tbuf, sizeof (tbuf));
> -+	  array_insert (a, i, t);
> -+	}
> -+      return;
> -+    }
> -+
> -+  /* Fast case */
> -+  if (array_num_elements (a) == nproc && nproc == 1)
> -+    {
> -+      ae = element_forw (a->head);
> -+      free (element_value (ae));
> -+      ae->value = itos (ps[0]);
> -+    }
> -+  else if (array_num_elements (a) <= nproc)
> -+    {
> -+      /* modify in array_num_elements members in place, then add */
> -+      ae = a->head;
> -+      for (i = 0; i < array_num_elements (a); i++)
> -+	{
> -+	  ae = element_forw (ae);
> -+	  free (element_value (ae));
> -+	  ae->value = itos (ps[i]);
> -+	}
> -+      /* add any more */
> -+      for ( ; i < nproc; i++)
> -+	{
> -+	  t = inttostr (ps[i], tbuf, sizeof (tbuf));
> -+	  array_insert (a, i, t);
> -+	}
> -+    }
> -+  else
> -+    {
> -+      /* deleting elements.  it's faster to rebuild the array. */	  
> -+      array_flush (a);
> -+      for (i = 0; ps[i] != -1; i++)
> -+	{
> -+	  t = inttostr (ps[i], tbuf, sizeof (tbuf));
> -+	  array_insert (a, i, t);
> -+	}
> -+    }
> -+}
> -+
> -+ARRAY *
> -+save_pipestatus_array ()
> -+{
> -+  SHELL_VAR *v;
> -+  ARRAY *a, *a2;
> -+
> -+  v = find_variable ("PIPESTATUS");
> -+  if (v == 0 || array_p (v) == 0 || array_cell (v) == 0)
> -+    return ((ARRAY *)NULL);
> -+    
> -+  a = array_cell (v);
> -+  a2 = array_copy (array_cell (v));
> -+
> -+  return a2;
> -+}
> -+
> -+void
> -+restore_pipestatus_array (a)
> -+     ARRAY *a;
> -+{
> -+  SHELL_VAR *v;
> -+  ARRAY *a2;
> -+
> -+  v = find_variable ("PIPESTATUS");
> -+  /* XXX - should we still assign even if existing value is NULL? */
> -+  if (v == 0 || array_p (v) == 0 || array_cell (v) == 0)
> -+    return;
> -+
> -+  a2 = array_cell (v);
> -+  var_setarray (v, a); 
> -+
> -+  array_dispose (a2);
> -+}
> -+#endif
> -+
> -+void
> -+set_pipestatus_from_exit (s)
> -+     int s;
> -+{
> -+#if defined (ARRAY_VARS)
> -+  static int v[2] = { 0, -1 };
> -+
> -+  v[0] = s;
> -+  set_pipestatus_array (v, 1);
> -+#endif
> -+}
> -+
> -+void
> -+sv_xtracefd (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *v;
> -+  char *t, *e;
> -+  int fd;
> -+  FILE *fp;
> -+
> -+  v = find_variable (name);
> -+  if (v == 0)
> -+    {
> -+      xtrace_reset ();
> -+      return;
> -+    }
> -+
> -+  t = value_cell (v);
> -+  if (t == 0 || *t == 0)
> -+    xtrace_reset ();
> -+  else
> -+    {
> -+      fd = (int)strtol (t, &e, 10);
> -+      if (e != t && *e == '\0' && sh_validfd (fd))
> -+	{
> -+	  fp = fdopen (fd, "w");
> -+	  if (fp == 0)
> -+	    internal_error (_("%s: %s: cannot open as FILE"), name, value_cell (v));
> -+	  else
> -+	    xtrace_set (fd, fp);
> -+	}
> -+      else
> -+	internal_error (_("%s: %s: invalid value for trace file descriptor"), name, value_cell (v));
> -+    }
> -+}
> -+
> -+#define MIN_COMPAT_LEVEL 31
> -+
> -+void
> -+sv_shcompat (name)
> -+     char *name;
> -+{
> -+  SHELL_VAR *v;
> -+  char *val;
> -+  int tens, ones, compatval;
> -+
> -+  v = find_variable (name);
> -+  if (v == 0)
> -+    {
> -+      shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
> -+      set_compatibility_opts ();
> -+      return;
> -+    }
> -+  val = value_cell (v);
> -+  if (val == 0 || *val == '\0')
> -+    {
> -+      shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
> -+      set_compatibility_opts ();
> -+      return;
> -+    }
> -+  /* Handle decimal-like compatibility version specifications: 4.2 */
> -+  if (isdigit (val[0]) && val[1] == '.' && isdigit (val[2]) && val[3] == 0)
> -+    {
> -+      tens = val[0] - '0';
> -+      ones = val[2] - '0';
> -+      compatval = tens*10 + ones;
> -+    }
> -+  /* Handle integer-like compatibility version specifications: 42 */
> -+  else if (isdigit (val[0]) && isdigit (val[1]) && val[2] == 0)
> -+    {
> -+      tens = val[0] - '0';
> -+      ones = val[1] - '0';
> -+      compatval = tens*10 + ones;
> -+    }
> -+  else
> -+    {
> -+compat_error:
> -+      internal_error (_("%s: %s: compatibility value out of range"), name, val);
> -+      shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
> -+      set_compatibility_opts ();
> -+      return;
> -+    }
> -+
> -+  if (compatval < MIN_COMPAT_LEVEL || compatval > DEFAULT_COMPAT_LEVEL)
> -+    goto compat_error;
> -+
> -+  shell_compatibility_level = compatval;
> -+  set_compatibility_opts ();
> -+}
> -+
> -+#if defined (JOB_CONTROL)
> -+void
> -+sv_childmax (name)
> -+     char *name;
> -+{
> -+  char *tt;
> -+  int s;
> -+
> -+  tt = get_string_value (name);
> -+  s = (tt && *tt) ? atoi (tt) : 0;
> -+  set_maxchild (s);
> -+}
> -+#endif
> diff --git a/patches/bash-4.3.30/0002-Bash-4.3-patch-32.patch b/patches/bash-4.3.30/0002-Bash-4.3-patch-32.patch
> deleted file mode 100644
> index 801b4a609..000000000
> --- a/patches/bash-4.3.30/0002-Bash-4.3-patch-32.patch
> +++ /dev/null
> @@ -1,5409 +0,0 @@
> -From: Chet Ramey <chet.ramey@case.edu>
> -Date: Thu, 15 Jan 2015 10:20:45 -0500
> -Subject: [PATCH] Bash-4.3 patch 32
> -
> ----
> - jobs.c           |    4 +-
> - patchlevel.h     |    2 +-
> - variables.c.orig | 5365 ------------------------------------------------------
> - 3 files changed, 4 insertions(+), 5367 deletions(-)
> - delete mode 100644 variables.c.orig
> -
> -diff --git a/jobs.c b/jobs.c
> -index f38b0c3f4446..b6e59eba0de8 100644
> ---- a/jobs.c
> -+++ b/jobs.c
> -@@ -3339,7 +3339,9 @@ itrace("waitchld: waitpid returns %d block = %d", pid, block);
> -       if (posixly_correct && this_shell_builtin && this_shell_builtin == wait_builtin)
> - 	{
> - 	  interrupt_immediately = 0;
> --	  trap_handler (SIGCHLD);	/* set pending_traps[SIGCHLD] */
> -+	  /* This was trap_handler (SIGCHLD) but that can lose traps if
> -+	     children_exited > 1 */
> -+	  queue_sigchld_trap (children_exited);
> - 	  wait_signal_received = SIGCHLD;
> - 	  /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up;
> - 	     run_pending_traps will call run_sigchld_trap later  */
> -diff --git a/patchlevel.h b/patchlevel.h
> -index 0ad46aafbdd9..b8bf38704ed2 100644
> ---- a/patchlevel.h
> -+++ b/patchlevel.h
> -@@ -25,6 +25,6 @@
> -    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
> -    looks for to find the patch level (for the sccs version string). */
> - 
> --#define PATCHLEVEL 31
> -+#define PATCHLEVEL 32
> - 
> - #endif /* _PATCHLEVEL_H_ */
> -diff --git a/variables.c.orig b/variables.c.orig
> -deleted file mode 100644
> -index 7c82710e0f0b..000000000000
> ---- a/variables.c.orig
> -+++ /dev/null
> -@@ -1,5365 +0,0 @@
> --/* variables.c -- Functions for hacking shell variables. */
> --
> --/* Copyright (C) 1987-2013 Free Software Foundation, Inc.
> --
> --   This file is part of GNU Bash, the Bourne Again SHell.
> --
> --   Bash is free software: you can redistribute it and/or modify
> --   it under the terms of the GNU General Public License as published by
> --   the Free Software Foundation, either version 3 of the License, or
> --   (at your option) any later version.
> --
> --   Bash is distributed in the hope that it will be useful,
> --   but WITHOUT ANY WARRANTY; without even the implied warranty of
> --   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> --   GNU General Public License for more details.
> --
> --   You should have received a copy of the GNU General Public License
> --   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
> --*/
> --
> --#include "config.h"
> --
> --#include "bashtypes.h"
> --#include "posixstat.h"
> --#include "posixtime.h"
> --
> --#if defined (__QNX__)
> --#  if defined (__QNXNTO__)
> --#    include <sys/netmgr.h>
> --#  else
> --#    include <sys/vc.h>
> --#  endif /* !__QNXNTO__ */
> --#endif /* __QNX__ */
> --
> --#if defined (HAVE_UNISTD_H)
> --#  include <unistd.h>
> --#endif
> --
> --#include <stdio.h>
> --#include "chartypes.h"
> --#if defined (HAVE_PWD_H)
> --#  include <pwd.h>
> --#endif
> --#include "bashansi.h"
> --#include "bashintl.h"
> --
> --#define NEED_XTRACE_SET_DECL
> --
> --#include "shell.h"
> --#include "flags.h"
> --#include "execute_cmd.h"
> --#include "findcmd.h"
> --#include "mailcheck.h"
> --#include "input.h"
> --#include "hashcmd.h"
> --#include "pathexp.h"
> --#include "alias.h"
> --#include "jobs.h"
> --
> --#include "version.h"
> --
> --#include "builtins/getopt.h"
> --#include "builtins/common.h"
> --#include "builtins/builtext.h"
> --
> --#if defined (READLINE)
> --#  include "bashline.h"
> --#  include <readline/readline.h>
> --#else
> --#  include <tilde/tilde.h>
> --#endif
> --
> --#if defined (HISTORY)
> --#  include "bashhist.h"
> --#  include <readline/history.h>
> --#endif /* HISTORY */
> --
> --#if defined (PROGRAMMABLE_COMPLETION)
> --#  include "pcomplete.h"
> --#endif
> --
> --#define TEMPENV_HASH_BUCKETS	4	/* must be power of two */
> --
> --#define ifsname(s)	((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0')
> --
> --#define BASHFUNC_PREFIX		"BASH_FUNC_"
> --#define BASHFUNC_PREFLEN	10	/* == strlen(BASHFUNC_PREFIX */
> --#define BASHFUNC_SUFFIX		"%%"
> --#define BASHFUNC_SUFFLEN	2	/* == strlen(BASHFUNC_SUFFIX) */
> --
> --extern char **environ;
> --
> --/* Variables used here and defined in other files. */
> --extern int posixly_correct;
> --extern int line_number, line_number_base;
> --extern int subshell_environment, indirection_level, subshell_level;
> --extern int build_version, patch_level;
> --extern int expanding_redir;
> --extern int last_command_exit_value;
> --extern char *dist_version, *release_status;
> --extern char *shell_name;
> --extern char *primary_prompt, *secondary_prompt;
> --extern char *current_host_name;
> --extern sh_builtin_func_t *this_shell_builtin;
> --extern SHELL_VAR *this_shell_function;
> --extern char *the_printed_command_except_trap;
> --extern char *this_command_name;
> --extern char *command_execution_string;
> --extern time_t shell_start_time;
> --extern int assigning_in_environment;
> --extern int executing_builtin;
> --extern int funcnest_max;
> --
> --#if defined (READLINE)
> --extern int no_line_editing;
> --extern int perform_hostname_completion;
> --#endif
> --
> --/* The list of shell variables that the user has created at the global
> --   scope, or that came from the environment. */
> --VAR_CONTEXT *global_variables = (VAR_CONTEXT *)NULL;
> --
> --/* The current list of shell variables, including function scopes */
> --VAR_CONTEXT *shell_variables = (VAR_CONTEXT *)NULL;
> --
> --/* The list of shell functions that the user has created, or that came from
> --   the environment. */
> --HASH_TABLE *shell_functions = (HASH_TABLE *)NULL;
> --
> --#if defined (DEBUGGER)
> --/* The table of shell function definitions that the user defined or that
> --   came from the environment. */
> --HASH_TABLE *shell_function_defs = (HASH_TABLE *)NULL;
> --#endif
> --
> --/* The current variable context.  This is really a count of how deep into
> --   executing functions we are. */
> --int variable_context = 0;
> --
> --/* The set of shell assignments which are made only in the environment
> --   for a single command. */
> --HASH_TABLE *temporary_env = (HASH_TABLE *)NULL;
> --
> --/* Set to non-zero if an assignment error occurs while putting variables
> --   into the temporary environment. */
> --int tempenv_assign_error;
> --
> --/* Some funky variables which are known about specially.  Here is where
> --   "$*", "$1", and all the cruft is kept. */
> --char *dollar_vars[10];
> --WORD_LIST *rest_of_args = (WORD_LIST *)NULL;
> --
> --/* The value of $$. */
> --pid_t dollar_dollar_pid;
> --
> --/* Non-zero means that we have to remake EXPORT_ENV. */
> --int array_needs_making = 1;
> --
> --/* The number of times BASH has been executed.  This is set
> --   by initialize_variables (). */
> --int shell_level = 0;
> --
> --/* An array which is passed to commands as their environment.  It is
> --   manufactured from the union of the initial environment and the
> --   shell variables that are marked for export. */
> --char **export_env = (char **)NULL;
> --static int export_env_index;
> --static int export_env_size;
> --
> --#if defined (READLINE)
> --static int winsize_assignment;		/* currently assigning to LINES or COLUMNS */
> --#endif
> --
> --static HASH_TABLE *last_table_searched;	/* hash_lookup sets this */
> --
> --/* Some forward declarations. */
> --static void create_variable_tables __P((void));
> --
> --static void set_machine_vars __P((void));
> --static void set_home_var __P((void));
> --static void set_shell_var __P((void));
> --static char *get_bash_name __P((void));
> --static void initialize_shell_level __P((void));
> --static void uidset __P((void));
> --#if defined (ARRAY_VARS)
> --static void make_vers_array __P((void));
> --#endif
> --
> --static SHELL_VAR *null_assign __P((SHELL_VAR *, char *, arrayind_t, char *));
> --#if defined (ARRAY_VARS)
> --static SHELL_VAR *null_array_assign __P((SHELL_VAR *, char *, arrayind_t, char *));
> --#endif
> --static SHELL_VAR *get_self __P((SHELL_VAR *));
> --
> --#if defined (ARRAY_VARS)
> --static SHELL_VAR *init_dynamic_array_var __P((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int));
> --static SHELL_VAR *init_dynamic_assoc_var __P((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int));
> --#endif
> --
> --static SHELL_VAR *assign_seconds __P((SHELL_VAR *, char *, arrayind_t, char *));
> --static SHELL_VAR *get_seconds __P((SHELL_VAR *));
> --static SHELL_VAR *init_seconds_var __P((void));
> --
> --static int brand __P((void));
> --static void sbrand __P((unsigned long));		/* set bash random number generator. */
> --static void seedrand __P((void));			/* seed generator randomly */
> --static SHELL_VAR *assign_random __P((SHELL_VAR *, char *, arrayind_t, char *));
> --static SHELL_VAR *get_random __P((SHELL_VAR *));
> --
> --static SHELL_VAR *assign_lineno __P((SHELL_VAR *, char *, arrayind_t, char *));
> --static SHELL_VAR *get_lineno __P((SHELL_VAR *));
> --
> --static SHELL_VAR *assign_subshell __P((SHELL_VAR *, char *, arrayind_t, char *));
> --static SHELL_VAR *get_subshell __P((SHELL_VAR *));
> --
> --static SHELL_VAR *get_bashpid __P((SHELL_VAR *));
> --
> --#if defined (HISTORY)
> --static SHELL_VAR *get_histcmd __P((SHELL_VAR *));
> --#endif
> --
> --#if defined (READLINE)
> --static SHELL_VAR *get_comp_wordbreaks __P((SHELL_VAR *));
> --static SHELL_VAR *assign_comp_wordbreaks __P((SHELL_VAR *, char *, arrayind_t, char *));
> --#endif
> --
> --#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS)
> --static SHELL_VAR *assign_dirstack __P((SHELL_VAR *, char *, arrayind_t, char *));
> --static SHELL_VAR *get_dirstack __P((SHELL_VAR *));
> --#endif
> --
> --#if defined (ARRAY_VARS)
> --static SHELL_VAR *get_groupset __P((SHELL_VAR *));
> --
> --static SHELL_VAR *build_hashcmd __P((SHELL_VAR *));
> --static SHELL_VAR *get_hashcmd __P((SHELL_VAR *));
> --static SHELL_VAR *assign_hashcmd __P((SHELL_VAR *,  char *, arrayind_t, char *));
> --#  if defined (ALIAS)
> --static SHELL_VAR *build_aliasvar __P((SHELL_VAR *));
> --static SHELL_VAR *get_aliasvar __P((SHELL_VAR *));
> --static SHELL_VAR *assign_aliasvar __P((SHELL_VAR *,  char *, arrayind_t, char *));
> --#  endif
> --#endif
> --
> --static SHELL_VAR *get_funcname __P((SHELL_VAR *));
> --static SHELL_VAR *init_funcname_var __P((void));
> --
> --static void initialize_dynamic_variables __P((void));
> --
> --static SHELL_VAR *hash_lookup __P((const char *, HASH_TABLE *));
> --static SHELL_VAR *new_shell_variable __P((const char *));
> --static SHELL_VAR *make_new_variable __P((const char *, HASH_TABLE *));
> --static SHELL_VAR *bind_variable_internal __P((const char *, char *, HASH_TABLE *, int, int));
> --
> --static void dispose_variable_value __P((SHELL_VAR *));
> --static void free_variable_hash_data __P((PTR_T));
> --
> --static VARLIST *vlist_alloc __P((int));
> --static VARLIST *vlist_realloc __P((VARLIST *, int));
> --static void vlist_add __P((VARLIST *, SHELL_VAR *, int));
> --
> --static void flatten __P((HASH_TABLE *, sh_var_map_func_t *, VARLIST *, int));
> --
> --static int qsort_var_comp __P((SHELL_VAR **, SHELL_VAR **));
> --
> --static SHELL_VAR **vapply __P((sh_var_map_func_t *));
> --static SHELL_VAR **fapply __P((sh_var_map_func_t *));
> --
> --static int visible_var __P((SHELL_VAR *));
> --static int visible_and_exported __P((SHELL_VAR *));
> --static int export_environment_candidate __P((SHELL_VAR *));
> --static int local_and_exported __P((SHELL_VAR *));
> --static int variable_in_context __P((SHELL_VAR *));
> --#if defined (ARRAY_VARS)
> --static int visible_array_vars __P((SHELL_VAR *));
> --#endif
> --
> --static SHELL_VAR *find_nameref_at_context __P((SHELL_VAR *, VAR_CONTEXT *));
> --static SHELL_VAR *find_variable_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **));
> --static SHELL_VAR *find_variable_last_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **));
> --
> --static SHELL_VAR *bind_tempenv_variable __P((const char *, char *));
> --static void push_temp_var __P((PTR_T));
> --static void propagate_temp_var __P((PTR_T));
> --static void dispose_temporary_env __P((sh_free_func_t *));     
> --
> --static inline char *mk_env_string __P((const char *, const char *, int));
> --static char **make_env_array_from_var_list __P((SHELL_VAR **));
> --static char **make_var_export_array __P((VAR_CONTEXT *));
> --static char **make_func_export_array __P((void));
> --static void add_temp_array_to_env __P((char **, int, int));
> --
> --static int n_shell_variables __P((void));
> --static int set_context __P((SHELL_VAR *));
> --
> --static void push_func_var __P((PTR_T));
> --static void push_exported_var __P((PTR_T));
> --
> --static inline int find_special_var __P((const char *));
> --
> --static void
> --create_variable_tables ()
> --{
> --  if (shell_variables == 0)
> --    {
> --      shell_variables = global_variables = new_var_context ((char *)NULL, 0);
> --      shell_variables->scope = 0;
> --      shell_variables->table = hash_create (0);
> --    }
> --
> --  if (shell_functions == 0)
> --    shell_functions = hash_create (0);
> --
> --#if defined (DEBUGGER)
> --  if (shell_function_defs == 0)
> --    shell_function_defs = hash_create (0);
> --#endif
> --}
> --
> --/* Initialize the shell variables from the current environment.
> --   If PRIVMODE is nonzero, don't import functions from ENV or
> --   parse $SHELLOPTS. */
> --void
> --initialize_shell_variables (env, privmode)
> --     char **env;
> --     int privmode;
> --{
> --  char *name, *string, *temp_string;
> --  int c, char_index, string_index, string_length, ro;
> --  SHELL_VAR *temp_var;
> --
> --  create_variable_tables ();
> --
> --  for (string_index = 0; string = env[string_index++]; )
> --    {
> --      char_index = 0;
> --      name = string;
> --      while ((c = *string++) && c != '=')
> --	;
> --      if (string[-1] == '=')
> --	char_index = string - name - 1;
> --
> --      /* If there are weird things in the environment, like `=xxx' or a
> --	 string without an `=', just skip them. */
> --      if (char_index == 0)
> --	continue;
> --
> --      /* ASSERT(name[char_index] == '=') */
> --      name[char_index] = '\0';
> --      /* Now, name = env variable name, string = env variable value, and
> --	 char_index == strlen (name) */
> --
> --      temp_var = (SHELL_VAR *)NULL;
> --
> --      /* If exported function, define it now.  Don't import functions from
> --	 the environment in privileged mode. */
> --      if (privmode == 0 && read_but_dont_execute == 0 && 
> --          STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) &&
> --          STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) &&
> --	  STREQN ("() {", string, 4))
> --	{
> --	  size_t namelen;
> --	  char *tname;		/* desired imported function name */
> --
> --	  namelen = char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN;
> --
> --	  tname = name + BASHFUNC_PREFLEN;	/* start of func name */
> --	  tname[namelen] = '\0';		/* now tname == func name */
> --
> --	  string_length = strlen (string);
> --	  temp_string = (char *)xmalloc (namelen + string_length + 2);
> --
> --	  memcpy (temp_string, tname, namelen);
> --	  temp_string[namelen] = ' ';
> --	  memcpy (temp_string + namelen + 1, string, string_length + 1);
> --
> --	  /* Don't import function names that are invalid identifiers from the
> --	     environment, though we still allow them to be defined as shell
> --	     variables. */
> --	  if (absolute_program (tname) == 0 && (posixly_correct == 0 || legal_identifier (tname)))
> --	    parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
> --
> --	  if (temp_var = find_function (tname))
> --	    {
> --	      VSETATTR (temp_var, (att_exported|att_imported));
> --	      array_needs_making = 1;
> --	    }
> --	  else
> --	    {
> --	      if (temp_var = bind_variable (name, string, 0))
> --		{
> --		  VSETATTR (temp_var, (att_exported | att_imported | att_invisible));
> --		  array_needs_making = 1;
> --		}
> --	      last_command_exit_value = 1;
> --	      report_error (_("error importing function definition for `%s'"), tname);
> --	    }
> --
> --	  /* Restore original suffix */
> --	  tname[namelen] = BASHFUNC_SUFFIX[0];
> --	}
> --#if defined (ARRAY_VARS)
> --#  if ARRAY_EXPORT
> --      /* Array variables may not yet be exported. */
> --      else if (*string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')')
> --	{
> --	  string_length = 1;
> --	  temp_string = extract_array_assignment_list (string, &string_length);
> --	  temp_var = assign_array_from_string (name, temp_string);
> --	  FREE (temp_string);
> --	  VSETATTR (temp_var, (att_exported | att_imported));
> --	  array_needs_making = 1;
> --	}
> --#  endif /* ARRAY_EXPORT */
> --#endif
> --#if 0
> --      else if (legal_identifier (name))
> --#else
> --      else
> --#endif
> --	{
> --	  ro = 0;
> --	  if (posixly_correct && STREQ (name, "SHELLOPTS"))
> --	    {
> --	      temp_var = find_variable ("SHELLOPTS");
> --	      ro = temp_var && readonly_p (temp_var);
> --	      if (temp_var)
> --		VUNSETATTR (temp_var, att_readonly);
> --	    }
> --	  temp_var = bind_variable (name, string, 0);
> --	  if (temp_var)
> --	    {
> --	      if (legal_identifier (name))
> --		VSETATTR (temp_var, (att_exported | att_imported));
> --	      else
> --		VSETATTR (temp_var, (att_exported | att_imported | att_invisible));
> --	      if (ro)
> --		VSETATTR (temp_var, att_readonly);
> --	      array_needs_making = 1;
> --	    }
> --	}
> --
> --      name[char_index] = '=';
> --      /* temp_var can be NULL if it was an exported function with a syntax
> --	 error (a different bug, but it still shouldn't dump core). */
> --      if (temp_var && function_p (temp_var) == 0)	/* XXX not yet */
> --	{
> --	  CACHE_IMPORTSTR (temp_var, name);
> --	}
> --    }
> --
> --  set_pwd ();
> --
> --  /* Set up initial value of $_ */
> --  temp_var = set_if_not ("_", dollar_vars[0]);
> --
> --  /* Remember this pid. */
> --  dollar_dollar_pid = getpid ();
> --
> --  /* Now make our own defaults in case the vars that we think are
> --     important are missing. */
> --  temp_var = set_if_not ("PATH", DEFAULT_PATH_VALUE);
> --#if 0
> --  set_auto_export (temp_var);	/* XXX */
> --#endif
> --
> --  temp_var = set_if_not ("TERM", "dumb");
> --#if 0
> --  set_auto_export (temp_var);	/* XXX */
> --#endif
> --
> --#if defined (__QNX__)
> --  /* set node id -- don't import it from the environment */
> --  {
> --    char node_name[22];
> --#  if defined (__QNXNTO__)
> --    netmgr_ndtostr(ND2S_LOCAL_STR, ND_LOCAL_NODE, node_name, sizeof(node_name));
> --#  else
> --    qnx_nidtostr (getnid (), node_name, sizeof (node_name));
> --#  endif
> --    temp_var = bind_variable ("NODE", node_name, 0);
> --    set_auto_export (temp_var);
> --  }
> --#endif
> --
> --  /* set up the prompts. */
> --  if (interactive_shell)
> --    {
> --#if defined (PROMPT_STRING_DECODE)
> --      set_if_not ("PS1", primary_prompt);
> --#else
> --      if (current_user.uid == -1)
> --	get_current_user_info ();
> --      set_if_not ("PS1", current_user.euid == 0 ? "# " : primary_prompt);
> --#endif
> --      set_if_not ("PS2", secondary_prompt);
> --    }
> --  set_if_not ("PS4", "+ ");
> --
> --  /* Don't allow IFS to be imported from the environment. */
> --  temp_var = bind_variable ("IFS", " \t\n", 0);
> --  setifs (temp_var);
> --
> --  /* Magic machine types.  Pretty convenient. */
> --  set_machine_vars ();
> --
> --  /* Default MAILCHECK for interactive shells.  Defer the creation of a
> --     default MAILPATH until the startup files are read, because MAIL
> --     names a mail file if MAILPATH is not set, and we should provide a
> --     default only if neither is set. */
> --  if (interactive_shell)
> --    {
> --      temp_var = set_if_not ("MAILCHECK", posixly_correct ? "600" : "60");
> --      VSETATTR (temp_var, att_integer);
> --    }
> --
> --  /* Do some things with shell level. */
> --  initialize_shell_level ();
> --
> --  set_ppid ();
> --
> --  /* Initialize the `getopts' stuff. */
> --  temp_var = bind_variable ("OPTIND", "1", 0);
> --  VSETATTR (temp_var, att_integer);
> --  getopts_reset (0);
> --  bind_variable ("OPTERR", "1", 0);
> --  sh_opterr = 1;
> --
> --  if (login_shell == 1 && posixly_correct == 0)
> --    set_home_var ();
> --
> --  /* Get the full pathname to THIS shell, and set the BASH variable
> --     to it. */
> --  name = get_bash_name ();
> --  temp_var = bind_variable ("BASH", name, 0);
> --  free (name);
> --
> --  /* Make the exported environment variable SHELL be the user's login
> --     shell.  Note that the `tset' command looks at this variable
> --     to determine what style of commands to output; if it ends in "csh",
> --     then C-shell commands are output, else Bourne shell commands. */
> --  set_shell_var ();
> --
> --  /* Make a variable called BASH_VERSION which contains the version info. */
> --  bind_variable ("BASH_VERSION", shell_version_string (), 0);
> --#if defined (ARRAY_VARS)
> --  make_vers_array ();
> --#endif
> --
> --  if (command_execution_string)
> --    bind_variable ("BASH_EXECUTION_STRING", command_execution_string, 0);
> --
> --  /* Find out if we're supposed to be in Posix.2 mode via an
> --     environment variable. */
> --  temp_var = find_variable ("POSIXLY_CORRECT");
> --  if (!temp_var)
> --    temp_var = find_variable ("POSIX_PEDANTIC");
> --  if (temp_var && imported_p (temp_var))
> --    sv_strict_posix (temp_var->name);
> --
> --#if defined (HISTORY)
> --  /* Set history variables to defaults, and then do whatever we would
> --     do if the variable had just been set.  Do this only in the case
> --     that we are remembering commands on the history list. */
> --  if (remember_on_history)
> --    {
> --      name = bash_tilde_expand (posixly_correct ? "~/.sh_history" : "~/.bash_history", 0);
> --
> --      set_if_not ("HISTFILE", name);
> --      free (name);
> --    }
> --#endif /* HISTORY */
> --
> --  /* Seed the random number generator. */
> --  seedrand ();
> --
> --  /* Handle some "special" variables that we may have inherited from a
> --     parent shell. */
> --  if (interactive_shell)
> --    {
> --      temp_var = find_variable ("IGNOREEOF");
> --      if (!temp_var)
> --	temp_var = find_variable ("ignoreeof");
> --      if (temp_var && imported_p (temp_var))
> --	sv_ignoreeof (temp_var->name);
> --    }
> --
> --#if defined (HISTORY)
> --  if (interactive_shell && remember_on_history)
> --    {
> --      sv_history_control ("HISTCONTROL");
> --      sv_histignore ("HISTIGNORE");
> --      sv_histtimefmt ("HISTTIMEFORMAT");
> --    }
> --#endif /* HISTORY */
> --
> --#if defined (READLINE) && defined (STRICT_POSIX)
> --  /* POSIXLY_CORRECT will only be 1 here if the shell was compiled
> --     -DSTRICT_POSIX */
> --  if (interactive_shell && posixly_correct && no_line_editing == 0)
> --    rl_prefer_env_winsize = 1;
> --#endif /* READLINE && STRICT_POSIX */
> --
> --     /*
> --      * 24 October 2001
> --      *
> --      * I'm tired of the arguing and bug reports.  Bash now leaves SSH_CLIENT
> --      * and SSH2_CLIENT alone.  I'm going to rely on the shell_level check in
> --      * isnetconn() to avoid running the startup files more often than wanted.
> --      * That will, of course, only work if the user's login shell is bash, so
> --      * I've made that behavior conditional on SSH_SOURCE_BASHRC being defined
> --      * in config-top.h.
> --      */
> --#if 0
> --  temp_var = find_variable ("SSH_CLIENT");
> --  if (temp_var && imported_p (temp_var))
> --    {
> --      VUNSETATTR (temp_var, att_exported);
> --      array_needs_making = 1;
> --    }
> --  temp_var = find_variable ("SSH2_CLIENT");
> --  if (temp_var && imported_p (temp_var))
> --    {
> --      VUNSETATTR (temp_var, att_exported);
> --      array_needs_making = 1;
> --    }
> --#endif
> --
> --  /* Get the user's real and effective user ids. */
> --  uidset ();
> --
> --  temp_var = find_variable ("BASH_XTRACEFD");
> --  if (temp_var && imported_p (temp_var))
> --    sv_xtracefd (temp_var->name);
> --
> --  /* Initialize the dynamic variables, and seed their values. */
> --  initialize_dynamic_variables ();
> --}
> --
> --/* **************************************************************** */
> --/*								    */
> --/*	     Setting values for special shell variables		    */
> --/*								    */
> --/* **************************************************************** */
> --
> --static void
> --set_machine_vars ()
> --{
> --  SHELL_VAR *temp_var;
> --
> --  temp_var = set_if_not ("HOSTTYPE", HOSTTYPE);
> --  temp_var = set_if_not ("OSTYPE", OSTYPE);
> --  temp_var = set_if_not ("MACHTYPE", MACHTYPE);
> --
> --  temp_var = set_if_not ("HOSTNAME", current_host_name);
> --}
> --
> --/* Set $HOME to the information in the password file if we didn't get
> --   it from the environment. */
> --
> --/* This function is not static so the tilde and readline libraries can
> --   use it. */
> --char *
> --sh_get_home_dir ()
> --{
> --  if (current_user.home_dir == 0)
> --    get_current_user_info ();
> --  return current_user.home_dir;
> --}
> --
> --static void
> --set_home_var ()
> --{
> --  SHELL_VAR *temp_var;
> --
> --  temp_var = find_variable ("HOME");
> --  if (temp_var == 0)
> --    temp_var = bind_variable ("HOME", sh_get_home_dir (), 0);
> --#if 0
> --  VSETATTR (temp_var, att_exported);
> --#endif
> --}
> --
> --/* Set $SHELL to the user's login shell if it is not already set.  Call
> --   get_current_user_info if we haven't already fetched the shell. */
> --static void
> --set_shell_var ()
> --{
> --  SHELL_VAR *temp_var;
> --
> --  temp_var = find_variable ("SHELL");
> --  if (temp_var == 0)
> --    {
> --      if (current_user.shell == 0)
> --	get_current_user_info ();
> --      temp_var = bind_variable ("SHELL", current_user.shell, 0);
> --    }
> --#if 0
> --  VSETATTR (temp_var, att_exported);
> --#endif
> --}
> --
> --static char *
> --get_bash_name ()
> --{
> --  char *name;
> --
> --  if ((login_shell == 1) && RELPATH(shell_name))
> --    {
> --      if (current_user.shell == 0)
> --	get_current_user_info ();
> --      name = savestring (current_user.shell);
> --    }
> --  else if (ABSPATH(shell_name))
> --    name = savestring (shell_name);
> --  else if (shell_name[0] == '.' && shell_name[1] == '/')
> --    {
> --      /* Fast path for common case. */
> --      char *cdir;
> --      int len;
> --
> --      cdir = get_string_value ("PWD");
> --      if (cdir)
> --	{
> --	  len = strlen (cdir);
> --	  name = (char *)xmalloc (len + strlen (shell_name) + 1);
> --	  strcpy (name, cdir);
> --	  strcpy (name + len, shell_name + 1);
> --	}
> --      else
> --	name = savestring (shell_name);
> --    }
> --  else
> --    {
> --      char *tname;
> --      int s;
> --
> --      tname = find_user_command (shell_name);
> --
> --      if (tname == 0)
> --	{
> --	  /* Try the current directory.  If there is not an executable
> --	     there, just punt and use the login shell. */
> --	  s = file_status (shell_name);
> --	  if (s & FS_EXECABLE)
> --	    {
> --	      tname = make_absolute (shell_name, get_string_value ("PWD"));
> --	      if (*shell_name == '.')
> --		{
> --		  name = sh_canonpath (tname, PATH_CHECKDOTDOT|PATH_CHECKEXISTS);
> --		  if (name == 0)
> --		    name = tname;
> --		  else
> --		    free (tname);
> --		}
> --	     else
> --		name = tname;
> --	    }
> --	  else
> --	    {
> --	      if (current_user.shell == 0)
> --		get_current_user_info ();
> --	      name = savestring (current_user.shell);
> --	    }
> --	}
> --      else
> --	{
> --	  name = full_pathname (tname);
> --	  free (tname);
> --	}
> --    }
> --
> --  return (name);
> --}
> --
> --void
> --adjust_shell_level (change)
> --     int change;
> --{
> --  char new_level[5], *old_SHLVL;
> --  intmax_t old_level;
> --  SHELL_VAR *temp_var;
> --
> --  old_SHLVL = get_string_value ("SHLVL");
> --  if (old_SHLVL == 0 || *old_SHLVL == '\0' || legal_number (old_SHLVL, &old_level) == 0)
> --    old_level = 0;
> --
> --  shell_level = old_level + change;
> --  if (shell_level < 0)
> --    shell_level = 0;
> --  else if (shell_level > 1000)
> --    {
> --      internal_warning (_("shell level (%d) too high, resetting to 1"), shell_level);
> --      shell_level = 1;
> --    }
> --
> --  /* We don't need the full generality of itos here. */
> --  if (shell_level < 10)
> --    {
> --      new_level[0] = shell_level + '0';
> --      new_level[1] = '\0';
> --    }
> --  else if (shell_level < 100)
> --    {
> --      new_level[0] = (shell_level / 10) + '0';
> --      new_level[1] = (shell_level % 10) + '0';
> --      new_level[2] = '\0';
> --    }
> --  else if (shell_level < 1000)
> --    {
> --      new_level[0] = (shell_level / 100) + '0';
> --      old_level = shell_level % 100;
> --      new_level[1] = (old_level / 10) + '0';
> --      new_level[2] = (old_level % 10) + '0';
> --      new_level[3] = '\0';
> --    }
> --
> --  temp_var = bind_variable ("SHLVL", new_level, 0);
> --  set_auto_export (temp_var);
> --}
> --
> --static void
> --initialize_shell_level ()
> --{
> --  adjust_shell_level (1);
> --}
> --
> --/* If we got PWD from the environment, update our idea of the current
> --   working directory.  In any case, make sure that PWD exists before
> --   checking it.  It is possible for getcwd () to fail on shell startup,
> --   and in that case, PWD would be undefined.  If this is an interactive
> --   login shell, see if $HOME is the current working directory, and if
> --   that's not the same string as $PWD, set PWD=$HOME. */
> --
> --void
> --set_pwd ()
> --{
> --  SHELL_VAR *temp_var, *home_var;
> --  char *temp_string, *home_string;
> --
> --  home_var = find_variable ("HOME");
> --  home_string = home_var ? value_cell (home_var) : (char *)NULL;
> --
> --  temp_var = find_variable ("PWD");
> --  if (temp_var && imported_p (temp_var) &&
> --      (temp_string = value_cell (temp_var)) &&
> --      same_file (temp_string, ".", (struct stat *)NULL, (struct stat *)NULL))
> --    set_working_directory (temp_string);
> --  else if (home_string && interactive_shell && login_shell &&
> --	   same_file (home_string, ".", (struct stat *)NULL, (struct stat *)NULL))
> --    {
> --      set_working_directory (home_string);
> --      temp_var = bind_variable ("PWD", home_string, 0);
> --      set_auto_export (temp_var);
> --    }
> --  else
> --    {
> --      temp_string = get_working_directory ("shell-init");
> --      if (temp_string)
> --	{
> --	  temp_var = bind_variable ("PWD", temp_string, 0);
> --	  set_auto_export (temp_var);
> --	  free (temp_string);
> --	}
> --    }
> --
> --  /* According to the Single Unix Specification, v2, $OLDPWD is an
> --     `environment variable' and therefore should be auto-exported.
> --     Make a dummy invisible variable for OLDPWD, and mark it as exported. */
> --  temp_var = bind_variable ("OLDPWD", (char *)NULL, 0);
> --  VSETATTR (temp_var, (att_exported | att_invisible));
> --}
> --
> --/* Make a variable $PPID, which holds the pid of the shell's parent.  */
> --void
> --set_ppid ()
> --{
> --  char namebuf[INT_STRLEN_BOUND(pid_t) + 1], *name;
> --  SHELL_VAR *temp_var;
> --
> --  name = inttostr (getppid (), namebuf, sizeof(namebuf));
> --  temp_var = find_variable ("PPID");
> --  if (temp_var)
> --    VUNSETATTR (temp_var, (att_readonly | att_exported));
> --  temp_var = bind_variable ("PPID", name, 0);
> --  VSETATTR (temp_var, (att_readonly | att_integer));
> --}
> --
> --static void
> --uidset ()
> --{
> --  char buff[INT_STRLEN_BOUND(uid_t) + 1], *b;
> --  register SHELL_VAR *v;
> --
> --  b = inttostr (current_user.uid, buff, sizeof (buff));
> --  v = find_variable ("UID");
> --  if (v == 0)
> --    {
> --      v = bind_variable ("UID", b, 0);
> --      VSETATTR (v, (att_readonly | att_integer));
> --    }
> --
> --  if (current_user.euid != current_user.uid)
> --    b = inttostr (current_user.euid, buff, sizeof (buff));
> --
> --  v = find_variable ("EUID");
> --  if (v == 0)
> --    {
> --      v = bind_variable ("EUID", b, 0);
> --      VSETATTR (v, (att_readonly | att_integer));
> --    }
> --}
> --
> --#if defined (ARRAY_VARS)
> --static void
> --make_vers_array ()
> --{
> --  SHELL_VAR *vv;
> --  ARRAY *av;
> --  char *s, d[32], b[INT_STRLEN_BOUND(int) + 1];
> --
> --  unbind_variable ("BASH_VERSINFO");
> --
> --  vv = make_new_array_variable ("BASH_VERSINFO");
> --  av = array_cell (vv);
> --  strcpy (d, dist_version);
> --  s = strchr (d, '.');
> --  if (s)
> --    *s++ = '\0';
> --  array_insert (av, 0, d);
> --  array_insert (av, 1, s);
> --  s = inttostr (patch_level, b, sizeof (b));
> --  array_insert (av, 2, s);
> --  s = inttostr (build_version, b, sizeof (b));
> --  array_insert (av, 3, s);
> --  array_insert (av, 4, release_status);
> --  array_insert (av, 5, MACHTYPE);
> --
> --  VSETATTR (vv, att_readonly);
> --}
> --#endif /* ARRAY_VARS */
> --
> --/* Set the environment variables $LINES and $COLUMNS in response to
> --   a window size change. */
> --void
> --sh_set_lines_and_columns (lines, cols)
> --     int lines, cols;
> --{
> --  char val[INT_STRLEN_BOUND(int) + 1], *v;
> --
> --#if defined (READLINE)
> --  /* If we are currently assigning to LINES or COLUMNS, don't do anything. */
> --  if (winsize_assignment)
> --    return;
> --#endif
> --
> --  v = inttostr (lines, val, sizeof (val));
> --  bind_variable ("LINES", v, 0);
> --
> --  v = inttostr (cols, val, sizeof (val));
> --  bind_variable ("COLUMNS", v, 0);
> --}
> --
> --/* **************************************************************** */
> --/*								    */
> --/*		   Printing variables and values		    */
> --/*								    */
> --/* **************************************************************** */
> --
> --/* Print LIST (a list of shell variables) to stdout in such a way that
> --   they can be read back in. */
> --void
> --print_var_list (list)
> --     register SHELL_VAR **list;
> --{
> --  register int i;
> --  register SHELL_VAR *var;
> --
> --  for (i = 0; list && (var = list[i]); i++)
> --    if (invisible_p (var) == 0)
> --      print_assignment (var);
> --}
> --
> --/* Print LIST (a list of shell functions) to stdout in such a way that
> --   they can be read back in. */
> --void
> --print_func_list (list)
> --     register SHELL_VAR **list;
> --{
> --  register int i;
> --  register SHELL_VAR *var;
> --
> --  for (i = 0; list && (var = list[i]); i++)
> --    {
> --      printf ("%s ", var->name);
> --      print_var_function (var);
> --      printf ("\n");
> --    }
> --}
> --      
> --/* Print the value of a single SHELL_VAR.  No newline is
> --   output, but the variable is printed in such a way that
> --   it can be read back in. */
> --void
> --print_assignment (var)
> --     SHELL_VAR *var;
> --{
> --  if (var_isset (var) == 0)
> --    return;
> --
> --  if (function_p (var))
> --    {
> --      printf ("%s", var->name);
> --      print_var_function (var);
> --      printf ("\n");
> --    }
> --#if defined (ARRAY_VARS)
> --  else if (array_p (var))
> --    print_array_assignment (var, 0);
> --  else if (assoc_p (var))
> --    print_assoc_assignment (var, 0);
> --#endif /* ARRAY_VARS */
> --  else
> --    {
> --      printf ("%s=", var->name);
> --      print_var_value (var, 1);
> --      printf ("\n");
> --    }
> --}
> --
> --/* Print the value cell of VAR, a shell variable.  Do not print
> --   the name, nor leading/trailing newline.  If QUOTE is non-zero,
> --   and the value contains shell metacharacters, quote the value
> --   in such a way that it can be read back in. */
> --void
> --print_var_value (var, quote)
> --     SHELL_VAR *var;
> --     int quote;
> --{
> --  char *t;
> --
> --  if (var_isset (var) == 0)
> --    return;
> --
> --  if (quote && posixly_correct == 0 && ansic_shouldquote (value_cell (var)))
> --    {
> --      t = ansic_quote (value_cell (var), 0, (int *)0);
> --      printf ("%s", t);
> --      free (t);
> --    }
> --  else if (quote && sh_contains_shell_metas (value_cell (var)))
> --    {
> --      t = sh_single_quote (value_cell (var));
> --      printf ("%s", t);
> --      free (t);
> --    }
> --  else
> --    printf ("%s", value_cell (var));
> --}
> --
> --/* Print the function cell of VAR, a shell variable.  Do not
> --   print the name, nor leading/trailing newline. */
> --void
> --print_var_function (var)
> --     SHELL_VAR *var;
> --{
> --  char *x;
> --
> --  if (function_p (var) && var_isset (var))
> --    {
> --      x = named_function_string ((char *)NULL, function_cell(var), FUNC_MULTILINE|FUNC_EXTERNAL);
> --      printf ("%s", x);
> --    }
> --}
> --
> --/* **************************************************************** */
> --/*								    */
> --/*		 	Dynamic Variables			    */
> --/*								    */
> --/* **************************************************************** */
> --
> --/* DYNAMIC VARIABLES
> --
> --   These are variables whose values are generated anew each time they are
> --   referenced.  These are implemented using a pair of function pointers
> --   in the struct variable: assign_func, which is called from bind_variable
> --   and, if arrays are compiled into the shell, some of the functions in
> --   arrayfunc.c, and dynamic_value, which is called from find_variable.
> --
> --   assign_func is called from bind_variable_internal, if
> --   bind_variable_internal discovers that the variable being assigned to
> --   has such a function.  The function is called as
> --	SHELL_VAR *temp = (*(entry->assign_func)) (entry, value, ind)
> --   and the (SHELL_VAR *)temp is returned as the value of bind_variable.  It
> --   is usually ENTRY (self).  IND is an index for an array variable, and
> --   unused otherwise.
> --
> --   dynamic_value is called from find_variable_internal to return a `new'
> --   value for the specified dynamic varible.  If this function is NULL,
> --   the variable is treated as a `normal' shell variable.  If it is not,
> --   however, then this function is called like this:
> --	tempvar = (*(var->dynamic_value)) (var);
> --
> --   Sometimes `tempvar' will replace the value of `var'.  Other times, the
> --   shell will simply use the string value.  Pretty object-oriented, huh?
> --
> --   Be warned, though: if you `unset' a special variable, it loses its
> --   special meaning, even if you subsequently set it.
> --
> --   The special assignment code would probably have been better put in
> --   subst.c: do_assignment_internal, in the same style as
> --   stupidly_hack_special_variables, but I wanted the changes as
> --   localized as possible.  */
> --
> --#define INIT_DYNAMIC_VAR(var, val, gfunc, afunc) \
> --  do \
> --    { \
> --      v = bind_variable (var, (val), 0); \
> --      v->dynamic_value = gfunc; \
> --      v->assign_func = afunc; \
> --    } \
> --  while (0)
> --
> --#define INIT_DYNAMIC_ARRAY_VAR(var, gfunc, afunc) \
> --  do \
> --    { \
> --      v = make_new_array_variable (var); \
> --      v->dynamic_value = gfunc; \
> --      v->assign_func = afunc; \
> --    } \
> --  while (0)
> --
> --#define INIT_DYNAMIC_ASSOC_VAR(var, gfunc, afunc) \
> --  do \
> --    { \
> --      v = make_new_assoc_variable (var); \
> --      v->dynamic_value = gfunc; \
> --      v->assign_func = afunc; \
> --    } \
> --  while (0)
> --
> --static SHELL_VAR *
> --null_assign (self, value, unused, key)
> --     SHELL_VAR *self;
> --     char *value;
> --     arrayind_t unused;
> --     char *key;
> --{
> --  return (self);
> --}
> --
> --#if defined (ARRAY_VARS)
> --static SHELL_VAR *
> --null_array_assign (self, value, ind, key)
> --     SHELL_VAR *self;
> --     char *value;
> --     arrayind_t ind;
> --     char *key;
> --{
> --  return (self);
> --}
> --#endif
> --
> --/* Degenerate `dynamic_value' function; just returns what's passed without
> --   manipulation. */
> --static SHELL_VAR *
> --get_self (self)
> --     SHELL_VAR *self;
> --{
> --  return (self);
> --}
> --
> --#if defined (ARRAY_VARS)
> --/* A generic dynamic array variable initializer.  Initialize array variable
> --   NAME with dynamic value function GETFUNC and assignment function SETFUNC. */
> --static SHELL_VAR *
> --init_dynamic_array_var (name, getfunc, setfunc, attrs)
> --     char *name;
> --     sh_var_value_func_t *getfunc;
> --     sh_var_assign_func_t *setfunc;
> --     int attrs;
> --{
> --  SHELL_VAR *v;
> --
> --  v = find_variable (name);
> --  if (v)
> --    return (v);
> --  INIT_DYNAMIC_ARRAY_VAR (name, getfunc, setfunc);
> --  if (attrs)
> --    VSETATTR (v, attrs);
> --  return v;
> --}
> --
> --static SHELL_VAR *
> --init_dynamic_assoc_var (name, getfunc, setfunc, attrs)
> --     char *name;
> --     sh_var_value_func_t *getfunc;
> --     sh_var_assign_func_t *setfunc;
> --     int attrs;
> --{
> --  SHELL_VAR *v;
> --
> --  v = find_variable (name);
> --  if (v)
> --    return (v);
> --  INIT_DYNAMIC_ASSOC_VAR (name, getfunc, setfunc);
> --  if (attrs)
> --    VSETATTR (v, attrs);
> --  return v;
> --}
> --#endif
> --
> --/* The value of $SECONDS.  This is the number of seconds since shell
> --   invocation, or, the number of seconds since the last assignment + the
> --   value of the last assignment. */
> --static intmax_t seconds_value_assigned;
> --
> --static SHELL_VAR *
> --assign_seconds (self, value, unused, key)
> --     SHELL_VAR *self;
> --     char *value;
> --     arrayind_t unused;
> --     char *key;
> --{
> --  if (legal_number (value, &seconds_value_assigned) == 0)
> --    seconds_value_assigned = 0;
> --  shell_start_time = NOW;
> --  return (self);
> --}
> --
> --static SHELL_VAR *
> --get_seconds (var)
> --     SHELL_VAR *var;
> --{
> --  time_t time_since_start;
> --  char *p;
> --
> --  time_since_start = NOW - shell_start_time;
> --  p = itos(seconds_value_assigned + time_since_start);
> --
> --  FREE (value_cell (var));
> --
> --  VSETATTR (var, att_integer);
> --  var_setvalue (var, p);
> --  return (var);
> --}
> --
> --static SHELL_VAR *
> --init_seconds_var ()
> --{
> --  SHELL_VAR *v;
> --
> --  v = find_variable ("SECONDS");
> --  if (v)
> --    {
> --      if (legal_number (value_cell(v), &seconds_value_assigned) == 0)
> --	seconds_value_assigned = 0;
> --    }
> --  INIT_DYNAMIC_VAR ("SECONDS", (v ? value_cell (v) : (char *)NULL), get_seconds, assign_seconds);
> --  return v;      
> --}
> --     
> --/* The random number seed.  You can change this by setting RANDOM. */
> --static unsigned long rseed = 1;
> --static int last_random_value;
> --static int seeded_subshell = 0;
> --
> --/* A linear congruential random number generator based on the example
> --   one in the ANSI C standard.  This one isn't very good, but a more
> --   complicated one is overkill. */
> --
> --/* Returns a pseudo-random number between 0 and 32767. */
> --static int
> --brand ()
> --{
> --  /* From "Random number generators: good ones are hard to find",
> --     Park and Miller, Communications of the ACM, vol. 31, no. 10,
> --     October 1988, p. 1195. filtered through FreeBSD */
> --  long h, l;
> --
> --  /* Can't seed with 0. */
> --  if (rseed == 0)
> --    rseed = 123459876;
> --  h = rseed / 127773;
> --  l = rseed % 127773;
> --  rseed = 16807 * l - 2836 * h;
> --#if 0
> --  if (rseed < 0)
> --    rseed += 0x7fffffff;
> --#endif
> --  return ((unsigned int)(rseed & 32767));	/* was % 32768 */
> --}
> --
> --/* Set the random number generator seed to SEED. */
> --static void
> --sbrand (seed)
> --     unsigned long seed;
> --{
> --  rseed = seed;
> --  last_random_value = 0;
> --}
> --
> --static void
> --seedrand ()
> --{
> --  struct timeval tv;
> --
> --  gettimeofday (&tv, NULL);
> --  sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid ());
> --}
> --
> --static SHELL_VAR *
> --assign_random (self, value, unused, key)
> --     SHELL_VAR *self;
> --     char *value;
> --     arrayind_t unused;
> --     char *key;
> --{
> --  sbrand (strtoul (value, (char **)NULL, 10));
> --  if (subshell_environment)
> --    seeded_subshell = getpid ();
> --  return (self);
> --}
> --
> --int
> --get_random_number ()
> --{
> --  int rv, pid;
> --
> --  /* Reset for command and process substitution. */
> --  pid = getpid ();
> --  if (subshell_environment && seeded_subshell != pid)
> --    {
> --      seedrand ();
> --      seeded_subshell = pid;
> --    }
> --
> --  do
> --    rv = brand ();
> --  while (rv == last_random_value);
> --  return rv;
> --}
> --
> --static SHELL_VAR *
> --get_random (var)
> --     SHELL_VAR *var;
> --{
> --  int rv;
> --  char *p;
> --
> --  rv = get_random_number ();
> --  last_random_value = rv;
> --  p = itos (rv);
> --
> --  FREE (value_cell (var));
> --
> --  VSETATTR (var, att_integer);
> --  var_setvalue (var, p);
> --  return (var);
> --}
> --
> --static SHELL_VAR *
> --assign_lineno (var, value, unused, key)
> --     SHELL_VAR *var;
> --     char *value;
> --     arrayind_t unused;
> --     char *key;
> --{
> --  intmax_t new_value;
> --
> --  if (value == 0 || *value == '\0' || legal_number (value, &new_value) == 0)
> --    new_value = 0;
> --  line_number = line_number_base = new_value;
> --  return var;
> --}
> --
> --/* Function which returns the current line number. */
> --static SHELL_VAR *
> --get_lineno (var)
> --     SHELL_VAR *var;
> --{
> --  char *p;
> --  int ln;
> --
> --  ln = executing_line_number ();
> --  p = itos (ln);
> --  FREE (value_cell (var));
> --  var_setvalue (var, p);
> --  return (var);
> --}
> --
> --static SHELL_VAR *
> --assign_subshell (var, value, unused, key)
> --     SHELL_VAR *var;
> --     char *value;
> --     arrayind_t unused;
> --     char *key;
> --{
> --  intmax_t new_value;
> --
> --  if (value == 0 || *value == '\0' || legal_number (value, &new_value) == 0)
> --    new_value = 0;
> --  subshell_level = new_value;
> --  return var;
> --}
> --
> --static SHELL_VAR *
> --get_subshell (var)
> --     SHELL_VAR *var;
> --{
> --  char *p;
> --
> --  p = itos (subshell_level);
> --  FREE (value_cell (var));
> --  var_setvalue (var, p);
> --  return (var);
> --}
> --
> --static SHELL_VAR *
> --get_bashpid (var)
> --     SHELL_VAR *var;
> --{
> --  int pid;
> --  char *p;
> --
> --  pid = getpid ();
> --  p = itos (pid);
> --
> --  FREE (value_cell (var));
> --  VSETATTR (var, att_integer|att_readonly);
> --  var_setvalue (var, p);
> --  return (var);
> --}
> --
> --static SHELL_VAR *
> --get_bash_command (var)
> --     SHELL_VAR *var;
> --{
> --  char *p;
> --
> --  if (the_printed_command_except_trap)
> --    p = savestring (the_printed_command_except_trap);
> --  else
> --    {
> --      p = (char *)xmalloc (1);
> --      p[0] = '\0';
> --    }
> --  FREE (value_cell (var));
> --  var_setvalue (var, p);
> --  return (var);
> --}
> --
> --#if defined (HISTORY)
> --static SHELL_VAR *
> --get_histcmd (var)
> --     SHELL_VAR *var;
> --{
> --  char *p;
> --
> --  p = itos (history_number ());
> --  FREE (value_cell (var));
> --  var_setvalue (var, p);
> --  return (var);
> --}
> --#endif
> --
> --#if defined (READLINE)
> --/* When this function returns, VAR->value points to malloced memory. */
> --static SHELL_VAR *
> --get_comp_wordbreaks (var)
> --     SHELL_VAR *var;
> --{
> --  /* If we don't have anything yet, assign a default value. */
> --  if (rl_completer_word_break_characters == 0 && bash_readline_initialized == 0)
> --    enable_hostname_completion (perform_hostname_completion);
> --
> --  FREE (value_cell (var));
> --  var_setvalue (var, savestring (rl_completer_word_break_characters));
> --
> --  return (var);
> --}
> --
> --/* When this function returns, rl_completer_word_break_characters points to
> --   malloced memory. */
> --static SHELL_VAR *
> --assign_comp_wordbreaks (self, value, unused, key)
> --     SHELL_VAR *self;
> --     char *value;
> --     arrayind_t unused;
> --     char *key;
> --{
> --  if (rl_completer_word_break_characters &&
> --      rl_completer_word_break_characters != rl_basic_word_break_characters)
> --    free (rl_completer_word_break_characters);
> --
> --  rl_completer_word_break_characters = savestring (value);
> --  return self;
> --}
> --#endif /* READLINE */
> --
> --#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS)
> --static SHELL_VAR *
> --assign_dirstack (self, value, ind, key)
> --     SHELL_VAR *self;
> --     char *value;
> --     arrayind_t ind;
> --     char *key;
> --{
> --  set_dirstack_element (ind, 1, value);
> --  return self;
> --}
> --
> --static SHELL_VAR *
> --get_dirstack (self)
> --     SHELL_VAR *self;
> --{
> --  ARRAY *a;
> --  WORD_LIST *l;
> --
> --  l = get_directory_stack (0);
> --  a = array_from_word_list (l);
> --  array_dispose (array_cell (self));
> --  dispose_words (l);
> --  var_setarray (self, a);
> --  return self;
> --}
> --#endif /* PUSHD AND POPD && ARRAY_VARS */
> --
> --#if defined (ARRAY_VARS)
> --/* We don't want to initialize the group set with a call to getgroups()
> --   unless we're asked to, but we only want to do it once. */
> --static SHELL_VAR *
> --get_groupset (self)
> --     SHELL_VAR *self;
> --{
> --  register int i;
> --  int ng;
> --  ARRAY *a;
> --  static char **group_set = (char **)NULL;
> --
> --  if (group_set == 0)
> --    {
> --      group_set = get_group_list (&ng);
> --      a = array_cell (self);
> --      for (i = 0; i < ng; i++)
> --	array_insert (a, i, group_set[i]);
> --    }
> --  return (self);
> --}
> --
> --static SHELL_VAR *
> --build_hashcmd (self)
> --     SHELL_VAR *self;
> --{
> --  HASH_TABLE *h;
> --  int i;
> --  char *k, *v;
> --  BUCKET_CONTENTS *item;
> --
> --  h = assoc_cell (self);
> --  if (h)
> --    assoc_dispose (h);
> --
> --  if (hashed_filenames == 0 || HASH_ENTRIES (hashed_filenames) == 0)
> --    {
> --      var_setvalue (self, (char *)NULL);
> --      return self;
> --    }
> --
> --  h = assoc_create (hashed_filenames->nbuckets);
> --  for (i = 0; i < hashed_filenames->nbuckets; i++)
> --    {
> --      for (item = hash_items (i, hashed_filenames); item; item = item->next)
> --	{
> --	  k = savestring (item->key);
> --	  v = pathdata(item)->path;
> --	  assoc_insert (h, k, v);
> --	}
> --    }
> --
> --  var_setvalue (self, (char *)h);
> --  return self;
> --}
> --
> --static SHELL_VAR *
> --get_hashcmd (self)
> --     SHELL_VAR *self;
> --{
> --  build_hashcmd (self);
> --  return (self);
> --}
> --
> --static SHELL_VAR *
> --assign_hashcmd (self, value, ind, key)
> --     SHELL_VAR *self;
> --     char *value;
> --     arrayind_t ind;
> --     char *key;
> --{
> --  phash_insert (key, value, 0, 0);
> --  return (build_hashcmd (self));
> --}
> --
> --#if defined (ALIAS)
> --static SHELL_VAR *
> --build_aliasvar (self)
> --     SHELL_VAR *self;
> --{
> --  HASH_TABLE *h;
> --  int i;
> --  char *k, *v;
> --  BUCKET_CONTENTS *item;
> --
> --  h = assoc_cell (self);
> --  if (h)
> --    assoc_dispose (h);
> --
> --  if (aliases == 0 || HASH_ENTRIES (aliases) == 0)
> --    {
> --      var_setvalue (self, (char *)NULL);
> --      return self;
> --    }
> --
> --  h = assoc_create (aliases->nbuckets);
> --  for (i = 0; i < aliases->nbuckets; i++)
> --    {
> --      for (item = hash_items (i, aliases); item; item = item->next)
> --	{
> --	  k = savestring (item->key);
> --	  v = ((alias_t *)(item->data))->value;
> --	  assoc_insert (h, k, v);
> --	}
> --    }
> --
> --  var_setvalue (self, (char *)h);
> --  return self;
> --}
> --
> --static SHELL_VAR *
> --get_aliasvar (self)
> --     SHELL_VAR *self;
> --{
> --  build_aliasvar (self);
> --  return (self);
> --}
> --
> --static SHELL_VAR *
> --assign_aliasvar (self, value, ind, key)
> --     SHELL_VAR *self;
> --     char *value;
> --     arrayind_t ind;
> --     char *key;
> --{
> --  add_alias (key, value);
> --  return (build_aliasvar (self));
> --}
> --#endif /* ALIAS */
> --
> --#endif /* ARRAY_VARS */
> --
> --/* If ARRAY_VARS is not defined, this just returns the name of any
> --   currently-executing function.  If we have arrays, it's a call stack. */
> --static SHELL_VAR *
> --get_funcname (self)
> --     SHELL_VAR *self;
> --{
> --#if ! defined (ARRAY_VARS)
> --  char *t;
> --  if (variable_context && this_shell_function)
> --    {
> --      FREE (value_cell (self));
> --      t = savestring (this_shell_function->name);
> --      var_setvalue (self, t);
> --    }
> --#endif
> --  return (self);
> --}
> --
> --void
> --make_funcname_visible (on_or_off)
> --     int on_or_off;
> --{
> --  SHELL_VAR *v;
> --
> --  v = find_variable ("FUNCNAME");
> --  if (v == 0 || v->dynamic_value == 0)
> --    return;
> --
> --  if (on_or_off)
> --    VUNSETATTR (v, att_invisible);
> --  else
> --    VSETATTR (v, att_invisible);
> --}
> --
> --static SHELL_VAR *
> --init_funcname_var ()
> --{
> --  SHELL_VAR *v;
> --
> --  v = find_variable ("FUNCNAME");
> --  if (v)
> --    return v;
> --#if defined (ARRAY_VARS)
> --  INIT_DYNAMIC_ARRAY_VAR ("FUNCNAME", get_funcname, null_array_assign);
> --#else
> --  INIT_DYNAMIC_VAR ("FUNCNAME", (char *)NULL, get_funcname, null_assign);
> --#endif
> --  VSETATTR (v, att_invisible|att_noassign);
> --  return v;
> --}
> --
> --static void
> --initialize_dynamic_variables ()
> --{
> --  SHELL_VAR *v;
> --
> --  v = init_seconds_var ();
> --
> --  INIT_DYNAMIC_VAR ("BASH_COMMAND", (char *)NULL, get_bash_command, (sh_var_assign_func_t *)NULL);
> --  INIT_DYNAMIC_VAR ("BASH_SUBSHELL", (char *)NULL, get_subshell, assign_subshell);
> --
> --  INIT_DYNAMIC_VAR ("RANDOM", (char *)NULL, get_random, assign_random);
> --  VSETATTR (v, att_integer);
> --  INIT_DYNAMIC_VAR ("LINENO", (char *)NULL, get_lineno, assign_lineno);
> --  VSETATTR (v, att_integer);
> --
> --  INIT_DYNAMIC_VAR ("BASHPID", (char *)NULL, get_bashpid, null_assign);
> --  VSETATTR (v, att_integer|att_readonly);
> --
> --#if defined (HISTORY)
> --  INIT_DYNAMIC_VAR ("HISTCMD", (char *)NULL, get_histcmd, (sh_var_assign_func_t *)NULL);
> --  VSETATTR (v, att_integer);
> --#endif
> --
> --#if defined (READLINE)
> --  INIT_DYNAMIC_VAR ("COMP_WORDBREAKS", (char *)NULL, get_comp_wordbreaks, assign_comp_wordbreaks);
> --#endif
> --
> --#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS)
> --  v = init_dynamic_array_var ("DIRSTACK", get_dirstack, assign_dirstack, 0);
> --#endif /* PUSHD_AND_POPD && ARRAY_VARS */
> --
> --#if defined (ARRAY_VARS)
> --  v = init_dynamic_array_var ("GROUPS", get_groupset, null_array_assign, att_noassign);
> --
> --#  if defined (DEBUGGER)
> --  v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, att_noassign|att_nounset);
> --  v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, att_noassign|att_nounset);
> --#  endif /* DEBUGGER */
> --  v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, att_noassign|att_nounset);
> --  v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, att_noassign|att_nounset);
> --
> --  v = init_dynamic_assoc_var ("BASH_CMDS", get_hashcmd, assign_hashcmd, att_nofree);
> --#  if defined (ALIAS)
> --  v = init_dynamic_assoc_var ("BASH_ALIASES", get_aliasvar, assign_aliasvar, att_nofree);
> --#  endif
> --#endif
> --
> --  v = init_funcname_var ();
> --}
> --
> --/* **************************************************************** */
> --/*								    */
> --/*		Retrieving variables and values			    */
> --/*								    */
> --/* **************************************************************** */
> --
> --/* How to get a pointer to the shell variable or function named NAME.
> --   HASHED_VARS is a pointer to the hash table containing the list
> --   of interest (either variables or functions). */
> --
> --static SHELL_VAR *
> --hash_lookup (name, hashed_vars)
> --     const char *name;
> --     HASH_TABLE *hashed_vars;
> --{
> --  BUCKET_CONTENTS *bucket;
> --
> --  bucket = hash_search (name, hashed_vars, 0);
> --  /* If we find the name in HASHED_VARS, set LAST_TABLE_SEARCHED to that
> --     table. */
> --  if (bucket)
> --    last_table_searched = hashed_vars;
> --  return (bucket ? (SHELL_VAR *)bucket->data : (SHELL_VAR *)NULL);
> --}
> --
> --SHELL_VAR *
> --var_lookup (name, vcontext)
> --     const char *name;
> --     VAR_CONTEXT *vcontext;
> --{
> --  VAR_CONTEXT *vc;
> --  SHELL_VAR *v;
> --
> --  v = (SHELL_VAR *)NULL;
> --  for (vc = vcontext; vc; vc = vc->down)
> --    if (v = hash_lookup (name, vc->table))
> --      break;
> --
> --  return v;
> --}
> --
> --/* Look up the variable entry named NAME.  If SEARCH_TEMPENV is non-zero,
> --   then also search the temporarily built list of exported variables.
> --   The lookup order is:
> --	temporary_env
> --	shell_variables list
> --*/
> --
> --SHELL_VAR *
> --find_variable_internal (name, force_tempenv)
> --     const char *name;
> --     int force_tempenv;
> --{
> --  SHELL_VAR *var;
> --  int search_tempenv;
> --  VAR_CONTEXT *vc;
> --
> --  var = (SHELL_VAR *)NULL;
> --
> --  /* If explicitly requested, first look in the temporary environment for
> --     the variable.  This allows constructs such as "foo=x eval 'echo $foo'"
> --     to get the `exported' value of $foo.  This happens if we are executing
> --     a function or builtin, or if we are looking up a variable in a
> --     "subshell environment". */
> --  search_tempenv = force_tempenv || (expanding_redir == 0 && subshell_environment);
> --
> --  if (search_tempenv && temporary_env)		
> --    var = hash_lookup (name, temporary_env);
> --
> --  vc = shell_variables;
> --#if 0
> --if (search_tempenv == 0 && /* (subshell_environment & SUBSHELL_COMSUB) && */
> --    expanding_redir &&
> --    (this_shell_builtin == eval_builtin || this_shell_builtin == command_builtin))
> --  {
> --  itrace("find_variable_internal: search_tempenv == 0: skipping VC_BLTNENV");
> --  while (vc && (vc->flags & VC_BLTNENV))
> --    vc = vc->down;
> --  if (vc == 0)
> --    vc = shell_variables;
> --  }
> --#endif
> --
> --  if (var == 0)
> --    var = var_lookup (name, vc);
> --
> --  if (var == 0)
> --    return ((SHELL_VAR *)NULL);
> --
> --  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
> --}
> --
> --/* Look up and resolve the chain of nameref variables starting at V all the
> --   way to NULL or non-nameref. */
> --SHELL_VAR *
> --find_variable_nameref (v)
> --     SHELL_VAR *v;
> --{
> --  int level;
> --  char *newname;
> --  SHELL_VAR *orig, *oldv;
> --
> --  level = 0;
> --  orig = v;
> --  while (v && nameref_p (v))
> --    {
> --      level++;
> --      if (level > NAMEREF_MAX)
> --	return ((SHELL_VAR *)0);	/* error message here? */
> --      newname = nameref_cell (v);
> --      if (newname == 0 || *newname == '\0')
> --	return ((SHELL_VAR *)0);
> --      oldv = v;
> --      v = find_variable_internal (newname, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
> --      if (v == orig || v == oldv)
> --	{
> --	  internal_warning (_("%s: circular name reference"), orig->name);
> --	  return ((SHELL_VAR *)0);
> --	}
> --    }
> --  return v;
> --}
> --
> --/* Resolve the chain of nameref variables for NAME.  XXX - could change later */
> --SHELL_VAR *
> --find_variable_last_nameref (name)
> --     const char *name;
> --{
> --  SHELL_VAR *v, *nv;
> --  char *newname;
> --  int level;
> --
> --  nv = v = find_variable_noref (name);
> --  level = 0;
> --  while (v && nameref_p (v))
> --    {
> --      level++;
> --      if (level > NAMEREF_MAX)
> --        return ((SHELL_VAR *)0);	/* error message here? */
> --      newname = nameref_cell (v);
> --      if (newname == 0 || *newname == '\0')
> --	return ((SHELL_VAR *)0);
> --      nv = v;
> --      v = find_variable_internal (newname, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
> --    }
> --  return nv;
> --}
> --
> --/* Resolve the chain of nameref variables for NAME.  XXX - could change later */
> --SHELL_VAR *
> --find_global_variable_last_nameref (name)
> --     const char *name;
> --{
> --  SHELL_VAR *v, *nv;
> --  char *newname;
> --  int level;
> --
> --  nv = v = find_global_variable_noref (name);
> --  level = 0;
> --  while (v && nameref_p (v))
> --    {
> --      level++;
> --      if (level > NAMEREF_MAX)
> --        return ((SHELL_VAR *)0);	/* error message here? */
> --      newname = nameref_cell (v);
> --      if (newname == 0 || *newname == '\0')
> --	return ((SHELL_VAR *)0);
> --      nv = v;
> --      v = find_global_variable_noref (newname);
> --    }
> --  return nv;
> --}
> --
> --static SHELL_VAR *
> --find_nameref_at_context (v, vc)
> --     SHELL_VAR *v;
> --     VAR_CONTEXT *vc;
> --{
> --  SHELL_VAR *nv, *nv2;
> --  VAR_CONTEXT *nvc;
> --  char *newname;
> --  int level;
> --
> --  nv = v;
> --  level = 1;
> --  while (nv && nameref_p (nv))
> --    {
> --      level++;
> --      if (level > NAMEREF_MAX)
> --        return ((SHELL_VAR *)NULL);
> --      newname = nameref_cell (nv);
> --      if (newname == 0 || *newname == '\0')
> --        return ((SHELL_VAR *)NULL);      
> --      nv2 = hash_lookup (newname, vc->table);
> --      if (nv2 == 0)
> --        break;
> --      nv = nv2;
> --    }
> --  return nv;
> --}
> --
> --/* Do nameref resolution from the VC, which is the local context for some
> --   function or builtin, `up' the chain to the global variables context.  If
> --   NVCP is not NULL, return the variable context where we finally ended the
> --   nameref resolution (so the bind_variable_internal can use the correct
> --   variable context and hash table). */
> --static SHELL_VAR *
> --find_variable_nameref_context (v, vc, nvcp)
> --     SHELL_VAR *v;
> --     VAR_CONTEXT *vc;
> --     VAR_CONTEXT **nvcp;
> --{
> --  SHELL_VAR *nv, *nv2;
> --  VAR_CONTEXT *nvc;
> --
> --  /* Look starting at the current context all the way `up' */
> --  for (nv = v, nvc = vc; nvc; nvc = nvc->down)
> --    {
> --      nv2 = find_nameref_at_context (nv, nvc);
> --      if (nv2 == 0)
> --        continue;
> --      nv = nv2;
> --      if (*nvcp)
> --        *nvcp = nvc;
> --      if (nameref_p (nv) == 0)
> --        break;
> --    }
> --  return (nameref_p (nv) ? (SHELL_VAR *)NULL : nv);
> --}
> --
> --/* Do nameref resolution from the VC, which is the local context for some
> --   function or builtin, `up' the chain to the global variables context.  If
> --   NVCP is not NULL, return the variable context where we finally ended the
> --   nameref resolution (so the bind_variable_internal can use the correct
> --   variable context and hash table). */
> --static SHELL_VAR *
> --find_variable_last_nameref_context (v, vc, nvcp)
> --     SHELL_VAR *v;
> --     VAR_CONTEXT *vc;
> --     VAR_CONTEXT **nvcp;
> --{
> --  SHELL_VAR *nv, *nv2;
> --  VAR_CONTEXT *nvc;
> --
> --  /* Look starting at the current context all the way `up' */
> --  for (nv = v, nvc = vc; nvc; nvc = nvc->down)
> --    {
> --      nv2 = find_nameref_at_context (nv, nvc);
> --      if (nv2 == 0)
> --	continue;
> --      nv = nv2;
> --      if (*nvcp)
> --        *nvcp = nvc;
> --    }
> --  return (nameref_p (nv) ? nv : (SHELL_VAR *)NULL);
> --}
> --
> --/* Find a variable, forcing a search of the temporary environment first */
> --SHELL_VAR *
> --find_variable_tempenv (name)
> --     const char *name;
> --{
> --  SHELL_VAR *var;
> --
> --  var = find_variable_internal (name, 1);
> --  if (var && nameref_p (var))
> --    var = find_variable_nameref (var);
> --  return (var);
> --}
> --
> --/* Find a variable, not forcing a search of the temporary environment first */
> --SHELL_VAR *
> --find_variable_notempenv (name)
> --     const char *name;
> --{
> --  SHELL_VAR *var;
> --
> --  var = find_variable_internal (name, 0);
> --  if (var && nameref_p (var))
> --    var = find_variable_nameref (var);
> --  return (var);
> --}
> --
> --SHELL_VAR *
> --find_global_variable (name)
> --     const char *name;
> --{
> --  SHELL_VAR *var;
> --
> --  var = var_lookup (name, global_variables);
> --  if (var && nameref_p (var))
> --    var = find_variable_nameref (var);
> --
> --  if (var == 0)
> --    return ((SHELL_VAR *)NULL);
> --
> --  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
> --}
> --
> --SHELL_VAR *
> --find_global_variable_noref (name)
> --     const char *name;
> --{
> --  SHELL_VAR *var;
> --
> --  var = var_lookup (name, global_variables);
> --
> --  if (var == 0)
> --    return ((SHELL_VAR *)NULL);
> --
> --  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
> --}
> --
> --SHELL_VAR *
> --find_shell_variable (name)
> --     const char *name;
> --{
> --  SHELL_VAR *var;
> --
> --  var = var_lookup (name, shell_variables);
> --  if (var && nameref_p (var))
> --    var = find_variable_nameref (var);
> --
> --  if (var == 0)
> --    return ((SHELL_VAR *)NULL);
> --
> --  return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var);
> --}
> --
> --/* Look up the variable entry named NAME.  Returns the entry or NULL. */
> --SHELL_VAR *
> --find_variable (name)
> --     const char *name;
> --{
> --  SHELL_VAR *v;
> --
> --  last_table_searched = 0;
> --  v = find_variable_internal (name, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
> --  if (v && nameref_p (v))
> --    v = find_variable_nameref (v);
> --  return v;
> --}
> --
> --SHELL_VAR *
> --find_variable_noref (name)
> --     const char *name;
> --{
> --  SHELL_VAR *v;
> --
> --  v = find_variable_internal (name, (expanding_redir == 0 && (assigning_in_environment || executing_builtin)));
> --  return v;
> --}
> --
> --/* Look up the function entry whose name matches STRING.
> --   Returns the entry or NULL. */
> --SHELL_VAR *
> --find_function (name)
> --     const char *name;
> --{
> --  return (hash_lookup (name, shell_functions));
> --}
> --
> --/* Find the function definition for the shell function named NAME.  Returns
> --   the entry or NULL. */
> --FUNCTION_DEF *
> --find_function_def (name)
> --     const char *name;
> --{
> --#if defined (DEBUGGER)
> --  return ((FUNCTION_DEF *)hash_lookup (name, shell_function_defs));
> --#else
> --  return ((FUNCTION_DEF *)0);
> --#endif
> --}
> --
> --/* Return the value of VAR.  VAR is assumed to have been the result of a
> --   lookup without any subscript, if arrays are compiled into the shell. */
> --char *
> --get_variable_value (var)
> --     SHELL_VAR *var;
> --{
> --  if (var == 0)
> --    return ((char *)NULL);
> --#if defined (ARRAY_VARS)
> --  else if (array_p (var))
> --    return (array_reference (array_cell (var), 0));
> --  else if (assoc_p (var))
> --    return (assoc_reference (assoc_cell (var), "0"));
> --#endif
> --  else
> --    return (value_cell (var));
> --}
> --
> --/* Return the string value of a variable.  Return NULL if the variable
> --   doesn't exist.  Don't cons a new string.  This is a potential memory
> --   leak if the variable is found in the temporary environment.  Since
> --   functions and variables have separate name spaces, returns NULL if
> --   var_name is a shell function only. */
> --char *
> --get_string_value (var_name)
> --     const char *var_name;
> --{
> --  SHELL_VAR *var;
> --
> --  var = find_variable (var_name);
> --  return ((var) ? get_variable_value (var) : (char *)NULL);
> --}
> --
> --/* This is present for use by the tilde and readline libraries. */
> --char *
> --sh_get_env_value (v)
> --     const char *v;
> --{
> --  return get_string_value (v);
> --}
> --
> --/* **************************************************************** */
> --/*								    */
> --/*		  Creating and setting variables		    */
> --/*								    */
> --/* **************************************************************** */
> --
> --/* Set NAME to VALUE if NAME has no value. */
> --SHELL_VAR *
> --set_if_not (name, value)
> --     char *name, *value;
> --{
> --  SHELL_VAR *v;
> --
> --  if (shell_variables == 0)
> --    create_variable_tables ();
> --
> --  v = find_variable (name);
> --  if (v == 0)
> --    v = bind_variable_internal (name, value, global_variables->table, HASH_NOSRCH, 0);
> --  return (v);
> --}
> --
> --/* Create a local variable referenced by NAME. */
> --SHELL_VAR *
> --make_local_variable (name)
> --     const char *name;
> --{
> --  SHELL_VAR *new_var, *old_var;
> --  VAR_CONTEXT *vc;
> --  int was_tmpvar;
> --  char *tmp_value;
> --
> --  /* local foo; local foo;  is a no-op. */
> --  old_var = find_variable (name);
> --  if (old_var && local_p (old_var) && old_var->context == variable_context)
> --    return (old_var);
> --
> --  was_tmpvar = old_var && tempvar_p (old_var);
> --  /* If we're making a local variable in a shell function, the temporary env
> --     has already been merged into the function's variable context stack.  We
> --     can assume that a temporary var in the same context appears in the same
> --     VAR_CONTEXT and can safely be returned without creating a new variable
> --     (which results in duplicate names in the same VAR_CONTEXT->table */
> --  /* We can't just test tmpvar_p because variables in the temporary env given
> --     to a shell function appear in the function's local variable VAR_CONTEXT
> --     but retain their tempvar attribute.  We want temporary variables that are
> --     found in temporary_env, hence the test for last_table_searched, which is
> --     set in hash_lookup and only (so far) checked here. */
> --  if (was_tmpvar && old_var->context == variable_context && last_table_searched != temporary_env)
> --    {
> --      VUNSETATTR (old_var, att_invisible);
> --      return (old_var);
> --    }
> --  if (was_tmpvar)
> --    tmp_value = value_cell (old_var);
> --
> --  for (vc = shell_variables; vc; vc = vc->down)
> --    if (vc_isfuncenv (vc) && vc->scope == variable_context)
> --      break;
> --
> --  if (vc == 0)
> --    {
> --      internal_error (_("make_local_variable: no function context at current scope"));
> --      return ((SHELL_VAR *)NULL);
> --    }
> --  else if (vc->table == 0)
> --    vc->table = hash_create (TEMPENV_HASH_BUCKETS);
> --
> --  /* Since this is called only from the local/declare/typeset code, we can
> --     call builtin_error here without worry (of course, it will also work
> --     for anything that sets this_command_name).  Variables with the `noassign'
> --     attribute may not be made local.  The test against old_var's context
> --     level is to disallow local copies of readonly global variables (since I
> --     believe that this could be a security hole).  Readonly copies of calling
> --     function local variables are OK. */
> --  if (old_var && (noassign_p (old_var) ||
> --		 (readonly_p (old_var) && old_var->context == 0)))
> --    {
> --      if (readonly_p (old_var))
> --	sh_readonly (name);
> --      else if (noassign_p (old_var))
> --	builtin_error (_("%s: variable may not be assigned value"), name);
> --#if 0
> --      /* Let noassign variables through with a warning */
> --      if (readonly_p (old_var))
> --#endif
> --	return ((SHELL_VAR *)NULL);
> --    }
> --
> --  if (old_var == 0)
> --    new_var = make_new_variable (name, vc->table);
> --  else
> --    {
> --      new_var = make_new_variable (name, vc->table);
> --
> --      /* If we found this variable in one of the temporary environments,
> --	 inherit its value.  Watch to see if this causes problems with
> --	 things like `x=4 local x'. XXX - see above for temporary env
> --	 variables with the same context level as variable_context */
> --      /* XXX - we should only do this if the variable is not an array. */
> --      if (was_tmpvar)
> --	var_setvalue (new_var, savestring (tmp_value));
> --
> --      new_var->attributes = exported_p (old_var) ? att_exported : 0;
> --    }
> --
> --  vc->flags |= VC_HASLOCAL;
> --
> --  new_var->context = variable_context;
> --  VSETATTR (new_var, att_local);
> --
> --  if (ifsname (name))
> --    setifs (new_var);
> --
> --  if (was_tmpvar == 0)
> --    VSETATTR (new_var, att_invisible);	/* XXX */
> --  return (new_var);
> --}
> --
> --/* Create a new shell variable with name NAME. */
> --static SHELL_VAR *
> --new_shell_variable (name)
> --     const char *name;
> --{
> --  SHELL_VAR *entry;
> --
> --  entry = (SHELL_VAR *)xmalloc (sizeof (SHELL_VAR));
> --
> --  entry->name = savestring (name);
> --  var_setvalue (entry, (char *)NULL);
> --  CLEAR_EXPORTSTR (entry);
> --
> --  entry->dynamic_value = (sh_var_value_func_t *)NULL;
> --  entry->assign_func = (sh_var_assign_func_t *)NULL;
> --
> --  entry->attributes = 0;
> --
> --  /* Always assume variables are to be made at toplevel!
> --     make_local_variable has the responsibility of changing the
> --     variable context. */
> --  entry->context = 0;
> --
> --  return (entry);
> --}
> --
> --/* Create a new shell variable with name NAME and add it to the hash table
> --   TABLE. */
> --static SHELL_VAR *
> --make_new_variable (name, table)
> --     const char *name;
> --     HASH_TABLE *table;
> --{
> --  SHELL_VAR *entry;
> --  BUCKET_CONTENTS *elt;
> --
> --  entry = new_shell_variable (name);
> --
> --  /* Make sure we have a shell_variables hash table to add to. */
> --  if (shell_variables == 0)
> --    create_variable_tables ();
> --
> --  elt = hash_insert (savestring (name), table, HASH_NOSRCH);
> --  elt->data = (PTR_T)entry;
> --
> --  return entry;
> --}
> --
> --#if defined (ARRAY_VARS)
> --SHELL_VAR *
> --make_new_array_variable (name)
> --     char *name;
> --{
> --  SHELL_VAR *entry;
> --  ARRAY *array;
> --
> --  entry = make_new_variable (name, global_variables->table);
> --  array = array_create ();
> --
> --  var_setarray (entry, array);
> --  VSETATTR (entry, att_array);
> --  return entry;
> --}
> --
> --SHELL_VAR *
> --make_local_array_variable (name, assoc_ok)
> --     char *name;
> --     int assoc_ok;
> --{
> --  SHELL_VAR *var;
> --  ARRAY *array;
> --
> --  var = make_local_variable (name);
> --  if (var == 0 || array_p (var) || (assoc_ok && assoc_p (var)))
> --    return var;
> --
> --  array = array_create ();
> --
> --  dispose_variable_value (var);
> --  var_setarray (var, array);
> --  VSETATTR (var, att_array);
> --  return var;
> --}
> --
> --SHELL_VAR *
> --make_new_assoc_variable (name)
> --     char *name;
> --{
> --  SHELL_VAR *entry;
> --  HASH_TABLE *hash;
> --
> --  entry = make_new_variable (name, global_variables->table);
> --  hash = assoc_create (0);
> --
> --  var_setassoc (entry, hash);
> --  VSETATTR (entry, att_assoc);
> --  return entry;
> --}
> --
> --SHELL_VAR *
> --make_local_assoc_variable (name)
> --     char *name;
> --{
> --  SHELL_VAR *var;
> --  HASH_TABLE *hash;
> --
> --  var = make_local_variable (name);
> --  if (var == 0 || assoc_p (var))
> --    return var;
> --
> --  dispose_variable_value (var);
> --  hash = assoc_create (0);
> --
> --  var_setassoc (var, hash);
> --  VSETATTR (var, att_assoc);
> --  return var;
> --}
> --#endif
> --
> --char *
> --make_variable_value (var, value, flags)
> --     SHELL_VAR *var;
> --     char *value;
> --     int flags;
> --{
> --  char *retval, *oval;
> --  intmax_t lval, rval;
> --  int expok, olen, op;
> --
> --  /* If this variable has had its type set to integer (via `declare -i'),
> --     then do expression evaluation on it and store the result.  The
> --     functions in expr.c (evalexp()) and bind_int_variable() are responsible
> --     for turning off the integer flag if they don't want further
> --     evaluation done. */
> --  if (integer_p (var))
> --    {
> --      if (flags & ASS_APPEND)
> --	{
> --	  oval = value_cell (var);
> --	  lval = evalexp (oval, &expok);	/* ksh93 seems to do this */
> --	  if (expok == 0)
> --	    {
> --	      top_level_cleanup ();
> --	      jump_to_top_level (DISCARD);
> --	    }
> --	}
> --      rval = evalexp (value, &expok);
> --      if (expok == 0)
> --	{
> --	  top_level_cleanup ();
> --	  jump_to_top_level (DISCARD);
> --	}
> --      /* This can be fooled if the variable's value changes while evaluating
> --	 `rval'.  We can change it if we move the evaluation of lval to here. */
> --      if (flags & ASS_APPEND)
> --	rval += lval;
> --      retval = itos (rval);
> --    }
> --#if defined (CASEMOD_ATTRS)
> --  else if (capcase_p (var) || uppercase_p (var) || lowercase_p (var))
> --    {
> --      if (flags & ASS_APPEND)
> --	{
> --	  oval = get_variable_value (var);
> --	  if (oval == 0)	/* paranoia */
> --	    oval = "";
> --	  olen = STRLEN (oval);
> --	  retval = (char *)xmalloc (olen + (value ? STRLEN (value) : 0) + 1);
> --	  strcpy (retval, oval);
> --	  if (value)
> --	    strcpy (retval+olen, value);
> --	}
> --      else if (*value)
> --	retval = savestring (value);
> --      else
> --	{
> --	  retval = (char *)xmalloc (1);
> --	  retval[0] = '\0';
> --	}
> --      op = capcase_p (var) ? CASE_CAPITALIZE
> --			 : (uppercase_p (var) ? CASE_UPPER : CASE_LOWER);
> --      oval = sh_modcase (retval, (char *)0, op);
> --      free (retval);
> --      retval = oval;
> --    }
> --#endif /* CASEMOD_ATTRS */
> --  else if (value)
> --    {
> --      if (flags & ASS_APPEND)
> --	{
> --	  oval = get_variable_value (var);
> --	  if (oval == 0)	/* paranoia */
> --	    oval = "";
> --	  olen = STRLEN (oval);
> --	  retval = (char *)xmalloc (olen + (value ? STRLEN (value) : 0) + 1);
> --	  strcpy (retval, oval);
> --	  if (value)
> --	    strcpy (retval+olen, value);
> --	}
> --      else if (*value)
> --	retval = savestring (value);
> --      else
> --	{
> --	  retval = (char *)xmalloc (1);
> --	  retval[0] = '\0';
> --	}
> --    }
> --  else
> --    retval = (char *)NULL;
> --
> --  return retval;
> --}
> --
> --/* Bind a variable NAME to VALUE in the HASH_TABLE TABLE, which may be the
> --   temporary environment (but usually is not). */
> --static SHELL_VAR *
> --bind_variable_internal (name, value, table, hflags, aflags)
> --     const char *name;
> --     char *value;
> --     HASH_TABLE *table;
> --     int hflags, aflags;
> --{
> --  char *newval;
> --  SHELL_VAR *entry;
> --
> --  entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
> --  /* Follow the nameref chain here if this is the global variables table */
> --  if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
> --    {
> --      entry = find_global_variable (entry->name);
> --      /* Let's see if we have a nameref referencing a variable that hasn't yet
> --	 been created. */
> --      if (entry == 0)
> --	entry = find_variable_last_nameref (name);	/* XXX */
> --      if (entry == 0)					/* just in case */
> --        return (entry);
> --    }
> --
> --  /* The first clause handles `declare -n ref; ref=x;' */
> --  if (entry && invisible_p (entry) && nameref_p (entry))
> --    goto assign_value;
> --  else if (entry && nameref_p (entry))
> --    {
> --      newval = nameref_cell (entry);
> --#if defined (ARRAY_VARS)
> --      /* declare -n foo=x[2] */
> --      if (valid_array_reference (newval))
> --        /* XXX - should it be aflags? */
> --	entry = assign_array_element (newval, make_variable_value (entry, value, 0), aflags);
> --      else
> --#endif
> --      {
> --      entry = make_new_variable (newval, table);
> --      var_setvalue (entry, make_variable_value (entry, value, 0));
> --      }
> --    }
> --  else if (entry == 0)
> --    {
> --      entry = make_new_variable (name, table);
> --      var_setvalue (entry, make_variable_value (entry, value, 0)); /* XXX */
> --    }
> --  else if (entry->assign_func)	/* array vars have assign functions now */
> --    {
> --      INVALIDATE_EXPORTSTR (entry);
> --      newval = (aflags & ASS_APPEND) ? make_variable_value (entry, value, aflags) : value;
> --      if (assoc_p (entry))
> --	entry = (*(entry->assign_func)) (entry, newval, -1, savestring ("0"));
> --      else if (array_p (entry))
> --	entry = (*(entry->assign_func)) (entry, newval, 0, 0);
> --      else
> --	entry = (*(entry->assign_func)) (entry, newval, -1, 0);
> --      if (newval != value)
> --	free (newval);
> --      return (entry);
> --    }
> --  else
> --    {
> --assign_value:
> --      if (readonly_p (entry) || noassign_p (entry))
> --	{
> --	  if (readonly_p (entry))
> --	    err_readonly (name);
> --	  return (entry);
> --	}
> --
> --      /* Variables which are bound are visible. */
> --      VUNSETATTR (entry, att_invisible);
> --
> --#if defined (ARRAY_VARS)
> --      if (assoc_p (entry) || array_p (entry))
> --        newval = make_array_variable_value (entry, 0, "0", value, aflags);
> --      else
> --#endif
> --
> --      newval = make_variable_value (entry, value, aflags);	/* XXX */
> --
> --      /* Invalidate any cached export string */
> --      INVALIDATE_EXPORTSTR (entry);
> --
> --#if defined (ARRAY_VARS)
> --      /* XXX -- this bears looking at again -- XXX */
> --      /* If an existing array variable x is being assigned to with x=b or
> --	 `read x' or something of that nature, silently convert it to
> --	 x[0]=b or `read x[0]'. */
> --      if (assoc_p (entry))
> --	{
> --	  assoc_insert (assoc_cell (entry), savestring ("0"), newval);
> --	  free (newval);
> --	}
> --      else if (array_p (entry))
> --	{
> --	  array_insert (array_cell (entry), 0, newval);
> --	  free (newval);
> --	}
> --      else
> --#endif
> --	{
> --	  FREE (value_cell (entry));
> --	  var_setvalue (entry, newval);
> --	}
> --    }
> --
> --  if (mark_modified_vars)
> --    VSETATTR (entry, att_exported);
> --
> --  if (exported_p (entry))
> --    array_needs_making = 1;
> --
> --  return (entry);
> --}
> --	
> --/* Bind a variable NAME to VALUE.  This conses up the name
> --   and value strings.  If we have a temporary environment, we bind there
> --   first, then we bind into shell_variables. */
> --
> --SHELL_VAR *
> --bind_variable (name, value, flags)
> --     const char *name;
> --     char *value;
> --     int flags;
> --{
> --  SHELL_VAR *v, *nv;
> --  VAR_CONTEXT *vc, *nvc;
> --  int level;
> --
> --  if (shell_variables == 0)
> --    create_variable_tables ();
> --
> --  /* If we have a temporary environment, look there first for the variable,
> --     and, if found, modify the value there before modifying it in the
> --     shell_variables table.  This allows sourced scripts to modify values
> --     given to them in a temporary environment while modifying the variable
> --     value that the caller sees. */
> --  if (temporary_env)
> --    bind_tempenv_variable (name, value);
> --
> --  /* XXX -- handle local variables here. */
> --  for (vc = shell_variables; vc; vc = vc->down)
> --    {
> --      if (vc_isfuncenv (vc) || vc_isbltnenv (vc))
> --	{
> --	  v = hash_lookup (name, vc->table);
> --	  nvc = vc;
> --	  if (v && nameref_p (v))
> --	    {
> --	      nv = find_variable_nameref_context (v, vc, &nvc);
> --	      if (nv == 0)
> --		{
> --		  nv = find_variable_last_nameref_context (v, vc, &nvc);
> --		  if (nv && nameref_p (nv))
> --		    {
> --		      /* If this nameref variable doesn't have a value yet,
> --			 set the value.  Otherwise, assign using the value as
> --			 normal. */
> --		      if (nameref_cell (nv) == 0)
> --			return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
> --		      return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags));
> --		    }
> --		  else
> --		    v = nv;
> --		}
> --	      else
> --	        v = nv;
> --	    }
> --	  if (v)
> --	    return (bind_variable_internal (v->name, value, nvc->table, 0, flags));
> --	}
> --    }
> --  /* bind_variable_internal will handle nameref resolution in this case */
> --  return (bind_variable_internal (name, value, global_variables->table, 0, flags));
> --}
> --
> --SHELL_VAR *
> --bind_global_variable (name, value, flags)
> --     const char *name;
> --     char *value;
> --     int flags;
> --{
> --  SHELL_VAR *v, *nv;
> --  VAR_CONTEXT *vc, *nvc;
> --  int level;
> --
> --  if (shell_variables == 0)
> --    create_variable_tables ();
> --
> --  /* bind_variable_internal will handle nameref resolution in this case */
> --  return (bind_variable_internal (name, value, global_variables->table, 0, flags));
> --}
> --
> --/* Make VAR, a simple shell variable, have value VALUE.  Once assigned a
> --   value, variables are no longer invisible.  This is a duplicate of part
> --   of the internals of bind_variable.  If the variable is exported, or
> --   all modified variables should be exported, mark the variable for export
> --   and note that the export environment needs to be recreated. */
> --SHELL_VAR *
> --bind_variable_value (var, value, aflags)
> --     SHELL_VAR *var;
> --     char *value;
> --     int aflags;
> --{
> --  char *t;
> --  int invis;
> --
> --  invis = invisible_p (var);
> --  VUNSETATTR (var, att_invisible);
> --
> --  if (var->assign_func)
> --    {
> --      /* If we're appending, we need the old value, so use
> --	 make_variable_value */
> --      t = (aflags & ASS_APPEND) ? make_variable_value (var, value, aflags) : value;
> --      (*(var->assign_func)) (var, t, -1, 0);
> --      if (t != value && t)
> --	free (t);      
> --    }
> --  else
> --    {
> --      t = make_variable_value (var, value, aflags);
> --#if defined (ARRAY_VARS)
> --      if ((aflags & ASS_NAMEREF) && (t == 0 || *t == 0 || (legal_identifier (t) == 0 && valid_array_reference (t) == 0)))
> --#else
> --      if ((aflags & ASS_NAMEREF) && (t == 0 || *t == 0 || legal_identifier (t) == 0))
> --#endif
> --	{
> --	  free (t);
> --	  if (invis)
> --	    VSETATTR (var, att_invisible);	/* XXX */
> --	  return ((SHELL_VAR *)NULL);
> --	}
> --      FREE (value_cell (var));
> --      var_setvalue (var, t);
> --    }
> --
> --  INVALIDATE_EXPORTSTR (var);
> --
> --  if (mark_modified_vars)
> --    VSETATTR (var, att_exported);
> --
> --  if (exported_p (var))
> --    array_needs_making = 1;
> --
> --  return (var);
> --}
> --
> --/* Bind/create a shell variable with the name LHS to the RHS.
> --   This creates or modifies a variable such that it is an integer.
> --
> --   This used to be in expr.c, but it is here so that all of the
> --   variable binding stuff is localized.  Since we don't want any
> --   recursive evaluation from bind_variable() (possible without this code,
> --   since bind_variable() calls the evaluator for variables with the integer
> --   attribute set), we temporarily turn off the integer attribute for each
> --   variable we set here, then turn it back on after binding as necessary. */
> --
> --SHELL_VAR *
> --bind_int_variable (lhs, rhs)
> --     char *lhs, *rhs;
> --{
> --  register SHELL_VAR *v;
> --  int isint, isarr, implicitarray;
> --
> --  isint = isarr = implicitarray = 0;
> --#if defined (ARRAY_VARS)
> --  if (valid_array_reference (lhs))
> --    {
> --      isarr = 1;
> --      v = array_variable_part (lhs, (char **)0, (int *)0);
> --    }
> --  else
> --#endif
> --    v = find_variable (lhs);
> --
> --  if (v)
> --    {
> --      isint = integer_p (v);
> --      VUNSETATTR (v, att_integer);
> --#if defined (ARRAY_VARS)
> --      if (array_p (v) && isarr == 0)
> --	implicitarray = 1;
> --#endif
> --    }
> --
> --#if defined (ARRAY_VARS)
> --  if (isarr)
> --    v = assign_array_element (lhs, rhs, 0);
> --  else if (implicitarray)
> --    v = bind_array_variable (lhs, 0, rhs, 0);
> --  else
> --#endif
> --    v = bind_variable (lhs, rhs, 0);
> --
> --  if (v && isint)
> --    VSETATTR (v, att_integer);
> --
> --  VUNSETATTR (v, att_invisible);
> --
> --  return (v);
> --}
> --
> --SHELL_VAR *
> --bind_var_to_int (var, val)
> --     char *var;
> --     intmax_t val;
> --{
> --  char ibuf[INT_STRLEN_BOUND (intmax_t) + 1], *p;
> --
> --  p = fmtulong (val, 10, ibuf, sizeof (ibuf), 0);
> --  return (bind_int_variable (var, p));
> --}
> --
> --/* Do a function binding to a variable.  You pass the name and
> --   the command to bind to.  This conses the name and command. */
> --SHELL_VAR *
> --bind_function (name, value)
> --     const char *name;
> --     COMMAND *value;
> --{
> --  SHELL_VAR *entry;
> --
> --  entry = find_function (name);
> --  if (entry == 0)
> --    {
> --      BUCKET_CONTENTS *elt;
> --
> --      elt = hash_insert (savestring (name), shell_functions, HASH_NOSRCH);
> --      entry = new_shell_variable (name);
> --      elt->data = (PTR_T)entry;
> --    }
> --  else
> --    INVALIDATE_EXPORTSTR (entry);
> --
> --  if (var_isset (entry))
> --    dispose_command (function_cell (entry));
> --
> --  if (value)
> --    var_setfunc (entry, copy_command (value));
> --  else
> --    var_setfunc (entry, 0);
> --
> --  VSETATTR (entry, att_function);
> --
> --  if (mark_modified_vars)
> --    VSETATTR (entry, att_exported);
> --
> --  VUNSETATTR (entry, att_invisible);		/* Just to be sure */
> --
> --  if (exported_p (entry))
> --    array_needs_making = 1;
> --
> --#if defined (PROGRAMMABLE_COMPLETION)
> --  set_itemlist_dirty (&it_functions);
> --#endif
> --
> --  return (entry);
> --}
> --
> --#if defined (DEBUGGER)
> --/* Bind a function definition, which includes source file and line number
> --   information in addition to the command, into the FUNCTION_DEF hash table.*/
> --void
> --bind_function_def (name, value)
> --     const char *name;
> --     FUNCTION_DEF *value;
> --{
> --  FUNCTION_DEF *entry;
> --  BUCKET_CONTENTS *elt;
> --  COMMAND *cmd;
> --
> --  entry = find_function_def (name);
> --  if (entry)
> --    {
> --      dispose_function_def_contents (entry);
> --      entry = copy_function_def_contents (value, entry);
> --    }
> --  else
> --    {
> --      cmd = value->command;
> --      value->command = 0;
> --      entry = copy_function_def (value);
> --      value->command = cmd;
> --
> --      elt = hash_insert (savestring (name), shell_function_defs, HASH_NOSRCH);
> --      elt->data = (PTR_T *)entry;
> --    }
> --}
> --#endif /* DEBUGGER */
> --
> --/* Add STRING, which is of the form foo=bar, to the temporary environment
> --   HASH_TABLE (temporary_env).  The functions in execute_cmd.c are
> --   responsible for moving the main temporary env to one of the other
> --   temporary environments.  The expansion code in subst.c calls this. */
> --int
> --assign_in_env (word, flags)
> --     WORD_DESC *word;
> --     int flags;
> --{
> --  int offset, aflags;
> --  char *name, *temp, *value;
> --  SHELL_VAR *var;
> --  const char *string;
> --
> --  string = word->word;
> --
> --  aflags = 0;
> --  offset = assignment (string, 0);
> --  name = savestring (string);
> --  value = (char *)NULL;
> --
> --  if (name[offset] == '=')
> --    {
> --      name[offset] = 0;
> --
> --      /* don't ignore the `+' when assigning temporary environment */
> --      if (name[offset - 1] == '+')
> --	{
> --	  name[offset - 1] = '\0';
> --	  aflags |= ASS_APPEND;
> --	}
> --
> --      var = find_variable (name);
> --      if (var && (readonly_p (var) || noassign_p (var)))
> --	{
> --	  if (readonly_p (var))
> --	    err_readonly (name);
> --	  free (name);
> --  	  return (0);
> --	}
> --
> --      temp = name + offset + 1;
> --      value = expand_assignment_string_to_string (temp, 0);
> --
> --      if (var && (aflags & ASS_APPEND))
> --	{
> --	  temp = make_variable_value (var, value, aflags);
> --	  FREE (value);
> --	  value = temp;
> --	}
> --    }
> --
> --  if (temporary_env == 0)
> --    temporary_env = hash_create (TEMPENV_HASH_BUCKETS);
> --
> --  var = hash_lookup (name, temporary_env);
> --  if (var == 0)
> --    var = make_new_variable (name, temporary_env);
> --  else
> --    FREE (value_cell (var));
> --
> --  if (value == 0)
> --    {
> --      value = (char *)xmalloc (1);	/* like do_assignment_internal */
> --      value[0] = '\0';
> --    }
> --
> --  var_setvalue (var, value);
> --  var->attributes |= (att_exported|att_tempvar);
> --  var->context = variable_context;	/* XXX */
> --
> --  INVALIDATE_EXPORTSTR (var);
> --  var->exportstr = mk_env_string (name, value, 0);
> --
> --  array_needs_making = 1;
> --
> --  if (flags)
> --    stupidly_hack_special_variables (name);
> --
> --  if (echo_command_at_execute)
> --    /* The Korn shell prints the `+ ' in front of assignment statements,
> --	so we do too. */
> --    xtrace_print_assignment (name, value, 0, 1);
> --
> --  free (name);
> --  return 1;
> --}
> --
> --/* **************************************************************** */
> --/*								    */
> --/*			Copying variables			    */
> --/*								    */
> --/* **************************************************************** */
> --
> --#ifdef INCLUDE_UNUSED
> --/* Copy VAR to a new data structure and return that structure. */
> --SHELL_VAR *
> --copy_variable (var)
> --     SHELL_VAR *var;
> --{
> --  SHELL_VAR *copy = (SHELL_VAR *)NULL;
> --
> --  if (var)
> --    {
> --      copy = (SHELL_VAR *)xmalloc (sizeof (SHELL_VAR));
> --
> --      copy->attributes = var->attributes;
> --      copy->name = savestring (var->name);
> --
> --      if (function_p (var))
> --	var_setfunc (copy, copy_command (function_cell (var)));
> --#if defined (ARRAY_VARS)
> --      else if (array_p (var))
> --	var_setarray (copy, array_copy (array_cell (var)));
> --      else if (assoc_p (var))
> --	var_setassoc (copy, assoc_copy (assoc_cell (var)));
> --#endif
> --      else if (nameref_cell (var))	/* XXX - nameref */
> --	var_setref (copy, savestring (nameref_cell (var)));
> --      else if (value_cell (var))	/* XXX - nameref */
> --	var_setvalue (copy, savestring (value_cell (var)));
> --      else
> --	var_setvalue (copy, (char *)NULL);
> --
> --      copy->dynamic_value = var->dynamic_value;
> --      copy->assign_func = var->assign_func;
> --
> --      copy->exportstr = COPY_EXPORTSTR (var);
> --
> --      copy->context = var->context;
> --    }
> --  return (copy);
> --}
> --#endif
> --
> --/* **************************************************************** */
> --/*								    */
> --/*		  Deleting and unsetting variables		    */
> --/*								    */
> --/* **************************************************************** */
> --
> --/* Dispose of the information attached to VAR. */
> --static void
> --dispose_variable_value (var)
> --     SHELL_VAR *var;
> --{
> --  if (function_p (var))
> --    dispose_command (function_cell (var));
> --#if defined (ARRAY_VARS)
> --  else if (array_p (var))
> --    array_dispose (array_cell (var));
> --  else if (assoc_p (var))
> --    assoc_dispose (assoc_cell (var));
> --#endif
> --  else if (nameref_p (var))
> --    FREE (nameref_cell (var));
> --  else
> --    FREE (value_cell (var));
> --}
> --
> --void
> --dispose_variable (var)
> --     SHELL_VAR *var;
> --{
> --  if (var == 0)
> --    return;
> --
> --  if (nofree_p (var) == 0)
> --    dispose_variable_value (var);
> --
> --  FREE_EXPORTSTR (var);
> --
> --  free (var->name);
> --
> --  if (exported_p (var))
> --    array_needs_making = 1;
> --
> --  free (var);
> --}
> --
> --/* Unset the shell variable referenced by NAME.  Unsetting a nameref variable
> --   unsets the variable it resolves to but leaves the nameref alone. */
> --int
> --unbind_variable (name)
> --     const char *name;
> --{
> --  SHELL_VAR *v, *nv;
> --  int r;
> --
> --  v = var_lookup (name, shell_variables);
> --  nv = (v && nameref_p (v)) ? find_variable_nameref (v) : (SHELL_VAR *)NULL;
> --
> --  r = nv ? makunbound (nv->name, shell_variables) : makunbound (name, shell_variables);
> --  return r;
> --}
> --
> --/* Unbind NAME, where NAME is assumed to be a nameref variable */
> --int
> --unbind_nameref (name)
> --     const char *name;
> --{
> --  SHELL_VAR *v;
> --
> --  v = var_lookup (name, shell_variables);
> --  if (v && nameref_p (v))
> --    return makunbound (name, shell_variables);
> --  return 0;
> --}
> --
> --/* Unset the shell function named NAME. */
> --int
> --unbind_func (name)
> --     const char *name;
> --{
> --  BUCKET_CONTENTS *elt;
> --  SHELL_VAR *func;
> --
> --  elt = hash_remove (name, shell_functions, 0);
> --
> --  if (elt == 0)
> --    return -1;
> --
> --#if defined (PROGRAMMABLE_COMPLETION)
> --  set_itemlist_dirty (&it_functions);
> --#endif
> --
> --  func = (SHELL_VAR *)elt->data;
> --  if (func)
> --    {
> --      if (exported_p (func))
> --	array_needs_making++;
> --      dispose_variable (func);
> --    }
> --
> --  free (elt->key);
> --  free (elt);
> --
> --  return 0;  
> --}
> --
> --#if defined (DEBUGGER)
> --int
> --unbind_function_def (name)
> --     const char *name;
> --{
> --  BUCKET_CONTENTS *elt;
> --  FUNCTION_DEF *funcdef;
> --
> --  elt = hash_remove (name, shell_function_defs, 0);
> --
> --  if (elt == 0)
> --    return -1;
> --
> --  funcdef = (FUNCTION_DEF *)elt->data;
> --  if (funcdef)
> --    dispose_function_def (funcdef);
> --
> --  free (elt->key);
> --  free (elt);
> --
> --  return 0;  
> --}
> --#endif /* DEBUGGER */
> --
> --int
> --delete_var (name, vc)
> --     const char *name;
> --     VAR_CONTEXT *vc;
> --{
> --  BUCKET_CONTENTS *elt;
> --  SHELL_VAR *old_var;
> --  VAR_CONTEXT *v;
> --
> --  for (elt = (BUCKET_CONTENTS *)NULL, v = vc; v; v = v->down)
> --    if (elt = hash_remove (name, v->table, 0))
> --      break;
> --
> --  if (elt == 0)
> --    return (-1);
> --
> --  old_var = (SHELL_VAR *)elt->data;
> --  free (elt->key);
> --  free (elt);
> --
> --  dispose_variable (old_var);
> --  return (0);
> --}
> --
> --/* Make the variable associated with NAME go away.  HASH_LIST is the
> --   hash table from which this variable should be deleted (either
> --   shell_variables or shell_functions).
> --   Returns non-zero if the variable couldn't be found. */
> --int
> --makunbound (name, vc)
> --     const char *name;
> --     VAR_CONTEXT *vc;
> --{
> --  BUCKET_CONTENTS *elt, *new_elt;
> --  SHELL_VAR *old_var;
> --  VAR_CONTEXT *v;
> --  char *t;
> --
> --  for (elt = (BUCKET_CONTENTS *)NULL, v = vc; v; v = v->down)
> --    if (elt = hash_remove (name, v->table, 0))
> --      break;
> --
> --  if (elt == 0)
> --    return (-1);
> --
> --  old_var = (SHELL_VAR *)elt->data;
> --
> --  if (old_var && exported_p (old_var))
> --    array_needs_making++;
> --
> --  /* If we're unsetting a local variable and we're still executing inside
> --     the function, just mark the variable as invisible.  The function
> --     eventually called by pop_var_context() will clean it up later.  This
> --     must be done so that if the variable is subsequently assigned a new
> --     value inside the function, the `local' attribute is still present.
> --     We also need to add it back into the correct hash table. */
> --  if (old_var && local_p (old_var) && variable_context == old_var->context)
> --    {
> --      if (nofree_p (old_var))
> --	var_setvalue (old_var, (char *)NULL);
> --#if defined (ARRAY_VARS)
> --      else if (array_p (old_var))
> --	array_dispose (array_cell (old_var));
> --      else if (assoc_p (old_var))
> --	assoc_dispose (assoc_cell (old_var));
> --#endif
> --      else if (nameref_p (old_var))
> --	FREE (nameref_cell (old_var));
> --      else
> --	FREE (value_cell (old_var));
> --      /* Reset the attributes.  Preserve the export attribute if the variable
> --	 came from a temporary environment.  Make sure it stays local, and
> --	 make it invisible. */ 
> --      old_var->attributes = (exported_p (old_var) && tempvar_p (old_var)) ? att_exported : 0;
> --      VSETATTR (old_var, att_local);
> --      VSETATTR (old_var, att_invisible);
> --      var_setvalue (old_var, (char *)NULL);
> --      INVALIDATE_EXPORTSTR (old_var);
> --
> --      new_elt = hash_insert (savestring (old_var->name), v->table, 0);
> --      new_elt->data = (PTR_T)old_var;
> --      stupidly_hack_special_variables (old_var->name);
> --
> --      free (elt->key);
> --      free (elt);
> --      return (0);
> --    }
> --
> --  /* Have to save a copy of name here, because it might refer to
> --     old_var->name.  If so, stupidly_hack_special_variables will
> --     reference freed memory. */
> --  t = savestring (name);
> --
> --  free (elt->key);
> --  free (elt);
> --
> --  dispose_variable (old_var);
> --  stupidly_hack_special_variables (t);
> --  free (t);
> --
> --  return (0);
> --}
> --
> --/* Get rid of all of the variables in the current context. */
> --void
> --kill_all_local_variables ()
> --{
> --  VAR_CONTEXT *vc;
> --
> --  for (vc = shell_variables; vc; vc = vc->down)
> --    if (vc_isfuncenv (vc) && vc->scope == variable_context)
> --      break;
> --  if (vc == 0)
> --    return;		/* XXX */
> --
> --  if (vc->table && vc_haslocals (vc))
> --    {
> --      delete_all_variables (vc->table);
> --      hash_dispose (vc->table);
> --    }
> --  vc->table = (HASH_TABLE *)NULL;
> --}
> --
> --static void
> --free_variable_hash_data (data)
> --     PTR_T data;
> --{
> --  SHELL_VAR *var;
> --
> --  var = (SHELL_VAR *)data;
> --  dispose_variable (var);
> --}
> --
> --/* Delete the entire contents of the hash table. */
> --void
> --delete_all_variables (hashed_vars)
> --     HASH_TABLE *hashed_vars;
> --{
> --  hash_flush (hashed_vars, free_variable_hash_data);
> --}
> --
> --/* **************************************************************** */
> --/*								    */
> --/*		     Setting variable attributes		    */
> --/*								    */
> --/* **************************************************************** */
> --
> --#define FIND_OR_MAKE_VARIABLE(name, entry) \
> --  do \
> --    { \
> --      entry = find_variable (name); \
> --      if (!entry) \
> --	{ \
> --	  entry = bind_variable (name, "", 0); \
> --	  if (!no_invisible_vars && entry) entry->attributes |= att_invisible; \
> --	} \
> --    } \
> --  while (0)
> --
> --/* Make the variable associated with NAME be readonly.
> --   If NAME does not exist yet, create it. */
> --void
> --set_var_read_only (name)
> --     char *name;
> --{
> --  SHELL_VAR *entry;
> --
> --  FIND_OR_MAKE_VARIABLE (name, entry);
> --  VSETATTR (entry, att_readonly);
> --}
> --
> --#ifdef INCLUDE_UNUSED
> --/* Make the function associated with NAME be readonly.
> --   If NAME does not exist, we just punt, like auto_export code below. */
> --void
> --set_func_read_only (name)
> --     const char *name;
> --{
> --  SHELL_VAR *entry;
> --
> --  entry = find_function (name);
> --  if (entry)
> --    VSETATTR (entry, att_readonly);
> --}
> --
> --/* Make the variable associated with NAME be auto-exported.
> --   If NAME does not exist yet, create it. */
> --void
> --set_var_auto_export (name)
> --     char *name;
> --{
> --  SHELL_VAR *entry;
> --
> --  FIND_OR_MAKE_VARIABLE (name, entry);
> --  set_auto_export (entry);
> --}
> --
> --/* Make the function associated with NAME be auto-exported. */
> --void
> --set_func_auto_export (name)
> --     const char *name;
> --{
> --  SHELL_VAR *entry;
> --
> --  entry = find_function (name);
> --  if (entry)
> --    set_auto_export (entry);
> --}
> --#endif
> --
> --/* **************************************************************** */
> --/*								    */
> --/*		     Creating lists of variables		    */
> --/*								    */
> --/* **************************************************************** */
> --
> --static VARLIST *
> --vlist_alloc (nentries)
> --     int nentries;
> --{
> --  VARLIST  *vlist;
> --
> --  vlist = (VARLIST *)xmalloc (sizeof (VARLIST));
> --  vlist->list = (SHELL_VAR **)xmalloc ((nentries + 1) * sizeof (SHELL_VAR *));
> --  vlist->list_size = nentries;
> --  vlist->list_len = 0;
> --  vlist->list[0] = (SHELL_VAR *)NULL;
> --
> --  return vlist;
> --}
> --
> --static VARLIST *
> --vlist_realloc (vlist, n)
> --     VARLIST *vlist;
> --     int n;
> --{
> --  if (vlist == 0)
> --    return (vlist = vlist_alloc (n));
> --  if (n > vlist->list_size)
> --    {
> --      vlist->list_size = n;
> --      vlist->list = (SHELL_VAR **)xrealloc (vlist->list, (vlist->list_size + 1) * sizeof (SHELL_VAR *));
> --    }
> --  return vlist;
> --}
> --
> --static void
> --vlist_add (vlist, var, flags)
> --     VARLIST *vlist;
> --     SHELL_VAR *var;
> --     int flags;
> --{
> --  register int i;
> --
> --  for (i = 0; i < vlist->list_len; i++)
> --    if (STREQ (var->name, vlist->list[i]->name))
> --      break;
> --  if (i < vlist->list_len)
> --    return;
> --
> --  if (i >= vlist->list_size)
> --    vlist = vlist_realloc (vlist, vlist->list_size + 16);
> --
> --  vlist->list[vlist->list_len++] = var;
> --  vlist->list[vlist->list_len] = (SHELL_VAR *)NULL;
> --}
> --
> --/* Map FUNCTION over the variables in VAR_HASH_TABLE.  Return an array of the
> --   variables for which FUNCTION returns a non-zero value.  A NULL value
> --   for FUNCTION means to use all variables. */
> --SHELL_VAR **
> --map_over (function, vc)
> --     sh_var_map_func_t *function;
> --     VAR_CONTEXT *vc;
> --{
> --  VAR_CONTEXT *v;
> --  VARLIST *vlist;
> --  SHELL_VAR **ret;
> --  int nentries;
> --
> --  for (nentries = 0, v = vc; v; v = v->down)
> --    nentries += HASH_ENTRIES (v->table);
> --
> --  if (nentries == 0)
> --    return (SHELL_VAR **)NULL;
> --
> --  vlist = vlist_alloc (nentries);
> --
> --  for (v = vc; v; v = v->down)
> --    flatten (v->table, function, vlist, 0);
> --
> --  ret = vlist->list;
> --  free (vlist);
> --  return ret;
> --}
> --
> --SHELL_VAR **
> --map_over_funcs (function)
> --     sh_var_map_func_t *function;
> --{
> --  VARLIST *vlist;
> --  SHELL_VAR **ret;
> --
> --  if (shell_functions == 0 || HASH_ENTRIES (shell_functions) == 0)
> --    return ((SHELL_VAR **)NULL);
> --
> --  vlist = vlist_alloc (HASH_ENTRIES (shell_functions));
> --
> --  flatten (shell_functions, function, vlist, 0);
> --
> --  ret = vlist->list;
> --  free (vlist);
> --  return ret;
> --}
> --
> --/* Flatten VAR_HASH_TABLE, applying FUNC to each member and adding those
> --   elements for which FUNC succeeds to VLIST->list.  FLAGS is reserved
> --   for future use.  Only unique names are added to VLIST.  If FUNC is
> --   NULL, each variable in VAR_HASH_TABLE is added to VLIST.  If VLIST is
> --   NULL, FUNC is applied to each SHELL_VAR in VAR_HASH_TABLE.  If VLIST
> --   and FUNC are both NULL, nothing happens. */
> --static void
> --flatten (var_hash_table, func, vlist, flags)
> --     HASH_TABLE *var_hash_table;
> --     sh_var_map_func_t *func;
> --     VARLIST *vlist;
> --     int flags;
> --{
> --  register int i;
> --  register BUCKET_CONTENTS *tlist;
> --  int r;
> --  SHELL_VAR *var;
> --
> --  if (var_hash_table == 0 || (HASH_ENTRIES (var_hash_table) == 0) || (vlist == 0 && func == 0))
> --    return;
> --
> --  for (i = 0; i < var_hash_table->nbuckets; i++)
> --    {
> --      for (tlist = hash_items (i, var_hash_table); tlist; tlist = tlist->next)
> --	{
> --	  var = (SHELL_VAR *)tlist->data;
> --
> --	  r = func ? (*func) (var) : 1;
> --	  if (r && vlist)
> --	    vlist_add (vlist, var, flags);
> --	}
> --    }
> --}
> --
> --void
> --sort_variables (array)
> --     SHELL_VAR **array;
> --{
> --  qsort (array, strvec_len ((char **)array), sizeof (SHELL_VAR *), (QSFUNC *)qsort_var_comp);
> --}
> --
> --static int
> --qsort_var_comp (var1, var2)
> --     SHELL_VAR **var1, **var2;
> --{
> --  int result;
> --
> --  if ((result = (*var1)->name[0] - (*var2)->name[0]) == 0)
> --    result = strcmp ((*var1)->name, (*var2)->name);
> --
> --  return (result);
> --}
> --
> --/* Apply FUNC to each variable in SHELL_VARIABLES, adding each one for
> --   which FUNC succeeds to an array of SHELL_VAR *s.  Returns the array. */
> --static SHELL_VAR **
> --vapply (func)
> --     sh_var_map_func_t *func;
> --{
> --  SHELL_VAR **list;
> --
> --  list = map_over (func, shell_variables);
> --  if (list /* && posixly_correct */)
> --    sort_variables (list);
> --  return (list);
> --}
> --
> --/* Apply FUNC to each variable in SHELL_FUNCTIONS, adding each one for
> --   which FUNC succeeds to an array of SHELL_VAR *s.  Returns the array. */
> --static SHELL_VAR **
> --fapply (func)
> --     sh_var_map_func_t *func;
> --{
> --  SHELL_VAR **list;
> --
> --  list = map_over_funcs (func);
> --  if (list /* && posixly_correct */)
> --    sort_variables (list);
> --  return (list);
> --}
> --
> --/* Create a NULL terminated array of all the shell variables. */
> --SHELL_VAR **
> --all_shell_variables ()
> --{
> --  return (vapply ((sh_var_map_func_t *)NULL));
> --}
> --
> --/* Create a NULL terminated array of all the shell functions. */
> --SHELL_VAR **
> --all_shell_functions ()
> --{
> --  return (fapply ((sh_var_map_func_t *)NULL));
> --}
> --
> --static int
> --visible_var (var)
> --     SHELL_VAR *var;
> --{
> --  return (invisible_p (var) == 0);
> --}
> --
> --SHELL_VAR **
> --all_visible_functions ()
> --{
> --  return (fapply (visible_var));
> --}
> --
> --SHELL_VAR **
> --all_visible_variables ()
> --{
> --  return (vapply (visible_var));
> --}
> --
> --/* Return non-zero if the variable VAR is visible and exported.  Array
> --   variables cannot be exported. */
> --static int
> --visible_and_exported (var)
> --     SHELL_VAR *var;
> --{
> --  return (invisible_p (var) == 0 && exported_p (var));
> --}
> --
> --/* Candidate variables for the export environment are either valid variables
> --   with the export attribute or invalid variables inherited from the initial
> --   environment and simply passed through. */
> --static int
> --export_environment_candidate (var)
> --     SHELL_VAR *var;
> --{
> --  return (exported_p (var) && (invisible_p (var) == 0 || imported_p (var)));
> --}
> --
> --/* Return non-zero if VAR is a local variable in the current context and
> --   is exported. */
> --static int
> --local_and_exported (var)
> --     SHELL_VAR *var;
> --{
> --  return (invisible_p (var) == 0 && local_p (var) && var->context == variable_context && exported_p (var));
> --}
> --
> --SHELL_VAR **
> --all_exported_variables ()
> --{
> --  return (vapply (visible_and_exported));
> --}
> --
> --SHELL_VAR **
> --local_exported_variables ()
> --{
> --  return (vapply (local_and_exported));
> --}
> --
> --static int
> --variable_in_context (var)
> --     SHELL_VAR *var;
> --{
> --  return (invisible_p (var) == 0 && local_p (var) && var->context == variable_context);
> --}
> --
> --SHELL_VAR **
> --all_local_variables ()
> --{
> --  VARLIST *vlist;
> --  SHELL_VAR **ret;
> --  VAR_CONTEXT *vc;
> --
> --  vc = shell_variables;
> --  for (vc = shell_variables; vc; vc = vc->down)
> --    if (vc_isfuncenv (vc) && vc->scope == variable_context)
> --      break;
> --
> --  if (vc == 0)
> --    {
> --      internal_error (_("all_local_variables: no function context at current scope"));
> --      return (SHELL_VAR **)NULL;
> --    }
> --  if (vc->table == 0 || HASH_ENTRIES (vc->table) == 0 || vc_haslocals (vc) == 0)
> --    return (SHELL_VAR **)NULL;
> --    
> --  vlist = vlist_alloc (HASH_ENTRIES (vc->table));
> --
> --  flatten (vc->table, variable_in_context, vlist, 0);
> --
> --  ret = vlist->list;
> --  free (vlist);
> --  if (ret)
> --    sort_variables (ret);
> --  return ret;
> --}
> --
> --#if defined (ARRAY_VARS)
> --/* Return non-zero if the variable VAR is visible and an array. */
> --static int
> --visible_array_vars (var)
> --     SHELL_VAR *var;
> --{
> --  return (invisible_p (var) == 0 && array_p (var));
> --}
> --
> --SHELL_VAR **
> --all_array_variables ()
> --{
> --  return (vapply (visible_array_vars));
> --}
> --#endif /* ARRAY_VARS */
> --
> --char **
> --all_variables_matching_prefix (prefix)
> --     const char *prefix;
> --{
> --  SHELL_VAR **varlist;
> --  char **rlist;
> --  int vind, rind, plen;
> --
> --  plen = STRLEN (prefix);
> --  varlist = all_visible_variables ();
> --  for (vind = 0; varlist && varlist[vind]; vind++)
> --    ;
> --  if (varlist == 0 || vind == 0)
> --    return ((char **)NULL);
> --  rlist = strvec_create (vind + 1);
> --  for (vind = rind = 0; varlist[vind]; vind++)
> --    {
> --      if (plen == 0 || STREQN (prefix, varlist[vind]->name, plen))
> --	rlist[rind++] = savestring (varlist[vind]->name);
> --    }
> --  rlist[rind] = (char *)0;
> --  free (varlist);
> --
> --  return rlist;
> --}
> --
> --/* **************************************************************** */
> --/*								    */
> --/*		 Managing temporary variable scopes		    */
> --/*								    */
> --/* **************************************************************** */
> --
> --/* Make variable NAME have VALUE in the temporary environment. */
> --static SHELL_VAR *
> --bind_tempenv_variable (name, value)
> --     const char *name;
> --     char *value;
> --{
> --  SHELL_VAR *var;
> --
> --  var = temporary_env ? hash_lookup (name, temporary_env) : (SHELL_VAR *)NULL;
> --
> --  if (var)
> --    {
> --      FREE (value_cell (var));
> --      var_setvalue (var, savestring (value));
> --      INVALIDATE_EXPORTSTR (var);
> --    }
> --
> --  return (var);
> --}
> --
> --/* Find a variable in the temporary environment that is named NAME.
> --   Return the SHELL_VAR *, or NULL if not found. */
> --SHELL_VAR *
> --find_tempenv_variable (name)
> --     const char *name;
> --{
> --  return (temporary_env ? hash_lookup (name, temporary_env) : (SHELL_VAR *)NULL);
> --}
> --
> --char **tempvar_list;
> --int tvlist_ind;
> --
> --/* Push the variable described by (SHELL_VAR *)DATA down to the next
> --   variable context from the temporary environment. */
> --static void
> --push_temp_var (data)
> --     PTR_T data;
> --{
> --  SHELL_VAR *var, *v;
> --  HASH_TABLE *binding_table;
> --
> --  var = (SHELL_VAR *)data;
> --
> --  binding_table = shell_variables->table;
> --  if (binding_table == 0)
> --    {
> --      if (shell_variables == global_variables)
> --	/* shouldn't happen */
> --	binding_table = shell_variables->table = global_variables->table = hash_create (0);
> --      else
> --	binding_table = shell_variables->table = hash_create (TEMPENV_HASH_BUCKETS);
> --    }
> --
> --  v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, 0);
> --
> --  /* XXX - should we set the context here?  It shouldn't matter because of how
> --     assign_in_env works, but might want to check. */
> --  if (binding_table == global_variables->table)		/* XXX */
> --    var->attributes &= ~(att_tempvar|att_propagate);
> --  else
> --    {
> --      var->attributes |= att_propagate;
> --      if  (binding_table == shell_variables->table)
> --	shell_variables->flags |= VC_HASTMPVAR;
> --    }
> --  v->attributes |= var->attributes;
> --
> --  if (find_special_var (var->name) >= 0)
> --    tempvar_list[tvlist_ind++] = savestring (var->name);
> --
> --  dispose_variable (var);
> --}
> --
> --static void
> --propagate_temp_var (data)
> --     PTR_T data;
> --{
> --  SHELL_VAR *var;
> --
> --  var = (SHELL_VAR *)data;
> --  if (tempvar_p (var) && (var->attributes & att_propagate))
> --    push_temp_var (data);
> --  else
> --    {
> --      if (find_special_var (var->name) >= 0)
> --	tempvar_list[tvlist_ind++] = savestring (var->name);
> --      dispose_variable (var);
> --    }
> --}
> --
> --/* Free the storage used in the hash table for temporary
> --   environment variables.  PUSHF is a function to be called
> --   to free each hash table entry.  It takes care of pushing variables
> --   to previous scopes if appropriate.  PUSHF stores names of variables
> --   that require special handling (e.g., IFS) on tempvar_list, so this
> --   function can call stupidly_hack_special_variables on all the
> --   variables in the list when the temporary hash table is destroyed. */
> --static void
> --dispose_temporary_env (pushf)
> --     sh_free_func_t *pushf;
> --{
> --  int i;
> --
> --  tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1);
> --  tempvar_list[tvlist_ind = 0] = 0;
> --    
> --  hash_flush (temporary_env, pushf);
> --  hash_dispose (temporary_env);
> --  temporary_env = (HASH_TABLE *)NULL;
> --
> --  tempvar_list[tvlist_ind] = 0;
> --
> --  array_needs_making = 1;
> --
> --#if 0
> --  sv_ifs ("IFS");		/* XXX here for now -- check setifs in assign_in_env */  
> --#endif
> --  for (i = 0; i < tvlist_ind; i++)
> --    stupidly_hack_special_variables (tempvar_list[i]);
> --
> --  strvec_dispose (tempvar_list);
> --  tempvar_list = 0;
> --  tvlist_ind = 0;
> --}
> --
> --void
> --dispose_used_env_vars ()
> --{
> --  if (temporary_env)
> --    {
> --      dispose_temporary_env (propagate_temp_var);
> --      maybe_make_export_env ();
> --    }
> --}
> --
> --/* Take all of the shell variables in the temporary environment HASH_TABLE
> --   and make shell variables from them at the current variable context. */
> --void
> --merge_temporary_env ()
> --{
> --  if (temporary_env)
> --    dispose_temporary_env (push_temp_var);
> --}
> --
> --/* **************************************************************** */
> --/*								    */
> --/*	     Creating and manipulating the environment		    */
> --/*								    */
> --/* **************************************************************** */
> --
> --static inline char *
> --mk_env_string (name, value, isfunc)
> --     const char *name, *value;
> --     int isfunc;
> --{
> --  size_t name_len, value_len;
> --  char	*p, *q;
> --
> --  name_len = strlen (name);
> --  value_len = STRLEN (value);
> --
> --  /* If we are exporting a shell function, construct the encoded function
> --     name. */
> --  if (isfunc && value)
> --    {
> --      p = (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFFLEN + value_len + 2);
> --      q = p;
> --      memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN);
> --      q += BASHFUNC_PREFLEN;
> --      memcpy (q, name, name_len);
> --      q += name_len;
> --      memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN);
> --      q += BASHFUNC_SUFFLEN;
> --    }
> --  else
> --    {
> --      p = (char *)xmalloc (2 + name_len + value_len);
> --      memcpy (p, name, name_len);
> --      q = p + name_len;
> --    }
> --
> --  q[0] = '=';
> --  if (value && *value)
> --    memcpy (q + 1, value, value_len + 1);
> --  else
> --    q[1] = '\0';
> --
> --  return (p);
> --}
> --
> --#ifdef DEBUG
> --/* Debugging */
> --static int
> --valid_exportstr (v)
> --     SHELL_VAR *v;
> --{
> --  char *s;
> --
> --  s = v->exportstr;
> --  if (s == 0)
> --    {
> --      internal_error (_("%s has null exportstr"), v->name);
> --      return (0);
> --    }
> --  if (legal_variable_starter ((unsigned char)*s) == 0)
> --    {
> --      internal_error (_("invalid character %d in exportstr for %s"), *s, v->name);
> --      return (0);
> --    }
> --  for (s = v->exportstr + 1; s && *s; s++)
> --    {
> --      if (*s == '=')
> --	break;
> --      if (legal_variable_char ((unsigned char)*s) == 0)
> --	{
> --	  internal_error (_("invalid character %d in exportstr for %s"), *s, v->name);
> --	  return (0);
> --	}
> --    }
> --  if (*s != '=')
> --    {
> --      internal_error (_("no `=' in exportstr for %s"), v->name);
> --      return (0);
> --    }
> --  return (1);
> --}
> --#endif
> --
> --static char **
> --make_env_array_from_var_list (vars)
> --     SHELL_VAR **vars;
> --{
> --  register int i, list_index;
> --  register SHELL_VAR *var;
> --  char **list, *value;
> --
> --  list = strvec_create ((1 + strvec_len ((char **)vars)));
> --
> --#define USE_EXPORTSTR (value == var->exportstr)
> --
> --  for (i = 0, list_index = 0; var = vars[i]; i++)
> --    {
> --#if defined (__CYGWIN__)
> --      /* We don't use the exportstr stuff on Cygwin at all. */
> --      INVALIDATE_EXPORTSTR (var);
> --#endif
> --      if (var->exportstr)
> --	value = var->exportstr;
> --      else if (function_p (var))
> --	value = named_function_string ((char *)NULL, function_cell (var), 0);
> --#if defined (ARRAY_VARS)
> --      else if (array_p (var))
> --#  if ARRAY_EXPORT
> --	value = array_to_assignment_string (array_cell (var));
> --#  else
> --	continue;	/* XXX array vars cannot yet be exported */
> --#  endif /* ARRAY_EXPORT */
> --      else if (assoc_p (var))
> --#  if 0
> --	value = assoc_to_assignment_string (assoc_cell (var));
> --#  else
> --	continue;	/* XXX associative array vars cannot yet be exported */
> --#  endif
> --#endif
> --      else
> --	value = value_cell (var);
> --
> --      if (value)
> --	{
> --	  /* Gee, I'd like to get away with not using savestring() if we're
> --	     using the cached exportstr... */
> --	  list[list_index] = USE_EXPORTSTR ? savestring (value)
> --					   : mk_env_string (var->name, value, function_p (var));
> --
> --	  if (USE_EXPORTSTR == 0)
> --	    SAVE_EXPORTSTR (var, list[list_index]);
> --
> --	  list_index++;
> --#undef USE_EXPORTSTR
> --
> --#if 0	/* not yet */
> --#if defined (ARRAY_VARS)
> --	  if (array_p (var) || assoc_p (var))
> --	    free (value);
> --#endif
> --#endif
> --	}
> --    }
> --
> --  list[list_index] = (char *)NULL;
> --  return (list);
> --}
> --
> --/* Make an array of assignment statements from the hash table
> --   HASHED_VARS which contains SHELL_VARs.  Only visible, exported
> --   variables are eligible. */
> --static char **
> --make_var_export_array (vcxt)
> --     VAR_CONTEXT *vcxt;
> --{
> --  char **list;
> --  SHELL_VAR **vars;
> --
> --#if 0
> --  vars = map_over (visible_and_exported, vcxt);
> --#else
> --  vars = map_over (export_environment_candidate, vcxt);
> --#endif
> --
> --  if (vars == 0)
> --    return (char **)NULL;
> --
> --  list = make_env_array_from_var_list (vars);
> --
> --  free (vars);
> --  return (list);
> --}
> --
> --static char **
> --make_func_export_array ()
> --{
> --  char **list;
> --  SHELL_VAR **vars;
> --
> --  vars = map_over_funcs (visible_and_exported);
> --  if (vars == 0)
> --    return (char **)NULL;
> --
> --  list = make_env_array_from_var_list (vars);
> --
> --  free (vars);
> --  return (list);
> --}
> --
> --/* Add ENVSTR to the end of the exported environment, EXPORT_ENV. */
> --#define add_to_export_env(envstr,do_alloc) \
> --do \
> --  { \
> --    if (export_env_index >= (export_env_size - 1)) \
> --      { \
> --	export_env_size += 16; \
> --	export_env = strvec_resize (export_env, export_env_size); \
> --	environ = export_env; \
> --      } \
> --    export_env[export_env_index++] = (do_alloc) ? savestring (envstr) : envstr; \
> --    export_env[export_env_index] = (char *)NULL; \
> --  } while (0)
> --
> --/* Add ASSIGN to EXPORT_ENV, or supercede a previous assignment in the
> --   array with the same left-hand side.  Return the new EXPORT_ENV. */
> --char **
> --add_or_supercede_exported_var (assign, do_alloc)
> --     char *assign;
> --     int do_alloc;
> --{
> --  register int i;
> --  int equal_offset;
> --
> --  equal_offset = assignment (assign, 0);
> --  if (equal_offset == 0)
> --    return (export_env);
> --
> --  /* If this is a function, then only supersede the function definition.
> --     We do this by including the `=() {' in the comparison, like
> --     initialize_shell_variables does. */
> --  if (assign[equal_offset + 1] == '(' &&
> --     strncmp (assign + equal_offset + 2, ") {", 3) == 0)		/* } */
> --    equal_offset += 4;
> --
> --  for (i = 0; i < export_env_index; i++)
> --    {
> --      if (STREQN (assign, export_env[i], equal_offset + 1))
> --	{
> --	  free (export_env[i]);
> --	  export_env[i] = do_alloc ? savestring (assign) : assign;
> --	  return (export_env);
> --	}
> --    }
> --  add_to_export_env (assign, do_alloc);
> --  return (export_env);
> --}
> --
> --static void
> --add_temp_array_to_env (temp_array, do_alloc, do_supercede)
> --     char **temp_array;
> --     int do_alloc, do_supercede;
> --{
> --  register int i;
> --
> --  if (temp_array == 0)
> --    return;
> --
> --  for (i = 0; temp_array[i]; i++)
> --    {
> --      if (do_supercede)
> --	export_env = add_or_supercede_exported_var (temp_array[i], do_alloc);
> --      else
> --	add_to_export_env (temp_array[i], do_alloc);
> --    }
> --
> --  free (temp_array);
> --}
> --
> --/* Make the environment array for the command about to be executed, if the
> --   array needs making.  Otherwise, do nothing.  If a shell action could
> --   change the array that commands receive for their environment, then the
> --   code should `array_needs_making++'.
> --
> --   The order to add to the array is:
> --   	temporary_env
> --   	list of var contexts whose head is shell_variables
> --  	shell_functions
> --
> --  This is the shell variable lookup order.  We add only new variable
> --  names at each step, which allows local variables and variables in
> --  the temporary environments to shadow variables in the global (or
> --  any previous) scope.
> --*/
> --
> --static int
> --n_shell_variables ()
> --{
> --  VAR_CONTEXT *vc;
> --  int n;
> --
> --  for (n = 0, vc = shell_variables; vc; vc = vc->down)
> --    n += HASH_ENTRIES (vc->table);
> --  return n;
> --}
> --
> --int
> --chkexport (name)
> --     char *name;
> --{
> --  SHELL_VAR *v;
> --
> --  v = find_variable (name);
> --  if (v && exported_p (v))
> --    {
> --      array_needs_making = 1;
> --      maybe_make_export_env ();
> --      return 1;
> --    }
> --  return 0;
> --}
> --
> --void
> --maybe_make_export_env ()
> --{
> --  register char **temp_array;
> --  int new_size;
> --  VAR_CONTEXT *tcxt;
> --
> --  if (array_needs_making)
> --    {
> --      if (export_env)
> --	strvec_flush (export_env);
> --
> --      /* Make a guess based on how many shell variables and functions we
> --	 have.  Since there will always be array variables, and array
> --	 variables are not (yet) exported, this will always be big enough
> --	 for the exported variables and functions. */
> --      new_size = n_shell_variables () + HASH_ENTRIES (shell_functions) + 1 +
> --		 HASH_ENTRIES (temporary_env);
> --      if (new_size > export_env_size)
> --	{
> --	  export_env_size = new_size;
> --	  export_env = strvec_resize (export_env, export_env_size);
> --	  environ = export_env;
> --	}
> --      export_env[export_env_index = 0] = (char *)NULL;
> --
> --      /* Make a dummy variable context from the temporary_env, stick it on
> --	 the front of shell_variables, call make_var_export_array on the
> --	 whole thing to flatten it, and convert the list of SHELL_VAR *s
> --	 to the form needed by the environment. */
> --      if (temporary_env)
> --	{
> --	  tcxt = new_var_context ((char *)NULL, 0);
> --	  tcxt->table = temporary_env;
> --	  tcxt->down = shell_variables;
> --	}
> --      else
> --	tcxt = shell_variables;
> --      
> --      temp_array = make_var_export_array (tcxt);
> --      if (temp_array)
> --	add_temp_array_to_env (temp_array, 0, 0);
> --
> --      if (tcxt != shell_variables)
> --	free (tcxt);
> --
> --#if defined (RESTRICTED_SHELL)
> --      /* Restricted shells may not export shell functions. */
> --      temp_array = restricted ? (char **)0 : make_func_export_array ();
> --#else
> --      temp_array = make_func_export_array ();
> --#endif
> --      if (temp_array)
> --	add_temp_array_to_env (temp_array, 0, 0);
> --
> --      array_needs_making = 0;
> --    }
> --}
> --
> --/* This is an efficiency hack.  PWD and OLDPWD are auto-exported, so
> --   we will need to remake the exported environment every time we
> --   change directories.  `_' is always put into the environment for
> --   every external command, so without special treatment it will always
> --   cause the environment to be remade.
> --
> --   If there is no other reason to make the exported environment, we can
> --   just update the variables in place and mark the exported environment
> --   as no longer needing a remake. */
> --void
> --update_export_env_inplace (env_prefix, preflen, value)
> --     char *env_prefix;
> --     int preflen;
> --     char *value;
> --{
> --  char *evar;
> --
> --  evar = (char *)xmalloc (STRLEN (value) + preflen + 1);
> --  strcpy (evar, env_prefix);
> --  if (value)
> --    strcpy (evar + preflen, value);
> --  export_env = add_or_supercede_exported_var (evar, 0);
> --}
> --
> --/* We always put _ in the environment as the name of this command. */
> --void
> --put_command_name_into_env (command_name)
> --     char *command_name;
> --{
> --  update_export_env_inplace ("_=", 2, command_name);
> --}
> --
> --/* **************************************************************** */
> --/*								    */
> --/*		      Managing variable contexts		    */
> --/*								    */
> --/* **************************************************************** */
> --
> --/* Allocate and return a new variable context with NAME and FLAGS.
> --   NAME can be NULL. */
> --
> --VAR_CONTEXT *
> --new_var_context (name, flags)
> --     char *name;
> --     int flags;
> --{
> --  VAR_CONTEXT *vc;
> --
> --  vc = (VAR_CONTEXT *)xmalloc (sizeof (VAR_CONTEXT));
> --  vc->name = name ? savestring (name) : (char *)NULL;
> --  vc->scope = variable_context;
> --  vc->flags = flags;
> --
> --  vc->up = vc->down = (VAR_CONTEXT *)NULL;
> --  vc->table = (HASH_TABLE *)NULL;
> --
> --  return vc;
> --}
> --
> --/* Free a variable context and its data, including the hash table.  Dispose
> --   all of the variables. */
> --void
> --dispose_var_context (vc)
> --     VAR_CONTEXT *vc;
> --{
> --  FREE (vc->name);
> --
> --  if (vc->table)
> --    {
> --      delete_all_variables (vc->table);
> --      hash_dispose (vc->table);
> --    }
> --
> --  free (vc);
> --}
> --
> --/* Set VAR's scope level to the current variable context. */
> --static int
> --set_context (var)
> --     SHELL_VAR *var;
> --{
> --  return (var->context = variable_context);
> --}
> --
> --/* Make a new variable context with NAME and FLAGS and a HASH_TABLE of
> --   temporary variables, and push it onto shell_variables.  This is
> --   for shell functions. */
> --VAR_CONTEXT *
> --push_var_context (name, flags, tempvars)
> --     char *name;
> --     int flags;
> --     HASH_TABLE *tempvars;
> --{
> --  VAR_CONTEXT *vc;
> --
> --  vc = new_var_context (name, flags);
> --  vc->table = tempvars;
> --  if (tempvars)
> --    {
> --      /* Have to do this because the temp environment was created before
> --	 variable_context was incremented. */
> --      flatten (tempvars, set_context, (VARLIST *)NULL, 0);
> --      vc->flags |= VC_HASTMPVAR;
> --    }
> --  vc->down = shell_variables;
> --  shell_variables->up = vc;
> --
> --  return (shell_variables = vc);
> --}
> --
> --static void
> --push_func_var (data)
> --     PTR_T data;
> --{
> --  SHELL_VAR *var, *v;
> --
> --  var = (SHELL_VAR *)data;
> --
> --  if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate)))
> --    {
> --      /* Make sure we have a hash table to store the variable in while it is
> --	 being propagated down to the global variables table.  Create one if
> --	 we have to */
> --      if ((vc_isfuncenv (shell_variables) || vc_istempenv (shell_variables)) && shell_variables->table == 0)
> --	shell_variables->table = hash_create (0);
> --      /* XXX - should we set v->context here? */
> --      v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
> --      if (shell_variables == global_variables)
> --	var->attributes &= ~(att_tempvar|att_propagate);
> --      else
> --	shell_variables->flags |= VC_HASTMPVAR;
> --      v->attributes |= var->attributes;
> --    }
> --  else
> --    stupidly_hack_special_variables (var->name);	/* XXX */
> --
> --  dispose_variable (var);
> --}
> --
> --/* Pop the top context off of VCXT and dispose of it, returning the rest of
> --   the stack. */
> --void
> --pop_var_context ()
> --{
> --  VAR_CONTEXT *ret, *vcxt;
> --
> --  vcxt = shell_variables;
> --  if (vc_isfuncenv (vcxt) == 0)
> --    {
> --      internal_error (_("pop_var_context: head of shell_variables not a function context"));
> --      return;
> --    }
> --
> --  if (ret = vcxt->down)
> --    {
> --      ret->up = (VAR_CONTEXT *)NULL;
> --      shell_variables = ret;
> --      if (vcxt->table)
> --	hash_flush (vcxt->table, push_func_var);
> --      dispose_var_context (vcxt);
> --    }
> --  else
> --    internal_error (_("pop_var_context: no global_variables context"));
> --}
> --
> --/* Delete the HASH_TABLEs for all variable contexts beginning at VCXT, and
> --   all of the VAR_CONTEXTs except GLOBAL_VARIABLES. */
> --void
> --delete_all_contexts (vcxt)
> --     VAR_CONTEXT *vcxt;
> --{
> --  VAR_CONTEXT *v, *t;
> --
> --  for (v = vcxt; v != global_variables; v = t)
> --    {
> --      t = v->down;
> --      dispose_var_context (v);
> --    }    
> --
> --  delete_all_variables (global_variables->table);
> --  shell_variables = global_variables;
> --}
> --
> --/* **************************************************************** */
> --/*								    */
> --/*	   Pushing and Popping temporary variable scopes	    */
> --/*								    */
> --/* **************************************************************** */
> --
> --VAR_CONTEXT *
> --push_scope (flags, tmpvars)
> --     int flags;
> --     HASH_TABLE *tmpvars;
> --{
> --  return (push_var_context ((char *)NULL, flags, tmpvars));
> --}
> --
> --static void
> --push_exported_var (data)
> --     PTR_T data;
> --{
> --  SHELL_VAR *var, *v;
> --
> --  var = (SHELL_VAR *)data;
> --
> --  /* If a temp var had its export attribute set, or it's marked to be
> --     propagated, bind it in the previous scope before disposing it. */
> --  /* XXX - This isn't exactly right, because all tempenv variables have the
> --    export attribute set. */
> --#if 0
> --  if (exported_p (var) || (var->attributes & att_propagate))
> --#else
> --  if (tempvar_p (var) && exported_p (var) && (var->attributes & att_propagate))
> --#endif
> --    {
> --      var->attributes &= ~att_tempvar;		/* XXX */
> --      v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
> --      if (shell_variables == global_variables)
> --	var->attributes &= ~att_propagate;
> --      v->attributes |= var->attributes;
> --    }
> --  else
> --    stupidly_hack_special_variables (var->name);	/* XXX */
> --
> --  dispose_variable (var);
> --}
> --
> --void
> --pop_scope (is_special)
> --     int is_special;
> --{
> --  VAR_CONTEXT *vcxt, *ret;
> --
> --  vcxt = shell_variables;
> --  if (vc_istempscope (vcxt) == 0)
> --    {
> --      internal_error (_("pop_scope: head of shell_variables not a temporary environment scope"));
> --      return;
> --    }
> --
> --  ret = vcxt->down;
> --  if (ret)
> --    ret->up = (VAR_CONTEXT *)NULL;
> --
> --  shell_variables = ret;
> --
> --  /* Now we can take care of merging variables in VCXT into set of scopes
> --     whose head is RET (shell_variables). */
> --  FREE (vcxt->name);
> --  if (vcxt->table)
> --    {
> --      if (is_special)
> --	hash_flush (vcxt->table, push_func_var);
> --      else
> --	hash_flush (vcxt->table, push_exported_var);
> --      hash_dispose (vcxt->table);
> --    }
> --  free (vcxt);
> --
> --  sv_ifs ("IFS");	/* XXX here for now */
> --}
> --
> --/* **************************************************************** */
> --/*								    */
> --/*		 Pushing and Popping function contexts		    */
> --/*								    */
> --/* **************************************************************** */
> --
> --static WORD_LIST **dollar_arg_stack = (WORD_LIST **)NULL;
> --static int dollar_arg_stack_slots;
> --static int dollar_arg_stack_index;
> --
> --/* XXX - we might want to consider pushing and popping the `getopts' state
> --   when we modify the positional parameters. */
> --void
> --push_context (name, is_subshell, tempvars)
> --     char *name;	/* function name */
> --     int is_subshell;
> --     HASH_TABLE *tempvars;
> --{
> --  if (is_subshell == 0)
> --    push_dollar_vars ();
> --  variable_context++;
> --  push_var_context (name, VC_FUNCENV, tempvars);
> --}
> --
> --/* Only called when subshell == 0, so we don't need to check, and can
> --   unconditionally pop the dollar vars off the stack. */
> --void
> --pop_context ()
> --{
> --  pop_dollar_vars ();
> --  variable_context--;
> --  pop_var_context ();
> --
> --  sv_ifs ("IFS");		/* XXX here for now */
> --}
> --
> --/* Save the existing positional parameters on a stack. */
> --void
> --push_dollar_vars ()
> --{
> --  if (dollar_arg_stack_index + 2 > dollar_arg_stack_slots)
> --    {
> --      dollar_arg_stack = (WORD_LIST **)
> --	xrealloc (dollar_arg_stack, (dollar_arg_stack_slots += 10)
> --		  * sizeof (WORD_LIST *));
> --    }
> --  dollar_arg_stack[dollar_arg_stack_index++] = list_rest_of_args ();
> --  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
> --}
> --
> --/* Restore the positional parameters from our stack. */
> --void
> --pop_dollar_vars ()
> --{
> --  if (!dollar_arg_stack || dollar_arg_stack_index == 0)
> --    return;
> --
> --  remember_args (dollar_arg_stack[--dollar_arg_stack_index], 1);
> --  dispose_words (dollar_arg_stack[dollar_arg_stack_index]);
> --  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
> --  set_dollar_vars_unchanged ();
> --}
> --
> --void
> --dispose_saved_dollar_vars ()
> --{
> --  if (!dollar_arg_stack || dollar_arg_stack_index == 0)
> --    return;
> --
> --  dispose_words (dollar_arg_stack[dollar_arg_stack_index]);
> --  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
> --}
> --
> --/* Manipulate the special BASH_ARGV and BASH_ARGC variables. */
> --
> --void
> --push_args (list)
> --     WORD_LIST *list;
> --{
> --#if defined (ARRAY_VARS) && defined (DEBUGGER)
> --  SHELL_VAR *bash_argv_v, *bash_argc_v;
> --  ARRAY *bash_argv_a, *bash_argc_a;
> --  WORD_LIST *l;
> --  arrayind_t i;
> --  char *t;
> --
> --  GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a);
> --  GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a);
> --
> --  for (l = list, i = 0; l; l = l->next, i++)
> --    array_push (bash_argv_a, l->word->word);
> --
> --  t = itos (i);
> --  array_push (bash_argc_a, t);
> --  free (t);
> --#endif /* ARRAY_VARS && DEBUGGER */
> --}
> --
> --/* Remove arguments from BASH_ARGV array.  Pop top element off BASH_ARGC
> --   array and use that value as the count of elements to remove from
> --   BASH_ARGV. */
> --void
> --pop_args ()
> --{
> --#if defined (ARRAY_VARS) && defined (DEBUGGER)
> --  SHELL_VAR *bash_argv_v, *bash_argc_v;
> --  ARRAY *bash_argv_a, *bash_argc_a;
> --  ARRAY_ELEMENT *ce;
> --  intmax_t i;
> --
> --  GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a);
> --  GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a);
> --
> --  ce = array_shift (bash_argc_a, 1, 0);
> --  if (ce == 0 || legal_number (element_value (ce), &i) == 0)
> --    i = 0;
> --
> --  for ( ; i > 0; i--)
> --    array_pop (bash_argv_a);
> --  array_dispose_element (ce);
> --#endif /* ARRAY_VARS && DEBUGGER */
> --}
> --
> --/*************************************************
> -- *						 *
> -- *	Functions to manage special variables	 *
> -- *						 *
> -- *************************************************/
> --
> --/* Extern declarations for variables this code has to manage. */
> --extern int eof_encountered, eof_encountered_limit, ignoreeof;
> --
> --#if defined (READLINE)
> --extern int hostname_list_initialized;
> --#endif
> --
> --/* An alist of name.function for each special variable.  Most of the
> --   functions don't do much, and in fact, this would be faster with a
> --   switch statement, but by the end of this file, I am sick of switch
> --   statements. */
> --
> --#define SET_INT_VAR(name, intvar)  intvar = find_variable (name) != 0
> --
> --/* This table will be sorted with qsort() the first time it's accessed. */
> --struct name_and_function {
> --  char *name;
> --  sh_sv_func_t *function;
> --};
> --
> --static struct name_and_function special_vars[] = {
> --  { "BASH_COMPAT", sv_shcompat },
> --  { "BASH_XTRACEFD", sv_xtracefd },
> --
> --#if defined (JOB_CONTROL)
> --  { "CHILD_MAX", sv_childmax },
> --#endif
> --
> --#if defined (READLINE)
> --#  if defined (STRICT_POSIX)
> --  { "COLUMNS", sv_winsize },
> --#  endif
> --  { "COMP_WORDBREAKS", sv_comp_wordbreaks },
> --#endif
> --
> --  { "FUNCNEST", sv_funcnest },
> --
> --  { "GLOBIGNORE", sv_globignore },
> --
> --#if defined (HISTORY)
> --  { "HISTCONTROL", sv_history_control },
> --  { "HISTFILESIZE", sv_histsize },
> --  { "HISTIGNORE", sv_histignore },
> --  { "HISTSIZE", sv_histsize },
> --  { "HISTTIMEFORMAT", sv_histtimefmt },
> --#endif
> --
> --#if defined (__CYGWIN__)
> --  { "HOME", sv_home },
> --#endif
> --
> --#if defined (READLINE)
> --  { "HOSTFILE", sv_hostfile },
> --#endif
> --
> --  { "IFS", sv_ifs },
> --  { "IGNOREEOF", sv_ignoreeof },
> --
> --  { "LANG", sv_locale },
> --  { "LC_ALL", sv_locale },
> --  { "LC_COLLATE", sv_locale },
> --  { "LC_CTYPE", sv_locale },
> --  { "LC_MESSAGES", sv_locale },
> --  { "LC_NUMERIC", sv_locale },
> --  { "LC_TIME", sv_locale },
> --
> --#if defined (READLINE) && defined (STRICT_POSIX)
> --  { "LINES", sv_winsize },
> --#endif
> --
> --  { "MAIL", sv_mail },
> --  { "MAILCHECK", sv_mail },
> --  { "MAILPATH", sv_mail },
> --
> --  { "OPTERR", sv_opterr },
> --  { "OPTIND", sv_optind },
> --
> --  { "PATH", sv_path },
> --  { "POSIXLY_CORRECT", sv_strict_posix },
> --
> --#if defined (READLINE)
> --  { "TERM", sv_terminal },
> --  { "TERMCAP", sv_terminal },
> --  { "TERMINFO", sv_terminal },
> --#endif /* READLINE */
> --
> --  { "TEXTDOMAIN", sv_locale },
> --  { "TEXTDOMAINDIR", sv_locale },
> --
> --#if defined (HAVE_TZSET)
> --  { "TZ", sv_tz },
> --#endif
> --
> --#if defined (HISTORY) && defined (BANG_HISTORY)
> --  { "histchars", sv_histchars },
> --#endif /* HISTORY && BANG_HISTORY */
> --
> --  { "ignoreeof", sv_ignoreeof },
> --
> --  { (char *)0, (sh_sv_func_t *)0 }
> --};
> --
> --#define N_SPECIAL_VARS	(sizeof (special_vars) / sizeof (special_vars[0]) - 1)
> --
> --static int
> --sv_compare (sv1, sv2)
> --     struct name_and_function *sv1, *sv2;
> --{
> --  int r;
> --
> --  if ((r = sv1->name[0] - sv2->name[0]) == 0)
> --    r = strcmp (sv1->name, sv2->name);
> --  return r;
> --}
> --
> --static inline int
> --find_special_var (name)
> --     const char *name;
> --{
> --  register int i, r;
> --
> --  for (i = 0; special_vars[i].name; i++)
> --    {
> --      r = special_vars[i].name[0] - name[0];
> --      if (r == 0)
> --	r = strcmp (special_vars[i].name, name);
> --      if (r == 0)
> --	return i;
> --      else if (r > 0)
> --	/* Can't match any of rest of elements in sorted list.  Take this out
> --	   if it causes problems in certain environments. */
> --	break;
> --    }
> --  return -1;
> --}
> --
> --/* The variable in NAME has just had its state changed.  Check to see if it
> --   is one of the special ones where something special happens. */
> --void
> --stupidly_hack_special_variables (name)
> --     char *name;
> --{
> --  static int sv_sorted = 0;
> --  int i;
> --
> --  if (sv_sorted == 0)	/* shouldn't need, but it's fairly cheap. */
> --    {
> --      qsort (special_vars, N_SPECIAL_VARS, sizeof (special_vars[0]),
> --		(QSFUNC *)sv_compare);
> --      sv_sorted = 1;
> --    }
> --
> --  i = find_special_var (name);
> --  if (i != -1)
> --    (*(special_vars[i].function)) (name);
> --}
> --
> --/* Special variables that need hooks to be run when they are unset as part
> --   of shell reinitialization should have their sv_ functions run here. */
> --void
> --reinit_special_variables ()
> --{
> --#if defined (READLINE)
> --  sv_comp_wordbreaks ("COMP_WORDBREAKS");
> --#endif
> --  sv_globignore ("GLOBIGNORE");
> --  sv_opterr ("OPTERR");
> --}
> --
> --void
> --sv_ifs (name)
> --     char *name;
> --{
> --  SHELL_VAR *v;
> --
> --  v = find_variable ("IFS");
> --  setifs (v);
> --}
> --
> --/* What to do just after the PATH variable has changed. */
> --void
> --sv_path (name)
> --     char *name;
> --{
> --  /* hash -r */
> --  phash_flush ();
> --}
> --
> --/* What to do just after one of the MAILxxxx variables has changed.  NAME
> --   is the name of the variable.  This is called with NAME set to one of
> --   MAIL, MAILCHECK, or MAILPATH.  */
> --void
> --sv_mail (name)
> --     char *name;
> --{
> --  /* If the time interval for checking the files has changed, then
> --     reset the mail timer.  Otherwise, one of the pathname vars
> --     to the users mailbox has changed, so rebuild the array of
> --     filenames. */
> --  if (name[4] == 'C')  /* if (strcmp (name, "MAILCHECK") == 0) */
> --    reset_mail_timer ();
> --  else
> --    {
> --      free_mail_files ();
> --      remember_mail_dates ();
> --    }
> --}
> --
> --void
> --sv_funcnest (name)
> --     char *name;
> --{
> --  SHELL_VAR *v;
> --  intmax_t num;
> --
> --  v = find_variable (name);
> --  if (v == 0)
> --    funcnest_max = 0;
> --  else if (legal_number (value_cell (v), &num) == 0)
> --    funcnest_max = 0;
> --  else
> --    funcnest_max = num;
> --}
> --
> --/* What to do when GLOBIGNORE changes. */
> --void
> --sv_globignore (name)
> --     char *name;
> --{
> --  if (privileged_mode == 0)
> --    setup_glob_ignore (name);
> --}
> --
> --#if defined (READLINE)
> --void
> --sv_comp_wordbreaks (name)
> --     char *name;
> --{
> --  SHELL_VAR *sv;
> --
> --  sv = find_variable (name);
> --  if (sv == 0)
> --    reset_completer_word_break_chars ();
> --}
> --
> --/* What to do just after one of the TERMxxx variables has changed.
> --   If we are an interactive shell, then try to reset the terminal
> --   information in readline. */
> --void
> --sv_terminal (name)
> --     char *name;
> --{
> --  if (interactive_shell && no_line_editing == 0)
> --    rl_reset_terminal (get_string_value ("TERM"));
> --}
> --
> --void
> --sv_hostfile (name)
> --     char *name;
> --{
> --  SHELL_VAR *v;
> --
> --  v = find_variable (name);
> --  if (v == 0)
> --    clear_hostname_list ();
> --  else
> --    hostname_list_initialized = 0;
> --}
> --
> --#if defined (STRICT_POSIX)
> --/* In strict posix mode, we allow assignments to LINES and COLUMNS (and values
> --   found in the initial environment) to override the terminal size reported by
> --   the kernel. */
> --void
> --sv_winsize (name)
> --     char *name;
> --{
> --  SHELL_VAR *v;
> --  intmax_t xd;
> --  int d;
> --
> --  if (posixly_correct == 0 || interactive_shell == 0 || no_line_editing)
> --    return;
> --
> --  v = find_variable (name);
> --  if (v == 0 || var_isnull (v))
> --    rl_reset_screen_size ();
> --  else
> --    {
> --      if (legal_number (value_cell (v), &xd) == 0)
> --	return;
> --      winsize_assignment = 1;
> --      d = xd;			/* truncate */
> --      if (name[0] == 'L')	/* LINES */
> --	rl_set_screen_size (d, -1);
> --      else			/* COLUMNS */
> --	rl_set_screen_size (-1, d);
> --      winsize_assignment = 0;
> --    }
> --}
> --#endif /* STRICT_POSIX */
> --#endif /* READLINE */
> --
> --/* Update the value of HOME in the export environment so tilde expansion will
> --   work on cygwin. */
> --#if defined (__CYGWIN__)
> --sv_home (name)
> --     char *name;
> --{
> --  array_needs_making = 1;
> --  maybe_make_export_env ();
> --}
> --#endif
> --
> --#if defined (HISTORY)
> --/* What to do after the HISTSIZE or HISTFILESIZE variables change.
> --   If there is a value for this HISTSIZE (and it is numeric), then stifle
> --   the history.  Otherwise, if there is NO value for this variable,
> --   unstifle the history.  If name is HISTFILESIZE, and its value is
> --   numeric, truncate the history file to hold no more than that many
> --   lines. */
> --void
> --sv_histsize (name)
> --     char *name;
> --{
> --  char *temp;
> --  intmax_t num;
> --  int hmax;
> --
> --  temp = get_string_value (name);
> --
> --  if (temp && *temp)
> --    {
> --      if (legal_number (temp, &num))
> --	{
> --	  hmax = num;
> --	  if (hmax < 0 && name[4] == 'S')
> --	    unstifle_history ();	/* unstifle history if HISTSIZE < 0 */
> --	  else if (name[4] == 'S')
> --	    {
> --	      stifle_history (hmax);
> --	      hmax = where_history ();
> --	      if (history_lines_this_session > hmax)
> --		history_lines_this_session = hmax;
> --	    }
> --	  else if (hmax >= 0)	/* truncate HISTFILE if HISTFILESIZE >= 0 */
> --	    {
> --	      history_truncate_file (get_string_value ("HISTFILE"), hmax);
> --	      if (hmax <= history_lines_in_file)
> --		history_lines_in_file = hmax;
> --	    }
> --	}
> --    }
> --  else if (name[4] == 'S')
> --    unstifle_history ();
> --}
> --
> --/* What to do after the HISTIGNORE variable changes. */
> --void
> --sv_histignore (name)
> --     char *name;
> --{
> --  setup_history_ignore (name);
> --}
> --
> --/* What to do after the HISTCONTROL variable changes. */
> --void
> --sv_history_control (name)
> --     char *name;
> --{
> --  char *temp;
> --  char *val;
> --  int tptr;
> --
> --  history_control = 0;
> --  temp = get_string_value (name);
> --
> --  if (temp == 0 || *temp == 0)
> --    return;
> --
> --  tptr = 0;
> --  while (val = extract_colon_unit (temp, &tptr))
> --    {
> --      if (STREQ (val, "ignorespace"))
> --	history_control |= HC_IGNSPACE;
> --      else if (STREQ (val, "ignoredups"))
> --	history_control |= HC_IGNDUPS;
> --      else if (STREQ (val, "ignoreboth"))
> --	history_control |= HC_IGNBOTH;
> --      else if (STREQ (val, "erasedups"))
> --	history_control |= HC_ERASEDUPS;
> --
> --      free (val);
> --    }
> --}
> --
> --#if defined (BANG_HISTORY)
> --/* Setting/unsetting of the history expansion character. */
> --void
> --sv_histchars (name)
> --     char *name;
> --{
> --  char *temp;
> --
> --  temp = get_string_value (name);
> --  if (temp)
> --    {
> --      history_expansion_char = *temp;
> --      if (temp[0] && temp[1])
> --	{
> --	  history_subst_char = temp[1];
> --	  if (temp[2])
> --	      history_comment_char = temp[2];
> --	}
> --    }
> --  else
> --    {
> --      history_expansion_char = '!';
> --      history_subst_char = '^';
> --      history_comment_char = '#';
> --    }
> --}
> --#endif /* BANG_HISTORY */
> --
> --void
> --sv_histtimefmt (name)
> --     char *name;
> --{
> --  SHELL_VAR *v;
> --
> --  if (v = find_variable (name))
> --    {
> --      if (history_comment_char == 0)
> --	history_comment_char = '#';
> --    }
> --  history_write_timestamps = (v != 0);
> --}
> --#endif /* HISTORY */
> --
> --#if defined (HAVE_TZSET)
> --void
> --sv_tz (name)
> --     char *name;
> --{
> --  if (chkexport (name))
> --    tzset ();
> --}
> --#endif
> --
> --/* If the variable exists, then the value of it can be the number
> --   of times we actually ignore the EOF.  The default is small,
> --   (smaller than csh, anyway). */
> --void
> --sv_ignoreeof (name)
> --     char *name;
> --{
> --  SHELL_VAR *tmp_var;
> --  char *temp;
> --
> --  eof_encountered = 0;
> --
> --  tmp_var = find_variable (name);
> --  ignoreeof = tmp_var != 0;
> --  temp = tmp_var ? value_cell (tmp_var) : (char *)NULL;
> --  if (temp)
> --    eof_encountered_limit = (*temp && all_digits (temp)) ? atoi (temp) : 10;
> --  set_shellopts ();	/* make sure `ignoreeof' is/is not in $SHELLOPTS */
> --}
> --
> --void
> --sv_optind (name)
> --     char *name;
> --{
> --  char *tt;
> --  int s;
> --
> --  tt = get_string_value ("OPTIND");
> --  if (tt && *tt)
> --    {
> --      s = atoi (tt);
> --
> --      /* According to POSIX, setting OPTIND=1 resets the internal state
> --	 of getopt (). */
> --      if (s < 0 || s == 1)
> --	s = 0;
> --    }
> --  else
> --    s = 0;
> --  getopts_reset (s);
> --}
> --
> --void
> --sv_opterr (name)
> --     char *name;
> --{
> --  char *tt;
> --
> --  tt = get_string_value ("OPTERR");
> --  sh_opterr = (tt && *tt) ? atoi (tt) : 1;
> --}
> --
> --void
> --sv_strict_posix (name)
> --     char *name;
> --{
> --  SET_INT_VAR (name, posixly_correct);
> --  posix_initialize (posixly_correct);
> --#if defined (READLINE)
> --  if (interactive_shell)
> --    posix_readline_initialize (posixly_correct);
> --#endif /* READLINE */
> --  set_shellopts ();	/* make sure `posix' is/is not in $SHELLOPTS */
> --}
> --
> --void
> --sv_locale (name)
> --     char *name;
> --{
> --  char *v;
> --  int r;
> --
> --  v = get_string_value (name);
> --  if (name[0] == 'L' && name[1] == 'A')	/* LANG */
> --    r = set_lang (name, v);
> --  else
> --    r = set_locale_var (name, v);		/* LC_*, TEXTDOMAIN* */
> --
> --#if 1
> --  if (r == 0 && posixly_correct)
> --    last_command_exit_value = 1;
> --#endif
> --}
> --
> --#if defined (ARRAY_VARS)
> --void
> --set_pipestatus_array (ps, nproc)
> --     int *ps;
> --     int nproc;
> --{
> --  SHELL_VAR *v;
> --  ARRAY *a;
> --  ARRAY_ELEMENT *ae;
> --  register int i;
> --  char *t, tbuf[INT_STRLEN_BOUND(int) + 1];
> --
> --  v = find_variable ("PIPESTATUS");
> --  if (v == 0)
> --    v = make_new_array_variable ("PIPESTATUS");
> --  if (array_p (v) == 0)
> --    return;		/* Do nothing if not an array variable. */
> --  a = array_cell (v);
> --
> --  if (a == 0 || array_num_elements (a) == 0)
> --    {
> --      for (i = 0; i < nproc; i++)	/* was ps[i] != -1, not i < nproc */
> --	{
> --	  t = inttostr (ps[i], tbuf, sizeof (tbuf));
> --	  array_insert (a, i, t);
> --	}
> --      return;
> --    }
> --
> --  /* Fast case */
> --  if (array_num_elements (a) == nproc && nproc == 1)
> --    {
> --      ae = element_forw (a->head);
> --      free (element_value (ae));
> --      ae->value = itos (ps[0]);
> --    }
> --  else if (array_num_elements (a) <= nproc)
> --    {
> --      /* modify in array_num_elements members in place, then add */
> --      ae = a->head;
> --      for (i = 0; i < array_num_elements (a); i++)
> --	{
> --	  ae = element_forw (ae);
> --	  free (element_value (ae));
> --	  ae->value = itos (ps[i]);
> --	}
> --      /* add any more */
> --      for ( ; i < nproc; i++)
> --	{
> --	  t = inttostr (ps[i], tbuf, sizeof (tbuf));
> --	  array_insert (a, i, t);
> --	}
> --    }
> --  else
> --    {
> --      /* deleting elements.  it's faster to rebuild the array. */	  
> --      array_flush (a);
> --      for (i = 0; ps[i] != -1; i++)
> --	{
> --	  t = inttostr (ps[i], tbuf, sizeof (tbuf));
> --	  array_insert (a, i, t);
> --	}
> --    }
> --}
> --
> --ARRAY *
> --save_pipestatus_array ()
> --{
> --  SHELL_VAR *v;
> --  ARRAY *a, *a2;
> --
> --  v = find_variable ("PIPESTATUS");
> --  if (v == 0 || array_p (v) == 0 || array_cell (v) == 0)
> --    return ((ARRAY *)NULL);
> --    
> --  a = array_cell (v);
> --  a2 = array_copy (array_cell (v));
> --
> --  return a2;
> --}
> --
> --void
> --restore_pipestatus_array (a)
> --     ARRAY *a;
> --{
> --  SHELL_VAR *v;
> --  ARRAY *a2;
> --
> --  v = find_variable ("PIPESTATUS");
> --  /* XXX - should we still assign even if existing value is NULL? */
> --  if (v == 0 || array_p (v) == 0 || array_cell (v) == 0)
> --    return;
> --
> --  a2 = array_cell (v);
> --  var_setarray (v, a); 
> --
> --  array_dispose (a2);
> --}
> --#endif
> --
> --void
> --set_pipestatus_from_exit (s)
> --     int s;
> --{
> --#if defined (ARRAY_VARS)
> --  static int v[2] = { 0, -1 };
> --
> --  v[0] = s;
> --  set_pipestatus_array (v, 1);
> --#endif
> --}
> --
> --void
> --sv_xtracefd (name)
> --     char *name;
> --{
> --  SHELL_VAR *v;
> --  char *t, *e;
> --  int fd;
> --  FILE *fp;
> --
> --  v = find_variable (name);
> --  if (v == 0)
> --    {
> --      xtrace_reset ();
> --      return;
> --    }
> --
> --  t = value_cell (v);
> --  if (t == 0 || *t == 0)
> --    xtrace_reset ();
> --  else
> --    {
> --      fd = (int)strtol (t, &e, 10);
> --      if (e != t && *e == '\0' && sh_validfd (fd))
> --	{
> --	  fp = fdopen (fd, "w");
> --	  if (fp == 0)
> --	    internal_error (_("%s: %s: cannot open as FILE"), name, value_cell (v));
> --	  else
> --	    xtrace_set (fd, fp);
> --	}
> --      else
> --	internal_error (_("%s: %s: invalid value for trace file descriptor"), name, value_cell (v));
> --    }
> --}
> --
> --#define MIN_COMPAT_LEVEL 31
> --
> --void
> --sv_shcompat (name)
> --     char *name;
> --{
> --  SHELL_VAR *v;
> --  char *val;
> --  int tens, ones, compatval;
> --
> --  v = find_variable (name);
> --  if (v == 0)
> --    {
> --      shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
> --      set_compatibility_opts ();
> --      return;
> --    }
> --  val = value_cell (v);
> --  if (val == 0 || *val == '\0')
> --    {
> --      shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
> --      set_compatibility_opts ();
> --      return;
> --    }
> --  /* Handle decimal-like compatibility version specifications: 4.2 */
> --  if (isdigit (val[0]) && val[1] == '.' && isdigit (val[2]) && val[3] == 0)
> --    {
> --      tens = val[0] - '0';
> --      ones = val[2] - '0';
> --      compatval = tens*10 + ones;
> --    }
> --  /* Handle integer-like compatibility version specifications: 42 */
> --  else if (isdigit (val[0]) && isdigit (val[1]) && val[2] == 0)
> --    {
> --      tens = val[0] - '0';
> --      ones = val[1] - '0';
> --      compatval = tens*10 + ones;
> --    }
> --  else
> --    {
> --compat_error:
> --      internal_error (_("%s: %s: compatibility value out of range"), name, val);
> --      shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
> --      set_compatibility_opts ();
> --      return;
> --    }
> --
> --  if (compatval < MIN_COMPAT_LEVEL || compatval > DEFAULT_COMPAT_LEVEL)
> --    goto compat_error;
> --
> --  shell_compatibility_level = compatval;
> --  set_compatibility_opts ();
> --}
> --
> --#if defined (JOB_CONTROL)
> --void
> --sv_childmax (name)
> --     char *name;
> --{
> --  char *tt;
> --  int s;
> --
> --  tt = get_string_value (name);
> --  s = (tt && *tt) ? atoi (tt) : 0;
> --  set_maxchild (s);
> --}
> --#endif
> diff --git a/patches/bash-4.3.30/0003-Bash-4.3-patch-33.patch b/patches/bash-4.3.30/0003-Bash-4.3-patch-33.patch
> deleted file mode 100644
> index cda179735..000000000
> --- a/patches/bash-4.3.30/0003-Bash-4.3-patch-33.patch
> +++ /dev/null
> @@ -1,204 +0,0 @@
> -From: Chet Ramey <chet.ramey@case.edu>
> -Date: Thu, 15 Jan 2015 10:21:08 -0500
> -Subject: [PATCH] Bash-4.3 patch 33
> -
> ----
> - bashline.c        |  6 ++++--
> - builtins/common.h |  4 ++++
> - builtins/read.def | 31 ++++++++++++++++++++++++++++---
> - patchlevel.h      |  2 +-
> - shell.c           |  9 +++++++++
> - sig.c             |  6 ++++--
> - 6 files changed, 50 insertions(+), 8 deletions(-)
> -
> -diff --git a/bashline.c b/bashline.c
> -index 77ca033f2cc8..c87415171a4a 100644
> ---- a/bashline.c
> -+++ b/bashline.c
> -@@ -202,6 +202,7 @@ extern int current_command_line_count, saved_command_line_count;
> - extern int last_command_exit_value;
> - extern int array_needs_making;
> - extern int posixly_correct, no_symbolic_links;
> -+extern int sigalrm_seen;
> - extern char *current_prompt_string, *ps1_prompt;
> - extern STRING_INT_ALIST word_token_alist[];
> - extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;
> -@@ -4208,8 +4209,9 @@ bash_event_hook ()
> - {
> -   /* If we're going to longjmp to top_level, make sure we clean up readline.
> -      check_signals will call QUIT, which will eventually longjmp to top_level,
> --     calling run_interrupt_trap along the way. */
> --  if (interrupt_state)
> -+     calling run_interrupt_trap along the way.  The check for sigalrm_seen is
> -+     to clean up the read builtin's state. */
> -+  if (terminating_signal || interrupt_state || sigalrm_seen)
> -     rl_cleanup_after_signal ();
> -   bashline_reset_event_hook ();
> -   check_signals_and_traps ();	/* XXX */
> -diff --git a/builtins/common.h b/builtins/common.h
> -index cae16b10fb65..a1298cb9c84a 100644
> ---- a/builtins/common.h
> -+++ b/builtins/common.h
> -@@ -122,6 +122,10 @@ extern void bash_logout __P((void));
> - /* Functions from getopts.def */
> - extern void getopts_reset __P((int));
> - 
> -+/* Functions from read.def */
> -+extern void read_tty_cleanup __P((void));
> -+extern int read_tty_modified __P((void));
> -+
> - /* Functions from set.def */
> - extern int minus_o_option_value __P((char *));
> - extern void list_minus_o_opts __P((int, int));
> -diff --git a/builtins/read.def b/builtins/read.def
> -index 43971544d081..56c23010bbe8 100644
> ---- a/builtins/read.def
> -+++ b/builtins/read.def
> -@@ -140,10 +140,12 @@ static void reset_alarm __P((void));
> - procenv_t alrmbuf;
> - int sigalrm_seen;
> - 
> --static int reading;
> -+static int reading, tty_modified;
> - static SigHandler *old_alrm;
> - static unsigned char delim;
> - 
> -+static struct ttsave termsave;
> -+
> - /* In all cases, SIGALRM just sets a flag that we check periodically.  This
> -    avoids problems with the semi-tricky stuff we do with the xfree of
> -    input_string at the top of the unwind-protect list (see below). */
> -@@ -188,7 +190,6 @@ read_builtin (list)
> -   struct stat tsb;
> -   SHELL_VAR *var;
> -   TTYSTRUCT ttattrs, ttset;
> --  struct ttsave termsave;
> - #if defined (ARRAY_VARS)
> -   WORD_LIST *alist;
> - #endif
> -@@ -221,7 +222,7 @@ read_builtin (list)
> -   USE_VAR(ps2);
> -   USE_VAR(lastsig);
> - 
> --  sigalrm_seen = reading = 0;
> -+  sigalrm_seen = reading = tty_modified = 0;
> - 
> -   i = 0;		/* Index into the string that we are reading. */
> -   raw = edit = 0;	/* Not reading raw input by default. */
> -@@ -438,6 +439,8 @@ read_builtin (list)
> - 	  retval = 128+SIGALRM;
> - 	  goto assign_vars;
> - 	}
> -+      if (interactive_shell == 0)
> -+	initialize_terminating_signals ();
> -       old_alrm = set_signal_handler (SIGALRM, sigalrm);
> -       add_unwind_protect (reset_alarm, (char *)NULL);
> - #if defined (READLINE)
> -@@ -482,7 +485,10 @@ read_builtin (list)
> - 	  i = silent ? ttfd_cbreak (fd, &ttset) : ttfd_onechar (fd, &ttset);
> - 	  if (i < 0)
> - 	    sh_ttyerror (1);
> -+	  tty_modified = 1;
> - 	  add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
> -+	  if (interactive_shell == 0)
> -+	    initialize_terminating_signals ();
> - 	}
> -     }
> -   else if (silent)	/* turn off echo but leave term in canonical mode */
> -@@ -497,7 +503,10 @@ read_builtin (list)
> -       if (i < 0)
> - 	sh_ttyerror (1);
> - 
> -+      tty_modified = 1;
> -       add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
> -+      if (interactive_shell == 0)
> -+	initialize_terminating_signals ();
> -     }
> - 
> -   /* This *must* be the top unwind-protect on the stack, so the manipulation
> -@@ -588,6 +597,8 @@ read_builtin (list)
> - 	    }
> - 	  else
> - 	    lastsig = 0;
> -+	  if (terminating_signal && tty_modified)
> -+	    ttyrestore (&termsave);	/* fix terminal before exiting */
> - 	  CHECK_TERMSIG;
> - 	  eof = 1;
> - 	  break;
> -@@ -978,6 +989,20 @@ ttyrestore (ttp)
> -      struct ttsave *ttp;
> - {
> -   ttsetattr (ttp->fd, ttp->attrs);
> -+  tty_modified = 0;
> -+}
> -+
> -+void
> -+read_tty_cleanup ()
> -+{
> -+  if (tty_modified)
> -+    ttyrestore (&termsave);
> -+}
> -+
> -+int
> -+read_tty_modified ()
> -+{
> -+  return (tty_modified);
> - }
> - 
> - #if defined (READLINE)
> -diff --git a/patchlevel.h b/patchlevel.h
> -index b8bf38704ed2..cefe6bdd3a13 100644
> ---- a/patchlevel.h
> -+++ b/patchlevel.h
> -@@ -25,6 +25,6 @@
> -    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
> -    looks for to find the patch level (for the sccs version string). */
> - 
> --#define PATCHLEVEL 32
> -+#define PATCHLEVEL 33
> - 
> - #endif /* _PATCHLEVEL_H_ */
> -diff --git a/shell.c b/shell.c
> -index bbc8a66cc2eb..2fd8179ba10d 100644
> ---- a/shell.c
> -+++ b/shell.c
> -@@ -73,6 +73,7 @@
> - #endif
> - 
> - #if defined (READLINE)
> -+#  include <readline/readline.h>
> - #  include "bashline.h"
> - #endif
> - 
> -@@ -909,6 +910,14 @@ exit_shell (s)
> -   fflush (stdout);		/* XXX */
> -   fflush (stderr);
> - 
> -+  /* Clean up the terminal if we are in a state where it's been modified. */
> -+#if defined (READLINE)
> -+  if (RL_ISSTATE (RL_STATE_TERMPREPPED) && rl_deprep_term_function)
> -+    (*rl_deprep_term_function) ();
> -+#endif
> -+  if (read_tty_modified ())
> -+    read_tty_cleanup ();
> -+
> -   /* Do trap[0] if defined.  Allow it to override the exit status
> -      passed to us. */
> -   if (signal_is_trapped (0))
> -diff --git a/sig.c b/sig.c
> -index 3b62ea5d7c5d..8bc45c17f478 100644
> ---- a/sig.c
> -+++ b/sig.c
> -@@ -532,8 +532,10 @@ termsig_sighandler (sig)
> - #if defined (READLINE)
> -   /* Set the event hook so readline will call it after the signal handlers
> -      finish executing, so if this interrupted character input we can get
> --     quick response. */
> --  if (interactive_shell && interactive && no_line_editing == 0)
> -+     quick response.  If readline is active or has modified the terminal we
> -+     need to set this no matter what the signal is, though the check for
> -+     RL_STATE_TERMPREPPED is possibly redundant. */
> -+  if (RL_ISSTATE (RL_STATE_SIGHANDLER) || RL_ISSTATE (RL_STATE_TERMPREPPED))
> -     bashline_set_event_hook ();
> - #endif
> - 
> diff --git a/patches/bash-4.3.30/series b/patches/bash-4.3.30/series
> deleted file mode 100644
> index 2e1fdf17f..000000000
> --- a/patches/bash-4.3.30/series
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -# generated by git-ptx-patches
> -#tag:base --start-number 1
> -0001-Bash-4.3-patch-31.patch
> -0002-Bash-4.3-patch-32.patch
> -0003-Bash-4.3-patch-33.patch
> -# 602897f584d96d29536a2fa60f8d5e23  - git-ptx-patches magic
> diff --git a/patches/bash-5.1.8/0001-Bash-5.1-patch-12.patch b/patches/bash-5.1.8/0001-Bash-5.1-patch-12.patch
> new file mode 100644
> index 000000000..ef8b6ae7f
> --- /dev/null
> +++ b/patches/bash-5.1.8/0001-Bash-5.1-patch-12.patch
> @@ -0,0 +1,262 @@
> +diff -urN bash-5.1.8.orig/builtins/wait.def bash-5.1.8/builtins/wait.def
> +--- bash-5.1.8.orig/builtins/wait.def	2021-12-21 12:57:08.083139502 +0100
> ++++ bash-5.1.8/builtins/wait.def	2021-12-21 12:58:24.304849937 +0100
> +@@ -111,7 +111,8 @@
> + wait_builtin (list)
> +      WORD_LIST *list;
> + {
> +-  int status, code, opt, nflag, wflags;
> ++  int status, code, opt, nflag;
> ++  volatile int wflags;
> +   char *vname;
> +   SHELL_VAR *pidvar;
> +   struct procstat pstat;
> +@@ -180,6 +181,8 @@
> +       last_command_exit_signal = wait_signal_received;
> +       status = 128 + wait_signal_received;
> +       wait_sigint_cleanup ();
> ++      if (wflags & JWAIT_WAITING)
> ++	unset_waitlist ();
> +       WAIT_RETURN (status);
> +     }
> + 
> +diff -urN bash-5.1.8.orig/command.h bash-5.1.8/command.h
> +--- bash-5.1.8.orig/command.h	2021-12-21 12:57:08.099139862 +0100
> ++++ bash-5.1.8/command.h	2021-12-21 12:58:27.760927380 +0100
> +@@ -124,6 +124,7 @@
> + #define SUBSHELL_PROCSUB 0x20	/* subshell caused by <(command) or >(command) */
> + #define SUBSHELL_COPROC	0x40	/* subshell from a coproc pipeline */
> + #define SUBSHELL_RESETTRAP 0x80	/* subshell needs to reset trap strings on first call to trap */
> ++#define SUBSHELL_IGNTRAP 0x100  /* subshell should reset trapped signals from trap_handler */
> + 
> + /* A structure which represents a word. */
> + typedef struct word_desc {
> +diff -urN bash-5.1.8.orig/execute_cmd.c bash-5.1.8/execute_cmd.c
> +--- bash-5.1.8.orig/execute_cmd.c	2021-12-21 12:57:08.091139683 +0100
> ++++ bash-5.1.8/execute_cmd.c	2021-12-21 12:58:27.764927470 +0100
> +@@ -1547,6 +1547,9 @@
> +   clear_pending_traps ();
> +   reset_signal_handlers ();
> +   subshell_environment |= SUBSHELL_RESETTRAP;
> ++  /* Note that signal handlers have been reset, so we should no longer
> ++    reset the handler and resend trapped signals to ourselves. */
> ++  subshell_environment &= ~SUBSHELL_IGNTRAP;
> + 
> +   /* We are in a subshell, so forget that we are running a trap handler or
> +      that the signal handler has changed (we haven't changed it!) */
> +@@ -4320,7 +4323,8 @@
> + 	  already_forked = 1;
> + 	  cmdflags |= CMD_NO_FORK;
> + 
> +-	  subshell_environment = SUBSHELL_FORK;		/* XXX */
> ++	  /* We redo some of what make_child() does with SUBSHELL_IGNTRAP */
> ++	  subshell_environment = SUBSHELL_FORK|SUBSHELL_IGNTRAP;	/* XXX */
> + 	  if (pipe_in != NO_PIPE || pipe_out != NO_PIPE)
> + 	    subshell_environment |= SUBSHELL_PIPE;
> + 	  if (async)
> +@@ -4574,6 +4578,7 @@
> + 	     trap strings if we run trap to change a signal disposition. */
> + 	  reset_signal_handlers ();
> + 	  subshell_environment |= SUBSHELL_RESETTRAP;
> ++	  subshell_environment &= ~SUBSHELL_IGNTRAP;
> + 
> + 	  if (async)
> + 	    {
> +@@ -5514,6 +5519,7 @@
> +       reset_terminating_signals ();	/* XXX */
> +       /* Cancel traps, in trap.c. */
> +       restore_original_signals ();
> ++      subshell_environment &= ~SUBSHELL_IGNTRAP;
> + 
> + #if defined (JOB_CONTROL)
> +       FREE (p);
> +diff -urN bash-5.1.8.orig/jobs.c bash-5.1.8/jobs.c
> +--- bash-5.1.8.orig/jobs.c	2021-12-21 12:57:08.091139683 +0100
> ++++ bash-5.1.8/jobs.c	2021-12-21 12:58:27.764927470 +0100
> +@@ -2217,6 +2217,8 @@
> + 	 signals to the default state for a new process. */
> +       pid_t mypid;
> + 
> ++      subshell_environment |= SUBSHELL_IGNTRAP;
> ++
> +       /* If this ends up being changed to modify or use `command' in the
> + 	 child process, go back and change callers who free `command' in
> + 	 the child process when this returns. */
> +diff -urN bash-5.1.8.orig/lib/malloc/malloc.c bash-5.1.8/lib/malloc/malloc.c
> +--- bash-5.1.8.orig/lib/malloc/malloc.c	2021-12-21 12:57:08.095139773 +0100
> ++++ bash-5.1.8/lib/malloc/malloc.c	2021-12-21 12:58:22.200802784 +0100
> +@@ -1286,13 +1286,12 @@
> +       p = (union mhead *) ap - 1;
> +     }
> + 
> +-  /* XXX - should we return 0 if ISFREE? */
> +-  maxbytes = binsize(p->mh_index);
> +-
> +-  /* So the usable size is the maximum number of bytes in the bin less the
> +-     malloc overhead */
> +-  maxbytes -= MOVERHEAD + MSLOP;
> +-  return (maxbytes);
> ++  /* return 0 if ISFREE */
> ++  if (p->mh_alloc == ISFREE)
> ++    return 0;
> ++  
> ++  /* Since we use bounds checking, the usable size is the last requested size. */
> ++  return (p->mh_nbytes);
> + }
> + 
> + #if !defined (NO_VALLOC)
> +diff -urN bash-5.1.8.orig/nojobs.c bash-5.1.8/nojobs.c
> +--- bash-5.1.8.orig/nojobs.c	2021-12-21 12:57:08.091139683 +0100
> ++++ bash-5.1.8/nojobs.c	2021-12-21 12:58:27.764927470 +0100
> +@@ -575,6 +575,8 @@
> + 	last_asynchronous_pid = getpid ();
> + #endif
> + 
> ++      subshell_environment |= SUBSHELL_IGNTRAP;
> ++
> +       default_tty_job_signals ();
> +     }
> +   else
> +diff -urN bash-5.1.8.orig/parse.y bash-5.1.8/parse.y
> +--- bash-5.1.8.orig/parse.y	2021-12-21 12:57:08.099139862 +0100
> ++++ bash-5.1.8/parse.y	2021-12-21 12:58:26.112890455 +0100
> +@@ -6493,10 +6493,8 @@
> +   old_expand_aliases = expand_aliases;
> + 
> +   push_stream (1);
> +-#if 0 /* TAG: bash-5.2 Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com> 11/17/2020 */
> +   if (ea = expanding_alias ())
> +     parser_save_alias ();
> +-#endif
> +   last_read_token = WORD;		/* WORD to allow reserved words here */
> +   current_command_line_count = 0;
> +   echo_input_at_read = expand_aliases = 0;
> +@@ -6531,10 +6529,8 @@
> +   last_read_token = '\n';
> +   pop_stream ();
> + 
> +-#if 0 /* TAG: bash-5.2 */
> +   if (ea)
> +     parser_restore_alias ();
> +-#endif
> + 
> + #if defined (HISTORY)
> +   remember_on_history = old_remember_on_history;
> +diff -urN bash-5.1.8.orig/patchlevel.h bash-5.1.8/patchlevel.h
> +--- bash-5.1.8.orig/patchlevel.h	2021-12-21 12:57:08.075139321 +0100
> ++++ bash-5.1.8/patchlevel.h	2021-12-21 12:58:27.764927470 +0100
> +@@ -25,6 +25,6 @@
> +    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
> +    looks for to find the patch level (for the sccs version string). */
> + 
> +-#define PATCHLEVEL 8
> ++#define PATCHLEVEL 12
> + 
> + #endif /* _PATCHLEVEL_H_ */
> +diff -urN bash-5.1.8.orig/sig.c bash-5.1.8/sig.c
> +--- bash-5.1.8.orig/sig.c	2021-12-21 12:57:08.071139231 +0100
> ++++ bash-5.1.8/sig.c	2021-12-21 12:58:27.764927470 +0100
> +@@ -55,7 +55,8 @@
> + #  include "bashhist.h"
> + #endif
> + 
> +-extern void initialize_siglist ();
> ++extern void initialize_siglist PARAMS((void));
> ++extern void set_original_signal PARAMS((int, SigHandler *));
> + 
> + #if !defined (JOB_CONTROL)
> + extern void initialize_job_signals PARAMS((void));
> +@@ -255,6 +256,13 @@
> +       sigaction (XSIG (i), &act, &oact);
> +       XHANDLER(i) = oact.sa_handler;
> +       XSAFLAGS(i) = oact.sa_flags;
> ++
> ++#if 0
> ++      set_original_signal (XSIG(i), XHANDLER(i));	/* optimization */
> ++#else
> ++      set_original_signal (XSIG(i), act.sa_handler);	/* optimization */
> ++#endif
> ++
> +       /* Don't do anything with signals that are ignored at shell entry
> + 	 if the shell is not interactive. */
> +       /* XXX - should we do this for interactive shells, too? */
> +diff -urN bash-5.1.8.orig/subst.c bash-5.1.8/subst.c
> +--- bash-5.1.8.orig/subst.c	2021-12-21 12:57:08.099139862 +0100
> ++++ bash-5.1.8/subst.c	2021-12-21 12:58:27.764927470 +0100
> +@@ -5951,6 +5951,7 @@
> +       free_pushed_string_input ();
> +       /* Cancel traps, in trap.c. */
> +       restore_original_signals ();	/* XXX - what about special builtins? bash-4.2 */
> ++      subshell_environment &= ~SUBSHELL_IGNTRAP;
> +       QUIT;	/* catch any interrupts we got post-fork */
> +       setup_async_signals ();
> + #if 0
> +@@ -6382,6 +6383,7 @@
> + 	}	
> +       QUIT;	/* catch any interrupts we got post-fork */
> +       subshell_environment |= SUBSHELL_RESETTRAP;
> ++      subshell_environment &= ~SUBSHELL_IGNTRAP;
> +     }
> + 
> + #if defined (JOB_CONTROL)
> +diff -urN bash-5.1.8.orig/trap.c bash-5.1.8/trap.c
> +--- bash-5.1.8.orig/trap.c	2021-12-21 12:57:08.083139502 +0100
> ++++ bash-5.1.8/trap.c	2021-12-21 12:58:27.764927470 +0100
> +@@ -481,6 +481,32 @@
> +       SIGRETURN (0);
> +     }
> + 
> ++  /* This means we're in a subshell, but have not yet reset the handler for
> ++     trapped signals. We're not supposed to execute the trap in this situation;
> ++     we should restore the original signal and resend the signal to ourselves
> ++     to preserve the Posix "signal traps that are not being ignored shall be
> ++     set to the default action" semantics. */
> ++  if ((subshell_environment & SUBSHELL_IGNTRAP) && trap_list[sig] != (char *)IGNORE_SIG)
> ++    {
> ++      sigset_t mask;
> ++
> ++      /* Paranoia */
> ++      if (original_signals[sig] == IMPOSSIBLE_TRAP_HANDLER)
> ++	original_signals[sig] = SIG_DFL;
> ++
> ++      restore_signal (sig);
> ++
> ++      /* Make sure we let the signal we just caught through */
> ++      sigemptyset (&mask);
> ++      sigprocmask (SIG_SETMASK, (sigset_t *)NULL, &mask);
> ++      sigdelset (&mask, sig);
> ++      sigprocmask (SIG_SETMASK, &mask, (sigset_t *)NULL);
> ++
> ++      kill (getpid (), sig);
> ++
> ++      SIGRETURN (0);
> ++    }
> ++
> +   if ((sig >= NSIG) ||
> +       (trap_list[sig] == (char *)DEFAULT_SIG) ||
> +       (trap_list[sig] == (char *)IGNORE_SIG))
> +diff -urN bash-5.1.8.orig/y.tab.c bash-5.1.8/y.tab.c
> +--- bash-5.1.8.orig/y.tab.c	2021-12-21 12:57:08.075139321 +0100
> ++++ bash-5.1.8/y.tab.c	2021-12-21 12:58:26.116890545 +0100
> +@@ -8787,10 +8787,8 @@
> +   old_expand_aliases = expand_aliases;
> + 
> +   push_stream (1);
> +-#if 0 /* TAG: bash-5.2 Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com> 11/17/2020 */
> +   if (ea = expanding_alias ())
> +     parser_save_alias ();
> +-#endif
> +   last_read_token = WORD;		/* WORD to allow reserved words here */
> +   current_command_line_count = 0;
> +   echo_input_at_read = expand_aliases = 0;
> +@@ -8825,10 +8823,8 @@
> +   last_read_token = '\n';
> +   pop_stream ();
> + 
> +-#if 0 /* TAG: bash-5.2 */
> +   if (ea)
> +     parser_restore_alias ();
> +-#endif
> + 
> + #if defined (HISTORY)
> +   remember_on_history = old_remember_on_history;
> diff --git a/patches/bash-5.1.8/series b/patches/bash-5.1.8/series
> new file mode 100644
> index 000000000..0e53e492a
> --- /dev/null
> +++ b/patches/bash-5.1.8/series
> @@ -0,0 +1 @@
> +0001-Bash-5.1-patch-12.patch
> diff --git a/rules/bash.make b/rules/bash.make
> index bed121586..c46196f7f 100644
> --- a/rules/bash.make
> +++ b/rules/bash.make
> @@ -13,8 +13,8 @@ PACKAGES-$(PTXCONF_BASH) += bash
>  #
>  # Paths and names
>  #
> -BASH_VERSION	:= 4.3.30
> -BASH_MD5	:= a27b3ee9be83bd3ba448c0ff52b28447
> +BASH_VERSION	:= 5.1.8
> +BASH_MD5	:= 23eee6195b47318b9fd878e590ccb38c
>  BASH		:= bash-$(BASH_VERSION)
>  BASH_SUFFIX	:= tar.gz
>  BASH_URL	:= $(call ptx/mirror, GNU, bash/$(BASH).$(BASH_SUFFIX))
> -- 
> 2.30.2
> 
> 
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
> To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [PATCH] iptables: Version bump 1.8.3 -> 1.8.7
  2021-12-22 13:02 ` [ptxdist] [PATCH] iptables: Version bump 1.8.3 -> 1.8.7 Christian Melki
@ 2022-01-06  7:10   ` Michael Olbrich
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  1 sibling, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-06  7:10 UTC (permalink / raw)
  To: Christian Melki; +Cc: ptxdist

On Wed, Dec 22, 2021 at 02:02:49PM +0100, Christian Melki wrote:
> Package maintenance.

Fails to build if PTXCONF_IPTABLES_NFTABLES_COMPAT is enables:

[...]
checking for libnftnl... no
*** Error: no suitable libnftnl found. ***
    Please install the 'libnftnl' package
    Or consider --disable-nftables to skip
    iptables-compat over nftables support.
[...]

And from config.log:

[...]
configure:13053: checking for libnftnl
configure:13060: $PKG_CONFIG --exists --print-errors "libnftnl >= 1.1.6"
Ignoring incompatible output option "--exists"
Requested 'libnftnl >= 1.1.6' but version of libnftnl is 1.1.3
You may find new versions of libnftnl at
http://netfilter.org/projects/libnftnl/
configure:13063: $? = 1
[...]

So I guess, libnftnl must be updated first.

Michael


> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> ---
>  rules/iptables.make | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/rules/iptables.make b/rules/iptables.make
> index 6a2449bce..994cc0898 100644
> --- a/rules/iptables.make
> +++ b/rules/iptables.make
> @@ -19,8 +19,8 @@ PACKAGES-$(PTXCONF_IPTABLES) += iptables
>  #
>  # Paths and names
>  #
> -IPTABLES_VERSION	:= 1.8.3
> -IPTABLES_MD5		:= 29de711d15c040c402cf3038c69ff513
> +IPTABLES_VERSION	:= 1.8.7
> +IPTABLES_MD5		:= 602ba7e937c72fbb7b1c2b71c3b0004b
>  IPTABLES		:= iptables-$(IPTABLES_VERSION)
>  IPTABLES_SUFFIX		:= tar.bz2
>  IPTABLES_URL		:= http://ftp.netfilter.org/pub/iptables/$(IPTABLES).$(IPTABLES_SUFFIX)
> -- 
> 2.30.2
> 
> 
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
> To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [PATCH] tcpdump: Version bump 4.93 -> 4.99.1.
  2021-12-22 13:03 ` [ptxdist] [PATCH] tcpdump: Version bump 4.93 -> 4.99.1 Christian Melki
@ 2022-01-06  7:22   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-06  7:22 UTC (permalink / raw)
  To: Christian Melki; +Cc: ptxdist

On Wed, Dec 22, 2021 at 02:03:01PM +0100, Christian Melki wrote:
> Renamed option for system pcap.
> Also, tcpdump moved from sbin to bin.

The license hash changed.

Michael

> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> ---
>  rules/tcpdump.make | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/rules/tcpdump.make b/rules/tcpdump.make
> index ef4c1116c..33e848baf 100644
> --- a/rules/tcpdump.make
> +++ b/rules/tcpdump.make
> @@ -15,8 +15,8 @@ PACKAGES-$(PTXCONF_TCPDUMP) += tcpdump
>  #
>  # Paths and names
>  #
> -TCPDUMP_VERSION	:= 4.9.3
> -TCPDUMP_MD5	:= a4ead41d371f91aa0a2287f589958bae
> +TCPDUMP_VERSION	:= 4.99.1
> +TCPDUMP_MD5	:= 929a255c71a9933608bd7c31927760f7
>  TCPDUMP		:= tcpdump-$(TCPDUMP_VERSION)
>  TCPDUMP_SUFFIX	:= tar.gz
>  TCPDUMP_URL	:= http://www.tcpdump.org/release/$(TCPDUMP).$(TCPDUMP_SUFFIX)
> @@ -46,7 +46,7 @@ TCPDUMP_CONF_OPT	:= \
>  	--with-gcc \
>  	--without-smi \
>  	--without-sandbox-capsicum \
> -	--with-system-libpcap \
> +	--disable-local-libpcap \
>  	--$(call ptx/wwo,PTXCONF_TCPDUMP_ENABLE_CRYPTO)-crypto \
>  	--$(call ptx/wwo,PTXCONF_TCPDUMP_ENABLE_LIBCAP_NG)-cap-ng
>  
> @@ -67,7 +67,7 @@ $(STATEDIR)/tcpdump.targetinstall:
>  	@$(call install_fixup, tcpdump,AUTHOR,"Robert Schwebel <r.schwebel@pengutronix.de>")
>  	@$(call install_fixup, tcpdump,DESCRIPTION,"TCP analyze tool")
>  
> -	@$(call install_copy, tcpdump, 0, 0, 0755, -, /usr/sbin/tcpdump)
> +	@$(call install_copy, tcpdump, 0, 0, 0755, -, /usr/bin/tcpdump)
>  
>  	@$(call install_finish, tcpdump)
>  
> -- 
> 2.30.2
> 
> 
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
> To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [PATCH] screen: Version bump 4.5.0 -> 4.8.0
  2021-12-22 13:02 ` [ptxdist] [PATCH] screen: Version bump 4.5.0 -> 4.8.0 Christian Melki
@ 2022-01-06 10:55   ` Michael Olbrich
  2022-01-07  9:58     ` Christian Melki
  2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
  1 sibling, 1 reply; 54+ messages in thread
From: Michael Olbrich @ 2022-01-06 10:55 UTC (permalink / raw)
  To: Christian Melki; +Cc: ptxdist

On Wed, Dec 22, 2021 at 02:02:59PM +0100, Christian Melki wrote:
> Package maintenance.
> Fixes CVE-2021-26937, CVE-2020-9366, CVE-2017-5618

There are several old patches. Some are cross-compile fixes, others are
imported from Debian. I think some of them solve the same problem as your
patches. Where are yours from?

This whole thing needs some cleanup. I think you can ignore the Debian
patches. I can sort that out afterwards.

Also, if configure.ac is modified, then a autogen.sh link is needed.

Michael


> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> ---
>  .../0001-no-memcpy-fallback.patch             | 126 ++++++++++++++++
>  .../0002-install-no-backup-binary.patch       |  41 +++++
>  .../0003-install-always-chmod.patch           |  29 ++++
>  .../0004-install-nonversioned-binary.patch    |  31 ++++
>  .../screen-4.8.0/0005-rename-sched_h.patch    | 142 ++++++++++++++++++
>  .../0006-comm-h-now-depends-on-term-h.patch   |  28 ++++
>  ...-needed-for-list_-display-generic-.o.patch |  35 +++++
>  .../screen-4.8.0/0008-CVE-2021-26937.patch    |  68 +++++++++
>  patches/screen-4.8.0/series                   |   9 ++
>  rules/screen.make                             |   4 +-
>  10 files changed, 511 insertions(+), 2 deletions(-)
>  create mode 100644 patches/screen-4.8.0/0001-no-memcpy-fallback.patch
>  create mode 100644 patches/screen-4.8.0/0002-install-no-backup-binary.patch
>  create mode 100644 patches/screen-4.8.0/0003-install-always-chmod.patch
>  create mode 100644 patches/screen-4.8.0/0004-install-nonversioned-binary.patch
>  create mode 100644 patches/screen-4.8.0/0005-rename-sched_h.patch
>  create mode 100644 patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch
>  create mode 100644 patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch
>  create mode 100644 patches/screen-4.8.0/0008-CVE-2021-26937.patch
>  create mode 100644 patches/screen-4.8.0/series
> 
> diff --git a/patches/screen-4.8.0/0001-no-memcpy-fallback.patch b/patches/screen-4.8.0/0001-no-memcpy-fallback.patch
> new file mode 100644
> index 000000000..213790719
> --- /dev/null
> +++ b/patches/screen-4.8.0/0001-no-memcpy-fallback.patch
> @@ -0,0 +1,126 @@
> +From: Maarten ter Huurne <maarten@treewalker.org>
> +Date: Sat, 13 Sep 2014 11:37:59 +0200
> +Subject: Do not use memcpy as an alternative for bcopy/memmove
> +
> +The configure script runs a small test program to check whether
> +memcpy can handle overlapping memory areas. However, it is not valid
> +to conclude that if a single case of overlapping memory is handled
> +correctly, all cases will be handled correctly.
> +
> +Since screen already has its own bcopy implementation as a fallback
> +for the case that bcopy and memmove are unusable, removing the memcpy
> +option should not break any systems.
> +
> +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
> +[Ricardo: rebase on top of 4.3.1]
> +Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
> +[Bernd: rebase on top of 4.7.0]
> +Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
> +---
> + acconfig.h   |  3 +--
> + configure.ac | 18 +-----------------
> + os.h         |  8 ++------
> + osdef.h.in   | 10 +---------
> + 4 files changed, 5 insertions(+), 34 deletions(-)
> +
> +diff --git a/acconfig.h b/acconfig.h
> +index 2e46985..9b0b9d4 100644
> +--- a/acconfig.h
> ++++ b/acconfig.h
> +@@ -476,7 +476,7 @@
> + #undef GETTTYENT
> + 
> + /*
> +- * Define USEBCOPY if the bcopy/memcpy from your system's C library
> ++ * Define USEBCOPY if the bcopy from your system's C library
> +  * supports the overlapping of source and destination blocks.  When
> +  * undefined, screen uses its own (probably slower) version of bcopy().
> +  * 
> +@@ -487,7 +487,6 @@
> +  * Their memove fails the test in the configure script. Sigh. (Juergen)
> +  */
> + #undef USEBCOPY
> +-#undef USEMEMCPY
> + #undef USEMEMMOVE
> + 
> + /*
> +diff --git a/configure.ac b/configure.ac
> +index 27690a6..b8e3bec 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -1145,7 +1145,7 @@ AC_TRY_LINK(,[getttyent();], AC_DEFINE(GETTTYENT))
> + AC_CHECKING(fdwalk)
> + AC_TRY_LINK([#include <stdlib.h>], [fdwalk(NULL, NULL);],AC_DEFINE(HAVE_FDWALK))
> + 
> +-AC_CHECKING(whether memcpy/memmove/bcopy handles overlapping arguments)
> ++AC_CHECKING(whether memmove/bcopy handles overlapping arguments)
> + AC_TRY_RUN([
> + main() {
> +   char buf[10];
> +@@ -1175,22 +1175,6 @@ main() {
> +   exit(0); /* libc version works properly.  */
> + }], AC_DEFINE(USEMEMMOVE))
> + 
> +-
> +-AC_TRY_RUN([
> +-#define bcopy(s,d,l) memcpy(d,s,l)
> +-main() {
> +-  char buf[10];
> +-  strcpy(buf, "abcdefghi");
> +-  bcopy(buf, buf + 2, 3);
> +-  if (strncmp(buf, "ababcf", 6))
> +-    exit(1);
> +-  strcpy(buf, "abcdefghi");
> +-  bcopy(buf + 2, buf, 3);
> +-  if (strncmp(buf, "cdedef", 6))
> +-    exit(1);
> +-  exit(0); /* libc version works properly.  */
> +-}], AC_DEFINE(USEMEMCPY),,:)
> +-
> + AC_SYS_LONG_FILE_NAMES
> + 
> + AC_MSG_CHECKING(for vsprintf)
> +diff --git a/os.h b/os.h
> +index e827ac9..0b41fb9 100644
> +--- a/os.h
> ++++ b/os.h
> +@@ -142,12 +142,8 @@ extern int errno;
> + # ifdef USEMEMMOVE
> + #  define bcopy(s,d,len) memmove(d,s,len)
> + # else
> +-#  ifdef USEMEMCPY
> +-#   define bcopy(s,d,len) memcpy(d,s,len)
> +-#  else
> +-#   define NEED_OWN_BCOPY
> +-#   define bcopy xbcopy
> +-#  endif
> ++#  define NEED_OWN_BCOPY
> ++#  define bcopy xbcopy
> + # endif
> + #endif
> + 
> +diff --git a/osdef.h.in b/osdef.h.in
> +index 8687b60..e4057a0 100644
> +--- a/osdef.h.in
> ++++ b/osdef.h.in
> +@@ -58,16 +58,8 @@ extern int   bcmp __P((char *, char *, int));
> + extern int   killpg __P((int, int));
> + #endif
> + 
> +-#ifndef USEBCOPY
> +-# ifdef USEMEMCPY
> +-extern void  memcpy __P((char *, char *, int));
> +-# else
> +-#  ifdef USEMEMMOVE
> ++#if defined(USEMEMMOVE) && !defined(USEBCOPY)
> + extern void  memmove __P((char *, char *, int));
> +-#  else
> +-extern void  bcopy __P((char *, char *, int));
> +-#  endif
> +-# endif
> + #else
> + extern void  bcopy __P((char *, char *, int));
> + #endif
> +-- 
> +1.8.4.5
> +
> diff --git a/patches/screen-4.8.0/0002-install-no-backup-binary.patch b/patches/screen-4.8.0/0002-install-no-backup-binary.patch
> new file mode 100644
> index 000000000..7842662b5
> --- /dev/null
> +++ b/patches/screen-4.8.0/0002-install-no-backup-binary.patch
> @@ -0,0 +1,41 @@
> +From: Maarten ter Huurne <maarten@treewalker.org>
> +Date: Sun, 14 Sep 2014 23:58:34 +0200
> +Subject: Do not create backup of old installed binary
> +
> +This is a rather unusual feature that packagers will not expect.
> +
> +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
> +[baruch: update for 4.6.2]
> +Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> +---
> + Makefile.in | 4 ----
> + 1 file changed, 4 deletions(-)
> +
> +diff --git a/Makefile.in b/Makefile.in
> +index 187a69b..65549e9 100644
> +--- a/Makefile.in
> ++++ b/Makefile.in
> +@@ -83,12 +83,9 @@ screen: $(OFILES)
> + 	    $(OPTIONS) $(CFLAGS) $<
> + 
> + install_bin: .version screen installdirs
> +-	-if [ -f $(DESTDIR)$(bindir)/$(SCREEN) ] && [ ! -f $(DESTDIR)$(bindir)/$(SCREEN).old ]; \
> +-		then mv $(DESTDIR)$(bindir)/$(SCREEN) $(DESTDIR)$(bindir)/$(SCREEN).old; fi
> + 	$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)
> + 	-chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
> + # This doesn't work if $(bindir)/screen is a symlink
> +-	-if [ -f $(DESTDIR)$(bindir)/screen ] && [ ! -f $(DESTDIR)$(bindir)/screen.old ]; then mv $(DESTDIR)$(bindir)/screen $(DESTDIR)$(bindir)/screen.old; fi
> + 	rm -f $(DESTDIR)$(bindir)/screen
> + 	(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)
> + 	cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS)
> +@@ -113,7 +110,6 @@ installdirs:
> + uninstall: .version
> + 	rm -f $(DESTDIR)$(bindir)/$(SCREEN)
> + 	rm -f $(DESTDIR)$(bindir)/screen
> +-	-mv $(DESTDIR)$(bindir)/screen.old $(DESTDIR)$(bindir)/screen
> + 	rm -f $(DESTDIR)$(ETCSCREENRC)
> + 	cd doc; $(MAKE) uninstall
> + 
> +-- 
> +1.8.4.5
> +
> diff --git a/patches/screen-4.8.0/0003-install-always-chmod.patch b/patches/screen-4.8.0/0003-install-always-chmod.patch
> new file mode 100644
> index 000000000..0aa7690b0
> --- /dev/null
> +++ b/patches/screen-4.8.0/0003-install-always-chmod.patch
> @@ -0,0 +1,29 @@
> +From: Maarten ter Huurne <maarten@treewalker.org>
> +Date: Mon, 15 Sep 2014 00:03:05 +0200
> +Subject: Change binary permission flags even if chown fails
> +
> +Typically when creating a package, the build is not run as root, so
> +the chown will fail. But the chmod can still be done.
> +
> +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
> +---
> + Makefile.in | 3 ++-
> + 1 file changed, 2 insertions(+), 1 deletion(-)
> +
> +diff --git a/Makefile.in b/Makefile.in
> +index 65549e9..3c12fdb 100644
> +--- a/Makefile.in
> ++++ b/Makefile.in
> +@@ -84,7 +84,8 @@ screen: $(OFILES)
> + 
> + install_bin: .version screen
> + 	$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)
> +-	-chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
> ++	-chown root $(DESTDIR)$(bindir)/$(SCREEN)
> ++	-chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
> + # This doesn't work if $(bindir)/screen is a symlink
> + 	rm -f $(DESTDIR)$(bindir)/screen
> + 	(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)
> +-- 
> +1.8.4.5
> +
> diff --git a/patches/screen-4.8.0/0004-install-nonversioned-binary.patch b/patches/screen-4.8.0/0004-install-nonversioned-binary.patch
> new file mode 100644
> index 000000000..ecbbd6519
> --- /dev/null
> +++ b/patches/screen-4.8.0/0004-install-nonversioned-binary.patch
> @@ -0,0 +1,31 @@
> +From: Maarten ter Huurne <maarten@treewalker.org>
> +Date: Mon, 15 Sep 2014 00:06:20 +0200
> +Subject: Support overriding SCREEN to get a non-versioned binary
> +
> +If a packager runs "make install SCREEN=screen", do not create
> +"screen" as a symlink to itself.
> +
> +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
> +---
> + Makefile.in | 2 ++
> + 1 file changed, 2 insertions(+)
> +
> +diff --git a/Makefile.in b/Makefile.in
> +index 3c12fdb..860f351 100644
> +--- a/Makefile.in
> ++++ b/Makefile.in
> +@@ -86,9 +86,11 @@ install_bin: .version screen
> + 	$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)
> + 	-chown root $(DESTDIR)$(bindir)/$(SCREEN)
> + 	-chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
> ++ifneq (${SCREEN},screen)
> + # This doesn't work if $(bindir)/screen is a symlink
> + 	rm -f $(DESTDIR)$(bindir)/screen
> + 	(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)
> ++endif
> + 	cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS)
> + 
> + ###############################################################################
> +-- 
> +1.8.4.5
> +
> diff --git a/patches/screen-4.8.0/0005-rename-sched_h.patch b/patches/screen-4.8.0/0005-rename-sched_h.patch
> new file mode 100644
> index 000000000..9b29b76e0
> --- /dev/null
> +++ b/patches/screen-4.8.0/0005-rename-sched_h.patch
> @@ -0,0 +1,142 @@
> +From: Maarten ter Huurne <maarten@treewalker.org>
> +Date: Mon, 15 Sep 2014 00:24:41 +0200
> +Subject: Renamed sched.h to eventqueue.h
> +
> +There is a <sched.h> system header that got shadowed by "sched.h".
> +While Screen itself doesn't include <sched.h>, other system headers
> +might include it indirectly. This broke the build when using uClibc
> +with pthread support.
> +
> +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
> +---
> + eventqueue.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
> + sched.h      | 48 ------------------------------------------------
> + screen.h     |  2 +-
> + 3 files changed, 49 insertions(+), 49 deletions(-)
> + create mode 100644 eventqueue.h
> + delete mode 100644 sched.h
> +
> +diff --git a/eventqueue.h b/eventqueue.h
> +new file mode 100644
> +index 0000000..fdc3fc4
> +--- /dev/null
> ++++ b/eventqueue.h
> +@@ -0,0 +1,48 @@
> ++/* Copyright (c) 2008, 2009
> ++ *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
> ++ *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
> ++ *      Micah Cowan (micah@cowan.name)
> ++ *      Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
> ++ * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
> ++ *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
> ++ *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
> ++ * Copyright (c) 1987 Oliver Laumann
> ++ *
> ++ * This program is free software; you can redistribute it and/or modify
> ++ * it under the terms of the GNU General Public License as published by
> ++ * the Free Software Foundation; either version 3, or (at your option)
> ++ * any later version.
> ++ *
> ++ * This program is distributed in the hope that it will be useful,
> ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
> ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> ++ * GNU General Public License for more details.
> ++ *
> ++ * You should have received a copy of the GNU General Public License
> ++ * along with this program (see the file COPYING); if not, see
> ++ * https://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,
> ++ * 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
> ++ *
> ++ ****************************************************************
> ++ * $Id$ GNU
> ++ */
> ++
> ++struct event
> ++{
> ++  struct event *next;
> ++  void (*handler) __P((struct event *, char *));
> ++  char *data;
> ++  int fd;
> ++  int type;
> ++  int pri;
> ++  struct timeval timeout;
> ++  int queued;		/* in evs queue */
> ++  int active;		/* in fdset */
> ++  int *condpos;		/* only active if condpos - condneg > 0 */
> ++  int *condneg;
> ++};
> ++
> ++#define EV_TIMEOUT	0
> ++#define EV_READ		1
> ++#define EV_WRITE	2
> ++#define EV_ALWAYS	3
> +diff --git a/sched.h b/sched.h
> +deleted file mode 100644
> +index fdc3fc4..0000000
> +--- a/sched.h
> ++++ /dev/null
> +@@ -1,48 +0,0 @@
> +-/* Copyright (c) 2008, 2009
> +- *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
> +- *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
> +- *      Micah Cowan (micah@cowan.name)
> +- *      Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
> +- * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
> +- *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
> +- *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
> +- * Copyright (c) 1987 Oliver Laumann
> +- *
> +- * This program is free software; you can redistribute it and/or modify
> +- * it under the terms of the GNU General Public License as published by
> +- * the Free Software Foundation; either version 3, or (at your option)
> +- * any later version.
> +- *
> +- * This program is distributed in the hope that it will be useful,
> +- * but WITHOUT ANY WARRANTY; without even the implied warranty of
> +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +- * GNU General Public License for more details.
> +- *
> +- * You should have received a copy of the GNU General Public License
> +- * along with this program (see the file COPYING); if not, see
> +- * https://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,
> +- * 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
> +- *
> +- ****************************************************************
> +- * $Id$ GNU
> +- */
> +-
> +-struct event
> +-{
> +-  struct event *next;
> +-  void (*handler) __P((struct event *, char *));
> +-  char *data;
> +-  int fd;
> +-  int type;
> +-  int pri;
> +-  struct timeval timeout;
> +-  int queued;		/* in evs queue */
> +-  int active;		/* in fdset */
> +-  int *condpos;		/* only active if condpos - condneg > 0 */
> +-  int *condneg;
> +-};
> +-
> +-#define EV_TIMEOUT	0
> +-#define EV_READ		1
> +-#define EV_WRITE	2
> +-#define EV_ALWAYS	3
> +diff --git a/screen.h b/screen.h
> +index 603ca3f..34238c8 100644
> +--- a/screen.h
> ++++ b/screen.h
> +@@ -43,7 +43,7 @@
> + #include "osdef.h"
> + 
> + #include "ansi.h"
> +-#include "sched.h"
> ++#include "eventqueue.h"
> + #include "acls.h"
> + #include "comm.h"
> + #include "layer.h"
> +-- 
> +1.8.4.5
> +
> diff --git a/patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch b/patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch
> new file mode 100644
> index 000000000..6ff6f3da0
> --- /dev/null
> +++ b/patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch
> @@ -0,0 +1,28 @@
> +From 39c5f1c76f1fcef4b5958bf828a63f53426b6984 Mon Sep 17 00:00:00 2001
> +From: Mike Gerwitz <mike@mikegerwitz.com>
> +Date: Tue, 24 Dec 2013 22:16:31 -0500
> +Subject: comm.h now depends on term.h
> +
> +Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> +[Patch retrieved and updated from:
> +http://git.savannah.gnu.org/cgit/screen.git/commit/?id=39c5f1c]
> +---
> + src/Makefile.in | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/Makefile.in b/Makefile.in
> +index e791e79..d4f7c0b 100644
> +--- a/Makefile.in
> ++++ b/Makefile.in
> +@@ -113,7 +113,7 @@ term.h: term.c term.sh
> + 
> + kmapdef.c: term.h
> + 
> +-comm.h: comm.c comm.sh config.h
> ++comm.h: comm.c comm.sh config.h term.h
> + 	AWK=$(AWK) CC="$(CC) $(CFLAGS)" srcdir=${srcdir} sh $(srcdir)/comm.sh
> + 
> + docs:
> +-- 
> +cgit v1.0-41-gc330
> +
> diff --git a/patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch b/patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch
> new file mode 100644
> index 000000000..f406a1afa
> --- /dev/null
> +++ b/patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch
> @@ -0,0 +1,35 @@
> +From b719314d201a3e9e1e57c65746a468c47bfc847f Mon Sep 17 00:00:00 2001
> +From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> +Date: Wed, 3 Oct 2018 22:29:32 +0200
> +Subject: [PATCH] comm.h needed for list_{display,generic}.o
> +
> +comm.h is needed to build list_display.o and list_generic.o otherwise
> +parallel builds will sometimes fail
> +
> +Fixes:
> + - http://autobuild.buildroot.org/results/43105f14857dbe72d8878fc7b3db67f7bdca93cc
> + - http://autobuild.buildroot.org/results/47f4ecbec1355285633df287fc9c4e7cccde9378
> +
> +Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> +[Upstream status: https://savannah.gnu.org/bugs/index.php?54776]
> +---
> + Makefile.in | 4 ++--
> + 1 file changed, 2 insertions(+), 2 deletions(-)
> +
> +diff --git a/Makefile.in b/Makefile.in
> +index af5938b..e6d5247 100644
> +--- a/Makefile.in
> ++++ b/Makefile.in
> +@@ -265,7 +265,7 @@  braille.h
> + viewport.o: layout.h viewport.h canvas.h viewport.c config.h screen.h os.h osdef.h ansi.h acls.h \
> +  comm.h layer.h term.h image.h display.h window.h extern.h \
> +  braille.h
> +-list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h
> +-list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h
> ++list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h comm.h
> ++list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h comm.h
> + list_window.o: list_generic.h list_window.c window.h layer.h screen.h osdef.h comm.h
> + 
> +-- 
> +2.17.1
> +
> diff --git a/patches/screen-4.8.0/0008-CVE-2021-26937.patch b/patches/screen-4.8.0/0008-CVE-2021-26937.patch
> new file mode 100644
> index 000000000..df7efa029
> --- /dev/null
> +++ b/patches/screen-4.8.0/0008-CVE-2021-26937.patch
> @@ -0,0 +1,68 @@
> +Description: [CVE-2021-26937] Fix out of bounds array access
> +Author: Michael Schröder <mls@suse.de>
> +Bug-Debian: https://bugs.debian.org/982435
> +Bug: https://savannah.gnu.org/bugs/?60030
> +Bug: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00000.html
> +Bug-OSS-Security: https://www.openwall.com/lists/oss-security/2021/02/09/3
> +Origin: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00010.html
> +
> +Downloaded from Debian:
> +https://sources.debian.org/data/main/s/screen/4.8.0-5/debian/patches/99_CVE-2021-26937.patch
> +
> +Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
> +--- a/encoding.c
> ++++ b/encoding.c
> +@@ -43,7 +43,7 @@
> + # ifdef UTF8
> + static int   recode_char __P((int, int, int));
> + static int   recode_char_to_encoding __P((int, int));
> +-static void  comb_tofront __P((int, int));
> ++static void  comb_tofront __P((int));
> + #  ifdef DW_CHARS
> + static int   recode_char_dw __P((int, int *, int, int));
> + static int   recode_char_dw_to_encoding __P((int, int *, int));
> +@@ -1263,6 +1263,8 @@
> +     {0x30000, 0x3FFFD},
> +   };
> + 
> ++  if (c >= 0xdf00 && c <= 0xdfff)
> ++    return 1;          /* dw combining sequence */
> +   return ((bisearch(c, wide, sizeof(wide) / sizeof(struct interval) - 1)) ||
> +           (cjkwidth &&
> +            bisearch(c, ambiguous,
> +@@ -1330,11 +1332,12 @@
> + }
> + 
> + static void
> +-comb_tofront(root, i)
> +-int root, i;
> ++comb_tofront(i)
> ++int i;
> + {
> +   for (;;)
> +     {
> ++      int root = i >= 0x700 ? 0x801 : 0x800;
> +       debug1("bring to front: %x\n", i);
> +       combchars[combchars[i]->prev]->next = combchars[i]->next;
> +       combchars[combchars[i]->next]->prev = combchars[i]->prev;
> +@@ -1396,9 +1399,9 @@
> +     {
> +       /* full, recycle old entry */
> +       if (c1 >= 0xd800 && c1 < 0xe000)
> +-        comb_tofront(root, c1 - 0xd800);
> ++        comb_tofront(c1 - 0xd800);
> +       i = combchars[root]->prev;
> +-      if (c1 == i + 0xd800)
> ++      if (i == 0x800 || i == 0x801 || c1 == i + 0xd800)
> + 	{
> + 	  /* completely full, can't recycle */
> + 	  debug("utf8_handle_comp: completely full!\n");
> +@@ -1422,7 +1425,7 @@
> +   mc->font  = (i >> 8) + 0xd8;
> +   mc->fontx = 0;
> +   debug3("combinig char %x %x -> %x\n", c1, c, i + 0xd800);
> +-  comb_tofront(root, i);
> ++  comb_tofront(i);
> + }
> + 
> + #else /* !UTF8 */
> diff --git a/patches/screen-4.8.0/series b/patches/screen-4.8.0/series
> new file mode 100644
> index 000000000..c72b2fd5f
> --- /dev/null
> +++ b/patches/screen-4.8.0/series
> @@ -0,0 +1,9 @@
> +0001-no-memcpy-fallback.patch
> +0002-install-no-backup-binary.patch
> +0003-install-always-chmod.patch
> +0004-install-nonversioned-binary.patch
> +0005-rename-sched_h.patch
> +0006-comm-h-now-depends-on-term-h.patch
> +0007-comm.h-needed-for-list_-display-generic-.o.patch
> +0008-CVE-2021-26937.patch
> +
> diff --git a/rules/screen.make b/rules/screen.make
> index 39a96dae2..1087dfc9d 100644
> --- a/rules/screen.make
> +++ b/rules/screen.make
> @@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_SCREEN) += screen
>  #
>  # Paths and names
>  #
> -SCREEN_VERSION	:= 4.5.0
> -SCREEN_MD5	:= a32105a91359afab1a4349209a028e31
> +SCREEN_VERSION	:= 4.8.0
> +SCREEN_MD5	:= d276213d3acd10339cd37848b8c4ab1e
>  SCREEN		:= screen-$(SCREEN_VERSION)
>  SCREEN_SUFFIX	:= tar.gz
>  SCREEN_URL	:= $(call ptx/mirror, GNU, screen/$(SCREEN).$(SCREEN_SUFFIX))
> -- 
> 2.30.2
> 
> 
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
> To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [PATCH] libseccomp: Version bump 2.5.1 -> 2.5.3.
  2021-12-22 13:02 ` [ptxdist] [PATCH] libseccomp: Version bump 2.5.1 -> 2.5.3 Christian Melki
@ 2022-01-06 10:56   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-06 10:56 UTC (permalink / raw)
  To: Christian Melki; +Cc: ptxdist

On Wed, Dec 22, 2021 at 02:02:56PM +0100, Christian Melki wrote:
> Package maintenance.

There are patches for the old version.

Michael

> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> ---
>  rules/libseccomp.make | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/rules/libseccomp.make b/rules/libseccomp.make
> index 9eb54245c..5a6f45f1c 100644
> --- a/rules/libseccomp.make
> +++ b/rules/libseccomp.make
> @@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_LIBSECCOMP) += libseccomp
>  #
>  # Paths and names
>  #
> -LIBSECCOMP_VERSION	:= 2.5.1
> -LIBSECCOMP_MD5		:= 59f5563c532d3fa1df9db0516b36b1cd
> +LIBSECCOMP_VERSION	:= 2.5.3
> +LIBSECCOMP_MD5		:= 5096d3912a605a72b27805fa0ef9886d
>  LIBSECCOMP		:= libseccomp-$(LIBSECCOMP_VERSION)
>  LIBSECCOMP_SUFFIX	:= tar.gz
>  LIBSECCOMP_URL		:= https://github.com/seccomp/libseccomp/releases/download/v$(LIBSECCOMP_VERSION)/$(LIBSECCOMP).$(LIBSECCOMP_SUFFIX)
> -- 
> 2.30.2
> 
> 
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
> To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [WIP: PATCH] usbutils: Version bump 007 -> 014.
  2022-01-05 12:38   ` Michael Olbrich
@ 2022-01-06 21:52     ` Christian Melki
  2022-01-07  8:09       ` Michael Olbrich
  0 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2022-01-06 21:52 UTC (permalink / raw)
  To: ptxdist; +Cc: Michael Olbrich

On 1/5/22 13:38, Michael Olbrich wrote:
> On Wed, Dec 22, 2021 at 02:03:02PM +0100, Christian Melki wrote:
>> Usbutils depends on libudev, add it.
>> Clear out some old configure options.
>> Also, usb.ids are not supplied anymore.
>> It is expected the user provides it.
> 
> I think, the idea is to use hwdb instead. I've waited with this update for
> some time because I wanted to avoid the systemd dependency. But now we have
> a systemd-hwdb package.
> We should probably just depend on that instead of keeping our own version
> of usb.ids.
> 
> Michael

Cut for less server spam size.

I just realized it could depend on the hwdata package?
https://github.com/vcrhonek/hwdata

Which apparently the usbip package already has as dependency?
usbip.make:	--with-usbids-dir=/usr/share/hwdata

hwdata is used by several distributions.
I'm not sure how well all the lspci, lsusb whatever is integrated with
systemd-hwdb binary database? Busybox versions?

Regards,
Christian

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [WIP: PATCH] usbutils: Version bump 007 -> 014.
  2022-01-06 21:52     ` Christian Melki
@ 2022-01-07  8:09       ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-07  8:09 UTC (permalink / raw)
  To: Christian Melki; +Cc: ptxdist

Hi,

On Thu, Jan 06, 2022 at 10:52:00PM +0100, Christian Melki wrote:
> On 1/5/22 13:38, Michael Olbrich wrote:
> > On Wed, Dec 22, 2021 at 02:03:02PM +0100, Christian Melki wrote:
> >> Usbutils depends on libudev, add it.
> >> Clear out some old configure options.
> >> Also, usb.ids are not supplied anymore.
> >> It is expected the user provides it.
> > 
> > I think, the idea is to use hwdb instead. I've waited with this update for
> > some time because I wanted to avoid the systemd dependency. But now we have
> > a systemd-hwdb package.
> > We should probably just depend on that instead of keeping our own version
> > of usb.ids.
> > 
> > Michael
> 
> Cut for less server spam size.
> 
> I just realized it could depend on the hwdata package?
> https://github.com/vcrhonek/hwdata
> 
> Which apparently the usbip package already has as dependency?
> usbip.make:	--with-usbids-dir=/usr/share/hwdata
> 
> hwdata is used by several distributions.
> I'm not sure how well all the lspci, lsusb whatever is integrated with
> systemd-hwdb binary database? Busybox versions?

Right, this is a bit of a mess:

- udev and through that libinput and others only use hwdb

- lsusb and lspci in ptxdist currently install their own .ids files.
  Latest upstream versions don't contain the .ids file any more but support
  both hwdb and the .ids file.

- usbip only supports the .ids file and in ptxdist looks in the wrong
  location :-/

- lshw only supports the .ids files and installs it's own versions of it
  :-/

I would prefer to use hwdb for everything (there is a reason why it was
introduced in the first place) but that's clearly not yet possible.

So I think for now the best would be:

- create a hwdata package with suboptions for usb and pci.
- in usbutils.in:

	select HWDATA		if !SYSTEMD_HWDB
	select HWDATA_USB	if !SYSTEMD_HWDB

If you use /usr/share/hwdata to install the files, then usbip will be fixed
automatically. Make sure that lsusb find the file as well.

Bonus points for updating lshw to use the same files :-)

Michael

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [PATCH] screen: Version bump 4.5.0 -> 4.8.0
  2022-01-06 10:55   ` Michael Olbrich
@ 2022-01-07  9:58     ` Christian Melki
  2022-01-07 11:05       ` Michael Olbrich
  0 siblings, 1 reply; 54+ messages in thread
From: Christian Melki @ 2022-01-07  9:58 UTC (permalink / raw)
  To: ptxdist; +Cc: m.olbrich

On 1/6/22 11:55 AM, Michael Olbrich wrote:
> On Wed, Dec 22, 2021 at 02:02:59PM +0100, Christian Melki wrote:
>> Package maintenance.
>> Fixes CVE-2021-26937, CVE-2020-9366, CVE-2017-5618
> 
> There are several old patches. Some are cross-compile fixes, others are
> imported from Debian. I think some of them solve the same problem as your
> patches. Where are yours from?
> 
> This whole thing needs some cleanup. I think you can ignore the Debian
> patches. I can sort that out afterwards.
> 
> Also, if configure.ac is modified, then a autogen.sh link is needed.
> 
> Michael
> 

Patches are from Buildroot.
https://github.com/buildroot/buildroot/tree/master/package/screen

What do you need from me here? A new one with autogen.sh?
What do I do with the old patches?

> 
>> Signed-off-by: Christian Melki <christian.melki@t2data.com>
>> ---
>>   .../0001-no-memcpy-fallback.patch             | 126 ++++++++++++++++
>>   .../0002-install-no-backup-binary.patch       |  41 +++++
>>   .../0003-install-always-chmod.patch           |  29 ++++
>>   .../0004-install-nonversioned-binary.patch    |  31 ++++
>>   .../screen-4.8.0/0005-rename-sched_h.patch    | 142 ++++++++++++++++++
>>   .../0006-comm-h-now-depends-on-term-h.patch   |  28 ++++
>>   ...-needed-for-list_-display-generic-.o.patch |  35 +++++
>>   .../screen-4.8.0/0008-CVE-2021-26937.patch    |  68 +++++++++
>>   patches/screen-4.8.0/series                   |   9 ++
>>   rules/screen.make                             |   4 +-
>>   10 files changed, 511 insertions(+), 2 deletions(-)
>>   create mode 100644 patches/screen-4.8.0/0001-no-memcpy-fallback.patch
>>   create mode 100644 patches/screen-4.8.0/0002-install-no-backup-binary.patch
>>   create mode 100644 patches/screen-4.8.0/0003-install-always-chmod.patch
>>   create mode 100644 patches/screen-4.8.0/0004-install-nonversioned-binary.patch
>>   create mode 100644 patches/screen-4.8.0/0005-rename-sched_h.patch
>>   create mode 100644 patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch
>>   create mode 100644 patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch
>>   create mode 100644 patches/screen-4.8.0/0008-CVE-2021-26937.patch
>>   create mode 100644 patches/screen-4.8.0/series
>>
>> diff --git a/patches/screen-4.8.0/0001-no-memcpy-fallback.patch b/patches/screen-4.8.0/0001-no-memcpy-fallback.patch
>> new file mode 100644
>> index 000000000..213790719
>> --- /dev/null
>> +++ b/patches/screen-4.8.0/0001-no-memcpy-fallback.patch
>> @@ -0,0 +1,126 @@
>> +From: Maarten ter Huurne <maarten@treewalker.org>
>> +Date: Sat, 13 Sep 2014 11:37:59 +0200
>> +Subject: Do not use memcpy as an alternative for bcopy/memmove
>> +
>> +The configure script runs a small test program to check whether
>> +memcpy can handle overlapping memory areas. However, it is not valid
>> +to conclude that if a single case of overlapping memory is handled
>> +correctly, all cases will be handled correctly.
>> +
>> +Since screen already has its own bcopy implementation as a fallback
>> +for the case that bcopy and memmove are unusable, removing the memcpy
>> +option should not break any systems.
>> +
>> +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
>> +[Ricardo: rebase on top of 4.3.1]
>> +Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
>> +[Bernd: rebase on top of 4.7.0]
>> +Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
>> +---
>> + acconfig.h   |  3 +--
>> + configure.ac | 18 +-----------------
>> + os.h         |  8 ++------
>> + osdef.h.in   | 10 +---------
>> + 4 files changed, 5 insertions(+), 34 deletions(-)
>> +
>> +diff --git a/acconfig.h b/acconfig.h
>> +index 2e46985..9b0b9d4 100644
>> +--- a/acconfig.h
>> ++++ b/acconfig.h
>> +@@ -476,7 +476,7 @@
>> + #undef GETTTYENT
>> +
>> + /*
>> +- * Define USEBCOPY if the bcopy/memcpy from your system's C library
>> ++ * Define USEBCOPY if the bcopy from your system's C library
>> +  * supports the overlapping of source and destination blocks.  When
>> +  * undefined, screen uses its own (probably slower) version of bcopy().
>> +  *
>> +@@ -487,7 +487,6 @@
>> +  * Their memove fails the test in the configure script. Sigh. (Juergen)
>> +  */
>> + #undef USEBCOPY
>> +-#undef USEMEMCPY
>> + #undef USEMEMMOVE
>> +
>> + /*
>> +diff --git a/configure.ac b/configure.ac
>> +index 27690a6..b8e3bec 100644
>> +--- a/configure.ac
>> ++++ b/configure.ac
>> +@@ -1145,7 +1145,7 @@ AC_TRY_LINK(,[getttyent();], AC_DEFINE(GETTTYENT))
>> + AC_CHECKING(fdwalk)
>> + AC_TRY_LINK([#include <stdlib.h>], [fdwalk(NULL, NULL);],AC_DEFINE(HAVE_FDWALK))
>> +
>> +-AC_CHECKING(whether memcpy/memmove/bcopy handles overlapping arguments)
>> ++AC_CHECKING(whether memmove/bcopy handles overlapping arguments)
>> + AC_TRY_RUN([
>> + main() {
>> +   char buf[10];
>> +@@ -1175,22 +1175,6 @@ main() {
>> +   exit(0); /* libc version works properly.  */
>> + }], AC_DEFINE(USEMEMMOVE))
>> +
>> +-
>> +-AC_TRY_RUN([
>> +-#define bcopy(s,d,l) memcpy(d,s,l)
>> +-main() {
>> +-  char buf[10];
>> +-  strcpy(buf, "abcdefghi");
>> +-  bcopy(buf, buf + 2, 3);
>> +-  if (strncmp(buf, "ababcf", 6))
>> +-    exit(1);
>> +-  strcpy(buf, "abcdefghi");
>> +-  bcopy(buf + 2, buf, 3);
>> +-  if (strncmp(buf, "cdedef", 6))
>> +-    exit(1);
>> +-  exit(0); /* libc version works properly.  */
>> +-}], AC_DEFINE(USEMEMCPY),,:)
>> +-
>> + AC_SYS_LONG_FILE_NAMES
>> +
>> + AC_MSG_CHECKING(for vsprintf)
>> +diff --git a/os.h b/os.h
>> +index e827ac9..0b41fb9 100644
>> +--- a/os.h
>> ++++ b/os.h
>> +@@ -142,12 +142,8 @@ extern int errno;
>> + # ifdef USEMEMMOVE
>> + #  define bcopy(s,d,len) memmove(d,s,len)
>> + # else
>> +-#  ifdef USEMEMCPY
>> +-#   define bcopy(s,d,len) memcpy(d,s,len)
>> +-#  else
>> +-#   define NEED_OWN_BCOPY
>> +-#   define bcopy xbcopy
>> +-#  endif
>> ++#  define NEED_OWN_BCOPY
>> ++#  define bcopy xbcopy
>> + # endif
>> + #endif
>> +
>> +diff --git a/osdef.h.in b/osdef.h.in
>> +index 8687b60..e4057a0 100644
>> +--- a/osdef.h.in
>> ++++ b/osdef.h.in
>> +@@ -58,16 +58,8 @@ extern int   bcmp __P((char *, char *, int));
>> + extern int   killpg __P((int, int));
>> + #endif
>> +
>> +-#ifndef USEBCOPY
>> +-# ifdef USEMEMCPY
>> +-extern void  memcpy __P((char *, char *, int));
>> +-# else
>> +-#  ifdef USEMEMMOVE
>> ++#if defined(USEMEMMOVE) && !defined(USEBCOPY)
>> + extern void  memmove __P((char *, char *, int));
>> +-#  else
>> +-extern void  bcopy __P((char *, char *, int));
>> +-#  endif
>> +-# endif
>> + #else
>> + extern void  bcopy __P((char *, char *, int));
>> + #endif
>> +--
>> +1.8.4.5
>> +
>> diff --git a/patches/screen-4.8.0/0002-install-no-backup-binary.patch b/patches/screen-4.8.0/0002-install-no-backup-binary.patch
>> new file mode 100644
>> index 000000000..7842662b5
>> --- /dev/null
>> +++ b/patches/screen-4.8.0/0002-install-no-backup-binary.patch
>> @@ -0,0 +1,41 @@
>> +From: Maarten ter Huurne <maarten@treewalker.org>
>> +Date: Sun, 14 Sep 2014 23:58:34 +0200
>> +Subject: Do not create backup of old installed binary
>> +
>> +This is a rather unusual feature that packagers will not expect.
>> +
>> +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
>> +[baruch: update for 4.6.2]
>> +Signed-off-by: Baruch Siach <baruch@tkos.co.il>
>> +---
>> + Makefile.in | 4 ----
>> + 1 file changed, 4 deletions(-)
>> +
>> +diff --git a/Makefile.in b/Makefile.in
>> +index 187a69b..65549e9 100644
>> +--- a/Makefile.in
>> ++++ b/Makefile.in
>> +@@ -83,12 +83,9 @@ screen: $(OFILES)
>> + 	    $(OPTIONS) $(CFLAGS) $<
>> +
>> + install_bin: .version screen installdirs
>> +-	-if [ -f $(DESTDIR)$(bindir)/$(SCREEN) ] && [ ! -f $(DESTDIR)$(bindir)/$(SCREEN).old ]; \
>> +-		then mv $(DESTDIR)$(bindir)/$(SCREEN) $(DESTDIR)$(bindir)/$(SCREEN).old; fi
>> + 	$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)
>> + 	-chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
>> + # This doesn't work if $(bindir)/screen is a symlink
>> +-	-if [ -f $(DESTDIR)$(bindir)/screen ] && [ ! -f $(DESTDIR)$(bindir)/screen.old ]; then mv $(DESTDIR)$(bindir)/screen $(DESTDIR)$(bindir)/screen.old; fi
>> + 	rm -f $(DESTDIR)$(bindir)/screen
>> + 	(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)
>> + 	cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS)
>> +@@ -113,7 +110,6 @@ installdirs:
>> + uninstall: .version
>> + 	rm -f $(DESTDIR)$(bindir)/$(SCREEN)
>> + 	rm -f $(DESTDIR)$(bindir)/screen
>> +-	-mv $(DESTDIR)$(bindir)/screen.old $(DESTDIR)$(bindir)/screen
>> + 	rm -f $(DESTDIR)$(ETCSCREENRC)
>> + 	cd doc; $(MAKE) uninstall
>> +
>> +--
>> +1.8.4.5
>> +
>> diff --git a/patches/screen-4.8.0/0003-install-always-chmod.patch b/patches/screen-4.8.0/0003-install-always-chmod.patch
>> new file mode 100644
>> index 000000000..0aa7690b0
>> --- /dev/null
>> +++ b/patches/screen-4.8.0/0003-install-always-chmod.patch
>> @@ -0,0 +1,29 @@
>> +From: Maarten ter Huurne <maarten@treewalker.org>
>> +Date: Mon, 15 Sep 2014 00:03:05 +0200
>> +Subject: Change binary permission flags even if chown fails
>> +
>> +Typically when creating a package, the build is not run as root, so
>> +the chown will fail. But the chmod can still be done.
>> +
>> +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
>> +---
>> + Makefile.in | 3 ++-
>> + 1 file changed, 2 insertions(+), 1 deletion(-)
>> +
>> +diff --git a/Makefile.in b/Makefile.in
>> +index 65549e9..3c12fdb 100644
>> +--- a/Makefile.in
>> ++++ b/Makefile.in
>> +@@ -84,7 +84,8 @@ screen: $(OFILES)
>> +
>> + install_bin: .version screen
>> + 	$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)
>> +-	-chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
>> ++	-chown root $(DESTDIR)$(bindir)/$(SCREEN)
>> ++	-chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
>> + # This doesn't work if $(bindir)/screen is a symlink
>> + 	rm -f $(DESTDIR)$(bindir)/screen
>> + 	(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)
>> +--
>> +1.8.4.5
>> +
>> diff --git a/patches/screen-4.8.0/0004-install-nonversioned-binary.patch b/patches/screen-4.8.0/0004-install-nonversioned-binary.patch
>> new file mode 100644
>> index 000000000..ecbbd6519
>> --- /dev/null
>> +++ b/patches/screen-4.8.0/0004-install-nonversioned-binary.patch
>> @@ -0,0 +1,31 @@
>> +From: Maarten ter Huurne <maarten@treewalker.org>
>> +Date: Mon, 15 Sep 2014 00:06:20 +0200
>> +Subject: Support overriding SCREEN to get a non-versioned binary
>> +
>> +If a packager runs "make install SCREEN=screen", do not create
>> +"screen" as a symlink to itself.
>> +
>> +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
>> +---
>> + Makefile.in | 2 ++
>> + 1 file changed, 2 insertions(+)
>> +
>> +diff --git a/Makefile.in b/Makefile.in
>> +index 3c12fdb..860f351 100644
>> +--- a/Makefile.in
>> ++++ b/Makefile.in
>> +@@ -86,9 +86,11 @@ install_bin: .version screen
>> + 	$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)
>> + 	-chown root $(DESTDIR)$(bindir)/$(SCREEN)
>> + 	-chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
>> ++ifneq (${SCREEN},screen)
>> + # This doesn't work if $(bindir)/screen is a symlink
>> + 	rm -f $(DESTDIR)$(bindir)/screen
>> + 	(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)
>> ++endif
>> + 	cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS)
>> +
>> + ###############################################################################
>> +--
>> +1.8.4.5
>> +
>> diff --git a/patches/screen-4.8.0/0005-rename-sched_h.patch b/patches/screen-4.8.0/0005-rename-sched_h.patch
>> new file mode 100644
>> index 000000000..9b29b76e0
>> --- /dev/null
>> +++ b/patches/screen-4.8.0/0005-rename-sched_h.patch
>> @@ -0,0 +1,142 @@
>> +From: Maarten ter Huurne <maarten@treewalker.org>
>> +Date: Mon, 15 Sep 2014 00:24:41 +0200
>> +Subject: Renamed sched.h to eventqueue.h
>> +
>> +There is a <sched.h> system header that got shadowed by "sched.h".
>> +While Screen itself doesn't include <sched.h>, other system headers
>> +might include it indirectly. This broke the build when using uClibc
>> +with pthread support.
>> +
>> +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
>> +---
>> + eventqueue.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
>> + sched.h      | 48 ------------------------------------------------
>> + screen.h     |  2 +-
>> + 3 files changed, 49 insertions(+), 49 deletions(-)
>> + create mode 100644 eventqueue.h
>> + delete mode 100644 sched.h
>> +
>> +diff --git a/eventqueue.h b/eventqueue.h
>> +new file mode 100644
>> +index 0000000..fdc3fc4
>> +--- /dev/null
>> ++++ b/eventqueue.h
>> +@@ -0,0 +1,48 @@
>> ++/* Copyright (c) 2008, 2009
>> ++ *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
>> ++ *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
>> ++ *      Micah Cowan (micah@cowan.name)
>> ++ *      Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
>> ++ * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
>> ++ *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
>> ++ *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
>> ++ * Copyright (c) 1987 Oliver Laumann
>> ++ *
>> ++ * This program is free software; you can redistribute it and/or modify
>> ++ * it under the terms of the GNU General Public License as published by
>> ++ * the Free Software Foundation; either version 3, or (at your option)
>> ++ * any later version.
>> ++ *
>> ++ * This program is distributed in the hope that it will be useful,
>> ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> ++ * GNU General Public License for more details.
>> ++ *
>> ++ * You should have received a copy of the GNU General Public License
>> ++ * along with this program (see the file COPYING); if not, see
>> ++ * https://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,
>> ++ * 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
>> ++ *
>> ++ ****************************************************************
>> ++ * $Id$ GNU
>> ++ */
>> ++
>> ++struct event
>> ++{
>> ++  struct event *next;
>> ++  void (*handler) __P((struct event *, char *));
>> ++  char *data;
>> ++  int fd;
>> ++  int type;
>> ++  int pri;
>> ++  struct timeval timeout;
>> ++  int queued;		/* in evs queue */
>> ++  int active;		/* in fdset */
>> ++  int *condpos;		/* only active if condpos - condneg > 0 */
>> ++  int *condneg;
>> ++};
>> ++
>> ++#define EV_TIMEOUT	0
>> ++#define EV_READ		1
>> ++#define EV_WRITE	2
>> ++#define EV_ALWAYS	3
>> +diff --git a/sched.h b/sched.h
>> +deleted file mode 100644
>> +index fdc3fc4..0000000
>> +--- a/sched.h
>> ++++ /dev/null
>> +@@ -1,48 +0,0 @@
>> +-/* Copyright (c) 2008, 2009
>> +- *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
>> +- *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
>> +- *      Micah Cowan (micah@cowan.name)
>> +- *      Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
>> +- * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
>> +- *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
>> +- *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
>> +- * Copyright (c) 1987 Oliver Laumann
>> +- *
>> +- * This program is free software; you can redistribute it and/or modify
>> +- * it under the terms of the GNU General Public License as published by
>> +- * the Free Software Foundation; either version 3, or (at your option)
>> +- * any later version.
>> +- *
>> +- * This program is distributed in the hope that it will be useful,
>> +- * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> +- * GNU General Public License for more details.
>> +- *
>> +- * You should have received a copy of the GNU General Public License
>> +- * along with this program (see the file COPYING); if not, see
>> +- * https://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,
>> +- * 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
>> +- *
>> +- ****************************************************************
>> +- * $Id$ GNU
>> +- */
>> +-
>> +-struct event
>> +-{
>> +-  struct event *next;
>> +-  void (*handler) __P((struct event *, char *));
>> +-  char *data;
>> +-  int fd;
>> +-  int type;
>> +-  int pri;
>> +-  struct timeval timeout;
>> +-  int queued;		/* in evs queue */
>> +-  int active;		/* in fdset */
>> +-  int *condpos;		/* only active if condpos - condneg > 0 */
>> +-  int *condneg;
>> +-};
>> +-
>> +-#define EV_TIMEOUT	0
>> +-#define EV_READ		1
>> +-#define EV_WRITE	2
>> +-#define EV_ALWAYS	3
>> +diff --git a/screen.h b/screen.h
>> +index 603ca3f..34238c8 100644
>> +--- a/screen.h
>> ++++ b/screen.h
>> +@@ -43,7 +43,7 @@
>> + #include "osdef.h"
>> +
>> + #include "ansi.h"
>> +-#include "sched.h"
>> ++#include "eventqueue.h"
>> + #include "acls.h"
>> + #include "comm.h"
>> + #include "layer.h"
>> +--
>> +1.8.4.5
>> +
>> diff --git a/patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch b/patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch
>> new file mode 100644
>> index 000000000..6ff6f3da0
>> --- /dev/null
>> +++ b/patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch
>> @@ -0,0 +1,28 @@
>> +From 39c5f1c76f1fcef4b5958bf828a63f53426b6984 Mon Sep 17 00:00:00 2001
>> +From: Mike Gerwitz <mike@mikegerwitz.com>
>> +Date: Tue, 24 Dec 2013 22:16:31 -0500
>> +Subject: comm.h now depends on term.h
>> +
>> +Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
>> +[Patch retrieved and updated from:
>> +http://git.savannah.gnu.org/cgit/screen.git/commit/?id=39c5f1c]
>> +---
>> + src/Makefile.in | 2 +-
>> + 1 file changed, 1 insertion(+), 1 deletion(-)
>> +
>> +diff --git a/Makefile.in b/Makefile.in
>> +index e791e79..d4f7c0b 100644
>> +--- a/Makefile.in
>> ++++ b/Makefile.in
>> +@@ -113,7 +113,7 @@ term.h: term.c term.sh
>> +
>> + kmapdef.c: term.h
>> +
>> +-comm.h: comm.c comm.sh config.h
>> ++comm.h: comm.c comm.sh config.h term.h
>> + 	AWK=$(AWK) CC="$(CC) $(CFLAGS)" srcdir=${srcdir} sh $(srcdir)/comm.sh
>> +
>> + docs:
>> +--
>> +cgit v1.0-41-gc330
>> +
>> diff --git a/patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch b/patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch
>> new file mode 100644
>> index 000000000..f406a1afa
>> --- /dev/null
>> +++ b/patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch
>> @@ -0,0 +1,35 @@
>> +From b719314d201a3e9e1e57c65746a468c47bfc847f Mon Sep 17 00:00:00 2001
>> +From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
>> +Date: Wed, 3 Oct 2018 22:29:32 +0200
>> +Subject: [PATCH] comm.h needed for list_{display,generic}.o
>> +
>> +comm.h is needed to build list_display.o and list_generic.o otherwise
>> +parallel builds will sometimes fail
>> +
>> +Fixes:
>> + - http://autobuild.buildroot.org/results/43105f14857dbe72d8878fc7b3db67f7bdca93cc
>> + - http://autobuild.buildroot.org/results/47f4ecbec1355285633df287fc9c4e7cccde9378
>> +
>> +Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
>> +[Upstream status: https://savannah.gnu.org/bugs/index.php?54776]
>> +---
>> + Makefile.in | 4 ++--
>> + 1 file changed, 2 insertions(+), 2 deletions(-)
>> +
>> +diff --git a/Makefile.in b/Makefile.in
>> +index af5938b..e6d5247 100644
>> +--- a/Makefile.in
>> ++++ b/Makefile.in
>> +@@ -265,7 +265,7 @@  braille.h
>> + viewport.o: layout.h viewport.h canvas.h viewport.c config.h screen.h os.h osdef.h ansi.h acls.h \
>> +  comm.h layer.h term.h image.h display.h window.h extern.h \
>> +  braille.h
>> +-list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h
>> +-list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h
>> ++list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h comm.h
>> ++list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h comm.h
>> + list_window.o: list_generic.h list_window.c window.h layer.h screen.h osdef.h comm.h
>> +
>> +--
>> +2.17.1
>> +
>> diff --git a/patches/screen-4.8.0/0008-CVE-2021-26937.patch b/patches/screen-4.8.0/0008-CVE-2021-26937.patch
>> new file mode 100644
>> index 000000000..df7efa029
>> --- /dev/null
>> +++ b/patches/screen-4.8.0/0008-CVE-2021-26937.patch
>> @@ -0,0 +1,68 @@
>> +Description: [CVE-2021-26937] Fix out of bounds array access
>> +Author: Michael Schröder <mls@suse.de>
>> +Bug-Debian: https://bugs.debian.org/982435
>> +Bug: https://savannah.gnu.org/bugs/?60030
>> +Bug: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00000.html
>> +Bug-OSS-Security: https://www.openwall.com/lists/oss-security/2021/02/09/3
>> +Origin: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00010.html
>> +
>> +Downloaded from Debian:
>> +https://sources.debian.org/data/main/s/screen/4.8.0-5/debian/patches/99_CVE-2021-26937.patch
>> +
>> +Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
>> +--- a/encoding.c
>> ++++ b/encoding.c
>> +@@ -43,7 +43,7 @@
>> + # ifdef UTF8
>> + static int   recode_char __P((int, int, int));
>> + static int   recode_char_to_encoding __P((int, int));
>> +-static void  comb_tofront __P((int, int));
>> ++static void  comb_tofront __P((int));
>> + #  ifdef DW_CHARS
>> + static int   recode_char_dw __P((int, int *, int, int));
>> + static int   recode_char_dw_to_encoding __P((int, int *, int));
>> +@@ -1263,6 +1263,8 @@
>> +     {0x30000, 0x3FFFD},
>> +   };
>> +
>> ++  if (c >= 0xdf00 && c <= 0xdfff)
>> ++    return 1;          /* dw combining sequence */
>> +   return ((bisearch(c, wide, sizeof(wide) / sizeof(struct interval) - 1)) ||
>> +           (cjkwidth &&
>> +            bisearch(c, ambiguous,
>> +@@ -1330,11 +1332,12 @@
>> + }
>> +
>> + static void
>> +-comb_tofront(root, i)
>> +-int root, i;
>> ++comb_tofront(i)
>> ++int i;
>> + {
>> +   for (;;)
>> +     {
>> ++      int root = i >= 0x700 ? 0x801 : 0x800;
>> +       debug1("bring to front: %x\n", i);
>> +       combchars[combchars[i]->prev]->next = combchars[i]->next;
>> +       combchars[combchars[i]->next]->prev = combchars[i]->prev;
>> +@@ -1396,9 +1399,9 @@
>> +     {
>> +       /* full, recycle old entry */
>> +       if (c1 >= 0xd800 && c1 < 0xe000)
>> +-        comb_tofront(root, c1 - 0xd800);
>> ++        comb_tofront(c1 - 0xd800);
>> +       i = combchars[root]->prev;
>> +-      if (c1 == i + 0xd800)
>> ++      if (i == 0x800 || i == 0x801 || c1 == i + 0xd800)
>> + 	{
>> + 	  /* completely full, can't recycle */
>> + 	  debug("utf8_handle_comp: completely full!\n");
>> +@@ -1422,7 +1425,7 @@
>> +   mc->font  = (i >> 8) + 0xd8;
>> +   mc->fontx = 0;
>> +   debug3("combinig char %x %x -> %x\n", c1, c, i + 0xd800);
>> +-  comb_tofront(root, i);
>> ++  comb_tofront(i);
>> + }
>> +
>> + #else /* !UTF8 */
>> diff --git a/patches/screen-4.8.0/series b/patches/screen-4.8.0/series
>> new file mode 100644
>> index 000000000..c72b2fd5f
>> --- /dev/null
>> +++ b/patches/screen-4.8.0/series
>> @@ -0,0 +1,9 @@
>> +0001-no-memcpy-fallback.patch
>> +0002-install-no-backup-binary.patch
>> +0003-install-always-chmod.patch
>> +0004-install-nonversioned-binary.patch
>> +0005-rename-sched_h.patch
>> +0006-comm-h-now-depends-on-term-h.patch
>> +0007-comm.h-needed-for-list_-display-generic-.o.patch
>> +0008-CVE-2021-26937.patch
>> +
>> diff --git a/rules/screen.make b/rules/screen.make
>> index 39a96dae2..1087dfc9d 100644
>> --- a/rules/screen.make
>> +++ b/rules/screen.make
>> @@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_SCREEN) += screen
>>   #
>>   # Paths and names
>>   #
>> -SCREEN_VERSION	:= 4.5.0
>> -SCREEN_MD5	:= a32105a91359afab1a4349209a028e31
>> +SCREEN_VERSION	:= 4.8.0
>> +SCREEN_MD5	:= d276213d3acd10339cd37848b8c4ab1e
>>   SCREEN		:= screen-$(SCREEN_VERSION)
>>   SCREEN_SUFFIX	:= tar.gz
>>   SCREEN_URL	:= $(call ptx/mirror, GNU, screen/$(SCREEN).$(SCREEN_SUFFIX))
>> -- 
>> 2.30.2
>>
>>
>> _______________________________________________
>> ptxdist mailing list
>> ptxdist@pengutronix.de
>> To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
> 

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [PATCH] screen: Version bump 4.5.0 -> 4.8.0
  2022-01-07  9:58     ` Christian Melki
@ 2022-01-07 11:05       ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-07 11:05 UTC (permalink / raw)
  To: Christian Melki; +Cc: ptxdist

On Fri, Jan 07, 2022 at 10:58:13AM +0100, Christian Melki wrote:
> On 1/6/22 11:55 AM, Michael Olbrich wrote:
> > On Wed, Dec 22, 2021 at 02:02:59PM +0100, Christian Melki wrote:
> > > Package maintenance.
> > > Fixes CVE-2021-26937, CVE-2020-9366, CVE-2017-5618
> > 
> > There are several old patches. Some are cross-compile fixes, others are
> > imported from Debian. I think some of them solve the same problem as your
> > patches. Where are yours from?
> > 
> > This whole thing needs some cleanup. I think you can ignore the Debian
> > patches. I can sort that out afterwards.
> > 
> > Also, if configure.ac is modified, then a autogen.sh link is needed.
> > 
> > Michael
> > 
> 
> Patches are from Buildroot.
> https://github.com/buildroot/buildroot/tree/master/package/screen
> 
> What do you need from me here? A new one with autogen.sh?
> What do I do with the old patches?

Actually, let me take care of it. I'll need to touch it anyways. So making
you redo the patch ist just a waste of time. So nothing to do for you.

Michael

> > 
> > > Signed-off-by: Christian Melki <christian.melki@t2data.com>
> > > ---
> > >   .../0001-no-memcpy-fallback.patch             | 126 ++++++++++++++++
> > >   .../0002-install-no-backup-binary.patch       |  41 +++++
> > >   .../0003-install-always-chmod.patch           |  29 ++++
> > >   .../0004-install-nonversioned-binary.patch    |  31 ++++
> > >   .../screen-4.8.0/0005-rename-sched_h.patch    | 142 ++++++++++++++++++
> > >   .../0006-comm-h-now-depends-on-term-h.patch   |  28 ++++
> > >   ...-needed-for-list_-display-generic-.o.patch |  35 +++++
> > >   .../screen-4.8.0/0008-CVE-2021-26937.patch    |  68 +++++++++
> > >   patches/screen-4.8.0/series                   |   9 ++
> > >   rules/screen.make                             |   4 +-
> > >   10 files changed, 511 insertions(+), 2 deletions(-)
> > >   create mode 100644 patches/screen-4.8.0/0001-no-memcpy-fallback.patch
> > >   create mode 100644 patches/screen-4.8.0/0002-install-no-backup-binary.patch
> > >   create mode 100644 patches/screen-4.8.0/0003-install-always-chmod.patch
> > >   create mode 100644 patches/screen-4.8.0/0004-install-nonversioned-binary.patch
> > >   create mode 100644 patches/screen-4.8.0/0005-rename-sched_h.patch
> > >   create mode 100644 patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch
> > >   create mode 100644 patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch
> > >   create mode 100644 patches/screen-4.8.0/0008-CVE-2021-26937.patch
> > >   create mode 100644 patches/screen-4.8.0/series
> > > 
> > > diff --git a/patches/screen-4.8.0/0001-no-memcpy-fallback.patch b/patches/screen-4.8.0/0001-no-memcpy-fallback.patch
> > > new file mode 100644
> > > index 000000000..213790719
> > > --- /dev/null
> > > +++ b/patches/screen-4.8.0/0001-no-memcpy-fallback.patch
> > > @@ -0,0 +1,126 @@
> > > +From: Maarten ter Huurne <maarten@treewalker.org>
> > > +Date: Sat, 13 Sep 2014 11:37:59 +0200
> > > +Subject: Do not use memcpy as an alternative for bcopy/memmove
> > > +
> > > +The configure script runs a small test program to check whether
> > > +memcpy can handle overlapping memory areas. However, it is not valid
> > > +to conclude that if a single case of overlapping memory is handled
> > > +correctly, all cases will be handled correctly.
> > > +
> > > +Since screen already has its own bcopy implementation as a fallback
> > > +for the case that bcopy and memmove are unusable, removing the memcpy
> > > +option should not break any systems.
> > > +
> > > +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
> > > +[Ricardo: rebase on top of 4.3.1]
> > > +Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
> > > +[Bernd: rebase on top of 4.7.0]
> > > +Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
> > > +---
> > > + acconfig.h   |  3 +--
> > > + configure.ac | 18 +-----------------
> > > + os.h         |  8 ++------
> > > + osdef.h.in   | 10 +---------
> > > + 4 files changed, 5 insertions(+), 34 deletions(-)
> > > +
> > > +diff --git a/acconfig.h b/acconfig.h
> > > +index 2e46985..9b0b9d4 100644
> > > +--- a/acconfig.h
> > > ++++ b/acconfig.h
> > > +@@ -476,7 +476,7 @@
> > > + #undef GETTTYENT
> > > +
> > > + /*
> > > +- * Define USEBCOPY if the bcopy/memcpy from your system's C library
> > > ++ * Define USEBCOPY if the bcopy from your system's C library
> > > +  * supports the overlapping of source and destination blocks.  When
> > > +  * undefined, screen uses its own (probably slower) version of bcopy().
> > > +  *
> > > +@@ -487,7 +487,6 @@
> > > +  * Their memove fails the test in the configure script. Sigh. (Juergen)
> > > +  */
> > > + #undef USEBCOPY
> > > +-#undef USEMEMCPY
> > > + #undef USEMEMMOVE
> > > +
> > > + /*
> > > +diff --git a/configure.ac b/configure.ac
> > > +index 27690a6..b8e3bec 100644
> > > +--- a/configure.ac
> > > ++++ b/configure.ac
> > > +@@ -1145,7 +1145,7 @@ AC_TRY_LINK(,[getttyent();], AC_DEFINE(GETTTYENT))
> > > + AC_CHECKING(fdwalk)
> > > + AC_TRY_LINK([#include <stdlib.h>], [fdwalk(NULL, NULL);],AC_DEFINE(HAVE_FDWALK))
> > > +
> > > +-AC_CHECKING(whether memcpy/memmove/bcopy handles overlapping arguments)
> > > ++AC_CHECKING(whether memmove/bcopy handles overlapping arguments)
> > > + AC_TRY_RUN([
> > > + main() {
> > > +   char buf[10];
> > > +@@ -1175,22 +1175,6 @@ main() {
> > > +   exit(0); /* libc version works properly.  */
> > > + }], AC_DEFINE(USEMEMMOVE))
> > > +
> > > +-
> > > +-AC_TRY_RUN([
> > > +-#define bcopy(s,d,l) memcpy(d,s,l)
> > > +-main() {
> > > +-  char buf[10];
> > > +-  strcpy(buf, "abcdefghi");
> > > +-  bcopy(buf, buf + 2, 3);
> > > +-  if (strncmp(buf, "ababcf", 6))
> > > +-    exit(1);
> > > +-  strcpy(buf, "abcdefghi");
> > > +-  bcopy(buf + 2, buf, 3);
> > > +-  if (strncmp(buf, "cdedef", 6))
> > > +-    exit(1);
> > > +-  exit(0); /* libc version works properly.  */
> > > +-}], AC_DEFINE(USEMEMCPY),,:)
> > > +-
> > > + AC_SYS_LONG_FILE_NAMES
> > > +
> > > + AC_MSG_CHECKING(for vsprintf)
> > > +diff --git a/os.h b/os.h
> > > +index e827ac9..0b41fb9 100644
> > > +--- a/os.h
> > > ++++ b/os.h
> > > +@@ -142,12 +142,8 @@ extern int errno;
> > > + # ifdef USEMEMMOVE
> > > + #  define bcopy(s,d,len) memmove(d,s,len)
> > > + # else
> > > +-#  ifdef USEMEMCPY
> > > +-#   define bcopy(s,d,len) memcpy(d,s,len)
> > > +-#  else
> > > +-#   define NEED_OWN_BCOPY
> > > +-#   define bcopy xbcopy
> > > +-#  endif
> > > ++#  define NEED_OWN_BCOPY
> > > ++#  define bcopy xbcopy
> > > + # endif
> > > + #endif
> > > +
> > > +diff --git a/osdef.h.in b/osdef.h.in
> > > +index 8687b60..e4057a0 100644
> > > +--- a/osdef.h.in
> > > ++++ b/osdef.h.in
> > > +@@ -58,16 +58,8 @@ extern int   bcmp __P((char *, char *, int));
> > > + extern int   killpg __P((int, int));
> > > + #endif
> > > +
> > > +-#ifndef USEBCOPY
> > > +-# ifdef USEMEMCPY
> > > +-extern void  memcpy __P((char *, char *, int));
> > > +-# else
> > > +-#  ifdef USEMEMMOVE
> > > ++#if defined(USEMEMMOVE) && !defined(USEBCOPY)
> > > + extern void  memmove __P((char *, char *, int));
> > > +-#  else
> > > +-extern void  bcopy __P((char *, char *, int));
> > > +-#  endif
> > > +-# endif
> > > + #else
> > > + extern void  bcopy __P((char *, char *, int));
> > > + #endif
> > > +--
> > > +1.8.4.5
> > > +
> > > diff --git a/patches/screen-4.8.0/0002-install-no-backup-binary.patch b/patches/screen-4.8.0/0002-install-no-backup-binary.patch
> > > new file mode 100644
> > > index 000000000..7842662b5
> > > --- /dev/null
> > > +++ b/patches/screen-4.8.0/0002-install-no-backup-binary.patch
> > > @@ -0,0 +1,41 @@
> > > +From: Maarten ter Huurne <maarten@treewalker.org>
> > > +Date: Sun, 14 Sep 2014 23:58:34 +0200
> > > +Subject: Do not create backup of old installed binary
> > > +
> > > +This is a rather unusual feature that packagers will not expect.
> > > +
> > > +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
> > > +[baruch: update for 4.6.2]
> > > +Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> > > +---
> > > + Makefile.in | 4 ----
> > > + 1 file changed, 4 deletions(-)
> > > +
> > > +diff --git a/Makefile.in b/Makefile.in
> > > +index 187a69b..65549e9 100644
> > > +--- a/Makefile.in
> > > ++++ b/Makefile.in
> > > +@@ -83,12 +83,9 @@ screen: $(OFILES)
> > > + 	    $(OPTIONS) $(CFLAGS) $<
> > > +
> > > + install_bin: .version screen installdirs
> > > +-	-if [ -f $(DESTDIR)$(bindir)/$(SCREEN) ] && [ ! -f $(DESTDIR)$(bindir)/$(SCREEN).old ]; \
> > > +-		then mv $(DESTDIR)$(bindir)/$(SCREEN) $(DESTDIR)$(bindir)/$(SCREEN).old; fi
> > > + 	$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)
> > > + 	-chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
> > > + # This doesn't work if $(bindir)/screen is a symlink
> > > +-	-if [ -f $(DESTDIR)$(bindir)/screen ] && [ ! -f $(DESTDIR)$(bindir)/screen.old ]; then mv $(DESTDIR)$(bindir)/screen $(DESTDIR)$(bindir)/screen.old; fi
> > > + 	rm -f $(DESTDIR)$(bindir)/screen
> > > + 	(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)
> > > + 	cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS)
> > > +@@ -113,7 +110,6 @@ installdirs:
> > > + uninstall: .version
> > > + 	rm -f $(DESTDIR)$(bindir)/$(SCREEN)
> > > + 	rm -f $(DESTDIR)$(bindir)/screen
> > > +-	-mv $(DESTDIR)$(bindir)/screen.old $(DESTDIR)$(bindir)/screen
> > > + 	rm -f $(DESTDIR)$(ETCSCREENRC)
> > > + 	cd doc; $(MAKE) uninstall
> > > +
> > > +--
> > > +1.8.4.5
> > > +
> > > diff --git a/patches/screen-4.8.0/0003-install-always-chmod.patch b/patches/screen-4.8.0/0003-install-always-chmod.patch
> > > new file mode 100644
> > > index 000000000..0aa7690b0
> > > --- /dev/null
> > > +++ b/patches/screen-4.8.0/0003-install-always-chmod.patch
> > > @@ -0,0 +1,29 @@
> > > +From: Maarten ter Huurne <maarten@treewalker.org>
> > > +Date: Mon, 15 Sep 2014 00:03:05 +0200
> > > +Subject: Change binary permission flags even if chown fails
> > > +
> > > +Typically when creating a package, the build is not run as root, so
> > > +the chown will fail. But the chmod can still be done.
> > > +
> > > +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
> > > +---
> > > + Makefile.in | 3 ++-
> > > + 1 file changed, 2 insertions(+), 1 deletion(-)
> > > +
> > > +diff --git a/Makefile.in b/Makefile.in
> > > +index 65549e9..3c12fdb 100644
> > > +--- a/Makefile.in
> > > ++++ b/Makefile.in
> > > +@@ -84,7 +84,8 @@ screen: $(OFILES)
> > > +
> > > + install_bin: .version screen
> > > + 	$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)
> > > +-	-chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
> > > ++	-chown root $(DESTDIR)$(bindir)/$(SCREEN)
> > > ++	-chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
> > > + # This doesn't work if $(bindir)/screen is a symlink
> > > + 	rm -f $(DESTDIR)$(bindir)/screen
> > > + 	(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)
> > > +--
> > > +1.8.4.5
> > > +
> > > diff --git a/patches/screen-4.8.0/0004-install-nonversioned-binary.patch b/patches/screen-4.8.0/0004-install-nonversioned-binary.patch
> > > new file mode 100644
> > > index 000000000..ecbbd6519
> > > --- /dev/null
> > > +++ b/patches/screen-4.8.0/0004-install-nonversioned-binary.patch
> > > @@ -0,0 +1,31 @@
> > > +From: Maarten ter Huurne <maarten@treewalker.org>
> > > +Date: Mon, 15 Sep 2014 00:06:20 +0200
> > > +Subject: Support overriding SCREEN to get a non-versioned binary
> > > +
> > > +If a packager runs "make install SCREEN=screen", do not create
> > > +"screen" as a symlink to itself.
> > > +
> > > +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
> > > +---
> > > + Makefile.in | 2 ++
> > > + 1 file changed, 2 insertions(+)
> > > +
> > > +diff --git a/Makefile.in b/Makefile.in
> > > +index 3c12fdb..860f351 100644
> > > +--- a/Makefile.in
> > > ++++ b/Makefile.in
> > > +@@ -86,9 +86,11 @@ install_bin: .version screen
> > > + 	$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)
> > > + 	-chown root $(DESTDIR)$(bindir)/$(SCREEN)
> > > + 	-chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
> > > ++ifneq (${SCREEN},screen)
> > > + # This doesn't work if $(bindir)/screen is a symlink
> > > + 	rm -f $(DESTDIR)$(bindir)/screen
> > > + 	(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)
> > > ++endif
> > > + 	cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS)
> > > +
> > > + ###############################################################################
> > > +--
> > > +1.8.4.5
> > > +
> > > diff --git a/patches/screen-4.8.0/0005-rename-sched_h.patch b/patches/screen-4.8.0/0005-rename-sched_h.patch
> > > new file mode 100644
> > > index 000000000..9b29b76e0
> > > --- /dev/null
> > > +++ b/patches/screen-4.8.0/0005-rename-sched_h.patch
> > > @@ -0,0 +1,142 @@
> > > +From: Maarten ter Huurne <maarten@treewalker.org>
> > > +Date: Mon, 15 Sep 2014 00:24:41 +0200
> > > +Subject: Renamed sched.h to eventqueue.h
> > > +
> > > +There is a <sched.h> system header that got shadowed by "sched.h".
> > > +While Screen itself doesn't include <sched.h>, other system headers
> > > +might include it indirectly. This broke the build when using uClibc
> > > +with pthread support.
> > > +
> > > +Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
> > > +---
> > > + eventqueue.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
> > > + sched.h      | 48 ------------------------------------------------
> > > + screen.h     |  2 +-
> > > + 3 files changed, 49 insertions(+), 49 deletions(-)
> > > + create mode 100644 eventqueue.h
> > > + delete mode 100644 sched.h
> > > +
> > > +diff --git a/eventqueue.h b/eventqueue.h
> > > +new file mode 100644
> > > +index 0000000..fdc3fc4
> > > +--- /dev/null
> > > ++++ b/eventqueue.h
> > > +@@ -0,0 +1,48 @@
> > > ++/* Copyright (c) 2008, 2009
> > > ++ *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
> > > ++ *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
> > > ++ *      Micah Cowan (micah@cowan.name)
> > > ++ *      Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
> > > ++ * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
> > > ++ *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
> > > ++ *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
> > > ++ * Copyright (c) 1987 Oliver Laumann
> > > ++ *
> > > ++ * This program is free software; you can redistribute it and/or modify
> > > ++ * it under the terms of the GNU General Public License as published by
> > > ++ * the Free Software Foundation; either version 3, or (at your option)
> > > ++ * any later version.
> > > ++ *
> > > ++ * This program is distributed in the hope that it will be useful,
> > > ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > > ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > > ++ * GNU General Public License for more details.
> > > ++ *
> > > ++ * You should have received a copy of the GNU General Public License
> > > ++ * along with this program (see the file COPYING); if not, see
> > > ++ * https://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,
> > > ++ * 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
> > > ++ *
> > > ++ ****************************************************************
> > > ++ * $Id$ GNU
> > > ++ */
> > > ++
> > > ++struct event
> > > ++{
> > > ++  struct event *next;
> > > ++  void (*handler) __P((struct event *, char *));
> > > ++  char *data;
> > > ++  int fd;
> > > ++  int type;
> > > ++  int pri;
> > > ++  struct timeval timeout;
> > > ++  int queued;		/* in evs queue */
> > > ++  int active;		/* in fdset */
> > > ++  int *condpos;		/* only active if condpos - condneg > 0 */
> > > ++  int *condneg;
> > > ++};
> > > ++
> > > ++#define EV_TIMEOUT	0
> > > ++#define EV_READ		1
> > > ++#define EV_WRITE	2
> > > ++#define EV_ALWAYS	3
> > > +diff --git a/sched.h b/sched.h
> > > +deleted file mode 100644
> > > +index fdc3fc4..0000000
> > > +--- a/sched.h
> > > ++++ /dev/null
> > > +@@ -1,48 +0,0 @@
> > > +-/* Copyright (c) 2008, 2009
> > > +- *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
> > > +- *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
> > > +- *      Micah Cowan (micah@cowan.name)
> > > +- *      Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
> > > +- * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
> > > +- *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
> > > +- *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
> > > +- * Copyright (c) 1987 Oliver Laumann
> > > +- *
> > > +- * This program is free software; you can redistribute it and/or modify
> > > +- * it under the terms of the GNU General Public License as published by
> > > +- * the Free Software Foundation; either version 3, or (at your option)
> > > +- * any later version.
> > > +- *
> > > +- * This program is distributed in the hope that it will be useful,
> > > +- * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > > +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > > +- * GNU General Public License for more details.
> > > +- *
> > > +- * You should have received a copy of the GNU General Public License
> > > +- * along with this program (see the file COPYING); if not, see
> > > +- * https://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,
> > > +- * 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
> > > +- *
> > > +- ****************************************************************
> > > +- * $Id$ GNU
> > > +- */
> > > +-
> > > +-struct event
> > > +-{
> > > +-  struct event *next;
> > > +-  void (*handler) __P((struct event *, char *));
> > > +-  char *data;
> > > +-  int fd;
> > > +-  int type;
> > > +-  int pri;
> > > +-  struct timeval timeout;
> > > +-  int queued;		/* in evs queue */
> > > +-  int active;		/* in fdset */
> > > +-  int *condpos;		/* only active if condpos - condneg > 0 */
> > > +-  int *condneg;
> > > +-};
> > > +-
> > > +-#define EV_TIMEOUT	0
> > > +-#define EV_READ		1
> > > +-#define EV_WRITE	2
> > > +-#define EV_ALWAYS	3
> > > +diff --git a/screen.h b/screen.h
> > > +index 603ca3f..34238c8 100644
> > > +--- a/screen.h
> > > ++++ b/screen.h
> > > +@@ -43,7 +43,7 @@
> > > + #include "osdef.h"
> > > +
> > > + #include "ansi.h"
> > > +-#include "sched.h"
> > > ++#include "eventqueue.h"
> > > + #include "acls.h"
> > > + #include "comm.h"
> > > + #include "layer.h"
> > > +--
> > > +1.8.4.5
> > > +
> > > diff --git a/patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch b/patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch
> > > new file mode 100644
> > > index 000000000..6ff6f3da0
> > > --- /dev/null
> > > +++ b/patches/screen-4.8.0/0006-comm-h-now-depends-on-term-h.patch
> > > @@ -0,0 +1,28 @@
> > > +From 39c5f1c76f1fcef4b5958bf828a63f53426b6984 Mon Sep 17 00:00:00 2001
> > > +From: Mike Gerwitz <mike@mikegerwitz.com>
> > > +Date: Tue, 24 Dec 2013 22:16:31 -0500
> > > +Subject: comm.h now depends on term.h
> > > +
> > > +Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> > > +[Patch retrieved and updated from:
> > > +http://git.savannah.gnu.org/cgit/screen.git/commit/?id=39c5f1c]
> > > +---
> > > + src/Makefile.in | 2 +-
> > > + 1 file changed, 1 insertion(+), 1 deletion(-)
> > > +
> > > +diff --git a/Makefile.in b/Makefile.in
> > > +index e791e79..d4f7c0b 100644
> > > +--- a/Makefile.in
> > > ++++ b/Makefile.in
> > > +@@ -113,7 +113,7 @@ term.h: term.c term.sh
> > > +
> > > + kmapdef.c: term.h
> > > +
> > > +-comm.h: comm.c comm.sh config.h
> > > ++comm.h: comm.c comm.sh config.h term.h
> > > + 	AWK=$(AWK) CC="$(CC) $(CFLAGS)" srcdir=${srcdir} sh $(srcdir)/comm.sh
> > > +
> > > + docs:
> > > +--
> > > +cgit v1.0-41-gc330
> > > +
> > > diff --git a/patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch b/patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch
> > > new file mode 100644
> > > index 000000000..f406a1afa
> > > --- /dev/null
> > > +++ b/patches/screen-4.8.0/0007-comm.h-needed-for-list_-display-generic-.o.patch
> > > @@ -0,0 +1,35 @@
> > > +From b719314d201a3e9e1e57c65746a468c47bfc847f Mon Sep 17 00:00:00 2001
> > > +From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> > > +Date: Wed, 3 Oct 2018 22:29:32 +0200
> > > +Subject: [PATCH] comm.h needed for list_{display,generic}.o
> > > +
> > > +comm.h is needed to build list_display.o and list_generic.o otherwise
> > > +parallel builds will sometimes fail
> > > +
> > > +Fixes:
> > > + - http://autobuild.buildroot.org/results/43105f14857dbe72d8878fc7b3db67f7bdca93cc
> > > + - http://autobuild.buildroot.org/results/47f4ecbec1355285633df287fc9c4e7cccde9378
> > > +
> > > +Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> > > +[Upstream status: https://savannah.gnu.org/bugs/index.php?54776]
> > > +---
> > > + Makefile.in | 4 ++--
> > > + 1 file changed, 2 insertions(+), 2 deletions(-)
> > > +
> > > +diff --git a/Makefile.in b/Makefile.in
> > > +index af5938b..e6d5247 100644
> > > +--- a/Makefile.in
> > > ++++ b/Makefile.in
> > > +@@ -265,7 +265,7 @@  braille.h
> > > + viewport.o: layout.h viewport.h canvas.h viewport.c config.h screen.h os.h osdef.h ansi.h acls.h \
> > > +  comm.h layer.h term.h image.h display.h window.h extern.h \
> > > +  braille.h
> > > +-list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h
> > > +-list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h
> > > ++list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h comm.h
> > > ++list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h comm.h
> > > + list_window.o: list_generic.h list_window.c window.h layer.h screen.h osdef.h comm.h
> > > +
> > > +--
> > > +2.17.1
> > > +
> > > diff --git a/patches/screen-4.8.0/0008-CVE-2021-26937.patch b/patches/screen-4.8.0/0008-CVE-2021-26937.patch
> > > new file mode 100644
> > > index 000000000..df7efa029
> > > --- /dev/null
> > > +++ b/patches/screen-4.8.0/0008-CVE-2021-26937.patch
> > > @@ -0,0 +1,68 @@
> > > +Description: [CVE-2021-26937] Fix out of bounds array access
> > > +Author: Michael Schröder <mls@suse.de>
> > > +Bug-Debian: https://bugs.debian.org/982435
> > > +Bug: https://savannah.gnu.org/bugs/?60030
> > > +Bug: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00000.html
> > > +Bug-OSS-Security: https://www.openwall.com/lists/oss-security/2021/02/09/3
> > > +Origin: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00010.html
> > > +
> > > +Downloaded from Debian:
> > > +https://sources.debian.org/data/main/s/screen/4.8.0-5/debian/patches/99_CVE-2021-26937.patch
> > > +
> > > +Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
> > > +--- a/encoding.c
> > > ++++ b/encoding.c
> > > +@@ -43,7 +43,7 @@
> > > + # ifdef UTF8
> > > + static int   recode_char __P((int, int, int));
> > > + static int   recode_char_to_encoding __P((int, int));
> > > +-static void  comb_tofront __P((int, int));
> > > ++static void  comb_tofront __P((int));
> > > + #  ifdef DW_CHARS
> > > + static int   recode_char_dw __P((int, int *, int, int));
> > > + static int   recode_char_dw_to_encoding __P((int, int *, int));
> > > +@@ -1263,6 +1263,8 @@
> > > +     {0x30000, 0x3FFFD},
> > > +   };
> > > +
> > > ++  if (c >= 0xdf00 && c <= 0xdfff)
> > > ++    return 1;          /* dw combining sequence */
> > > +   return ((bisearch(c, wide, sizeof(wide) / sizeof(struct interval) - 1)) ||
> > > +           (cjkwidth &&
> > > +            bisearch(c, ambiguous,
> > > +@@ -1330,11 +1332,12 @@
> > > + }
> > > +
> > > + static void
> > > +-comb_tofront(root, i)
> > > +-int root, i;
> > > ++comb_tofront(i)
> > > ++int i;
> > > + {
> > > +   for (;;)
> > > +     {
> > > ++      int root = i >= 0x700 ? 0x801 : 0x800;
> > > +       debug1("bring to front: %x\n", i);
> > > +       combchars[combchars[i]->prev]->next = combchars[i]->next;
> > > +       combchars[combchars[i]->next]->prev = combchars[i]->prev;
> > > +@@ -1396,9 +1399,9 @@
> > > +     {
> > > +       /* full, recycle old entry */
> > > +       if (c1 >= 0xd800 && c1 < 0xe000)
> > > +-        comb_tofront(root, c1 - 0xd800);
> > > ++        comb_tofront(c1 - 0xd800);
> > > +       i = combchars[root]->prev;
> > > +-      if (c1 == i + 0xd800)
> > > ++      if (i == 0x800 || i == 0x801 || c1 == i + 0xd800)
> > > + 	{
> > > + 	  /* completely full, can't recycle */
> > > + 	  debug("utf8_handle_comp: completely full!\n");
> > > +@@ -1422,7 +1425,7 @@
> > > +   mc->font  = (i >> 8) + 0xd8;
> > > +   mc->fontx = 0;
> > > +   debug3("combinig char %x %x -> %x\n", c1, c, i + 0xd800);
> > > +-  comb_tofront(root, i);
> > > ++  comb_tofront(i);
> > > + }
> > > +
> > > + #else /* !UTF8 */
> > > diff --git a/patches/screen-4.8.0/series b/patches/screen-4.8.0/series
> > > new file mode 100644
> > > index 000000000..c72b2fd5f
> > > --- /dev/null
> > > +++ b/patches/screen-4.8.0/series
> > > @@ -0,0 +1,9 @@
> > > +0001-no-memcpy-fallback.patch
> > > +0002-install-no-backup-binary.patch
> > > +0003-install-always-chmod.patch
> > > +0004-install-nonversioned-binary.patch
> > > +0005-rename-sched_h.patch
> > > +0006-comm-h-now-depends-on-term-h.patch
> > > +0007-comm.h-needed-for-list_-display-generic-.o.patch
> > > +0008-CVE-2021-26937.patch
> > > +
> > > diff --git a/rules/screen.make b/rules/screen.make
> > > index 39a96dae2..1087dfc9d 100644
> > > --- a/rules/screen.make
> > > +++ b/rules/screen.make
> > > @@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_SCREEN) += screen
> > >   #
> > >   # Paths and names
> > >   #
> > > -SCREEN_VERSION	:= 4.5.0
> > > -SCREEN_MD5	:= a32105a91359afab1a4349209a028e31
> > > +SCREEN_VERSION	:= 4.8.0
> > > +SCREEN_MD5	:= d276213d3acd10339cd37848b8c4ab1e
> > >   SCREEN		:= screen-$(SCREEN_VERSION)
> > >   SCREEN_SUFFIX	:= tar.gz
> > >   SCREEN_URL	:= $(call ptx/mirror, GNU, screen/$(SCREEN).$(SCREEN_SUFFIX))
> > > -- 
> > > 2.30.2
> > > 
> > > 
> > > _______________________________________________
> > > ptxdist mailing list
> > > ptxdist@pengutronix.de
> > > To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
> > 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] bridge-utils: Version bump. 1.6 -> 1.7.1
  2021-12-22 13:02 ` [ptxdist] [PATCH] bridge-utils: Version bump. 1.6 -> 1.7.1 Christian Melki
@ 2022-01-21  7:18   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:18 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as 23d607c9a9e746cd075dca00f3c2c80aa13cc852.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:18:58 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Package maintenance.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-2-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/patches/bridge-utils-1.6/autogen.sh b/patches/bridge-utils-1.7.1/autogen.sh
> similarity index 100%
> rename from patches/bridge-utils-1.6/autogen.sh
> rename to patches/bridge-utils-1.7.1/autogen.sh
> diff --git a/rules/bridge-utils.make b/rules/bridge-utils.make
> index c0721759ddd6..9034e65509e3 100644
> --- a/rules/bridge-utils.make
> +++ b/rules/bridge-utils.make
> @@ -15,10 +15,10 @@ PACKAGES-$(PTXCONF_BRIDGE_UTILS) += bridge-utils
>  #
>  # Paths and names
>  #
> -BRIDGE_UTILS_VERSION	:= 1.6
> -BRIDGE_UTILS_MD5	:= f369e90e85e4bb46baa26a7b9d66b578
> +BRIDGE_UTILS_VERSION	:= 1.7.1
> +BRIDGE_UTILS_MD5	:= 3e1fee4dc22cac5457c2f6ffb990a518
>  BRIDGE_UTILS		:= bridge-utils-$(BRIDGE_UTILS_VERSION)
> -BRIDGE_UTILS_SUFFIX	:= tar.gz
> +BRIDGE_UTILS_SUFFIX	:= tar.xz
>  BRIDGE_UTILS_URL	:= https://www.kernel.org/pub/linux/utils/net/bridge-utils/$(BRIDGE_UTILS).$(BRIDGE_UTILS_SUFFIX)
>  BRIDGE_UTILS_SOURCE	:= $(SRCDIR)/$(BRIDGE_UTILS).$(BRIDGE_UTILS_SUFFIX)
>  BRIDGE_UTILS_DIR	:= $(BUILDDIR)/$(BRIDGE_UTILS)

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] curl: Version bump 7.77.0 -> 7.80.0
  2021-12-22 13:02 ` [ptxdist] [PATCH] curl: Version bump 7.77.0 -> 7.80.0 Christian Melki
@ 2022-01-21  7:19   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as fbd2255619933e27bbbabb88f0429a6fc8ea5010.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:18:59 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Fixes CVE-2021-22947, CVE-2021-22946, CVE-2021-22945
> 
> Change tarball compression to xz instead of bz2.
> Remove enable-symbol-hiding.
> Rename get-easy-option to get-easy-options.
> Remove without-metalink, deprecated.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-3-christian.melki@t2data.com>
> [mol: update host-libcurl options]
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/rules/host-libcurl.make b/rules/host-libcurl.make
> index 1a2a1fcf567a..e08f720b713d 100644
> --- a/rules/host-libcurl.make
> +++ b/rules/host-libcurl.make
> @@ -21,55 +21,92 @@ HOST_PACKAGES-$(PTXCONF_HOST_LIBCURL) += host-libcurl
>  HOST_LIBCURL_CONF_TOOL	:= autoconf
>  HOST_LIBCURL_CONF_OPT	:= \
>  	$(HOST_AUTOCONF) \
> -	--with-random=/dev/urandom \
> -	--without-zlib \
>  	\
> +	--enable-optimize \
> +	--disable-warnings \
> +	--disable-werror \
> +	--disable-curldebug \
> +	--enable-symbol-hiding \
> +	--disable-ares \
> +	--enable-rt \
> +	--disable-ech \
> +	--disable-code-coverage \
> +	--enable-http \
> +	--disable-ftp \
> +	--disable-file \
>  	--disable-ldap \
>  	--disable-ldaps \
>  	--disable-rtsp \
> +	--enable-proxy \
>  	--disable-dict \
>  	--disable-telnet \
> +	--disable-tftp \
>  	--disable-pop3 \
>  	--disable-imap \
>  	--disable-smb \
>  	--disable-smtp \
>  	--disable-gopher \
> +	--disable-mqtt \
>  	--disable-manual \
> -	\
> +	--enable-libcurl-option \
> +	--disable-libgcc \
> +	--enable-ipv6 \
> +	--enable-openssl-auto-load-config \
> +	--disable-versioned-symbols \
> +	--disable-threaded-resolver \
> +	--enable-pthreads \
> +	--disable-verbose \
>  	--disable-sspi \
> +	--disable-crypto-auth \
> +	--disable-ntlm \
>  	--disable-ntlm-wb \
> -	--disable-debug \
> -	--disable-verbose \
> -	\
> -	--enable-thread \
> -	--enable-nonblocking\
> -	--enable-hidden-symbols \
> -	--enable-proxy \
> -	\
> -	--without-krb4 \
> -	--without-spnego \
> -	--without-gssapi \
> -	--without-winssl \
> -	--without-darwinssl \
> +	--disable-tls-srp \
> +	--enable-unix-sockets \
> +	--disable-cookies \
> +	--enable-socketpair \
> +	--disable-http-auth \
> +	--disable-doh \
> +	--disable-mime \
> +	--enable-dateparse \
> +	--disable-netrc \
> +	--enable-progress-meter \
> +	--disable-dnsshuffle \
> +	--enable-get-easy-options \
> +	--disable-alt-svc \
> +	--enable-hsts \
> +	--without-schannel \
> +	--without-secure-transport \
> +	--without-amissl \
> +	--with-openssl=$(PTXDIST_SYSROOT_HOST) \
>  	--without-gnutls \
> +	--without-mbedtls \
> +	--without-wolfssl \
> +	--without-mesalink \
> +	--without-bearssl \
> +	--without-rustls \
>  	--without-nss \
> -	--without-winidn \
> -	--without-libidn \
> -	--without-axtls \
> -	--without-polarssl \
> -	--without-cyassl \
> +	--without-hyper \
> +	--without-zlib \
> +	--without-brotli \
> +	--without-zstd \
> +	--without-gssapi \
> +	--with-default-ssl-backend=openssl \
> +	--with-random=/dev/urandom \
> +	--without-ca-fallback \
> +	--without-libpsl \
> +	--without-libgsasl \
> +	--without-libssh2 \
> +	--without-libssh \
> +	--without-wolfssh \
>  	--without-librtmp \
> -	\
> -	--disable-ares \
> -	--enable-http \
> -	--disable-nghttp2 \
> -	--disable-cookies \
> -	--disable-ftp \
> -	--disable-tftp \
> -	--disable-file \
> -	--disable-crypto-auth \
> -	--disable-libssh2 \
> -	--with-ssl
> +	--without-winidn \
> +	--without-libidn2 \
> +	--without-nghttp2 \
> +	--without-ngtcp2 \
> +	--without-nghttp3 \
> +	--without-quiche \
> +	--without-zsh-functions-dir \
> +	--without-fish-functions-dir
>  
>  $(STATEDIR)/host-libcurl.install:
>  	@$(call targetinfo)
> diff --git a/rules/libcurl.make b/rules/libcurl.make
> index 2e68e51ea930..fcf042f9dec6 100644
> --- a/rules/libcurl.make
> +++ b/rules/libcurl.make
> @@ -15,10 +15,10 @@ PACKAGES-$(PTXCONF_LIBCURL) += libcurl
>  #
>  # Paths and names
>  #
> -LIBCURL_VERSION	:= 7.77.0
> -LIBCURL_MD5	:= 045d28029679dabb6b20a814934671ad
> +LIBCURL_VERSION	:= 7.80.0
> +LIBCURL_MD5	:= cf9f8553762150ef0ebcd5ee412737f5
>  LIBCURL		:= curl-$(LIBCURL_VERSION)
> -LIBCURL_SUFFIX	:= tar.bz2
> +LIBCURL_SUFFIX	:= tar.xz
>  LIBCURL_URL	:= https://curl.haxx.se/download/$(LIBCURL).$(LIBCURL_SUFFIX)
>  LIBCURL_SOURCE	:= $(SRCDIR)/$(LIBCURL).$(LIBCURL_SUFFIX)
>  LIBCURL_DIR	:= $(BUILDDIR)/$(LIBCURL)
> @@ -40,7 +40,6 @@ LIBCURL_CONF_OPT	:= \
>  	--disable-werror \
>  	--disable-curldebug \
>  	--enable-symbol-hiding \
> -	--enable-hidden-symbols \
>  	--$(call ptx/endis, PTXCONF_LIBCURL_C_ARES)-ares \
>  	--enable-rt \
>  	--disable-ech \
> @@ -73,6 +72,7 @@ LIBCURL_CONF_OPT	:= \
>  	--$(call ptx/endis, PTXCONF_LIBCURL_VERBOSE)-verbose \
>  	--disable-sspi \
>  	--$(call ptx/endis, PTXCONF_LIBCURL_CRYPTO_AUTH)-crypto-auth \
> +	--$(call ptx/endis, PTXCONF_LIBCURL_CRYPTO_AUTH)-ntlm \
>  	--disable-ntlm-wb \
>  	--enable-tls-srp \
>  	--enable-unix-sockets \
> @@ -85,7 +85,7 @@ LIBCURL_CONF_OPT	:= \
>  	--enable-netrc \
>  	--enable-progress-meter \
>  	--disable-dnsshuffle \
> -	--enable-get-easy-option \
> +	--enable-get-easy-options \
>  	--disable-alt-svc \
>  	--enable-hsts \
>  	--without-schannel \
> @@ -99,6 +99,7 @@ LIBCURL_CONF_OPT	:= \
>  	--without-bearssl \
>  	--without-rustls \
>  	--without-nss \
> +	--without-hyper \
>  	--with-zlib=$(SYSROOT) \
>  	--without-brotli \
>  	--without-zstd \
> @@ -110,7 +111,6 @@ LIBCURL_CONF_OPT	:= \
>  	--without-ca-fallback \
>  	--without-libpsl \
>  	--without-libgsasl \
> -	--without-libmetalink \
>  	--$(call ptx/wwo, PTXCONF_LIBCURL_LIBSSH2)-libssh2 \
>  	--without-libssh \
>  	--without-wolfssh \
> @@ -121,7 +121,6 @@ LIBCURL_CONF_OPT	:= \
>  	--without-ngtcp2 \
>  	--without-nghttp3 \
>  	--without-quiche \
> -	--without-hyper \
>  	--without-zsh-functions-dir \
>  	--without-fish-functions-dir
>  

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] e2fsprogs: Version bump 1.46.2 -> 1.46.4
  2021-12-22 13:02 ` [ptxdist] [PATCH] e2fsprogs: Version bump 1.46.2 -> 1.46.4 Christian Melki
@ 2022-01-21  7:19   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as 5243a0a86383bf7b1bb6625f0a6bf79235b9dfb3.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:01 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Package maintenance.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-4-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/rules/e2fsprogs.make b/rules/e2fsprogs.make
> index 31d3a76abd7f..8a153f3b255a 100644
> --- a/rules/e2fsprogs.make
> +++ b/rules/e2fsprogs.make
> @@ -15,8 +15,8 @@ PACKAGES-$(PTXCONF_E2FSPROGS) += e2fsprogs
>  #
>  # Paths and names
>  #
> -E2FSPROGS_VERSION	:= 1.46.2
> -E2FSPROGS_MD5		:= e8ef5fa3b72557be5e9fe564a25da6eb
> +E2FSPROGS_VERSION	:= 1.46.4
> +E2FSPROGS_MD5		:= 128f5b0f0746b28d1e3ca7e263c57094
>  E2FSPROGS		:= e2fsprogs-$(E2FSPROGS_VERSION)
>  E2FSPROGS_SUFFIX	:= tar.gz
>  E2FSPROGS_URL		:= $(call ptx/mirror, SF, e2fsprogs/e2fsprogs/v$(E2FSPROGS_VERSION)/$(E2FSPROGS).$(E2FSPROGS_SUFFIX))

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] ethtool: Version bump. 5.13 -> 5.15.
  2021-12-22 13:02 ` [ptxdist] [PATCH] ethtool: Version bump. 5.13 -> 5.15 Christian Melki
@ 2022-01-21  7:19   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as 72912dd65f07701c81cc3e0cea7dd1a555ef472c.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:02 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Package maintenance.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-5-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/rules/ethtool.make b/rules/ethtool.make
> index 15aeca8dc9fd..19d5548936f7 100644
> --- a/rules/ethtool.make
> +++ b/rules/ethtool.make
> @@ -15,8 +15,8 @@ PACKAGES-$(PTXCONF_ETHTOOL) += ethtool
>  #
>  # Paths and names
>  #
> -ETHTOOL_VERSION	:= 5.13
> -ETHTOOL_MD5	:= 940bd6c330b9ebafaf40b3b428e56754
> +ETHTOOL_VERSION	:= 5.15
> +ETHTOOL_MD5	:= 967f92926a453d3eb9bf41f73223f173
>  ETHTOOL_SUFFIX	:= tar.xz
>  ETHTOOL		:= ethtool-$(ETHTOOL_VERSION)
>  ETHTOOL_URL	:= $(call ptx/mirror, KERNEL, ../software/network/ethtool/$(ETHTOOL).$(ETHTOOL_SUFFIX))

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] expat: Version bump 2.4.1 -> 2.4.2
  2021-12-22 13:02 ` [ptxdist] [PATCH] expat: Version bump 2.4.1 -> 2.4.2 Christian Melki
@ 2022-01-21  7:19   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as 8dae8eb347fb4eb26e81bb6c0aefd87977b0ac14.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:03 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Package maintenance.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-6-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/rules/expat.make b/rules/expat.make
> index e486a85ac547..1fa8221fc074 100644
> --- a/rules/expat.make
> +++ b/rules/expat.make
> @@ -16,8 +16,8 @@ PACKAGES-$(PTXCONF_EXPAT) += expat
>  #
>  # Paths and names
>  #
> -EXPAT_VERSION	:= 2.4.1
> -EXPAT_MD5	:= 476cdf4b5e40280316fff36b2086a390
> +EXPAT_VERSION	:= 2.4.2
> +EXPAT_MD5	:= 58780ad6944d02f6cf6ba332838694b2
>  EXPAT		:= expat-$(EXPAT_VERSION)
>  EXPAT_SUFFIX	:= tar.bz2
>  EXPAT_URL	:= $(call ptx/mirror, SF, expat/$(EXPAT).$(EXPAT_SUFFIX))

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] jimtcl: Verison bump 0.80 -> 0.81
  2021-12-22 13:02 ` [ptxdist] [PATCH] jimtcl: Verison bump 0.80 -> 0.81 Christian Melki
@ 2022-01-21  7:19   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as 11e3ecacbb1f4276b3fd4b601a7232da18280a90.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:05 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Package maintenance.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-9-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/rules/jimtcl.make b/rules/jimtcl.make
> index f0e6df7dbda9..54029f895499 100644
> --- a/rules/jimtcl.make
> +++ b/rules/jimtcl.make
> @@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_JIMTCL) += jimtcl
>  #
>  # Paths and names
>  #
> -JIMTCL_VERSION	:= 0.80
> -JIMTCL_MD5	:= 4e437ade61b069d2d638e959c8f26bd0
> +JIMTCL_VERSION	:= 0.81
> +JIMTCL_MD5	:= a6d232ed12f47c28b56c97a955448e34
>  JIMTCL		:= jimtcl-$(JIMTCL_VERSION)
>  JIMTCL_SUFFIX	:= tar.gz
>  JIMTCL_URL	:= https://github.com/msteveb/jimtcl/archive/refs/tags/$(JIMTCL_VERSION).$(JIMTCL_SUFFIX)

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] libcap-ng: Version bump 0.7.10 -> 0.8.2
  2021-12-22 13:02 ` [ptxdist] [PATCH] libcap-ng: Version bump 0.7.10 -> 0.8.2 Christian Melki
@ 2022-01-21  7:19   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as 02b9c66dade4b5982bd803cc94468117e8b46a3e.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:06 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Update ng posix capability library.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-10-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/rules/libcap-ng.make b/rules/libcap-ng.make
> index f4b605e05fa9..ccd650b798e0 100644
> --- a/rules/libcap-ng.make
> +++ b/rules/libcap-ng.make
> @@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_LIBCAP_NG) += libcap-ng
>  #
>  # Paths and names
>  #
> -LIBCAP_NG_VERSION	:= 0.7.10
> -LIBCAP_NG_MD5		:= 57dc267e2949cdecb651a929f9206572
> +LIBCAP_NG_VERSION	:= 0.8.2
> +LIBCAP_NG_MD5		:= faf1ef766cf068ad1aba4008ced665f7
>  LIBCAP_NG		:= libcap-ng-$(LIBCAP_NG_VERSION)
>  LIBCAP_NG_SUFFIX	:= tar.gz
>  LIBCAP_NG_URL		:= http://people.redhat.com/sgrubb/libcap-ng/$(LIBCAP_NG).$(LIBCAP_NG_SUFFIX)

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] libffi: Version bump 3.3 -> 3.4.2
  2021-12-22 13:02 ` [ptxdist] [PATCH] libffi: Version bump 3.3 -> 3.4.2 Christian Melki
@ 2022-01-21  7:19   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as a165a82c9bd0b8f9119d30c7d8c1d3875fe75f16.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:07 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Maintenance of the foregin function interface library.
> Fix peculiar packageconfig manipulation.
> Patches adapted from buildroot and yoctoproject.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-12-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/patches/libffi-3.3/0001-Fixed-missed-ifndef-for-__mips_soft_float-442.patch b/patches/libffi-3.3/0001-Fixed-missed-ifndef-for-__mips_soft_float-442.patch
> deleted file mode 100644
> index fae0a0e7d2ce..000000000000
> --- a/patches/libffi-3.3/0001-Fixed-missed-ifndef-for-__mips_soft_float-442.patch
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -From: Carl Hurd <carl.m.hurd@gmail.com>
> -Date: Fri, 29 Nov 2019 14:46:11 -0500
> -Subject: [PATCH] Fixed missed #ifndef for __mips_soft_float (#442)
> -
> -Thank you!
> ----
> - src/mips/o32.S | 2 ++
> - 1 file changed, 2 insertions(+)
> -
> -diff --git a/src/mips/o32.S b/src/mips/o32.S
> -index 44e74cb91a21..799139b2968b 100644
> ---- a/src/mips/o32.S
> -+++ b/src/mips/o32.S
> -@@ -282,9 +282,11 @@ $LCFI12:
> - 	li	$13, 1		# FFI_O32
> - 	bne	$16, $13, 1f	# Skip fp save if FFI_O32_SOFT_FLOAT
> - 	
> -+#ifndef __mips_soft_float
> - 	# Store all possible float/double registers.
> - 	s.d	$f12, FA_0_0_OFF2($fp)
> - 	s.d	$f14, FA_1_0_OFF2($fp)
> -+#endif
> - 1:
> - 	# prepare arguments for ffi_closure_mips_inner_O32
> - 	REG_L	a0, 4($15)	 # cif 
> diff --git a/patches/libffi-3.3/0002-powerpc-fix-build-failure-on-power7-and-older-532.patch b/patches/libffi-3.3/0002-powerpc-fix-build-failure-on-power7-and-older-532.patch
> deleted file mode 100644
> index aa2487c29d79..000000000000
> --- a/patches/libffi-3.3/0002-powerpc-fix-build-failure-on-power7-and-older-532.patch
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -From: Sergei Trofimovich <slyfox@gentoo.org>
> -Date: Thu, 28 Nov 2019 12:42:41 +0000
> -Subject: [PATCH] powerpc: fix build failure on power7 and older (#532)
> -
> -Build failure looks as:
> -```
> -libtool: compile:  powerpc-unknown-linux-gnu-gcc \
> -    -O2 -mcpu=powerpc -mtune=powerpc -pipe ... -c src/powerpc/ffi.c ...
> -In file included from src/powerpc/ffi.c:33:
> -src/powerpc/ffi_powerpc.h:65:9: error: '__int128' is not supported on this target
> -   65 | typedef __int128 float128;
> -      |         ^~~~~~~~
> -```
> -
> -The fix avoids using __int128 in favour of aligned char[16].
> -
> -Closes: https://github.com/libffi/libffi/issues/531
> -Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
> ----
> - src/powerpc/ffi_powerpc.h | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -diff --git a/src/powerpc/ffi_powerpc.h b/src/powerpc/ffi_powerpc.h
> -index 5ee2a7095a6a..8e2f2f0e74a3 100644
> ---- a/src/powerpc/ffi_powerpc.h
> -+++ b/src/powerpc/ffi_powerpc.h
> -@@ -62,7 +62,7 @@ typedef _Float128 float128;
> - #elif defined(__FLOAT128__)
> - typedef __float128 float128;
> - #else
> --typedef __int128 float128;
> -+typedef char float128[16] __attribute__((aligned(16)));
> - #endif
> - 
> - void FFI_HIDDEN ffi_closure_SYSV (void);
> diff --git a/patches/libffi-3.3/series b/patches/libffi-3.3/series
> deleted file mode 100644
> index 83b0b511da13..000000000000
> --- a/patches/libffi-3.3/series
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -# generated by git-ptx-patches
> -#tag:base --start-number 1
> -0001-Fixed-missed-ifndef-for-__mips_soft_float-442.patch
> -0002-powerpc-fix-build-failure-on-power7-and-older-532.patch
> -0003-libffi-Fix-location-of-libraries-for-multilib-toolch.patch
> -# 9afbef7cf862f28908b007f73dce1db0  - git-ptx-patches magic
> diff --git a/patches/libffi-3.3/0003-libffi-Fix-location-of-libraries-for-multilib-toolch.patch b/patches/libffi-3.4.2/0001-libffi-Fix-location-of-libraries-for-multilib-toolch.patch
> similarity index 100%
> rename from patches/libffi-3.3/0003-libffi-Fix-location-of-libraries-for-multilib-toolch.patch
> rename to patches/libffi-3.4.2/0001-libffi-Fix-location-of-libraries-for-multilib-toolch.patch
> diff --git a/patches/libffi-3.4.2/0002-not-win32.patch b/patches/libffi-3.4.2/0002-not-win32.patch
> new file mode 100644
> index 000000000000..62daaf4b389d
> --- /dev/null
> +++ b/patches/libffi-3.4.2/0002-not-win32.patch
> @@ -0,0 +1,35 @@
> +From 306719369a0d3608b4ff2737de74ae284788a14b Mon Sep 17 00:00:00 2001
> +From: Ross Burton <ross.burton@intel.com>
> +Date: Thu, 4 Feb 2016 16:22:50 +0000
> +Subject: [PATCH] libffi: ensure sysroot paths are not in libffi.pc
> +
> +libffi's configure assumes that cross-compiled builds are complicated and
> +introduces convoluted path manipulation involving gcc search paths to the
> +install paths, resulting in paths like -L/usr/lib/../lib/ appearing in
> +libffi.pc.  When pkg-config is then used to obtain the linker flags for libffi
> +it can't tell that this path is on the default search path and returns
> +$SYSROOT/usr/lib/../lib which then gets written all over the target sysroot.
> +This then means the sstate can't be shared and triggers QA errors.
> +
> +As this block is generally pointless, disable it.
> +
> +Upstream-Status: Inappropriate
> +Signed-off-by: Ross Burton <ross.burton@intel.com>
> +
> +---
> + configure.ac | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/configure.ac b/configure.ac
> +index b764368..d51ce91 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -354,7 +354,7 @@ AC_ARG_ENABLE(multi-os-directory,
> +                           
> + # These variables are only ever used when we cross-build to X86_WIN32.
> + # And we only support this with GCC, so...
> +-if test "x$GCC" = "xyes"; then
> ++if false; then
> +   if test -n "$with_cross_host" &&
> +      test x"$with_cross_host" != x"no"; then
> +     toolexecdir='${exec_prefix}'/'$(target_alias)'
> diff --git a/patches/libffi-3.3/autogen.sh b/patches/libffi-3.4.2/autogen.sh
> similarity index 100%
> rename from patches/libffi-3.3/autogen.sh
> rename to patches/libffi-3.4.2/autogen.sh
> diff --git a/patches/libffi-3.4.2/series b/patches/libffi-3.4.2/series
> new file mode 100644
> index 000000000000..493d7a3c2993
> --- /dev/null
> +++ b/patches/libffi-3.4.2/series
> @@ -0,0 +1,2 @@
> +0001-libffi-Fix-location-of-libraries-for-multilib-toolch.patch
> +0002-not-win32.patch
> diff --git a/rules/libffi.make b/rules/libffi.make
> index 1feab4bdcd4c..b22dd266ae9a 100644
> --- a/rules/libffi.make
> +++ b/rules/libffi.make
> @@ -15,14 +15,14 @@ PACKAGES-$(PTXCONF_LIBFFI) += libffi
>  #
>  # Paths and names
>  #
> -LIBFFI_VERSION	:= 3.3
> -LIBFFI_MD5	:= 6313289e32f1d38a9df4770b014a2ca7
> +LIBFFI_VERSION	:= 3.4.2
> +LIBFFI_MD5	:= 294b921e6cf9ab0fbaea4b639f8fdbe8
>  LIBFFI		:= libffi-$(LIBFFI_VERSION)
>  LIBFFI_SUFFIX	:= tar.gz
>  LIBFFI_SOURCE	:= $(SRCDIR)/$(LIBFFI).$(LIBFFI_SUFFIX)
>  LIBFFI_DIR	:= $(BUILDDIR)/$(LIBFFI)
>  LIBFFI_URL	:= \
> -	http://ftp.gwdg.de/pub/linux/sources.redhat.com/libffi/$(LIBFFI).$(LIBFFI_SUFFIX) \
> +	https://github.com/libffi/libffi/releases/download/v$(LIBFFI_VERSION)/$(LIBFFI).$(LIBFFI_SUFFIX) \
>  	ftp://sourceware.org/pub/libffi/$(LIBFFI).$(LIBFFI_SUFFIX)
>  LIBFFI_LICENSE	:= MIT
>  

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] libjpeg: Version bump 2.1.0 -> 2.1.2
  2021-12-22 13:02 ` [ptxdist] [PATCH] libjpeg: Version bump 2.1.0 -> 2.1.2 Christian Melki
@ 2022-01-21  7:19   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as 95cfc7dfe0ffe42e7f5979cd1b79f31a2593b070.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:09 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Fixes CVE-2021-37972.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-13-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/rules/libjpeg.make b/rules/libjpeg.make
> index 7b05d69531e5..559a6d08d504 100644
> --- a/rules/libjpeg.make
> +++ b/rules/libjpeg.make
> @@ -16,8 +16,8 @@ PACKAGES-$(PTXCONF_LIBJPEG) += libjpeg
>  #
>  # Paths and names
>  #
> -LIBJPEG_VERSION	:= 2.1.0
> -LIBJPEG_MD5	:= be306afc2d2ebd6931b634df0e8cbaf5
> +LIBJPEG_VERSION	:= 2.1.2
> +LIBJPEG_MD5	:= e181bd78884dd5392a869209bfa41d4a
>  LIBJPEG_SUFFIX	:= tar.gz
>  LIBJPEG		:= libjpeg-turbo-$(LIBJPEG_VERSION)
>  LIBJPEG_TARBALL	:= $(LIBJPEG).$(LIBJPEG_SUFFIX)

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] libmbim: Version bump 1.24.2 -> 1.26.2
  2021-12-22 13:02 ` [ptxdist] [PATCH] libmbim: Version bump 1.24.2 -> 1.26.2 Christian Melki
@ 2022-01-21  7:19   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as f71e45454bb938e07761eccd8073ae7887b574b1.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:10 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Package maintenance.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-14-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/rules/libmbim.make b/rules/libmbim.make
> index 1d7ac7deb2b2..ba99416536e2 100644
> --- a/rules/libmbim.make
> +++ b/rules/libmbim.make
> @@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_LIBMBIM) += libmbim
>  #
>  # Paths and names
>  #
> -LIBMBIM_VERSION	:= 1.24.2
> -LIBMBIM_MD5	:= 6c2b490af87773c8446f37536e7411ac
> +LIBMBIM_VERSION	:= 1.26.2
> +LIBMBIM_MD5	:= 8893edbfd16e1198c018277cd2ad487e
>  LIBMBIM		:= libmbim-$(LIBMBIM_VERSION)
>  LIBMBIM_SUFFIX	:= tar.xz
>  LIBMBIM_URL	:= http://www.freedesktop.org/software/libmbim/$(LIBMBIM).$(LIBMBIM_SUFFIX)

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] libunwind: Version bump 1.5.0 -> 1.6.2
  2021-12-22 13:02 ` [ptxdist] [PATCH] libunwind: Version bump 1.5.0 -> 1.6.2 Christian Melki
@ 2022-01-21  7:19   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as 1f6e494357110e7703da6d267a1464d89cfbf41c.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:11 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Update libunwind (mostly graphics related dependencies),
> for SDL2 etc.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-16-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/rules/libunwind.make b/rules/libunwind.make
> index 27e8b3534a9e..71286acd94f1 100644
> --- a/rules/libunwind.make
> +++ b/rules/libunwind.make
> @@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_LIBUNWIND) += libunwind
>  #
>  # Paths and names
>  #
> -LIBUNWIND_VERSION	:= 1.5.0
> -LIBUNWIND_MD5		:= c6923dda0675f6a4ef21426164dc8b6a
> +LIBUNWIND_VERSION	:= 1.6.2
> +LIBUNWIND_MD5		:= f625b6a98ac1976116c71708a73dc44a
>  LIBUNWIND		:= libunwind-$(LIBUNWIND_VERSION)
>  LIBUNWIND_SUFFIX	:= tar.gz
>  LIBUNWIND_URL		:= http://download.savannah.gnu.org/releases/libunwind/$(LIBUNWIND).$(LIBUNWIND_SUFFIX)

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] openssh: Version bump 8.6p1 -> 8.8p1
  2021-12-22 13:02 ` [ptxdist] [PATCH] openssh: Version bump 8.6p1 -> 8.8p1 Christian Melki
@ 2022-01-21  7:19   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as a3897c86e8fbaed03a470dbc930320b882c54760.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:13 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Package update.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-17-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/rules/openssh.make b/rules/openssh.make
> index 8c083a11ca40..c801d8a6a28c 100644
> --- a/rules/openssh.make
> +++ b/rules/openssh.make
> @@ -15,8 +15,8 @@ PACKAGES-$(PTXCONF_OPENSSH) += openssh
>  #
>  # Paths and names
>  #
> -OPENSSH_VERSION	:= 8.6p1
> -OPENSSH_MD5	:= 805f7048aec6dd752584e570383a6f00
> +OPENSSH_VERSION	:= 8.8p1
> +OPENSSH_MD5	:= 8ce5f390958baeeab635aafd0ef41453
>  OPENSSH		:= openssh-$(OPENSSH_VERSION)
>  OPENSSH_SUFFIX	:= tar.gz
>  OPENSSH_URL	:= \

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] util-linux-ng: Version bump 2.37 -> 2.37.2
  2021-12-22 13:03 ` [ptxdist] [PATCH] util-linux-ng: Version bump 2.37 -> 2.37.2 Christian Melki
@ 2022-01-21  7:19   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as faa83e8827d6a405bb5aafc175a6e552515d3bdf.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:14 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Maintenance release.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-22-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/rules/util-linux-ng.make b/rules/util-linux-ng.make
> index f0402b44e0a5..25e4c8768566 100644
> --- a/rules/util-linux-ng.make
> +++ b/rules/util-linux-ng.make
> @@ -15,8 +15,8 @@ PACKAGES-$(PTXCONF_UTIL_LINUX_NG) += util-linux-ng
>  #
>  # Paths and names
>  #
> -UTIL_LINUX_NG_VERSION	:= 2.37
> -UTIL_LINUX_NG_MD5	:= 75eb0a648098332d4042f1646eca4069
> +UTIL_LINUX_NG_VERSION	:= 2.37.2
> +UTIL_LINUX_NG_MD5	:= d659bf7cd417d93dc609872f6334b019
>  UTIL_LINUX_NG		:= util-linux-$(UTIL_LINUX_NG_VERSION)
>  UTIL_LINUX_NG_SUFFIX	:= tar.xz
>  UTIL_LINUX_NG_BASENAME	:= v$(if $(filter 2,$(basename $(UTIL_LINUX_NG_VERSION))),$(UTIL_LINUX_NG_VERSION),$(basename $(UTIL_LINUX_NG_VERSION)))

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] zstd: Version bump 1.5.0 -> 1.5.1
  2021-12-22 13:03 ` [ptxdist] [PATCH] zstd: Version bump 1.5.0 -> 1.5.1 Christian Melki
@ 2022-01-21  7:19   ` Michael Olbrich
  0 siblings, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as 9c5980ff04058df3953523fb411a670641b81cfb.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:15 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Maintenance release, minor speedup.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-23-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/rules/zstd.make b/rules/zstd.make
> index 0e3ff9c00c24..da2cf75a381e 100644
> --- a/rules/zstd.make
> +++ b/rules/zstd.make
> @@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_ZSTD) += zstd
>  #
>  # Paths and names
>  #
> -ZSTD_VERSION	:= 1.5.0
> -ZSTD_MD5	:= d5ac89d5df9e81243ce40d0c6a66691d
> +ZSTD_VERSION	:= 1.5.1
> +ZSTD_MD5	:= 120d77140ad538e8bd3a7dae6a38c4c9
>  ZSTD		:= zstd-$(ZSTD_VERSION)
>  ZSTD_SUFFIX	:= tar.gz
>  ZSTD_URL	:= https://github.com/facebook/zstd/archive/v$(ZSTD_VERSION).$(ZSTD_SUFFIX)

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] screen: Version bump 4.5.0 -> 4.8.0
  2021-12-22 13:02 ` [ptxdist] [PATCH] screen: Version bump 4.5.0 -> 4.8.0 Christian Melki
  2022-01-06 10:55   ` Michael Olbrich
@ 2022-01-21  7:19   ` Michael Olbrich
  1 sibling, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as be57dffb0812bddcd17a4a3e178a140186c559ba.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:18 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Package maintenance.
> Fixes CVE-2021-26937, CVE-2020-9366, CVE-2017-5618
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-18-christian.melki@t2data.com>
> [mol: remove unnecessary patches and patches for the old version]
> [mol: import relevant debian patches]
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/patches/screen-4.5.0/0001-don-t-link-against-libelf.patch b/patches/screen-4.5.0/0001-don-t-link-against-libelf.patch
> deleted file mode 100644
> index 3ca43101f09c..000000000000
> --- a/patches/screen-4.5.0/0001-don-t-link-against-libelf.patch
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -From: Michael Olbrich <m.olbrich@pengutronix.de>
> -Date: Sun, 27 Mar 2011 15:19:15 +0200
> -Subject: [PATCH] don't link against libelf
> -
> -libelf is not used. It's just some broken configure check.
> -Patch from gentoo.
> -
> -Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> -[osterlad: Update locations for version 4.5.0]
> -Signed-off-by: Denis Osterland <Denis.Osterland@diehl.com>
> ----
> - configure.ac | 8 --------
> - 1 file changed, 8 deletions(-)
> -
> -diff --git a/configure.ac b/configure.ac
> -index ffe2e372426c..d88af75af665 100644
> ---- a/configure.ac
> -+++ b/configure.ac
> -@@ -202,14 +202,6 @@ AC_EGREP_CPP(yes,
> - #endif
> - ], LIBS="$LIBS -lsocket -linet";seqptx=1)
> - 
> --oldlibs="$LIBS"
> --LIBS="$LIBS -lelf"
> --AC_CHECKING(SVR4)
> --AC_TRY_LINK([#include <utmpx.h>
> --],,
> --[AC_CHECK_HEADER(dwarf.h, AC_DEFINE(SVR4) AC_DEFINE(BUGGYGETLOGIN),
> --[AC_CHECK_HEADER(elf.h, AC_DEFINE(SVR4) AC_DEFINE(BUGGYGETLOGIN))])]
> --,LIBS="$oldlibs")
> - AC_CHECK_HEADERS([stropts.h string.h strings.h])
> - 
> - AC_CHECKING(for Solaris 2.x)
> diff --git a/patches/screen-4.5.0/0002-remove-configure-AC_TRY_RUN-tests.patch b/patches/screen-4.5.0/0002-remove-configure-AC_TRY_RUN-tests.patch
> deleted file mode 100644
> index 4efbde11f0ff..000000000000
> --- a/patches/screen-4.5.0/0002-remove-configure-AC_TRY_RUN-tests.patch
> +++ /dev/null
> @@ -1,727 +0,0 @@
> -From: Michael Olbrich <m.olbrich@pengutronix.de>
> -Date: Sun, 27 Mar 2011 15:22:02 +0200
> -Subject: [PATCH] remove configure AC_TRY_RUN tests
> -
> -AC_TRY_RUN fails when cross-compiling.
> -
> -Not for upstream.
> -
> -Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> -[osterlad: Update locations for version 4.5.0]
> -Signed-off-by: Denis Osterland <Denis.Osterland@diehl.com>
> ----
> - configure.ac | 651 +----------------------------------------------------------
> - 1 file changed, 9 insertions(+), 642 deletions(-)
> -
> -diff --git a/configure.ac b/configure.ac
> -index d88af75af665..155b34c7ecce 100644
> ---- a/configure.ac
> -+++ b/configure.ac
> -@@ -48,31 +48,6 @@ AC_PROG_GCC_TRADITIONAL
> - AC_ISC_POSIX
> - AC_USE_SYSTEM_EXTENSIONS
> - 
> --AC_TRY_RUN(main(){exit(0);},,[
> --if test $CC != cc ; then
> --AC_NOTE(Your $CC failed - restarting with CC=cc)
> --AC_NOTE()
> --CC=cc
> --export CC
> --exec $0 $configure_args
> --fi
> --])
> --
> --AC_TRY_RUN(main(){exit(0);},,
> --exec 5>&2
> --eval $ac_link
> --AC_NOTE(CC=$CC; CFLAGS=$CFLAGS; LIBS=$LIBS;)
> --AC_NOTE($ac_compile)
> --AC_MSG_ERROR(Can't run the compiler - sorry))
> --
> --AC_TRY_RUN([
> --main()
> --{
> --  int __something_strange_();
> --  __something_strange_(0);
> --}
> --],AC_MSG_ERROR(Your compiler does not set the exit status - sorry))
> --
> - AC_PROG_AWK
> - 
> - AC_PROG_INSTALL
> -@@ -295,353 +270,6 @@ AC_CHECKING(select with $LIBS)
> - AC_TRY_LINK(,[select(0, 0, 0, 0, 0);],, 
> - AC_MSG_ERROR(!!! no select - no screen))
> - )
> --dnl
> --dnl    ****  FIFO tests  ****
> --dnl
> --
> --AC_CHECKING(fifos)
> --AC_TRY_RUN([
> --/* For select - According to POSIX 1003.1-2001 */
> --#include <sys/select.h>
> --
> --/* For select - According to earlier standards */
> --#include <sys/time.h>
> --#include <sys/types.h>
> --#include <unistd.h>
> --
> --#include <sys/stat.h>
> --#include <fcntl.h>
> --
> --#ifndef O_NONBLOCK
> --#define O_NONBLOCK O_NDELAY
> --#endif
> --#ifndef S_IFIFO
> --#define S_IFIFO 0010000
> --#endif
> --
> --char *fin = "/tmp/conftest$$";
> --
> --main()
> --{
> --  struct stat stb;
> --  fd_set f;
> --
> --  (void)alarm(5);
> --  unlink(fin);
> --#ifdef POSIX
> --  if (mkfifo(fin, 0777))
> --#else
> --  if (mknod(fin, S_IFIFO|0777, 0))
> --#endif
> --    exit(1);
> --  if (stat(fin, &stb) || (stb.st_mode & S_IFIFO) != S_IFIFO)
> --    exit(1);
> --  close(0);
> --#ifdef __386BSD__
> --  /*
> --   * The next test fails under 386BSD, but screen works using fifos.
> --   * Fifos in O_RDWR mode are only used for the BROKEN_PIPE case and for
> --   * the select() configuration test.
> --   */
> --  exit(0);
> --#endif
> --  if (open(fin, O_RDONLY | O_NONBLOCK))
> --    exit(1);
> --  if (fork() == 0)
> --    {
> --      close(0);
> --      if (open(fin, O_WRONLY | O_NONBLOCK))
> --	exit(1);
> --      close(0);
> --      if (open(fin, O_WRONLY | O_NONBLOCK))
> --	exit(1);
> --      if (write(0, "TEST", 4) == -1)
> --	exit(1);
> --      exit(0);
> --    }
> --  FD_SET(0, &f);
> --  if (select(1, &f, 0, 0, 0) == -1)
> --    exit(1);
> --  exit(0);
> --}
> --], AC_NOTE(- your fifos are usable) fifo=1,
> --AC_NOTE(- your fifos are not usable))
> --rm -f /tmp/conftest*
> --
> --if test -n "$fifo"; then
> --AC_CHECKING(for broken fifo implementation)
> --AC_TRY_RUN([
> --/* For select - According to POSIX 1003.1-2001 */
> --#include <sys/select.h>
> --
> --/* For select - According to earlier standards */
> --#include <sys/time.h>
> --#include <sys/types.h>
> --#include <unistd.h>
> --
> --#include <sys/stat.h>
> --#include <fcntl.h>
> --
> --#ifndef O_NONBLOCK
> --#define O_NONBLOCK O_NDELAY
> --#endif
> --#ifndef S_IFIFO
> --#define S_IFIFO 0010000
> --#endif
> --
> --char *fin = "/tmp/conftest$$";
> --
> --main()
> --{
> --  struct timeval tv;
> --  fd_set f;
> --
> --#ifdef POSIX
> --  if (mkfifo(fin, 0600))
> --#else
> --  if (mknod(fin, S_IFIFO|0600, 0))
> --#endif
> --    exit(1);
> --  close(0);
> --  if (open(fin, O_RDONLY|O_NONBLOCK))
> --    exit(1);
> --  FD_SET(0, &f);
> --  tv.tv_sec = 1;
> --  tv.tv_usec = 0;
> --  if (select(1, &f, 0, 0, &tv))
> --    exit(1);
> --  exit(0);
> --}
> --], AC_NOTE(- your implementation is ok), 
> --AC_NOTE(- you have a broken implementation) AC_DEFINE(BROKEN_PIPE) fifobr=1)
> --rm -f /tmp/conftest*
> --fi
> --
> --dnl
> --dnl    ****  SOCKET tests  ****
> --dnl 
> --dnl 	may need  	LIBS="$LIBS -lsocket" 	here
> --dnl
> --
> --AC_CHECKING(sockets)
> --AC_TRY_RUN([
> --/* For select - According to POSIX 1003.1-2001 */
> --#include <sys/select.h>
> --
> --/* For select - According to earlier standards */
> --#include <sys/time.h>
> --#include <sys/types.h>
> --#include <unistd.h>
> --
> --#include <sys/stat.h>
> --#include <fcntl.h>
> --#include <sys/socket.h>
> --#include <sys/un.h>
> --
> --char *son = "/tmp/conftest$$";
> --
> --main()
> --{
> --  int s1, s2, l;
> --  struct sockaddr_un a;
> --  fd_set f;
> --
> --  (void)alarm(5);
> --  if ((s1 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
> --    exit(1);
> --  a.sun_family = AF_UNIX;
> --  strcpy(a.sun_path, son);
> --  (void) unlink(son);
> --  if (bind(s1, (struct sockaddr *) &a, strlen(son)+2) == -1)
> --    exit(1);
> --  if (listen(s1, 2))
> --    exit(1);
> --  if (fork() == 0)
> --    {
> --      if ((s2 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
> --	kill(getppid(), 3);
> --      (void)connect(s2, (struct sockaddr *)&a, strlen(son) + 2);
> --      if (write(s2, "HELLO", 5) == -1)
> --	kill(getppid(), 3);
> --      exit(0);
> --    }
> --  l = sizeof(a);
> --  close(0);
> --  if (accept(s1, &a, &l))
> --    exit(1);
> --  FD_SET(0, &f);
> --  if (select(1, &f, 0, 0, 0) == -1)
> --    exit(1);
> --  exit(0);
> --}
> --], AC_NOTE(- your sockets are usable) sock=1,
> --AC_NOTE(- your sockets are not usable))
> --rm -f /tmp/conftest*
> --
> --if test -n "$sock"; then
> --AC_CHECKING(socket implementation)
> --AC_TRY_RUN([
> --/* For select - According to POSIX 1003.1-2001 */
> --#include <sys/select.h>
> --
> --/* For select - According to earlier standards */
> --#include <sys/time.h>
> --#include <sys/types.h>
> --#include <unistd.h>
> --
> --#include <sys/stat.h>
> --#include <sys/socket.h>
> --#include <sys/un.h>
> --
> --char *son = "/tmp/conftest$$";
> --
> --main()
> --{
> --  int s;
> --  struct stat stb;
> --  struct sockaddr_un a;
> --  if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
> --    exit(0);
> --  a.sun_family = AF_UNIX;
> --  strcpy(a.sun_path, son);
> --  (void) unlink(son);
> --  if (bind(s, (struct sockaddr *) &a, strlen(son)+2) == -1)
> --    exit(0);
> --  if (stat(son, &stb))
> --    exit(1);
> --  close(s);
> --  exit(0);
> --}
> --],AC_NOTE(- you are normal),
> --AC_NOTE(- unix domain sockets are not kept in the filesystem)
> --AC_DEFINE(SOCK_NOT_IN_FS) socknofs=1)
> --rm -f /tmp/conftest*
> --fi
> --
> --
> --dnl
> --dnl    ****  choose sockets or fifos  ****
> --dnl
> --if test -n "$fifo"; then
> --  if test -n "$sock"; then
> --    if test -n "$nore"; then
> --      AC_NOTE(- hmmm... better take the fifos)
> --      AC_DEFINE(NAMEDPIPE)
> --    elif test -n "$fifobr"; then
> --      AC_NOTE(- as your fifos are broken lets use the sockets.)
> --    else
> --      AC_NOTE(- both sockets and fifos usable. let's take sockets.)
> --    fi
> --  else
> --    AC_NOTE(- using named pipes, of course)
> --    AC_DEFINE(NAMEDPIPE)
> --  fi
> --elif test -n "$sock"; then
> --  AC_NOTE(- using unix-domain sockets, of course)
> --else
> --  AC_MSG_ERROR(you have neither usable sockets nor usable pipes -> no screen)
> --fi
> --
> --dnl
> --dnl    ****  check the select implementation ****
> --dnl
> --
> --AC_CHECKING(select return value)
> --AC_TRY_RUN([
> --/* For select - According to POSIX 1003.1-2001 */
> --#include <sys/select.h>
> --
> --/* For select - According to earlier standards */
> --#include <sys/time.h>
> --#include <sys/types.h>
> --#include <unistd.h>
> --
> --#include <sys/stat.h>
> --#include <fcntl.h>
> --
> --char *nam = "/tmp/conftest$$";
> --
> --#ifdef NAMEDPIPE
> --
> --#ifndef O_NONBLOCK
> --#define O_NONBLOCK O_NDELAY
> --#endif
> --#ifndef S_IFIFO
> --#define S_IFIFO 0010000
> --#endif
> --
> --
> --main()
> --{
> --  fd_set f;
> --
> --#ifdef __FreeBSD__
> --/* From Andrew A. Chernov (ache@astral.msk.su):
> -- * opening RDWR fifo fails in BSD 4.4, but select return values are
> -- * right.
> -- */
> --  exit(0);
> --#endif
> --  (void)alarm(5);
> --#ifdef POSIX
> --  if (mkfifo(nam, 0777))
> --#else
> --  if (mknod(nam, S_IFIFO|0777, 0))
> --#endif
> --    exit(1);
> --  close(0);
> --  if (open(nam, O_RDWR | O_NONBLOCK))
> --    exit(1);
> --  if (write(0, "TEST", 4) == -1)
> --    exit(1);
> --
> --#else
> --
> --#include <sys/types.h>
> --#include <sys/socket.h>
> --#include <sys/un.h>
> --
> --main()
> --{
> --  int s1, s2, l;
> --  struct sockaddr_un a;
> --  fd_set f;
> --
> --  (void)alarm(5);
> --  if ((s1 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
> --    exit(1);
> --  a.sun_family = AF_UNIX;
> --  strcpy(a.sun_path, nam);
> --  (void) unlink(nam);
> --  if (bind(s1, (struct sockaddr *) &a, strlen(nam)+2) == -1)
> --    exit(1);
> --  if (listen(s1, 2))
> --    exit(1);
> --  if (fork() == 0)
> --    {
> --      if ((s2 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
> --	kill(getppid(), 3);
> --      (void)connect(s2, (struct sockaddr *)&a, strlen(nam) + 2);
> --      if (write(s2, "HELLO", 5) == -1)
> --	kill(getppid(), 3);
> --      exit(0);
> --    }
> --  l = sizeof(a);
> --  close(0);
> --  if (accept(s1, (struct sockaddr *)&a, &l))
> --    exit(1);
> --#endif
> --
> --
> --  FD_SET(0, &f);
> --  if (select(1, &f, 0, 0, 0) == -1)
> --    exit(1);
> --  if (select(1, &f, &f, 0, 0) != 2)
> --    exit(1);
> --  exit(0);
> --}
> --],AC_NOTE(- select is ok),
> --AC_NOTE(- select can't count) AC_DEFINE(SELECT_BROKEN))
> - 
> - dnl
> - dnl    ****  termcap or terminfo  ****
> -@@ -678,12 +306,8 @@ AC_CHECKING(libtinfo)
> - AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
> - AC_MSG_ERROR(!!! no tgetent - no screen)))))))))
> - 
> --AC_TRY_RUN([
> --main()
> --{
> -- exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
> --}], AC_NOTE(- you use the termcap database),
> --AC_NOTE(- you use the terminfo database) AC_DEFINE(TERMINFO))
> -+AC_DEFINE(TERMINFO))
> -+
> - AC_CHECKING(ospeed)
> - AC_TRY_LINK(extern short ospeed;,ospeed=5;,,AC_DEFINE(NEED_OSPEED))
> - 
> -@@ -734,95 +358,6 @@ AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
> - AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
> - fi
> - 
> --dnl    ****  pty mode/group handling ****
> --dnl
> --dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
> --AC_ARG_WITH(pty-mode, [  --with-pty-mode=mode    default mode for ptys], [ ptymode="${withval}" ])
> --AC_ARG_WITH(pty-group, [  --with-pty-group=group  default group for ptys], [ ptygrp="${withval}" ])
> --test -n "$ptymode" || ptymode=0620
> --if test -n "$ptygrp" ; then
> --AC_DEFINE_UNQUOTED(PTYMODE, $ptymode)
> --AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
> --else
> --
> --AC_CHECKING(default tty permissions/group)
> --rm -f conftest_grp
> --AC_TRY_RUN([
> --#include <sys/types.h>
> --#include <sys/stat.h>
> --#include <stdio.h>
> --main()
> --{
> --  struct stat sb;
> --  char *x,*ttyname();
> --  int om, m;
> --  FILE *fp;
> --
> --  if (!(x = ttyname(0))) exit(1);
> --  if (stat(x, &sb)) exit(1);
> --  om = sb.st_mode;
> --  if (om & 002) exit(0);
> --  m = system("mesg y");
> --  if (m == -1 || m == 127) exit(1);
> --  if (stat(x, &sb)) exit(1);
> --  m = sb.st_mode;
> --  if (chmod(x, om)) exit(1);
> --  if (m & 002) exit(0);
> --  if (sb.st_gid == getgid()) exit(1);
> --  if (!(fp=fopen("conftest_grp", "w")))
> --    exit(1);
> --  fprintf(fp, "%d\n", sb.st_gid);
> --  fclose(fp);
> --  exit(0);
> --}
> --],[
> --    if test -f conftest_grp; then
> --	ptygrp=`cat conftest_grp`
> --	AC_NOTE([- pty mode: $ptymode, group: $ptygrp])
> --	AC_DEFINE_UNQUOTED(PTYMODE, $ptymode)
> --	AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
> --    else
> --	AC_NOTE(- ptys are world accessable)
> --    fi
> --],[
> --    WRITEPATH=''
> --    XTERMPATH=''
> --    AC_PATH_PROG(WRITEPATH, write)
> --    AC_PATH_PROG(XTERMPATH, xterm)
> --    found=
> --    if test -n "$WRITEPATH$XTERMPATH"; then
> --      findfollow=
> --      lsfollow=
> --      found=`find $WRITEPATH $XTERMPATH -follow -print 2>/dev/null`
> --      if test -n "$found"; then
> --	findfollow=-follow
> --	lsfollow=L
> --      fi
> --      if test -n "$XTERMPATH"; then
> --	ptygrpn=`ls -l$lsfollow $XTERMPATH | sed -n -e 1p | $AWK '{print $4}'`
> --	if test tty != "$ptygrpn"; then
> --	  XTERMPATH=
> --	fi
> --      fi
> --    fi
> --    if test -n "$WRITEPATH$XTERMPATH"; then
> --      found=`find $WRITEPATH $XTERMPATH $findfollow -perm -2000 -print` 
> --      if test -n "$found"; then
> --	ptygrp=`ls -ln$lsfollow $found | sed -n -e 1p | $AWK '{print $4}'`
> --	AC_NOTE([- pty mode: $ptymode, group: $ptygrp])
> --	AC_DEFINE_UNQUOTED(PTYMODE, $ptymode)
> --	AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
> --      else
> --	AC_NOTE(- ptys are world accessable)
> --      fi
> --    else
> --      AC_NOTE(- can't determine - assume ptys are world accessable)
> --    fi
> --  ]
> --)
> --rm -f conftest_grp
> --fi
> --
> - dnl
> - dnl    ****  utmp handling  ****
> - dnl
> -@@ -895,101 +430,6 @@ AC_DEFINE(LOADAV_GETLOADAVG) load=1, LIBS="$olibs")
> - fi
> - )
> - 
> --if test -z "$load" ; then
> --AC_EGREP_CPP(yes,
> --[#if defined(NeXT) || defined(apollo) || defined(linux)
> --  yes;
> --#endif
> --], load=1)
> --fi
> --if test -z "$load" ; then
> --AC_CHECKING(for kernelfile)
> --for core in /unix /vmunix /dynix /hp-ux /xelos /dev/ksyms /kernel/unix /kernel/genunix /unicos /mach /netbsd /386bsd /dgux /bsd /stand/vmunix; do
> --  if test -f $core || test -c $core; then
> --    break
> --  fi
> --done
> --if test ! -f $core && test ! -c $core ; then
> --  AC_NOTE(- no kernelfile found)
> --else
> --  AC_NOTE(- using kernelfile '$core')
> --  if test -r $core ; then
> --  AC_DEFINE_UNQUOTED(LOADAV_UNIX,"$core")
> --  AC_CHECK_HEADER(nlist.h,
> --    [AC_DEFINE(NLIST_STRUCT)
> --     AC_CHECKING(n_un in struct nlist)
> --     AC_TRY_COMPILE([#include <nlist.h>],
> --       [struct nlist n; n.n_un.n_name = 0;],
> --        AC_DEFINE(NLIST_NAME_UNION))])
> --
> --  AC_CHECKING(for nlist declaration)
> --  AC_EGREP_CPP([nlist(( |	)( |	)*.*\(|\()],[
> --#ifdef NLIST_STRUCT
> --# include <nlist.h>
> --#else
> --# include <a.out.h>
> --#endif
> --],AC_DEFINE(NLIST_DECLARED))
> --
> --  AC_CHECKING(for avenrun symbol)
> --  nlist64=
> --  for av in avenrun _avenrun _Loadavg avenrun _avenrun _Loadavg; do
> --  AC_TRY_RUN([
> --#include <sys/types.h>
> --#ifdef NLIST_STRUCT
> --#include <nlist.h>
> --#else
> --#include <a.out.h>
> --#endif
> --
> --$nlist64
> --
> --struct nlist nl[2];
> --
> --main()
> --{
> --#if !defined(_AUX_SOURCE) && !defined(AUX)
> --# ifdef NLIST_NAME_UNION
> --  nl[0].n_un.n_name = "$av";
> --# else
> --  nl[0].n_name = "$av";
> --# endif
> --#else
> --  strncpy(nl[0].n_name, "$av", sizeof(nl[0].n_name));
> --#endif
> --  nlist(LOADAV_UNIX, nl);
> --  if (nl[0].n_value == 0)
> --    exit(1);
> --  exit(0);
> --}
> --  ],avensym=$av;break)
> --  if test "$av" = _Loadavg; then
> --    nlist64='#define nlist nlist64'
> --  fi
> --  done
> --  if test -z "$avensym" ; then
> --    AC_NOTE(- no avenrun symbol found)
> --  else
> --    AC_NOTE(- using avenrun symbol '$avensym')
> --    AC_DEFINE_UNQUOTED(LOADAV_AVENRUN,"$avensym")
> --    if test -n "$nlist64"; then
> --      AC_NOTE(- used nlist64 to find it)
> --      AC_DEFINE(LOADAV_USE_NLIST64)
> --    fi
> --    load=1
> --  fi
> --  else
> --    AC_NOTE(  Can't configure the load average display feature)
> --    AC_NOTE(  because $core is not readable by you.)
> --    AC_NOTE(  To configure the load average display feature,)
> --    AC_NOTE(  re-run configure as root if possible.)
> --    AC_NOTE(  If you are not the system administrator then disregard)
> --    AC_NOTE(  this warning.  You can still use screen without)
> --    AC_NOTE(  the load average display feature.)
> --  fi
> --fi
> --fi
> --
> - AC_PROGRAM_SOURCE([
> - #include <sys/types.h>
> - #include <sys/param.h>
> -@@ -1061,41 +501,8 @@ sigset(0, (void (*)())0);
> - sigset(0, (int (*)())0);
> - #endif
> - ], AC_DEFINE(USESIGSET))
> --AC_CHECKING(signal implementation)
> --AC_TRY_RUN([
> --#include <sys/types.h>
> --#include <signal.h>
> --
> --#ifndef SIGCLD
> --#define SIGCLD SIGCHLD
> --#endif
> --#ifdef USESIGSET
> --#define signal sigset
> --#endif
> --
> --int got;
> - 
> --#ifdef SIGVOID
> --void
> --#endif
> --hand()
> --{
> --  got++;
> --}
> --
> --main()
> --{
> --  /* on hpux we use sigvec to get bsd signals */
> --#ifdef __hpux
> --  (void)signal(SIGCLD, hand);
> --  kill(getpid(), SIGCLD);
> --  kill(getpid(), SIGCLD);
> --  if (got < 2)
> --    exit(1);
> --#endif
> --  exit(0);
> --}
> --],,AC_DEFINE(SYSVSIGS))
> -+AC_DEFINE(SYSVSIGS)
> - 
> - fi
> - 
> -@@ -1163,50 +570,12 @@ AC_CHECKING(fdwalk)
> - AC_TRY_LINK([#include <stdlib.h>], [fdwalk(NULL, NULL);],AC_DEFINE(HAVE_FDWALK))
> - 
> - AC_CHECKING(whether memcpy/memmove/bcopy handles overlapping arguments)
> --AC_TRY_RUN([
> --main() {
> --  char buf[10];
> --  strcpy(buf, "abcdefghi");
> --  bcopy(buf, buf + 2, 3);
> --  if (strncmp(buf, "ababcf", 6))
> --    exit(1);
> --  strcpy(buf, "abcdefghi");
> --  bcopy(buf + 2, buf, 3);
> --  if (strncmp(buf, "cdedef", 6))
> --    exit(1);
> --  exit(0); /* libc version works properly.  */
> --}], AC_DEFINE(USEBCOPY))
> --
> --AC_TRY_RUN([
> --#define bcopy(s,d,l) memmove(d,s,l)
> --main() {
> --  char buf[10];
> --  strcpy(buf, "abcdefghi");
> --  bcopy(buf, buf + 2, 3);
> --  if (strncmp(buf, "ababcf", 6))
> --    exit(1);
> --  strcpy(buf, "abcdefghi");
> --  bcopy(buf + 2, buf, 3);
> --  if (strncmp(buf, "cdedef", 6))
> --    exit(1);
> --  exit(0); /* libc version works properly.  */
> --}], AC_DEFINE(USEMEMMOVE))
> --
> --
> --AC_TRY_RUN([
> --#define bcopy(s,d,l) memcpy(d,s,l)
> --main() {
> --  char buf[10];
> --  strcpy(buf, "abcdefghi");
> --  bcopy(buf, buf + 2, 3);
> --  if (strncmp(buf, "ababcf", 6))
> --    exit(1);
> --  strcpy(buf, "abcdefghi");
> --  bcopy(buf + 2, buf, 3);
> --  if (strncmp(buf, "cdedef", 6))
> --    exit(1);
> --  exit(0); /* libc version works properly.  */
> --}], AC_DEFINE(USEMEMCPY))
> -+AC_DEFINE(USEBCOPY)
> -+
> -+AC_DEFINE(USEMEMMOVE)
> -+
> -+
> -+AC_DEFINE(USEMEMCPY)
> - 
> - AC_SYS_LONG_FILE_NAMES
> - 
> -@@ -1292,8 +661,6 @@ fi
> - dnl Ptx bug workaround -- insert -lc after -ltermcap
> - test -n "$seqptx" && LIBS="-ltermcap -lc -lsocket -linet -lnsl -lsec -lseq"
> - 
> --AC_TRY_RUN(main(){exit(0);},,AC_MSG_ERROR(Can't run the compiler - internal error. Sorry.))
> --
> - ETCSCREENRC=
> - AC_MSG_CHECKING(for the global screenrc file)
> - AC_ARG_WITH(sys-screenrc, [  --with-sys-screenrc=path to the global screenrc file], [ ETCSCREENRC="${withval}" ])
> diff --git a/patches/screen-4.5.0/0003-autoconf-cleanup.patch b/patches/screen-4.5.0/0003-autoconf-cleanup.patch
> deleted file mode 100644
> index fda6c9423990..000000000000
> --- a/patches/screen-4.5.0/0003-autoconf-cleanup.patch
> +++ /dev/null
> @@ -1,397 +0,0 @@
> -From: Michael Olbrich <m.olbrich@pengutronix.de>
> -Date: Sun, 27 Mar 2011 15:23:55 +0200
> -Subject: [PATCH] autoconf cleanup
> -
> -update to latest autoconf syntax
> -
> -Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> -[osterlad: update locations for version 4.5.0]
> -Signed-off-by: Denis Osterland <Denis.Osterland@diehl.com>
> ----
> - configure.ac | 116 +++++++++++++++++++++++++++++------------------------------
> - 1 file changed, 58 insertions(+), 58 deletions(-)
> -
> -diff --git a/configure.ac b/configure.ac
> -index 155b34c7ecce..b87a9a44eb20 100644
> ---- a/configure.ac
> -+++ b/configure.ac
> -@@ -77,7 +77,7 @@ AC_ARG_ENABLE(socket-dir,
> - 	  esac
> -         ])
> - 	AC_MSG_RESULT(${SOCKDIR})
> --	AC_DEFINE_UNQUOTED(SOCKDIR, $SOCKDIR)
> -+	AC_DEFINE_UNQUOTED(SOCKDIR, $SOCKDIR,[SOCKDIR])
> -     ]
> - )
> - 
> -@@ -86,18 +86,18 @@ dnl
> - dnl    ****  special unix variants  ****
> - dnl
> - if test -n "$ISC"; then
> --  AC_DEFINE(ISC) LIBS="$LIBS -linet"
> -+  AC_DEFINE([ISC],[1],[ISC]) LIBS="$LIBS -linet"
> - fi
> - 
> - dnl AC_CHECKING(for OSF1)
> - dnl if test -f /bin/uname ; then
> - dnl if test `/bin/uname` = OSF1 || test -f /osf_boot; then
> --dnl AC_DEFINE(OSF1)	# this disables MIPS again....
> -+dnl AC_DEFINE([OSF1],[1],[OSF1])	# this disables MIPS again....
> - dnl fi
> - dnl fi
> - 
> - if test -f /sysV68 ; then
> --AC_DEFINE(sysV68)
> -+AC_DEFINE([sysV68],[1],[sysV68])
> - fi
> - 
> - AC_CHECKING(for MIPS)
> -@@ -110,7 +110,7 @@ AC_TRY_LINK(,,,LIBS="$oldlibs")
> - dnl
> - dnl
> - if test -r /dev/ptc; then
> --AC_DEFINE(MIPS)
> -+AC_DEFINE([MIPS],[1],[MIPS])
> - AC_CHECKING(wait3)
> - AC_TRY_LINK(,[wait3();], ,
> - AC_CHECKING(wait2)
> -@@ -119,7 +119,7 @@ dnl John Rouillard (rouilj@sni-usa.com):
> - dnl need -I/usr/include/bsd in RISCOS otherwise sockets are broken, no
> - dnl job control etc.
> - dnl Detect RISCOS if wait2 is present, but not wait3.
> --AC_DEFINE(USE_WAIT2) LIBS="$LIBS -lbsd" ; CC="$CC -I/usr/include/bsd"
> -+AC_DEFINE([USE_WAIT2],[1],[USE_WAIT2]) LIBS="$LIBS -lbsd" ; CC="$CC -I/usr/include/bsd"
> - ))
> - fi
> - fi
> -@@ -136,7 +136,7 @@ if test -f /usr/lib/libpyr.a ; then
> - oldlibs="$LIBS"
> - LIBS="$LIBS -lpyr"
> - AC_CHECKING(Pyramid OSX)
> --AC_TRY_LINK(,[open_controlling_pty("")], AC_DEFINE(OSX), LIBS="$oldlibs")
> -+AC_TRY_LINK(,[open_controlling_pty("")], AC_DEFINE([OSX],[1],[OSX]), LIBS="$oldlibs")
> - fi
> - 
> - dnl ghazi@caip.rutgers.edu (Kaveh R. Ghazi):
> -@@ -161,14 +161,14 @@ main () {
> - #ifdef _POSIX_VERSION
> -   yes;
> - #endif
> --], AC_NOTE(- you have a POSIX system) AC_DEFINE(POSIX) posix=1)
> -+], AC_NOTE(- you have a POSIX system) AC_DEFINE([POSIX],[1],[POSIX]) posix=1)
> - fi
> - 
> - AC_CHECKING(for System V)
> - AC_TRY_COMPILE(
> - [#include <sys/types.h>
> - #include <signal.h>
> --#include <fcntl.h>], [int x = SIGCHLD | FNDELAY;], , AC_DEFINE(SYSV))
> -+#include <fcntl.h>], [int x = SIGCHLD | FNDELAY;], , AC_DEFINE([SYSV],[1],[SYSV]))
> - 
> - AC_CHECKING(for sequent/ptx)
> - AC_EGREP_CPP(yes,
> -@@ -193,16 +193,16 @@ dnl (currently not used)
> - dnl
> - dnl AC_CHECKING(for pid_t)
> - dnl AC_EGREP_CPP(pid_t,[#include <sys/types.h>
> --dnl ],AC_DEFINE(PID_T_DEFINED))
> -+dnl ],AC_DEFINE([PID_T_DEFINED],[1],[PID_T_DEFINED]))
> - dnl
> - dnl AC_CHECKING(for sig_t)
> - dnl AC_EGREP_CPP(sig_t,[#include <sys/types.h>
> - dnl #include <signal.h>
> --dnl ],AC_DEFINE(SIG_T_DEFINED))
> -+dnl ],AC_DEFINE([SIG_T_DEFINED],[1],[SIG_T_DEFINED]))
> - dnl
> - dnl AC_CHECKING(for uid_t)
> - dnl AC_EGREP_CPP(uid_t,[#include <sys/types.h>
> --dnl ],AC_DEFINE(UID_T_DEFINED))
> -+dnl ],AC_DEFINE([UID_T_DEFINED],[1],[UID_T_DEFINED]))
> - dnl
> - 
> - dnl
> -@@ -224,7 +224,7 @@ setpgrp();
> - int y = TIOCNOTTY;
> - #endif
> - #endif
> --], AC_NOTE(- you have jobcontrol) AC_DEFINE(BSDJOBS), AC_NOTE(- you don't have jobcontrol))
> -+], AC_NOTE(- you have jobcontrol) AC_DEFINE([BSDJOBS],[1],[BSDJOBS]), AC_NOTE(- you don't have jobcontrol))
> - 
> - dnl
> - dnl    ****  setresuid(), setreuid(), seteuid()  ****
> -@@ -236,7 +236,7 @@ setresuid(0, 0, 0);
> - AC_CHECKING(setreuid)
> - AC_TRY_LINK(,[
> - setreuid(0, 0);
> --], AC_DEFINE(HAVE_SETREUID))
> -+], AC_DEFINE(HAVE_SETREUID,[1],[HAVE_SETREUID]))
> - dnl
> - dnl seteuid() check:
> - dnl   linux seteuid was broken before V1.1.11
> -@@ -250,7 +250,7 @@ seteuid_is_broken(0);
> - #else
> - seteuid(0);
> - #endif
> --], AC_DEFINE(HAVE_SETEUID))
> -+], AC_DEFINE([HAVE_SETEUID],[1],[HAVE_SETEUID]))
> - 
> - dnl execvpe
> - AC_CHECKING(execvpe)
> -@@ -306,23 +306,23 @@ AC_CHECKING(libtinfo)
> - AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
> - AC_MSG_ERROR(!!! no tgetent - no screen)))))))))
> - 
> --AC_DEFINE(TERMINFO))
> -+AC_DEFINE([TERMINFO],[1],[TERMINFO])
> - 
> - AC_CHECKING(ospeed)
> --AC_TRY_LINK(extern short ospeed;,ospeed=5;,,AC_DEFINE(NEED_OSPEED))
> -+AC_TRY_LINK(extern short ospeed;,ospeed=5;,,AC_DEFINE([NEED_OSPEED],[1],[NEED_OSPEED]))
> - 
> - dnl
> - dnl    ****  PTY specific things  ****
> - dnl
> - AC_CHECKING(for /dev/ptc)
> - if test -r /dev/ptc; then
> --AC_DEFINE(HAVE_DEV_PTC)
> -+AC_DEFINE([HAVE_DEV_PTC],[1],[HAVE_DEV_PTC])
> - fi
> - 
> - AC_CHECKING(for SVR4 ptys)
> - sysvr4ptys=
> - if test -c /dev/ptmx ; then
> --AC_TRY_LINK([],[ptsname(0);grantpt(0);unlockpt(0);],[AC_DEFINE(HAVE_SVR4_PTYS)
> -+AC_TRY_LINK([],[ptsname(0);grantpt(0);unlockpt(0);],[AC_DEFINE([HAVE_SVR4_PTYS],[1],[HAVE_SVR4_PTYS])
> - sysvr4ptys=1])
> - fi
> - 
> -@@ -331,7 +331,7 @@ AC_CHECK_FUNCS(getpt)
> - dnl check for openpty()
> - if test -z "$sysvr4ptys"; then
> - AC_CHECK_FUNCS(openpty,,
> --[AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY)] [LIBS="$LIBS -lutil"])])
> -+[AC_CHECK_LIB(util,openpty, [AC_DEFINE([HAVE_OPENPTY],[1],[HAVE_OPENPTY])] [LIBS="$LIBS -lutil"])])
> - fi
> - 
> - AC_CHECKING(for ptyranges)
> -@@ -354,8 +354,8 @@ dnl fi
> - if test "$ptys" != "$pdir/pty??" ; then
> - p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
> - p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
> --AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
> --AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
> -+AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0",[PTYRANGE0])
> -+AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1",[PTYRANGE1])
> - fi
> - 
> - dnl
> -@@ -375,7 +375,7 @@ AC_TRY_LINK([
> - #define pututline _pututline
> - #endif
> - ],
> --[int x = DEAD_PROCESS; pututline((struct utmp *)0); getutent();], AC_DEFINE(GETUTENT),
> -+[int x = DEAD_PROCESS; pututline((struct utmp *)0); getutent();], AC_DEFINE([GETUTENT],[1],[GETUTENT]),
> - olibs="$LIBS"
> - LIBS="$LIBS -lgen"
> - AC_CHECKING(getutent with -lgen)
> -@@ -392,7 +392,7 @@ AC_TRY_LINK([
> - #define pututline _pututline
> - #endif
> - ],
> --[int x = DEAD_PROCESS; pututline((struct utmp *)0); getutent();], AC_DEFINE(GETUTENT), LIBS="$olibs")
> -+[int x = DEAD_PROCESS; pututline((struct utmp *)0); getutent();], AC_DEFINE([GETUTENT],[1],[GETUTENT]), LIBS="$olibs")
> - )
> - AC_CHECKING(ut_host)
> - AC_TRY_COMPILE([
> -@@ -404,10 +404,10 @@ AC_TRY_COMPILE([
> - #else
> - #include <utmp.h>
> - #endif
> --],[struct utmp u; u.ut_host[0] = 0;], AC_DEFINE(UTHOST))
> -+],[struct utmp u; u.ut_host[0] = 0;], AC_DEFINE([UTHOST],[1],[UTHOST]))
> - AC_CHECK_HEADER(utempter.h, have_utempter=yes, have_utempter=no)
> - if test "$have_utempter" = yes; then
> --  AC_DEFINE(HAVE_UTEMPTER)
> -+  AC_DEFINE([HAVE_UTEMPTER],[1],[HAVE_UTEMPTER])
> -   LIBS="$LIBS -lutempter"
> - fi
> - 
> -@@ -420,13 +420,13 @@ test -f /usr/lib/libutil.a && LIBS="$LIBS -lutil"
> - 
> - AC_CHECKING(getloadavg)
> - AC_TRY_LINK(,[getloadavg((double *)0, 0);],
> --AC_DEFINE(LOADAV_GETLOADAVG) load=1,
> -+AC_DEFINE([LOADAV_GETLOADAVG],[1],[LOADAV_GETLOADAVG]) load=1,
> - if test -f /usr/lib/libkvm.a ; then
> - olibs="$LIBS"
> - LIBS="$LIBS -lkvm"
> - AC_CHECKING(getloadavg with -lkvm)
> - AC_TRY_LINK(,[getloadavg((double *)0, 0);],
> --AC_DEFINE(LOADAV_GETLOADAVG) load=1, LIBS="$olibs")
> -+AC_DEFINE([LOADAV_GETLOADAVG],[1],[LOADAV_GETLOADAVG]) load=1, LIBS="$olibs")
> - fi
> - )
> - 
> -@@ -466,10 +466,10 @@ loadnum=3
> - #endif
> - ])
> - 
> --if test -n "$load" ; then AC_DEFINE(LOADAV) fi
> --if test -n "$loadtype" ; then AC_DEFINE_UNQUOTED(LOADAV_TYPE,$loadtype) fi
> --if test -n "$loadnum" ; then AC_DEFINE_UNQUOTED(LOADAV_NUM,$loadnum) fi
> --if test -n "$loadscale" ; then AC_DEFINE_UNQUOTED(LOADAV_SCALE,$loadscale) fi
> -+if test -n "$load" ; then AC_DEFINE([LOADAV],[1],[LOADAV]) fi
> -+if test -n "$loadtype" ; then AC_DEFINE_UNQUOTED(LOADAV_TYPE,$loadtype,[LOADAV_TYPE]) fi
> -+if test -n "$loadnum" ; then AC_DEFINE_UNQUOTED(LOADAV_NUM,$loadnum,[LOADAV_NUM]) fi
> -+if test -n "$loadscale" ; then AC_DEFINE_UNQUOTED(LOADAV_SCALE,$loadscale,[LOADAV_SCALE]) fi
> - 
> - dnl
> - dnl    ****  signal handling  ****
> -@@ -478,7 +478,7 @@ if test -n "$posix" ; then
> - 
> - dnl POSIX has reliable signals with void return type.
> - AC_NOTE(assuming posix signal definition)
> --AC_DEFINE(SIGVOID)
> -+AC_DEFINE([SIGVOID],[1],[SIGVOID])
> - 
> - else
> - 
> -@@ -489,7 +489,7 @@ AC_TRY_COMPILE(
> - #ifdef signal
> - #undef signal
> - #endif
> --extern void (*signal ()) ();], [int i;], AC_DEFINE(SIGVOID))
> -+extern void (*signal ()) ();], [int i;], AC_DEFINE([SIGVOID],[1],[SIGVOID]))
> - AC_CHECKING(sigset)
> - AC_TRY_LINK([
> - #include <sys/types.h>
> -@@ -500,9 +500,9 @@ sigset(0, (void (*)())0);
> - #else
> - sigset(0, (int (*)())0);
> - #endif
> --], AC_DEFINE(USESIGSET))
> -+], AC_DEFINE([USESIGSET],[1],[USESIGSET]))
> - 
> --AC_DEFINE(SYSVSIGS)
> -+AC_DEFINE([SYSVSIGS],[1],[SYSVSIGS])
> - 
> - fi
> - 
> -@@ -528,7 +528,7 @@ AC_TRY_LINK(,[closelog();], , [oldlibs="$LIBS"
> - LIBS="$LIBS -lbsd"
> - AC_CHECKING(syslog in libbsd.a)
> - AC_TRY_LINK(, [closelog();], AC_NOTE(- found.), [LIBS="$oldlibs"
> --AC_NOTE(- bad news: syslog missing.) AC_DEFINE(NOSYSLOG)])])
> -+AC_NOTE(- bad news: syslog missing.) AC_DEFINE([NOSYSLOG],[1],[NOSYSLOG])])])
> - 
> - AC_EGREP_CPP(yes,
> - [#ifdef M_UNIX
> -@@ -548,39 +548,39 @@ AC_TRY_COMPILE([#include <sys/types.h>
> - #ifdef WEXITSTATUS
> -   y = WEXITSTATUS(x);
> - #endif
> --],AC_DEFINE(BSDWAIT))
> -+],AC_DEFINE([BSDWAIT],[1],[BSDWAIT]))
> - 
> - if test -z "$butterfly"; then
> - AC_CHECKING(for termio or termios)
> --AC_TRY_CPP([#include <termio.h>], AC_DEFINE(TERMIO),
> -+AC_TRY_CPP([#include <termio.h>], AC_DEFINE([TERMIO],[1],[TERMIO]),
> - if test -n "$posix"; then
> --AC_TRY_CPP([#include <termios.h>], AC_DEFINE(TERMIO))
> -+AC_TRY_CPP([#include <termios.h>], AC_DEFINE([TERMIO],[1],[TERMIO]))
> - fi
> - )
> - fi
> - 
> --dnl AC_CHECK_HEADER(shadow.h, AC_DEFINE(SHADOWPW))
> -+dnl AC_CHECK_HEADER(shadow.h, AC_DEFINE([SHADOWPW],[1],[SHADOWPW]))
> - AC_CHECKING(getspnam)
> --AC_TRY_LINK([#include <shadow.h>], [getspnam("x");],AC_DEFINE(SHADOWPW))
> -+AC_TRY_LINK([#include <shadow.h>], [getspnam("x");],AC_DEFINE([SHADOWPW],[1],[SHADOWPW]))
> - 
> - AC_CHECKING(getttyent)
> --AC_TRY_LINK(,[getttyent();], AC_DEFINE(GETTTYENT))
> -+AC_TRY_LINK(,[getttyent();], AC_DEFINE([GETTTYENT],[1],[GETTTYENT]))
> - 
> - AC_CHECKING(fdwalk)
> --AC_TRY_LINK([#include <stdlib.h>], [fdwalk(NULL, NULL);],AC_DEFINE(HAVE_FDWALK))
> -+AC_TRY_LINK([#include <stdlib.h>], [fdwalk(NULL, NULL);],AC_DEFINE([HAVE_FDWALK],[1],[HAVE_FDWALK]))
> - 
> - AC_CHECKING(whether memcpy/memmove/bcopy handles overlapping arguments)
> --AC_DEFINE(USEBCOPY)
> -+AC_DEFINE([USEBCOPY],[1],[USEBCOPY])
> - 
> --AC_DEFINE(USEMEMMOVE)
> -+AC_DEFINE([USEMEMMOVE],[1],[USEMEMMOVE])
> - 
> - 
> --AC_DEFINE(USEMEMCPY)
> -+AC_DEFINE([USEMEMCPY],[1],[USEMEMCPY])
> - 
> - AC_SYS_LONG_FILE_NAMES
> - 
> - AC_MSG_CHECKING(for vsprintf)
> --AC_TRY_LINK([#include <stdarg.h>],[va_list valist; vsprintf(0,0,valist);], AC_MSG_RESULT(yes);AC_DEFINE(USEVARARGS), AC_MSG_RESULT(no))
> -+AC_TRY_LINK([#include <stdarg.h>],[va_list valist; vsprintf(0,0,valist);], AC_MSG_RESULT(yes);AC_DEFINE([USEVARARGS],[1],[USEVARARGS]), AC_MSG_RESULT(no))
> - 
> - AC_HEADER_DIRENT
> - 
> -@@ -600,21 +600,21 @@ if test -z "$ac_setenv_args"; then
> -     ], ac_setenv_args=2)
> - fi
> - if test -n "$ac_setenv_args"; then
> --    AC_DEFINE(USESETENV)
> -+    AC_DEFINE([USESETENV],[1],[USESETENV])
> -     if test "$ac_setenv_args" = 3; then
> --        AC_DEFINE(HAVE_SETENV_3)
> -+        AC_DEFINE([HAVE_SETENV_3],[1],[HAVE_SETENV_3])
> -     elif test "$ac_setenv_args" = 2; then
> --        AC_DEFINE(HAVE_SETENV_2)
> -+        AC_DEFINE([HAVE_SETENV_2],[1],[HAVE_SETENV_2])
> -     fi
> - else
> -     AC_MSG_RESULT(no)
> -     AC_MSG_CHECKING(for putenv)
> --    AC_TRY_LINK(,[putenv((char *)0);unsetenv((char *)0);], AC_MSG_RESULT(yes) ,  AC_MSG_RESULT(no);AC_DEFINE(NEEDPUTENV))
> -+    AC_TRY_LINK(,[putenv((char *)0);unsetenv((char *)0);], AC_MSG_RESULT(yes) ,  AC_MSG_RESULT(no);AC_DEFINE([NEEDPUTENV],[1],[NEEDPUTENV]))
> - fi
> - AC_MSG_CHECKING([for nl_langinfo(CODESET)])
> - AC_TRY_LINK([
> - #include <langinfo.h>
> --],[nl_langinfo(CODESET);], AC_MSG_RESULT(yes);AC_DEFINE(HAVE_NL_LANGINFO), AC_MSG_RESULT(no))
> -+],[nl_langinfo(CODESET);], AC_MSG_RESULT(yes);AC_DEFINE([HAVE_NL_LANGINFO],[1],[HAVE_NL_LANGINFO]), AC_MSG_RESULT(no))
> - 
> - AC_SEARCH_LIBS(gethostname, nsl)
> - 
> -@@ -629,25 +629,25 @@ if test "$enable_pam" = "yes"; then
> - 	pam_start(0, 0, 0, 0);
> - 	pam_authenticate(0, 0);
> - 	pam_end(0,0);
> --    ], AC_MSG_RESULT(yes);AC_DEFINE(USE_PAM),
> -+    ], AC_MSG_RESULT(yes);AC_DEFINE([USE_PAM],[1],[USE_PAM]),
> -        AC_MSG_RESULT(no);LIBS="$oldlibs")
> - fi
> - 
> - AC_ARG_ENABLE(use_locale, [  --enable-use-locale         use localized month/day names])
> - if test "$enable_use_locale" = "yes"; then
> --  AC_DEFINE(USE_LOCALE)
> -+  AC_DEFINE([USE_LOCALE],[1],[USE_LOCALE])
> - fi
> - AC_ARG_ENABLE(telnet, [  --enable-telnet         enable builtin telnet])
> - if test "$enable_telnet" = "yes"; then
> --  AC_DEFINE(BUILTIN_TELNET)
> -+  AC_DEFINE([BUILTIN_TELNET],[1],[BUILTIN_TELNET])
> - fi
> - AC_ARG_ENABLE(colors256, [  --enable-colors256      enable support for 256 colors])
> - if test "$enable_colors256" = "yes"; then
> --  AC_DEFINE(COLORS256)
> -+  AC_DEFINE([COLORS256],[1],[COLORS256])
> - fi
> - AC_ARG_ENABLE(rxvt_osc, [  --enable-rxvt_osc       enable support for rxvt OSC codes])
> - if test "$enable_rxvt_osc" = "yes"; then
> --  AC_DEFINE(RXVT_OSC)
> -+  AC_DEFINE([RXVT_OSC],[1],[RXVT_OSC])
> - fi
> - 
> - dnl
> diff --git a/patches/screen-4.5.0/0004-Fix-some-typos-found-by-Lintian.patch b/patches/screen-4.5.0/0004-Fix-some-typos-found-by-Lintian.patch
> deleted file mode 100644
> index b368f44ec67f..000000000000
> --- a/patches/screen-4.5.0/0004-Fix-some-typos-found-by-Lintian.patch
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -From: Axel Beckert <abe@debian.org>
> -Date: Mon, 3 Jul 2017 10:41:19 +0200
> -Subject: [PATCH] Fix some typos found by Lintian
> -
> -Forwarded: no
> -Bug-Debian: https://bugs.debian.org/741141
> ----
> - acls.c       | 4 ++--
> - doc/screen.1 | 4 ++--
> - 2 files changed, 4 insertions(+), 4 deletions(-)
> -
> -diff --git a/acls.c b/acls.c
> -index 3b1669cf4a93..514e0fc4716d 100644
> ---- a/acls.c
> -+++ b/acls.c
> -@@ -578,7 +578,7 @@ char *name, *pw1, *pw2;
> -     }
> -   
> -   debug2("syslog(LOG_NOTICE, \"screen %s: \"su %s\" ", SockPath, name);
> --  debug2("%s for \"%s\"\n", sorry ? "failed" : "succeded", (*up)->u_name);
> -+  debug2("%s for \"%s\"\n", sorry ? "failed" : "succeeded", (*up)->u_name);
> - #ifndef NOSYSLOG
> - # ifdef BSD_42
> -   openlog("screen", LOG_PID);
> -@@ -586,7 +586,7 @@ char *name, *pw1, *pw2;
> -   openlog("screen", LOG_PID, LOG_AUTH);
> - # endif /* BSD_42 */
> -   syslog(LOG_NOTICE, "%s: \"su %s\" %s for \"%s\"", SockPath, name, 
> --         sorry ? "failed" : "succeded", (*up)->u_name);
> -+         sorry ? "failed" : "succeeded", (*up)->u_name);
> -   closelog();
> - #else
> -   debug("NOT LOGGED.\n");
> -diff --git a/doc/screen.1 b/doc/screen.1
> -index 23b4d7b1202a..0fe8d0e533c2 100644
> ---- a/doc/screen.1
> -+++ b/doc/screen.1
> -@@ -1356,8 +1356,8 @@ non-whitespace character on the line.
> - \fBB\fP, \fBE\fP move the cursor WORD by WORD (as in vi).
> - .br 
> - .ti -2n
> --.\"\fBf\fP,\fBt\fP, \fBF\fP, \fBT\fP move the cursor forward/backward to the next occurence of the target.
> --\fBf/F\fP, \fBt/T\fP move the cursor forward/backward to the next occurence of the target. (eg, '3fy' will 
> -+.\"\fBf\fP,\fBt\fP, \fBF\fP, \fBT\fP move the cursor forward/backward to the next occurrence of the target.
> -+\fBf/F\fP, \fBt/T\fP move the cursor forward/backward to the next occurrence of the target. (eg, '3fy' will 
> - move the cursor to the 3rd 'y' to the right.)
> - .br
> - .ti -2n
> diff --git a/patches/screen-4.5.0/0005-show-encoding-in-hardstatus.patch b/patches/screen-4.5.0/0005-show-encoding-in-hardstatus.patch
> deleted file mode 100644
> index 123c37ccee2e..000000000000
> --- a/patches/screen-4.5.0/0005-show-encoding-in-hardstatus.patch
> +++ /dev/null
> @@ -1,52 +0,0 @@
> -From: Yi-Jheng Lin <yzlin@cs.nctu.edu.tw>
> -Date: Mon, 3 Jul 2017 10:42:52 +0200
> -Subject: [PATCH] show encoding in hardstatus
> -
> -Origin: https://svnweb.freebsd.org/ports/head/sysutils/screen/files/opt-showencoding?view=markup
> -Reviewed-By: rascov <rascov@rascov.tw>
> -Reviewed-By: Dustin Kirkland <kirkland@ubuntu.com>
> -Last-Update: Wed Feb 11 05:51:31 CST 2009
> -Bug-FreeBSD: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=124492
> -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/screen/+bug/286810
> -Bug-Debian: https://bugs.debian.org/533498
> ----
> - process.c |  1 +
> - screen.c  | 13 +++++++++++++
> - 2 files changed, 14 insertions(+)
> -
> -diff --git a/process.c b/process.c
> -index 63c85b1a0a65..304ce0e691de 100644
> ---- a/process.c
> -+++ b/process.c
> -@@ -3783,6 +3783,7 @@ int key;
> - 	    {
> - 	      WinSwitchEncoding(fore, n);
> - 	      ResetCharsets(fore);
> -+	      RedisplayDisplays(0);
> - 	    }
> - 	  else if (i && display)
> - 	    D_encoding  = n;
> -diff --git a/screen.c b/screen.c
> -index 64650e9b2edc..7cad20626f2b 100644
> ---- a/screen.c
> -+++ b/screen.c
> -@@ -2761,6 +2761,19 @@ char *MakeWinMsgEv(char *str, struct win *win, int esc, int padlen, struct event
> -       p += strlen(p) - 1;
> -       break;
> - 
> -+      #ifdef ENCODINGS
> -+      case 'e':
> -+        *p = 0;
> -+        D_encoding = nwin_options.encoding > 0 ? nwin_options.encoding : 0;
> -+        if (win && win->w_encoding)
> -+          {
> -+            *p++ = ' ';
> -+            strcpy(p, EncodingName(win->w_encoding));
> -+          }
> -+          p += strlen(p) - 1;
> -+          break;
> -+      #endif
> -+
> -     case '{':
> -     {
> -       char rbuf[128];
> diff --git a/patches/screen-4.5.0/0006-Unbreak-several-useful-keybindings.patch b/patches/screen-4.5.0/0006-Unbreak-several-useful-keybindings.patch
> deleted file mode 100644
> index 830f2a78da38..000000000000
> --- a/patches/screen-4.5.0/0006-Unbreak-several-useful-keybindings.patch
> +++ /dev/null
> @@ -1,22 +0,0 @@
> -From: Loic Minier <lool@dooz.org>
> -Date: Mon, 3 Jul 2017 10:44:57 +0200
> -Subject: [PATCH] Unbreak several useful keybindings.
> -
> -Bugs-Debian: https://bugs.debian.org/484647
> ----
> - termcap.c | 2 --
> - 1 file changed, 2 deletions(-)
> -
> -diff --git a/termcap.c b/termcap.c
> -index ae89d175bc2c..57ed43a6d096 100644
> ---- a/termcap.c
> -+++ b/termcap.c
> -@@ -552,8 +552,6 @@ int map;
> -       else
> - 	break;
> -     }
> --  if (n < KMAP_KEYS)
> --    domap = 1;
> -   if (map == 0 && domap)
> -     return 0;
> -   if (map && !domap)
> diff --git a/patches/screen-4.5.0/0007-Fix-privilege-escalation-by-reverting-upstream-commi.patch b/patches/screen-4.5.0/0007-Fix-privilege-escalation-by-reverting-upstream-commi.patch
> deleted file mode 100644
> index 134934f3dfb0..000000000000
> --- a/patches/screen-4.5.0/0007-Fix-privilege-escalation-by-reverting-upstream-commi.patch
> +++ /dev/null
> @@ -1,30 +0,0 @@
> -From: Axel Beckert <abe@debian.org>
> -Date: Mon, 3 Jul 2017 10:46:08 +0200
> -Subject: [PATCH] Fix privilege escalation by reverting upstream commit
> - 5460f5d2
> -
> -Bug-Debian: https://bugs.debian.org/852484
> -Bug-CVE: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5618
> -Bug: https://savannah.gnu.org/bugs/?50142
> -     https://lists.gnu.org/archive/html/screen-devel/2017-01/msg00025.html
> ----
> - screen.c | 6 ------
> - 1 file changed, 6 deletions(-)
> -
> -diff --git a/screen.c b/screen.c
> -index 7cad20626f2b..e60d0a712fb5 100644
> ---- a/screen.c
> -+++ b/screen.c
> -@@ -673,12 +673,6 @@ int main(int ac, char** av)
> -                 Panic(0, "-L: logfile name can not start with \"-\" symbol");
> -               if (strlen(screenlogfile) > PATH_MAX)
> -                 Panic(0, "-L: logfile name too long. (max. %d char)", PATH_MAX);
> --
> --              FILE *w_check;
> --              if ((w_check = fopen(screenlogfile, "w")) == NULL)
> --                Panic(0, "-L: logfile name access problem");
> --              else
> --                fclose(w_check);
> -             }
> -             nwin_options.Lflag = 1;
> -             break;
> diff --git a/patches/screen-4.5.0/0008-Fix-terminal-garbage-in-Debian-Installer-over-serial.patch b/patches/screen-4.5.0/0008-Fix-terminal-garbage-in-Debian-Installer-over-serial.patch
> deleted file mode 100644
> index a174ea10c6e8..000000000000
> --- a/patches/screen-4.5.0/0008-Fix-terminal-garbage-in-Debian-Installer-over-serial.patch
> +++ /dev/null
> @@ -1,24 +0,0 @@
> -From: Samuel Thibault <sthibault@debian.org>
> -Date: Mon, 3 Jul 2017 10:47:14 +0200
> -Subject: [PATCH] Fix terminal garbage in Debian Installer over serial line
> -
> -Reviewed-By: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
> -Bug-Debian: https://bugs.debian.org/857808
> -Bug: https://savannah.gnu.org/bugs/?50588
> ----
> - termcap.c | 2 ++
> - 1 file changed, 2 insertions(+)
> -
> -diff --git a/termcap.c b/termcap.c
> -index 57ed43a6d096..1b15e63a3192 100644
> ---- a/termcap.c
> -+++ b/termcap.c
> -@@ -486,6 +486,8 @@ int he;
> - 
> -   D_tcinited = 1;
> -   MakeTermcap(0);
> -+  /* Make sure libterm uses external term properties for our tputs() calls.  */
> -+  e_tgetent(tbuf, D_termname);
> - #ifdef MAPKEYS
> -   CheckEscape();
> - #endif
> diff --git a/patches/screen-4.5.0/0009-Ignore-logfile-s-name-that-begins-with-the-symbol.patch b/patches/screen-4.5.0/0009-Ignore-logfile-s-name-that-begins-with-the-symbol.patch
> deleted file mode 100644
> index d789f56db89f..000000000000
> --- a/patches/screen-4.5.0/0009-Ignore-logfile-s-name-that-begins-with-the-symbol.patch
> +++ /dev/null
> @@ -1,77 +0,0 @@
> -From: Alexander Naumov <alexander_naumov@opensuse.org>
> -Date: Mon, 3 Jul 2017 10:48:05 +0200
> -Subject: [PATCH] Ignore logfile's name that begins with the "-" symbol
> -
> - This fixes the API:
> - .
> - To enable logging we use -L option. But in case of
> - default logfile name (screenlog.0) we will need to
> - define it anyway. Because screen will try to interpret
> - next option as a parameter for -L option (which is
> - logfile name). It will fails ALWAYS, because next
> - parameter will always start with "-" symbol...
> - what is not permited for logfile name of course.
> - .
> - For example:
> - .
> - $ screen -L -D -m ./configure
> - .
> - In this case logfile name is screenlog.0, because "-D"
> - will not be interpreted by screen as a name of logfile.
> -Bug-Debian: https://bugs.debian.org/863095
> -Bug: https://savannah.gnu.org/bugs/?50440
> -Reviewd-By: Axel Beckert <abe@debian.org>
> ----
> - doc/screen.1       | 4 ++--
> - doc/screen.texinfo | 4 +++-
> - screen.c           | 7 +++++--
> - 3 files changed, 10 insertions(+), 5 deletions(-)
> -
> -diff --git a/doc/screen.1 b/doc/screen.1
> -index 0fe8d0e533c2..ee210346dab8 100644
> ---- a/doc/screen.1
> -+++ b/doc/screen.1
> -@@ -262,8 +262,8 @@ Ask your system administrator if you are not sure. Remove sessions with the
> - tells
> - .I screen
> - to turn on automatic output logging for the windows. By default, logfile's name
> --is screenlog.1. You can sets new name: add it right after -L option e.g. "screen
> ---L my_logfile".
> -+is screenlog.0. You can set new name: add it right after -L option e.g. "screen
> -+-L my_logfile". Keep in mind that name can not start with "-" symbol.
> - .TP 5
> - .B \-m
> - causes
> -diff --git a/doc/screen.texinfo b/doc/screen.texinfo
> -index 2ff39b08a79c..c94993edd2ed 100644
> ---- a/doc/screen.texinfo
> -+++ b/doc/screen.texinfo
> -@@ -334,7 +334,9 @@ Remove sessions with the @samp{-wipe} option.
> - 
> - @item -L
> - Tell @code{screen} to turn on automatic output logging for the
> --windows.
> -+windows. By default, logfile's name is screenlog.0. You can set new name:
> -+add it right after -L option e.g. "screen -L my_logfile". Keep in mind
> -+that name can not start with "-" symbol.
> - 
> - @item -m
> - Tell @code{screen} to ignore the @code{$STY} environment variable.  When
> -diff --git a/screen.c b/screen.c
> -index e60d0a712fb5..07f0c1387e32 100644
> ---- a/screen.c
> -+++ b/screen.c
> -@@ -669,8 +669,11 @@ int main(int ac, char** av)
> -           case 'L':
> -             if (--ac != 0) {
> -               screenlogfile = SaveStr(*++av);
> --              if (screenlogfile[0] == '-')
> --                Panic(0, "-L: logfile name can not start with \"-\" symbol");
> -+              if (screenlogfile[0] == '-') {
> -+                screenlogfile = SaveStr("screenlog.%n");
> -+                av--;
> -+                ac++;
> -+              }
> -               if (strlen(screenlogfile) > PATH_MAX)
> -                 Panic(0, "-L: logfile name too long. (max. %d char)", PATH_MAX);
> -             }
> diff --git a/patches/screen-4.5.0/series b/patches/screen-4.5.0/series
> deleted file mode 100644
> index b2f09ec5b7a5..000000000000
> --- a/patches/screen-4.5.0/series
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -# generated by git-ptx-patches
> -#tag:base --start-number 1
> -0001-don-t-link-against-libelf.patch
> -0002-remove-configure-AC_TRY_RUN-tests.patch
> -0003-autoconf-cleanup.patch
> -0004-Fix-some-typos-found-by-Lintian.patch
> -0005-show-encoding-in-hardstatus.patch
> -0006-Unbreak-several-useful-keybindings.patch
> -0007-Fix-privilege-escalation-by-reverting-upstream-commi.patch
> -0008-Fix-terminal-garbage-in-Debian-Installer-over-serial.patch
> -0009-Ignore-logfile-s-name-that-begins-with-the-symbol.patch
> -# ccc52b9b8b2bf27ae19c5efb5999fc70  - git-ptx-patches magic
> diff --git a/patches/screen-4.8.0/0001-comm.h-now-depends-on-term.h.patch b/patches/screen-4.8.0/0001-comm.h-now-depends-on-term.h.patch
> new file mode 100644
> index 000000000000..6a6fbb867282
> --- /dev/null
> +++ b/patches/screen-4.8.0/0001-comm.h-now-depends-on-term.h.patch
> @@ -0,0 +1,24 @@
> +From: Mike Gerwitz <mike@mikegerwitz.com>
> +Date: Tue, 24 Dec 2013 22:16:31 -0500
> +Subject: [PATCH] comm.h now depends on term.h
> +
> +Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> +[Patch retrieved and updated from:
> +http://git.savannah.gnu.org/cgit/screen.git/commit/?id=39c5f1c]
> +---
> + Makefile.in | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/Makefile.in b/Makefile.in
> +index 08b44d3a8cda..53a8c874fdae 100644
> +--- a/Makefile.in
> ++++ b/Makefile.in
> +@@ -133,7 +133,7 @@ kmapdef.c: term.h
> + tty.c:	tty.sh 
> + 	sh $(srcdir)/tty.sh tty.c
> + 
> +-comm.h: comm.c comm.sh config.h
> ++comm.h: comm.c comm.sh config.h term.h
> + 	AWK=$(AWK) CC="$(CC) $(CFLAGS)" srcdir=${srcdir} sh $(srcdir)/comm.sh
> + 
> + osdef.h: osdef.sh config.h osdef.h.in
> diff --git a/patches/screen-4.8.0/0002-comm.h-needed-for-list_-display-generic-.o.patch b/patches/screen-4.8.0/0002-comm.h-needed-for-list_-display-generic-.o.patch
> new file mode 100644
> index 000000000000..12e551a7dd89
> --- /dev/null
> +++ b/patches/screen-4.8.0/0002-comm.h-needed-for-list_-display-generic-.o.patch
> @@ -0,0 +1,31 @@
> +From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> +Date: Wed, 3 Oct 2018 22:29:32 +0200
> +Subject: [PATCH] comm.h needed for list_{display,generic}.o
> +
> +comm.h is needed to build list_display.o and list_generic.o otherwise
> +parallel builds will sometimes fail
> +
> +Fixes:
> + - http://autobuild.buildroot.org/results/43105f14857dbe72d8878fc7b3db67f7bdca93cc
> + - http://autobuild.buildroot.org/results/47f4ecbec1355285633df287fc9c4e7cccde9378
> +
> +Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> +[Upstream status: https://savannah.gnu.org/bugs/index.php?54776]
> +---
> + Makefile.in | 4 ++--
> + 1 file changed, 2 insertions(+), 2 deletions(-)
> +
> +diff --git a/Makefile.in b/Makefile.in
> +index 53a8c874fdae..398539feba41 100644
> +--- a/Makefile.in
> ++++ b/Makefile.in
> +@@ -350,7 +350,7 @@ layout.o: layout.h viewport.h canvas.h layout.c config.h screen.h os.h osdef.h a
> + viewport.o: layout.h viewport.h canvas.h viewport.c config.h screen.h os.h osdef.h ansi.h acls.h \
> +  comm.h layer.h term.h image.h display.h window.h extern.h \
> +  braille.h
> +-list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h
> +-list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h
> ++list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h comm.h
> ++list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h comm.h
> + list_window.o: list_generic.h list_window.c window.h layer.h screen.h osdef.h comm.h
> + 
> diff --git a/patches/screen-4.8.0/0100-suppress_remap.patch b/patches/screen-4.8.0/0100-suppress_remap.patch
> new file mode 100644
> index 000000000000..7da242564975
> --- /dev/null
> +++ b/patches/screen-4.8.0/0100-suppress_remap.patch
> @@ -0,0 +1,24 @@
> +From: Michael Olbrich <m.olbrich@pengutronix.de>
> +Date: Fri, 7 Jan 2022 12:53:57 +0100
> +Subject: [PATCH] suppress_remap
> +
> +Imported from screen_4.8.0-7.debian.tar.xz
> +
> +Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> +---
> + termcap.c | 2 --
> + 1 file changed, 2 deletions(-)
> +
> +diff --git a/termcap.c b/termcap.c
> +index 26cba62fd7c1..ed9e838c4c9d 100644
> +--- a/termcap.c
> ++++ b/termcap.c
> +@@ -553,8 +553,6 @@ int map;
> +       else
> + 	break;
> +     }
> +-  if (n < KMAP_KEYS)
> +-    domap = 1;
> +   if (map == 0 && domap)
> +     return 0;
> +   if (map && !domap)
> diff --git a/patches/screen-4.8.0/0101-fix_screen_utf8_nfd.patch b/patches/screen-4.8.0/0101-fix_screen_utf8_nfd.patch
> new file mode 100644
> index 000000000000..54cc81f0d7a1
> --- /dev/null
> +++ b/patches/screen-4.8.0/0101-fix_screen_utf8_nfd.patch
> @@ -0,0 +1,37 @@
> +From: Michael Olbrich <m.olbrich@pengutronix.de>
> +Date: Fri, 7 Jan 2022 12:53:57 +0100
> +Subject: [PATCH] fix_screen_utf8_nfd
> +
> +Imported from screen_4.8.0-7.debian.tar.xz
> +
> +Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> +---
> + ansi.c | 8 ++++----
> + 1 file changed, 4 insertions(+), 4 deletions(-)
> +
> +diff --git a/ansi.c b/ansi.c
> +index 2a52eddd32d4..83b266d6f777 100644
> +--- a/ansi.c
> ++++ b/ansi.c
> +@@ -692,10 +692,6 @@ register int len;
> + 		    }
> + 		  curr->w_rend.font = 0;
> + 		}
> +-#  ifdef DW_CHARS
> +-	      if (curr->w_encoding == UTF8 && utf8_isdouble(c))
> +-		curr->w_mbcs = 0xff;
> +-#  endif
> + 	      if (curr->w_encoding == UTF8 && c >= 0x0300 && utf8_iscomb(c))
> + 		{
> + 		  int ox, oy;
> +@@ -730,6 +726,10 @@ register int len;
> + 		    }
> + 		  break;
> + 		}
> ++#  ifdef DW_CHARS
> ++	      if (curr->w_encoding == UTF8 && utf8_isdouble(c))
> ++		curr->w_mbcs = 0xff;
> ++#  endif
> + 	      font = curr->w_rend.font;
> + # endif
> + # ifdef DW_CHARS
> diff --git a/patches/screen-4.8.0/0102-Expand-d_xtermosc-array-in-struct-display.patch b/patches/screen-4.8.0/0102-Expand-d_xtermosc-array-in-struct-display.patch
> new file mode 100644
> index 000000000000..8cbfc6d2fe9f
> --- /dev/null
> +++ b/patches/screen-4.8.0/0102-Expand-d_xtermosc-array-in-struct-display.patch
> @@ -0,0 +1,37 @@
> +From: =?UTF-8?q?V=C3=A1clav=20Dole=C5=BEal?= <vdolezal@redhat.com>
> +Date: Fri, 21 Feb 2020 14:02:51 +0100
> +Subject: [PATCH] Expand-d_xtermosc-array-in-struct-display
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +Commit c5db181 expands index range of "typ2" by one without expanding
> +affected arrays. d_xtermosc in struct display is one of these.
> +
> +Related: c5db181b6e017cfccb8d7842ce140e59294d9f62
> +  (ansi: add support for xterm OSC 11)
> +Related: 68386dfb1fa33471372a8cd2e74686758a2f527b
> +  (Fix out of bounds access when setting w_xtermosc after OSC 49)
> +
> +Signed-off-by: Václav Doležal <vdolezal@redhat.com>
> +
> +Imported from screen_4.8.0-7.debian.tar.xz
> +
> +Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> +---
> + display.h | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/display.h b/display.h
> +index 459cc5dc1543..4fc206189b4b 100644
> +--- a/display.h
> ++++ b/display.h
> +@@ -112,7 +112,7 @@ struct display
> +   int	d_mousetrack;		/* set when user wants to use mouse even when the window
> + 				   does not */
> + #ifdef RXVT_OSC
> +-  int   d_xtermosc[4];		/* osc used */
> ++  int   d_xtermosc[5];		/* osc used */
> + #endif
> +   struct mchar d_lpchar;	/* missing char */
> +   struct timeval d_status_time;	/* time of status display */
> diff --git a/patches/screen-4.8.0/0103-TERMCAP_BUF-is-used-in-place-of-TERMCAP_BUFSIZE.patch b/patches/screen-4.8.0/0103-TERMCAP_BUF-is-used-in-place-of-TERMCAP_BUFSIZE.patch
> new file mode 100644
> index 000000000000..1152cb522b95
> --- /dev/null
> +++ b/patches/screen-4.8.0/0103-TERMCAP_BUF-is-used-in-place-of-TERMCAP_BUFSIZE.patch
> @@ -0,0 +1,24 @@
> +From: Michael Olbrich <m.olbrich@pengutronix.de>
> +Date: Mon, 27 Apr 2020 18:12:56 +0200
> +Subject: [PATCH] TERMCAP_BUF-is-used-in-place-of-TERMCAP_BUFSIZE
> +
> +Imported from screen_4.8.0-7.debian.tar.xz
> +
> +Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> +---
> + termcap.c | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/termcap.c b/termcap.c
> +index ed9e838c4c9d..29684cf974f7 100644
> +--- a/termcap.c
> ++++ b/termcap.c
> +@@ -1066,7 +1066,7 @@ int aflag;
> + 	{
> + 	  if (i >= T_KEYPAD)	/* don't put keypad codes in TERMCAP */
> + 	    continue;		/* - makes it too big */
> +-#if (TERMCAP_BUF < 1024)
> ++#if (TERMCAP_BUFSIZE < 1024)
> +           if (i >= T_FEXTRA && i < T_BACKTAB) /* also skip extra vt220 keys */
> +             continue;
> +           if (i > T_BACKTAB && i < T_NAVIGATE) /* more vt220 keys */
> diff --git a/patches/screen-4.8.0/0104-CVE-2021-26937.patch b/patches/screen-4.8.0/0104-CVE-2021-26937.patch
> new file mode 100644
> index 000000000000..9f4e879afd24
> --- /dev/null
> +++ b/patches/screen-4.8.0/0104-CVE-2021-26937.patch
> @@ -0,0 +1,69 @@
> +From: Michael Olbrich <m.olbrich@pengutronix.de>
> +Date: Fri, 7 Jan 2022 12:53:57 +0100
> +Subject: [PATCH] CVE-2021-26937
> +
> +Imported from screen_4.8.0-7.debian.tar.xz
> +
> +Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> +---
> + encoding.c | 15 +++++++++------
> + 1 file changed, 9 insertions(+), 6 deletions(-)
> +
> +diff --git a/encoding.c b/encoding.c
> +index e5db3e708126..79f5d14024c4 100644
> +--- a/encoding.c
> ++++ b/encoding.c
> +@@ -43,7 +43,7 @@ static int  encmatch __P((char *, char *));
> + # ifdef UTF8
> + static int   recode_char __P((int, int, int));
> + static int   recode_char_to_encoding __P((int, int));
> +-static void  comb_tofront __P((int, int));
> ++static void  comb_tofront __P((int));
> + #  ifdef DW_CHARS
> + static int   recode_char_dw __P((int, int *, int, int));
> + static int   recode_char_dw_to_encoding __P((int, int *, int));
> +@@ -1263,6 +1263,8 @@ int c;
> +     {0x30000, 0x3FFFD},
> +   };
> + 
> ++  if (c >= 0xdf00 && c <= 0xdfff)
> ++    return 1;          /* dw combining sequence */
> +   return ((bisearch(c, wide, sizeof(wide) / sizeof(struct interval) - 1)) ||
> +           (cjkwidth &&
> +            bisearch(c, ambiguous,
> +@@ -1330,11 +1332,12 @@ int c;
> + }
> + 
> + static void
> +-comb_tofront(root, i)
> +-int root, i;
> ++comb_tofront(i)
> ++int i;
> + {
> +   for (;;)
> +     {
> ++      int root = i >= 0x700 ? 0x801 : 0x800;
> +       debug1("bring to front: %x\n", i);
> +       combchars[combchars[i]->prev]->next = combchars[i]->next;
> +       combchars[combchars[i]->next]->prev = combchars[i]->prev;
> +@@ -1396,9 +1399,9 @@ struct mchar *mc;
> +     {
> +       /* full, recycle old entry */
> +       if (c1 >= 0xd800 && c1 < 0xe000)
> +-        comb_tofront(root, c1 - 0xd800);
> ++        comb_tofront(c1 - 0xd800);
> +       i = combchars[root]->prev;
> +-      if (c1 == i + 0xd800)
> ++      if (i == 0x800 || i == 0x801 || c1 == i + 0xd800)
> + 	{
> + 	  /* completely full, can't recycle */
> + 	  debug("utf8_handle_comp: completely full!\n");
> +@@ -1422,7 +1425,7 @@ struct mchar *mc;
> +   mc->font  = (i >> 8) + 0xd8;
> +   mc->fontx = 0;
> +   debug3("combinig char %x %x -> %x\n", c1, c, i + 0xd800);
> +-  comb_tofront(root, i);
> ++  comb_tofront(i);
> + }
> + 
> + #else /* !UTF8 */
> diff --git a/patches/screen-4.5.0/autogen.sh b/patches/screen-4.8.0/autogen.sh
> similarity index 100%
> rename from patches/screen-4.5.0/autogen.sh
> rename to patches/screen-4.8.0/autogen.sh
> diff --git a/patches/screen-4.8.0/series b/patches/screen-4.8.0/series
> new file mode 100644
> index 000000000000..c9b8d7197669
> --- /dev/null
> +++ b/patches/screen-4.8.0/series
> @@ -0,0 +1,12 @@
> +# generated by git-ptx-patches
> +#tag:base --start-number 1
> +#tag:buildroot --start-number 1
> +0001-comm.h-now-depends-on-term.h.patch
> +0002-comm.h-needed-for-list_-display-generic-.o.patch
> +#tag:debian --start-number 100
> +0100-suppress_remap.patch
> +0101-fix_screen_utf8_nfd.patch
> +0102-Expand-d_xtermosc-array-in-struct-display.patch
> +0103-TERMCAP_BUF-is-used-in-place-of-TERMCAP_BUFSIZE.patch
> +0104-CVE-2021-26937.patch
> +# d92ac31ab347a013a74ca7f4001696ec  - git-ptx-patches magic
> diff --git a/rules/screen.make b/rules/screen.make
> index 39a96dae2177..1087dfc9d8fd 100644
> --- a/rules/screen.make
> +++ b/rules/screen.make
> @@ -14,8 +14,8 @@ PACKAGES-$(PTXCONF_SCREEN) += screen
>  #
>  # Paths and names
>  #
> -SCREEN_VERSION	:= 4.5.0
> -SCREEN_MD5	:= a32105a91359afab1a4349209a028e31
> +SCREEN_VERSION	:= 4.8.0
> +SCREEN_MD5	:= d276213d3acd10339cd37848b8c4ab1e
>  SCREEN		:= screen-$(SCREEN_VERSION)
>  SCREEN_SUFFIX	:= tar.gz
>  SCREEN_URL	:= $(call ptx/mirror, GNU, screen/$(SCREEN).$(SCREEN_SUFFIX))

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [ptxdist] [APPLIED] iptables: Version bump 1.8.3 -> 1.8.7
  2021-12-22 13:02 ` [ptxdist] [PATCH] iptables: Version bump 1.8.3 -> 1.8.7 Christian Melki
  2022-01-06  7:10   ` Michael Olbrich
@ 2022-01-21  7:19   ` Michael Olbrich
  1 sibling, 0 replies; 54+ messages in thread
From: Michael Olbrich @ 2022-01-21  7:19 UTC (permalink / raw)
  To: ptxdist; +Cc: Christian Melki

Thanks, applied as 6e92dc0d9760fd52b81fd8526ff17c25536f0ac2.

Michael

[sent from post-receive hook]

On Fri, 21 Jan 2022 08:19:25 +0100, Christian Melki <christian.melki@t2data.com> wrote:
> Package maintenance.
> 
> Signed-off-by: Christian Melki <christian.melki@t2data.com>
> Message-Id: <20211222130304.2549154-8-christian.melki@t2data.com>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
> 
> diff --git a/rules/iptables.make b/rules/iptables.make
> index 6a2449bce58a..994cc0898b15 100644
> --- a/rules/iptables.make
> +++ b/rules/iptables.make
> @@ -19,8 +19,8 @@ PACKAGES-$(PTXCONF_IPTABLES) += iptables
>  #
>  # Paths and names
>  #
> -IPTABLES_VERSION	:= 1.8.3
> -IPTABLES_MD5		:= 29de711d15c040c402cf3038c69ff513
> +IPTABLES_VERSION	:= 1.8.7
> +IPTABLES_MD5		:= 602ba7e937c72fbb7b1c2b71c3b0004b
>  IPTABLES		:= iptables-$(IPTABLES_VERSION)
>  IPTABLES_SUFFIX		:= tar.bz2
>  IPTABLES_URL		:= http://ftp.netfilter.org/pub/iptables/$(IPTABLES).$(IPTABLES_SUFFIX)

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


^ permalink raw reply	[flat|nested] 54+ messages in thread

end of thread, other threads:[~2022-01-21  7:22 UTC | newest]

Thread overview: 54+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-22 13:02 [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Christian Melki
2021-12-22 13:02 ` [ptxdist] [PATCH] bridge-utils: Version bump. 1.6 -> 1.7.1 Christian Melki
2022-01-21  7:18   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] curl: Version bump 7.77.0 -> 7.80.0 Christian Melki
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] e2fsprogs: Version bump 1.46.2 -> 1.46.4 Christian Melki
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] ethtool: Version bump. 5.13 -> 5.15 Christian Melki
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] expat: Version bump 2.4.1 -> 2.4.2 Christian Melki
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] host-libcap: BUILD_GPERF is reserved Christian Melki
2022-01-05 12:18   ` Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] iptables: Version bump 1.8.3 -> 1.8.7 Christian Melki
2022-01-06  7:10   ` Michael Olbrich
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] jimtcl: Verison bump 0.80 -> 0.81 Christian Melki
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] libcap-ng: Version bump 0.7.10 -> 0.8.2 Christian Melki
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] libcap: Version bump 2.51 -> 2.62 Christian Melki
2022-01-05 12:21   ` Michael Olbrich
2022-01-05 12:32     ` Christian Melki
2022-01-05 12:46       ` Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] libffi: Version bump 3.3 -> 3.4.2 Christian Melki
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] libjpeg: Version bump 2.1.0 -> 2.1.2 Christian Melki
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] libmbim: Version bump 1.24.2 -> 1.26.2 Christian Melki
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] libseccomp: Version bump 2.5.1 -> 2.5.3 Christian Melki
2022-01-06 10:56   ` Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] libunwind: Version bump 1.5.0 -> 1.6.2 Christian Melki
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] openssh: Version bump 8.6p1 -> 8.8p1 Christian Melki
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:02 ` [ptxdist] [PATCH] screen: Version bump 4.5.0 -> 4.8.0 Christian Melki
2022-01-06 10:55   ` Michael Olbrich
2022-01-07  9:58     ` Christian Melki
2022-01-07 11:05       ` Michael Olbrich
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:03 ` [ptxdist] [PATCH] strace: Version bump 5.9 -> 5.15 Christian Melki
2022-01-05 12:53   ` Michael Olbrich
2021-12-22 13:03 ` [ptxdist] [PATCH] tcpdump: Version bump 4.93 -> 4.99.1 Christian Melki
2022-01-06  7:22   ` Michael Olbrich
2021-12-22 13:03 ` [ptxdist] [WIP: PATCH] usbutils: Version bump 007 -> 014 Christian Melki
2022-01-05 12:38   ` Michael Olbrich
2022-01-06 21:52     ` Christian Melki
2022-01-07  8:09       ` Michael Olbrich
2021-12-22 13:03 ` [ptxdist] [PATCH] util-linux-ng: Version bump 2.37 -> 2.37.2 Christian Melki
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2021-12-22 13:03 ` [ptxdist] [PATCH] zstd: Version bump 1.5.0 -> 1.5.1 Christian Melki
2022-01-21  7:19   ` [ptxdist] [APPLIED] " Michael Olbrich
2022-01-05 13:00 ` [ptxdist] [PATCH] bash: Version bump. 4.3.30 (+patches-33) -> 5.1.8 (patches-12) Michael Olbrich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox