Upgrade libcups to v2.3.3

(Stop building getifaddrs.c which seems to have been broken upstream and
which we don't use anyway.)

Bug: 168903843
Test: Build the code, flash the device and run fuzzer
Test: make
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:5dc9169996bece383ff2935e338f381913dc183b)
Merged-In: I3a33013c2648bc4831d1c6d6e369f8d5b7976895
Change-Id: I3a33013c2648bc4831d1c6d6e369f8d5b7976895
diff --git a/Android.bp b/Android.bp
index 5d5b304..3f4c114 100644
--- a/Android.bp
+++ b/Android.bp
@@ -31,7 +31,6 @@
         "cups/encode.c",
         "cups/file.c",
         "cups/getdevices.c",
-        "cups/getifaddrs.c",
         "cups/getputfile.c",
         "cups/globals.c",
         "cups/hash.c",
diff --git a/CHANGES.md b/CHANGES.md
index 5959407..df72892 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,21 @@
-CHANGES - 2.3.1 - 2019-12-13
+CHANGES - 2.3.3 - 2020-04-24
 ============================
 
+Changes in CUPS v2.3.3
+----------------------
+
+- CVE-2020-3898: The `ppdOpen` function did not handle invalid UI
+  constraint.  `ppdcSource::get_resolution` function did not handle
+  invalid resolution strings.
+- CVE-2019-8842: The `ippReadIO` function may under-read an extension
+  field.
+- Fixed WARNING_OPTIONS support for GCC 9.x
+
+Changes in CUPS v2.3.2
+----------------------
+
+- Localization updates.
+
 
 Changes in CUPS v2.3.1
 ----------------------
diff --git a/INSTALL.md b/INSTALL.md
index f880134..37cc94b 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,4 +1,4 @@
-INSTALL - CUPS v2.3.1 - 2019-12-13
+INSTALL - CUPS v2.3.3 - 2020-04-24
 ==================================
 
 This file describes how to compile and install CUPS from source code. For more
diff --git a/METADATA b/METADATA
index 7569c7c..37963ed 100644
--- a/METADATA
+++ b/METADATA
@@ -7,12 +7,13 @@
   }
   url {
     type: ARCHIVE
-    value: "https://github.com/apple/cups/releases/download/v2.3.1/cups-2.3.1-source.tar.gz"
+    value: "https://github.com/apple/cups/releases/download/v2.3.3/cups-2.3.3-source.tar.gz"
   }
-  version: "v2.3.1"
+  version: "v2.3.3"
+  license_type: RESTRICTED
   last_upgrade_date {
-    year: 2019
-    month: 12
-    day: 13
+    year: 2020
+    month: 10
+    day: 28
   }
 }
diff --git a/README.md b/README.md
index 6e15a93..700213d 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-README - CUPS v2.3.1 - 2019-12-13
+README - CUPS v2.3.3 - 2020-04-24
 =================================
 
 INTRODUCTION
diff --git a/README.version b/README.version
deleted file mode 100644
index 5a727df..0000000
--- a/README.version
+++ /dev/null
@@ -1,10 +0,0 @@
-URL: https://github.com/apple/cups
-Version: v2.2.9
-License: LGPL
-Description:
-CUPS is the standards-based, open source printing system developed by Apple Inc. for macOS® and other UNIX®-like operating systems. CUPS uses the Internet Printing Protocol (IPP) to support printing to local and network printers.
-
-Local Modifications:
-        Fix for CVE-2020-3898 (I1e4988e753c0ed1df43937b3009fd62ecd81ccc0)
-        Fix for CVE-2019-8842 (Ib3d4260899941f0c8050cf6d77a9022db63bdc66)
-        Use boringSSL
diff --git a/config-scripts/cups-compiler.m4 b/config-scripts/cups-compiler.m4
index 63ea1f4..86e8bc4 100644
--- a/config-scripts/cups-compiler.m4
+++ b/config-scripts/cups-compiler.m4
@@ -175,10 +175,8 @@
 	# doesn't trigger...
 	gccversion=`$CC --version | head -1 | awk '{print $NF}'`
 	case "$gccversion" in
-		1.* | 2.* | 3.* | 4.* | 5.* | 6.* | \(clang-*)
-			;;
-		*)
-			WARNING_OPTIONS="$WARNING_OPTIONS -Wno-format-truncation -Wno-format-overflow -Wno-tautological-compare"
+		7.* | 8.*)
+			WARNING_OPTIONS="$WARNING_OPTIONS -Wno-format-truncation -Wno-tautological-compare"
 			;;
 	esac
 
diff --git a/configure b/configure
index 004ecee..7a7a12f 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for CUPS 2.3.1.
+# Generated by GNU Autoconf 2.69 for CUPS 2.3.3.
 #
 # Report bugs to <https://github.com/apple/cups/issues>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='CUPS'
 PACKAGE_TARNAME='cups'
-PACKAGE_VERSION='2.3.1'
-PACKAGE_STRING='CUPS 2.3.1'
+PACKAGE_VERSION='2.3.3'
+PACKAGE_STRING='CUPS 2.3.3'
 PACKAGE_BUGREPORT='https://github.com/apple/cups/issues'
 PACKAGE_URL='https://www.cups.org/'
 
@@ -1467,7 +1467,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures CUPS 2.3.1 to adapt to many kinds of systems.
+\`configure' configures CUPS 2.3.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1532,7 +1532,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of CUPS 2.3.1:";;
+     short | recursive ) echo "Configuration of CUPS 2.3.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1713,7 +1713,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-CUPS configure 2.3.1
+CUPS configure 2.3.3
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2177,7 +2177,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by CUPS $as_me 2.3.1, which was
+It was created by CUPS $as_me 2.3.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2694,7 +2694,7 @@
 ac_config_headers="$ac_config_headers config.h"
 
 
-CUPS_VERSION="2.3.1"
+CUPS_VERSION="2.3.3"
 CUPS_REVISION=""
 CUPS_BUILD="cups-$CUPS_VERSION"
 
@@ -6911,9 +6911,7 @@
 	# doesn't trigger...
 	gccversion=`$CC --version | head -1 | awk '{print $NF}'`
 	case "$gccversion" in
-		1.* | 2.* | 3.* | 4.* | 5.* | 6.* | \(clang-*)
-			;;
-		*)
+		7.* | 8.* | 9.*)
 			WARNING_OPTIONS="$WARNING_OPTIONS -Wno-format-truncation -Wno-format-overflow -Wno-tautological-compare"
 			;;
 	esac
@@ -10387,7 +10385,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by CUPS $as_me 2.3.1, which was
+This file was extended by CUPS $as_me 2.3.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -10450,7 +10448,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-CUPS config.status 2.3.1
+CUPS config.status 2.3.3
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 23abe87..dbf3bda 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12,7 +12,7 @@
 AC_PREREQ(2.60)
 
 dnl Package name and version...
-AC_INIT([CUPS], [2.3.1], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
+AC_INIT([CUPS], [2.3.3], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
 
 sinclude(config-scripts/cups-opsys.m4)
 sinclude(config-scripts/cups-common.m4)
diff --git a/cups/cups-private.h b/cups/cups-private.h
index 126a24f..97734a5 100644
--- a/cups/cups-private.h
+++ b/cups/cups-private.h
@@ -275,7 +275,7 @@
 extern int		_cupsNextDelay(int current, int *previous) _CUPS_PRIVATE;
 extern void		_cupsSetDefaults(void) _CUPS_INTERNAL;
 extern void		_cupsSetError(ipp_status_t status, const char *message, int localize) _CUPS_PRIVATE;
-extern void		_cupsSetHTTPError(http_status_t status);
+extern void		_cupsSetHTTPError(http_status_t status) _CUPS_INTERNAL;
 #  ifdef HAVE_GSSAPI
 extern int		_cupsSetNegotiateAuthString(http_t *http, const char *method, const char *resource) _CUPS_PRIVATE;
 #  endif /* HAVE_GSSAPI */
diff --git a/cups/cups.h b/cups/cups.h
index 77a66c1..74955eb 100644
--- a/cups/cups.h
+++ b/cups/cups.h
@@ -42,10 +42,10 @@
  * Constants...
  */
 
-#  define CUPS_VERSION			2.0301
+#  define CUPS_VERSION			2.0303
 #  define CUPS_VERSION_MAJOR		2
 #  define CUPS_VERSION_MINOR		3
-#  define CUPS_VERSION_PATCH		1
+#  define CUPS_VERSION_PATCH		3
 
 #  define CUPS_BC_FD			3
 					/* Back-channel file descriptor for
diff --git a/cups/cupspm.md b/cups/cupspm.md
index d4d6d7c..b6e09ba 100644
--- a/cups/cupspm.md
+++ b/cups/cupspm.md
@@ -2,7 +2,7 @@
 title: CUPS Programming Manual
 author: Michael R Sweet
 copyright: Copyright © 2007-2019 by Apple Inc. All Rights Reserved.
-version: 2.3.1
+version: 2.3.3
 ...
 
 > Please [file issues on Github](https://github.com/apple/cups/issues) to
diff --git a/cups/getifaddrs.c b/cups/getifaddrs.c
index a04750a..f751aa8 100644
--- a/cups/getifaddrs.c
+++ b/cups/getifaddrs.c
@@ -12,7 +12,6 @@
  * Include necessary headers.
  */
 
-#include "versioning.h"
 #include "getifaddrs-internal.h"
 
 
diff --git a/cups/ipp.c.orig b/cups/ipp.c.orig
deleted file mode 100644
index fd8988f..0000000
--- a/cups/ipp.c.orig
+++ /dev/null
@@ -1,7053 +0,0 @@
-/*
- * Internet Printing Protocol functions for CUPS.
- *
- * Copyright 2007-2017 by Apple Inc.
- * Copyright 1997-2007 by Easy Software Products, all rights reserved.
- *
- * These coded instructions, statements, and computer programs are the
- * property of Apple Inc. and are protected by Federal copyright
- * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- * which should have been included with this file.  If this file is
- * missing or damaged, see the license at "http://www.cups.org/".
- *
- * This file is subject to the Apple OS-Developed Software exception.
- */
-
-/*
- * Include necessary headers...
- */
-
-#include "cups-private.h"
-#include <regex.h>
-#ifdef WIN32
-#  include <io.h>
-#endif /* WIN32 */
-
-
-/*
- * Local functions...
- */
-
-static ipp_attribute_t	*ipp_add_attr(ipp_t *ipp, const char *name,
-			              ipp_tag_t  group_tag, ipp_tag_t value_tag,
-			              int num_values);
-static void		ipp_free_values(ipp_attribute_t *attr, int element,
-			                int count);
-static char		*ipp_get_code(const char *locale, char *buffer,
-			              size_t bufsize)
-			              __attribute__((nonnull(1,2)));
-static char		*ipp_lang_code(const char *locale, char *buffer,
-			               size_t bufsize)
-			               __attribute__((nonnull(1,2)));
-static size_t		ipp_length(ipp_t *ipp, int collection);
-static ssize_t		ipp_read_http(http_t *http, ipp_uchar_t *buffer,
-			              size_t length);
-static ssize_t		ipp_read_file(int *fd, ipp_uchar_t *buffer,
-			              size_t length);
-static void		ipp_set_error(ipp_status_t status, const char *format,
-			              ...);
-static _ipp_value_t	*ipp_set_value(ipp_t *ipp, ipp_attribute_t **attr,
-			               int element);
-static ssize_t		ipp_write_file(int *fd, ipp_uchar_t *buffer,
-			               size_t length);
-
-
-/*
- * '_cupsBufferGet()' - Get a read/write buffer.
- */
-
-char *					/* O - Buffer */
-_cupsBufferGet(size_t size)		/* I - Size required */
-{
-  _cups_buffer_t	*buffer;	/* Current buffer */
-  _cups_globals_t	*cg = _cupsGlobals();
-					/* Global data */
-
-
-  for (buffer = cg->cups_buffers; buffer; buffer = buffer->next)
-    if (!buffer->used && buffer->size >= size)
-      break;
-
-  if (!buffer)
-  {
-    if ((buffer = malloc(sizeof(_cups_buffer_t) + size - 1)) == NULL)
-      return (NULL);
-
-    buffer->next     = cg->cups_buffers;
-    buffer->size     = size;
-    cg->cups_buffers = buffer;
-  }
-
-  buffer->used = 1;
-
-  return (buffer->d);
-}
-
-
-/*
- * '_cupsBufferRelease()' - Release a read/write buffer.
- */
-
-void
-_cupsBufferRelease(char *b)		/* I - Buffer to release */
-{
-  _cups_buffer_t	*buffer;	/* Buffer */
-
-
- /*
-  * Mark this buffer as unused...
-  */
-
-  buffer       = (_cups_buffer_t *)(b - offsetof(_cups_buffer_t, d));
-  buffer->used = 0;
-}
-
-
-/*
- * 'ippAddBoolean()' - Add a boolean attribute to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddBoolean(ipp_t      *ipp,		/* I - IPP message */
-              ipp_tag_t  group,		/* I - IPP group */
-              const char *name,		/* I - Name of attribute */
-              char       value)		/* I - Value of attribute */
-{
-  ipp_attribute_t	*attr;		/* New attribute */
-
-
-  DEBUG_printf(("ippAddBoolean(ipp=%p, group=%02x(%s), name=\"%s\", value=%d)", (void *)ipp, group, ippTagString(group), name, value));
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE)
-    return (NULL);
-
- /*
-  * Create the attribute...
-  */
-
-  if ((attr = ipp_add_attr(ipp, name, group, IPP_TAG_BOOLEAN, 1)) == NULL)
-    return (NULL);
-
-  attr->values[0].boolean = value;
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddBooleans()' - Add an array of boolean values.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddBooleans(ipp_t      *ipp,		/* I - IPP message */
-               ipp_tag_t  group,	/* I - IPP group */
-	       const char *name,	/* I - Name of attribute */
-	       int        num_values,	/* I - Number of values */
-	       const char *values)	/* I - Values */
-{
-  int			i;		/* Looping var */
-  ipp_attribute_t	*attr;		/* New attribute */
-  _ipp_value_t		*value;		/* Current value */
-
-
-  DEBUG_printf(("ippAddBooleans(ipp=%p, group=%02x(%s), name=\"%s\", num_values=%d, values=%p)", (void *)ipp, group, ippTagString(group), name, num_values, (void *)values));
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      num_values < 1)
-    return (NULL);
-
- /*
-  * Create the attribute...
-  */
-
-  if ((attr = ipp_add_attr(ipp, name, group, IPP_TAG_BOOLEAN, num_values)) == NULL)
-    return (NULL);
-
-  if (values)
-  {
-    for (i = num_values, value = attr->values;
-	 i > 0;
-	 i --, value ++)
-      value->boolean = *values++;
-  }
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddCollection()' - Add a collection value.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- *
- * @since CUPS 1.1.19/macOS 10.3@
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddCollection(ipp_t      *ipp,	/* I - IPP message */
-                 ipp_tag_t  group,	/* I - IPP group */
-		 const char *name,	/* I - Name of attribute */
-		 ipp_t      *value)	/* I - Value */
-{
-  ipp_attribute_t	*attr;		/* New attribute */
-
-
-  DEBUG_printf(("ippAddCollection(ipp=%p, group=%02x(%s), name=\"%s\", value=%p)", (void *)ipp, group, ippTagString(group), name, (void *)value));
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE)
-    return (NULL);
-
- /*
-  * Create the attribute...
-  */
-
-  if ((attr = ipp_add_attr(ipp, name, group, IPP_TAG_BEGIN_COLLECTION, 1)) == NULL)
-    return (NULL);
-
-  attr->values[0].collection = value;
-
-  if (value)
-    value->use ++;
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddCollections()' - Add an array of collection values.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- *
- * @since CUPS 1.1.19/macOS 10.3@
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddCollections(
-    ipp_t       *ipp,			/* I - IPP message */
-    ipp_tag_t   group,			/* I - IPP group */
-    const char  *name,			/* I - Name of attribute */
-    int         num_values,		/* I - Number of values */
-    const ipp_t **values)		/* I - Values */
-{
-  int			i;		/* Looping var */
-  ipp_attribute_t	*attr;		/* New attribute */
-  _ipp_value_t		*value;		/* Current value */
-
-
-  DEBUG_printf(("ippAddCollections(ipp=%p, group=%02x(%s), name=\"%s\", num_values=%d, values=%p)", (void *)ipp, group, ippTagString(group), name, num_values, (void *)values));
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      num_values < 1)
-    return (NULL);
-
- /*
-  * Create the attribute...
-  */
-
-  if ((attr = ipp_add_attr(ipp, name, group, IPP_TAG_BEGIN_COLLECTION,
-                           num_values)) == NULL)
-    return (NULL);
-
-  if (values)
-  {
-    for (i = num_values, value = attr->values;
-	 i > 0;
-	 i --, value ++)
-    {
-      value->collection = (ipp_t *)*values++;
-      value->collection->use ++;
-    }
-  }
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddDate()' - Add a dateTime attribute to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddDate(ipp_t             *ipp,	/* I - IPP message */
-           ipp_tag_t         group,	/* I - IPP group */
-	   const char        *name,	/* I - Name of attribute */
-	   const ipp_uchar_t *value)	/* I - Value */
-{
-  ipp_attribute_t	*attr;		/* New attribute */
-
-
-  DEBUG_printf(("ippAddDate(ipp=%p, group=%02x(%s), name=\"%s\", value=%p)", (void *)ipp, group, ippTagString(group), name, (void *)value));
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !name || !value || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE)
-    return (NULL);
-
- /*
-  * Create the attribute...
-  */
-
-  if ((attr = ipp_add_attr(ipp, name, group, IPP_TAG_DATE, 1)) == NULL)
-    return (NULL);
-
-  memcpy(attr->values[0].date, value, 11);
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddInteger()' - Add a integer attribute to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- *
- * Supported values include enum (@code IPP_TAG_ENUM@) and integer
- * (@code IPP_TAG_INTEGER@).
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddInteger(ipp_t      *ipp,		/* I - IPP message */
-              ipp_tag_t  group,		/* I - IPP group */
-	      ipp_tag_t  value_tag,	/* I - Type of attribute */
-              const char *name,		/* I - Name of attribute */
-              int        value)		/* I - Value of attribute */
-{
-  ipp_attribute_t	*attr;		/* New attribute */
-
-
-  DEBUG_printf(("ippAddInteger(ipp=%p, group=%02x(%s), type=%02x(%s), name=\"%s\", value=%d)", (void *)ipp, group, ippTagString(group), value_tag, ippTagString(value_tag), name, value));
-
-  value_tag &= IPP_TAG_CUPS_MASK;
-
- /*
-  * Special-case for legacy usage: map out-of-band attributes to new ippAddOutOfBand
-  * function...
-  */
-
-  if (value_tag >= IPP_TAG_UNSUPPORTED_VALUE && value_tag <= IPP_TAG_ADMINDEFINE)
-    return (ippAddOutOfBand(ipp, group, value_tag, name));
-
- /*
-  * Range check input...
-  */
-
-#if 0
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      (value_tag != IPP_TAG_INTEGER && value_tag != IPP_TAG_ENUM))
-    return (NULL);
-#else
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE)
-    return (NULL);
-#endif /* 0 */
-
- /*
-  * Create the attribute...
-  */
-
-  if ((attr = ipp_add_attr(ipp, name, group, value_tag, 1)) == NULL)
-    return (NULL);
-
-  attr->values[0].integer = value;
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddIntegers()' - Add an array of integer values.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- *
- * Supported values include enum (@code IPP_TAG_ENUM@) and integer
- * (@code IPP_TAG_INTEGER@).
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddIntegers(ipp_t      *ipp,		/* I - IPP message */
-               ipp_tag_t  group,	/* I - IPP group */
-	       ipp_tag_t  value_tag,	/* I - Type of attribute */
-	       const char *name,	/* I - Name of attribute */
-	       int        num_values,	/* I - Number of values */
-	       const int  *values)	/* I - Values */
-{
-  int			i;		/* Looping var */
-  ipp_attribute_t	*attr;		/* New attribute */
-  _ipp_value_t		*value;		/* Current value */
-
-
-  DEBUG_printf(("ippAddIntegers(ipp=%p, group=%02x(%s), type=%02x(%s), name=\"%s\", num_values=%d, values=%p)", (void *)ipp, group, ippTagString(group), value_tag, ippTagString(value_tag), name, num_values, (void *)values));
-
-  value_tag &= IPP_TAG_CUPS_MASK;
-
- /*
-  * Range check input...
-  */
-
-#if 0
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      (value_tag != IPP_TAG_INTEGER && value_tag != IPP_TAG_ENUM) ||
-      num_values < 1)
-    return (NULL);
-#else
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      num_values < 1)
-    return (NULL);
-#endif /* 0 */
-
- /*
-  * Create the attribute...
-  */
-
-  if ((attr = ipp_add_attr(ipp, name, group, value_tag, num_values)) == NULL)
-    return (NULL);
-
-  if (values)
-  {
-    for (i = num_values, value = attr->values;
-	 i > 0;
-	 i --, value ++)
-      value->integer = *values++;
-  }
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddOctetString()' - Add an octetString value to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- *
- * @since CUPS 1.2/macOS 10.5@
- */
-
-ipp_attribute_t	*			/* O - New attribute */
-ippAddOctetString(ipp_t      *ipp,	/* I - IPP message */
-                  ipp_tag_t  group,	/* I - IPP group */
-                  const char *name,	/* I - Name of attribute */
-                  const void *data,	/* I - octetString data */
-		  int        datalen)	/* I - Length of data in bytes */
-{
-  ipp_attribute_t	*attr;		/* New attribute */
-
-
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      datalen < 0 || datalen > IPP_MAX_LENGTH)
-    return (NULL);
-
-  if ((attr = ipp_add_attr(ipp, name, group, IPP_TAG_STRING, 1)) == NULL)
-    return (NULL);
-
- /*
-  * Initialize the attribute data...
-  */
-
-  attr->values[0].unknown.length = datalen;
-
-  if (data)
-  {
-    if ((attr->values[0].unknown.data = malloc((size_t)datalen)) == NULL)
-    {
-      ippDeleteAttribute(ipp, attr);
-      return (NULL);
-    }
-
-    memcpy(attr->values[0].unknown.data, data, (size_t)datalen);
-  }
-
- /*
-  * Return the new attribute...
-  */
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddOutOfBand()' - Add an out-of-band value to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- *
- * Supported out-of-band values include unsupported-value
- * (@code IPP_TAG_UNSUPPORTED_VALUE@), default (@code IPP_TAG_DEFAULT@), unknown
- * (@code IPP_TAG_UNKNOWN@), no-value (@code IPP_TAG_NOVALUE@), not-settable
- * (@code IPP_TAG_NOTSETTABLE@), delete-attribute (@code IPP_TAG_DELETEATTR@), and
- * admin-define (@code IPP_TAG_ADMINDEFINE@).
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-ipp_attribute_t	*			/* O - New attribute */
-ippAddOutOfBand(ipp_t      *ipp,	/* I - IPP message */
-                ipp_tag_t  group,	/* I - IPP group */
-                ipp_tag_t  value_tag,	/* I - Type of attribute */
-		const char *name)	/* I - Name of attribute */
-{
-  DEBUG_printf(("ippAddOutOfBand(ipp=%p, group=%02x(%s), value_tag=%02x(%s), name=\"%s\")", (void *)ipp, group, ippTagString(group), value_tag, ippTagString(value_tag), name));
-
-  value_tag &= IPP_TAG_CUPS_MASK;
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      (value_tag != IPP_TAG_UNSUPPORTED_VALUE &&
-       value_tag != IPP_TAG_DEFAULT &&
-       value_tag != IPP_TAG_UNKNOWN &&
-       value_tag != IPP_TAG_NOVALUE &&
-       value_tag != IPP_TAG_NOTSETTABLE &&
-       value_tag != IPP_TAG_DELETEATTR &&
-       value_tag != IPP_TAG_ADMINDEFINE))
-    return (NULL);
-
- /*
-  * Create the attribute...
-  */
-
-  return (ipp_add_attr(ipp, name, group, value_tag, 1));
-}
-
-
-/*
- * 'ippAddRange()' - Add a range of values to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- *
- * The @code lower@ parameter must be less than or equal to the @code upper@ parameter.
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddRange(ipp_t      *ipp,		/* I - IPP message */
-            ipp_tag_t  group,		/* I - IPP group */
-	    const char *name,		/* I - Name of attribute */
-	    int        lower,		/* I - Lower value */
-	    int        upper)		/* I - Upper value */
-{
-  ipp_attribute_t	*attr;		/* New attribute */
-
-
-  DEBUG_printf(("ippAddRange(ipp=%p, group=%02x(%s), name=\"%s\", lower=%d, upper=%d)", (void *)ipp, group, ippTagString(group), name, lower, upper));
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE)
-    return (NULL);
-
- /*
-  * Create the attribute...
-  */
-
-  if ((attr = ipp_add_attr(ipp, name, group, IPP_TAG_RANGE, 1)) == NULL)
-    return (NULL);
-
-  attr->values[0].range.lower = lower;
-  attr->values[0].range.upper = upper;
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddRanges()' - Add ranges of values to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddRanges(ipp_t      *ipp,		/* I - IPP message */
-             ipp_tag_t  group,		/* I - IPP group */
-	     const char *name,		/* I - Name of attribute */
-	     int        num_values,	/* I - Number of values */
-	     const int  *lower,		/* I - Lower values */
-	     const int  *upper)		/* I - Upper values */
-{
-  int			i;		/* Looping var */
-  ipp_attribute_t	*attr;		/* New attribute */
-  _ipp_value_t		*value;		/* Current value */
-
-
-  DEBUG_printf(("ippAddRanges(ipp=%p, group=%02x(%s), name=\"%s\", num_values=%d, lower=%p, upper=%p)", (void *)ipp, group, ippTagString(group), name, num_values, (void *)lower, (void *)upper));
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      num_values < 1)
-    return (NULL);
-
- /*
-  * Create the attribute...
-  */
-
-  if ((attr = ipp_add_attr(ipp, name, group, IPP_TAG_RANGE, num_values)) == NULL)
-    return (NULL);
-
-  if (lower && upper)
-  {
-    for (i = num_values, value = attr->values;
-	 i > 0;
-	 i --, value ++)
-    {
-      value->range.lower = *lower++;
-      value->range.upper = *upper++;
-    }
-  }
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddResolution()' - Add a resolution value to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddResolution(ipp_t      *ipp,	/* I - IPP message */
-        	 ipp_tag_t  group,	/* I - IPP group */
-		 const char *name,	/* I - Name of attribute */
-		 ipp_res_t  units,	/* I - Units for resolution */
-		 int        xres,	/* I - X resolution */
-		 int        yres)	/* I - Y resolution */
-{
-  ipp_attribute_t	*attr;		/* New attribute */
-
-
-  DEBUG_printf(("ippAddResolution(ipp=%p, group=%02x(%s), name=\"%s\", units=%d, xres=%d, yres=%d)", (void *)ipp, group,
-		ippTagString(group), name, units, xres, yres));
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      units < IPP_RES_PER_INCH || units > IPP_RES_PER_CM ||
-      xres < 0 || yres < 0)
-    return (NULL);
-
- /*
-  * Create the attribute...
-  */
-
-  if ((attr = ipp_add_attr(ipp, name, group, IPP_TAG_RESOLUTION, 1)) == NULL)
-    return (NULL);
-
-  attr->values[0].resolution.xres  = xres;
-  attr->values[0].resolution.yres  = yres;
-  attr->values[0].resolution.units = units;
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddResolutions()' - Add resolution values to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddResolutions(ipp_t      *ipp,	/* I - IPP message */
-        	  ipp_tag_t  group,	/* I - IPP group */
-		  const char *name,	/* I - Name of attribute */
-		  int        num_values,/* I - Number of values */
-		  ipp_res_t  units,	/* I - Units for resolution */
-		  const int  *xres,	/* I - X resolutions */
-		  const int  *yres)	/* I - Y resolutions */
-{
-  int			i;		/* Looping var */
-  ipp_attribute_t	*attr;		/* New attribute */
-  _ipp_value_t		*value;		/* Current value */
-
-
-  DEBUG_printf(("ippAddResolutions(ipp=%p, group=%02x(%s), name=\"%s\", num_value=%d, units=%d, xres=%p, yres=%p)", (void *)ipp, group, ippTagString(group), name, num_values, units, (void *)xres, (void *)yres));
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      num_values < 1 ||
-      units < IPP_RES_PER_INCH || units > IPP_RES_PER_CM)
-    return (NULL);
-
- /*
-  * Create the attribute...
-  */
-
-  if ((attr = ipp_add_attr(ipp, name, group, IPP_TAG_RESOLUTION, num_values)) == NULL)
-    return (NULL);
-
-  if (xres && yres)
-  {
-    for (i = num_values, value = attr->values;
-	 i > 0;
-	 i --, value ++)
-    {
-      value->resolution.xres  = *xres++;
-      value->resolution.yres  = *yres++;
-      value->resolution.units = units;
-    }
-  }
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddSeparator()' - Add a group separator to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddSeparator(ipp_t *ipp)		/* I - IPP message */
-{
-  DEBUG_printf(("ippAddSeparator(ipp=%p)", (void *)ipp));
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp)
-    return (NULL);
-
- /*
-  * Create the attribute...
-  */
-
-  return (ipp_add_attr(ipp, NULL, IPP_TAG_ZERO, IPP_TAG_ZERO, 0));
-}
-
-
-/*
- * 'ippAddString()' - Add a language-encoded string to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- *
- * Supported string values include charset (@code IPP_TAG_CHARSET@), keyword
- * (@code IPP_TAG_KEYWORD@), language (@code IPP_TAG_LANGUAGE@), mimeMediaType
- * (@code IPP_TAG_MIMETYPE@), name (@code IPP_TAG_NAME@), nameWithLanguage
- * (@code IPP_TAG_NAMELANG), text (@code IPP_TAG_TEXT@), textWithLanguage
- * (@code IPP_TAG_TEXTLANG@), uri (@code IPP_TAG_URI@), and uriScheme
- * (@code IPP_TAG_URISCHEME@).
- *
- * The @code language@ parameter must be non-@code NULL@ for nameWithLanguage and
- * textWithLanguage string values and must be @code NULL@ for all other string values.
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddString(ipp_t      *ipp,		/* I - IPP message */
-             ipp_tag_t  group,		/* I - IPP group */
-	     ipp_tag_t  value_tag,	/* I - Type of attribute */
-             const char *name,		/* I - Name of attribute */
-             const char *language,	/* I - Language code */
-             const char *value)		/* I - Value */
-{
-  ipp_tag_t		temp_tag;	/* Temporary value tag (masked) */
-  ipp_attribute_t	*attr;		/* New attribute */
-  char			code[IPP_MAX_LANGUAGE];
-					/* Charset/language code buffer */
-
-
-  DEBUG_printf(("ippAddString(ipp=%p, group=%02x(%s), value_tag=%02x(%s), name=\"%s\", language=\"%s\", value=\"%s\")", (void *)ipp, group, ippTagString(group), value_tag, ippTagString(value_tag), name, language, value));
-
- /*
-  * Range check input...
-  */
-
-  temp_tag = (ipp_tag_t)((int)value_tag & IPP_TAG_CUPS_MASK);
-
-#if 0
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      (temp_tag < IPP_TAG_TEXT && temp_tag != IPP_TAG_TEXTLANG &&
-       temp_tag != IPP_TAG_NAMELANG) || temp_tag > IPP_TAG_MIMETYPE)
-    return (NULL);
-
-  if ((temp_tag == IPP_TAG_TEXTLANG || temp_tag == IPP_TAG_NAMELANG)
-          != (language != NULL))
-    return (NULL);
-#else
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE)
-    return (NULL);
-#endif /* 0 */
-
- /*
-  * See if we need to map charset, language, or locale values...
-  */
-
-  if (language && ((int)value_tag & IPP_TAG_CUPS_CONST) &&
-      strcmp(language, ipp_lang_code(language, code, sizeof(code))))
-    value_tag = temp_tag;		/* Don't do a fast copy */
-  else if (value && value_tag == (ipp_tag_t)(IPP_TAG_CHARSET | IPP_TAG_CUPS_CONST) &&
-           strcmp(value, ipp_get_code(value, code, sizeof(code))))
-    value_tag = temp_tag;		/* Don't do a fast copy */
-  else if (value && value_tag == (ipp_tag_t)(IPP_TAG_LANGUAGE | IPP_TAG_CUPS_CONST) &&
-           strcmp(value, ipp_lang_code(value, code, sizeof(code))))
-    value_tag = temp_tag;		/* Don't do a fast copy */
-
- /*
-  * Create the attribute...
-  */
-
-  if ((attr = ipp_add_attr(ipp, name, group, value_tag, 1)) == NULL)
-    return (NULL);
-
- /*
-  * Initialize the attribute data...
-  */
-
-  if ((int)value_tag & IPP_TAG_CUPS_CONST)
-  {
-    attr->values[0].string.language = (char *)language;
-    attr->values[0].string.text     = (char *)value;
-  }
-  else
-  {
-    if (language)
-      attr->values[0].string.language = _cupsStrAlloc(ipp_lang_code(language, code,
-						      sizeof(code)));
-
-    if (value)
-    {
-      if (value_tag == IPP_TAG_CHARSET)
-	attr->values[0].string.text = _cupsStrAlloc(ipp_get_code(value, code,
-								 sizeof(code)));
-      else if (value_tag == IPP_TAG_LANGUAGE)
-	attr->values[0].string.text = _cupsStrAlloc(ipp_lang_code(value, code,
-								  sizeof(code)));
-      else
-	attr->values[0].string.text = _cupsStrAlloc(value);
-    }
-  }
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddStringf()' - Add a formatted string to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document
- * (@code IPP_TAG_DOCUMENT@), event notification
- * (@code IPP_TAG_EVENT_NOTIFICATION@), operation (@code IPP_TAG_OPERATION@),
- * printer (@code IPP_TAG_PRINTER@), subscription (@code IPP_TAG_SUBSCRIPTION@),
- * or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- *
- * Supported string values include charset (@code IPP_TAG_CHARSET@), keyword
- * (@code IPP_TAG_KEYWORD@), language (@code IPP_TAG_LANGUAGE@), mimeMediaType
- * (@code IPP_TAG_MIMETYPE@), name (@code IPP_TAG_NAME@), nameWithLanguage
- * (@code IPP_TAG_NAMELANG), text (@code IPP_TAG_TEXT@), textWithLanguage
- * (@code IPP_TAG_TEXTLANG@), uri (@code IPP_TAG_URI@), and uriScheme
- * (@code IPP_TAG_URISCHEME@).
- *
- * The @code language@ parameter must be non-@code NULL@ for nameWithLanguage
- * and textWithLanguage string values and must be @code NULL@ for all other
- * string values.
- *
- * The @code format@ parameter uses formatting characters compatible with the
- * printf family of standard functions.  Additional arguments follow it as
- * needed.  The formatted string is truncated as needed to the maximum length of
- * the corresponding value type.
- *
- * @since CUPS 1.7/macOS 10.9@
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddStringf(ipp_t      *ipp,		/* I - IPP message */
-              ipp_tag_t  group,		/* I - IPP group */
-	      ipp_tag_t  value_tag,	/* I - Type of attribute */
-	      const char *name,		/* I - Name of attribute */
-	      const char *language,	/* I - Language code (@code NULL@ for default) */
-	      const char *format,	/* I - Printf-style format string */
-	      ...)			/* I - Additional arguments as needed */
-{
-  ipp_attribute_t	*attr;		/* New attribute */
-  va_list		ap;		/* Argument pointer */
-
-
-  va_start(ap, format);
-  attr = ippAddStringfv(ipp, group, value_tag, name, language, format, ap);
-  va_end(ap);
-
-  return (attr);
-}
-
-
-/*
- * 'ippAddStringfv()' - Add a formatted string to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document
- * (@code IPP_TAG_DOCUMENT@), event notification
- * (@code IPP_TAG_EVENT_NOTIFICATION@), operation (@code IPP_TAG_OPERATION@),
- * printer (@code IPP_TAG_PRINTER@), subscription (@code IPP_TAG_SUBSCRIPTION@),
- * or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- *
- * Supported string values include charset (@code IPP_TAG_CHARSET@), keyword
- * (@code IPP_TAG_KEYWORD@), language (@code IPP_TAG_LANGUAGE@), mimeMediaType
- * (@code IPP_TAG_MIMETYPE@), name (@code IPP_TAG_NAME@), nameWithLanguage
- * (@code IPP_TAG_NAMELANG), text (@code IPP_TAG_TEXT@), textWithLanguage
- * (@code IPP_TAG_TEXTLANG@), uri (@code IPP_TAG_URI@), and uriScheme
- * (@code IPP_TAG_URISCHEME@).
- *
- * The @code language@ parameter must be non-@code NULL@ for nameWithLanguage
- * and textWithLanguage string values and must be @code NULL@ for all other
- * string values.
- *
- * The @code format@ parameter uses formatting characters compatible with the
- * printf family of standard functions.  Additional arguments are passed in the
- * stdarg pointer @code ap@.  The formatted string is truncated as needed to the
- * maximum length of the corresponding value type.
- *
- * @since CUPS 1.7/macOS 10.9@
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddStringfv(ipp_t      *ipp,		/* I - IPP message */
-               ipp_tag_t  group,	/* I - IPP group */
-	       ipp_tag_t  value_tag,	/* I - Type of attribute */
-	       const char *name,	/* I - Name of attribute */
-	       const char *language,	/* I - Language code (@code NULL@ for default) */
-	       const char *format,	/* I - Printf-style format string */
-	       va_list    ap)		/* I - Additional arguments */
-{
-  char		buffer[IPP_MAX_TEXT + 4];
-					/* Formatted text string */
-  ssize_t	bytes,			/* Length of formatted value */
-		max_bytes;		/* Maximum number of bytes for value */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      (value_tag < IPP_TAG_TEXT && value_tag != IPP_TAG_TEXTLANG &&
-       value_tag != IPP_TAG_NAMELANG) || value_tag > IPP_TAG_MIMETYPE ||
-      !format)
-    return (NULL);
-
-  if ((value_tag == IPP_TAG_TEXTLANG || value_tag == IPP_TAG_NAMELANG)
-          != (language != NULL))
-    return (NULL);
-
- /*
-  * Format the string...
-  */
-
-  if (!strcmp(format, "%s"))
-  {
-   /*
-    * Optimize the simple case...
-    */
-
-    const char *s = va_arg(ap, char *);
-
-    if (!s)
-      s = "(null)";
-
-    bytes = (ssize_t)strlen(s);
-    strlcpy(buffer, s, sizeof(buffer));
-  }
-  else
-  {
-   /*
-    * Do a full formatting of the message...
-    */
-
-    if ((bytes = vsnprintf(buffer, sizeof(buffer), format, ap)) < 0)
-      return (NULL);
-  }
-
- /*
-  * Limit the length of the string...
-  */
-
-  switch (value_tag)
-  {
-    default :
-    case IPP_TAG_TEXT :
-    case IPP_TAG_TEXTLANG :
-        max_bytes = IPP_MAX_TEXT;
-        break;
-
-    case IPP_TAG_NAME :
-    case IPP_TAG_NAMELANG :
-        max_bytes = IPP_MAX_NAME;
-        break;
-
-    case IPP_TAG_CHARSET :
-        max_bytes = IPP_MAX_CHARSET;
-        break;
-
-    case IPP_TAG_KEYWORD :
-        max_bytes = IPP_MAX_KEYWORD;
-        break;
-
-    case IPP_TAG_LANGUAGE :
-        max_bytes = IPP_MAX_LANGUAGE;
-        break;
-
-    case IPP_TAG_MIMETYPE :
-        max_bytes = IPP_MAX_MIMETYPE;
-        break;
-
-    case IPP_TAG_URI :
-        max_bytes = IPP_MAX_URI;
-        break;
-
-    case IPP_TAG_URISCHEME :
-        max_bytes = IPP_MAX_URISCHEME;
-        break;
-  }
-
-  if (bytes >= max_bytes)
-  {
-    char	*bufmax,		/* Buffer at max_bytes */
-		*bufptr;		/* Pointer into buffer */
-
-    bufptr = buffer + strlen(buffer) - 1;
-    bufmax = buffer + max_bytes - 1;
-
-    while (bufptr > bufmax)
-    {
-      if (*bufptr & 0x80)
-      {
-        while ((*bufptr & 0xc0) == 0x80 && bufptr > buffer)
-          bufptr --;
-      }
-
-      bufptr --;
-    }
-
-    *bufptr = '\0';
-  }
-
- /*
-  * Add the formatted string and return...
-  */
-
-  return (ippAddString(ipp, group, value_tag, name, language, buffer));
-}
-
-
-/*
- * 'ippAddStrings()' - Add language-encoded strings to an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- *
- * Supported string values include charset (@code IPP_TAG_CHARSET@), keyword
- * (@code IPP_TAG_KEYWORD@), language (@code IPP_TAG_LANGUAGE@), mimeMediaType
- * (@code IPP_TAG_MIMETYPE@), name (@code IPP_TAG_NAME@), nameWithLanguage
- * (@code IPP_TAG_NAMELANG), text (@code IPP_TAG_TEXT@), textWithLanguage
- * (@code IPP_TAG_TEXTLANG@), uri (@code IPP_TAG_URI@), and uriScheme
- * (@code IPP_TAG_URISCHEME@).
- *
- * The @code language@ parameter must be non-@code NULL@ for nameWithLanguage and
- * textWithLanguage string values and must be @code NULL@ for all other string values.
- */
-
-ipp_attribute_t *			/* O - New attribute */
-ippAddStrings(
-    ipp_t              *ipp,		/* I - IPP message */
-    ipp_tag_t          group,		/* I - IPP group */
-    ipp_tag_t          value_tag,	/* I - Type of attribute */
-    const char         *name,		/* I - Name of attribute */
-    int                num_values,	/* I - Number of values */
-    const char         *language,	/* I - Language code (@code NULL@ for default) */
-    const char * const *values)		/* I - Values */
-{
-  int			i;		/* Looping var */
-  ipp_tag_t		temp_tag;	/* Temporary value tag (masked) */
-  ipp_attribute_t	*attr;		/* New attribute */
-  _ipp_value_t		*value;		/* Current value */
-  char			code[32];	/* Language/charset value buffer */
-
-
-  DEBUG_printf(("ippAddStrings(ipp=%p, group=%02x(%s), value_tag=%02x(%s), name=\"%s\", num_values=%d, language=\"%s\", values=%p)", (void *)ipp, group, ippTagString(group), value_tag, ippTagString(value_tag), name, num_values, language, (void *)values));
-
- /*
-  * Range check input...
-  */
-
-  temp_tag = (ipp_tag_t)((int)value_tag & IPP_TAG_CUPS_MASK);
-
-#if 0
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      (temp_tag < IPP_TAG_TEXT && temp_tag != IPP_TAG_TEXTLANG &&
-       temp_tag != IPP_TAG_NAMELANG) || temp_tag > IPP_TAG_MIMETYPE ||
-      num_values < 1)
-    return (NULL);
-
-  if ((temp_tag == IPP_TAG_TEXTLANG || temp_tag == IPP_TAG_NAMELANG)
-          != (language != NULL))
-    return (NULL);
-#else
-  if (!ipp || !name || group < IPP_TAG_ZERO ||
-      group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
-      num_values < 1)
-    return (NULL);
-#endif /* 0 */
-
- /*
-  * See if we need to map charset, language, or locale values...
-  */
-
-  if (language && ((int)value_tag & IPP_TAG_CUPS_CONST) &&
-      strcmp(language, ipp_lang_code(language, code, sizeof(code))))
-    value_tag = temp_tag;		/* Don't do a fast copy */
-  else if (values && value_tag == (ipp_tag_t)(IPP_TAG_CHARSET | IPP_TAG_CUPS_CONST))
-  {
-    for (i = 0; i < num_values; i ++)
-      if (strcmp(values[i], ipp_get_code(values[i], code, sizeof(code))))
-      {
-	value_tag = temp_tag;		/* Don't do a fast copy */
-        break;
-      }
-  }
-  else if (values && value_tag == (ipp_tag_t)(IPP_TAG_LANGUAGE | IPP_TAG_CUPS_CONST))
-  {
-    for (i = 0; i < num_values; i ++)
-      if (strcmp(values[i], ipp_lang_code(values[i], code, sizeof(code))))
-      {
-	value_tag = temp_tag;		/* Don't do a fast copy */
-        break;
-      }
-  }
-
- /*
-  * Create the attribute...
-  */
-
-  if ((attr = ipp_add_attr(ipp, name, group, value_tag, num_values)) == NULL)
-    return (NULL);
-
- /*
-  * Initialize the attribute data...
-  */
-
-  for (i = num_values, value = attr->values;
-       i > 0;
-       i --, value ++)
-  {
-    if (language)
-    {
-      if (value == attr->values)
-      {
-        if ((int)value_tag & IPP_TAG_CUPS_CONST)
-          value->string.language = (char *)language;
-        else
-          value->string.language = _cupsStrAlloc(ipp_lang_code(language, code,
-                                                               sizeof(code)));
-      }
-      else
-	value->string.language = attr->values[0].string.language;
-    }
-
-    if (values)
-    {
-      if ((int)value_tag & IPP_TAG_CUPS_CONST)
-        value->string.text = (char *)*values++;
-      else if (value_tag == IPP_TAG_CHARSET)
-	value->string.text = _cupsStrAlloc(ipp_get_code(*values++, code, sizeof(code)));
-      else if (value_tag == IPP_TAG_LANGUAGE)
-	value->string.text = _cupsStrAlloc(ipp_lang_code(*values++, code, sizeof(code)));
-      else
-	value->string.text = _cupsStrAlloc(*values++);
-    }
-  }
-
-  return (attr);
-}
-
-
-/*
- * 'ippContainsInteger()' - Determine whether an attribute contains the
- *                          specified value or is within the list of ranges.
- *
- * Returns non-zero when the attribute contains either a matching integer or
- * enum value, or the value falls within one of the rangeOfInteger values for
- * the attribute.
- *
- * @since CUPS 1.7/macOS 10.9@
- */
-
-int					/* O - 1 on a match, 0 on no match */
-ippContainsInteger(
-    ipp_attribute_t *attr,		/* I - Attribute */
-    int             value)		/* I - Integer/enum value */
-{
-  int		i;			/* Looping var */
-  _ipp_value_t	*avalue;		/* Current attribute value */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!attr)
-    return (0);
-
-  if (attr->value_tag != IPP_TAG_INTEGER && attr->value_tag != IPP_TAG_ENUM &&
-      attr->value_tag != IPP_TAG_RANGE)
-    return (0);
-
- /*
-  * Compare...
-  */
-
-  if (attr->value_tag == IPP_TAG_RANGE)
-  {
-    for (i = attr->num_values, avalue = attr->values; i > 0; i --, avalue ++)
-      if (value >= avalue->range.lower && value <= avalue->range.upper)
-        return (1);
-  }
-  else
-  {
-    for (i = attr->num_values, avalue = attr->values; i > 0; i --, avalue ++)
-      if (value == avalue->integer)
-        return (1);
-  }
-
-  return (0);
-}
-
-
-/*
- * 'ippContainsString()' - Determine whether an attribute contains the
- *                         specified string value.
- *
- * Returns non-zero when the attribute contains a matching charset, keyword,
- * naturalLanguage, mimeMediaType, name, text, uri, or uriScheme value.
- *
- * @since CUPS 1.7/macOS 10.9@
- */
-
-int					/* O - 1 on a match, 0 on no match */
-ippContainsString(
-    ipp_attribute_t *attr,		/* I - Attribute */
-    const char      *value)		/* I - String value */
-{
-  int		i;			/* Looping var */
-  _ipp_value_t	*avalue;		/* Current attribute value */
-
-
-  DEBUG_printf(("ippContainsString(attr=%p, value=\"%s\")", (void *)attr, value));
-
- /*
-  * Range check input...
-  */
-
-  if (!attr || !value)
-  {
-    DEBUG_puts("1ippContainsString: Returning 0 (bad input)");
-    return (0);
-  }
-
- /*
-  * Compare...
-  */
-
-  DEBUG_printf(("1ippContainsString: attr %s, %s with %d values.",
-		attr->name, ippTagString(attr->value_tag),
-		attr->num_values));
-
-  switch (attr->value_tag & IPP_TAG_CUPS_MASK)
-  {
-    case IPP_TAG_CHARSET :
-    case IPP_TAG_KEYWORD :
-    case IPP_TAG_LANGUAGE :
-    case IPP_TAG_URI :
-    case IPP_TAG_URISCHEME :
-	for (i = attr->num_values, avalue = attr->values;
-	     i > 0;
-	     i --, avalue ++)
-	{
-	  DEBUG_printf(("1ippContainsString: value[%d]=\"%s\"",
-	                attr->num_values - i, avalue->string.text));
-
-	  if (!strcmp(value, avalue->string.text))
-	  {
-	    DEBUG_puts("1ippContainsString: Returning 1 (match)");
-	    return (1);
-	  }
-        }
-
-    case IPP_TAG_MIMETYPE :
-    case IPP_TAG_NAME :
-    case IPP_TAG_NAMELANG :
-    case IPP_TAG_TEXT :
-    case IPP_TAG_TEXTLANG :
-	for (i = attr->num_values, avalue = attr->values;
-	     i > 0;
-	     i --, avalue ++)
-	{
-	  DEBUG_printf(("1ippContainsString: value[%d]=\"%s\"",
-	                attr->num_values - i, avalue->string.text));
-
-	  if (!_cups_strcasecmp(value, avalue->string.text))
-	  {
-	    DEBUG_puts("1ippContainsString: Returning 1 (match)");
-	    return (1);
-	  }
-        }
-
-    default :
-        break;
-  }
-
-  DEBUG_puts("1ippContainsString: Returning 0 (no match)");
-
-  return (0);
-}
-
-
-/*
- * 'ippCopyAttribute()' - Copy an attribute.
- *
- * The specified attribute, @code attr@, is copied to the destination IPP message.
- * When @code quickcopy@ is non-zero, a "shallow" reference copy of the attribute is
- * created - this should only be done as long as the original source IPP message will
- * not be freed for the life of the destination.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-
-ipp_attribute_t *			/* O - New attribute */
-ippCopyAttribute(
-    ipp_t           *dst,		/* I - Destination IPP message */
-    ipp_attribute_t *srcattr,		/* I - Attribute to copy */
-    int             quickcopy)		/* I - 1 for a referenced copy, 0 for normal */
-{
-  int			i;		/* Looping var */
-  ipp_attribute_t	*dstattr;	/* Destination attribute */
-  _ipp_value_t		*srcval,	/* Source value */
-			*dstval;	/* Destination value */
-
-
-  DEBUG_printf(("ippCopyAttribute(dst=%p, srcattr=%p, quickcopy=%d)", (void *)dst, (void *)srcattr, quickcopy));
-
- /*
-  * Range check input...
-  */
-
-  if (!dst || !srcattr)
-    return (NULL);
-
- /*
-  * Copy it...
-  */
-
-  quickcopy = quickcopy ? IPP_TAG_CUPS_CONST : 0;
-
-  switch (srcattr->value_tag & ~IPP_TAG_CUPS_CONST)
-  {
-    case IPP_TAG_ZERO :
-        dstattr = ippAddSeparator(dst);
-	break;
-
-    case IPP_TAG_UNSUPPORTED_VALUE :
-    case IPP_TAG_DEFAULT :
-    case IPP_TAG_UNKNOWN :
-    case IPP_TAG_NOVALUE :
-    case IPP_TAG_NOTSETTABLE :
-    case IPP_TAG_DELETEATTR :
-    case IPP_TAG_ADMINDEFINE :
-        dstattr = ippAddOutOfBand(dst, srcattr->group_tag, srcattr->value_tag & ~IPP_TAG_CUPS_CONST, srcattr->name);
-        break;
-
-    case IPP_TAG_INTEGER :
-    case IPP_TAG_ENUM :
-        dstattr = ippAddIntegers(dst, srcattr->group_tag, srcattr->value_tag,
-	                         srcattr->name, srcattr->num_values, NULL);
-        if (!dstattr)
-          break;
-
-        for (i = srcattr->num_values, srcval = srcattr->values, dstval = dstattr->values;
-             i > 0;
-             i --, srcval ++, dstval ++)
-	  dstval->integer = srcval->integer;
-        break;
-
-    case IPP_TAG_BOOLEAN :
-        dstattr = ippAddBooleans(dst, srcattr->group_tag, srcattr->name,
-	                        srcattr->num_values, NULL);
-        if (!dstattr)
-          break;
-
-        for (i = srcattr->num_values, srcval = srcattr->values, dstval = dstattr->values;
-             i > 0;
-             i --, srcval ++, dstval ++)
-	  dstval->boolean = srcval->boolean;
-        break;
-
-    case IPP_TAG_TEXT :
-    case IPP_TAG_NAME :
-    case IPP_TAG_KEYWORD :
-    case IPP_TAG_URI :
-    case IPP_TAG_URISCHEME :
-    case IPP_TAG_CHARSET :
-    case IPP_TAG_LANGUAGE :
-    case IPP_TAG_MIMETYPE :
-        dstattr = ippAddStrings(dst, srcattr->group_tag,
-	                        (ipp_tag_t)(srcattr->value_tag | quickcopy),
-	                        srcattr->name, srcattr->num_values, NULL, NULL);
-        if (!dstattr)
-          break;
-
-        if (quickcopy)
-	{
-	  for (i = srcattr->num_values, srcval = srcattr->values,
-	           dstval = dstattr->values;
-	       i > 0;
-	       i --, srcval ++, dstval ++)
-	    dstval->string.text = srcval->string.text;
-        }
-	else if (srcattr->value_tag & IPP_TAG_CUPS_CONST)
-	{
-	  for (i = srcattr->num_values, srcval = srcattr->values,
-	           dstval = dstattr->values;
-	       i > 0;
-	       i --, srcval ++, dstval ++)
-	    dstval->string.text = _cupsStrAlloc(srcval->string.text);
-	}
-	else
-	{
-	  for (i = srcattr->num_values, srcval = srcattr->values,
-	           dstval = dstattr->values;
-	       i > 0;
-	       i --, srcval ++, dstval ++)
-	    dstval->string.text = _cupsStrRetain(srcval->string.text);
-	}
-        break;
-
-    case IPP_TAG_DATE :
-        if (srcattr->num_values != 1)
-          return (NULL);
-
-        dstattr = ippAddDate(dst, srcattr->group_tag, srcattr->name,
-	                     srcattr->values[0].date);
-        break;
-
-    case IPP_TAG_RESOLUTION :
-        dstattr = ippAddResolutions(dst, srcattr->group_tag, srcattr->name,
-	                            srcattr->num_values, IPP_RES_PER_INCH,
-				    NULL, NULL);
-        if (!dstattr)
-          break;
-
-        for (i = srcattr->num_values, srcval = srcattr->values, dstval = dstattr->values;
-             i > 0;
-             i --, srcval ++, dstval ++)
-	{
-	  dstval->resolution.xres  = srcval->resolution.xres;
-	  dstval->resolution.yres  = srcval->resolution.yres;
-	  dstval->resolution.units = srcval->resolution.units;
-	}
-        break;
-
-    case IPP_TAG_RANGE :
-        dstattr = ippAddRanges(dst, srcattr->group_tag, srcattr->name,
-	                       srcattr->num_values, NULL, NULL);
-        if (!dstattr)
-          break;
-
-        for (i = srcattr->num_values, srcval = srcattr->values, dstval = dstattr->values;
-             i > 0;
-             i --, srcval ++, dstval ++)
-	{
-	  dstval->range.lower = srcval->range.lower;
-	  dstval->range.upper = srcval->range.upper;
-	}
-        break;
-
-    case IPP_TAG_TEXTLANG :
-    case IPP_TAG_NAMELANG :
-        dstattr = ippAddStrings(dst, srcattr->group_tag,
-	                        (ipp_tag_t)(srcattr->value_tag | quickcopy),
-	                        srcattr->name, srcattr->num_values, NULL, NULL);
-        if (!dstattr)
-          break;
-
-        if (quickcopy)
-	{
-	  for (i = srcattr->num_values, srcval = srcattr->values,
-	           dstval = dstattr->values;
-	       i > 0;
-	       i --, srcval ++, dstval ++)
-	  {
-            dstval->string.language = srcval->string.language;
-	    dstval->string.text     = srcval->string.text;
-          }
-        }
-	else if (srcattr->value_tag & IPP_TAG_CUPS_CONST)
-	{
-	  for (i = srcattr->num_values, srcval = srcattr->values,
-	           dstval = dstattr->values;
-	       i > 0;
-	       i --, srcval ++, dstval ++)
-	  {
-	    if (srcval == srcattr->values)
-              dstval->string.language = _cupsStrAlloc(srcval->string.language);
-	    else
-              dstval->string.language = dstattr->values[0].string.language;
-
-	    dstval->string.text = _cupsStrAlloc(srcval->string.text);
-          }
-        }
-	else
-	{
-	  for (i = srcattr->num_values, srcval = srcattr->values,
-	           dstval = dstattr->values;
-	       i > 0;
-	       i --, srcval ++, dstval ++)
-	  {
-	    if (srcval == srcattr->values)
-              dstval->string.language = _cupsStrRetain(srcval->string.language);
-	    else
-              dstval->string.language = dstattr->values[0].string.language;
-
-	    dstval->string.text = _cupsStrRetain(srcval->string.text);
-          }
-        }
-        break;
-
-    case IPP_TAG_BEGIN_COLLECTION :
-        dstattr = ippAddCollections(dst, srcattr->group_tag, srcattr->name,
-	                            srcattr->num_values, NULL);
-        if (!dstattr)
-          break;
-
-        for (i = srcattr->num_values, srcval = srcattr->values, dstval = dstattr->values;
-             i > 0;
-             i --, srcval ++, dstval ++)
-	{
-	  dstval->collection = srcval->collection;
-	  srcval->collection->use ++;
-	}
-        break;
-
-    case IPP_TAG_STRING :
-    default :
-        /* TODO: Implement quick copy for unknown/octetString values */
-        dstattr = ippAddIntegers(dst, srcattr->group_tag, srcattr->value_tag,
-	                         srcattr->name, srcattr->num_values, NULL);
-        if (!dstattr)
-          break;
-
-        for (i = srcattr->num_values, srcval = srcattr->values, dstval = dstattr->values;
-             i > 0;
-             i --, srcval ++, dstval ++)
-	{
-	  dstval->unknown.length = srcval->unknown.length;
-
-	  if (dstval->unknown.length > 0)
-	  {
-	    if ((dstval->unknown.data = malloc((size_t)dstval->unknown.length)) == NULL)
-	      dstval->unknown.length = 0;
-	    else
-	      memcpy(dstval->unknown.data, srcval->unknown.data, (size_t)dstval->unknown.length);
-	  }
-	}
-        break; /* anti-compiler-warning-code */
-  }
-
-  return (dstattr);
-}
-
-
-/*
- * 'ippCopyAttributes()' - Copy attributes from one IPP message to another.
- *
- * Zero or more attributes are copied from the source IPP message, @code src@, to the
- * destination IPP message, @code dst@. When @code quickcopy@ is non-zero, a "shallow"
- * reference copy of the attribute is created - this should only be done as long as the
- * original source IPP message will not be freed for the life of the destination.
- *
- * The @code cb@ and @code context@ parameters provide a generic way to "filter" the
- * attributes that are copied - the function must return 1 to copy the attribute or
- * 0 to skip it. The function may also choose to do a partial copy of the source attribute
- * itself.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O - 1 on success, 0 on error */
-ippCopyAttributes(
-    ipp_t        *dst,			/* I - Destination IPP message */
-    ipp_t        *src,			/* I - Source IPP message */
-    int          quickcopy,		/* I - 1 for a referenced copy, 0 for normal */
-    ipp_copycb_t cb,			/* I - Copy callback or @code NULL@ for none */
-    void         *context)		/* I - Context pointer */
-{
-  ipp_attribute_t	*srcattr;	/* Source attribute */
-
-
-  DEBUG_printf(("ippCopyAttributes(dst=%p, src=%p, quickcopy=%d, cb=%p, context=%p)", (void *)dst, (void *)src, quickcopy, (void *)cb, context));
-
- /*
-  * Range check input...
-  */
-
-  if (!dst || !src)
-    return (0);
-
- /*
-  * Loop through source attributes and copy as needed...
-  */
-
-  for (srcattr = src->attrs; srcattr; srcattr = srcattr->next)
-    if (!cb || (*cb)(context, dst, srcattr))
-      if (!ippCopyAttribute(dst, srcattr, quickcopy))
-        return (0);
-
-  return (1);
-}
-
-
-/*
- * 'ippDateToTime()' - Convert from RFC 2579 Date/Time format to time in
- *                     seconds.
- */
-
-time_t					/* O - UNIX time value */
-ippDateToTime(const ipp_uchar_t *date)	/* I - RFC 2579 date info */
-{
-  struct tm	unixdate;		/* UNIX date/time info */
-  time_t	t;			/* Computed time */
-
-
-  if (!date)
-    return (0);
-
-  memset(&unixdate, 0, sizeof(unixdate));
-
- /*
-  * RFC-2579 date/time format is:
-  *
-  *    Byte(s)  Description
-  *    -------  -----------
-  *    0-1      Year (0 to 65535)
-  *    2        Month (1 to 12)
-  *    3        Day (1 to 31)
-  *    4        Hours (0 to 23)
-  *    5        Minutes (0 to 59)
-  *    6        Seconds (0 to 60, 60 = "leap second")
-  *    7        Deciseconds (0 to 9)
-  *    8        +/- UTC
-  *    9        UTC hours (0 to 11)
-  *    10       UTC minutes (0 to 59)
-  */
-
-  unixdate.tm_year = ((date[0] << 8) | date[1]) - 1900;
-  unixdate.tm_mon  = date[2] - 1;
-  unixdate.tm_mday = date[3];
-  unixdate.tm_hour = date[4];
-  unixdate.tm_min  = date[5];
-  unixdate.tm_sec  = date[6];
-
-  t = mktime(&unixdate);
-
-  if (date[8] == '-')
-    t += date[9] * 3600 + date[10] * 60;
-  else
-    t -= date[9] * 3600 + date[10] * 60;
-
-  return (t);
-}
-
-
-/*
- * 'ippDelete()' - Delete an IPP message.
- */
-
-void
-ippDelete(ipp_t *ipp)			/* I - IPP message */
-{
-  ipp_attribute_t	*attr,		/* Current attribute */
-			*next;		/* Next attribute */
-
-
-  DEBUG_printf(("ippDelete(ipp=%p)", (void *)ipp));
-
-  if (!ipp)
-    return;
-
-  ipp->use --;
-  if (ipp->use > 0)
-  {
-    DEBUG_printf(("4debug_retain: %p IPP message (use=%d)", (void *)ipp, ipp->use));
-    return;
-  }
-
-  DEBUG_printf(("4debug_free: %p IPP message", (void *)ipp));
-
-  for (attr = ipp->attrs; attr != NULL; attr = next)
-  {
-    next = attr->next;
-
-    DEBUG_printf(("4debug_free: %p %s %s%s (%d values)", (void *)attr, attr->name, attr->num_values > 1 ? "1setOf " : "", ippTagString(attr->value_tag), attr->num_values));
-
-    ipp_free_values(attr, 0, attr->num_values);
-
-    if (attr->name)
-      _cupsStrFree(attr->name);
-
-    free(attr);
-  }
-
-  free(ipp);
-}
-
-
-/*
- * 'ippDeleteAttribute()' - Delete a single attribute in an IPP message.
- *
- * @since CUPS 1.1.19/macOS 10.3@
- */
-
-void
-ippDeleteAttribute(
-    ipp_t           *ipp,		/* I - IPP message */
-    ipp_attribute_t *attr)		/* I - Attribute to delete */
-{
-  ipp_attribute_t	*current,	/* Current attribute */
-			*prev;		/* Previous attribute */
-
-
-  DEBUG_printf(("ippDeleteAttribute(ipp=%p, attr=%p(%s))", (void *)ipp, (void *)attr, attr ? attr->name : "(null)"));
-
- /*
-  * Range check input...
-  */
-
-  if (!attr)
-    return;
-
-  DEBUG_printf(("4debug_free: %p %s %s%s (%d values)", (void *)attr, attr->name, attr->num_values > 1 ? "1setOf " : "", ippTagString(attr->value_tag), attr->num_values));
-
- /*
-  * Find the attribute in the list...
-  */
-
-  if (ipp)
-  {
-    for (current = ipp->attrs, prev = NULL;
-	 current;
-	 prev = current, current = current->next)
-      if (current == attr)
-      {
-       /*
-	* Found it, remove the attribute from the list...
-	*/
-
-	if (prev)
-	  prev->next = current->next;
-	else
-	  ipp->attrs = current->next;
-
-	if (current == ipp->last)
-	  ipp->last = prev;
-
-        break;
-      }
-
-    if (!current)
-      return;
-  }
-
- /*
-  * Free memory used by the attribute...
-  */
-
-  ipp_free_values(attr, 0, attr->num_values);
-
-  if (attr->name)
-    _cupsStrFree(attr->name);
-
-  free(attr);
-}
-
-
-/*
- * 'ippDeleteValues()' - Delete values in an attribute.
- *
- * The @code element@ parameter specifies the first value to delete, starting at
- * 0. It must be less than the number of values returned by @link ippGetCount@.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * Deleting all values in an attribute deletes the attribute.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippDeleteValues(
-    ipp_t           *ipp,		/* I  - IPP message */
-    ipp_attribute_t **attr,		/* IO - Attribute */
-    int             element,		/* I  - Index of first value to delete (0-based) */
-    int             count)		/* I  - Number of values to delete */
-{
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !attr || !*attr ||
-      element < 0 || element >= (*attr)->num_values || count <= 0 ||
-      (element + count) >= (*attr)->num_values)
-    return (0);
-
- /*
-  * If we are deleting all values, just delete the attribute entirely.
-  */
-
-  if (count == (*attr)->num_values)
-  {
-    ippDeleteAttribute(ipp, *attr);
-    *attr = NULL;
-    return (1);
-  }
-
- /*
-  * Otherwise free the values in question and return.
-  */
-
-  ipp_free_values(*attr, element, count);
-
-  return (1);
-}
-
-
-/*
- * 'ippFindAttribute()' - Find a named attribute in a request.
- *
- * Starting with CUPS 2.0, the attribute name can contain a hierarchical list
- * of attribute and member names separated by slashes, for example
- * "media-col/media-size".
- */
-
-ipp_attribute_t	*			/* O - Matching attribute */
-ippFindAttribute(ipp_t      *ipp,	/* I - IPP message */
-                 const char *name,	/* I - Name of attribute */
-		 ipp_tag_t  type)	/* I - Type of attribute */
-{
-  DEBUG_printf(("2ippFindAttribute(ipp=%p, name=\"%s\", type=%02x(%s))", (void *)ipp, name, type, ippTagString(type)));
-
-  if (!ipp || !name)
-    return (NULL);
-
- /*
-  * Reset the current pointer...
-  */
-
-  ipp->current = NULL;
-  ipp->atend   = 0;
-
- /*
-  * Search for the attribute...
-  */
-
-  return (ippFindNextAttribute(ipp, name, type));
-}
-
-
-/*
- * 'ippFindNextAttribute()' - Find the next named attribute in a request.
- *
- * Starting with CUPS 2.0, the attribute name can contain a hierarchical list
- * of attribute and member names separated by slashes, for example
- * "media-col/media-size".
- */
-
-ipp_attribute_t	*			/* O - Matching attribute */
-ippFindNextAttribute(ipp_t      *ipp,	/* I - IPP message */
-                     const char *name,	/* I - Name of attribute */
-		     ipp_tag_t  type)	/* I - Type of attribute */
-{
-  ipp_attribute_t	*attr,		/* Current atttribute */
-			*childattr;	/* Child attribute */
-  ipp_tag_t		value_tag;	/* Value tag */
-  char			parent[1024],	/* Parent attribute name */
-			*child = NULL;	/* Child attribute name */
-
-
-  DEBUG_printf(("2ippFindNextAttribute(ipp=%p, name=\"%s\", type=%02x(%s))", (void *)ipp, name, type, ippTagString(type)));
-
-  if (!ipp || !name)
-    return (NULL);
-
-  DEBUG_printf(("3ippFindNextAttribute: atend=%d", ipp->atend));
-
-  if (ipp->atend)
-    return (NULL);
-
-  if (strchr(name, '/'))
-  {
-   /*
-    * Search for child attribute...
-    */
-
-    strlcpy(parent, name, sizeof(parent));
-    if ((child = strchr(parent, '/')) == NULL)
-    {
-      DEBUG_puts("3ippFindNextAttribute: Attribute name too long.");
-      return (NULL);
-    }
-
-    *child++ = '\0';
-
-    if (ipp->current && ipp->current->name && ipp->current->value_tag == IPP_TAG_BEGIN_COLLECTION && !strcmp(parent, ipp->current->name))
-    {
-      while (ipp->curindex < ipp->current->num_values)
-      {
-        if ((childattr = ippFindNextAttribute(ipp->current->values[ipp->curindex].collection, child, type)) != NULL)
-          return (childattr);
-
-        ipp->curindex ++;
-        if (ipp->curindex < ipp->current->num_values && ipp->current->values[ipp->curindex].collection)
-          ipp->current->values[ipp->curindex].collection->current = NULL;
-      }
-
-      ipp->prev     = ipp->current;
-      ipp->current  = ipp->current->next;
-      ipp->curindex = 0;
-
-      if (!ipp->current)
-      {
-        ipp->atend = 1;
-        return (NULL);
-      }
-    }
-
-    if (!ipp->current)
-    {
-      ipp->prev     = NULL;
-      ipp->current  = ipp->attrs;
-      ipp->curindex = 0;
-    }
-
-    name = parent;
-    attr = ipp->current;
-  }
-  else if (ipp->current)
-  {
-    ipp->prev = ipp->current;
-    attr      = ipp->current->next;
-  }
-  else
-  {
-    ipp->prev = NULL;
-    attr      = ipp->attrs;
-  }
-
-  for (; attr != NULL; ipp->prev = attr, attr = attr->next)
-  {
-    DEBUG_printf(("4ippFindAttribute: attr=%p, name=\"%s\"", (void *)attr, attr->name));
-
-    value_tag = (ipp_tag_t)(attr->value_tag & IPP_TAG_CUPS_MASK);
-
-    if (attr->name != NULL && _cups_strcasecmp(attr->name, name) == 0 &&
-        (value_tag == type || type == IPP_TAG_ZERO || name == parent ||
-	 (value_tag == IPP_TAG_TEXTLANG && type == IPP_TAG_TEXT) ||
-	 (value_tag == IPP_TAG_NAMELANG && type == IPP_TAG_NAME)))
-    {
-      ipp->current = attr;
-
-      if (name == parent && attr->value_tag == IPP_TAG_BEGIN_COLLECTION)
-      {
-        int i;				/* Looping var */
-
-        for (i = 0; i < attr->num_values; i ++)
-        {
-	  if ((childattr = ippFindAttribute(attr->values[i].collection, child, type)) != NULL)
-	  {
-	    attr->values[0].collection->curindex = i;
-	    return (childattr);
-	  }
-        }
-      }
-      else
-        return (attr);
-    }
-  }
-
-  ipp->current = NULL;
-  ipp->prev    = NULL;
-  ipp->atend   = 1;
-
-  return (NULL);
-}
-
-
-/*
- * 'ippFirstAttribute()' - Return the first attribute in the message.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-ipp_attribute_t	*			/* O - First attribute or @code NULL@ if none */
-ippFirstAttribute(ipp_t *ipp)		/* I - IPP message */
-{
- /*
-  * Range check input...
-  */
-
-  if (!ipp)
-    return (NULL);
-
- /*
-  * Return the first attribute...
-  */
-
-  return (ipp->current = ipp->attrs);
-}
-
-
-/*
- * 'ippGetBoolean()' - Get a boolean value for an attribute.
- *
- * The @code element@ parameter specifies which value to get from 0 to
- * @code ippGetCount(attr)@ - 1.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O - Boolean value or 0 on error */
-ippGetBoolean(ipp_attribute_t *attr,	/* I - IPP attribute */
-              int             element)	/* I - Value number (0-based) */
-{
- /*
-  * Range check input...
-  */
-
-  if (!attr || attr->value_tag != IPP_TAG_BOOLEAN ||
-      element < 0 || element >= attr->num_values)
-    return (0);
-
- /*
-  * Return the value...
-  */
-
-  return (attr->values[element].boolean);
-}
-
-
-/*
- * 'ippGetCollection()' - Get a collection value for an attribute.
- *
- * The @code element@ parameter specifies which value to get from 0 to
- * @code ippGetCount(attr)@ - 1.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-ipp_t *					/* O - Collection value or @code NULL@ on error */
-ippGetCollection(
-    ipp_attribute_t *attr,		/* I - IPP attribute */
-    int             element)		/* I - Value number (0-based) */
-{
- /*
-  * Range check input...
-  */
-
-  if (!attr || attr->value_tag != IPP_TAG_BEGIN_COLLECTION ||
-      element < 0 || element >= attr->num_values)
-    return (NULL);
-
- /*
-  * Return the value...
-  */
-
-  return (attr->values[element].collection);
-}
-
-
-/*
- * 'ippGetCount()' - Get the number of values in an attribute.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O - Number of values or 0 on error */
-ippGetCount(ipp_attribute_t *attr)	/* I - IPP attribute */
-{
- /*
-  * Range check input...
-  */
-
-  if (!attr)
-    return (0);
-
- /*
-  * Return the number of values...
-  */
-
-  return (attr->num_values);
-}
-
-
-/*
- * 'ippGetDate()' - Get a dateTime value for an attribute.
- *
- * The @code element@ parameter specifies which value to get from 0 to
- * @code ippGetCount(attr)@ - 1.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-const ipp_uchar_t *			/* O - dateTime value or @code NULL@ */
-ippGetDate(ipp_attribute_t *attr,	/* I - IPP attribute */
-           int             element)	/* I - Value number (0-based) */
-{
- /*
-  * Range check input...
-  */
-
-  if (!attr || attr->value_tag != IPP_TAG_DATE ||
-      element < 0 || element >= attr->num_values)
-    return (NULL);
-
- /*
-  * Return the value...
-  */
-
-  return (attr->values[element].date);
-}
-
-
-/*
- * 'ippGetGroupTag()' - Get the group associated with an attribute.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-ipp_tag_t				/* O - Group tag or @code IPP_TAG_ZERO@ on error */
-ippGetGroupTag(ipp_attribute_t *attr)	/* I - IPP attribute */
-{
- /*
-  * Range check input...
-  */
-
-  if (!attr)
-    return (IPP_TAG_ZERO);
-
- /*
-  * Return the group...
-  */
-
-  return (attr->group_tag);
-}
-
-
-/*
- * 'ippGetInteger()' - Get the integer/enum value for an attribute.
- *
- * The @code element@ parameter specifies which value to get from 0 to
- * @code ippGetCount(attr)@ - 1.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O - Value or 0 on error */
-ippGetInteger(ipp_attribute_t *attr,	/* I - IPP attribute */
-              int             element)	/* I - Value number (0-based) */
-{
- /*
-  * Range check input...
-  */
-
-  if (!attr || (attr->value_tag != IPP_TAG_INTEGER && attr->value_tag != IPP_TAG_ENUM) ||
-      element < 0 || element >= attr->num_values)
-    return (0);
-
- /*
-  * Return the value...
-  */
-
-  return (attr->values[element].integer);
-}
-
-
-/*
- * 'ippGetName()' - Get the attribute name.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-const char *				/* O - Attribute name or @code NULL@ for separators */
-ippGetName(ipp_attribute_t *attr)	/* I - IPP attribute */
-{
- /*
-  * Range check input...
-  */
-
-  if (!attr)
-    return (NULL);
-
- /*
-  * Return the name...
-  */
-
-  return (attr->name);
-}
-
-
-/*
- * 'ippGetOctetString()' - Get an octetString value from an IPP attribute.
- *
- * The @code element@ parameter specifies which value to get from 0 to
- * @code ippGetCount(attr)@ - 1.
- *
- * @since CUPS 1.7/macOS 10.9@
- */
-
-void *					/* O - Pointer to octetString data */
-ippGetOctetString(
-    ipp_attribute_t *attr,		/* I - IPP attribute */
-    int             element,		/* I - Value number (0-based) */
-    int             *datalen)		/* O - Length of octetString data */
-{
- /*
-  * Range check input...
-  */
-
-  if (!attr || attr->value_tag != IPP_TAG_STRING ||
-      element < 0 || element >= attr->num_values)
-  {
-    if (datalen)
-      *datalen = 0;
-
-    return (NULL);
-  }
-
- /*
-  * Return the values...
-  */
-
-  if (datalen)
-    *datalen = attr->values[element].unknown.length;
-
-  return (attr->values[element].unknown.data);
-}
-
-
-/*
- * 'ippGetOperation()' - Get the operation ID in an IPP message.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-ipp_op_t				/* O - Operation ID or 0 on error */
-ippGetOperation(ipp_t *ipp)		/* I - IPP request message */
-{
- /*
-  * Range check input...
-  */
-
-  if (!ipp)
-    return ((ipp_op_t)0);
-
- /*
-  * Return the value...
-  */
-
-  return (ipp->request.op.operation_id);
-}
-
-
-/*
- * 'ippGetRange()' - Get a rangeOfInteger value from an attribute.
- *
- * The @code element@ parameter specifies which value to get from 0 to
- * @code ippGetCount(attr)@ - 1.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O - Lower value of range or 0 */
-ippGetRange(ipp_attribute_t *attr,	/* I - IPP attribute */
-	    int             element,	/* I - Value number (0-based) */
-	    int             *uppervalue)/* O - Upper value of range */
-{
- /*
-  * Range check input...
-  */
-
-  if (!attr || attr->value_tag != IPP_TAG_RANGE ||
-      element < 0 || element >= attr->num_values)
-  {
-    if (uppervalue)
-      *uppervalue = 0;
-
-    return (0);
-  }
-
- /*
-  * Return the values...
-  */
-
-  if (uppervalue)
-    *uppervalue = attr->values[element].range.upper;
-
-  return (attr->values[element].range.lower);
-}
-
-
-/*
- * 'ippGetRequestId()' - Get the request ID from an IPP message.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O - Request ID or 0 on error */
-ippGetRequestId(ipp_t *ipp)		/* I - IPP message */
-{
- /*
-  * Range check input...
-  */
-
-  if (!ipp)
-    return (0);
-
- /*
-  * Return the request ID...
-  */
-
-  return (ipp->request.any.request_id);
-}
-
-
-/*
- * 'ippGetResolution()' - Get a resolution value for an attribute.
- *
- * The @code element@ parameter specifies which value to get from 0 to
- * @code ippGetCount(attr)@ - 1.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O - Horizontal/cross feed resolution or 0 */
-ippGetResolution(
-    ipp_attribute_t *attr,		/* I - IPP attribute */
-    int             element,		/* I - Value number (0-based) */
-    int             *yres,		/* O - Vertical/feed resolution */
-    ipp_res_t       *units)		/* O - Units for resolution */
-{
- /*
-  * Range check input...
-  */
-
-  if (!attr || attr->value_tag != IPP_TAG_RESOLUTION ||
-      element < 0 || element >= attr->num_values)
-  {
-    if (yres)
-      *yres = 0;
-
-    if (units)
-      *units = (ipp_res_t)0;
-
-    return (0);
-  }
-
- /*
-  * Return the value...
-  */
-
-  if (yres)
-    *yres = attr->values[element].resolution.yres;
-
-  if (units)
-    *units = attr->values[element].resolution.units;
-
-  return (attr->values[element].resolution.xres);
-}
-
-
-/*
- * 'ippGetState()' - Get the IPP message state.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-ipp_state_t				/* O - IPP message state value */
-ippGetState(ipp_t *ipp)			/* I - IPP message */
-{
- /*
-  * Range check input...
-  */
-
-  if (!ipp)
-    return (IPP_STATE_IDLE);
-
- /*
-  * Return the value...
-  */
-
-  return (ipp->state);
-}
-
-
-/*
- * 'ippGetStatusCode()' - Get the status code from an IPP response or event message.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-ipp_status_t				/* O - Status code in IPP message */
-ippGetStatusCode(ipp_t *ipp)		/* I - IPP response or event message */
-{
- /*
-  * Range check input...
-  */
-
-  if (!ipp)
-    return (IPP_STATUS_ERROR_INTERNAL);
-
- /*
-  * Return the value...
-  */
-
-  return (ipp->request.status.status_code);
-}
-
-
-/*
- * 'ippGetString()' - Get the string and optionally the language code for an attribute.
- *
- * The @code element@ parameter specifies which value to get from 0 to
- * @code ippGetCount(attr)@ - 1.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-const char *
-ippGetString(ipp_attribute_t *attr,	/* I - IPP attribute */
-             int             element,	/* I - Value number (0-based) */
-	     const char      **language)/* O - Language code (@code NULL@ for don't care) */
-{
-  ipp_tag_t	tag;			/* Value tag */
-
-
- /*
-  * Range check input...
-  */
-
-  tag = ippGetValueTag(attr);
-
-  if (!attr || element < 0 || element >= attr->num_values || (tag != IPP_TAG_TEXTLANG && tag != IPP_TAG_NAMELANG && (tag < IPP_TAG_TEXT || tag > IPP_TAG_MIMETYPE)))
-    return (NULL);
-
- /*
-  * Return the value...
-  */
-
-  if (language)
-    *language = attr->values[element].string.language;
-
-  return (attr->values[element].string.text);
-}
-
-
-/*
- * 'ippGetValueTag()' - Get the value tag for an attribute.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-ipp_tag_t				/* O - Value tag or @code IPP_TAG_ZERO@ on error */
-ippGetValueTag(ipp_attribute_t *attr)	/* I - IPP attribute */
-{
- /*
-  * Range check input...
-  */
-
-  if (!attr)
-    return (IPP_TAG_ZERO);
-
- /*
-  * Return the value...
-  */
-
-  return (attr->value_tag & IPP_TAG_CUPS_MASK);
-}
-
-
-/*
- * 'ippGetVersion()' - Get the major and minor version number from an IPP message.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O - Major version number or 0 on error */
-ippGetVersion(ipp_t *ipp,		/* I - IPP message */
-              int   *minor)		/* O - Minor version number or @code NULL@ for don't care */
-{
- /*
-  * Range check input...
-  */
-
-  if (!ipp)
-  {
-    if (minor)
-      *minor = 0;
-
-    return (0);
-  }
-
- /*
-  * Return the value...
-  */
-
-  if (minor)
-    *minor = ipp->request.any.version[1];
-
-  return (ipp->request.any.version[0]);
-}
-
-
-/*
- * 'ippLength()' - Compute the length of an IPP message.
- */
-
-size_t					/* O - Size of IPP message */
-ippLength(ipp_t *ipp)			/* I - IPP message */
-{
-  return (ipp_length(ipp, 0));
-}
-
-
-/*
- * 'ippNextAttribute()' - Return the next attribute in the message.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-ipp_attribute_t *			/* O - Next attribute or @code NULL@ if none */
-ippNextAttribute(ipp_t *ipp)		/* I - IPP message */
-{
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !ipp->current)
-    return (NULL);
-
- /*
-  * Return the next attribute...
-  */
-
-  return (ipp->current = ipp->current->next);
-}
-
-
-/*
- * 'ippNew()' - Allocate a new IPP message.
- */
-
-ipp_t *					/* O - New IPP message */
-ippNew(void)
-{
-  ipp_t			*temp;		/* New IPP message */
-  _cups_globals_t	*cg = _cupsGlobals();
-					/* Global data */
-
-
-  DEBUG_puts("ippNew()");
-
-  if ((temp = (ipp_t *)calloc(1, sizeof(ipp_t))) != NULL)
-  {
-   /*
-    * Set default version - usually 2.0...
-    */
-
-    DEBUG_printf(("4debug_alloc: %p IPP message", (void *)temp));
-
-    if (cg->server_version == 0)
-      _cupsSetDefaults();
-
-    temp->request.any.version[0] = (ipp_uchar_t)(cg->server_version / 10);
-    temp->request.any.version[1] = (ipp_uchar_t)(cg->server_version % 10);
-    temp->use                    = 1;
-  }
-
-  DEBUG_printf(("1ippNew: Returning %p", (void *)temp));
-
-  return (temp);
-}
-
-
-/*
- *  'ippNewRequest()' - Allocate a new IPP request message.
- *
- * The new request message is initialized with the "attributes-charset" and
- * "attributes-natural-language" attributes added. The
- * "attributes-natural-language" value is derived from the current locale.
- *
- * @since CUPS 1.2/macOS 10.5@
- */
-
-ipp_t *					/* O - IPP request message */
-ippNewRequest(ipp_op_t op)		/* I - Operation code */
-{
-  ipp_t		*request;		/* IPP request message */
-  cups_lang_t	*language;		/* Current language localization */
-  static int	request_id = 0;		/* Current request ID */
-  static _cups_mutex_t request_mutex = _CUPS_MUTEX_INITIALIZER;
-					/* Mutex for request ID */
-
-
-  DEBUG_printf(("ippNewRequest(op=%02x(%s))", op, ippOpString(op)));
-
- /*
-  * Create a new IPP message...
-  */
-
-  if ((request = ippNew()) == NULL)
-    return (NULL);
-
- /*
-  * Set the operation and request ID...
-  */
-
-  _cupsMutexLock(&request_mutex);
-
-  request->request.op.operation_id = op;
-  request->request.op.request_id   = ++request_id;
-
-  _cupsMutexUnlock(&request_mutex);
-
- /*
-  * Use UTF-8 as the character set...
-  */
-
-  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
-               "attributes-charset", NULL, "utf-8");
-
- /*
-  * Get the language from the current locale...
-  */
-
-  language = cupsLangDefault();
-
-  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
-               "attributes-natural-language", NULL, language->language);
-
- /*
-  * Return the new request...
-  */
-
-  return (request);
-}
-
-
-/*
- * 'ippNewResponse()' - Allocate a new IPP response message.
- *
- * The new response message is initialized with the same "version-number",
- * "request-id", "attributes-charset", and "attributes-natural-language" as the
- * provided request message.  If the "attributes-charset" or
- * "attributes-natural-language" attributes are missing from the request,
- * 'utf-8' and a value derived from the current locale are substituted,
- * respectively.
- *
- * @since CUPS 1.7/macOS 10.9@
- */
-
-ipp_t *					/* O - IPP response message */
-ippNewResponse(ipp_t *request)		/* I - IPP request message */
-{
-  ipp_t			*response;	/* IPP response message */
-  ipp_attribute_t	*attr;		/* Current attribute */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!request)
-    return (NULL);
-
- /*
-  * Create a new IPP message...
-  */
-
-  if ((response = ippNew()) == NULL)
-    return (NULL);
-
- /*
-  * Copy the request values over to the response...
-  */
-
-  response->request.status.version[0] = request->request.op.version[0];
-  response->request.status.version[1] = request->request.op.version[1];
-  response->request.status.request_id = request->request.op.request_id;
-
- /*
-  * The first attribute MUST be attributes-charset...
-  */
-
-  attr = request->attrs;
-
-  if (attr && attr->name && !strcmp(attr->name, "attributes-charset") &&
-      attr->group_tag == IPP_TAG_OPERATION &&
-      attr->value_tag == IPP_TAG_CHARSET &&
-      attr->num_values == 1)
-  {
-   /*
-    * Copy charset from request...
-    */
-
-    ippAddString(response, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
-		 "attributes-charset", NULL, attr->values[0].string.text);
-  }
-  else
-  {
-   /*
-    * Use "utf-8" as the default...
-    */
-
-    ippAddString(response, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
-		 "attributes-charset", NULL, "utf-8");
-  }
-
- /*
-  * Then attributes-natural-language...
-  */
-
-  if (attr)
-    attr = attr->next;
-
-  if (attr && attr->name &&
-      !strcmp(attr->name, "attributes-natural-language") &&
-      attr->group_tag == IPP_TAG_OPERATION &&
-      attr->value_tag == IPP_TAG_LANGUAGE &&
-      attr->num_values == 1)
-  {
-   /*
-    * Copy language from request...
-    */
-
-    ippAddString(response, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
-		 "attributes-natural-language", NULL,
-		 attr->values[0].string.text);
-  }
-  else
-  {
-   /*
-    * Use the language from the current locale...
-    */
-
-    cups_lang_t *language = cupsLangDefault();
-					/* Current locale */
-
-    ippAddString(response, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
-		 "attributes-natural-language", NULL, language->language);
-  }
-
-  return (response);
-}
-
-
-/*
- * 'ippRead()' - Read data for an IPP message from a HTTP connection.
- */
-
-ipp_state_t				/* O - Current state */
-ippRead(http_t *http,			/* I - HTTP connection */
-        ipp_t  *ipp)			/* I - IPP data */
-{
-  DEBUG_printf(("ippRead(http=%p, ipp=%p), data_remaining=" CUPS_LLFMT, (void *)http, (void *)ipp, CUPS_LLCAST (http ? http->data_remaining : -1)));
-
-  if (!http)
-    return (IPP_STATE_ERROR);
-
-  DEBUG_printf(("2ippRead: http->state=%d, http->used=%d", http->state, http->used));
-
-  return (ippReadIO(http, (ipp_iocb_t)ipp_read_http, http->blocking, NULL,
-                    ipp));
-}
-
-
-/*
- * 'ippReadFile()' - Read data for an IPP message from a file.
- *
- * @since CUPS 1.1.19/macOS 10.3@
- */
-
-ipp_state_t				/* O - Current state */
-ippReadFile(int   fd,			/* I - HTTP data */
-            ipp_t *ipp)			/* I - IPP data */
-{
-  DEBUG_printf(("ippReadFile(fd=%d, ipp=%p)", fd, (void *)ipp));
-
-  return (ippReadIO(&fd, (ipp_iocb_t)ipp_read_file, 1, NULL, ipp));
-}
-
-
-/*
- * 'ippReadIO()' - Read data for an IPP message.
- *
- * @since CUPS 1.2/macOS 10.5@
- */
-
-ipp_state_t				/* O - Current state */
-ippReadIO(void       *src,		/* I - Data source */
-          ipp_iocb_t cb,		/* I - Read callback function */
-	  int        blocking,		/* I - Use blocking IO? */
-	  ipp_t      *parent,		/* I - Parent request, if any */
-          ipp_t      *ipp)		/* I - IPP data */
-{
-  int			n;		/* Length of data */
-  unsigned char		*buffer,	/* Data buffer */
-			string[IPP_MAX_TEXT],
-					/* Small string buffer */
-			*bufptr;	/* Pointer into buffer */
-  ipp_attribute_t	*attr;		/* Current attribute */
-  ipp_tag_t		tag;		/* Current tag */
-  ipp_tag_t		value_tag;	/* Current value tag */
-  _ipp_value_t		*value;		/* Current value */
-
-
-  DEBUG_printf(("ippReadIO(src=%p, cb=%p, blocking=%d, parent=%p, ipp=%p)", (void *)src, (void *)cb, blocking, (void *)parent, (void *)ipp));
-  DEBUG_printf(("2ippReadIO: ipp->state=%d", ipp ? ipp->state : IPP_STATE_ERROR));
-
-  if (!src || !ipp)
-    return (IPP_STATE_ERROR);
-
-  if ((buffer = (unsigned char *)_cupsBufferGet(IPP_BUF_SIZE)) == NULL)
-  {
-    DEBUG_puts("1ippReadIO: Unable to get read buffer.");
-    return (IPP_STATE_ERROR);
-  }
-
-  switch (ipp->state)
-  {
-    case IPP_STATE_IDLE :
-        ipp->state ++; /* Avoid common problem... */
-
-    case IPP_STATE_HEADER :
-        if (parent == NULL)
-	{
-	 /*
-          * Get the request header...
-	  */
-
-          if ((*cb)(src, buffer, 8) < 8)
-	  {
-	    DEBUG_puts("1ippReadIO: Unable to read header.");
-	    _cupsBufferRelease((char *)buffer);
-	    return (IPP_STATE_ERROR);
-	  }
-
-	 /*
-          * Then copy the request header over...
-	  */
-
-          ipp->request.any.version[0]  = buffer[0];
-          ipp->request.any.version[1]  = buffer[1];
-          ipp->request.any.op_status   = (buffer[2] << 8) | buffer[3];
-          ipp->request.any.request_id  = (((((buffer[4] << 8) | buffer[5]) << 8) |
-	                        	 buffer[6]) << 8) | buffer[7];
-
-          DEBUG_printf(("2ippReadIO: version=%d.%d", buffer[0], buffer[1]));
-	  DEBUG_printf(("2ippReadIO: op_status=%04x",
-	                ipp->request.any.op_status));
-	  DEBUG_printf(("2ippReadIO: request_id=%d",
-	                ipp->request.any.request_id));
-        }
-
-        ipp->state   = IPP_STATE_ATTRIBUTE;
-	ipp->current = NULL;
-	ipp->curtag  = IPP_TAG_ZERO;
-	ipp->prev    = ipp->last;
-
-       /*
-        * If blocking is disabled, stop here...
-	*/
-
-        if (!blocking)
-	  break;
-
-    case IPP_STATE_ATTRIBUTE :
-        for (;;)
-	{
-	  if ((*cb)(src, buffer, 1) < 1)
-	  {
-	    DEBUG_puts("1ippReadIO: Callback returned EOF/error");
-	    _cupsBufferRelease((char *)buffer);
-	    return (IPP_STATE_ERROR);
-	  }
-
-	  DEBUG_printf(("2ippReadIO: ipp->current=%p, ipp->prev=%p", (void *)ipp->current, (void *)ipp->prev));
-
-	 /*
-	  * Read this attribute...
-	  */
-
-          tag = (ipp_tag_t)buffer[0];
-          if (tag == IPP_TAG_EXTENSION)
-          {
-           /*
-            * Read 32-bit "extension" tag...
-            */
-
-	    if ((*cb)(src, buffer, 4) < 1)
-	    {
-	      DEBUG_puts("1ippReadIO: Callback returned EOF/error");
-	      _cupsBufferRelease((char *)buffer);
-	      return (IPP_STATE_ERROR);
-	    }
-
-	    tag = (ipp_tag_t)((((((buffer[0] << 8) | buffer[1]) << 8) |
-	                        buffer[2]) << 8) | buffer[3]);
-
-            if (tag & IPP_TAG_CUPS_CONST)
-            {
-             /*
-              * Fail if the high bit is set in the tag...
-              */
-
-	      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP extension tag larger than 0x7FFFFFFF."), 1);
-	      DEBUG_printf(("1ippReadIO: bad tag 0x%x.", tag));
-	      _cupsBufferRelease((char *)buffer);
-	      return (IPP_STATE_ERROR);
-            }
-          }
-
-	  if (tag == IPP_TAG_END)
-	  {
-	   /*
-	    * No more attributes left...
-	    */
-
-            DEBUG_puts("2ippReadIO: IPP_TAG_END.");
-
-	    ipp->state = IPP_STATE_DATA;
-	    break;
-	  }
-          else if (tag < IPP_TAG_UNSUPPORTED_VALUE)
-	  {
-	   /*
-	    * Group tag...  Set the current group and continue...
-	    */
-
-            if (ipp->curtag == tag)
-	      ipp->prev = ippAddSeparator(ipp);
-            else if (ipp->current)
-	      ipp->prev = ipp->current;
-
-	    ipp->curtag  = tag;
-	    ipp->current = NULL;
-	    DEBUG_printf(("2ippReadIO: group tag=%x(%s), ipp->prev=%p", tag, ippTagString(tag), (void *)ipp->prev));
-	    continue;
-	  }
-
-          DEBUG_printf(("2ippReadIO: value tag=%x(%s)", tag,
-	                ippTagString(tag)));
-
-         /*
-	  * Get the name...
-	  */
-
-          if ((*cb)(src, buffer, 2) < 2)
-	  {
-	    DEBUG_puts("1ippReadIO: unable to read name length.");
-	    _cupsBufferRelease((char *)buffer);
-	    return (IPP_STATE_ERROR);
-	  }
-
-          n = (buffer[0] << 8) | buffer[1];
-
-          if (n >= IPP_BUF_SIZE)
-	  {
-	    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP name larger than 32767 bytes."), 1);
-	    DEBUG_printf(("1ippReadIO: bad name length %d.", n));
-	    _cupsBufferRelease((char *)buffer);
-	    return (IPP_STATE_ERROR);
-	  }
-
-          DEBUG_printf(("2ippReadIO: name length=%d", n));
-
-          if (n == 0 && tag != IPP_TAG_MEMBERNAME &&
-	      tag != IPP_TAG_END_COLLECTION)
-	  {
-	   /*
-	    * More values for current attribute...
-	    */
-
-            if (ipp->current == NULL)
-	    {
-	      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP attribute has no name."), 1);
-	      DEBUG_puts("1ippReadIO: Attribute without name and no current.");
-	      _cupsBufferRelease((char *)buffer);
-	      return (IPP_STATE_ERROR);
-	    }
-
-            attr      = ipp->current;
-	    value_tag = (ipp_tag_t)(attr->value_tag & IPP_TAG_CUPS_MASK);
-
-	   /*
-	    * Make sure we aren't adding a new value of a different
-	    * type...
-	    */
-
-	    if (value_tag == IPP_TAG_ZERO)
-	    {
-	     /*
-	      * Setting the value of a collection member...
-	      */
-
-	      attr->value_tag = tag;
-	    }
-	    else if (value_tag == IPP_TAG_TEXTLANG ||
-	             value_tag == IPP_TAG_NAMELANG ||
-		     (value_tag >= IPP_TAG_TEXT &&
-		      value_tag <= IPP_TAG_MIMETYPE))
-            {
-	     /*
-	      * String values can sometimes come across in different
-	      * forms; accept sets of differing values...
-	      */
-
-	      if (tag != IPP_TAG_TEXTLANG && tag != IPP_TAG_NAMELANG &&
-	          (tag < IPP_TAG_TEXT || tag > IPP_TAG_MIMETYPE) &&
-		  tag != IPP_TAG_NOVALUE)
-	      {
-		_cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		              _("IPP 1setOf attribute with incompatible value "
-		                "tags."), 1);
-		DEBUG_printf(("1ippReadIO: 1setOf value tag %x(%s) != %x(%s)",
-			      value_tag, ippTagString(value_tag), tag,
-			      ippTagString(tag)));
-		_cupsBufferRelease((char *)buffer);
-	        return (IPP_STATE_ERROR);
-	      }
-
-              if (value_tag != tag)
-              {
-                DEBUG_printf(("1ippReadIO: Converting %s attribute from %s to %s.",
-                              attr->name, ippTagString(value_tag), ippTagString(tag)));
-		ippSetValueTag(ipp, &attr, tag);
-	      }
-            }
-	    else if (value_tag == IPP_TAG_INTEGER ||
-	             value_tag == IPP_TAG_RANGE)
-            {
-	     /*
-	      * Integer and rangeOfInteger values can sometimes be mixed; accept
-	      * sets of differing values...
-	      */
-
-	      if (tag != IPP_TAG_INTEGER && tag != IPP_TAG_RANGE)
-	      {
-		_cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		              _("IPP 1setOf attribute with incompatible value "
-		                "tags."), 1);
-		DEBUG_printf(("1ippReadIO: 1setOf value tag %x(%s) != %x(%s)",
-			      value_tag, ippTagString(value_tag), tag,
-			      ippTagString(tag)));
-		_cupsBufferRelease((char *)buffer);
-	        return (IPP_STATE_ERROR);
-	      }
-
-              if (value_tag == IPP_TAG_INTEGER && tag == IPP_TAG_RANGE)
-              {
-               /*
-                * Convert integer values to rangeOfInteger values...
-                */
-
-		DEBUG_printf(("1ippReadIO: Converting %s attribute to "
-		              "rangeOfInteger.", attr->name));
-                ippSetValueTag(ipp, &attr, IPP_TAG_RANGE);
-              }
-            }
-	    else if (value_tag != tag)
-	    {
-	      _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-			    _("IPP 1setOf attribute with incompatible value "
-			      "tags."), 1);
-	      DEBUG_printf(("1ippReadIO: value tag %x(%s) != %x(%s)",
-	                    value_tag, ippTagString(value_tag), tag,
-			    ippTagString(tag)));
-	      _cupsBufferRelease((char *)buffer);
-	      return (IPP_STATE_ERROR);
-            }
-
-           /*
-	    * Finally, reallocate the attribute array as needed...
-	    */
-
-	    if ((value = ipp_set_value(ipp, &attr, attr->num_values)) == NULL)
-	    {
-	      _cupsBufferRelease((char *)buffer);
-	      return (IPP_STATE_ERROR);
-	    }
-	  }
-	  else if (tag == IPP_TAG_MEMBERNAME)
-	  {
-	   /*
-	    * Name must be length 0!
-	    */
-
-	    if (n)
-	    {
-	      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP member name is not empty."), 1);
-	      DEBUG_puts("1ippReadIO: member name not empty.");
-	      _cupsBufferRelease((char *)buffer);
-	      return (IPP_STATE_ERROR);
-	    }
-
-            if (ipp->current)
-	      ipp->prev = ipp->current;
-
-	    attr = ipp->current = ipp_add_attr(ipp, NULL, ipp->curtag, IPP_TAG_ZERO, 1);
-	    if (!attr)
-	    {
-	      _cupsSetHTTPError(HTTP_STATUS_ERROR);
-	      DEBUG_puts("1ippReadIO: unable to allocate attribute.");
-	      _cupsBufferRelease((char *)buffer);
-	      return (IPP_STATE_ERROR);
-	    }
-
-	    DEBUG_printf(("2ippReadIO: membername, ipp->current=%p, ipp->prev=%p", (void *)ipp->current, (void *)ipp->prev));
-
-	    value = attr->values;
-	  }
-	  else if (tag != IPP_TAG_END_COLLECTION)
-	  {
-	   /*
-	    * New attribute; read the name and add it...
-	    */
-
-	    if ((*cb)(src, buffer, (size_t)n) < n)
-	    {
-	      DEBUG_puts("1ippReadIO: unable to read name.");
-	      _cupsBufferRelease((char *)buffer);
-	      return (IPP_STATE_ERROR);
-	    }
-
-	    buffer[n] = '\0';
-
-            if (ipp->current)
-	      ipp->prev = ipp->current;
-
-	    if ((attr = ipp->current = ipp_add_attr(ipp, (char *)buffer, ipp->curtag, tag,
-	                                            1)) == NULL)
-	    {
-	      _cupsSetHTTPError(HTTP_STATUS_ERROR);
-	      DEBUG_puts("1ippReadIO: unable to allocate attribute.");
-	      _cupsBufferRelease((char *)buffer);
-	      return (IPP_STATE_ERROR);
-	    }
-
-	    DEBUG_printf(("2ippReadIO: name=\"%s\", ipp->current=%p, ipp->prev=%p", buffer, (void *)ipp->current, (void *)ipp->prev));
-
-	    value = attr->values;
-	  }
-	  else
-	  {
-	    attr  = NULL;
-	    value = NULL;
-	  }
-
-	  if ((*cb)(src, buffer, 2) < 2)
-	  {
-	    DEBUG_puts("1ippReadIO: unable to read value length.");
-	    _cupsBufferRelease((char *)buffer);
-	    return (IPP_STATE_ERROR);
-	  }
-
-	  n = (buffer[0] << 8) | buffer[1];
-          DEBUG_printf(("2ippReadIO: value length=%d", n));
-
-	  if (n >= IPP_BUF_SIZE)
-	  {
-	    _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-			  _("IPP value larger than 32767 bytes."), 1);
-	    DEBUG_printf(("1ippReadIO: bad value length %d.", n));
-	    _cupsBufferRelease((char *)buffer);
-	    return (IPP_STATE_ERROR);
-	  }
-
-	  switch (tag)
-	  {
-	    case IPP_TAG_INTEGER :
-	    case IPP_TAG_ENUM :
-		if (n != 4)
-		{
-		  if (tag == IPP_TAG_INTEGER)
-		    _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-				  _("IPP integer value not 4 bytes."), 1);
-		  else
-		    _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-				  _("IPP enum value not 4 bytes."), 1);
-		  DEBUG_printf(("1ippReadIO: bad integer value length %d.", n));
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-	        if ((*cb)(src, buffer, 4) < 4)
-		{
-	          DEBUG_puts("1ippReadIO: Unable to read integer value.");
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-		n = (((((buffer[0] << 8) | buffer[1]) << 8) | buffer[2]) << 8) |
-		    buffer[3];
-
-                if (attr->value_tag == IPP_TAG_RANGE)
-                  value->range.lower = value->range.upper = n;
-                else
-		  value->integer = n;
-	        break;
-
-	    case IPP_TAG_BOOLEAN :
-		if (n != 1)
-		{
-		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP boolean value not 1 byte."),
-		                1);
-		  DEBUG_printf(("1ippReadIO: bad boolean value length %d.", n));
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-	        if ((*cb)(src, buffer, 1) < 1)
-		{
-	          DEBUG_puts("1ippReadIO: Unable to read boolean value.");
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-                value->boolean = (char)buffer[0];
-	        break;
-
-            case IPP_TAG_NOVALUE :
-	    case IPP_TAG_NOTSETTABLE :
-	    case IPP_TAG_DELETEATTR :
-	    case IPP_TAG_ADMINDEFINE :
-	       /*
-	        * These value types are not supposed to have values, however
-		* some vendors (Brother) do not implement IPP correctly and so
-		* we need to map non-empty values to text...
-		*/
-
-	        if (attr->value_tag == tag)
-		{
-		  if (n == 0)
-		    break;
-
-		  attr->value_tag = IPP_TAG_TEXT;
-		}
-
-	    case IPP_TAG_TEXT :
-	    case IPP_TAG_NAME :
-	    case IPP_TAG_KEYWORD :
-	    case IPP_TAG_URI :
-	    case IPP_TAG_URISCHEME :
-	    case IPP_TAG_CHARSET :
-	    case IPP_TAG_LANGUAGE :
-	    case IPP_TAG_MIMETYPE :
-	        if (n > 0)
-	        {
-		  if ((*cb)(src, buffer, (size_t)n) < n)
-		  {
-		    DEBUG_puts("1ippReadIO: unable to read string value.");
-		    _cupsBufferRelease((char *)buffer);
-		    return (IPP_STATE_ERROR);
-		  }
-		}
-
-		buffer[n] = '\0';
-		value->string.text = _cupsStrAlloc((char *)buffer);
-		DEBUG_printf(("2ippReadIO: value=\"%s\"", value->string.text));
-	        break;
-
-	    case IPP_TAG_DATE :
-		if (n != 11)
-		{
-		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP date value not 11 bytes."), 1);
-		  DEBUG_printf(("1ippReadIO: bad date value length %d.", n));
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-	        if ((*cb)(src, value->date, 11) < 11)
-		{
-	          DEBUG_puts("1ippReadIO: Unable to read date value.");
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-	        break;
-
-	    case IPP_TAG_RESOLUTION :
-		if (n != 9)
-		{
-		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		                _("IPP resolution value not 9 bytes."), 1);
-		  DEBUG_printf(("1ippReadIO: bad resolution value length %d.", n));
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-	        if ((*cb)(src, buffer, 9) < 9)
-		{
-	          DEBUG_puts("1ippReadIO: Unable to read resolution value.");
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-                value->resolution.xres =
-		    (((((buffer[0] << 8) | buffer[1]) << 8) | buffer[2]) << 8) |
-		    buffer[3];
-                value->resolution.yres =
-		    (((((buffer[4] << 8) | buffer[5]) << 8) | buffer[6]) << 8) |
-		    buffer[7];
-                value->resolution.units =
-		    (ipp_res_t)buffer[8];
-	        break;
-
-	    case IPP_TAG_RANGE :
-		if (n != 8)
-		{
-		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		                _("IPP rangeOfInteger value not 8 bytes."), 1);
-		  DEBUG_printf(("1ippReadIO: bad rangeOfInteger value length "
-		                "%d.", n));
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-	        if ((*cb)(src, buffer, 8) < 8)
-		{
-	          DEBUG_puts("1ippReadIO: Unable to read range value.");
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-                value->range.lower =
-		    (((((buffer[0] << 8) | buffer[1]) << 8) | buffer[2]) << 8) |
-		    buffer[3];
-                value->range.upper =
-		    (((((buffer[4] << 8) | buffer[5]) << 8) | buffer[6]) << 8) |
-		    buffer[7];
-	        break;
-
-	    case IPP_TAG_TEXTLANG :
-	    case IPP_TAG_NAMELANG :
-	        if (n < 4)
-		{
-		  if (tag == IPP_TAG_TEXTLANG)
-		    _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		                  _("IPP textWithLanguage value less than "
-		                    "minimum 4 bytes."), 1);
-		  else
-		    _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		                  _("IPP nameWithLanguage value less than "
-		                    "minimum 4 bytes."), 1);
-		  DEBUG_printf(("1ippReadIO: bad stringWithLanguage value "
-		                "length %d.", n));
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-	        if ((*cb)(src, buffer, (size_t)n) < n)
-		{
-	          DEBUG_puts("1ippReadIO: Unable to read string w/language "
-		             "value.");
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-                bufptr = buffer;
-
-	       /*
-	        * text-with-language and name-with-language are composite
-		* values:
-		*
-		*    language-length
-		*    language
-		*    text-length
-		*    text
-		*/
-
-		n = (bufptr[0] << 8) | bufptr[1];
-
-		if ((bufptr + 2 + n) >= (buffer + IPP_BUF_SIZE) || n >= (int)sizeof(string))
-		{
-		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		                _("IPP language length overflows value."), 1);
-		  DEBUG_printf(("1ippReadIO: bad language value length %d.",
-		                n));
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-		else if (n >= IPP_MAX_LANGUAGE)
-		{
-		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		                _("IPP language length too large."), 1);
-		  DEBUG_printf(("1ippReadIO: bad language value length %d.",
-		                n));
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-		memcpy(string, bufptr + 2, (size_t)n);
-		string[n] = '\0';
-
-		value->string.language = _cupsStrAlloc((char *)string);
-
-                bufptr += 2 + n;
-		n = (bufptr[0] << 8) | bufptr[1];
-
-		if ((bufptr + 2 + n) >= (buffer + IPP_BUF_SIZE))
-		{
-		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		                _("IPP string length overflows value."), 1);
-		  DEBUG_printf(("1ippReadIO: bad string value length %d.", n));
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-		bufptr[2 + n] = '\0';
-                value->string.text = _cupsStrAlloc((char *)bufptr + 2);
-	        break;
-
-            case IPP_TAG_BEGIN_COLLECTION :
-	       /*
-	        * Oh, boy, here comes a collection value, so read it...
-		*/
-
-                value->collection = ippNew();
-
-                if (n > 0)
-		{
-		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		                _("IPP begCollection value not 0 bytes."), 1);
-	          DEBUG_puts("1ippReadIO: begCollection tag with value length "
-		             "> 0.");
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-		if (ippReadIO(src, cb, 1, ipp, value->collection) == IPP_STATE_ERROR)
-		{
-	          DEBUG_puts("1ippReadIO: Unable to read collection value.");
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-                break;
-
-            case IPP_TAG_END_COLLECTION :
-		_cupsBufferRelease((char *)buffer);
-
-                if (n > 0)
-		{
-		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		                _("IPP endCollection value not 0 bytes."), 1);
-	          DEBUG_puts("1ippReadIO: endCollection tag with value length "
-		             "> 0.");
-		  return (IPP_STATE_ERROR);
-		}
-
-	        DEBUG_puts("1ippReadIO: endCollection tag...");
-		return (ipp->state = IPP_STATE_DATA);
-
-            case IPP_TAG_MEMBERNAME :
-	       /*
-	        * The value the name of the member in the collection, which
-		* we need to carry over...
-		*/
-
-                if (!attr)
-                {
-		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		                _("IPP memberName with no attribute."), 1);
-	          DEBUG_puts("1ippReadIO: Member name without attribute.");
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-                }
-		else if (n == 0)
-		{
-		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		                _("IPP memberName value is empty."), 1);
-	          DEBUG_puts("1ippReadIO: Empty member name value.");
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-		else if ((*cb)(src, buffer, (size_t)n) < n)
-		{
-	          DEBUG_puts("1ippReadIO: Unable to read member name value.");
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-		buffer[n] = '\0';
-		attr->name = _cupsStrAlloc((char *)buffer);
-
-               /*
-	        * Since collection members are encoded differently than
-		* regular attributes, make sure we don't start with an
-		* empty value...
-		*/
-
-                attr->num_values --;
-
-		DEBUG_printf(("2ippReadIO: member name=\"%s\"", attr->name));
-		break;
-
-            default : /* Other unsupported values */
-                if (tag == IPP_TAG_STRING && n > IPP_MAX_LENGTH)
-		{
-		  _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-		                _("IPP octetString length too large."), 1);
-		  DEBUG_printf(("1ippReadIO: bad octetString value length %d.",
-		                n));
-		  _cupsBufferRelease((char *)buffer);
-		  return (IPP_STATE_ERROR);
-		}
-
-                value->unknown.length = n;
-
-	        if (n > 0)
-		{
-		  if ((value->unknown.data = malloc((size_t)n)) == NULL)
-		  {
-		    _cupsSetHTTPError(HTTP_STATUS_ERROR);
-		    DEBUG_puts("1ippReadIO: Unable to allocate value");
-		    _cupsBufferRelease((char *)buffer);
-		    return (IPP_STATE_ERROR);
-		  }
-
-	          if ((*cb)(src, value->unknown.data, (size_t)n) < n)
-		  {
-	            DEBUG_puts("1ippReadIO: Unable to read unsupported value.");
-		    _cupsBufferRelease((char *)buffer);
-		    return (IPP_STATE_ERROR);
-		  }
-		}
-		else
-		  value->unknown.data = NULL;
-	        break;
-	  }
-
-	 /*
-          * If blocking is disabled, stop here...
-	  */
-
-          if (!blocking)
-	    break;
-	}
-        break;
-
-    case IPP_STATE_DATA :
-        break;
-
-    default :
-        break; /* anti-compiler-warning-code */
-  }
-
-  DEBUG_printf(("1ippReadIO: returning ipp->state=%d.", ipp->state));
-  _cupsBufferRelease((char *)buffer);
-
-  return (ipp->state);
-}
-
-
-/*
- * 'ippSetBoolean()' - Set a boolean value in an attribute.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * The @code element@ parameter specifies which value to set from 0 to
- * @code ippGetCount(attr)@.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippSetBoolean(ipp_t           *ipp,	/* I  - IPP message */
-              ipp_attribute_t **attr,	/* IO - IPP attribute */
-              int             element,	/* I  - Value number (0-based) */
-              int             boolvalue)/* I  - Boolean value */
-{
-  _ipp_value_t	*value;			/* Current value */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !attr || !*attr || (*attr)->value_tag != IPP_TAG_BOOLEAN ||
-      element < 0 || element > (*attr)->num_values)
-    return (0);
-
- /*
-  * Set the value and return...
-  */
-
-  if ((value = ipp_set_value(ipp, attr, element)) != NULL)
-    value->boolean = (char)boolvalue;
-
-  return (value != NULL);
-}
-
-
-/*
- * 'ippSetCollection()' - Set a collection value in an attribute.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * The @code element@ parameter specifies which value to set from 0 to
- * @code ippGetCount(attr)@.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippSetCollection(
-    ipp_t           *ipp,		/* I  - IPP message */
-    ipp_attribute_t **attr,		/* IO - IPP attribute */
-    int             element,		/* I  - Value number (0-based) */
-    ipp_t           *colvalue)		/* I  - Collection value */
-{
-  _ipp_value_t	*value;			/* Current value */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !attr || !*attr || (*attr)->value_tag != IPP_TAG_BEGIN_COLLECTION ||
-      element < 0 || element > (*attr)->num_values || !colvalue)
-    return (0);
-
- /*
-  * Set the value and return...
-  */
-
-  if ((value = ipp_set_value(ipp, attr, element)) != NULL)
-  {
-    if (value->collection)
-      ippDelete(value->collection);
-
-    value->collection = colvalue;
-    colvalue->use ++;
-  }
-
-  return (value != NULL);
-}
-
-
-/*
- * 'ippSetDate()' - Set a dateTime value in an attribute.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * The @code element@ parameter specifies which value to set from 0 to
- * @code ippGetCount(attr)@.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippSetDate(ipp_t             *ipp,	/* I  - IPP message */
-           ipp_attribute_t   **attr,	/* IO - IPP attribute */
-           int               element,	/* I  - Value number (0-based) */
-           const ipp_uchar_t *datevalue)/* I  - dateTime value */
-{
-  _ipp_value_t	*value;			/* Current value */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !attr || !*attr || (*attr)->value_tag != IPP_TAG_DATE ||
-      element < 0 || element > (*attr)->num_values || !datevalue)
-    return (0);
-
- /*
-  * Set the value and return...
-  */
-
-  if ((value = ipp_set_value(ipp, attr, element)) != NULL)
-    memcpy(value->date, datevalue, sizeof(value->date));
-
-  return (value != NULL);
-}
-
-
-/*
- * 'ippSetGroupTag()' - Set the group tag of an attribute.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * The @code group@ parameter specifies the IPP attribute group tag: none
- * (@code IPP_TAG_ZERO@, for member attributes), document (@code IPP_TAG_DOCUMENT@),
- * event notification (@code IPP_TAG_EVENT_NOTIFICATION@), operation
- * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
- * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippSetGroupTag(
-    ipp_t           *ipp,		/* I  - IPP message */
-    ipp_attribute_t **attr,		/* IO - Attribute */
-    ipp_tag_t       group_tag)		/* I  - Group tag */
-{
- /*
-  * Range check input - group tag must be 0x01 to 0x0F, per RFC 8011...
-  */
-
-  if (!ipp || !attr || !*attr ||
-      group_tag < IPP_TAG_ZERO || group_tag == IPP_TAG_END ||
-      group_tag >= IPP_TAG_UNSUPPORTED_VALUE)
-    return (0);
-
- /*
-  * Set the group tag and return...
-  */
-
-  (*attr)->group_tag = group_tag;
-
-  return (1);
-}
-
-
-/*
- * 'ippSetInteger()' - Set an integer or enum value in an attribute.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * The @code element@ parameter specifies which value to set from 0 to
- * @code ippGetCount(attr)@.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippSetInteger(ipp_t           *ipp,	/* I  - IPP message */
-              ipp_attribute_t **attr,	/* IO - IPP attribute */
-              int             element,	/* I  - Value number (0-based) */
-              int             intvalue)	/* I  - Integer/enum value */
-{
-  _ipp_value_t	*value;			/* Current value */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !attr || !*attr ||
-      ((*attr)->value_tag != IPP_TAG_INTEGER && (*attr)->value_tag != IPP_TAG_ENUM) ||
-      element < 0 || element > (*attr)->num_values)
-    return (0);
-
- /*
-  * Set the value and return...
-  */
-
-  if ((value = ipp_set_value(ipp, attr, element)) != NULL)
-    value->integer = intvalue;
-
-  return (value != NULL);
-}
-
-
-/*
- * 'ippSetName()' - Set the name of an attribute.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippSetName(ipp_t           *ipp,	/* I  - IPP message */
-	   ipp_attribute_t **attr,	/* IO - IPP attribute */
-	   const char      *name)	/* I  - Attribute name */
-{
-  char	*temp;				/* Temporary name value */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !attr || !*attr)
-    return (0);
-
- /*
-  * Set the value and return...
-  */
-
-  if ((temp = _cupsStrAlloc(name)) != NULL)
-  {
-    if ((*attr)->name)
-      _cupsStrFree((*attr)->name);
-
-    (*attr)->name = temp;
-  }
-
-  return (temp != NULL);
-}
-
-
-/*
- * 'ippSetOctetString()' - Set an octetString value in an IPP attribute.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * The @code element@ parameter specifies which value to set from 0 to
- * @code ippGetCount(attr)@.
- *
- * @since CUPS 1.7/macOS 10.9@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippSetOctetString(
-    ipp_t           *ipp,		/* I  - IPP message */
-    ipp_attribute_t **attr,		/* IO - IPP attribute */
-    int             element,		/* I  - Value number (0-based) */
-    const void      *data,		/* I  - Pointer to octetString data */
-    int             datalen)		/* I  - Length of octetString data */
-{
-  _ipp_value_t	*value;			/* Current value */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !attr || !*attr || (*attr)->value_tag != IPP_TAG_STRING ||
-      element < 0 || element > (*attr)->num_values ||
-      datalen < 0 || datalen > IPP_MAX_LENGTH)
-    return (0);
-
- /*
-  * Set the value and return...
-  */
-
-  if ((value = ipp_set_value(ipp, attr, element)) != NULL)
-  {
-    if ((int)((*attr)->value_tag) & IPP_TAG_CUPS_CONST)
-    {
-     /*
-      * Just copy the pointer...
-      */
-
-      value->unknown.data   = (void *)data;
-      value->unknown.length = datalen;
-    }
-    else
-    {
-     /*
-      * Copy the data...
-      */
-
-      if (value->unknown.data)
-      {
-       /*
-	* Free previous data...
-	*/
-
-	free(value->unknown.data);
-
-	value->unknown.data   = NULL;
-        value->unknown.length = 0;
-      }
-
-      if (datalen > 0)
-      {
-	void	*temp;			/* Temporary data pointer */
-
-	if ((temp = malloc((size_t)datalen)) != NULL)
-	{
-	  memcpy(temp, data, (size_t)datalen);
-
-	  value->unknown.data   = temp;
-	  value->unknown.length = datalen;
-	}
-	else
-	  return (0);
-      }
-    }
-  }
-
-  return (value != NULL);
-}
-
-
-/*
- * 'ippSetOperation()' - Set the operation ID in an IPP request message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O - 1 on success, 0 on failure */
-ippSetOperation(ipp_t    *ipp,		/* I - IPP request message */
-                ipp_op_t op)		/* I - Operation ID */
-{
- /*
-  * Range check input...
-  */
-
-  if (!ipp)
-    return (0);
-
- /*
-  * Set the operation and return...
-  */
-
-  ipp->request.op.operation_id = op;
-
-  return (1);
-}
-
-
-/*
- * 'ippSetRange()' - Set a rangeOfInteger value in an attribute.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * The @code element@ parameter specifies which value to set from 0 to
- * @code ippGetCount(attr)@.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippSetRange(ipp_t           *ipp,	/* I  - IPP message */
-            ipp_attribute_t **attr,	/* IO - IPP attribute */
-            int             element,	/* I  - Value number (0-based) */
-	    int             lowervalue,	/* I  - Lower bound for range */
-	    int             uppervalue)	/* I  - Upper bound for range */
-{
-  _ipp_value_t	*value;			/* Current value */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !attr || !*attr || (*attr)->value_tag != IPP_TAG_RANGE ||
-      element < 0 || element > (*attr)->num_values || lowervalue > uppervalue)
-    return (0);
-
- /*
-  * Set the value and return...
-  */
-
-  if ((value = ipp_set_value(ipp, attr, element)) != NULL)
-  {
-    value->range.lower = lowervalue;
-    value->range.upper = uppervalue;
-  }
-
-  return (value != NULL);
-}
-
-
-/*
- * 'ippSetRequestId()' - Set the request ID in an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code request_id@ parameter must be greater than 0.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O - 1 on success, 0 on failure */
-ippSetRequestId(ipp_t *ipp,		/* I - IPP message */
-                int   request_id)	/* I - Request ID */
-{
- /*
-  * Range check input; not checking request_id values since ipptool wants to send
-  * invalid values for conformance testing and a bad request_id does not affect the
-  * encoding of a message...
-  */
-
-  if (!ipp)
-    return (0);
-
- /*
-  * Set the request ID and return...
-  */
-
-  ipp->request.any.request_id = request_id;
-
-  return (1);
-}
-
-
-/*
- * 'ippSetResolution()' - Set a resolution value in an attribute.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * The @code element@ parameter specifies which value to set from 0 to
- * @code ippGetCount(attr)@.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippSetResolution(
-    ipp_t           *ipp,		/* I  - IPP message */
-    ipp_attribute_t **attr,		/* IO - IPP attribute */
-    int             element,		/* I  - Value number (0-based) */
-    ipp_res_t       unitsvalue,		/* I  - Resolution units */
-    int             xresvalue,		/* I  - Horizontal/cross feed resolution */
-    int             yresvalue)		/* I  - Vertical/feed resolution */
-{
-  _ipp_value_t	*value;			/* Current value */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !attr || !*attr || (*attr)->value_tag != IPP_TAG_RESOLUTION ||
-      element < 0 || element > (*attr)->num_values || xresvalue <= 0 || yresvalue <= 0 ||
-      unitsvalue < IPP_RES_PER_INCH || unitsvalue > IPP_RES_PER_CM)
-    return (0);
-
- /*
-  * Set the value and return...
-  */
-
-  if ((value = ipp_set_value(ipp, attr, element)) != NULL)
-  {
-    value->resolution.units = unitsvalue;
-    value->resolution.xres  = xresvalue;
-    value->resolution.yres  = yresvalue;
-  }
-
-  return (value != NULL);
-}
-
-
-/*
- * 'ippSetState()' - Set the current state of the IPP message.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O - 1 on success, 0 on failure */
-ippSetState(ipp_t       *ipp,		/* I - IPP message */
-            ipp_state_t state)		/* I - IPP state value */
-{
- /*
-  * Range check input...
-  */
-
-  if (!ipp)
-    return (0);
-
- /*
-  * Set the state and return...
-  */
-
-  ipp->state   = state;
-  ipp->current = NULL;
-
-  return (1);
-}
-
-
-/*
- * 'ippSetStatusCode()' - Set the status code in an IPP response or event message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O - 1 on success, 0 on failure */
-ippSetStatusCode(ipp_t        *ipp,	/* I - IPP response or event message */
-                 ipp_status_t status)	/* I - Status code */
-{
- /*
-  * Range check input...
-  */
-
-  if (!ipp)
-    return (0);
-
- /*
-  * Set the status code and return...
-  */
-
-  ipp->request.status.status_code = status;
-
-  return (1);
-}
-
-
-/*
- * 'ippSetString()' - Set a string value in an attribute.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * The @code element@ parameter specifies which value to set from 0 to
- * @code ippGetCount(attr)@.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippSetString(ipp_t           *ipp,	/* I  - IPP message */
-             ipp_attribute_t **attr,	/* IO - IPP attribute */
-             int             element,	/* I  - Value number (0-based) */
-	     const char      *strvalue)	/* I  - String value */
-{
-  char		*temp;			/* Temporary string */
-  _ipp_value_t	*value;			/* Current value */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !attr || !*attr ||
-      ((*attr)->value_tag != IPP_TAG_TEXTLANG &&
-      (*attr)->value_tag != IPP_TAG_NAMELANG &&
-       ((*attr)->value_tag < IPP_TAG_TEXT ||
-        (*attr)->value_tag > IPP_TAG_MIMETYPE)) ||
-      element < 0 || element > (*attr)->num_values || !strvalue)
-    return (0);
-
- /*
-  * Set the value and return...
-  */
-
-  if ((value = ipp_set_value(ipp, attr, element)) != NULL)
-  {
-    if (element > 0)
-      value->string.language = (*attr)->values[0].string.language;
-
-    if ((int)((*attr)->value_tag) & IPP_TAG_CUPS_CONST)
-      value->string.text = (char *)strvalue;
-    else if ((temp = _cupsStrAlloc(strvalue)) != NULL)
-    {
-      if (value->string.text)
-        _cupsStrFree(value->string.text);
-
-      value->string.text = temp;
-    }
-    else
-      return (0);
-  }
-
-  return (value != NULL);
-}
-
-
-/*
- * 'ippSetStringf()' - Set a formatted string value of an attribute.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * The @code element@ parameter specifies which value to set from 0 to
- * @code ippGetCount(attr)@.
- *
- * The @code format@ parameter uses formatting characters compatible with the
- * printf family of standard functions.  Additional arguments follow it as
- * needed.  The formatted string is truncated as needed to the maximum length of
- * the corresponding value type.
- *
- * @since CUPS 1.7/macOS 10.9@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippSetStringf(ipp_t           *ipp,	/* I  - IPP message */
-              ipp_attribute_t **attr,	/* IO - IPP attribute */
-              int             element,	/* I  - Value number (0-based) */
-	      const char      *format,	/* I  - Printf-style format string */
-	      ...)			/* I  - Additional arguments as needed */
-{
-  int		ret;			/* Return value */
-  va_list	ap;			/* Pointer to additional arguments */
-
-
-  va_start(ap, format);
-  ret = ippSetStringfv(ipp, attr, element, format, ap);
-  va_end(ap);
-
-  return (ret);
-}
-
-
-/*
- * 'ippSetStringf()' - Set a formatted string value of an attribute.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * The @code element@ parameter specifies which value to set from 0 to
- * @code ippGetCount(attr)@.
- *
- * The @code format@ parameter uses formatting characters compatible with the
- * printf family of standard functions.  Additional arguments follow it as
- * needed.  The formatted string is truncated as needed to the maximum length of
- * the corresponding value type.
- *
- * @since CUPS 1.7/macOS 10.9@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippSetStringfv(ipp_t           *ipp,	/* I  - IPP message */
-               ipp_attribute_t **attr,	/* IO - IPP attribute */
-               int             element,	/* I  - Value number (0-based) */
-	       const char      *format,	/* I  - Printf-style format string */
-	       va_list         ap)	/* I  - Pointer to additional arguments */
-{
-  ipp_tag_t	value_tag;		/* Value tag */
-  char		buffer[IPP_MAX_TEXT + 4];
-					/* Formatted text string */
-  ssize_t	bytes,			/* Length of formatted value */
-		max_bytes;		/* Maximum number of bytes for value */
-
-
- /*
-  * Range check input...
-  */
-
-  if (attr && *attr)
-    value_tag = (*attr)->value_tag & IPP_TAG_CUPS_MASK;
-  else
-    value_tag = IPP_TAG_ZERO;
-
-  if (!ipp || !attr || !*attr ||
-      (value_tag < IPP_TAG_TEXT && value_tag != IPP_TAG_TEXTLANG &&
-       value_tag != IPP_TAG_NAMELANG) || value_tag > IPP_TAG_MIMETYPE ||
-      !format)
-    return (0);
-
- /*
-  * Format the string...
-  */
-
-  if (!strcmp(format, "%s"))
-  {
-   /*
-    * Optimize the simple case...
-    */
-
-    const char *s = va_arg(ap, char *);
-
-    if (!s)
-      s = "(null)";
-
-    bytes = (ssize_t)strlen(s);
-    strlcpy(buffer, s, sizeof(buffer));
-  }
-  else
-  {
-   /*
-    * Do a full formatting of the message...
-    */
-
-    if ((bytes = vsnprintf(buffer, sizeof(buffer), format, ap)) < 0)
-      return (0);
-  }
-
- /*
-  * Limit the length of the string...
-  */
-
-  switch (value_tag)
-  {
-    default :
-    case IPP_TAG_TEXT :
-    case IPP_TAG_TEXTLANG :
-        max_bytes = IPP_MAX_TEXT;
-        break;
-
-    case IPP_TAG_NAME :
-    case IPP_TAG_NAMELANG :
-        max_bytes = IPP_MAX_NAME;
-        break;
-
-    case IPP_TAG_CHARSET :
-        max_bytes = IPP_MAX_CHARSET;
-        break;
-
-    case IPP_TAG_KEYWORD :
-        max_bytes = IPP_MAX_KEYWORD;
-        break;
-
-    case IPP_TAG_LANGUAGE :
-        max_bytes = IPP_MAX_LANGUAGE;
-        break;
-
-    case IPP_TAG_MIMETYPE :
-        max_bytes = IPP_MAX_MIMETYPE;
-        break;
-
-    case IPP_TAG_URI :
-        max_bytes = IPP_MAX_URI;
-        break;
-
-    case IPP_TAG_URISCHEME :
-        max_bytes = IPP_MAX_URISCHEME;
-        break;
-  }
-
-  if (bytes >= max_bytes)
-  {
-    char	*bufmax,		/* Buffer at max_bytes */
-		*bufptr;		/* Pointer into buffer */
-
-    bufptr = buffer + strlen(buffer) - 1;
-    bufmax = buffer + max_bytes - 1;
-
-    while (bufptr > bufmax)
-    {
-      if (*bufptr & 0x80)
-      {
-        while ((*bufptr & 0xc0) == 0x80 && bufptr > buffer)
-          bufptr --;
-      }
-
-      bufptr --;
-    }
-
-    *bufptr = '\0';
-  }
-
- /*
-  * Set the formatted string and return...
-  */
-
-  return (ippSetString(ipp, attr, element, buffer));
-}
-
-
-/*
- * 'ippSetValueTag()' - Set the value tag of an attribute.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The @code attr@ parameter may be modified as a result of setting the value.
- *
- * Integer (@code IPP_TAG_INTEGER@) values can be promoted to rangeOfInteger
- * (@code IPP_TAG_RANGE@) values, the various string tags can be promoted to name
- * (@code IPP_TAG_NAME@) or nameWithLanguage (@code IPP_TAG_NAMELANG@) values, text
- * (@code IPP_TAG_TEXT@) values can be promoted to textWithLanguage
- * (@code IPP_TAG_TEXTLANG@) values, and all values can be demoted to the various
- * out-of-band value tags such as no-value (@code IPP_TAG_NOVALUE@). All other changes
- * will be rejected.
- *
- * Promoting a string attribute to nameWithLanguage or textWithLanguage adds the language
- * code in the "attributes-natural-language" attribute or, if not present, the language
- * code for the current locale.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O  - 1 on success, 0 on failure */
-ippSetValueTag(
-    ipp_t          *ipp,		/* I  - IPP message */
-    ipp_attribute_t **attr,		/* IO - IPP attribute */
-    ipp_tag_t       value_tag)		/* I  - Value tag */
-{
-  int		i;			/* Looping var */
-  _ipp_value_t	*value;			/* Current value */
-  int		integer;		/* Current integer value */
-  cups_lang_t	*language;		/* Current language */
-  char		code[32];		/* Language code */
-  ipp_tag_t	temp_tag;		/* Temporary value tag */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || !attr || !*attr)
-    return (0);
-
- /*
-  * If there is no change, return immediately...
-  */
-
-  if (value_tag == (*attr)->value_tag)
-    return (1);
-
- /*
-  * Otherwise implement changes as needed...
-  */
-
-  temp_tag = (ipp_tag_t)((int)((*attr)->value_tag) & IPP_TAG_CUPS_MASK);
-
-  switch (value_tag)
-  {
-    case IPP_TAG_UNSUPPORTED_VALUE :
-    case IPP_TAG_DEFAULT :
-    case IPP_TAG_UNKNOWN :
-    case IPP_TAG_NOVALUE :
-    case IPP_TAG_NOTSETTABLE :
-    case IPP_TAG_DELETEATTR :
-    case IPP_TAG_ADMINDEFINE :
-       /*
-        * Free any existing values...
-        */
-
-        if ((*attr)->num_values > 0)
-          ipp_free_values(*attr, 0, (*attr)->num_values);
-
-       /*
-        * Set out-of-band value...
-        */
-
-        (*attr)->value_tag = value_tag;
-        break;
-
-    case IPP_TAG_RANGE :
-        if (temp_tag != IPP_TAG_INTEGER)
-          return (0);
-
-        for (i = (*attr)->num_values, value = (*attr)->values;
-             i > 0;
-             i --, value ++)
-        {
-          integer            = value->integer;
-          value->range.lower = value->range.upper = integer;
-        }
-
-        (*attr)->value_tag = IPP_TAG_RANGE;
-        break;
-
-    case IPP_TAG_NAME :
-        if (temp_tag != IPP_TAG_KEYWORD)
-          return (0);
-
-        (*attr)->value_tag = (ipp_tag_t)(IPP_TAG_NAME | ((*attr)->value_tag & IPP_TAG_CUPS_CONST));
-        break;
-
-    case IPP_TAG_NAMELANG :
-    case IPP_TAG_TEXTLANG :
-        if (value_tag == IPP_TAG_NAMELANG && (temp_tag != IPP_TAG_NAME && temp_tag != IPP_TAG_KEYWORD))
-          return (0);
-
-        if (value_tag == IPP_TAG_TEXTLANG && temp_tag != IPP_TAG_TEXT)
-          return (0);
-
-        if (ipp->attrs && ipp->attrs->next && ipp->attrs->next->name &&
-            !strcmp(ipp->attrs->next->name, "attributes-natural-language"))
-        {
-         /*
-          * Use the language code from the IPP message...
-          */
-
-	  (*attr)->values[0].string.language =
-	      _cupsStrAlloc(ipp->attrs->next->values[0].string.text);
-        }
-        else
-        {
-         /*
-          * Otherwise, use the language code corresponding to the locale...
-          */
-
-	  language = cupsLangDefault();
-	  (*attr)->values[0].string.language = _cupsStrAlloc(ipp_lang_code(language->language,
-									code,
-									sizeof(code)));
-        }
-
-        for (i = (*attr)->num_values - 1, value = (*attr)->values + 1;
-             i > 0;
-             i --, value ++)
-          value->string.language = (*attr)->values[0].string.language;
-
-        if ((int)(*attr)->value_tag & IPP_TAG_CUPS_CONST)
-        {
-         /*
-          * Make copies of all values...
-          */
-
-	  for (i = (*attr)->num_values, value = (*attr)->values;
-	       i > 0;
-	       i --, value ++)
-	    value->string.text = _cupsStrAlloc(value->string.text);
-        }
-
-        (*attr)->value_tag = IPP_TAG_NAMELANG;
-        break;
-
-    case IPP_TAG_KEYWORD :
-        if (temp_tag == IPP_TAG_NAME || temp_tag == IPP_TAG_NAMELANG)
-          break;			/* Silently "allow" name -> keyword */
-
-    default :
-        return (0);
-  }
-
-  return (1);
-}
-
-
-/*
- * 'ippSetVersion()' - Set the version number in an IPP message.
- *
- * The @code ipp@ parameter refers to an IPP message previously created using
- * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
- *
- * The valid version numbers are currently 1.0, 1.1, 2.0, 2.1, and 2.2.
- *
- * @since CUPS 1.6/macOS 10.8@
- */
-
-int					/* O - 1 on success, 0 on failure */
-ippSetVersion(ipp_t *ipp,		/* I - IPP message */
-              int   major,		/* I - Major version number (major.minor) */
-              int   minor)		/* I - Minor version number (major.minor) */
-{
- /*
-  * Range check input...
-  */
-
-  if (!ipp || major < 0 || minor < 0)
-    return (0);
-
- /*
-  * Set the version number...
-  */
-
-  ipp->request.any.version[0] = (ipp_uchar_t)major;
-  ipp->request.any.version[1] = (ipp_uchar_t)minor;
-
-  return (1);
-}
-
-
-/*
- * 'ippTimeToDate()' - Convert from time in seconds to RFC 2579 format.
- */
-
-const ipp_uchar_t *			/* O - RFC-2579 date/time data */
-ippTimeToDate(time_t t)			/* I - Time in seconds */
-{
-  struct tm	*unixdate;		/* UNIX unixdate/time info */
-  ipp_uchar_t	*date = _cupsGlobals()->ipp_date;
-					/* RFC-2579 date/time data */
-
-
- /*
-  * RFC-2579 date/time format is:
-  *
-  *    Byte(s)  Description
-  *    -------  -----------
-  *    0-1      Year (0 to 65535)
-  *    2        Month (1 to 12)
-  *    3        Day (1 to 31)
-  *    4        Hours (0 to 23)
-  *    5        Minutes (0 to 59)
-  *    6        Seconds (0 to 60, 60 = "leap second")
-  *    7        Deciseconds (0 to 9)
-  *    8        +/- UTC
-  *    9        UTC hours (0 to 11)
-  *    10       UTC minutes (0 to 59)
-  */
-
-  unixdate = gmtime(&t);
-  unixdate->tm_year += 1900;
-
-  date[0]  = (ipp_uchar_t)(unixdate->tm_year >> 8);
-  date[1]  = (ipp_uchar_t)(unixdate->tm_year);
-  date[2]  = (ipp_uchar_t)(unixdate->tm_mon + 1);
-  date[3]  = (ipp_uchar_t)unixdate->tm_mday;
-  date[4]  = (ipp_uchar_t)unixdate->tm_hour;
-  date[5]  = (ipp_uchar_t)unixdate->tm_min;
-  date[6]  = (ipp_uchar_t)unixdate->tm_sec;
-  date[7]  = 0;
-  date[8]  = '+';
-  date[9]  = 0;
-  date[10] = 0;
-
-  return (date);
-}
-
-
-/*
- * 'ippValidateAttribute()' - Validate the contents of an attribute.
- *
- * This function validates the contents of an attribute based on the name and
- * value tag.  1 is returned if the attribute is valid, 0 otherwise.  On
- * failure, @link cupsLastErrorString@ is set to a human-readable message.
- *
- * @since CUPS 1.7/macOS 10.9@
- */
-
-int					/* O - 1 if valid, 0 otherwise */
-ippValidateAttribute(
-    ipp_attribute_t *attr)		/* I - Attribute */
-{
-  int		i;			/* Looping var */
-  char		scheme[64],		/* Scheme from URI */
-		userpass[256],		/* Username/password from URI */
-		hostname[256],		/* Hostname from URI */
-		resource[1024];		/* Resource from URI */
-  int		port,			/* Port number from URI */
-		uri_status;		/* URI separation status */
-  const char	*ptr;			/* Pointer into string */
-  ipp_attribute_t *colattr;		/* Collection attribute */
-  regex_t	re;			/* Regular expression */
-  ipp_uchar_t	*date;			/* Current date value */
-  static const char * const uri_status_strings[] =
-  {					/* URI status strings */
-    "URI too large",
-    "Bad arguments to function",
-    "Bad resource in URI",
-    "Bad port number in URI",
-    "Bad hostname/address in URI",
-    "Bad username in URI",
-    "Bad scheme in URI",
-    "Bad/empty URI",
-    "OK",
-    "Missing scheme in URI",
-    "Unknown scheme in URI",
-    "Missing resource in URI"
-  };
-
-
- /*
-  * Skip separators.
-  */
-
-  if (!attr->name)
-    return (1);
-
- /*
-  * Validate the attribute name.
-  */
-
-  for (ptr = attr->name; *ptr; ptr ++)
-    if (!isalnum(*ptr & 255) && *ptr != '-' && *ptr != '.' && *ptr != '_')
-      break;
-
-  if (*ptr || ptr == attr->name)
-  {
-    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-                  _("\"%s\": Bad attribute name - invalid character "
-		    "(RFC 8011 section 5.1.4)."), attr->name);
-    return (0);
-  }
-
-  if ((ptr - attr->name) > 255)
-  {
-    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-                  _("\"%s\": Bad attribute name - bad length %d "
-		    "(RFC 8011 section 5.1.4)."), attr->name,
-		  (int)(ptr - attr->name));
-    return (0);
-  }
-
-  switch (attr->value_tag)
-  {
-    case IPP_TAG_INTEGER :
-        break;
-
-    case IPP_TAG_BOOLEAN :
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  if (attr->values[i].boolean != 0 &&
-	      attr->values[i].boolean != 1)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-                          _("\"%s\": Bad boolen value %d "
-			    "(RFC 8011 section 5.1.21)."), attr->name,
-			  attr->values[i].boolean);
-	    return (0);
-	  }
-	}
-        break;
-
-    case IPP_TAG_ENUM :
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  if (attr->values[i].integer < 1)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad enum value %d - out of range "
-			    "(RFC 8011 section 5.1.5)."), attr->name,
-			    attr->values[i].integer);
-            return (0);
-	  }
-	}
-        break;
-
-    case IPP_TAG_STRING :
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  if (attr->values[i].unknown.length > IPP_MAX_OCTETSTRING)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad octetString value - bad length %d "
-			    "(RFC 8011 section 5.1.20)."), attr->name,
-			    attr->values[i].unknown.length);
-	    return (0);
-	  }
-	}
-        break;
-
-    case IPP_TAG_DATE :
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  date = attr->values[i].date;
-
-          if (date[2] < 1 || date[2] > 12)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad dateTime month %u "
-			    "(RFC 8011 section 5.1.15)."), attr->name, date[2]);
-	    return (0);
-	  }
-
-          if (date[3] < 1 || date[3] > 31)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad dateTime day %u "
-			    "(RFC 8011 section 5.1.15)."), attr->name, date[3]);
-	    return (0);
-	  }
-
-          if (date[4] > 23)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad dateTime hours %u "
-			    "(RFC 8011 section 5.1.15)."), attr->name, date[4]);
-	    return (0);
-	  }
-
-          if (date[5] > 59)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad dateTime minutes %u "
-			    "(RFC 8011 section 5.1.15)."), attr->name, date[5]);
-	    return (0);
-	  }
-
-          if (date[6] > 60)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad dateTime seconds %u "
-			    "(RFC 8011 section 5.1.15)."), attr->name, date[6]);
-	    return (0);
-	  }
-
-          if (date[7] > 9)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad dateTime deciseconds %u "
-			    "(RFC 8011 section 5.1.15)."), attr->name, date[7]);
-	    return (0);
-	  }
-
-          if (date[8] != '-' && date[8] != '+')
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad dateTime UTC sign '%c' "
-			    "(RFC 8011 section 5.1.15)."), attr->name, date[8]);
-	    return (0);
-	  }
-
-          if (date[9] > 11)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad dateTime UTC hours %u "
-			    "(RFC 8011 section 5.1.15)."), attr->name, date[9]);
-	    return (0);
-	  }
-
-          if (date[10] > 59)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad dateTime UTC minutes %u "
-			    "(RFC 8011 section 5.1.15)."), attr->name, date[10]);
-	    return (0);
-	  }
-	}
-        break;
-
-    case IPP_TAG_RESOLUTION :
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  if (attr->values[i].resolution.xres <= 0)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad resolution value %dx%d%s - cross "
-			    "feed resolution must be positive "
-			    "(RFC 8011 section 5.1.16)."), attr->name,
-			  attr->values[i].resolution.xres,
-			  attr->values[i].resolution.yres,
-			  attr->values[i].resolution.units ==
-			      IPP_RES_PER_INCH ? "dpi" :
-			      attr->values[i].resolution.units ==
-				  IPP_RES_PER_CM ? "dpcm" : "unknown");
-	    return (0);
-	  }
-
-	  if (attr->values[i].resolution.yres <= 0)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad resolution value %dx%d%s - feed "
-			    "resolution must be positive "
-			    "(RFC 8011 section 5.1.16)."), attr->name,
-			  attr->values[i].resolution.xres,
-			  attr->values[i].resolution.yres,
-			  attr->values[i].resolution.units ==
-			      IPP_RES_PER_INCH ? "dpi" :
-			      attr->values[i].resolution.units ==
-				  IPP_RES_PER_CM ? "dpcm" : "unknown");
-            return (0);
-	  }
-
-	  if (attr->values[i].resolution.units != IPP_RES_PER_INCH &&
-	      attr->values[i].resolution.units != IPP_RES_PER_CM)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad resolution value %dx%d%s - bad "
-			    "units value (RFC 8011 section 5.1.16)."),
-			  attr->name, attr->values[i].resolution.xres,
-			  attr->values[i].resolution.yres,
-			  attr->values[i].resolution.units ==
-			      IPP_RES_PER_INCH ? "dpi" :
-			      attr->values[i].resolution.units ==
-				  IPP_RES_PER_CM ? "dpcm" : "unknown");
-	    return (0);
-	  }
-	}
-        break;
-
-    case IPP_TAG_RANGE :
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  if (attr->values[i].range.lower > attr->values[i].range.upper)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad rangeOfInteger value %d-%d - lower "
-			    "greater than upper (RFC 8011 section 5.1.14)."),
-			  attr->name, attr->values[i].range.lower,
-			  attr->values[i].range.upper);
-	    return (0);
-	  }
-	}
-        break;
-
-    case IPP_TAG_BEGIN_COLLECTION :
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  for (colattr = attr->values[i].collection->attrs;
-	       colattr;
-	       colattr = colattr->next)
-	  {
-	    if (!ippValidateAttribute(colattr))
-	      return (0);
-	  }
-	}
-        break;
-
-    case IPP_TAG_TEXT :
-    case IPP_TAG_TEXTLANG :
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  for (ptr = attr->values[i].string.text; *ptr; ptr ++)
-	  {
-	    if ((*ptr & 0xe0) == 0xc0)
-	    {
-	      ptr ++;
-	      if ((*ptr & 0xc0) != 0x80)
-	        break;
-	    }
-	    else if ((*ptr & 0xf0) == 0xe0)
-	    {
-	      ptr ++;
-	      if ((*ptr & 0xc0) != 0x80)
-	        break;
-	      ptr ++;
-	      if ((*ptr & 0xc0) != 0x80)
-	        break;
-	    }
-	    else if ((*ptr & 0xf8) == 0xf0)
-	    {
-	      ptr ++;
-	      if ((*ptr & 0xc0) != 0x80)
-	        break;
-	      ptr ++;
-	      if ((*ptr & 0xc0) != 0x80)
-	        break;
-	      ptr ++;
-	      if ((*ptr & 0xc0) != 0x80)
-	        break;
-	    }
-	    else if (*ptr & 0x80)
-	      break;
-	  }
-
-	  if (*ptr)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad text value \"%s\" - bad UTF-8 "
-			    "sequence (RFC 8011 section 5.1.2)."), attr->name,
-			  attr->values[i].string.text);
-	    return (0);
-	  }
-
-	  if ((ptr - attr->values[i].string.text) > (IPP_MAX_TEXT - 1))
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad text value \"%s\" - bad length %d "
-			    "(RFC 8011 section 5.1.2)."), attr->name,
-			  attr->values[i].string.text,
-			  (int)(ptr - attr->values[i].string.text));
-	    return (0);
-	  }
-	}
-        break;
-
-    case IPP_TAG_NAME :
-    case IPP_TAG_NAMELANG :
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  for (ptr = attr->values[i].string.text; *ptr; ptr ++)
-	  {
-	    if ((*ptr & 0xe0) == 0xc0)
-	    {
-	      ptr ++;
-	      if ((*ptr & 0xc0) != 0x80)
-	        break;
-	    }
-	    else if ((*ptr & 0xf0) == 0xe0)
-	    {
-	      ptr ++;
-	      if ((*ptr & 0xc0) != 0x80)
-	        break;
-	      ptr ++;
-	      if ((*ptr & 0xc0) != 0x80)
-	        break;
-	    }
-	    else if ((*ptr & 0xf8) == 0xf0)
-	    {
-	      ptr ++;
-	      if ((*ptr & 0xc0) != 0x80)
-	        break;
-	      ptr ++;
-	      if ((*ptr & 0xc0) != 0x80)
-	        break;
-	      ptr ++;
-	      if ((*ptr & 0xc0) != 0x80)
-	        break;
-	    }
-	    else if (*ptr & 0x80)
-	      break;
-	  }
-
-	  if (*ptr)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad name value \"%s\" - bad UTF-8 "
-			    "sequence (RFC 8011 section 5.1.3)."), attr->name,
-			  attr->values[i].string.text);
-	    return (0);
-	  }
-
-	  if ((ptr - attr->values[i].string.text) > (IPP_MAX_NAME - 1))
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad name value \"%s\" - bad length %d "
-			    "(RFC 8011 section 5.1.3)."), attr->name,
-			  attr->values[i].string.text,
-			  (int)(ptr - attr->values[i].string.text));
-	    return (0);
-	  }
-	}
-        break;
-
-    case IPP_TAG_KEYWORD :
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  for (ptr = attr->values[i].string.text; *ptr; ptr ++)
-	    if (!isalnum(*ptr & 255) && *ptr != '-' && *ptr != '.' &&
-	        *ptr != '_')
-	      break;
-
-	  if (*ptr || ptr == attr->values[i].string.text)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad keyword value \"%s\" - invalid "
-			    "character (RFC 8011 section 5.1.4)."),
-			  attr->name, attr->values[i].string.text);
-	    return (0);
-	  }
-
-	  if ((ptr - attr->values[i].string.text) > (IPP_MAX_KEYWORD - 1))
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad keyword value \"%s\" - bad "
-			    "length %d (RFC 8011 section 5.1.4)."),
-			  attr->name, attr->values[i].string.text,
-			  (int)(ptr - attr->values[i].string.text));
-	    return (0);
-	  }
-	}
-        break;
-
-    case IPP_TAG_URI :
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  uri_status = httpSeparateURI(HTTP_URI_CODING_ALL,
-	                               attr->values[i].string.text,
-				       scheme, sizeof(scheme),
-				       userpass, sizeof(userpass),
-				       hostname, sizeof(hostname),
-				       &port, resource, sizeof(resource));
-
-	  if (uri_status < HTTP_URI_STATUS_OK)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad URI value \"%s\" - %s "
-			    "(RFC 8011 section 5.1.6)."), attr->name,
-			  attr->values[i].string.text,
-			  uri_status_strings[uri_status -
-					     HTTP_URI_STATUS_OVERFLOW]);
-	    return (0);
-	  }
-
-	  if (strlen(attr->values[i].string.text) > (IPP_MAX_URI - 1))
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad URI value \"%s\" - bad length %d "
-			    "(RFC 8011 section 5.1.6)."), attr->name,
-			  attr->values[i].string.text,
-			  (int)strlen(attr->values[i].string.text));
-	  }
-	}
-        break;
-
-    case IPP_TAG_URISCHEME :
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  ptr = attr->values[i].string.text;
-	  if (islower(*ptr & 255))
-	  {
-	    for (ptr ++; *ptr; ptr ++)
-	      if (!islower(*ptr & 255) && !isdigit(*ptr & 255) &&
-	          *ptr != '+' && *ptr != '-' && *ptr != '.')
-                break;
-	  }
-
-	  if (*ptr || ptr == attr->values[i].string.text)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad uriScheme value \"%s\" - bad "
-			    "characters (RFC 8011 section 5.1.7)."),
-			  attr->name, attr->values[i].string.text);
-	    return (0);
-	  }
-
-	  if ((ptr - attr->values[i].string.text) > (IPP_MAX_URISCHEME - 1))
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad uriScheme value \"%s\" - bad "
-			    "length %d (RFC 8011 section 5.1.7)."),
-			  attr->name, attr->values[i].string.text,
-			  (int)(ptr - attr->values[i].string.text));
-	    return (0);
-	  }
-	}
-        break;
-
-    case IPP_TAG_CHARSET :
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  for (ptr = attr->values[i].string.text; *ptr; ptr ++)
-	    if (!isprint(*ptr & 255) || isupper(*ptr & 255) ||
-	        isspace(*ptr & 255))
-	      break;
-
-	  if (*ptr || ptr == attr->values[i].string.text)
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad charset value \"%s\" - bad "
-			    "characters (RFC 8011 section 5.1.8)."),
-			  attr->name, attr->values[i].string.text);
-	    return (0);
-	  }
-
-	  if ((ptr - attr->values[i].string.text) > (IPP_MAX_CHARSET - 1))
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad charset value \"%s\" - bad "
-			    "length %d (RFC 8011 section 5.1.8)."),
-			  attr->name, attr->values[i].string.text,
-			  (int)(ptr - attr->values[i].string.text));
-	    return (0);
-	  }
-	}
-        break;
-
-    case IPP_TAG_LANGUAGE :
-       /*
-        * The following regular expression is derived from the ABNF for
-	* language tags in RFC 4646.  All I can say is that this is the
-	* easiest way to check the values...
-	*/
-
-        if ((i = regcomp(&re,
-			 "^("
-			 "(([a-z]{2,3}(-[a-z][a-z][a-z]){0,3})|[a-z]{4,8})"
-								/* language */
-			 "(-[a-z][a-z][a-z][a-z]){0,1}"		/* script */
-			 "(-([a-z][a-z]|[0-9][0-9][0-9])){0,1}"	/* region */
-			 "(-([a-z]{5,8}|[0-9][0-9][0-9]))*"	/* variant */
-			 "(-[a-wy-z](-[a-z0-9]{2,8})+)*"	/* extension */
-			 "(-x(-[a-z0-9]{1,8})+)*"		/* privateuse */
-			 "|"
-			 "x(-[a-z0-9]{1,8})+"			/* privateuse */
-			 "|"
-			 "[a-z]{1,3}(-[a-z][0-9]{2,8}){1,2}"	/* grandfathered */
-			 ")$",
-			 REG_NOSUB | REG_EXTENDED)) != 0)
-        {
-          char	temp[256];		/* Temporary error string */
-
-          regerror(i, &re, temp, sizeof(temp));
-	  ipp_set_error(IPP_STATUS_ERROR_INTERNAL,
-			_("Unable to compile naturalLanguage regular "
-			  "expression: %s."), temp);
-	  return (0);
-        }
-
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  if (regexec(&re, attr->values[i].string.text, 0, NULL, 0))
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad naturalLanguage value \"%s\" - bad "
-			    "characters (RFC 8011 section 5.1.9)."),
-			  attr->name, attr->values[i].string.text);
-	    regfree(&re);
-	    return (0);
-	  }
-
-	  if (strlen(attr->values[i].string.text) > (IPP_MAX_LANGUAGE - 1))
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad naturalLanguage value \"%s\" - bad "
-			    "length %d (RFC 8011 section 5.1.9)."),
-			  attr->name, attr->values[i].string.text,
-			  (int)strlen(attr->values[i].string.text));
-	    regfree(&re);
-	    return (0);
-	  }
-	}
-
-	regfree(&re);
-        break;
-
-    case IPP_TAG_MIMETYPE :
-       /*
-        * The following regular expression is derived from the ABNF for
-	* MIME media types in RFC 2045 and 4288.  All I can say is that this is
-	* the easiest way to check the values...
-	*/
-
-        if ((i = regcomp(&re,
-			 "^"
-			 "[-a-zA-Z0-9!#$&.+^_]{1,127}"		/* type-name */
-			 "/"
-			 "[-a-zA-Z0-9!#$&.+^_]{1,127}"		/* subtype-name */
-			 "(;[-a-zA-Z0-9!#$&.+^_]{1,127}="	/* parameter= */
-			 "([-a-zA-Z0-9!#$&.+^_]{1,127}|\"[^\"]*\"))*"
-			 					/* value */
-			 "$",
-			 REG_NOSUB | REG_EXTENDED)) != 0)
-        {
-          char	temp[256];		/* Temporary error string */
-
-          regerror(i, &re, temp, sizeof(temp));
-	  ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			_("Unable to compile mimeMediaType regular "
-			  "expression: %s."), temp);
-	  return (0);
-        }
-
-        for (i = 0; i < attr->num_values; i ++)
-	{
-	  if (regexec(&re, attr->values[i].string.text, 0, NULL, 0))
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad mimeMediaType value \"%s\" - bad "
-			    "characters (RFC 8011 section 5.1.10)."),
-			  attr->name, attr->values[i].string.text);
-	    regfree(&re);
-	    return (0);
-	  }
-
-	  if (strlen(attr->values[i].string.text) > (IPP_MAX_MIMETYPE - 1))
-	  {
-	    ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
-			  _("\"%s\": Bad mimeMediaType value \"%s\" - bad "
-			    "length %d (RFC 8011 section 5.1.10)."),
-			  attr->name, attr->values[i].string.text,
-			  (int)strlen(attr->values[i].string.text));
-	    regfree(&re);
-	    return (0);
-	  }
-	}
-
-	regfree(&re);
-        break;
-
-    default :
-        break;
-  }
-
-  return (1);
-}
-
-
-/*
- * 'ippValidateAttributes()' - Validate all attributes in an IPP message.
- *
- * This function validates the contents of the IPP message, including each
- * attribute.  Like @link ippValidateAttribute@, @link cupsLastErrorString@ is
- * set to a human-readable message on failure.
- *
- * @since CUPS 1.7/macOS 10.9@
- */
-
-int					/* O - 1 if valid, 0 otherwise */
-ippValidateAttributes(ipp_t *ipp)	/* I - IPP message */
-{
-  ipp_attribute_t	*attr;		/* Current attribute */
-
-
-  if (!ipp)
-    return (1);
-
-  for (attr = ipp->attrs; attr; attr = attr->next)
-    if (!ippValidateAttribute(attr))
-      return (0);
-
-  return (1);
-}
-
-
-/*
- * 'ippWrite()' - Write data for an IPP message to a HTTP connection.
- */
-
-ipp_state_t				/* O - Current state */
-ippWrite(http_t *http,			/* I - HTTP connection */
-         ipp_t  *ipp)			/* I - IPP data */
-{
-  DEBUG_printf(("ippWrite(http=%p, ipp=%p)", (void *)http, (void *)ipp));
-
-  if (!http)
-    return (IPP_STATE_ERROR);
-
-  return (ippWriteIO(http, (ipp_iocb_t)httpWrite2, http->blocking, NULL, ipp));
-}
-
-
-/*
- * 'ippWriteFile()' - Write data for an IPP message to a file.
- *
- * @since CUPS 1.1.19/macOS 10.3@
- */
-
-ipp_state_t				/* O - Current state */
-ippWriteFile(int   fd,			/* I - HTTP data */
-             ipp_t *ipp)		/* I - IPP data */
-{
-  DEBUG_printf(("ippWriteFile(fd=%d, ipp=%p)", fd, (void *)ipp));
-
-  ipp->state = IPP_STATE_IDLE;
-
-  return (ippWriteIO(&fd, (ipp_iocb_t)ipp_write_file, 1, NULL, ipp));
-}
-
-
-/*
- * 'ippWriteIO()' - Write data for an IPP message.
- *
- * @since CUPS 1.2/macOS 10.5@
- */
-
-ipp_state_t				/* O - Current state */
-ippWriteIO(void       *dst,		/* I - Destination */
-           ipp_iocb_t cb,		/* I - Write callback function */
-	   int        blocking,		/* I - Use blocking IO? */
-	   ipp_t      *parent,		/* I - Parent IPP message */
-           ipp_t      *ipp)		/* I - IPP data */
-{
-  int			i;		/* Looping var */
-  int			n;		/* Length of data */
-  unsigned char		*buffer,	/* Data buffer */
-			*bufptr;	/* Pointer into buffer */
-  ipp_attribute_t	*attr;		/* Current attribute */
-  _ipp_value_t		*value;		/* Current value */
-
-
-  DEBUG_printf(("ippWriteIO(dst=%p, cb=%p, blocking=%d, parent=%p, ipp=%p)", (void *)dst, (void *)cb, blocking, (void *)parent, (void *)ipp));
-
-  if (!dst || !ipp)
-    return (IPP_STATE_ERROR);
-
-  if ((buffer = (unsigned char *)_cupsBufferGet(IPP_BUF_SIZE)) == NULL)
-  {
-    DEBUG_puts("1ippWriteIO: Unable to get write buffer");
-    return (IPP_STATE_ERROR);
-  }
-
-  switch (ipp->state)
-  {
-    case IPP_STATE_IDLE :
-        ipp->state ++; /* Avoid common problem... */
-
-    case IPP_STATE_HEADER :
-        if (parent == NULL)
-	{
-	 /*
-	  * Send the request header:
-	  *
-	  *                 Version = 2 bytes
-	  *   Operation/Status Code = 2 bytes
-	  *              Request ID = 4 bytes
-	  *                   Total = 8 bytes
-	  */
-
-          bufptr = buffer;
-
-	  *bufptr++ = ipp->request.any.version[0];
-	  *bufptr++ = ipp->request.any.version[1];
-	  *bufptr++ = (ipp_uchar_t)(ipp->request.any.op_status >> 8);
-	  *bufptr++ = (ipp_uchar_t)ipp->request.any.op_status;
-	  *bufptr++ = (ipp_uchar_t)(ipp->request.any.request_id >> 24);
-	  *bufptr++ = (ipp_uchar_t)(ipp->request.any.request_id >> 16);
-	  *bufptr++ = (ipp_uchar_t)(ipp->request.any.request_id >> 8);
-	  *bufptr++ = (ipp_uchar_t)ipp->request.any.request_id;
-
-	  DEBUG_printf(("2ippWriteIO: version=%d.%d", buffer[0], buffer[1]));
-	  DEBUG_printf(("2ippWriteIO: op_status=%04x",
-			ipp->request.any.op_status));
-	  DEBUG_printf(("2ippWriteIO: request_id=%d",
-			ipp->request.any.request_id));
-
-          if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	  {
-	    DEBUG_puts("1ippWriteIO: Could not write IPP header...");
-	    _cupsBufferRelease((char *)buffer);
-	    return (IPP_STATE_ERROR);
-	  }
-	}
-
-       /*
-	* Reset the state engine to point to the first attribute
-	* in the request/response, with no current group.
-	*/
-
-        ipp->state   = IPP_STATE_ATTRIBUTE;
-	ipp->current = ipp->attrs;
-	ipp->curtag  = IPP_TAG_ZERO;
-
-	DEBUG_printf(("1ippWriteIO: ipp->current=%p", (void *)ipp->current));
-
-       /*
-        * If blocking is disabled, stop here...
-	*/
-
-        if (!blocking)
-	  break;
-
-    case IPP_STATE_ATTRIBUTE :
-        while (ipp->current != NULL)
-	{
-	 /*
-	  * Write this attribute...
-	  */
-
-	  bufptr = buffer;
-	  attr   = ipp->current;
-
-	  ipp->current = ipp->current->next;
-
-          if (!parent)
-	  {
-	    if (ipp->curtag != attr->group_tag)
-	    {
-	     /*
-	      * Send a group tag byte...
-	      */
-
-	      ipp->curtag = attr->group_tag;
-
-	      if (attr->group_tag == IPP_TAG_ZERO)
-		continue;
-
-	      DEBUG_printf(("2ippWriteIO: wrote group tag=%x(%s)",
-			    attr->group_tag, ippTagString(attr->group_tag)));
-	      *bufptr++ = (ipp_uchar_t)attr->group_tag;
-	    }
-	    else if (attr->group_tag == IPP_TAG_ZERO)
-	      continue;
-	  }
-
-	  DEBUG_printf(("1ippWriteIO: %s (%s%s)", attr->name,
-	                attr->num_values > 1 ? "1setOf " : "",
-			ippTagString(attr->value_tag)));
-
-         /*
-	  * Write the attribute tag and name.
-	  *
-	  * The attribute name length does not include the trailing nul
-	  * character in the source string.
-	  *
-	  * Collection values (parent != NULL) are written differently...
-	  */
-
-          if (parent == NULL)
-	  {
-           /*
-	    * Get the length of the attribute name, and make sure it won't
-	    * overflow the buffer...
-	    */
-
-            if ((n = (int)strlen(attr->name)) > (IPP_BUF_SIZE - 8))
-	    {
-	      DEBUG_printf(("1ippWriteIO: Attribute name too long (%d)", n));
-	      _cupsBufferRelease((char *)buffer);
-	      return (IPP_STATE_ERROR);
-	    }
-
-           /*
-	    * Write the value tag, name length, and name string...
-	    */
-
-            DEBUG_printf(("2ippWriteIO: writing value tag=%x(%s)",
-	                  attr->value_tag, ippTagString(attr->value_tag)));
-            DEBUG_printf(("2ippWriteIO: writing name=%d,\"%s\"", n,
-	                  attr->name));
-
-            if (attr->value_tag > 0xff)
-            {
-              *bufptr++ = IPP_TAG_EXTENSION;
-	      *bufptr++ = (ipp_uchar_t)(attr->value_tag >> 24);
-	      *bufptr++ = (ipp_uchar_t)(attr->value_tag >> 16);
-	      *bufptr++ = (ipp_uchar_t)(attr->value_tag >> 8);
-	      *bufptr++ = (ipp_uchar_t)attr->value_tag;
-            }
-            else
-	      *bufptr++ = (ipp_uchar_t)attr->value_tag;
-
-	    *bufptr++ = (ipp_uchar_t)(n >> 8);
-	    *bufptr++ = (ipp_uchar_t)n;
-	    memcpy(bufptr, attr->name, (size_t)n);
-	    bufptr += n;
-          }
-	  else
-	  {
-           /*
-	    * Get the length of the attribute name, and make sure it won't
-	    * overflow the buffer...
-	    */
-
-            if ((n = (int)strlen(attr->name)) > (IPP_BUF_SIZE - 12))
-	    {
-	      DEBUG_printf(("1ippWriteIO: Attribute name too long (%d)", n));
-	      _cupsBufferRelease((char *)buffer);
-	      return (IPP_STATE_ERROR);
-	    }
-
-           /*
-	    * Write the member name tag, name length, name string, value tag,
-	    * and empty name for the collection member attribute...
-	    */
-
-            DEBUG_printf(("2ippWriteIO: writing value tag=%x(memberName)",
-	                  IPP_TAG_MEMBERNAME));
-            DEBUG_printf(("2ippWriteIO: writing name=%d,\"%s\"", n,
-	                  attr->name));
-            DEBUG_printf(("2ippWriteIO: writing value tag=%x(%s)",
-	                  attr->value_tag, ippTagString(attr->value_tag)));
-            DEBUG_puts("2ippWriteIO: writing name=0,\"\"");
-
-            *bufptr++ = IPP_TAG_MEMBERNAME;
-	    *bufptr++ = 0;
-	    *bufptr++ = 0;
-	    *bufptr++ = (ipp_uchar_t)(n >> 8);
-	    *bufptr++ = (ipp_uchar_t)n;
-	    memcpy(bufptr, attr->name, (size_t)n);
-	    bufptr += n;
-
-            if (attr->value_tag > 0xff)
-            {
-              *bufptr++ = IPP_TAG_EXTENSION;
-	      *bufptr++ = (ipp_uchar_t)(attr->value_tag >> 24);
-	      *bufptr++ = (ipp_uchar_t)(attr->value_tag >> 16);
-	      *bufptr++ = (ipp_uchar_t)(attr->value_tag >> 8);
-	      *bufptr++ = (ipp_uchar_t)attr->value_tag;
-            }
-            else
-	      *bufptr++ = (ipp_uchar_t)attr->value_tag;
-
-            *bufptr++ = 0;
-            *bufptr++ = 0;
-	  }
-
-         /*
-	  * Now write the attribute value(s)...
-	  */
-
-	  switch (attr->value_tag & ~IPP_TAG_CUPS_CONST)
-	  {
-	    case IPP_TAG_UNSUPPORTED_VALUE :
-	    case IPP_TAG_DEFAULT :
-	    case IPP_TAG_UNKNOWN :
-	    case IPP_TAG_NOVALUE :
-	    case IPP_TAG_NOTSETTABLE :
-	    case IPP_TAG_DELETEATTR :
-	    case IPP_TAG_ADMINDEFINE :
-		*bufptr++ = 0;
-		*bufptr++ = 0;
-	        break;
-
-	    case IPP_TAG_INTEGER :
-	    case IPP_TAG_ENUM :
-	        for (i = 0, value = attr->values;
-		     i < attr->num_values;
-		     i ++, value ++)
-		{
-                  if ((IPP_BUF_SIZE - (bufptr - buffer)) < 9)
-		  {
-                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	            {
-	              DEBUG_puts("1ippWriteIO: Could not write IPP "
-		                 "attribute...");
-		      _cupsBufferRelease((char *)buffer);
-	              return (IPP_STATE_ERROR);
-	            }
-
-		    bufptr = buffer;
-		  }
-
-		  if (i)
-		  {
-		   /*
-		    * Arrays and sets are done by sending additional
-		    * values with a zero-length name...
-		    */
-
-                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
-		    *bufptr++ = 0;
-		    *bufptr++ = 0;
-		  }
-
-		 /*
-	          * Integers and enumerations are both 4-byte signed
-		  * (twos-complement) values.
-		  *
-		  * Put the 2-byte length and 4-byte value into the buffer...
-		  */
-
-	          *bufptr++ = 0;
-		  *bufptr++ = 4;
-		  *bufptr++ = (ipp_uchar_t)(value->integer >> 24);
-		  *bufptr++ = (ipp_uchar_t)(value->integer >> 16);
-		  *bufptr++ = (ipp_uchar_t)(value->integer >> 8);
-		  *bufptr++ = (ipp_uchar_t)value->integer;
-		}
-		break;
-
-	    case IPP_TAG_BOOLEAN :
-	        for (i = 0, value = attr->values;
-		     i < attr->num_values;
-		     i ++, value ++)
-		{
-                  if ((IPP_BUF_SIZE - (bufptr - buffer)) < 6)
-		  {
-                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	            {
-	              DEBUG_puts("1ippWriteIO: Could not write IPP "
-		                 "attribute...");
-		      _cupsBufferRelease((char *)buffer);
-	              return (IPP_STATE_ERROR);
-	            }
-
-		    bufptr = buffer;
-		  }
-
-		  if (i)
-		  {
-		   /*
-		    * Arrays and sets are done by sending additional
-		    * values with a zero-length name...
-		    */
-
-                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
-		    *bufptr++ = 0;
-		    *bufptr++ = 0;
-		  }
-
-                 /*
-		  * Boolean values are 1-byte; 0 = false, 1 = true.
-		  *
-		  * Put the 2-byte length and 1-byte value into the buffer...
-		  */
-
-	          *bufptr++ = 0;
-		  *bufptr++ = 1;
-		  *bufptr++ = (ipp_uchar_t)value->boolean;
-		}
-		break;
-
-	    case IPP_TAG_TEXT :
-	    case IPP_TAG_NAME :
-	    case IPP_TAG_KEYWORD :
-	    case IPP_TAG_URI :
-	    case IPP_TAG_URISCHEME :
-	    case IPP_TAG_CHARSET :
-	    case IPP_TAG_LANGUAGE :
-	    case IPP_TAG_MIMETYPE :
-	        for (i = 0, value = attr->values;
-		     i < attr->num_values;
-		     i ++, value ++)
-		{
-		  if (i)
-		  {
-		   /*
-		    * Arrays and sets are done by sending additional
-		    * values with a zero-length name...
-		    */
-
-        	    DEBUG_printf(("2ippWriteIO: writing value tag=%x(%s)",
-		                  attr->value_tag,
-				  ippTagString(attr->value_tag)));
-        	    DEBUG_printf(("2ippWriteIO: writing name=0,\"\""));
-
-                    if ((IPP_BUF_SIZE - (bufptr - buffer)) < 3)
-		    {
-                      if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	              {
-	        	DEBUG_puts("1ippWriteIO: Could not write IPP "
-			           "attribute...");
-			_cupsBufferRelease((char *)buffer);
-	        	return (IPP_STATE_ERROR);
-	              }
-
-		      bufptr = buffer;
-		    }
-
-                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
-		    *bufptr++ = 0;
-		    *bufptr++ = 0;
-		  }
-
-                  if (value->string.text != NULL)
-                    n = (int)strlen(value->string.text);
-		  else
-		    n = 0;
-
-                  if (n > (IPP_BUF_SIZE - 2))
-		  {
-		    DEBUG_printf(("1ippWriteIO: String too long (%d)", n));
-		    _cupsBufferRelease((char *)buffer);
-		    return (IPP_STATE_ERROR);
-		  }
-
-                  DEBUG_printf(("2ippWriteIO: writing string=%d,\"%s\"", n,
-		                value->string.text));
-
-                  if ((int)(IPP_BUF_SIZE - (bufptr - buffer)) < (n + 2))
-		  {
-                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	            {
-	              DEBUG_puts("1ippWriteIO: Could not write IPP "
-		                 "attribute...");
-		      _cupsBufferRelease((char *)buffer);
-	              return (IPP_STATE_ERROR);
-	            }
-
-		    bufptr = buffer;
-		  }
-
-		 /*
-		  * All simple strings consist of the 2-byte length and
-		  * character data without the trailing nul normally found
-		  * in C strings.  Also, strings cannot be longer than IPP_MAX_LENGTH
-		  * bytes since the 2-byte length is a signed (twos-complement)
-		  * value.
-		  *
-		  * Put the 2-byte length and string characters in the buffer.
-		  */
-
-	          *bufptr++ = (ipp_uchar_t)(n >> 8);
-		  *bufptr++ = (ipp_uchar_t)n;
-
-		  if (n > 0)
-		  {
-		    memcpy(bufptr, value->string.text, (size_t)n);
-		    bufptr += n;
-		  }
-		}
-		break;
-
-	    case IPP_TAG_DATE :
-	        for (i = 0, value = attr->values;
-		     i < attr->num_values;
-		     i ++, value ++)
-		{
-                  if ((IPP_BUF_SIZE - (bufptr - buffer)) < 16)
-		  {
-                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	            {
-	              DEBUG_puts("1ippWriteIO: Could not write IPP "
-		                 "attribute...");
-		      _cupsBufferRelease((char *)buffer);
-	              return (IPP_STATE_ERROR);
-	            }
-
-		    bufptr = buffer;
-		  }
-
-		  if (i)
-		  {
-		   /*
-		    * Arrays and sets are done by sending additional
-		    * values with a zero-length name...
-		    */
-
-                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
-		    *bufptr++ = 0;
-		    *bufptr++ = 0;
-		  }
-
-                 /*
-		  * Date values consist of a 2-byte length and an
-		  * 11-byte date/time structure defined by RFC 1903.
-		  *
-		  * Put the 2-byte length and 11-byte date/time
-		  * structure in the buffer.
-		  */
-
-	          *bufptr++ = 0;
-		  *bufptr++ = 11;
-		  memcpy(bufptr, value->date, 11);
-		  bufptr += 11;
-		}
-		break;
-
-	    case IPP_TAG_RESOLUTION :
-	        for (i = 0, value = attr->values;
-		     i < attr->num_values;
-		     i ++, value ++)
-		{
-                  if ((IPP_BUF_SIZE - (bufptr - buffer)) < 14)
-		  {
-                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	            {
-	              DEBUG_puts("1ippWriteIO: Could not write IPP "
-		                 "attribute...");
-		      _cupsBufferRelease((char *)buffer);
-		      return (IPP_STATE_ERROR);
-	            }
-
-		    bufptr = buffer;
-		  }
-
-		  if (i)
-		  {
-		   /*
-		    * Arrays and sets are done by sending additional
-		    * values with a zero-length name...
-		    */
-
-                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
-		    *bufptr++ = 0;
-		    *bufptr++ = 0;
-		  }
-
-                 /*
-		  * Resolution values consist of a 2-byte length,
-		  * 4-byte horizontal resolution value, 4-byte vertical
-		  * resolution value, and a 1-byte units value.
-		  *
-		  * Put the 2-byte length and resolution value data
-		  * into the buffer.
-		  */
-
-	          *bufptr++ = 0;
-		  *bufptr++ = 9;
-		  *bufptr++ = (ipp_uchar_t)(value->resolution.xres >> 24);
-		  *bufptr++ = (ipp_uchar_t)(value->resolution.xres >> 16);
-		  *bufptr++ = (ipp_uchar_t)(value->resolution.xres >> 8);
-		  *bufptr++ = (ipp_uchar_t)value->resolution.xres;
-		  *bufptr++ = (ipp_uchar_t)(value->resolution.yres >> 24);
-		  *bufptr++ = (ipp_uchar_t)(value->resolution.yres >> 16);
-		  *bufptr++ = (ipp_uchar_t)(value->resolution.yres >> 8);
-		  *bufptr++ = (ipp_uchar_t)value->resolution.yres;
-		  *bufptr++ = (ipp_uchar_t)value->resolution.units;
-		}
-		break;
-
-	    case IPP_TAG_RANGE :
-	        for (i = 0, value = attr->values;
-		     i < attr->num_values;
-		     i ++, value ++)
-		{
-                  if ((IPP_BUF_SIZE - (bufptr - buffer)) < 13)
-		  {
-                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	            {
-	              DEBUG_puts("1ippWriteIO: Could not write IPP "
-		                 "attribute...");
-		      _cupsBufferRelease((char *)buffer);
-	              return (IPP_STATE_ERROR);
-	            }
-
-		    bufptr = buffer;
-		  }
-
-		  if (i)
-		  {
-		   /*
-		    * Arrays and sets are done by sending additional
-		    * values with a zero-length name...
-		    */
-
-                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
-		    *bufptr++ = 0;
-		    *bufptr++ = 0;
-		  }
-
-                 /*
-		  * Range values consist of a 2-byte length,
-		  * 4-byte lower value, and 4-byte upper value.
-		  *
-		  * Put the 2-byte length and range value data
-		  * into the buffer.
-		  */
-
-	          *bufptr++ = 0;
-		  *bufptr++ = 8;
-		  *bufptr++ = (ipp_uchar_t)(value->range.lower >> 24);
-		  *bufptr++ = (ipp_uchar_t)(value->range.lower >> 16);
-		  *bufptr++ = (ipp_uchar_t)(value->range.lower >> 8);
-		  *bufptr++ = (ipp_uchar_t)value->range.lower;
-		  *bufptr++ = (ipp_uchar_t)(value->range.upper >> 24);
-		  *bufptr++ = (ipp_uchar_t)(value->range.upper >> 16);
-		  *bufptr++ = (ipp_uchar_t)(value->range.upper >> 8);
-		  *bufptr++ = (ipp_uchar_t)value->range.upper;
-		}
-		break;
-
-	    case IPP_TAG_TEXTLANG :
-	    case IPP_TAG_NAMELANG :
-	        for (i = 0, value = attr->values;
-		     i < attr->num_values;
-		     i ++, value ++)
-		{
-		  if (i)
-		  {
-		   /*
-		    * Arrays and sets are done by sending additional
-		    * values with a zero-length name...
-		    */
-
-                    if ((IPP_BUF_SIZE - (bufptr - buffer)) < 3)
-		    {
-                      if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	              {
-	        	DEBUG_puts("1ippWriteIO: Could not write IPP "
-		                   "attribute...");
-			_cupsBufferRelease((char *)buffer);
-	        	return (IPP_STATE_ERROR);
-	              }
-
-		      bufptr = buffer;
-		    }
-
-                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
-		    *bufptr++ = 0;
-		    *bufptr++ = 0;
-		  }
-
-                 /*
-		  * textWithLanguage and nameWithLanguage values consist
-		  * of a 2-byte length for both strings and their
-		  * individual lengths, a 2-byte length for the
-		  * character string, the character string without the
-		  * trailing nul, a 2-byte length for the character
-		  * set string, and the character set string without
-		  * the trailing nul.
-		  */
-
-                  n = 4;
-
-		  if (value->string.language != NULL)
-                    n += (int)strlen(value->string.language);
-
-		  if (value->string.text != NULL)
-                    n += (int)strlen(value->string.text);
-
-                  if (n > (IPP_BUF_SIZE - 2))
-		  {
-		    DEBUG_printf(("1ippWriteIO: text/nameWithLanguage value "
-		                  "too long (%d)", n));
-		    _cupsBufferRelease((char *)buffer);
-		    return (IPP_STATE_ERROR);
-                  }
-
-                  if ((int)(IPP_BUF_SIZE - (bufptr - buffer)) < (n + 2))
-		  {
-                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	            {
-	              DEBUG_puts("1ippWriteIO: Could not write IPP "
-		                 "attribute...");
-		      _cupsBufferRelease((char *)buffer);
-	              return (IPP_STATE_ERROR);
-	            }
-
-		    bufptr = buffer;
-		  }
-
-                 /* Length of entire value */
-	          *bufptr++ = (ipp_uchar_t)(n >> 8);
-		  *bufptr++ = (ipp_uchar_t)n;
-
-                 /* Length of language */
-		  if (value->string.language != NULL)
-		    n = (int)strlen(value->string.language);
-		  else
-		    n = 0;
-
-	          *bufptr++ = (ipp_uchar_t)(n >> 8);
-		  *bufptr++ = (ipp_uchar_t)n;
-
-                 /* Language */
-		  if (n > 0)
-		  {
-		    memcpy(bufptr, value->string.language, (size_t)n);
-		    bufptr += n;
-		  }
-
-                 /* Length of text */
-                  if (value->string.text != NULL)
-		    n = (int)strlen(value->string.text);
-		  else
-		    n = 0;
-
-	          *bufptr++ = (ipp_uchar_t)(n >> 8);
-		  *bufptr++ = (ipp_uchar_t)n;
-
-                 /* Text */
-		  if (n > 0)
-		  {
-		    memcpy(bufptr, value->string.text, (size_t)n);
-		    bufptr += n;
-		  }
-		}
-		break;
-
-            case IPP_TAG_BEGIN_COLLECTION :
-	        for (i = 0, value = attr->values;
-		     i < attr->num_values;
-		     i ++, value ++)
-		{
-		 /*
-		  * Collections are written with the begin-collection
-		  * tag first with a value of 0 length, followed by the
-		  * attributes in the collection, then the end-collection
-		  * value...
-		  */
-
-                  if ((IPP_BUF_SIZE - (bufptr - buffer)) < 5)
-		  {
-                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	            {
-	              DEBUG_puts("1ippWriteIO: Could not write IPP "
-		                 "attribute...");
-		      _cupsBufferRelease((char *)buffer);
-	              return (IPP_STATE_ERROR);
-	            }
-
-		    bufptr = buffer;
-		  }
-
-		  if (i)
-		  {
-		   /*
-		    * Arrays and sets are done by sending additional
-		    * values with a zero-length name...
-		    */
-
-                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
-		    *bufptr++ = 0;
-		    *bufptr++ = 0;
-		  }
-
-                 /*
-		  * Write a data length of 0 and flush the buffer...
-		  */
-
-	          *bufptr++ = 0;
-		  *bufptr++ = 0;
-
-                  if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	          {
-	            DEBUG_puts("1ippWriteIO: Could not write IPP "
-		               "attribute...");
-		    _cupsBufferRelease((char *)buffer);
-	            return (IPP_STATE_ERROR);
-	          }
-
-		  bufptr = buffer;
-
-                 /*
-		  * Then write the collection attribute...
-		  */
-
-                  value->collection->state = IPP_STATE_IDLE;
-
-		  if (ippWriteIO(dst, cb, 1, ipp,
-		                 value->collection) == IPP_STATE_ERROR)
-		  {
-		    DEBUG_puts("1ippWriteIO: Unable to write collection value");
-		    _cupsBufferRelease((char *)buffer);
-		    return (IPP_STATE_ERROR);
-		  }
-		}
-		break;
-
-            default :
-	        for (i = 0, value = attr->values;
-		     i < attr->num_values;
-		     i ++, value ++)
-		{
-		  if (i)
-		  {
-		   /*
-		    * Arrays and sets are done by sending additional
-		    * values with a zero-length name...
-		    */
-
-                    if ((IPP_BUF_SIZE - (bufptr - buffer)) < 3)
-		    {
-                      if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	              {
-	        	DEBUG_puts("1ippWriteIO: Could not write IPP "
-		                   "attribute...");
-			_cupsBufferRelease((char *)buffer);
-	        	return (IPP_STATE_ERROR);
-	              }
-
-		      bufptr = buffer;
-		    }
-
-                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
-		    *bufptr++ = 0;
-		    *bufptr++ = 0;
-		  }
-
-                 /*
-		  * An unknown value might some new value that a
-		  * vendor has come up with. It consists of a
-		  * 2-byte length and the bytes in the unknown
-		  * value buffer.
-		  */
-
-                  n = value->unknown.length;
-
-                  if (n > (IPP_BUF_SIZE - 2))
-		  {
-		    DEBUG_printf(("1ippWriteIO: Data length too long (%d)",
-		                  n));
-		    _cupsBufferRelease((char *)buffer);
-		    return (IPP_STATE_ERROR);
-		  }
-
-                  if ((int)(IPP_BUF_SIZE - (bufptr - buffer)) < (n + 2))
-		  {
-                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	            {
-	              DEBUG_puts("1ippWriteIO: Could not write IPP "
-		                 "attribute...");
-		      _cupsBufferRelease((char *)buffer);
-	              return (IPP_STATE_ERROR);
-	            }
-
-		    bufptr = buffer;
-		  }
-
-                 /* Length of unknown value */
-	          *bufptr++ = (ipp_uchar_t)(n >> 8);
-		  *bufptr++ = (ipp_uchar_t)n;
-
-                 /* Value */
-		  if (n > 0)
-		  {
-		    memcpy(bufptr, value->unknown.data, (size_t)n);
-		    bufptr += n;
-		  }
-		}
-		break;
-	  }
-
-         /*
-	  * Write the data out...
-	  */
-
-	  if (bufptr > buffer)
-	  {
-	    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
-	    {
-	      DEBUG_puts("1ippWriteIO: Could not write IPP attribute...");
-	      _cupsBufferRelease((char *)buffer);
-	      return (IPP_STATE_ERROR);
-	    }
-
-	    DEBUG_printf(("2ippWriteIO: wrote %d bytes",
-			  (int)(bufptr - buffer)));
-	  }
-
-	 /*
-          * If blocking is disabled and we aren't at the end of the attribute
-          * list, stop here...
-	  */
-
-          if (!blocking && ipp->current)
-	    break;
-	}
-
-	if (ipp->current == NULL)
-	{
-         /*
-	  * Done with all of the attributes; add the end-of-attributes
-	  * tag or end-collection attribute...
-	  */
-
-          if (parent == NULL)
-	  {
-            buffer[0] = IPP_TAG_END;
-	    n         = 1;
-	  }
-	  else
-	  {
-            buffer[0] = IPP_TAG_END_COLLECTION;
-	    buffer[1] = 0; /* empty name */
-	    buffer[2] = 0;
-	    buffer[3] = 0; /* empty value */
-	    buffer[4] = 0;
-	    n         = 5;
-	  }
-
-	  if ((*cb)(dst, buffer, (size_t)n) < 0)
-	  {
-	    DEBUG_puts("1ippWriteIO: Could not write IPP end-tag...");
-	    _cupsBufferRelease((char *)buffer);
-	    return (IPP_STATE_ERROR);
-	  }
-
-	  ipp->state = IPP_STATE_DATA;
-	}
-        break;
-
-    case IPP_STATE_DATA :
-        break;
-
-    default :
-        break; /* anti-compiler-warning-code */
-  }
-
-  _cupsBufferRelease((char *)buffer);
-
-  return (ipp->state);
-}
-
-
-/*
- * 'ipp_add_attr()' - Add a new attribute to the message.
- */
-
-static ipp_attribute_t *		/* O - New attribute */
-ipp_add_attr(ipp_t      *ipp,		/* I - IPP message */
-             const char *name,		/* I - Attribute name or NULL */
-             ipp_tag_t  group_tag,	/* I - Group tag or IPP_TAG_ZERO */
-             ipp_tag_t  value_tag,	/* I - Value tag or IPP_TAG_ZERO */
-             int        num_values)	/* I - Number of values */
-{
-  int			alloc_values;	/* Number of values to allocate */
-  ipp_attribute_t	*attr;		/* New attribute */
-
-
-  DEBUG_printf(("4ipp_add_attr(ipp=%p, name=\"%s\", group_tag=0x%x, value_tag=0x%x, num_values=%d)", (void *)ipp, name, group_tag, value_tag, num_values));
-
- /*
-  * Range check input...
-  */
-
-  if (!ipp || num_values < 0)
-    return (NULL);
-
- /*
-  * Allocate memory, rounding the allocation up as needed...
-  */
-
-  if (num_values <= 1)
-    alloc_values = 1;
-  else
-    alloc_values = (num_values + IPP_MAX_VALUES - 1) & ~(IPP_MAX_VALUES - 1);
-
-  attr = calloc(sizeof(ipp_attribute_t) +
-                (size_t)(alloc_values - 1) * sizeof(_ipp_value_t), 1);
-
-  if (attr)
-  {
-   /*
-    * Initialize attribute...
-    */
-
-    DEBUG_printf(("4debug_alloc: %p %s %s%s (%d values)", (void *)attr, name, num_values > 1 ? "1setOf " : "", ippTagString(value_tag), num_values));
-
-    if (name)
-      attr->name = _cupsStrAlloc(name);
-
-    attr->group_tag  = group_tag;
-    attr->value_tag  = value_tag;
-    attr->num_values = num_values;
-
-   /*
-    * Add it to the end of the linked list...
-    */
-
-    if (ipp->last)
-      ipp->last->next = attr;
-    else
-      ipp->attrs = attr;
-
-    ipp->prev = ipp->last;
-    ipp->last = ipp->current = attr;
-  }
-
-  DEBUG_printf(("5ipp_add_attr: Returning %p", (void *)attr));
-
-  return (attr);
-}
-
-
-/*
- * 'ipp_free_values()' - Free attribute values.
- */
-
-static void
-ipp_free_values(ipp_attribute_t *attr,	/* I - Attribute to free values from */
-                int             element,/* I - First value to free */
-                int             count)	/* I - Number of values to free */
-{
-  int		i;			/* Looping var */
-  _ipp_value_t	*value;			/* Current value */
-
-
-  DEBUG_printf(("4ipp_free_values(attr=%p, element=%d, count=%d)", (void *)attr, element, count));
-
-  if (!(attr->value_tag & IPP_TAG_CUPS_CONST))
-  {
-   /*
-    * Free values as needed...
-    */
-
-    switch (attr->value_tag)
-    {
-      case IPP_TAG_TEXTLANG :
-      case IPP_TAG_NAMELANG :
-	  if (element == 0 && count == attr->num_values &&
-	      attr->values[0].string.language)
-	  {
-	    _cupsStrFree(attr->values[0].string.language);
-	    attr->values[0].string.language = NULL;
-	  }
-	  /* Fall through to other string values */
-
-      case IPP_TAG_TEXT :
-      case IPP_TAG_NAME :
-      case IPP_TAG_RESERVED_STRING :
-      case IPP_TAG_KEYWORD :
-      case IPP_TAG_URI :
-      case IPP_TAG_URISCHEME :
-      case IPP_TAG_CHARSET :
-      case IPP_TAG_LANGUAGE :
-      case IPP_TAG_MIMETYPE :
-	  for (i = count, value = attr->values + element;
-	       i > 0;
-	       i --, value ++)
-	  {
-	    _cupsStrFree(value->string.text);
-	    value->string.text = NULL;
-	  }
-	  break;
-
-      case IPP_TAG_DEFAULT :
-      case IPP_TAG_UNKNOWN :
-      case IPP_TAG_NOVALUE :
-      case IPP_TAG_NOTSETTABLE :
-      case IPP_TAG_DELETEATTR :
-      case IPP_TAG_ADMINDEFINE :
-      case IPP_TAG_INTEGER :
-      case IPP_TAG_ENUM :
-      case IPP_TAG_BOOLEAN :
-      case IPP_TAG_DATE :
-      case IPP_TAG_RESOLUTION :
-      case IPP_TAG_RANGE :
-	  break;
-
-      case IPP_TAG_BEGIN_COLLECTION :
-	  for (i = count, value = attr->values + element;
-	       i > 0;
-	       i --, value ++)
-	  {
-	    ippDelete(value->collection);
-	    value->collection = NULL;
-	  }
-	  break;
-
-      case IPP_TAG_STRING :
-      default :
-	  for (i = count, value = attr->values + element;
-	       i > 0;
-	       i --, value ++)
-	  {
-	    if (value->unknown.data)
-	    {
-	      free(value->unknown.data);
-	      value->unknown.data = NULL;
-	    }
-	  }
-	  break;
-    }
-  }
-
- /*
-  * If we are not freeing values from the end, move the remaining values up...
-  */
-
-  if ((element + count) < attr->num_values)
-    memmove(attr->values + element, attr->values + element + count,
-            (size_t)(attr->num_values - count - element) * sizeof(_ipp_value_t));
-
-  attr->num_values -= count;
-}
-
-
-/*
- * 'ipp_get_code()' - Convert a C locale/charset name into an IPP language/charset code.
- *
- * This typically converts strings of the form "ll_CC", "ll-REGION", and "CHARSET_NUMBER"
- * to "ll-cc", "ll-region", and "charset-number", respectively.
- */
-
-static char *				/* O - Language code string */
-ipp_get_code(const char *value,		/* I - Locale/charset string */
-             char       *buffer,	/* I - String buffer */
-             size_t     bufsize)	/* I - Size of string buffer */
-{
-  char	*bufptr,			/* Pointer into buffer */
-	*bufend;			/* End of buffer */
-
-
- /*
-  * Convert values to lowercase and change _ to - as needed...
-  */
-
-  for (bufptr = buffer, bufend = buffer + bufsize - 1;
-       *value && bufptr < bufend;
-       value ++)
-    if (*value == '_')
-      *bufptr++ = '-';
-    else
-      *bufptr++ = (char)_cups_tolower(*value);
-
-  *bufptr = '\0';
-
- /*
-  * Return the converted string...
-  */
-
-  return (buffer);
-}
-
-
-/*
- * 'ipp_lang_code()' - Convert a C locale name into an IPP language code.
- *
- * This typically converts strings of the form "ll_CC" and "ll-REGION" to "ll-cc" and
- * "ll-region", respectively.  It also converts the "C" (POSIX) locale to "en".
- */
-
-static char *				/* O - Language code string */
-ipp_lang_code(const char *locale,	/* I - Locale string */
-              char       *buffer,	/* I - String buffer */
-              size_t     bufsize)	/* I - Size of string buffer */
-{
- /*
-  * Map POSIX ("C") locale to generic English, otherwise convert the locale string as-is.
-  */
-
-  if (!_cups_strcasecmp(locale, "c"))
-  {
-    strlcpy(buffer, "en", bufsize);
-    return (buffer);
-  }
-  else
-    return (ipp_get_code(locale, buffer, bufsize));
-}
-
-
-/*
- * 'ipp_length()' - Compute the length of an IPP message or collection value.
- */
-
-static size_t				/* O - Size of IPP message */
-ipp_length(ipp_t *ipp,			/* I - IPP message or collection */
-           int   collection)		/* I - 1 if a collection, 0 otherwise */
-{
-  int			i;		/* Looping var */
-  size_t		bytes;		/* Number of bytes */
-  ipp_attribute_t	*attr;		/* Current attribute */
-  ipp_tag_t		group;		/* Current group */
-  _ipp_value_t		*value;		/* Current value */
-
-
-  DEBUG_printf(("3ipp_length(ipp=%p, collection=%d)", (void *)ipp, collection));
-
-  if (!ipp)
-  {
-    DEBUG_puts("4ipp_length: Returning 0 bytes");
-    return (0);
-  }
-
- /*
-  * Start with 8 bytes for the IPP message header...
-  */
-
-  bytes = collection ? 0 : 8;
-
- /*
-  * Then add the lengths of each attribute...
-  */
-
-  group = IPP_TAG_ZERO;
-
-  for (attr = ipp->attrs; attr != NULL; attr = attr->next)
-  {
-    if (attr->group_tag != group && !collection)
-    {
-      group = attr->group_tag;
-      if (group == IPP_TAG_ZERO)
-	continue;
-
-      bytes ++;	/* Group tag */
-    }
-
-    if (!attr->name)
-      continue;
-
-    DEBUG_printf(("5ipp_length: attr->name=\"%s\", attr->num_values=%d, "
-                  "bytes=" CUPS_LLFMT, attr->name, attr->num_values, CUPS_LLCAST bytes));
-
-    if ((attr->value_tag & ~IPP_TAG_CUPS_CONST) < IPP_TAG_EXTENSION)
-      bytes += (size_t)attr->num_values;/* Value tag for each value */
-    else
-      bytes += (size_t)(5 * attr->num_values);
-					/* Value tag for each value */
-    bytes += (size_t)(2 * attr->num_values);
-					/* Name lengths */
-    bytes += strlen(attr->name);	/* Name */
-    bytes += (size_t)(2 * attr->num_values);
-					/* Value lengths */
-
-    if (collection)
-      bytes += 5;			/* Add membername overhead */
-
-    switch (attr->value_tag & ~IPP_TAG_CUPS_CONST)
-    {
-      case IPP_TAG_UNSUPPORTED_VALUE :
-      case IPP_TAG_DEFAULT :
-      case IPP_TAG_UNKNOWN :
-      case IPP_TAG_NOVALUE :
-      case IPP_TAG_NOTSETTABLE :
-      case IPP_TAG_DELETEATTR :
-      case IPP_TAG_ADMINDEFINE :
-          break;
-
-      case IPP_TAG_INTEGER :
-      case IPP_TAG_ENUM :
-          bytes += (size_t)(4 * attr->num_values);
-	  break;
-
-      case IPP_TAG_BOOLEAN :
-          bytes += (size_t)attr->num_values;
-	  break;
-
-      case IPP_TAG_TEXT :
-      case IPP_TAG_NAME :
-      case IPP_TAG_KEYWORD :
-      case IPP_TAG_URI :
-      case IPP_TAG_URISCHEME :
-      case IPP_TAG_CHARSET :
-      case IPP_TAG_LANGUAGE :
-      case IPP_TAG_MIMETYPE :
-	  for (i = 0, value = attr->values;
-	       i < attr->num_values;
-	       i ++, value ++)
-	    if (value->string.text)
-	      bytes += strlen(value->string.text);
-	  break;
-
-      case IPP_TAG_DATE :
-          bytes += (size_t)(11 * attr->num_values);
-	  break;
-
-      case IPP_TAG_RESOLUTION :
-          bytes += (size_t)(9 * attr->num_values);
-	  break;
-
-      case IPP_TAG_RANGE :
-          bytes += (size_t)(8 * attr->num_values);
-	  break;
-
-      case IPP_TAG_TEXTLANG :
-      case IPP_TAG_NAMELANG :
-          bytes += (size_t)(4 * attr->num_values);
-					/* Charset + text length */
-
-	  for (i = 0, value = attr->values;
-	       i < attr->num_values;
-	       i ++, value ++)
-	  {
-	    if (value->string.language)
-	      bytes += strlen(value->string.language);
-
-	    if (value->string.text)
-	      bytes += strlen(value->string.text);
-	  }
-	  break;
-
-      case IPP_TAG_BEGIN_COLLECTION :
-	  for (i = 0, value = attr->values;
-	       i < attr->num_values;
-	       i ++, value ++)
-            bytes += ipp_length(value->collection, 1);
-	  break;
-
-      default :
-	  for (i = 0, value = attr->values;
-	       i < attr->num_values;
-	       i ++, value ++)
-            bytes += (size_t)value->unknown.length;
-	  break;
-    }
-  }
-
- /*
-  * Finally, add 1 byte for the "end of attributes" tag or 5 bytes
-  * for the "end of collection" tag and return...
-  */
-
-  if (collection)
-    bytes += 5;
-  else
-    bytes ++;
-
-  DEBUG_printf(("4ipp_length: Returning " CUPS_LLFMT " bytes", CUPS_LLCAST bytes));
-
-  return (bytes);
-}
-
-
-/*
- * 'ipp_read_http()' - Semi-blocking read on a HTTP connection...
- */
-
-static ssize_t				/* O - Number of bytes read */
-ipp_read_http(http_t      *http,	/* I - Client connection */
-              ipp_uchar_t *buffer,	/* O - Buffer for data */
-	      size_t      length)	/* I - Total length */
-{
-  ssize_t	tbytes,			/* Total bytes read */
-		bytes;			/* Bytes read this pass */
-
-
-  DEBUG_printf(("7ipp_read_http(http=%p, buffer=%p, length=%d)", (void *)http, (void *)buffer, (int)length));
-
- /*
-  * Loop until all bytes are read...
-  */
-
-  for (tbytes = 0, bytes = 0;
-       tbytes < (int)length;
-       tbytes += bytes, buffer += bytes)
-  {
-    DEBUG_printf(("9ipp_read_http: tbytes=" CUPS_LLFMT ", http->state=%d", CUPS_LLCAST tbytes, http->state));
-
-    if (http->state == HTTP_STATE_WAITING)
-      break;
-
-    if (http->used == 0 && !http->blocking)
-    {
-     /*
-      * Wait up to 10 seconds for more data on non-blocking sockets...
-      */
-
-      if (!httpWait(http, 10000))
-      {
-       /*
-	* Signal no data...
-	*/
-
-	bytes = -1;
-	break;
-      }
-    }
-    else if (http->used == 0 && http->timeout_value > 0)
-    {
-     /*
-      * Wait up to timeout seconds for more data on blocking sockets...
-      */
-
-      if (!httpWait(http, (int)(1000 * http->timeout_value)))
-      {
-       /*
-	* Signal no data...
-	*/
-
-	bytes = -1;
-	break;
-      }
-    }
-
-    if ((bytes = httpRead2(http, (char *)buffer, length - (size_t)tbytes)) < 0)
-    {
-#ifdef WIN32
-      break;
-#else
-      if (errno != EAGAIN && errno != EINTR)
-	break;
-
-      bytes = 0;
-#endif /* WIN32 */
-    }
-    else if (bytes == 0)
-      break;
-  }
-
- /*
-  * Return the number of bytes read...
-  */
-
-  if (tbytes == 0 && bytes < 0)
-    tbytes = -1;
-
-  DEBUG_printf(("8ipp_read_http: Returning " CUPS_LLFMT " bytes", CUPS_LLCAST tbytes));
-
-  return (tbytes);
-}
-
-
-/*
- * 'ipp_read_file()' - Read IPP data from a file.
- */
-
-static ssize_t				/* O - Number of bytes read */
-ipp_read_file(int         *fd,		/* I - File descriptor */
-              ipp_uchar_t *buffer,	/* O - Read buffer */
-	      size_t      length)	/* I - Number of bytes to read */
-{
-#ifdef WIN32
-  return ((ssize_t)read(*fd, buffer, (unsigned)length));
-#else
-  return (read(*fd, buffer, length));
-#endif /* WIN32 */
-}
-
-
-/*
- * 'ipp_set_error()' - Set a formatted, localized error string.
- */
-
-static void
-ipp_set_error(ipp_status_t status,	/* I - Status code */
-              const char   *format,	/* I - Printf-style error string */
-	      ...)			/* I - Additional arguments as needed */
-{
-  va_list	ap;			/* Pointer to additional args */
-  char		buffer[2048];		/* Message buffer */
-  cups_lang_t	*lang = cupsLangDefault();
-					/* Current language */
-
-
-  va_start(ap, format);
-  vsnprintf(buffer, sizeof(buffer), _cupsLangString(lang, format), ap);
-  va_end(ap);
-
-  _cupsSetError(status, buffer, 0);
-}
-
-
-/*
- * 'ipp_set_value()' - Get the value element from an attribute, expanding it as
- *                     needed.
- */
-
-static _ipp_value_t *			/* O  - IPP value element or NULL on error */
-ipp_set_value(ipp_t           *ipp,	/* IO - IPP message */
-              ipp_attribute_t **attr,	/* IO - IPP attribute */
-              int             element)	/* I  - Value number (0-based) */
-{
-  ipp_attribute_t	*temp,		/* New attribute pointer */
-			*current,	/* Current attribute in list */
-			*prev;		/* Previous attribute in list */
-  int			alloc_values;	/* Allocated values */
-
-
- /*
-  * If we are setting an existing value element, return it...
-  */
-
-  temp = *attr;
-
-  if (temp->num_values <= 1)
-    alloc_values = 1;
-  else
-    alloc_values = (temp->num_values + IPP_MAX_VALUES - 1) &
-                   ~(IPP_MAX_VALUES - 1);
-
-  if (element < alloc_values)
-  {
-    if (element >= temp->num_values)
-      temp->num_values = element + 1;
-
-    return (temp->values + element);
-  }
-
- /*
-  * Otherwise re-allocate the attribute - we allocate in groups of IPP_MAX_VALUE
-  * values when num_values > 1.
-  */
-
-  if (alloc_values < IPP_MAX_VALUES)
-    alloc_values = IPP_MAX_VALUES;
-  else
-    alloc_values += IPP_MAX_VALUES;
-
-  DEBUG_printf(("4ipp_set_value: Reallocating for up to %d values.",
-                alloc_values));
-
- /*
-  * Reallocate memory...
-  */
-
-  if ((temp = realloc(temp, sizeof(ipp_attribute_t) + (size_t)(alloc_values - 1) * sizeof(_ipp_value_t))) == NULL)
-  {
-    _cupsSetHTTPError(HTTP_STATUS_ERROR);
-    DEBUG_puts("4ipp_set_value: Unable to resize attribute.");
-    return (NULL);
-  }
-
- /*
-  * Zero the new memory...
-  */
-
-  memset(temp->values + temp->num_values, 0, (size_t)(alloc_values - temp->num_values) * sizeof(_ipp_value_t));
-
-  if (temp != *attr)
-  {
-   /*
-    * Reset pointers in the list...
-    */
-
-    DEBUG_printf(("4debug_free: %p %s", (void *)*attr, temp->name));
-    DEBUG_printf(("4debug_alloc: %p %s %s%s (%d)", (void *)temp, temp->name, temp->num_values > 1 ? "1setOf " : "", ippTagString(temp->value_tag), temp->num_values));
-
-    if (ipp->current == *attr && ipp->prev)
-    {
-     /*
-      * Use current "previous" pointer...
-      */
-
-      prev = ipp->prev;
-    }
-    else
-    {
-     /*
-      * Find this attribute in the linked list...
-      */
-
-      for (prev = NULL, current = ipp->attrs;
-	   current && current != *attr;
-	   prev = current, current = current->next);
-
-      if (!current)
-      {
-       /*
-	* This is a serious error!
-	*/
-
-	*attr = temp;
-	_cupsSetError(IPP_STATUS_ERROR_INTERNAL,
-	              _("IPP attribute is not a member of the message."), 1);
-	DEBUG_puts("4ipp_set_value: Unable to find attribute in message.");
-	return (NULL);
-      }
-    }
-
-    if (prev)
-      prev->next = temp;
-    else
-      ipp->attrs = temp;
-
-    ipp->current = temp;
-    ipp->prev    = prev;
-
-    if (ipp->last == *attr)
-      ipp->last = temp;
-
-    *attr = temp;
-  }
-
- /*
-  * Return the value element...
-  */
-
-  if (element >= temp->num_values)
-    temp->num_values = element + 1;
-
-  return (temp->values + element);
-}
-
-
-/*
- * 'ipp_write_file()' - Write IPP data to a file.
- */
-
-static ssize_t				/* O - Number of bytes written */
-ipp_write_file(int         *fd,		/* I - File descriptor */
-               ipp_uchar_t *buffer,	/* I - Data to write */
-               size_t      length)	/* I - Number of bytes to write */
-{
-#ifdef WIN32
-  return ((ssize_t)write(*fd, buffer, (unsigned)length));
-#else
-  return (write(*fd, buffer, length));
-#endif /* WIN32 */
-}
diff --git a/doc/help/cupspm.html b/doc/help/cupspm.html
index 9b48cde..fbe4f6d 100644
--- a/doc/help/cupspm.html
+++ b/doc/help/cupspm.html
@@ -8,7 +8,7 @@
     <meta name="creator" content="codedoc v3.1">
     <meta name="author" content="Michael R Sweet">
     <meta name="copyright" content="Copyright &#xa9; 2007-2019 by Apple Inc. All Rights Reserved.">
-    <meta name="version" content="2.3.1">
+    <meta name="version" content="2.3.3">
     <style type="text/css"><!--
 body, p, h1, h2, h3, h4 {
   font-family: sans-serif;
diff --git a/locale/cups.pot b/locale/cups.pot
index fd2ddd0..679d185 100644
--- a/locale/cups.pot
+++ b/locale/cups.pot
@@ -23,9 +23,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: CUPS 2.3.0\n"
+"Project-Id-Version: CUPS 2.3.3\n"
 "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
-"POT-Creation-Date: 2019-08-23 09:13-0400\n"
+"POT-Creation-Date: 2019-12-18 20:19-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -1293,7 +1293,7 @@
 msgstr ""
 
 #: filter/rastertoepson.c:999 filter/rastertohp.c:668
-#: filter/rastertolabel.c:1120
+#: filter/rastertolabel.c:1121
 #, c-format
 msgid "%s job-id user title copies options [file]"
 msgstr ""
@@ -1680,12 +1680,12 @@
 msgid "%s: Unknown option \"%c\"."
 msgstr ""
 
-#: tools/ippeveprinter.c:381 tools/ippeveprinter.c:566 tools/ippfind.c:627
+#: tools/ippeveprinter.c:414 tools/ippeveprinter.c:604 tools/ippfind.c:627
 #, c-format
 msgid "%s: Unknown option \"%s\"."
 msgstr ""
 
-#: tools/ippeveprinter.c:555 tools/ippfind.c:919 tools/ipptool.c:606
+#: tools/ippeveprinter.c:593 tools/ippfind.c:919 tools/ipptool.c:606
 #, c-format
 msgid "%s: Unknown option \"-%c\"."
 msgstr ""
@@ -1776,7 +1776,7 @@
 msgid "--false                 Always false"
 msgstr ""
 
-#: tools/ippeveprinter.c:7665
+#: tools/ippeveprinter.c:7923
 msgid "--help                  Show program help"
 msgstr ""
 
@@ -1818,7 +1818,7 @@
 msgid "--name regex            Match service name to regular expression"
 msgstr ""
 
-#: tools/ippeveprinter.c:7666
+#: tools/ippeveprinter.c:7924
 msgid "--no-web-forms          Disable web forms for media and supplies"
 msgstr ""
 
@@ -1826,6 +1826,10 @@
 msgid "--not expression        Unary NOT of expression"
 msgstr ""
 
+#: tools/ippeveprinter.c:7925
+msgid "--pam-service service   Use the named PAM service"
+msgstr ""
+
 #: tools/ippfind.c:2792
 msgid "--path regex            Match resource path to regular expression"
 msgstr ""
@@ -1884,7 +1888,7 @@
 msgid "--uri regex             Match URI to regular expression"
 msgstr ""
 
-#: tools/ippeveprinter.c:7667 tools/ippfind.c:2770
+#: tools/ippeveprinter.c:7926 tools/ippfind.c:2770
 msgid "--version               Show program version"
 msgstr ""
 
@@ -1892,83 +1896,83 @@
 msgid "--version               Show version"
 msgstr ""
 
-#: ppdc/sample.c:305
+#: ppdc/sample.c:308
 msgid "-1"
 msgstr ""
 
-#: ppdc/sample.c:296
+#: ppdc/sample.c:299
 msgid "-10"
 msgstr ""
 
-#: ppdc/sample.c:388
+#: ppdc/sample.c:391
 msgid "-100"
 msgstr ""
 
-#: ppdc/sample.c:387
+#: ppdc/sample.c:390
 msgid "-105"
 msgstr ""
 
-#: ppdc/sample.c:295
+#: ppdc/sample.c:298
 msgid "-11"
 msgstr ""
 
-#: ppdc/sample.c:386
+#: ppdc/sample.c:389
 msgid "-110"
 msgstr ""
 
-#: ppdc/sample.c:385
+#: ppdc/sample.c:388
 msgid "-115"
 msgstr ""
 
-#: ppdc/sample.c:294
+#: ppdc/sample.c:297
 msgid "-12"
 msgstr ""
 
-#: ppdc/sample.c:384
+#: ppdc/sample.c:387
 msgid "-120"
 msgstr ""
 
-#: ppdc/sample.c:293
+#: ppdc/sample.c:296
 msgid "-13"
 msgstr ""
 
-#: ppdc/sample.c:292
+#: ppdc/sample.c:295
 msgid "-14"
 msgstr ""
 
-#: ppdc/sample.c:291
+#: ppdc/sample.c:294
 msgid "-15"
 msgstr ""
 
-#: ppdc/sample.c:304
+#: ppdc/sample.c:307
 msgid "-2"
 msgstr ""
 
-#: tools/ippeveprinter.c:7668
+#: tools/ippeveprinter.c:7927
 msgid "-2                      Set 2-sided printing support (default=1-sided)"
 msgstr ""
 
-#: ppdc/sample.c:404
+#: ppdc/sample.c:407
 msgid "-20"
 msgstr ""
 
-#: ppdc/sample.c:403
+#: ppdc/sample.c:406
 msgid "-25"
 msgstr ""
 
-#: ppdc/sample.c:303
+#: ppdc/sample.c:306
 msgid "-3"
 msgstr ""
 
-#: ppdc/sample.c:402
+#: ppdc/sample.c:405
 msgid "-30"
 msgstr ""
 
-#: ppdc/sample.c:401
+#: ppdc/sample.c:404
 msgid "-35"
 msgstr ""
 
-#: ppdc/sample.c:302
+#: ppdc/sample.c:305
 msgid "-4"
 msgstr ""
 
@@ -1976,27 +1980,27 @@
 msgid "-4                      Connect using IPv4"
 msgstr ""
 
-#: ppdc/sample.c:400
+#: ppdc/sample.c:403
 msgid "-40"
 msgstr ""
 
-#: ppdc/sample.c:399
+#: ppdc/sample.c:402
 msgid "-45"
 msgstr ""
 
-#: ppdc/sample.c:301
+#: ppdc/sample.c:304
 msgid "-5"
 msgstr ""
 
-#: ppdc/sample.c:398
+#: ppdc/sample.c:401
 msgid "-50"
 msgstr ""
 
-#: ppdc/sample.c:397
+#: ppdc/sample.c:400
 msgid "-55"
 msgstr ""
 
-#: ppdc/sample.c:300
+#: ppdc/sample.c:303
 msgid "-6"
 msgstr ""
 
@@ -2004,50 +2008,54 @@
 msgid "-6                      Connect using IPv6"
 msgstr ""
 
-#: ppdc/sample.c:396
+#: ppdc/sample.c:399
 msgid "-60"
 msgstr ""
 
-#: ppdc/sample.c:395
+#: ppdc/sample.c:398
 msgid "-65"
 msgstr ""
 
-#: ppdc/sample.c:299
+#: ppdc/sample.c:302
 msgid "-7"
 msgstr ""
 
-#: ppdc/sample.c:394
+#: ppdc/sample.c:397
 msgid "-70"
 msgstr ""
 
-#: ppdc/sample.c:393
+#: ppdc/sample.c:396
 msgid "-75"
 msgstr ""
 
-#: ppdc/sample.c:298
+#: ppdc/sample.c:301
 msgid "-8"
 msgstr ""
 
-#: ppdc/sample.c:392
+#: ppdc/sample.c:395
 msgid "-80"
 msgstr ""
 
-#: ppdc/sample.c:391
+#: ppdc/sample.c:394
 msgid "-85"
 msgstr ""
 
-#: ppdc/sample.c:297
+#: ppdc/sample.c:300
 msgid "-9"
 msgstr ""
 
-#: ppdc/sample.c:390
+#: ppdc/sample.c:393
 msgid "-90"
 msgstr ""
 
-#: ppdc/sample.c:389
+#: ppdc/sample.c:392
 msgid "-95"
 msgstr ""
 
+#: tools/ippeveprinter.c:7928
+msgid "-A                      Enable authentication"
+msgstr ""
+
 #: tools/ipptool.c:4314
 msgid "-C                      Send requests using chunking (default)"
 msgstr ""
@@ -2056,7 +2064,7 @@
 msgid "-D description          Specify the textual description of the printer"
 msgstr ""
 
-#: tools/ippeveprinter.c:7669
+#: tools/ippeveprinter.c:7929
 msgid "-D device-uri           Set the device URI for the printer"
 msgstr ""
 
@@ -2066,7 +2074,7 @@
 
 #: berkeley/lpq.c:644 berkeley/lpr.c:433 berkeley/lprm.c:234
 #: systemv/cancel.c:403 systemv/cupsaccept.c:244 systemv/cupsctl.c:233
-#: systemv/lp.c:752 systemv/lpadmin.c:1624 systemv/lpinfo.c:498
+#: systemv/lp.c:753 systemv/lpadmin.c:1624 systemv/lpinfo.c:498
 #: systemv/lpmove.c:217 systemv/lpoptions.c:540 systemv/lpstat.c:2045
 msgid "-E                      Encrypt the connection to the server"
 msgstr ""
@@ -2075,11 +2083,11 @@
 msgid "-E                      Test with encryption using HTTP Upgrade to TLS"
 msgstr ""
 
-#: scheduler/main.c:2136
+#: scheduler/main.c:2138
 msgid "-F                      Run in the foreground but detach from console."
 msgstr ""
 
-#: tools/ippeveprinter.c:7670
+#: tools/ippeveprinter.c:7930
 msgid "-F output-type/subtype  Set the output format for the printer"
 msgstr ""
 
@@ -2087,23 +2095,23 @@
 msgid "-H                      Show the default server and port"
 msgstr ""
 
-#: systemv/lp.c:754
+#: systemv/lp.c:755
 msgid "-H HH:MM                Hold the job until the specified UTC time"
 msgstr ""
 
-#: systemv/lp.c:755
+#: systemv/lp.c:756
 msgid "-H hold                 Hold the job until released/resumed"
 msgstr ""
 
-#: systemv/lp.c:756
+#: systemv/lp.c:757
 msgid "-H immediate            Print the job as soon as possible"
 msgstr ""
 
-#: systemv/lp.c:757
+#: systemv/lp.c:758
 msgid "-H restart              Reprint the job"
 msgstr ""
 
-#: systemv/lp.c:758
+#: systemv/lp.c:759
 msgid "-H resume               Resume a held job"
 msgstr ""
 
@@ -2121,7 +2129,7 @@
 "                          Ignore specific warnings"
 msgstr ""
 
-#: tools/ippeveprinter.c:7672
+#: tools/ippeveprinter.c:7932
 msgid "-K keypath              Set location of server X.509 certificates and keys."
 msgstr ""
 
@@ -2133,7 +2141,7 @@
 msgid "-L location             Specify the textual location of the printer"
 msgstr ""
 
-#: tools/ippeveprinter.c:7674
+#: tools/ippeveprinter.c:7934
 msgid "-M manufacturer         Set manufacturer name (default=Test)"
 msgstr ""
 
@@ -2141,7 +2149,7 @@
 msgid "-P destination          Show status for the specified destination"
 msgstr ""
 
-#: berkeley/lpr.c:450 berkeley/lprm.c:236
+#: berkeley/lpr.c:448 berkeley/lprm.c:236
 msgid "-P destination          Specify the destination"
 msgstr ""
 
@@ -2149,7 +2157,7 @@
 msgid "-P filename.plist       Produce XML plist to a file and test report to standard output"
 msgstr ""
 
-#: tools/ippeveprinter.c:7675
+#: tools/ippeveprinter.c:7935
 msgid "-P filename.ppd         Load printer attributes from PPD file"
 msgstr ""
 
@@ -2157,7 +2165,7 @@
 msgid "-P number[-number]      Match port to number or range"
 msgstr ""
 
-#: systemv/lp.c:774
+#: systemv/lp.c:775
 msgid "-P page-list            Specify a list of pages to print"
 msgstr ""
 
@@ -2190,7 +2198,7 @@
 msgstr ""
 
 #: berkeley/lpq.c:648 berkeley/lpr.c:452 berkeley/lprm.c:237
-#: systemv/cancel.c:406 systemv/cupsaccept.c:247 systemv/lp.c:778
+#: systemv/cancel.c:406 systemv/cupsaccept.c:247 systemv/lp.c:779
 #: systemv/lpadmin.c:1652 systemv/lpinfo.c:502 systemv/lpmove.c:219
 #: systemv/lpoptions.c:545 systemv/lpstat.c:2048
 msgid "-U username             Specify the username to use for authentication"
@@ -2200,7 +2208,7 @@
 msgid "-U username             Specify username to use for authentication"
 msgstr ""
 
-#: tools/ippeveprinter.c:7676 tools/ippfind.c:2769 tools/ipptool.c:4321
+#: tools/ippeveprinter.c:7936 tools/ippfind.c:2769 tools/ipptool.c:4321
 msgid "-V version              Set default IPP version"
 msgstr ""
 
@@ -2234,7 +2242,7 @@
 msgid "-a [destination(s)]     Show the accepting state of destinations"
 msgstr ""
 
-#: tools/ippeveprinter.c:7677
+#: tools/ippeveprinter.c:7937
 msgid "-a filename.conf        Load printer attributes from conf file"
 msgstr ""
 
@@ -2254,11 +2262,11 @@
 msgid "-c class                Add the named destination to a class"
 msgstr ""
 
-#: tools/ippeveprinter.c:7678
+#: tools/ippeveprinter.c:7938
 msgid "-c command              Set print command"
 msgstr ""
 
-#: scheduler/main.c:2134
+#: scheduler/main.c:2136
 msgid "-c cupsd.conf           Set cupsd.conf file to use."
 msgstr ""
 
@@ -2274,6 +2282,10 @@
 msgid "-d destination          Set the named destination as the server default"
 msgstr ""
 
+#: systemv/lp.c:752
+msgid "-d destination          Specify the destination"
+msgstr ""
+
 #: tools/ipptool.c:4324
 msgid "-d name=value           Set named variable to value"
 msgstr ""
@@ -2282,7 +2294,7 @@
 msgid "-d regex                Match domain to regular expression"
 msgstr ""
 
-#: tools/ippeveprinter.c:7679
+#: tools/ippeveprinter.c:7939
 msgid "-d spool-directory      Set spool directory"
 msgstr ""
 
@@ -2290,7 +2302,7 @@
 msgid "-e                      Show available destinations on the network"
 msgstr ""
 
-#: scheduler/main.c:2135
+#: scheduler/main.c:2137
 msgid "-f                      Run in the foreground."
 msgstr ""
 
@@ -2298,11 +2310,11 @@
 msgid "-f filename             Set default request filename"
 msgstr ""
 
-#: tools/ippeveprinter.c:7680
+#: tools/ippeveprinter.c:7940
 msgid "-f type/subtype[,...]   Set supported file types"
 msgstr ""
 
-#: scheduler/main.c:2137
+#: scheduler/main.c:2139
 msgid "-h                      Show this usage message."
 msgstr ""
 
@@ -2315,17 +2327,17 @@
 msgstr ""
 
 #: berkeley/lpq.c:645 berkeley/lprm.c:235 systemv/cancel.c:404
-#: systemv/cupsaccept.c:245 systemv/cupsctl.c:234 systemv/lp.c:753
+#: systemv/cupsaccept.c:245 systemv/cupsctl.c:234 systemv/lp.c:754
 #: systemv/lpadmin.c:1626 systemv/lpinfo.c:499 systemv/lpmove.c:218
 #: systemv/lpoptions.c:541 systemv/lpstat.c:2046
 msgid "-h server[:port]        Connect to the named server and port"
 msgstr ""
 
-#: tools/ippeveprinter.c:7681
+#: tools/ippeveprinter.c:7941
 msgid "-i iconfile.png         Set icon file"
 msgstr ""
 
-#: systemv/lp.c:759
+#: systemv/lp.c:760
 msgid "-i id                   Specify an existing job ID to modify"
 msgstr ""
 
@@ -2337,7 +2349,7 @@
 msgid "-i seconds              Repeat the last file with the given time interval"
 msgstr ""
 
-#: tools/ippeveprinter.c:7682
+#: tools/ippeveprinter.c:7942
 msgid "-k                      Keep job spool files"
 msgstr ""
 
@@ -2349,7 +2361,7 @@
 msgid "-l                      Produce plain text output"
 msgstr ""
 
-#: scheduler/main.c:2139
+#: scheduler/main.c:2141
 msgid "-l                      Run cupsd on demand."
 msgstr ""
 
@@ -2361,11 +2373,11 @@
 msgid "-l                      Show verbose (long) output"
 msgstr ""
 
-#: tools/ippeveprinter.c:7683
+#: tools/ippeveprinter.c:7943
 msgid "-l location             Set location of printer"
 msgstr ""
 
-#: berkeley/lpr.c:435 systemv/lp.c:760
+#: berkeley/lpr.c:435 systemv/lp.c:761
 msgid "-m                      Send an email notification when the job completes"
 msgstr ""
 
@@ -2377,7 +2389,7 @@
 msgid "-m everywhere           Specify the printer is compatible with IPP Everywhere"
 msgstr ""
 
-#: tools/ippeveprinter.c:7684
+#: tools/ippeveprinter.c:7944
 msgid "-m model                Set model name (default=Printer)"
 msgstr ""
 
@@ -2389,11 +2401,11 @@
 msgid "-n count                Repeat the last file the given number of times"
 msgstr ""
 
-#: tools/ippeveprinter.c:7685
+#: tools/ippeveprinter.c:7945
 msgid "-n hostname             Set hostname for printer"
 msgstr ""
 
-#: systemv/lp.c:761
+#: systemv/lp.c:762
 msgid "-n num-copies           Specify the number of copies to print"
 msgstr ""
 
@@ -2433,11 +2445,11 @@
 msgid "-o job-quota-period=N   Specify the per-user quota period in seconds"
 msgstr ""
 
-#: berkeley/lpr.c:437 systemv/lp.c:763
+#: berkeley/lpr.c:437 systemv/lp.c:764
 msgid "-o job-sheets=standard  Print a banner page with the job"
 msgstr ""
 
-#: berkeley/lpr.c:438 systemv/lp.c:764
+#: berkeley/lpr.c:438 systemv/lp.c:765
 msgid "-o media=size           Specify the media size to use"
 msgstr ""
 
@@ -2449,21 +2461,21 @@
 msgid "-o name[=value]         Set default option and value"
 msgstr ""
 
-#: berkeley/lpr.c:439 systemv/lp.c:765
+#: berkeley/lpr.c:439 systemv/lp.c:766
 msgid "-o number-up=N          Specify that input pages should be printed N-up (1, 2, 4, 6, 9, and 16 are supported)"
 msgstr ""
 
-#: berkeley/lpr.c:436 systemv/lp.c:762
+#: berkeley/lpr.c:436 systemv/lp.c:763
 msgid "-o option[=value]       Specify a printer-specific option"
 msgstr ""
 
-#: berkeley/lpr.c:440 systemv/lp.c:766
+#: berkeley/lpr.c:440 systemv/lp.c:767
 msgid ""
 "-o orientation-requested=N\n"
 "                        Specify portrait (3) or landscape (4) orientation"
 msgstr ""
 
-#: berkeley/lpr.c:442 systemv/lp.c:768
+#: berkeley/lpr.c:442 systemv/lp.c:769
 msgid "-o print-quality=N      Specify the print quality - draft (3), normal (4), or best (5)"
 msgstr ""
 
@@ -2485,17 +2497,17 @@
 "                        Specify the printer operation policy"
 msgstr ""
 
-#: berkeley/lpr.c:443 systemv/lp.c:769
+#: berkeley/lpr.c:443 systemv/lp.c:770
 msgid "-o sides=one-sided      Specify 1-sided printing"
 msgstr ""
 
-#: berkeley/lpr.c:444 systemv/lp.c:770
+#: berkeley/lpr.c:444 systemv/lp.c:771
 msgid ""
 "-o sides=two-sided-long-edge\n"
 "                        Specify 2-sided portrait printing"
 msgstr ""
 
-#: berkeley/lpr.c:446 systemv/lp.c:772
+#: berkeley/lpr.c:446 systemv/lp.c:773
 msgid ""
 "-o sides=two-sided-short-edge\n"
 "                        Specify 2-sided landscape printing"
@@ -2517,7 +2529,7 @@
 msgid "-p destination          Specify/add the named destination"
 msgstr ""
 
-#: tools/ippeveprinter.c:7686
+#: tools/ippeveprinter.c:7946
 msgid "-p port                 Set port number for printer"
 msgstr ""
 
@@ -2529,15 +2541,15 @@
 msgid "-q                      Run silently"
 msgstr ""
 
-#: berkeley/lpr.c:448
+#: berkeley/lpr.c:449
 msgid "-q                      Specify the job should be held for printing"
 msgstr ""
 
-#: systemv/lp.c:775
+#: systemv/lp.c:776
 msgid "-q priority             Specify the priority from low (1) to high (100)"
 msgstr ""
 
-#: berkeley/lpr.c:449
+#: berkeley/lpr.c:450
 msgid "-r                      Remove the file(s) after submission"
 msgstr ""
 
@@ -2561,11 +2573,11 @@
 msgid "-r reason               Specify a reason message that others can see"
 msgstr ""
 
-#: tools/ippeveprinter.c:7687
+#: tools/ippeveprinter.c:7947
 msgid "-r subtype,[subtype]    Set DNS-SD service subtype"
 msgstr ""
 
-#: systemv/lp.c:776
+#: systemv/lp.c:777
 msgid "-s                      Be silent"
 msgstr ""
 
@@ -2577,11 +2589,11 @@
 msgid "-s                      Show a status summary"
 msgstr ""
 
-#: scheduler/main.c:2141
+#: scheduler/main.c:2143
 msgid "-s cups-files.conf      Set cups-files.conf file to use."
 msgstr ""
 
-#: tools/ippeveprinter.c:7688
+#: tools/ippeveprinter.c:7948
 msgid "-s speed[,color-speed]  Set speed in pages per minute"
 msgstr ""
 
@@ -2593,7 +2605,7 @@
 msgid "-t                      Show all status information"
 msgstr ""
 
-#: scheduler/main.c:2142
+#: scheduler/main.c:2144
 msgid "-t                      Test the configuration file."
 msgstr ""
 
@@ -2601,7 +2613,7 @@
 msgid "-t key                  True if the TXT record contains the key"
 msgstr ""
 
-#: systemv/lp.c:777
+#: systemv/lp.c:778
 msgid "-t title                Specify the job title"
 msgstr ""
 
@@ -2629,7 +2641,7 @@
 msgid "-u regex                Match URI to regular expression"
 msgstr ""
 
-#: systemv/cupstestppd.c:3865 tools/ippeveprinter.c:7689 tools/ipptool.c:4332
+#: systemv/cupstestppd.c:3865 tools/ippeveprinter.c:7949 tools/ipptool.c:4332
 msgid "-v                      Be verbose"
 msgstr ""
 
@@ -2667,19 +2679,19 @@
 "                        Execute program if true"
 msgstr ""
 
-#: cups/dest.c:1868
+#: cups/dest.c:1867
 msgid "/etc/cups/lpoptions file names default destination that does not exist."
 msgstr ""
 
-#: ppdc/sample.c:306
+#: ppdc/sample.c:309
 msgid "0"
 msgstr ""
 
-#: ppdc/sample.c:307
+#: ppdc/sample.c:310
 msgid "1"
 msgstr ""
 
-#: ppdc/sample.c:379
+#: ppdc/sample.c:382
 msgid "1 inch/sec."
 msgstr ""
 
@@ -2691,7 +2703,7 @@
 msgid "1.25x2.25\""
 msgstr ""
 
-#: ppdc/sample.c:427
+#: ppdc/sample.c:430
 msgid "1.5 inch/sec."
 msgstr ""
 
@@ -2711,11 +2723,11 @@
 msgid "1.50x2.00\""
 msgstr ""
 
-#: ppdc/sample.c:316
+#: ppdc/sample.c:319
 msgid "10"
 msgstr ""
 
-#: ppdc/sample.c:438
+#: ppdc/sample.c:441
 msgid "10 inches/sec."
 msgstr ""
 
@@ -2731,39 +2743,39 @@
 msgid "10 x 14"
 msgstr ""
 
-#: ppdc/sample.c:418
+#: ppdc/sample.c:421
 msgid "100"
 msgstr ""
 
-#: ppdc/sample.c:329
+#: ppdc/sample.c:332
 msgid "100 mm/sec."
 msgstr ""
 
-#: ppdc/sample.c:419
+#: ppdc/sample.c:422
 msgid "105"
 msgstr ""
 
-#: ppdc/sample.c:317
+#: ppdc/sample.c:320
 msgid "11"
 msgstr ""
 
-#: ppdc/sample.c:439
+#: ppdc/sample.c:442
 msgid "11 inches/sec."
 msgstr ""
 
-#: ppdc/sample.c:420
+#: ppdc/sample.c:423
 msgid "110"
 msgstr ""
 
-#: ppdc/sample.c:421
+#: ppdc/sample.c:424
 msgid "115"
 msgstr ""
 
-#: ppdc/sample.c:318
+#: ppdc/sample.c:321
 msgid "12"
 msgstr ""
 
-#: ppdc/sample.c:440
+#: ppdc/sample.c:443
 msgid "12 inches/sec."
 msgstr ""
 
@@ -2771,39 +2783,39 @@
 msgid "12 x 11"
 msgstr ""
 
-#: ppdc/sample.c:422
+#: ppdc/sample.c:425
 msgid "120"
 msgstr ""
 
-#: ppdc/sample.c:330
+#: ppdc/sample.c:333
 msgid "120 mm/sec."
 msgstr ""
 
-#: ppdc/sample.c:243
+#: ppdc/sample.c:247
 msgid "120x60dpi"
 msgstr ""
 
-#: ppdc/sample.c:249
+#: ppdc/sample.c:253
 msgid "120x72dpi"
 msgstr ""
 
-#: ppdc/sample.c:319
+#: ppdc/sample.c:322
 msgid "13"
 msgstr ""
 
-#: ppdc/sample.c:232
+#: ppdc/sample.c:233
 msgid "136dpi"
 msgstr ""
 
-#: ppdc/sample.c:320
+#: ppdc/sample.c:323
 msgid "14"
 msgstr ""
 
-#: ppdc/sample.c:321
+#: ppdc/sample.c:324
 msgid "15"
 msgstr ""
 
-#: ppdc/sample.c:323
+#: ppdc/sample.c:326
 msgid "15 mm/sec."
 msgstr ""
 
@@ -2811,43 +2823,43 @@
 msgid "15 x 11"
 msgstr ""
 
-#: ppdc/sample.c:331
+#: ppdc/sample.c:334
 msgid "150 mm/sec."
 msgstr ""
 
-#: ppdc/sample.c:278
+#: ppdc/sample.c:281
 msgid "150dpi"
 msgstr ""
 
-#: ppdc/sample.c:363
+#: ppdc/sample.c:366
 msgid "16"
 msgstr ""
 
-#: ppdc/sample.c:364
+#: ppdc/sample.c:367
 msgid "17"
 msgstr ""
 
-#: ppdc/sample.c:365
+#: ppdc/sample.c:368
 msgid "18"
 msgstr ""
 
-#: ppdc/sample.c:244
+#: ppdc/sample.c:248
 msgid "180dpi"
 msgstr ""
 
-#: ppdc/sample.c:366
+#: ppdc/sample.c:369
 msgid "19"
 msgstr ""
 
-#: ppdc/sample.c:308
+#: ppdc/sample.c:311
 msgid "2"
 msgstr ""
 
-#: ppdc/sample.c:380
+#: ppdc/sample.c:383
 msgid "2 inches/sec."
 msgstr ""
 
-#: cups/ppd-cache.c:3872 ppdc/sample.c:262
+#: cups/ppd-cache.c:3872 ppdc/sample.c:265
 msgid "2-Sided Printing"
 msgstr ""
 
@@ -2891,107 +2903,107 @@
 msgid "2.25x1.25\""
 msgstr ""
 
-#: ppdc/sample.c:188
+#: ppdc/sample.c:189
 msgid "2.25x4.00\""
 msgstr ""
 
-#: ppdc/sample.c:189
+#: ppdc/sample.c:190
 msgid "2.25x5.50\""
 msgstr ""
 
-#: ppdc/sample.c:190
+#: ppdc/sample.c:191
 msgid "2.38x5.50\""
 msgstr ""
 
-#: ppdc/sample.c:428
+#: ppdc/sample.c:431
 msgid "2.5 inches/sec."
 msgstr ""
 
-#: ppdc/sample.c:191
+#: ppdc/sample.c:192
 msgid "2.50x1.00\""
 msgstr ""
 
-#: ppdc/sample.c:192
+#: ppdc/sample.c:193
 msgid "2.50x2.00\""
 msgstr ""
 
-#: ppdc/sample.c:193
+#: ppdc/sample.c:194
 msgid "2.75x1.25\""
 msgstr ""
 
-#: ppdc/sample.c:194
+#: ppdc/sample.c:195
 msgid "2.9 x 1\""
 msgstr ""
 
-#: ppdc/sample.c:367
+#: ppdc/sample.c:370
 msgid "20"
 msgstr ""
 
-#: ppdc/sample.c:324
+#: ppdc/sample.c:327
 msgid "20 mm/sec."
 msgstr ""
 
-#: ppdc/sample.c:332
+#: ppdc/sample.c:335
 msgid "200 mm/sec."
 msgstr ""
 
-#: ppdc/sample.c:233
+#: ppdc/sample.c:234
 msgid "203dpi"
 msgstr ""
 
-#: ppdc/sample.c:368
+#: ppdc/sample.c:371
 msgid "21"
 msgstr ""
 
-#: ppdc/sample.c:369
+#: ppdc/sample.c:372
 msgid "22"
 msgstr ""
 
-#: ppdc/sample.c:370
+#: ppdc/sample.c:373
 msgid "23"
 msgstr ""
 
-#: ppdc/sample.c:371
+#: ppdc/sample.c:374
 msgid "24"
 msgstr ""
 
-#: ppdc/sample.c:241
+#: ppdc/sample.c:245
 msgid "24-Pin Series"
 msgstr ""
 
-#: ppdc/sample.c:250
+#: ppdc/sample.c:254
 msgid "240x72dpi"
 msgstr ""
 
-#: ppdc/sample.c:372
+#: ppdc/sample.c:375
 msgid "25"
 msgstr ""
 
-#: ppdc/sample.c:333
+#: ppdc/sample.c:336
 msgid "250 mm/sec."
 msgstr ""
 
-#: ppdc/sample.c:373
+#: ppdc/sample.c:376
 msgid "26"
 msgstr ""
 
-#: ppdc/sample.c:374
+#: ppdc/sample.c:377
 msgid "27"
 msgstr ""
 
-#: ppdc/sample.c:375
+#: ppdc/sample.c:378
 msgid "28"
 msgstr ""
 
-#: ppdc/sample.c:376
+#: ppdc/sample.c:379
 msgid "29"
 msgstr ""
 
-#: ppdc/sample.c:309
+#: ppdc/sample.c:312
 msgid "3"
 msgstr ""
 
-#: ppdc/sample.c:381
+#: ppdc/sample.c:384
 msgid "3 inches/sec."
 msgstr ""
 
@@ -2999,43 +3011,43 @@
 msgid "3 x 5"
 msgstr ""
 
-#: ppdc/sample.c:195
+#: ppdc/sample.c:196
 msgid "3.00x1.00\""
 msgstr ""
 
-#: ppdc/sample.c:196
+#: ppdc/sample.c:197
 msgid "3.00x1.25\""
 msgstr ""
 
-#: ppdc/sample.c:197
+#: ppdc/sample.c:198
 msgid "3.00x2.00\""
 msgstr ""
 
-#: ppdc/sample.c:198
+#: ppdc/sample.c:199
 msgid "3.00x3.00\""
 msgstr ""
 
-#: ppdc/sample.c:199
+#: ppdc/sample.c:200
 msgid "3.00x5.00\""
 msgstr ""
 
-#: ppdc/sample.c:200
+#: ppdc/sample.c:201
 msgid "3.25x2.00\""
 msgstr ""
 
-#: ppdc/sample.c:201
+#: ppdc/sample.c:202
 msgid "3.25x5.00\""
 msgstr ""
 
-#: ppdc/sample.c:202
+#: ppdc/sample.c:203
 msgid "3.25x5.50\""
 msgstr ""
 
-#: ppdc/sample.c:203
+#: ppdc/sample.c:204
 msgid "3.25x5.83\""
 msgstr ""
 
-#: ppdc/sample.c:204
+#: ppdc/sample.c:205
 msgid "3.25x7.83\""
 msgstr ""
 
@@ -3047,99 +3059,103 @@
 msgid "3.5\" Disk"
 msgstr ""
 
-#: ppdc/sample.c:205
+#: ppdc/sample.c:206
 msgid "3.50x1.00\""
 msgstr ""
 
-#: ppdc/sample.c:377
+#: ppdc/sample.c:380
 msgid "30"
 msgstr ""
 
-#: ppdc/sample.c:325
+#: ppdc/sample.c:328
 msgid "30 mm/sec."
 msgstr ""
 
-#: ppdc/sample.c:334
+#: ppdc/sample.c:337
 msgid "300 mm/sec."
 msgstr ""
 
-#: ppdc/sample.c:234
+#: ppdc/sample.c:235
 msgid "300dpi"
 msgstr ""
 
-#: ppdc/sample.c:405
+#: ppdc/sample.c:188
+msgid "30859 Paint Can Label"
+msgstr ""
+
+#: ppdc/sample.c:408
 msgid "35"
 msgstr ""
 
-#: ppdc/sample.c:246
+#: ppdc/sample.c:250
 msgid "360dpi"
 msgstr ""
 
-#: ppdc/sample.c:245
+#: ppdc/sample.c:249
 msgid "360x180dpi"
 msgstr ""
 
-#: ppdc/sample.c:310
+#: ppdc/sample.c:313
 msgid "4"
 msgstr ""
 
-#: ppdc/sample.c:382
+#: ppdc/sample.c:385
 msgid "4 inches/sec."
 msgstr ""
 
-#: ppdc/sample.c:206
+#: ppdc/sample.c:207
 msgid "4.00x1.00\""
 msgstr ""
 
-#: ppdc/sample.c:214
+#: ppdc/sample.c:215
 msgid "4.00x13.00\""
 msgstr ""
 
-#: ppdc/sample.c:207
+#: ppdc/sample.c:208
 msgid "4.00x2.00\""
 msgstr ""
 
-#: ppdc/sample.c:208
+#: ppdc/sample.c:209
 msgid "4.00x2.50\""
 msgstr ""
 
-#: ppdc/sample.c:209
+#: ppdc/sample.c:210
 msgid "4.00x3.00\""
 msgstr ""
 
-#: ppdc/sample.c:210
+#: ppdc/sample.c:211
 msgid "4.00x4.00\""
 msgstr ""
 
-#: ppdc/sample.c:211
+#: ppdc/sample.c:212
 msgid "4.00x5.00\""
 msgstr ""
 
-#: ppdc/sample.c:212
+#: ppdc/sample.c:213
 msgid "4.00x6.00\""
 msgstr ""
 
-#: ppdc/sample.c:213
+#: ppdc/sample.c:214
 msgid "4.00x6.50\""
 msgstr ""
 
-#: ppdc/sample.c:406
+#: ppdc/sample.c:409
 msgid "40"
 msgstr ""
 
-#: ppdc/sample.c:326
+#: ppdc/sample.c:329
 msgid "40 mm/sec."
 msgstr ""
 
-#: ppdc/sample.c:407
+#: ppdc/sample.c:410
 msgid "45"
 msgstr ""
 
-#: ppdc/sample.c:311
+#: ppdc/sample.c:314
 msgid "5"
 msgstr ""
 
-#: ppdc/sample.c:432
+#: ppdc/sample.c:435
 msgid "5 inches/sec."
 msgstr ""
 
@@ -3147,79 +3163,79 @@
 msgid "5 x 7"
 msgstr ""
 
-#: ppdc/sample.c:408
+#: ppdc/sample.c:411
 msgid "50"
 msgstr ""
 
-#: ppdc/sample.c:409
+#: ppdc/sample.c:412
 msgid "55"
 msgstr ""
 
-#: ppdc/sample.c:312
+#: ppdc/sample.c:315
 msgid "6"
 msgstr ""
 
-#: ppdc/sample.c:433
+#: ppdc/sample.c:436
 msgid "6 inches/sec."
 msgstr ""
 
-#: ppdc/sample.c:215
+#: ppdc/sample.c:216
 msgid "6.00x1.00\""
 msgstr ""
 
-#: ppdc/sample.c:216
+#: ppdc/sample.c:217
 msgid "6.00x2.00\""
 msgstr ""
 
-#: ppdc/sample.c:217
+#: ppdc/sample.c:218
 msgid "6.00x3.00\""
 msgstr ""
 
-#: ppdc/sample.c:218
+#: ppdc/sample.c:219
 msgid "6.00x4.00\""
 msgstr ""
 
-#: ppdc/sample.c:219
+#: ppdc/sample.c:220
 msgid "6.00x5.00\""
 msgstr ""
 
-#: ppdc/sample.c:220
+#: ppdc/sample.c:221
 msgid "6.00x6.00\""
 msgstr ""
 
-#: ppdc/sample.c:221
+#: ppdc/sample.c:222
 msgid "6.00x6.50\""
 msgstr ""
 
-#: ppdc/sample.c:410
+#: ppdc/sample.c:413
 msgid "60"
 msgstr ""
 
-#: ppdc/sample.c:327
+#: ppdc/sample.c:330
 msgid "60 mm/sec."
 msgstr ""
 
-#: ppdc/sample.c:253
+#: ppdc/sample.c:257
 msgid "600dpi"
 msgstr ""
 
-#: ppdc/sample.c:242
+#: ppdc/sample.c:246
 msgid "60dpi"
 msgstr ""
 
-#: ppdc/sample.c:248
+#: ppdc/sample.c:252
 msgid "60x72dpi"
 msgstr ""
 
-#: ppdc/sample.c:411
+#: ppdc/sample.c:414
 msgid "65"
 msgstr ""
 
-#: ppdc/sample.c:313
+#: ppdc/sample.c:316
 msgid "7"
 msgstr ""
 
-#: ppdc/sample.c:435
+#: ppdc/sample.c:438
 msgid "7 inches/sec."
 msgstr ""
 
@@ -3227,19 +3243,19 @@
 msgid "7 x 9"
 msgstr ""
 
-#: ppdc/sample.c:412
+#: ppdc/sample.c:415
 msgid "70"
 msgstr ""
 
-#: ppdc/sample.c:413
+#: ppdc/sample.c:416
 msgid "75"
 msgstr ""
 
-#: ppdc/sample.c:314
+#: ppdc/sample.c:317
 msgid "8"
 msgstr ""
 
-#: ppdc/sample.c:436
+#: ppdc/sample.c:439
 msgid "8 inches/sec."
 msgstr ""
 
@@ -3247,51 +3263,51 @@
 msgid "8 x 10"
 msgstr ""
 
-#: ppdc/sample.c:222
+#: ppdc/sample.c:223
 msgid "8.00x1.00\""
 msgstr ""
 
-#: ppdc/sample.c:223
+#: ppdc/sample.c:224
 msgid "8.00x2.00\""
 msgstr ""
 
-#: ppdc/sample.c:224
+#: ppdc/sample.c:225
 msgid "8.00x3.00\""
 msgstr ""
 
-#: ppdc/sample.c:225
+#: ppdc/sample.c:226
 msgid "8.00x4.00\""
 msgstr ""
 
-#: ppdc/sample.c:226
+#: ppdc/sample.c:227
 msgid "8.00x5.00\""
 msgstr ""
 
-#: ppdc/sample.c:227
+#: ppdc/sample.c:228
 msgid "8.00x6.00\""
 msgstr ""
 
-#: ppdc/sample.c:228
+#: ppdc/sample.c:229
 msgid "8.00x6.50\""
 msgstr ""
 
-#: ppdc/sample.c:414
+#: ppdc/sample.c:417
 msgid "80"
 msgstr ""
 
-#: ppdc/sample.c:328
+#: ppdc/sample.c:331
 msgid "80 mm/sec."
 msgstr ""
 
-#: ppdc/sample.c:415
+#: ppdc/sample.c:418
 msgid "85"
 msgstr ""
 
-#: ppdc/sample.c:315
+#: ppdc/sample.c:318
 msgid "9"
 msgstr ""
 
-#: ppdc/sample.c:437
+#: ppdc/sample.c:440
 msgid "9 inches/sec."
 msgstr ""
 
@@ -3303,15 +3319,15 @@
 msgid "9 x 12"
 msgstr ""
 
-#: ppdc/sample.c:247
+#: ppdc/sample.c:251
 msgid "9-Pin Series"
 msgstr ""
 
-#: ppdc/sample.c:416
+#: ppdc/sample.c:419
 msgid "90"
 msgstr ""
 
-#: ppdc/sample.c:417
+#: ppdc/sample.c:420
 msgid "95"
 msgstr ""
 
@@ -3469,7 +3485,7 @@
 msgid "Accept Jobs"
 msgstr ""
 
-#: cups/http-support.c:1494
+#: cups/http-support.c:1499
 msgid "Accepted"
 msgstr ""
 
@@ -3489,7 +3505,7 @@
 msgid "Administration"
 msgstr ""
 
-#: ppdc/sample.c:424
+#: ppdc/sample.c:427
 msgid "Always"
 msgstr ""
 
@@ -3497,7 +3513,7 @@
 msgid "AppSocket/HP JetDirect"
 msgstr ""
 
-#: ppdc/sample.c:445
+#: ppdc/sample.c:448
 msgid "Applicator"
 msgstr ""
 
@@ -3621,7 +3637,7 @@
 msgid "Bad PPD file."
 msgstr ""
 
-#: cups/http-support.c:1512
+#: cups/http-support.c:1517
 msgid "Bad Request"
 msgstr ""
 
@@ -3637,7 +3653,7 @@
 msgid "Bad URI."
 msgstr ""
 
-#: cups/hash.c:48 cups/http-support.c:1606
+#: cups/hash.c:49 cups/http-support.c:1611
 msgid "Bad arguments to function"
 msgstr ""
 
@@ -3650,7 +3666,7 @@
 msgid "Bad custom parameter"
 msgstr ""
 
-#: cups/http-support.c:1746 scheduler/ipp.c:2365
+#: cups/http-support.c:1751 scheduler/ipp.c:2365
 #, c-format
 msgid "Bad device-uri \"%s\"."
 msgstr ""
@@ -3674,7 +3690,7 @@
 msgid "Bad filename buffer"
 msgstr ""
 
-#: cups/http-support.c:1615
+#: cups/http-support.c:1620
 msgid "Bad hostname/address in URI"
 msgstr ""
 
@@ -3737,7 +3753,7 @@
 msgid "Bad page-ranges values %d-%d."
 msgstr ""
 
-#: cups/http-support.c:1612
+#: cups/http-support.c:1617
 msgid "Bad port number in URI"
 msgstr ""
 
@@ -3765,15 +3781,15 @@
 msgid "Bad request version number %d.%d."
 msgstr ""
 
-#: cups/http-support.c:1609
+#: cups/http-support.c:1614
 msgid "Bad resource in URI"
 msgstr ""
 
-#: cups/http-support.c:1621
+#: cups/http-support.c:1626
 msgid "Bad scheme in URI"
 msgstr ""
 
-#: cups/http-support.c:1618
+#: cups/http-support.c:1623
 msgid "Bad username in URI"
 msgstr ""
 
@@ -3781,7 +3797,7 @@
 msgid "Bad value string"
 msgstr ""
 
-#: cups/http-support.c:1624
+#: cups/http-support.c:1629
 msgid "Bad/empty URI"
 msgstr ""
 
@@ -3789,11 +3805,11 @@
 msgid "Banners"
 msgstr ""
 
-#: ppdc/sample.c:282
+#: ppdc/sample.c:285
 msgid "Bond Paper"
 msgstr ""
 
-#: cups/ppd-cache.c:4152
+#: cups/ppd-cache.c:4277
 msgid "Booklet"
 msgstr ""
 
@@ -3806,11 +3822,11 @@
 msgid "Buffer overflow detected, aborting."
 msgstr ""
 
-#: ppdc/sample.c:277
+#: ppdc/sample.c:280
 msgid "CMYK"
 msgstr ""
 
-#: ppdc/sample.c:358
+#: ppdc/sample.c:361
 msgid "CPCL Label Printer"
 msgstr ""
 
@@ -3818,7 +3834,7 @@
 msgid "Cancel Jobs"
 msgstr ""
 
-#: backend/ipp.c:2287
+#: backend/ipp.c:2295
 msgid "Canceling print job."
 msgstr ""
 
@@ -3830,7 +3846,7 @@
 msgid "Cannot share a remote Kerberized printer."
 msgstr ""
 
-#: ppdc/sample.c:271
+#: ppdc/sample.c:274
 msgid "Cassette"
 msgstr ""
 
@@ -3856,11 +3872,11 @@
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr ""
 
-#: cups/ppd-cache.c:3790 ppdc/sample.c:276
+#: cups/ppd-cache.c:3790 ppdc/sample.c:279
 msgid "Color"
 msgstr ""
 
-#: cups/ppd-cache.c:3751 ppdc/sample.c:274
+#: cups/ppd-cache.c:3751 ppdc/sample.c:277
 msgid "Color Mode"
 msgstr ""
 
@@ -3875,39 +3891,39 @@
 msgid "Community name uses indefinite length"
 msgstr ""
 
-#: backend/ipp.c:865 backend/lpd.c:929 backend/socket.c:375
+#: backend/ipp.c:864 backend/lpd.c:933 backend/socket.c:375
 msgid "Connected to printer."
 msgstr ""
 
-#: backend/ipp.c:701 backend/lpd.c:753 backend/socket.c:295
+#: backend/ipp.c:700 backend/lpd.c:757 backend/socket.c:295
 msgid "Connecting to printer."
 msgstr ""
 
-#: cups/http-support.c:1482
+#: cups/http-support.c:1487
 msgid "Continue"
 msgstr ""
 
-#: ppdc/sample.c:360
+#: ppdc/sample.c:363
 msgid "Continuous"
 msgstr ""
 
-#: backend/lpd.c:1078 backend/lpd.c:1210
+#: backend/lpd.c:1082 backend/lpd.c:1214
 msgid "Control file sent successfully."
 msgstr ""
 
-#: backend/ipp.c:1396 backend/lpd.c:445
+#: backend/ipp.c:1395 backend/lpd.c:449
 msgid "Copying print data."
 msgstr ""
 
-#: cups/http-support.c:1491
+#: cups/http-support.c:1496
 msgid "Created"
 msgstr ""
 
-#: cups/tls-darwin.c:748 cups/tls-gnutls.c:582
+#: cups/tls-darwin.c:723 cups/tls-gnutls.c:582
 msgid "Credentials do not validate against site CA certificate."
 msgstr ""
 
-#: cups/tls-darwin.c:759 cups/tls-gnutls.c:599
+#: cups/tls-darwin.c:734 cups/tls-gnutls.c:599
 msgid "Credentials have expired."
 msgstr ""
 
@@ -3915,31 +3931,35 @@
 msgid "Custom"
 msgstr ""
 
-#: ppdc/sample.c:354
+#: ppdc/sample.c:357
 msgid "CustominCutInterval"
 msgstr ""
 
-#: ppdc/sample.c:352
+#: ppdc/sample.c:355
 msgid "CustominTearInterval"
 msgstr ""
 
-#: ppdc/sample.c:338
+#: cups/ppd-cache.c:4312 ppdc/sample.c:341
 msgid "Cut"
 msgstr ""
 
-#: ppdc/sample.c:446
+#: ppdc/sample.c:449
 msgid "Cutter"
 msgstr ""
 
-#: ppdc/sample.c:239
+#: ppdc/sample.c:230
+msgid "DYMO"
+msgstr ""
+
+#: ppdc/sample.c:243
 msgid "Dark"
 msgstr ""
 
-#: ppdc/sample.c:235
+#: ppdc/sample.c:239
 msgid "Darkness"
 msgstr ""
 
-#: backend/lpd.c:1163
+#: backend/lpd.c:1167
 msgid "Data file sent successfully."
 msgstr ""
 
@@ -3959,7 +3979,7 @@
 msgid "Delete Printer"
 msgstr ""
 
-#: ppdc/sample.c:273
+#: ppdc/sample.c:276
 msgid "DeskJet Series"
 msgstr ""
 
@@ -3991,7 +4011,7 @@
 "        location = %s"
 msgstr ""
 
-#: ppdc/sample.c:431
+#: ppdc/sample.c:434
 msgid "Direct Thermal Media"
 msgstr ""
 
@@ -4020,7 +4040,7 @@
 msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr ""
 
-#: ppdc/sample.c:340
+#: ppdc/sample.c:343
 msgid "Disabled"
 msgstr ""
 
@@ -4029,24 +4049,20 @@
 msgid "Document #%d does not exist in job #%d."
 msgstr ""
 
-#: cups/ppd-cache.c:4283 cups/ppd-cache.c:4285 cups/ppd-cache.c:4348
-#: cups/ppd-cache.c:4385
+#: cups/ppd-cache.c:4471 cups/ppd-cache.c:4473 cups/ppd-cache.c:4536
+#: cups/ppd-cache.c:4573
 msgid "Draft"
 msgstr ""
 
-#: ppdc/sample.c:267
+#: ppdc/sample.c:270
 msgid "Duplexer"
 msgstr ""
 
-#: ppdc/sample.c:229
-msgid "Dymo"
-msgstr ""
-
-#: ppdc/sample.c:426
+#: ppdc/sample.c:429
 msgid "EPL1 Label Printer"
 msgstr ""
 
-#: ppdc/sample.c:429
+#: ppdc/sample.c:432
 msgid "EPL2 Label Printer"
 msgstr ""
 
@@ -4161,7 +4177,7 @@
 msgid "Envelope DL"
 msgstr ""
 
-#: ppdc/sample.c:261
+#: ppdc/sample.c:264
 msgid "Envelope Feed"
 msgstr ""
 
@@ -4289,7 +4305,7 @@
 msgid "Environment Variables:"
 msgstr ""
 
-#: ppdc/sample.c:240
+#: ppdc/sample.c:244
 msgid "Epson"
 msgstr ""
 
@@ -4318,43 +4334,43 @@
 msgid "European Fanfold Legal"
 msgstr ""
 
-#: ppdc/sample.c:350
+#: ppdc/sample.c:353
 msgid "Every 10 Labels"
 msgstr ""
 
-#: ppdc/sample.c:342
+#: ppdc/sample.c:345
 msgid "Every 2 Labels"
 msgstr ""
 
-#: ppdc/sample.c:343
+#: ppdc/sample.c:346
 msgid "Every 3 Labels"
 msgstr ""
 
-#: ppdc/sample.c:344
+#: ppdc/sample.c:347
 msgid "Every 4 Labels"
 msgstr ""
 
-#: ppdc/sample.c:345
+#: ppdc/sample.c:348
 msgid "Every 5 Labels"
 msgstr ""
 
-#: ppdc/sample.c:346
+#: ppdc/sample.c:349
 msgid "Every 6 Labels"
 msgstr ""
 
-#: ppdc/sample.c:347
+#: ppdc/sample.c:350
 msgid "Every 7 Labels"
 msgstr ""
 
-#: ppdc/sample.c:348
+#: ppdc/sample.c:351
 msgid "Every 8 Labels"
 msgstr ""
 
-#: ppdc/sample.c:349
+#: ppdc/sample.c:352
 msgid "Every 9 Labels"
 msgstr ""
 
-#: ppdc/sample.c:341
+#: ppdc/sample.c:344
 msgid "Every Label"
 msgstr ""
 
@@ -4362,7 +4378,7 @@
 msgid "Executive"
 msgstr ""
 
-#: cups/http-support.c:1540
+#: cups/http-support.c:1545
 msgid "Expectation Failed"
 msgstr ""
 
@@ -4409,16 +4425,16 @@
 msgstr ""
 
 #: filter/rastertoepson.c:1131 filter/rastertohp.c:802
-#: filter/rastertolabel.c:1259
+#: filter/rastertolabel.c:1260
 #, c-format
 msgid "Finished page %d."
 msgstr ""
 
-#: cups/ppd-cache.c:4171
+#: cups/ppd-cache.c:4359
 msgid "Finishing Preset"
 msgstr ""
 
-#: cups/ppd-cache.c:4061
+#: cups/ppd-cache.c:4134
 msgid "Fold"
 msgstr ""
 
@@ -4426,11 +4442,11 @@
 msgid "Folio"
 msgstr ""
 
-#: cups/http-support.c:1519
+#: cups/http-support.c:1524
 msgid "Forbidden"
 msgstr ""
 
-#: cups/http-support.c:1503
+#: cups/http-support.c:1508
 msgid "Found"
 msgstr ""
 
@@ -4438,7 +4454,7 @@
 msgid "General"
 msgstr ""
 
-#: ppdc/sample.c:251
+#: ppdc/sample.c:255
 msgid "Generic"
 msgstr ""
 
@@ -4446,7 +4462,7 @@
 msgid "Get-Response-PDU uses indefinite length"
 msgstr ""
 
-#: ppdc/sample.c:285
+#: ppdc/sample.c:288
 msgid "Glossy Paper"
 msgstr ""
 
@@ -4457,11 +4473,11 @@
 msgid "Got a printer-uri attribute but no job-id."
 msgstr ""
 
-#: cups/ppd-cache.c:3767 cups/ppd-cache.c:3778 ppdc/sample.c:275
+#: cups/ppd-cache.c:3767 cups/ppd-cache.c:3778 ppdc/sample.c:278
 msgid "Grayscale"
 msgstr ""
 
-#: ppdc/sample.c:272
+#: ppdc/sample.c:275
 msgid "HP"
 msgstr ""
 
@@ -4469,7 +4485,7 @@
 msgid "Hanging Folder"
 msgstr ""
 
-#: cups/hash.c:292
+#: cups/hash.c:289
 msgid "Hash buffer too small."
 msgstr ""
 
@@ -4477,7 +4493,7 @@
 msgid "Help file not in index."
 msgstr ""
 
-#: cups/ppd-cache.c:4290 cups/ppd-cache.c:4359 cups/ppd-cache.c:4390
+#: cups/ppd-cache.c:4478 cups/ppd-cache.c:4547 cups/ppd-cache.c:4578
 msgid "High"
 msgstr ""
 
@@ -4631,23 +4647,23 @@
 msgid "Illegal whitespace character"
 msgstr ""
 
-#: ppdc/sample.c:266
+#: ppdc/sample.c:269
 msgid "Installable Options"
 msgstr ""
 
-#: ppdc/sample.c:269
+#: ppdc/sample.c:272
 msgid "Installed"
 msgstr ""
 
-#: ppdc/sample.c:288
+#: ppdc/sample.c:291
 msgid "IntelliBar Label Printer"
 msgstr ""
 
-#: ppdc/sample.c:287
+#: ppdc/sample.c:290
 msgid "Intellitech"
 msgstr ""
 
-#: cups/http-support.c:1546
+#: cups/http-support.c:1551
 msgid "Internal Server Error"
 msgstr ""
 
@@ -4663,7 +4679,7 @@
 msgid "Internet Postage 3-Part"
 msgstr ""
 
-#: backend/ipp.c:319
+#: backend/ipp.c:318
 msgid "Internet Printing Protocol"
 msgstr ""
 
@@ -4838,19 +4854,19 @@
 msgid "Jobs"
 msgstr ""
 
-#: backend/lpd.c:162
+#: backend/lpd.c:166
 msgid "LPD/LPR Host or Printer"
 msgstr ""
 
-#: cups/dest.c:1856
+#: cups/dest.c:1855
 msgid "LPDEST environment variable names default destination that does not exist."
 msgstr ""
 
-#: ppdc/sample.c:230
+#: ppdc/sample.c:231
 msgid "Label Printer"
 msgstr ""
 
-#: ppdc/sample.c:441
+#: ppdc/sample.c:444
 msgid "Label Top"
 msgstr ""
 
@@ -4863,7 +4879,7 @@
 msgid "Large Address"
 msgstr ""
 
-#: ppdc/sample.c:286
+#: ppdc/sample.c:289
 msgid "LaserJet Series PCL 4/5"
 msgstr ""
 
@@ -4875,7 +4891,7 @@
 msgid "Letter Oversize Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:236
+#: ppdc/sample.c:240
 msgid "Light"
 msgstr ""
 
@@ -4887,7 +4903,7 @@
 msgid "List Available Printers"
 msgstr ""
 
-#: tools/ippeveprinter.c:604
+#: tools/ippeveprinter.c:642
 #, c-format
 msgid "Listening on port %d."
 msgstr ""
@@ -4896,15 +4912,19 @@
 msgid "Local printer created."
 msgstr ""
 
-#: cups/ppd-cache.c:3872 ppdc/sample.c:264
+#: cups/ppd-cache.c:3872 ppdc/sample.c:267
 msgid "Long-Edge (Portrait)"
 msgstr ""
 
-#: cups/http-support.c:1870
+#: cups/http-support.c:1875
 msgid "Looking for printer."
 msgstr ""
 
-#: ppdc/sample.c:260
+#: ppdc/sample.c:237
+msgid "Main Roll"
+msgstr ""
+
+#: ppdc/sample.c:263
 msgid "Manual Feed"
 msgstr ""
 
@@ -4912,19 +4932,19 @@
 msgid "Media Size"
 msgstr ""
 
-#: cups/ppd.c:808 cups/ppd.c:1345 ppdc/sample.c:254
+#: cups/ppd.c:808 cups/ppd.c:1345 ppdc/sample.c:236
 msgid "Media Source"
 msgstr ""
 
-#: ppdc/sample.c:359
+#: ppdc/sample.c:362
 msgid "Media Tracking"
 msgstr ""
 
-#: cups/ppd.c:806 cups/ppd.c:1343 ppdc/sample.c:280
+#: cups/ppd.c:806 cups/ppd.c:1343 ppdc/sample.c:283
 msgid "Media Type"
 msgstr ""
 
-#: ppdc/sample.c:237
+#: ppdc/sample.c:241
 msgid "Medium"
 msgstr ""
 
@@ -4991,11 +5011,11 @@
 msgid "Missing required attributes."
 msgstr ""
 
-#: cups/http-support.c:1636
+#: cups/http-support.c:1641
 msgid "Missing resource in URI"
 msgstr ""
 
-#: cups/http-support.c:1630
+#: cups/http-support.c:1635
 msgid "Missing scheme in URI"
 msgstr ""
 
@@ -5040,7 +5060,7 @@
 msgid "Move Job"
 msgstr ""
 
-#: cups/http-support.c:1500
+#: cups/http-support.c:1505
 msgid "Moved Permanently"
 msgstr ""
 
@@ -5056,15 +5076,15 @@
 msgid "Nested classes are not allowed."
 msgstr ""
 
-#: ppdc/sample.c:425
+#: ppdc/sample.c:428
 msgid "Never"
 msgstr ""
 
-#: cups/tls-darwin.c:690 cups/tls-gnutls.c:524
+#: cups/tls-darwin.c:665 cups/tls-gnutls.c:524
 msgid "New credentials are not valid for name."
 msgstr ""
 
-#: cups/tls-darwin.c:680 cups/tls-gnutls.c:514
+#: cups/tls-darwin.c:655 cups/tls-gnutls.c:514
 msgid "New credentials are older than stored credentials."
 msgstr ""
 
@@ -5072,7 +5092,7 @@
 msgid "No"
 msgstr ""
 
-#: cups/http-support.c:1497
+#: cups/http-support.c:1502
 msgid "No Content"
 msgstr ""
 
@@ -5109,7 +5129,7 @@
 msgid "No authentication information provided."
 msgstr ""
 
-#: cups/tls-darwin.c:630 cups/tls-gnutls.c:461
+#: cups/tls-darwin.c:605 cups/tls-gnutls.c:461
 msgid "No common name specified."
 msgstr ""
 
@@ -5117,7 +5137,7 @@
 msgid "No community name"
 msgstr ""
 
-#: cups/dest.c:1860 cups/dest.c:1872
+#: cups/dest.c:1859 cups/dest.c:1871
 msgid "No default destination."
 msgstr ""
 
@@ -5154,7 +5174,7 @@
 msgstr ""
 
 #: filter/rastertoepson.c:1161 filter/rastertohp.c:833
-#: filter/rastertolabel.c:1288
+#: filter/rastertolabel.c:1289
 msgid "No pages were found."
 msgstr ""
 
@@ -5190,7 +5210,7 @@
 msgid "No request-id"
 msgstr ""
 
-#: cups/tls-darwin.c:710 cups/tls-gnutls.c:544
+#: cups/tls-darwin.c:685 cups/tls-gnutls.c:544
 msgid "No stored credentials, not valid for name."
 msgstr ""
 
@@ -5210,41 +5230,41 @@
 msgid "No version number"
 msgstr ""
 
-#: ppdc/sample.c:362
+#: ppdc/sample.c:365
 msgid "Non-continuous (Mark sensing)"
 msgstr ""
 
-#: ppdc/sample.c:361
+#: ppdc/sample.c:364
 msgid "Non-continuous (Web sensing)"
 msgstr ""
 
-#: cups/ppd-cache.c:4014 cups/ppd-cache.c:4064 cups/ppd-cache.c:4114
-#: cups/ppd-cache.c:4174
+#: cups/ppd-cache.c:4059 cups/ppd-cache.c:4137 cups/ppd-cache.c:4225
+#: cups/ppd-cache.c:4315 cups/ppd-cache.c:4362
 msgid "None"
 msgstr ""
 
-#: cups/ppd-cache.c:4287 cups/ppd-cache.c:4353 cups/ppd-cache.c:4387
-#: ppdc/sample.c:238
+#: cups/ppd-cache.c:4475 cups/ppd-cache.c:4541 cups/ppd-cache.c:4575
+#: ppdc/sample.c:242
 msgid "Normal"
 msgstr ""
 
-#: cups/http-support.c:1522
+#: cups/http-support.c:1527
 msgid "Not Found"
 msgstr ""
 
-#: cups/http-support.c:1534
+#: cups/http-support.c:1539
 msgid "Not Implemented"
 msgstr ""
 
-#: ppdc/sample.c:268
+#: ppdc/sample.c:271
 msgid "Not Installed"
 msgstr ""
 
-#: cups/http-support.c:1509
+#: cups/http-support.c:1514
 msgid "Not Modified"
 msgstr ""
 
-#: cups/http-support.c:1537
+#: cups/http-support.c:1542
 msgid "Not Supported"
 msgstr ""
 
@@ -5256,15 +5276,15 @@
 msgid "Note"
 msgstr ""
 
-#: cups/http-support.c:1488 cups/http-support.c:1627 cups/ppd.c:283
+#: cups/http-support.c:1493 cups/http-support.c:1632 cups/ppd.c:283
 msgid "OK"
 msgstr ""
 
-#: cups/ppd-cache.c:3872 ppdc/sample.c:263
+#: cups/ppd-cache.c:3872 ppdc/sample.c:266
 msgid "Off (1-Sided)"
 msgstr ""
 
-#: ppdc/sample.c:356
+#: ppdc/sample.c:359
 msgid "Oki"
 msgstr ""
 
@@ -5303,11 +5323,11 @@
 msgstr ""
 
 #: berkeley/lpq.c:642 berkeley/lpr.c:431 berkeley/lprm.c:232
-#: scheduler/cupsfilter.c:1476 scheduler/main.c:2133 systemv/cancel.c:401
+#: scheduler/cupsfilter.c:1476 scheduler/main.c:2135 systemv/cancel.c:401
 #: systemv/cupsaccept.c:243 systemv/cupsctl.c:232 systemv/cupstestppd.c:3857
 #: systemv/lp.c:750 systemv/lpadmin.c:1620 systemv/lpinfo.c:497
 #: systemv/lpmove.c:216 systemv/lpoptions.c:538 systemv/lpstat.c:2044
-#: tools/ippeveprinter.c:7664 tools/ippfind.c:2765 tools/ipptool.c:4307
+#: tools/ippeveprinter.c:7922 tools/ippfind.c:2765 tools/ipptool.c:4307
 #: ppdc/ppdc.cxx:426 ppdc/ppdhtml.cxx:173 ppdc/ppdi.cxx:119
 #: ppdc/ppdmerge.cxx:356 ppdc/ppdpo.cxx:243
 msgid "Options:"
@@ -5333,7 +5353,7 @@
 msgid "Output Mode"
 msgstr ""
 
-#: ppdc/sample.c:252
+#: ppdc/sample.c:256
 msgid "PCL Laser Printer"
 msgstr ""
 
@@ -5361,7 +5381,7 @@
 msgid "PRC32K Oversize Long Edge"
 msgstr ""
 
-#: cups/dest.c:1858
+#: cups/dest.c:1857
 msgid "PRINTER environment variable names default destination that does not exist."
 msgstr ""
 
@@ -5373,11 +5393,11 @@
 msgid "Packet does not start with SEQUENCE"
 msgstr ""
 
-#: ppdc/sample.c:355
+#: ppdc/sample.c:358
 msgid "ParamCustominCutInterval"
 msgstr ""
 
-#: ppdc/sample.c:353
+#: ppdc/sample.c:356
 msgid "ParamCustominTearInterval"
 msgstr ""
 
@@ -5394,7 +5414,7 @@
 msgid "Pause Printer"
 msgstr ""
 
-#: ppdc/sample.c:443
+#: ppdc/sample.c:446
 msgid "Peel-Off"
 msgstr ""
 
@@ -5406,7 +5426,7 @@
 msgid "Photo Labels"
 msgstr ""
 
-#: ppdc/sample.c:281
+#: ppdc/sample.c:284
 msgid "Plain Paper"
 msgstr ""
 
@@ -5418,7 +5438,7 @@
 msgid "Port Monitor"
 msgstr ""
 
-#: ppdc/sample.c:270
+#: ppdc/sample.c:273
 msgid "PostScript Printer"
 msgstr ""
 
@@ -5438,11 +5458,11 @@
 msgid "Postcard Long Edge"
 msgstr ""
 
-#: backend/ipp.c:973 backend/ipp.c:981
+#: backend/ipp.c:972 backend/ipp.c:980
 msgid "Preparing to print."
 msgstr ""
 
-#: ppdc/sample.c:290
+#: ppdc/sample.c:293
 msgid "Print Density"
 msgstr ""
 
@@ -5450,15 +5470,15 @@
 msgid "Print Job:"
 msgstr ""
 
-#: ppdc/sample.c:335
+#: ppdc/sample.c:338
 msgid "Print Mode"
 msgstr ""
 
-#: cups/ppd-cache.c:4281 cups/ppd-cache.c:4343 cups/ppd-cache.c:4383
+#: cups/ppd-cache.c:4469 cups/ppd-cache.c:4531 cups/ppd-cache.c:4571
 msgid "Print Quality"
 msgstr ""
 
-#: ppdc/sample.c:378
+#: ppdc/sample.c:381
 msgid "Print Rate"
 msgstr ""
 
@@ -5466,7 +5486,7 @@
 msgid "Print Self-Test Page"
 msgstr ""
 
-#: ppdc/sample.c:322
+#: ppdc/sample.c:325
 msgid "Print Speed"
 msgstr ""
 
@@ -5474,11 +5494,11 @@
 msgid "Print Test Page"
 msgstr ""
 
-#: ppdc/sample.c:351
+#: ppdc/sample.c:354
 msgid "Print and Cut"
 msgstr ""
 
-#: ppdc/sample.c:339
+#: ppdc/sample.c:342
 msgid "Print and Tear"
 msgstr ""
 
@@ -5486,15 +5506,15 @@
 msgid "Print file sent."
 msgstr ""
 
-#: backend/ipp.c:2261
+#: backend/ipp.c:2269
 msgid "Print job canceled at printer."
 msgstr ""
 
-#: backend/ipp.c:2253
+#: backend/ipp.c:2261
 msgid "Print job too large."
 msgstr ""
 
-#: backend/ipp.c:1721
+#: backend/ipp.c:1722
 msgid "Print job was not accepted."
 msgstr ""
 
@@ -5507,7 +5527,7 @@
 msgid "Printer Added"
 msgstr ""
 
-#: ppdc/sample.c:255
+#: ppdc/sample.c:258
 msgid "Printer Default"
 msgstr ""
 
@@ -5523,19 +5543,19 @@
 msgid "Printer Paused"
 msgstr ""
 
-#: ppdc/sample.c:289
+#: ppdc/sample.c:292
 msgid "Printer Settings"
 msgstr ""
 
-#: backend/ipp.c:2256
+#: backend/ipp.c:2264
 msgid "Printer cannot print supplied content."
 msgstr ""
 
-#: backend/ipp.c:2259
+#: backend/ipp.c:2267
 msgid "Printer cannot print with supplied options."
 msgstr ""
 
-#: cups/ppd-cache.c:4556
+#: cups/ppd-cache.c:4744
 msgid "Printer does not support required IPP attributes or document formats."
 msgstr ""
 
@@ -5548,12 +5568,12 @@
 msgstr ""
 
 #: filter/rastertoepson.c:1107 filter/rastertohp.c:774
-#: filter/rastertolabel.c:1235
+#: filter/rastertolabel.c:1236
 #, c-format
 msgid "Printing page %d, %u%% complete."
 msgstr ""
 
-#: cups/ppd-cache.c:4111
+#: cups/ppd-cache.c:4222
 msgid "Punch"
 msgstr ""
 
@@ -5573,25 +5593,25 @@
 msgid "Reject Jobs"
 msgstr ""
 
-#: backend/lpd.c:1074 backend/lpd.c:1206
+#: backend/lpd.c:1078 backend/lpd.c:1210
 #, c-format
 msgid "Remote host did not accept control file (%d)."
 msgstr ""
 
-#: backend/lpd.c:1159
+#: backend/lpd.c:1163
 #, c-format
 msgid "Remote host did not accept data file (%d)."
 msgstr ""
 
-#: ppdc/sample.c:423
+#: ppdc/sample.c:426
 msgid "Reprint After Error"
 msgstr ""
 
-#: cups/http-support.c:1525
+#: cups/http-support.c:1530
 msgid "Request Entity Too Large"
 msgstr ""
 
-#: cups/ppd.c:812 cups/ppd.c:1349 ppdc/sample.c:231
+#: cups/ppd.c:812 cups/ppd.c:1349 ppdc/sample.c:232
 msgid "Resolution"
 msgstr ""
 
@@ -5607,7 +5627,7 @@
 msgid "Return Address"
 msgstr ""
 
-#: ppdc/sample.c:444
+#: ppdc/sample.c:447
 msgid "Rewind"
 msgstr ""
 
@@ -5615,11 +5635,15 @@
 msgid "SEQUENCE uses indefinite length"
 msgstr ""
 
-#: cups/http-support.c:1549
+#: cups/http-support.c:1554
 msgid "SSL/TLS Negotiation Error"
 msgstr ""
 
-#: cups/http-support.c:1506
+#: ppdc/sample.c:238
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
+#: cups/http-support.c:1511
 msgid "See Other"
 msgstr ""
 
@@ -5627,7 +5651,7 @@
 msgid "See remote printer."
 msgstr ""
 
-#: cups/tls-darwin.c:765 cups/tls-gnutls.c:606
+#: cups/tls-darwin.c:740 cups/tls-gnutls.c:606
 msgid "Self-signed credentials are blocked."
 msgstr ""
 
@@ -5651,11 +5675,11 @@
 msgid "Server Stopped"
 msgstr ""
 
-#: cups/tls-darwin.c:1275 cups/tls-gnutls.c:1298
+#: cups/tls-darwin.c:1250 cups/tls-gnutls.c:1299
 msgid "Server credentials not set."
 msgstr ""
 
-#: cups/http-support.c:1543
+#: cups/http-support.c:1548
 msgid "Service Unavailable"
 msgstr ""
 
@@ -5684,24 +5708,24 @@
 msgid "Shipping Address"
 msgstr ""
 
-#: cups/ppd-cache.c:3872 ppdc/sample.c:265
+#: cups/ppd-cache.c:3872 ppdc/sample.c:268
 msgid "Short-Edge (Landscape)"
 msgstr ""
 
-#: ppdc/sample.c:283
+#: ppdc/sample.c:286
 msgid "Special Paper"
 msgstr ""
 
-#: backend/lpd.c:1115
+#: backend/lpd.c:1119
 #, c-format
 msgid "Spooling job, %.0f%% complete."
 msgstr ""
 
-#: ppdc/sample.c:336
+#: ppdc/sample.c:339
 msgid "Standard"
 msgstr ""
 
-#: cups/ppd-cache.c:4011
+#: cups/ppd-cache.c:4056
 msgid "Staple"
 msgstr ""
 
@@ -5711,7 +5735,7 @@
 msgstr ""
 
 #: filter/rastertoepson.c:1083 filter/rastertohp.c:750
-#: filter/rastertolabel.c:1211
+#: filter/rastertolabel.c:1212
 #, c-format
 msgid "Starting page %d."
 msgstr ""
@@ -5742,7 +5766,7 @@
 msgid "Super B/A3"
 msgstr ""
 
-#: cups/http-support.c:1485
+#: cups/http-support.c:1490
 msgid "Switching Protocols"
 msgstr ""
 
@@ -5758,15 +5782,15 @@
 msgid "Tabloid Oversize Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:337
+#: ppdc/sample.c:340
 msgid "Tear"
 msgstr ""
 
-#: ppdc/sample.c:442
+#: ppdc/sample.c:445
 msgid "Tear-Off"
 msgstr ""
 
-#: ppdc/sample.c:383
+#: ppdc/sample.c:386
 msgid "Tear-Off Adjust Position"
 msgstr ""
 
@@ -5802,7 +5826,7 @@
 msgstr ""
 
 #: filter/rastertoepson.c:1052 filter/rastertohp.c:721
-#: filter/rastertolabel.c:1175
+#: filter/rastertolabel.c:1176
 msgid "The PPD file could not be opened."
 msgstr ""
 
@@ -5819,16 +5843,16 @@
 msgid "The notify-user-data value is too large (%d > 63 octets)."
 msgstr ""
 
-#: backend/ipp.c:993
+#: backend/ipp.c:992
 msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr ""
 
-#: backend/lpd.c:678 backend/lpd.c:1067 backend/lpd.c:1149 backend/lpd.c:1199
+#: backend/lpd.c:682 backend/lpd.c:1071 backend/lpd.c:1153 backend/lpd.c:1203
 msgid "The printer did not respond."
 msgstr ""
 
-#: backend/ipp.c:766 backend/ipp.c:956 backend/ipp.c:1070 backend/ipp.c:1523
-#: backend/ipp.c:1693 backend/lpd.c:886 backend/socket.c:354
+#: backend/ipp.c:765 backend/ipp.c:955 backend/ipp.c:1069 backend/ipp.c:1524
+#: backend/ipp.c:1694 backend/lpd.c:890 backend/socket.c:354
 #: backend/usb-unix.c:117 backend/usb-unix.c:407 backend/usb-unix.c:490
 msgid "The printer is in use."
 msgstr ""
@@ -5837,8 +5861,8 @@
 msgid "The printer is not connected."
 msgstr ""
 
-#: backend/ipp.c:744 backend/ipp.c:777 backend/ipp.c:952 backend/lpd.c:865
-#: backend/lpd.c:906 backend/socket.c:333 backend/socket.c:366
+#: backend/ipp.c:743 backend/ipp.c:776 backend/ipp.c:951 backend/lpd.c:869
+#: backend/lpd.c:910 backend/socket.c:333 backend/socket.c:366
 msgid "The printer is not responding."
 msgstr ""
 
@@ -5854,11 +5878,11 @@
 msgid "The printer is offline."
 msgstr ""
 
-#: backend/ipp.c:760 backend/lpd.c:880 backend/socket.c:348
+#: backend/ipp.c:759 backend/lpd.c:884 backend/socket.c:348
 msgid "The printer is unreachable at this time."
 msgstr ""
 
-#: backend/ipp.c:753 backend/lpd.c:873 backend/socket.c:341
+#: backend/ipp.c:752 backend/lpd.c:877 backend/socket.c:341
 msgid "The printer may not exist or is unavailable at this time."
 msgstr ""
 
@@ -5916,7 +5940,7 @@
 msgid "There was an unrecoverable USB error."
 msgstr ""
 
-#: ppdc/sample.c:430
+#: ppdc/sample.c:433
 msgid "Thermal Transfer Media"
 msgstr ""
 
@@ -5934,40 +5958,40 @@
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr ""
 
-#: ppdc/sample.c:284
+#: ppdc/sample.c:287
 msgid "Transparency"
 msgstr ""
 
-#: ppdc/sample.c:279
+#: ppdc/sample.c:282
 msgid "Tray"
 msgstr ""
 
-#: ppdc/sample.c:256
+#: ppdc/sample.c:259
 msgid "Tray 1"
 msgstr ""
 
-#: ppdc/sample.c:257
+#: ppdc/sample.c:260
 msgid "Tray 2"
 msgstr ""
 
-#: ppdc/sample.c:258
+#: ppdc/sample.c:261
 msgid "Tray 3"
 msgstr ""
 
-#: ppdc/sample.c:259
+#: ppdc/sample.c:262
 msgid "Tray 4"
 msgstr ""
 
-#: cups/tls-darwin.c:670 cups/tls-darwin.c:752 cups/tls-gnutls.c:504
+#: cups/tls-darwin.c:645 cups/tls-darwin.c:727 cups/tls-gnutls.c:504
 #: cups/tls-gnutls.c:586
 msgid "Trust on first use is disabled."
 msgstr ""
 
-#: cups/http-support.c:1528
+#: cups/http-support.c:1533
 msgid "URI Too Long"
 msgstr ""
 
-#: cups/http-support.c:1603
+#: cups/http-support.c:1608
 msgid "URI too large"
 msgstr ""
 
@@ -6019,7 +6043,7 @@
 msgid "Unable to add class"
 msgstr ""
 
-#: backend/ipp.c:1880
+#: backend/ipp.c:1887
 msgid "Unable to add document to print job."
 msgstr ""
 
@@ -6044,11 +6068,11 @@
 msgid "Unable to allocate memory for pages array"
 msgstr ""
 
-#: tools/ippeveprinter.c:1486
+#: tools/ippeveprinter.c:1628
 msgid "Unable to allocate memory for printer"
 msgstr ""
 
-#: backend/ipp.c:2165 backend/ipp.c:2696
+#: backend/ipp.c:2173 backend/ipp.c:2704
 msgid "Unable to cancel print job."
 msgstr ""
 
@@ -6082,7 +6106,7 @@
 msgid "Unable to connect to host."
 msgstr ""
 
-#: backend/ipp.c:723 backend/ipp.c:1275 backend/lpd.c:846 backend/socket.c:314
+#: backend/ipp.c:722 backend/ipp.c:1274 backend/lpd.c:850 backend/socket.c:314
 #: backend/usb-unix.c:103
 msgid "Unable to contact printer, queuing on next printer in class."
 msgstr ""
@@ -6096,7 +6120,7 @@
 msgid "Unable to copy PPD file."
 msgstr ""
 
-#: cups/tls-darwin.c:636 cups/tls-gnutls.c:467
+#: cups/tls-darwin.c:611 cups/tls-gnutls.c:467
 msgid "Unable to create credentials from array."
 msgstr ""
 
@@ -6108,11 +6132,11 @@
 msgid "Unable to create printer."
 msgstr ""
 
-#: cups/tls-darwin.c:1566 cups/tls-gnutls.c:1510
+#: cups/tls-darwin.c:1541 cups/tls-gnutls.c:1511
 msgid "Unable to create server credentials."
 msgstr ""
 
-#: tools/ippeveprinter.c:626
+#: tools/ippeveprinter.c:664
 #, c-format
 msgid "Unable to create spool directory \"%s\": %s"
 msgstr ""
@@ -6137,36 +6161,36 @@
 msgid "Unable to edit cupsd.conf files larger than 1MB"
 msgstr ""
 
-#: cups/tls-darwin.c:1793
+#: cups/tls-darwin.c:1768
 #, c-format
 msgid "Unable to establish a secure connection to host (%d)."
 msgstr ""
 
-#: cups/tls-darwin.c:1754
+#: cups/tls-darwin.c:1729
 msgid "Unable to establish a secure connection to host (certificate chain invalid)."
 msgstr ""
 
-#: cups/tls-darwin.c:1744
+#: cups/tls-darwin.c:1719
 msgid "Unable to establish a secure connection to host (certificate not yet valid)."
 msgstr ""
 
-#: cups/tls-darwin.c:1739
+#: cups/tls-darwin.c:1714
 msgid "Unable to establish a secure connection to host (expired certificate)."
 msgstr ""
 
-#: cups/tls-darwin.c:1749
+#: cups/tls-darwin.c:1724
 msgid "Unable to establish a secure connection to host (host name mismatch)."
 msgstr ""
 
-#: cups/tls-darwin.c:1759
+#: cups/tls-darwin.c:1734
 msgid "Unable to establish a secure connection to host (peer dropped connection before responding)."
 msgstr ""
 
-#: cups/tls-darwin.c:1734
+#: cups/tls-darwin.c:1709
 msgid "Unable to establish a secure connection to host (self-signed certificate)."
 msgstr ""
 
-#: cups/tls-darwin.c:1729
+#: cups/tls-darwin.c:1704
 msgid "Unable to establish a secure connection to host (untrusted certificate)."
 msgstr ""
 
@@ -6174,7 +6198,7 @@
 msgid "Unable to establish a secure connection to host."
 msgstr ""
 
-#: tools/ippeveprinter.c:1461 tools/ippeveprinter.c:1471
+#: tools/ippeveprinter.c:1603 tools/ippeveprinter.c:1613
 #, c-format
 msgid "Unable to execute command \"%s\": %s"
 msgstr ""
@@ -6183,15 +6207,15 @@
 msgid "Unable to find destination for job"
 msgstr ""
 
-#: cups/http-support.c:2094
+#: cups/http-support.c:2099
 msgid "Unable to find printer."
 msgstr ""
 
-#: cups/tls-darwin.c:1579
+#: cups/tls-darwin.c:1554
 msgid "Unable to find server credentials."
 msgstr ""
 
-#: backend/ipp.c:3359
+#: backend/ipp.c:3367
 msgid "Unable to get backend exit status."
 msgstr ""
 
@@ -6219,7 +6243,7 @@
 msgid "Unable to get printer status"
 msgstr ""
 
-#: backend/ipp.c:1017
+#: backend/ipp.c:1016
 msgid "Unable to get printer status."
 msgstr ""
 
@@ -6232,7 +6256,7 @@
 msgid "Unable to locate printer \"%s\"."
 msgstr ""
 
-#: backend/dnssd.c:752 backend/ipp.c:336 backend/lpd.c:181
+#: backend/dnssd.c:752 backend/ipp.c:335 backend/lpd.c:185
 #: backend/socket.c:155
 msgid "Unable to locate printer."
 msgstr ""
@@ -6274,14 +6298,14 @@
 msgid "Unable to open help file."
 msgstr ""
 
-#: backend/ipp.c:377 backend/ipp.c:1620 backend/ipp.c:1833 backend/lpd.c:469
+#: backend/ipp.c:376 backend/ipp.c:1621 backend/ipp.c:1834 backend/lpd.c:473
 #: backend/socket.c:142 backend/usb.c:224 filter/gziptoany.c:65
 #: filter/pstops.c:262
 msgid "Unable to open print file"
 msgstr ""
 
 #: filter/rastertoepson.c:1012 filter/rastertohp.c:681
-#: filter/rastertolabel.c:1133
+#: filter/rastertolabel.c:1134
 msgid "Unable to open raster file"
 msgstr ""
 
@@ -6294,8 +6318,8 @@
 msgid "Unable to read print data."
 msgstr ""
 
-#: tools/ippeveprinter.c:6613 tools/ippeveprinter.c:6631
-#: tools/ippeveprinter.c:6650 tools/ippeveprinter.c:6664
+#: tools/ippeveprinter.c:6861 tools/ippeveprinter.c:6879
+#: tools/ippeveprinter.c:6898 tools/ippeveprinter.c:6912
 #, c-format
 msgid "Unable to register \"%s.%s\": %d"
 msgstr ""
@@ -6304,7 +6328,7 @@
 msgid "Unable to rename job document file."
 msgstr ""
 
-#: cups/dest.c:3265
+#: cups/dest.c:3252
 msgid "Unable to resolve printer-uri."
 msgstr ""
 
@@ -6328,7 +6352,7 @@
 msgid "Unable to set server default"
 msgstr ""
 
-#: backend/ipp.c:3218 backend/ipp.c:3295 backend/ipp.c:3303
+#: backend/ipp.c:3226 backend/ipp.c:3303 backend/ipp.c:3311
 msgid "Unable to start backend process."
 msgstr ""
 
@@ -6349,7 +6373,7 @@
 msgid "Unable to write uncompressed print data: %s"
 msgstr ""
 
-#: cups/http-support.c:1516
+#: cups/http-support.c:1521
 msgid "Unauthorized"
 msgstr ""
 
@@ -6357,7 +6381,7 @@
 msgid "Units"
 msgstr ""
 
-#: cups/http-support.c:1556 cups/http-support.c:1640 cups/ppd.c:313
+#: cups/http-support.c:1561 cups/http-support.c:1645 cups/ppd.c:313
 msgid "Unknown"
 msgstr ""
 
@@ -6366,27 +6390,27 @@
 msgid "Unknown choice \"%s\" for option \"%s\"."
 msgstr ""
 
-#: tools/ippeveprinter.c:3848
+#: tools/ippeveprinter.c:3996
 #, c-format
 msgid "Unknown directive \"%s\" on line %d of \"%s\" ignored."
 msgstr ""
 
-#: backend/ipp.c:519
+#: backend/ipp.c:518
 #, c-format
 msgid "Unknown encryption option value: \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:327
+#: backend/lpd.c:331
 #, c-format
 msgid "Unknown file order: \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:298
+#: backend/lpd.c:302
 #, c-format
 msgid "Unknown format character: \"%c\"."
 msgstr ""
 
-#: cups/hash.c:278
+#: cups/hash.c:279
 msgid "Unknown hash algorithm."
 msgstr ""
 
@@ -6394,7 +6418,7 @@
 msgid "Unknown media size name."
 msgstr ""
 
-#: backend/ipp.c:583
+#: backend/ipp.c:582
 #, c-format
 msgid "Unknown option \"%s\" with value \"%s\"."
 msgstr ""
@@ -6404,7 +6428,7 @@
 msgid "Unknown option \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:313
+#: backend/lpd.c:317
 #, c-format
 msgid "Unknown print mode: \"%s\"."
 msgstr ""
@@ -6427,7 +6451,7 @@
 msgid "Unknown request version."
 msgstr ""
 
-#: cups/http-support.c:1633
+#: cups/http-support.c:1638
 msgid "Unknown scheme in URI"
 msgstr ""
 
@@ -6435,7 +6459,7 @@
 msgid "Unknown service name."
 msgstr ""
 
-#: backend/ipp.c:548
+#: backend/ipp.c:547
 #, c-format
 msgid "Unknown version option value: \"%s\"."
 msgstr ""
@@ -6515,7 +6539,7 @@
 msgid "Unsupported value type"
 msgstr ""
 
-#: cups/http-support.c:1531
+#: cups/http-support.c:1536
 msgid "Upgrade Required"
 msgstr ""
 
@@ -6524,7 +6548,7 @@
 msgid "Usage: %s [options] destination(s)"
 msgstr ""
 
-#: backend/dnssd.c:192 backend/ipp.c:325 backend/lpd.c:168
+#: backend/dnssd.c:192 backend/ipp.c:324 backend/lpd.c:172
 #: backend/socket.c:119 backend/usb.c:170 filter/commandtops.c:57
 #: filter/gziptoany.c:38 filter/pstops.c:223 monitor/bcp.c:48
 #: monitor/tbcp.c:47
@@ -6543,7 +6567,7 @@
 msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
 msgstr ""
 
-#: scheduler/main.c:2132
+#: scheduler/main.c:2134
 msgid "Usage: cupsd [options]"
 msgstr ""
 
@@ -6557,7 +6581,7 @@
 "       program | cupstestppd [options] -"
 msgstr ""
 
-#: tools/ippeveprinter.c:7663
+#: tools/ippeveprinter.c:7921
 msgid "Usage: ippeveprinter [options] \"name\""
 msgstr ""
 
@@ -6650,7 +6674,7 @@
 msgid "Usage: snmp [host-or-ip-address]"
 msgstr ""
 
-#: tools/ippeveprinter.c:631
+#: tools/ippeveprinter.c:669
 #, c-format
 msgid "Using spool directory \"%s\"."
 msgstr ""
@@ -6667,7 +6691,7 @@
 msgid "Version uses indefinite length"
 msgstr ""
 
-#: backend/ipp.c:2000
+#: backend/ipp.c:2009
 msgid "Waiting for job to complete."
 msgstr ""
 
@@ -6683,7 +6707,7 @@
 msgid "Warning: This program will be removed in a future version of CUPS."
 msgstr ""
 
-#: cups/http-support.c:1552
+#: cups/http-support.c:1557
 msgid "Web Interface is Disabled"
 msgstr ""
 
@@ -6704,11 +6728,11 @@
 msgid "Your account does not have the necessary privileges."
 msgstr ""
 
-#: ppdc/sample.c:434
+#: ppdc/sample.c:437
 msgid "ZPL Label Printer"
 msgstr ""
 
-#: ppdc/sample.c:357
+#: ppdc/sample.c:360
 msgid "Zebra"
 msgstr ""
 
@@ -8292,433 +8316,443 @@
 msgid "finishing-template.trim-after-pages"
 msgstr ""
 
-#. TRANSLATORS: Finishings
+#. TRANSLATORS: Trim After Every Set
 #: locale/ipp-strings.c:580
+msgid "finishing-template.trim-after-sets"
+msgstr ""
+
+#. TRANSLATORS: Trim After Every Page
+#: locale/ipp-strings.c:582
+msgid "finishing-template.trim-after-sheets"
+msgstr ""
+
+#. TRANSLATORS: Finishings
+#: locale/ipp-strings.c:584
 msgid "finishings"
 msgstr ""
 
 #. TRANSLATORS: Finishings
-#: locale/ipp-strings.c:582
+#: locale/ipp-strings.c:586
 msgid "finishings-col"
 msgstr ""
 
 #. TRANSLATORS: Fold
-#: locale/ipp-strings.c:584
+#: locale/ipp-strings.c:588
 msgid "finishings.10"
 msgstr ""
 
 #. TRANSLATORS: Z Fold
-#: locale/ipp-strings.c:586
+#: locale/ipp-strings.c:590
 msgid "finishings.100"
 msgstr ""
 
 #. TRANSLATORS: Engineering Z Fold
-#: locale/ipp-strings.c:588
+#: locale/ipp-strings.c:592
 msgid "finishings.101"
 msgstr ""
 
 #. TRANSLATORS: Trim
-#: locale/ipp-strings.c:590
+#: locale/ipp-strings.c:594
 msgid "finishings.11"
 msgstr ""
 
 #. TRANSLATORS: Bale
-#: locale/ipp-strings.c:592
+#: locale/ipp-strings.c:596
 msgid "finishings.12"
 msgstr ""
 
 #. TRANSLATORS: Booklet Maker
-#: locale/ipp-strings.c:594
+#: locale/ipp-strings.c:598
 msgid "finishings.13"
 msgstr ""
 
 #. TRANSLATORS: Jog Offset
-#: locale/ipp-strings.c:596
+#: locale/ipp-strings.c:600
 msgid "finishings.14"
 msgstr ""
 
 #. TRANSLATORS: Coat
-#: locale/ipp-strings.c:598
+#: locale/ipp-strings.c:602
 msgid "finishings.15"
 msgstr ""
 
 #. TRANSLATORS: Laminate
-#: locale/ipp-strings.c:600
+#: locale/ipp-strings.c:604
 msgid "finishings.16"
 msgstr ""
 
 #. TRANSLATORS: Staple Top Left
-#: locale/ipp-strings.c:602
+#: locale/ipp-strings.c:606
 msgid "finishings.20"
 msgstr ""
 
 #. TRANSLATORS: Staple Bottom Left
-#: locale/ipp-strings.c:604
+#: locale/ipp-strings.c:608
 msgid "finishings.21"
 msgstr ""
 
 #. TRANSLATORS: Staple Top Right
-#: locale/ipp-strings.c:606
+#: locale/ipp-strings.c:610
 msgid "finishings.22"
 msgstr ""
 
 #. TRANSLATORS: Staple Bottom Right
-#: locale/ipp-strings.c:608
+#: locale/ipp-strings.c:612
 msgid "finishings.23"
 msgstr ""
 
 #. TRANSLATORS: Edge Stitch Left
-#: locale/ipp-strings.c:610
+#: locale/ipp-strings.c:614
 msgid "finishings.24"
 msgstr ""
 
 #. TRANSLATORS: Edge Stitch Top
-#: locale/ipp-strings.c:612
+#: locale/ipp-strings.c:616
 msgid "finishings.25"
 msgstr ""
 
 #. TRANSLATORS: Edge Stitch Right
-#: locale/ipp-strings.c:614
+#: locale/ipp-strings.c:618
 msgid "finishings.26"
 msgstr ""
 
 #. TRANSLATORS: Edge Stitch Bottom
-#: locale/ipp-strings.c:616
+#: locale/ipp-strings.c:620
 msgid "finishings.27"
 msgstr ""
 
 #. TRANSLATORS: 2 Staples on Left
-#: locale/ipp-strings.c:618
+#: locale/ipp-strings.c:622
 msgid "finishings.28"
 msgstr ""
 
 #. TRANSLATORS: 2 Staples on Top
-#: locale/ipp-strings.c:620
+#: locale/ipp-strings.c:624
 msgid "finishings.29"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:622
+#: locale/ipp-strings.c:626
 msgid "finishings.3"
 msgstr ""
 
 #. TRANSLATORS: 2 Staples on Right
-#: locale/ipp-strings.c:624
+#: locale/ipp-strings.c:628
 msgid "finishings.30"
 msgstr ""
 
 #. TRANSLATORS: 2 Staples on Bottom
-#: locale/ipp-strings.c:626
+#: locale/ipp-strings.c:630
 msgid "finishings.31"
 msgstr ""
 
 #. TRANSLATORS: 3 Staples on Left
-#: locale/ipp-strings.c:628
+#: locale/ipp-strings.c:632
 msgid "finishings.32"
 msgstr ""
 
 #. TRANSLATORS: 3 Staples on Top
-#: locale/ipp-strings.c:630
+#: locale/ipp-strings.c:634
 msgid "finishings.33"
 msgstr ""
 
 #. TRANSLATORS: 3 Staples on Right
-#: locale/ipp-strings.c:632
+#: locale/ipp-strings.c:636
 msgid "finishings.34"
 msgstr ""
 
 #. TRANSLATORS: 3 Staples on Bottom
-#: locale/ipp-strings.c:634
+#: locale/ipp-strings.c:638
 msgid "finishings.35"
 msgstr ""
 
 #. TRANSLATORS: Staple
-#: locale/ipp-strings.c:636
+#: locale/ipp-strings.c:640
 msgid "finishings.4"
 msgstr ""
 
 #. TRANSLATORS: Punch
-#: locale/ipp-strings.c:638
+#: locale/ipp-strings.c:642
 msgid "finishings.5"
 msgstr ""
 
 #. TRANSLATORS: Bind Left
-#: locale/ipp-strings.c:640
+#: locale/ipp-strings.c:644
 msgid "finishings.50"
 msgstr ""
 
 #. TRANSLATORS: Bind Top
-#: locale/ipp-strings.c:642
+#: locale/ipp-strings.c:646
 msgid "finishings.51"
 msgstr ""
 
 #. TRANSLATORS: Bind Right
-#: locale/ipp-strings.c:644
+#: locale/ipp-strings.c:648
 msgid "finishings.52"
 msgstr ""
 
 #. TRANSLATORS: Bind Bottom
-#: locale/ipp-strings.c:646
+#: locale/ipp-strings.c:650
 msgid "finishings.53"
 msgstr ""
 
 #. TRANSLATORS: Cover
-#: locale/ipp-strings.c:648
+#: locale/ipp-strings.c:652
 msgid "finishings.6"
 msgstr ""
 
 #. TRANSLATORS: Trim Pages
-#: locale/ipp-strings.c:650
+#: locale/ipp-strings.c:654
 msgid "finishings.60"
 msgstr ""
 
 #. TRANSLATORS: Trim Documents
-#: locale/ipp-strings.c:652
+#: locale/ipp-strings.c:656
 msgid "finishings.61"
 msgstr ""
 
 #. TRANSLATORS: Trim Copies
-#: locale/ipp-strings.c:654
+#: locale/ipp-strings.c:658
 msgid "finishings.62"
 msgstr ""
 
 #. TRANSLATORS: Trim Job
-#: locale/ipp-strings.c:656
+#: locale/ipp-strings.c:660
 msgid "finishings.63"
 msgstr ""
 
 #. TRANSLATORS: Bind
-#: locale/ipp-strings.c:658
+#: locale/ipp-strings.c:662
 msgid "finishings.7"
 msgstr ""
 
 #. TRANSLATORS: Punch Top Left
-#: locale/ipp-strings.c:660
+#: locale/ipp-strings.c:664
 msgid "finishings.70"
 msgstr ""
 
 #. TRANSLATORS: Punch Bottom Left
-#: locale/ipp-strings.c:662
+#: locale/ipp-strings.c:666
 msgid "finishings.71"
 msgstr ""
 
 #. TRANSLATORS: Punch Top Right
-#: locale/ipp-strings.c:664
+#: locale/ipp-strings.c:668
 msgid "finishings.72"
 msgstr ""
 
 #. TRANSLATORS: Punch Bottom Right
-#: locale/ipp-strings.c:666
+#: locale/ipp-strings.c:670
 msgid "finishings.73"
 msgstr ""
 
 #. TRANSLATORS: 2-hole Punch Left
-#: locale/ipp-strings.c:668
+#: locale/ipp-strings.c:672
 msgid "finishings.74"
 msgstr ""
 
 #. TRANSLATORS: 2-hole Punch Top
-#: locale/ipp-strings.c:670
+#: locale/ipp-strings.c:674
 msgid "finishings.75"
 msgstr ""
 
 #. TRANSLATORS: 2-hole Punch Right
-#: locale/ipp-strings.c:672
+#: locale/ipp-strings.c:676
 msgid "finishings.76"
 msgstr ""
 
 #. TRANSLATORS: 2-hole Punch Bottom
-#: locale/ipp-strings.c:674
+#: locale/ipp-strings.c:678
 msgid "finishings.77"
 msgstr ""
 
 #. TRANSLATORS: 3-hole Punch Left
-#: locale/ipp-strings.c:676
+#: locale/ipp-strings.c:680
 msgid "finishings.78"
 msgstr ""
 
 #. TRANSLATORS: 3-hole Punch Top
-#: locale/ipp-strings.c:678
+#: locale/ipp-strings.c:682
 msgid "finishings.79"
 msgstr ""
 
 #. TRANSLATORS: Saddle Stitch
-#: locale/ipp-strings.c:680
+#: locale/ipp-strings.c:684
 msgid "finishings.8"
 msgstr ""
 
 #. TRANSLATORS: 3-hole Punch Right
-#: locale/ipp-strings.c:682
+#: locale/ipp-strings.c:686
 msgid "finishings.80"
 msgstr ""
 
 #. TRANSLATORS: 3-hole Punch Bottom
-#: locale/ipp-strings.c:684
+#: locale/ipp-strings.c:688
 msgid "finishings.81"
 msgstr ""
 
 #. TRANSLATORS: 4-hole Punch Left
-#: locale/ipp-strings.c:686
+#: locale/ipp-strings.c:690
 msgid "finishings.82"
 msgstr ""
 
 #. TRANSLATORS: 4-hole Punch Top
-#: locale/ipp-strings.c:688
+#: locale/ipp-strings.c:692
 msgid "finishings.83"
 msgstr ""
 
 #. TRANSLATORS: 4-hole Punch Right
-#: locale/ipp-strings.c:690
+#: locale/ipp-strings.c:694
 msgid "finishings.84"
 msgstr ""
 
 #. TRANSLATORS: 4-hole Punch Bottom
-#: locale/ipp-strings.c:692
+#: locale/ipp-strings.c:696
 msgid "finishings.85"
 msgstr ""
 
 #. TRANSLATORS: Multi-hole Punch Left
-#: locale/ipp-strings.c:694
+#: locale/ipp-strings.c:698
 msgid "finishings.86"
 msgstr ""
 
 #. TRANSLATORS: Multi-hole Punch Top
-#: locale/ipp-strings.c:696
+#: locale/ipp-strings.c:700
 msgid "finishings.87"
 msgstr ""
 
 #. TRANSLATORS: Multi-hole Punch Right
-#: locale/ipp-strings.c:698
+#: locale/ipp-strings.c:702
 msgid "finishings.88"
 msgstr ""
 
 #. TRANSLATORS: Multi-hole Punch Bottom
-#: locale/ipp-strings.c:700
+#: locale/ipp-strings.c:704
 msgid "finishings.89"
 msgstr ""
 
 #. TRANSLATORS: Edge Stitch
-#: locale/ipp-strings.c:702
+#: locale/ipp-strings.c:706
 msgid "finishings.9"
 msgstr ""
 
 #. TRANSLATORS: Accordion Fold
-#: locale/ipp-strings.c:704
+#: locale/ipp-strings.c:708
 msgid "finishings.90"
 msgstr ""
 
 #. TRANSLATORS: Double Gate Fold
-#: locale/ipp-strings.c:706
+#: locale/ipp-strings.c:710
 msgid "finishings.91"
 msgstr ""
 
 #. TRANSLATORS: Gate Fold
-#: locale/ipp-strings.c:708
+#: locale/ipp-strings.c:712
 msgid "finishings.92"
 msgstr ""
 
 #. TRANSLATORS: Half Fold
-#: locale/ipp-strings.c:710
+#: locale/ipp-strings.c:714
 msgid "finishings.93"
 msgstr ""
 
 #. TRANSLATORS: Half Z Fold
-#: locale/ipp-strings.c:712
+#: locale/ipp-strings.c:716
 msgid "finishings.94"
 msgstr ""
 
 #. TRANSLATORS: Left Gate Fold
-#: locale/ipp-strings.c:714
+#: locale/ipp-strings.c:718
 msgid "finishings.95"
 msgstr ""
 
 #. TRANSLATORS: Letter Fold
-#: locale/ipp-strings.c:716
+#: locale/ipp-strings.c:720
 msgid "finishings.96"
 msgstr ""
 
 #. TRANSLATORS: Parallel Fold
-#: locale/ipp-strings.c:718
+#: locale/ipp-strings.c:722
 msgid "finishings.97"
 msgstr ""
 
 #. TRANSLATORS: Poster Fold
-#: locale/ipp-strings.c:720
+#: locale/ipp-strings.c:724
 msgid "finishings.98"
 msgstr ""
 
 #. TRANSLATORS: Right Gate Fold
-#: locale/ipp-strings.c:722
+#: locale/ipp-strings.c:726
 msgid "finishings.99"
 msgstr ""
 
 #. TRANSLATORS: Fold
-#: locale/ipp-strings.c:724
+#: locale/ipp-strings.c:728
 msgid "folding"
 msgstr ""
 
 #. TRANSLATORS: Fold Direction
-#: locale/ipp-strings.c:726
+#: locale/ipp-strings.c:730
 msgid "folding-direction"
 msgstr ""
 
 #. TRANSLATORS: Inward
-#: locale/ipp-strings.c:728
+#: locale/ipp-strings.c:732
 msgid "folding-direction.inward"
 msgstr ""
 
 #. TRANSLATORS: Outward
-#: locale/ipp-strings.c:730
+#: locale/ipp-strings.c:734
 msgid "folding-direction.outward"
 msgstr ""
 
 #. TRANSLATORS: Fold Position
-#: locale/ipp-strings.c:732
+#: locale/ipp-strings.c:736
 msgid "folding-offset"
 msgstr ""
 
 #. TRANSLATORS: Fold Edge
-#: locale/ipp-strings.c:734
+#: locale/ipp-strings.c:738
 msgid "folding-reference-edge"
 msgstr ""
 
 #. TRANSLATORS: Bottom
-#: locale/ipp-strings.c:736
+#: locale/ipp-strings.c:740
 msgid "folding-reference-edge.bottom"
 msgstr ""
 
 #. TRANSLATORS: Left
-#: locale/ipp-strings.c:738
+#: locale/ipp-strings.c:742
 msgid "folding-reference-edge.left"
 msgstr ""
 
 #. TRANSLATORS: Right
-#: locale/ipp-strings.c:740
+#: locale/ipp-strings.c:744
 msgid "folding-reference-edge.right"
 msgstr ""
 
 #. TRANSLATORS: Top
-#: locale/ipp-strings.c:742
+#: locale/ipp-strings.c:746
 msgid "folding-reference-edge.top"
 msgstr ""
 
 #. TRANSLATORS: Font Name
-#: locale/ipp-strings.c:744
+#: locale/ipp-strings.c:748
 msgid "font-name-requested"
 msgstr ""
 
 #. TRANSLATORS: Font Size
-#: locale/ipp-strings.c:746
+#: locale/ipp-strings.c:750
 msgid "font-size-requested"
 msgstr ""
 
 #. TRANSLATORS: Force Front Side
-#: locale/ipp-strings.c:748
+#: locale/ipp-strings.c:752
 msgid "force-front-side"
 msgstr ""
 
 #. TRANSLATORS: From Name
-#: locale/ipp-strings.c:750
+#: locale/ipp-strings.c:754
 msgid "from-name"
 msgstr ""
 
@@ -8735,36 +8769,36 @@
 msgstr ""
 
 #. TRANSLATORS: Imposition Template
-#: locale/ipp-strings.c:752
+#: locale/ipp-strings.c:756
 msgid "imposition-template"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:754
+#: locale/ipp-strings.c:758
 msgid "imposition-template.none"
 msgstr ""
 
 #. TRANSLATORS: Signature
-#: locale/ipp-strings.c:756
+#: locale/ipp-strings.c:760
 msgid "imposition-template.signature"
 msgstr ""
 
 #. TRANSLATORS: Insert Page Number
-#: locale/ipp-strings.c:758
+#: locale/ipp-strings.c:762
 msgid "insert-after-page-number"
 msgstr ""
 
 #. TRANSLATORS: Insert Count
-#: locale/ipp-strings.c:760
+#: locale/ipp-strings.c:764
 msgid "insert-count"
 msgstr ""
 
 #. TRANSLATORS: Insert Sheet
-#: locale/ipp-strings.c:762
+#: locale/ipp-strings.c:766
 msgid "insert-sheet"
 msgstr ""
 
-#: tools/ippeveprinter.c:4702
+#: tools/ippeveprinter.c:4850
 #, c-format
 msgid "ippeveprinter: Unable to open \"%s\": %s on line %d."
 msgstr ""
@@ -8920,267 +8954,267 @@
 msgstr ""
 
 #. TRANSLATORS: Job Account ID
-#: locale/ipp-strings.c:764
+#: locale/ipp-strings.c:768
 msgid "job-account-id"
 msgstr ""
 
 #. TRANSLATORS: Job Account Type
-#: locale/ipp-strings.c:766
+#: locale/ipp-strings.c:770
 msgid "job-account-type"
 msgstr ""
 
 #. TRANSLATORS: General
-#: locale/ipp-strings.c:768
+#: locale/ipp-strings.c:772
 msgid "job-account-type.general"
 msgstr ""
 
 #. TRANSLATORS: Group
-#: locale/ipp-strings.c:770
+#: locale/ipp-strings.c:774
 msgid "job-account-type.group"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:772
+#: locale/ipp-strings.c:776
 msgid "job-account-type.none"
 msgstr ""
 
 #. TRANSLATORS: Job Accounting Output Bin
-#: locale/ipp-strings.c:774
+#: locale/ipp-strings.c:778
 msgid "job-accounting-output-bin"
 msgstr ""
 
 #. TRANSLATORS: Job Accounting Sheets
-#: locale/ipp-strings.c:776
+#: locale/ipp-strings.c:780
 msgid "job-accounting-sheets"
 msgstr ""
 
 #. TRANSLATORS: Type of Job Accounting Sheets
-#: locale/ipp-strings.c:778
+#: locale/ipp-strings.c:782
 msgid "job-accounting-sheets-type"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:780
+#: locale/ipp-strings.c:784
 msgid "job-accounting-sheets-type.none"
 msgstr ""
 
 #. TRANSLATORS: Standard
-#: locale/ipp-strings.c:782
+#: locale/ipp-strings.c:786
 msgid "job-accounting-sheets-type.standard"
 msgstr ""
 
 #. TRANSLATORS: Job Accounting User ID
-#: locale/ipp-strings.c:784
+#: locale/ipp-strings.c:788
 msgid "job-accounting-user-id"
 msgstr ""
 
 #. TRANSLATORS: Job Cancel After
-#: locale/ipp-strings.c:786
+#: locale/ipp-strings.c:790
 msgid "job-cancel-after"
 msgstr ""
 
 #. TRANSLATORS: Copies
-#: locale/ipp-strings.c:788
+#: locale/ipp-strings.c:792
 msgid "job-copies"
 msgstr ""
 
 #. TRANSLATORS: Back Cover
-#: locale/ipp-strings.c:790
+#: locale/ipp-strings.c:794
 msgid "job-cover-back"
 msgstr ""
 
 #. TRANSLATORS: Front Cover
-#: locale/ipp-strings.c:792
+#: locale/ipp-strings.c:796
 msgid "job-cover-front"
 msgstr ""
 
 #. TRANSLATORS: Delay Output Until
-#: locale/ipp-strings.c:794
+#: locale/ipp-strings.c:798
 msgid "job-delay-output-until"
 msgstr ""
 
 #. TRANSLATORS: Delay Output Until
-#: locale/ipp-strings.c:796
+#: locale/ipp-strings.c:800
 msgid "job-delay-output-until-time"
 msgstr ""
 
 #. TRANSLATORS: Daytime
-#: locale/ipp-strings.c:798
+#: locale/ipp-strings.c:802
 msgid "job-delay-output-until.day-time"
 msgstr ""
 
 #. TRANSLATORS: Evening
-#: locale/ipp-strings.c:800
+#: locale/ipp-strings.c:804
 msgid "job-delay-output-until.evening"
 msgstr ""
 
 #. TRANSLATORS: Released
-#: locale/ipp-strings.c:802
+#: locale/ipp-strings.c:806
 msgid "job-delay-output-until.indefinite"
 msgstr ""
 
 #. TRANSLATORS: Night
-#: locale/ipp-strings.c:804
+#: locale/ipp-strings.c:808
 msgid "job-delay-output-until.night"
 msgstr ""
 
 #. TRANSLATORS: No Delay
-#: locale/ipp-strings.c:806
+#: locale/ipp-strings.c:810
 msgid "job-delay-output-until.no-delay-output"
 msgstr ""
 
 #. TRANSLATORS: Second Shift
-#: locale/ipp-strings.c:808
+#: locale/ipp-strings.c:812
 msgid "job-delay-output-until.second-shift"
 msgstr ""
 
 #. TRANSLATORS: Third Shift
-#: locale/ipp-strings.c:810
+#: locale/ipp-strings.c:814
 msgid "job-delay-output-until.third-shift"
 msgstr ""
 
 #. TRANSLATORS: Weekend
-#: locale/ipp-strings.c:812
+#: locale/ipp-strings.c:816
 msgid "job-delay-output-until.weekend"
 msgstr ""
 
 #. TRANSLATORS: On Error
-#: locale/ipp-strings.c:814
+#: locale/ipp-strings.c:818
 msgid "job-error-action"
 msgstr ""
 
 #. TRANSLATORS: Abort Job
-#: locale/ipp-strings.c:816
+#: locale/ipp-strings.c:820
 msgid "job-error-action.abort-job"
 msgstr ""
 
 #. TRANSLATORS: Cancel Job
-#: locale/ipp-strings.c:818
+#: locale/ipp-strings.c:822
 msgid "job-error-action.cancel-job"
 msgstr ""
 
 #. TRANSLATORS: Continue Job
-#: locale/ipp-strings.c:820
+#: locale/ipp-strings.c:824
 msgid "job-error-action.continue-job"
 msgstr ""
 
 #. TRANSLATORS: Suspend Job
-#: locale/ipp-strings.c:822
+#: locale/ipp-strings.c:826
 msgid "job-error-action.suspend-job"
 msgstr ""
 
 #. TRANSLATORS: Print Error Sheet
-#: locale/ipp-strings.c:824
+#: locale/ipp-strings.c:828
 msgid "job-error-sheet"
 msgstr ""
 
 #. TRANSLATORS: Type of Error Sheet
-#: locale/ipp-strings.c:826
+#: locale/ipp-strings.c:830
 msgid "job-error-sheet-type"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:828
+#: locale/ipp-strings.c:832
 msgid "job-error-sheet-type.none"
 msgstr ""
 
 #. TRANSLATORS: Standard
-#: locale/ipp-strings.c:830
+#: locale/ipp-strings.c:834
 msgid "job-error-sheet-type.standard"
 msgstr ""
 
 #. TRANSLATORS: Print Error Sheet
-#: locale/ipp-strings.c:832
+#: locale/ipp-strings.c:836
 msgid "job-error-sheet-when"
 msgstr ""
 
 #. TRANSLATORS: Always
-#: locale/ipp-strings.c:834
+#: locale/ipp-strings.c:838
 msgid "job-error-sheet-when.always"
 msgstr ""
 
 #. TRANSLATORS: On Error
-#: locale/ipp-strings.c:836
+#: locale/ipp-strings.c:840
 msgid "job-error-sheet-when.on-error"
 msgstr ""
 
 #. TRANSLATORS: Job Finishings
-#: locale/ipp-strings.c:838
+#: locale/ipp-strings.c:842
 msgid "job-finishings"
 msgstr ""
 
 #. TRANSLATORS: Hold Until
-#: locale/ipp-strings.c:840
+#: locale/ipp-strings.c:844
 msgid "job-hold-until"
 msgstr ""
 
 #. TRANSLATORS: Hold Until
-#: locale/ipp-strings.c:842
+#: locale/ipp-strings.c:846
 msgid "job-hold-until-time"
 msgstr ""
 
 #. TRANSLATORS: Daytime
-#: locale/ipp-strings.c:844
+#: locale/ipp-strings.c:848
 msgid "job-hold-until.day-time"
 msgstr ""
 
 #. TRANSLATORS: Evening
-#: locale/ipp-strings.c:846
+#: locale/ipp-strings.c:850
 msgid "job-hold-until.evening"
 msgstr ""
 
 #. TRANSLATORS: Released
-#: locale/ipp-strings.c:848
+#: locale/ipp-strings.c:852
 msgid "job-hold-until.indefinite"
 msgstr ""
 
 #. TRANSLATORS: Night
-#: locale/ipp-strings.c:850
+#: locale/ipp-strings.c:854
 msgid "job-hold-until.night"
 msgstr ""
 
 #. TRANSLATORS: No Hold
-#: locale/ipp-strings.c:852
+#: locale/ipp-strings.c:856
 msgid "job-hold-until.no-hold"
 msgstr ""
 
 #. TRANSLATORS: Second Shift
-#: locale/ipp-strings.c:854
+#: locale/ipp-strings.c:858
 msgid "job-hold-until.second-shift"
 msgstr ""
 
 #. TRANSLATORS: Third Shift
-#: locale/ipp-strings.c:856
+#: locale/ipp-strings.c:860
 msgid "job-hold-until.third-shift"
 msgstr ""
 
 #. TRANSLATORS: Weekend
-#: locale/ipp-strings.c:858
+#: locale/ipp-strings.c:862
 msgid "job-hold-until.weekend"
 msgstr ""
 
 #. TRANSLATORS: Job Mandatory Attributes
-#: locale/ipp-strings.c:860
+#: locale/ipp-strings.c:864
 msgid "job-mandatory-attributes"
 msgstr ""
 
 #. TRANSLATORS: Title
-#: locale/ipp-strings.c:862
+#: locale/ipp-strings.c:866
 msgid "job-name"
 msgstr ""
 
 #. TRANSLATORS: Job Pages
-#: locale/ipp-strings.c:864
+#: locale/ipp-strings.c:868
 msgid "job-pages"
 msgstr ""
 
 #. TRANSLATORS: Job Pages
-#: locale/ipp-strings.c:866
+#: locale/ipp-strings.c:870
 msgid "job-pages-col"
 msgstr ""
 
 #. TRANSLATORS: Job Phone Number
-#: locale/ipp-strings.c:868
+#: locale/ipp-strings.c:872
 msgid "job-phone-number"
 msgstr ""
 
@@ -9189,627 +9223,627 @@
 msgstr ""
 
 #. TRANSLATORS: Job Priority
-#: locale/ipp-strings.c:870
+#: locale/ipp-strings.c:874
 msgid "job-priority"
 msgstr ""
 
 #. TRANSLATORS: Job Privacy Attributes
-#: locale/ipp-strings.c:872
+#: locale/ipp-strings.c:876
 msgid "job-privacy-attributes"
 msgstr ""
 
 #. TRANSLATORS: All
-#: locale/ipp-strings.c:874
+#: locale/ipp-strings.c:878
 msgid "job-privacy-attributes.all"
 msgstr ""
 
 #. TRANSLATORS: Default
-#: locale/ipp-strings.c:876
+#: locale/ipp-strings.c:880
 msgid "job-privacy-attributes.default"
 msgstr ""
 
 #. TRANSLATORS: Job Description
-#: locale/ipp-strings.c:878
+#: locale/ipp-strings.c:882
 msgid "job-privacy-attributes.job-description"
 msgstr ""
 
 #. TRANSLATORS: Job Template
-#: locale/ipp-strings.c:880
+#: locale/ipp-strings.c:884
 msgid "job-privacy-attributes.job-template"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:882
+#: locale/ipp-strings.c:886
 msgid "job-privacy-attributes.none"
 msgstr ""
 
 #. TRANSLATORS: Job Privacy Scope
-#: locale/ipp-strings.c:884
+#: locale/ipp-strings.c:888
 msgid "job-privacy-scope"
 msgstr ""
 
 #. TRANSLATORS: All
-#: locale/ipp-strings.c:886
+#: locale/ipp-strings.c:890
 msgid "job-privacy-scope.all"
 msgstr ""
 
 #. TRANSLATORS: Default
-#: locale/ipp-strings.c:888
+#: locale/ipp-strings.c:892
 msgid "job-privacy-scope.default"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:890
+#: locale/ipp-strings.c:894
 msgid "job-privacy-scope.none"
 msgstr ""
 
 #. TRANSLATORS: Owner
-#: locale/ipp-strings.c:892
+#: locale/ipp-strings.c:896
 msgid "job-privacy-scope.owner"
 msgstr ""
 
 #. TRANSLATORS: Job Recipient Name
-#: locale/ipp-strings.c:894
+#: locale/ipp-strings.c:898
 msgid "job-recipient-name"
 msgstr ""
 
 #. TRANSLATORS: Job Retain Until
-#: locale/ipp-strings.c:896
+#: locale/ipp-strings.c:900
 msgid "job-retain-until"
 msgstr ""
 
 #. TRANSLATORS: Job Retain Until Interval
-#: locale/ipp-strings.c:898
+#: locale/ipp-strings.c:902
 msgid "job-retain-until-interval"
 msgstr ""
 
 #. TRANSLATORS: Job Retain Until Time
-#: locale/ipp-strings.c:900
+#: locale/ipp-strings.c:904
 msgid "job-retain-until-time"
 msgstr ""
 
 #. TRANSLATORS: End Of Day
-#: locale/ipp-strings.c:902
+#: locale/ipp-strings.c:906
 msgid "job-retain-until.end-of-day"
 msgstr ""
 
 #. TRANSLATORS: End Of Month
-#: locale/ipp-strings.c:904
+#: locale/ipp-strings.c:908
 msgid "job-retain-until.end-of-month"
 msgstr ""
 
 #. TRANSLATORS: End Of Week
-#: locale/ipp-strings.c:906
+#: locale/ipp-strings.c:910
 msgid "job-retain-until.end-of-week"
 msgstr ""
 
 #. TRANSLATORS: Indefinite
-#: locale/ipp-strings.c:908
+#: locale/ipp-strings.c:912
 msgid "job-retain-until.indefinite"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:910
+#: locale/ipp-strings.c:914
 msgid "job-retain-until.none"
 msgstr ""
 
 #. TRANSLATORS: Job Save Disposition
-#: locale/ipp-strings.c:912
+#: locale/ipp-strings.c:916
 msgid "job-save-disposition"
 msgstr ""
 
 #. TRANSLATORS: Job Sheet Message
-#: locale/ipp-strings.c:914
+#: locale/ipp-strings.c:918
 msgid "job-sheet-message"
 msgstr ""
 
 #. TRANSLATORS: Banner Page
-#: locale/ipp-strings.c:916
+#: locale/ipp-strings.c:920
 msgid "job-sheets"
 msgstr ""
 
 #. TRANSLATORS: Banner Page
-#: locale/ipp-strings.c:918
+#: locale/ipp-strings.c:922
 msgid "job-sheets-col"
 msgstr ""
 
 #. TRANSLATORS: First Page in Document
-#: locale/ipp-strings.c:920
+#: locale/ipp-strings.c:924
 msgid "job-sheets.first-print-stream-page"
 msgstr ""
 
 #. TRANSLATORS: Start and End Sheets
-#: locale/ipp-strings.c:922
+#: locale/ipp-strings.c:926
 msgid "job-sheets.job-both-sheet"
 msgstr ""
 
 #. TRANSLATORS: End Sheet
-#: locale/ipp-strings.c:924
+#: locale/ipp-strings.c:928
 msgid "job-sheets.job-end-sheet"
 msgstr ""
 
 #. TRANSLATORS: Start Sheet
-#: locale/ipp-strings.c:926
+#: locale/ipp-strings.c:930
 msgid "job-sheets.job-start-sheet"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:928
+#: locale/ipp-strings.c:932
 msgid "job-sheets.none"
 msgstr ""
 
 #. TRANSLATORS: Standard
-#: locale/ipp-strings.c:930
+#: locale/ipp-strings.c:934
 msgid "job-sheets.standard"
 msgstr ""
 
 #. TRANSLATORS: Job State
-#: locale/ipp-strings.c:932
+#: locale/ipp-strings.c:936
 msgid "job-state"
 msgstr ""
 
 #. TRANSLATORS: Job State Message
-#: locale/ipp-strings.c:934
+#: locale/ipp-strings.c:938
 msgid "job-state-message"
 msgstr ""
 
 #. TRANSLATORS: Detailed Job State
-#: locale/ipp-strings.c:936
+#: locale/ipp-strings.c:940
 msgid "job-state-reasons"
 msgstr ""
 
 #. TRANSLATORS: Stopping
-#: locale/ipp-strings.c:938
+#: locale/ipp-strings.c:942
 msgid "job-state-reasons.aborted-by-system"
 msgstr ""
 
 #. TRANSLATORS: Account Authorization Failed
-#: locale/ipp-strings.c:940
+#: locale/ipp-strings.c:944
 msgid "job-state-reasons.account-authorization-failed"
 msgstr ""
 
 #. TRANSLATORS: Account Closed
-#: locale/ipp-strings.c:942
+#: locale/ipp-strings.c:946
 msgid "job-state-reasons.account-closed"
 msgstr ""
 
 #. TRANSLATORS: Account Info Needed
-#: locale/ipp-strings.c:944
+#: locale/ipp-strings.c:948
 msgid "job-state-reasons.account-info-needed"
 msgstr ""
 
 #. TRANSLATORS: Account Limit Reached
-#: locale/ipp-strings.c:946
+#: locale/ipp-strings.c:950
 msgid "job-state-reasons.account-limit-reached"
 msgstr ""
 
 #. TRANSLATORS: Decompression error
-#: locale/ipp-strings.c:948
+#: locale/ipp-strings.c:952
 msgid "job-state-reasons.compression-error"
 msgstr ""
 
 #. TRANSLATORS: Conflicting Attributes
-#: locale/ipp-strings.c:950
+#: locale/ipp-strings.c:954
 msgid "job-state-reasons.conflicting-attributes"
 msgstr ""
 
 #. TRANSLATORS: Connected To Destination
-#: locale/ipp-strings.c:952
+#: locale/ipp-strings.c:956
 msgid "job-state-reasons.connected-to-destination"
 msgstr ""
 
 #. TRANSLATORS: Connecting To Destination
-#: locale/ipp-strings.c:954
+#: locale/ipp-strings.c:958
 msgid "job-state-reasons.connecting-to-destination"
 msgstr ""
 
 #. TRANSLATORS: Destination Uri Failed
-#: locale/ipp-strings.c:956
+#: locale/ipp-strings.c:960
 msgid "job-state-reasons.destination-uri-failed"
 msgstr ""
 
 #. TRANSLATORS: Digital Signature Did Not Verify
-#: locale/ipp-strings.c:958
+#: locale/ipp-strings.c:962
 msgid "job-state-reasons.digital-signature-did-not-verify"
 msgstr ""
 
 #. TRANSLATORS: Digital Signature Type Not Supported
-#: locale/ipp-strings.c:960
+#: locale/ipp-strings.c:964
 msgid "job-state-reasons.digital-signature-type-not-supported"
 msgstr ""
 
 #. TRANSLATORS: Document Access Error
-#: locale/ipp-strings.c:962
+#: locale/ipp-strings.c:966
 msgid "job-state-reasons.document-access-error"
 msgstr ""
 
 #. TRANSLATORS: Document Format Error
-#: locale/ipp-strings.c:964
+#: locale/ipp-strings.c:968
 msgid "job-state-reasons.document-format-error"
 msgstr ""
 
 #. TRANSLATORS: Document Password Error
-#: locale/ipp-strings.c:966
+#: locale/ipp-strings.c:970
 msgid "job-state-reasons.document-password-error"
 msgstr ""
 
 #. TRANSLATORS: Document Permission Error
-#: locale/ipp-strings.c:968
+#: locale/ipp-strings.c:972
 msgid "job-state-reasons.document-permission-error"
 msgstr ""
 
 #. TRANSLATORS: Document Security Error
-#: locale/ipp-strings.c:970
+#: locale/ipp-strings.c:974
 msgid "job-state-reasons.document-security-error"
 msgstr ""
 
 #. TRANSLATORS: Document Unprintable Error
-#: locale/ipp-strings.c:972
+#: locale/ipp-strings.c:976
 msgid "job-state-reasons.document-unprintable-error"
 msgstr ""
 
 #. TRANSLATORS: Errors Detected
-#: locale/ipp-strings.c:974
+#: locale/ipp-strings.c:978
 msgid "job-state-reasons.errors-detected"
 msgstr ""
 
 #. TRANSLATORS: Canceled at printer
-#: locale/ipp-strings.c:976
+#: locale/ipp-strings.c:980
 msgid "job-state-reasons.job-canceled-at-device"
 msgstr ""
 
 #. TRANSLATORS: Canceled by operator
-#: locale/ipp-strings.c:978
+#: locale/ipp-strings.c:982
 msgid "job-state-reasons.job-canceled-by-operator"
 msgstr ""
 
 #. TRANSLATORS: Canceled by user
-#: locale/ipp-strings.c:980
+#: locale/ipp-strings.c:984
 msgid "job-state-reasons.job-canceled-by-user"
 msgstr ""
 
 #. TRANSLATORS:
-#: locale/ipp-strings.c:982
+#: locale/ipp-strings.c:986
 msgid "job-state-reasons.job-completed-successfully"
 msgstr ""
 
 #. TRANSLATORS: Completed with errors
-#: locale/ipp-strings.c:984
+#: locale/ipp-strings.c:988
 msgid "job-state-reasons.job-completed-with-errors"
 msgstr ""
 
 #. TRANSLATORS: Completed with warnings
-#: locale/ipp-strings.c:986
+#: locale/ipp-strings.c:990
 msgid "job-state-reasons.job-completed-with-warnings"
 msgstr ""
 
 #. TRANSLATORS: Insufficient data
-#: locale/ipp-strings.c:988
+#: locale/ipp-strings.c:992
 msgid "job-state-reasons.job-data-insufficient"
 msgstr ""
 
 #. TRANSLATORS: Job Delay Output Until Specified
-#: locale/ipp-strings.c:990
+#: locale/ipp-strings.c:994
 msgid "job-state-reasons.job-delay-output-until-specified"
 msgstr ""
 
 #. TRANSLATORS: Job Digital Signature Wait
-#: locale/ipp-strings.c:992
+#: locale/ipp-strings.c:996
 msgid "job-state-reasons.job-digital-signature-wait"
 msgstr ""
 
 #. TRANSLATORS: Job Fetchable
-#: locale/ipp-strings.c:994
+#: locale/ipp-strings.c:998
 msgid "job-state-reasons.job-fetchable"
 msgstr ""
 
 #. TRANSLATORS: Job Held For Review
-#: locale/ipp-strings.c:996
+#: locale/ipp-strings.c:1000
 msgid "job-state-reasons.job-held-for-review"
 msgstr ""
 
 #. TRANSLATORS: Job held
-#: locale/ipp-strings.c:998
+#: locale/ipp-strings.c:1002
 msgid "job-state-reasons.job-hold-until-specified"
 msgstr ""
 
 #. TRANSLATORS: Incoming
-#: locale/ipp-strings.c:1000
+#: locale/ipp-strings.c:1004
 msgid "job-state-reasons.job-incoming"
 msgstr ""
 
 #. TRANSLATORS: Interpreting
-#: locale/ipp-strings.c:1002
+#: locale/ipp-strings.c:1006
 msgid "job-state-reasons.job-interpreting"
 msgstr ""
 
 #. TRANSLATORS: Outgoing
-#: locale/ipp-strings.c:1004
+#: locale/ipp-strings.c:1008
 msgid "job-state-reasons.job-outgoing"
 msgstr ""
 
 #. TRANSLATORS: Job Password Wait
-#: locale/ipp-strings.c:1006
+#: locale/ipp-strings.c:1010
 msgid "job-state-reasons.job-password-wait"
 msgstr ""
 
 #. TRANSLATORS: Job Printed Successfully
-#: locale/ipp-strings.c:1008
+#: locale/ipp-strings.c:1012
 msgid "job-state-reasons.job-printed-successfully"
 msgstr ""
 
 #. TRANSLATORS: Job Printed With Errors
-#: locale/ipp-strings.c:1010
+#: locale/ipp-strings.c:1014
 msgid "job-state-reasons.job-printed-with-errors"
 msgstr ""
 
 #. TRANSLATORS: Job Printed With Warnings
-#: locale/ipp-strings.c:1012
+#: locale/ipp-strings.c:1016
 msgid "job-state-reasons.job-printed-with-warnings"
 msgstr ""
 
 #. TRANSLATORS: Printing
-#: locale/ipp-strings.c:1014
+#: locale/ipp-strings.c:1018
 msgid "job-state-reasons.job-printing"
 msgstr ""
 
 #. TRANSLATORS: Preparing to print
-#: locale/ipp-strings.c:1016
+#: locale/ipp-strings.c:1020
 msgid "job-state-reasons.job-queued"
 msgstr ""
 
 #. TRANSLATORS: Processing document
-#: locale/ipp-strings.c:1018
+#: locale/ipp-strings.c:1022
 msgid "job-state-reasons.job-queued-for-marker"
 msgstr ""
 
 #. TRANSLATORS: Job Release Wait
-#: locale/ipp-strings.c:1020
+#: locale/ipp-strings.c:1024
 msgid "job-state-reasons.job-release-wait"
 msgstr ""
 
 #. TRANSLATORS: Restartable
-#: locale/ipp-strings.c:1022
+#: locale/ipp-strings.c:1026
 msgid "job-state-reasons.job-restartable"
 msgstr ""
 
 #. TRANSLATORS: Job Resuming
-#: locale/ipp-strings.c:1024
+#: locale/ipp-strings.c:1028
 msgid "job-state-reasons.job-resuming"
 msgstr ""
 
 #. TRANSLATORS: Job Saved Successfully
-#: locale/ipp-strings.c:1026
+#: locale/ipp-strings.c:1030
 msgid "job-state-reasons.job-saved-successfully"
 msgstr ""
 
 #. TRANSLATORS: Job Saved With Errors
-#: locale/ipp-strings.c:1028
+#: locale/ipp-strings.c:1032
 msgid "job-state-reasons.job-saved-with-errors"
 msgstr ""
 
 #. TRANSLATORS: Job Saved With Warnings
-#: locale/ipp-strings.c:1030
+#: locale/ipp-strings.c:1034
 msgid "job-state-reasons.job-saved-with-warnings"
 msgstr ""
 
 #. TRANSLATORS: Job Saving
-#: locale/ipp-strings.c:1032
+#: locale/ipp-strings.c:1036
 msgid "job-state-reasons.job-saving"
 msgstr ""
 
 #. TRANSLATORS: Job Spooling
-#: locale/ipp-strings.c:1034
+#: locale/ipp-strings.c:1038
 msgid "job-state-reasons.job-spooling"
 msgstr ""
 
 #. TRANSLATORS: Job Streaming
-#: locale/ipp-strings.c:1036
+#: locale/ipp-strings.c:1040
 msgid "job-state-reasons.job-streaming"
 msgstr ""
 
 #. TRANSLATORS: Suspended
-#: locale/ipp-strings.c:1038
+#: locale/ipp-strings.c:1042
 msgid "job-state-reasons.job-suspended"
 msgstr ""
 
 #. TRANSLATORS: Job Suspended By Operator
-#: locale/ipp-strings.c:1040
+#: locale/ipp-strings.c:1044
 msgid "job-state-reasons.job-suspended-by-operator"
 msgstr ""
 
 #. TRANSLATORS: Job Suspended By System
-#: locale/ipp-strings.c:1042
+#: locale/ipp-strings.c:1046
 msgid "job-state-reasons.job-suspended-by-system"
 msgstr ""
 
 #. TRANSLATORS: Job Suspended By User
-#: locale/ipp-strings.c:1044
+#: locale/ipp-strings.c:1048
 msgid "job-state-reasons.job-suspended-by-user"
 msgstr ""
 
 #. TRANSLATORS: Job Suspending
-#: locale/ipp-strings.c:1046
+#: locale/ipp-strings.c:1050
 msgid "job-state-reasons.job-suspending"
 msgstr ""
 
 #. TRANSLATORS: Job Transferring
-#: locale/ipp-strings.c:1048
+#: locale/ipp-strings.c:1052
 msgid "job-state-reasons.job-transferring"
 msgstr ""
 
 #. TRANSLATORS: Transforming
-#: locale/ipp-strings.c:1050
+#: locale/ipp-strings.c:1054
 msgid "job-state-reasons.job-transforming"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:1052
+#: locale/ipp-strings.c:1056
 msgid "job-state-reasons.none"
 msgstr ""
 
 #. TRANSLATORS: Printer offline
-#: locale/ipp-strings.c:1054
+#: locale/ipp-strings.c:1058
 msgid "job-state-reasons.printer-stopped"
 msgstr ""
 
 #. TRANSLATORS: Printer partially stopped
-#: locale/ipp-strings.c:1056
+#: locale/ipp-strings.c:1060
 msgid "job-state-reasons.printer-stopped-partly"
 msgstr ""
 
 #. TRANSLATORS: Stopping
-#: locale/ipp-strings.c:1058
+#: locale/ipp-strings.c:1062
 msgid "job-state-reasons.processing-to-stop-point"
 msgstr ""
 
 #. TRANSLATORS: Ready
-#: locale/ipp-strings.c:1060
+#: locale/ipp-strings.c:1064
 msgid "job-state-reasons.queued-in-device"
 msgstr ""
 
 #. TRANSLATORS: Resources Are Not Ready
-#: locale/ipp-strings.c:1062
+#: locale/ipp-strings.c:1066
 msgid "job-state-reasons.resources-are-not-ready"
 msgstr ""
 
 #. TRANSLATORS: Resources Are Not Supported
-#: locale/ipp-strings.c:1064
+#: locale/ipp-strings.c:1068
 msgid "job-state-reasons.resources-are-not-supported"
 msgstr ""
 
 #. TRANSLATORS: Service offline
-#: locale/ipp-strings.c:1066
+#: locale/ipp-strings.c:1070
 msgid "job-state-reasons.service-off-line"
 msgstr ""
 
 #. TRANSLATORS: Submission Interrupted
-#: locale/ipp-strings.c:1068
+#: locale/ipp-strings.c:1072
 msgid "job-state-reasons.submission-interrupted"
 msgstr ""
 
 #. TRANSLATORS: Unsupported Attributes Or Values
-#: locale/ipp-strings.c:1070
+#: locale/ipp-strings.c:1074
 msgid "job-state-reasons.unsupported-attributes-or-values"
 msgstr ""
 
 #. TRANSLATORS: Unsupported Compression
-#: locale/ipp-strings.c:1072
+#: locale/ipp-strings.c:1076
 msgid "job-state-reasons.unsupported-compression"
 msgstr ""
 
 #. TRANSLATORS: Unsupported Document Format
-#: locale/ipp-strings.c:1074
+#: locale/ipp-strings.c:1078
 msgid "job-state-reasons.unsupported-document-format"
 msgstr ""
 
 #. TRANSLATORS: Waiting For User Action
-#: locale/ipp-strings.c:1076
+#: locale/ipp-strings.c:1080
 msgid "job-state-reasons.waiting-for-user-action"
 msgstr ""
 
 #. TRANSLATORS: Warnings Detected
-#: locale/ipp-strings.c:1078
+#: locale/ipp-strings.c:1082
 msgid "job-state-reasons.warnings-detected"
 msgstr ""
 
 #. TRANSLATORS: Pending
-#: locale/ipp-strings.c:1080
+#: locale/ipp-strings.c:1084
 msgid "job-state.3"
 msgstr ""
 
 #. TRANSLATORS: Held
-#: locale/ipp-strings.c:1082
+#: locale/ipp-strings.c:1086
 msgid "job-state.4"
 msgstr ""
 
 #. TRANSLATORS: Processing
-#: locale/ipp-strings.c:1084
+#: locale/ipp-strings.c:1088
 msgid "job-state.5"
 msgstr ""
 
 #. TRANSLATORS: Stopped
-#: locale/ipp-strings.c:1086
+#: locale/ipp-strings.c:1090
 msgid "job-state.6"
 msgstr ""
 
 #. TRANSLATORS: Canceled
-#: locale/ipp-strings.c:1088
+#: locale/ipp-strings.c:1092
 msgid "job-state.7"
 msgstr ""
 
 #. TRANSLATORS: Aborted
-#: locale/ipp-strings.c:1090
+#: locale/ipp-strings.c:1094
 msgid "job-state.8"
 msgstr ""
 
 #. TRANSLATORS: Completed
-#: locale/ipp-strings.c:1092
+#: locale/ipp-strings.c:1096
 msgid "job-state.9"
 msgstr ""
 
 #. TRANSLATORS: Laminate Pages
-#: locale/ipp-strings.c:1094
+#: locale/ipp-strings.c:1098
 msgid "laminating"
 msgstr ""
 
 #. TRANSLATORS: Laminate
-#: locale/ipp-strings.c:1096
+#: locale/ipp-strings.c:1100
 msgid "laminating-sides"
 msgstr ""
 
 #. TRANSLATORS: Back Only
-#: locale/ipp-strings.c:1098
+#: locale/ipp-strings.c:1102
 msgid "laminating-sides.back"
 msgstr ""
 
 #. TRANSLATORS: Front and Back
-#: locale/ipp-strings.c:1100
+#: locale/ipp-strings.c:1104
 msgid "laminating-sides.both"
 msgstr ""
 
 #. TRANSLATORS: Front Only
-#: locale/ipp-strings.c:1102
+#: locale/ipp-strings.c:1106
 msgid "laminating-sides.front"
 msgstr ""
 
 #. TRANSLATORS: Type of Lamination
-#: locale/ipp-strings.c:1104
+#: locale/ipp-strings.c:1108
 msgid "laminating-type"
 msgstr ""
 
 #. TRANSLATORS: Archival
-#: locale/ipp-strings.c:1106
+#: locale/ipp-strings.c:1110
 msgid "laminating-type.archival"
 msgstr ""
 
 #. TRANSLATORS: Glossy
-#: locale/ipp-strings.c:1108
+#: locale/ipp-strings.c:1112
 msgid "laminating-type.glossy"
 msgstr ""
 
 #. TRANSLATORS: High Gloss
-#: locale/ipp-strings.c:1110
+#: locale/ipp-strings.c:1114
 msgid "laminating-type.high-gloss"
 msgstr ""
 
 #. TRANSLATORS: Matte
-#: locale/ipp-strings.c:1112
+#: locale/ipp-strings.c:1116
 msgid "laminating-type.matte"
 msgstr ""
 
 #. TRANSLATORS: Semi-gloss
-#: locale/ipp-strings.c:1114
+#: locale/ipp-strings.c:1118
 msgid "laminating-type.semi-gloss"
 msgstr ""
 
 #. TRANSLATORS: Translucent
-#: locale/ipp-strings.c:1116
+#: locale/ipp-strings.c:1120
 msgid "laminating-type.translucent"
 msgstr ""
 
 #. TRANSLATORS: Logo
-#: locale/ipp-strings.c:1118
+#: locale/ipp-strings.c:1122
 msgid "logo"
 msgstr ""
 
@@ -10051,2752 +10085,2837 @@
 msgstr ""
 
 #. TRANSLATORS: Amount of Material
-#: locale/ipp-strings.c:1120
+#: locale/ipp-strings.c:1124
 msgid "material-amount"
 msgstr ""
 
 #. TRANSLATORS: Amount Units
-#: locale/ipp-strings.c:1122
+#: locale/ipp-strings.c:1126
 msgid "material-amount-units"
 msgstr ""
 
 #. TRANSLATORS: Grams
-#: locale/ipp-strings.c:1124
+#: locale/ipp-strings.c:1128
 msgid "material-amount-units.g"
 msgstr ""
 
 #. TRANSLATORS: Kilograms
-#: locale/ipp-strings.c:1126
+#: locale/ipp-strings.c:1130
 msgid "material-amount-units.kg"
 msgstr ""
 
 #. TRANSLATORS: Liters
-#: locale/ipp-strings.c:1128
+#: locale/ipp-strings.c:1132
 msgid "material-amount-units.l"
 msgstr ""
 
 #. TRANSLATORS: Meters
-#: locale/ipp-strings.c:1130
+#: locale/ipp-strings.c:1134
 msgid "material-amount-units.m"
 msgstr ""
 
 #. TRANSLATORS: Milliliters
-#: locale/ipp-strings.c:1132
+#: locale/ipp-strings.c:1136
 msgid "material-amount-units.ml"
 msgstr ""
 
 #. TRANSLATORS: Millimeters
-#: locale/ipp-strings.c:1134
+#: locale/ipp-strings.c:1138
 msgid "material-amount-units.mm"
 msgstr ""
 
 #. TRANSLATORS: Material Color
-#: locale/ipp-strings.c:1136
+#: locale/ipp-strings.c:1140
 msgid "material-color"
 msgstr ""
 
 #. TRANSLATORS: Material Diameter
-#: locale/ipp-strings.c:1138
+#: locale/ipp-strings.c:1142
 msgid "material-diameter"
 msgstr ""
 
 #. TRANSLATORS: Material Diameter Tolerance
-#: locale/ipp-strings.c:1140
+#: locale/ipp-strings.c:1144
 msgid "material-diameter-tolerance"
 msgstr ""
 
 #. TRANSLATORS: Material Fill Density
-#: locale/ipp-strings.c:1142
+#: locale/ipp-strings.c:1146
 msgid "material-fill-density"
 msgstr ""
 
 #. TRANSLATORS: Material Name
-#: locale/ipp-strings.c:1144
+#: locale/ipp-strings.c:1148
 msgid "material-name"
 msgstr ""
 
 #. TRANSLATORS: Material Nozzle Diameter
-#: locale/ipp-strings.c:1146
+#: locale/ipp-strings.c:1150
 msgid "material-nozzle-diameter"
 msgstr ""
 
 #. TRANSLATORS: Use Material For
-#: locale/ipp-strings.c:1148
+#: locale/ipp-strings.c:1152
 msgid "material-purpose"
 msgstr ""
 
 #. TRANSLATORS: Everything
-#: locale/ipp-strings.c:1150
+#: locale/ipp-strings.c:1154
 msgid "material-purpose.all"
 msgstr ""
 
 #. TRANSLATORS: Base
-#: locale/ipp-strings.c:1152
+#: locale/ipp-strings.c:1156
 msgid "material-purpose.base"
 msgstr ""
 
 #. TRANSLATORS: In-fill
-#: locale/ipp-strings.c:1154
+#: locale/ipp-strings.c:1158
 msgid "material-purpose.in-fill"
 msgstr ""
 
 #. TRANSLATORS: Shell
-#: locale/ipp-strings.c:1156
+#: locale/ipp-strings.c:1160
 msgid "material-purpose.shell"
 msgstr ""
 
 #. TRANSLATORS: Supports
-#: locale/ipp-strings.c:1158
+#: locale/ipp-strings.c:1162
 msgid "material-purpose.support"
 msgstr ""
 
 #. TRANSLATORS: Feed Rate
-#: locale/ipp-strings.c:1160
+#: locale/ipp-strings.c:1164
 msgid "material-rate"
 msgstr ""
 
 #. TRANSLATORS: Feed Rate Units
-#: locale/ipp-strings.c:1162
+#: locale/ipp-strings.c:1166
 msgid "material-rate-units"
 msgstr ""
 
 #. TRANSLATORS: Milligrams per second
-#: locale/ipp-strings.c:1164
+#: locale/ipp-strings.c:1168
 msgid "material-rate-units.mg_second"
 msgstr ""
 
 #. TRANSLATORS: Milliliters per second
-#: locale/ipp-strings.c:1166
+#: locale/ipp-strings.c:1170
 msgid "material-rate-units.ml_second"
 msgstr ""
 
 #. TRANSLATORS: Millimeters per second
-#: locale/ipp-strings.c:1168
+#: locale/ipp-strings.c:1172
 msgid "material-rate-units.mm_second"
 msgstr ""
 
 #. TRANSLATORS: Material Retraction
-#: locale/ipp-strings.c:1170
+#: locale/ipp-strings.c:1174
 msgid "material-retraction"
 msgstr ""
 
 #. TRANSLATORS: Material Shell Thickness
-#: locale/ipp-strings.c:1172
+#: locale/ipp-strings.c:1176
 msgid "material-shell-thickness"
 msgstr ""
 
 #. TRANSLATORS: Material Temperature
-#: locale/ipp-strings.c:1174
+#: locale/ipp-strings.c:1178
 msgid "material-temperature"
 msgstr ""
 
 #. TRANSLATORS: Material Type
-#: locale/ipp-strings.c:1176
+#: locale/ipp-strings.c:1180
 msgid "material-type"
 msgstr ""
 
 #. TRANSLATORS: ABS
-#: locale/ipp-strings.c:1178
+#: locale/ipp-strings.c:1182
 msgid "material-type.abs"
 msgstr ""
 
 #. TRANSLATORS: Carbon Fiber ABS
-#: locale/ipp-strings.c:1180
+#: locale/ipp-strings.c:1184
 msgid "material-type.abs-carbon-fiber"
 msgstr ""
 
 #. TRANSLATORS: Carbon Nanotube ABS
-#: locale/ipp-strings.c:1182
+#: locale/ipp-strings.c:1186
 msgid "material-type.abs-carbon-nanotube"
 msgstr ""
 
 #. TRANSLATORS: Chocolate
-#: locale/ipp-strings.c:1184
+#: locale/ipp-strings.c:1188
 msgid "material-type.chocolate"
 msgstr ""
 
 #. TRANSLATORS: Gold
-#: locale/ipp-strings.c:1186
+#: locale/ipp-strings.c:1190
 msgid "material-type.gold"
 msgstr ""
 
 #. TRANSLATORS: Nylon
-#: locale/ipp-strings.c:1188
+#: locale/ipp-strings.c:1192
 msgid "material-type.nylon"
 msgstr ""
 
 #. TRANSLATORS: Pet
-#: locale/ipp-strings.c:1190
+#: locale/ipp-strings.c:1194
 msgid "material-type.pet"
 msgstr ""
 
 #. TRANSLATORS: Photopolymer
-#: locale/ipp-strings.c:1192
+#: locale/ipp-strings.c:1196
 msgid "material-type.photopolymer"
 msgstr ""
 
 #. TRANSLATORS: PLA
-#: locale/ipp-strings.c:1194
+#: locale/ipp-strings.c:1198
 msgid "material-type.pla"
 msgstr ""
 
 #. TRANSLATORS: Conductive PLA
-#: locale/ipp-strings.c:1196
+#: locale/ipp-strings.c:1200
 msgid "material-type.pla-conductive"
 msgstr ""
 
 #. TRANSLATORS: Pla Dissolvable
-#: locale/ipp-strings.c:1198
+#: locale/ipp-strings.c:1202
 msgid "material-type.pla-dissolvable"
 msgstr ""
 
 #. TRANSLATORS: Flexible PLA
-#: locale/ipp-strings.c:1200
+#: locale/ipp-strings.c:1204
 msgid "material-type.pla-flexible"
 msgstr ""
 
 #. TRANSLATORS: Magnetic PLA
-#: locale/ipp-strings.c:1202
+#: locale/ipp-strings.c:1206
 msgid "material-type.pla-magnetic"
 msgstr ""
 
 #. TRANSLATORS: Steel PLA
-#: locale/ipp-strings.c:1204
+#: locale/ipp-strings.c:1208
 msgid "material-type.pla-steel"
 msgstr ""
 
 #. TRANSLATORS: Stone PLA
-#: locale/ipp-strings.c:1206
+#: locale/ipp-strings.c:1210
 msgid "material-type.pla-stone"
 msgstr ""
 
 #. TRANSLATORS: Wood PLA
-#: locale/ipp-strings.c:1208
+#: locale/ipp-strings.c:1212
 msgid "material-type.pla-wood"
 msgstr ""
 
 #. TRANSLATORS: Polycarbonate
-#: locale/ipp-strings.c:1210
+#: locale/ipp-strings.c:1214
 msgid "material-type.polycarbonate"
 msgstr ""
 
 #. TRANSLATORS: Dissolvable PVA
-#: locale/ipp-strings.c:1212
+#: locale/ipp-strings.c:1216
 msgid "material-type.pva-dissolvable"
 msgstr ""
 
 #. TRANSLATORS: Silver
-#: locale/ipp-strings.c:1214
+#: locale/ipp-strings.c:1218
 msgid "material-type.silver"
 msgstr ""
 
 #. TRANSLATORS: Titanium
-#: locale/ipp-strings.c:1216
+#: locale/ipp-strings.c:1220
 msgid "material-type.titanium"
 msgstr ""
 
 #. TRANSLATORS: Wax
-#: locale/ipp-strings.c:1218
+#: locale/ipp-strings.c:1222
 msgid "material-type.wax"
 msgstr ""
 
 #. TRANSLATORS: Materials
-#: locale/ipp-strings.c:1220
+#: locale/ipp-strings.c:1224
 msgid "materials-col"
 msgstr ""
 
 #. TRANSLATORS: Media
-#: locale/ipp-strings.c:1222
+#: locale/ipp-strings.c:1226
 msgid "media"
 msgstr ""
 
 #. TRANSLATORS: Back Coating of Media
-#: locale/ipp-strings.c:1224
+#: locale/ipp-strings.c:1228
 msgid "media-back-coating"
 msgstr ""
 
 #. TRANSLATORS: Glossy
-#: locale/ipp-strings.c:1226
+#: locale/ipp-strings.c:1230
 msgid "media-back-coating.glossy"
 msgstr ""
 
 #. TRANSLATORS: High Gloss
-#: locale/ipp-strings.c:1228
+#: locale/ipp-strings.c:1232
 msgid "media-back-coating.high-gloss"
 msgstr ""
 
 #. TRANSLATORS: Matte
-#: locale/ipp-strings.c:1230
+#: locale/ipp-strings.c:1234
 msgid "media-back-coating.matte"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:1232
+#: locale/ipp-strings.c:1236
 msgid "media-back-coating.none"
 msgstr ""
 
 #. TRANSLATORS: Satin
-#: locale/ipp-strings.c:1234
+#: locale/ipp-strings.c:1238
 msgid "media-back-coating.satin"
 msgstr ""
 
 #. TRANSLATORS: Semi-gloss
-#: locale/ipp-strings.c:1236
+#: locale/ipp-strings.c:1240
 msgid "media-back-coating.semi-gloss"
 msgstr ""
 
 #. TRANSLATORS: Media Bottom Margin
-#: locale/ipp-strings.c:1238
+#: locale/ipp-strings.c:1242
 msgid "media-bottom-margin"
 msgstr ""
 
 #. TRANSLATORS: Media
-#: locale/ipp-strings.c:1240
+#: locale/ipp-strings.c:1244
 msgid "media-col"
 msgstr ""
 
 #. TRANSLATORS: Media Color
-#: locale/ipp-strings.c:1242
+#: locale/ipp-strings.c:1246
 msgid "media-color"
 msgstr ""
 
 #. TRANSLATORS: Black
-#: locale/ipp-strings.c:1244
+#: locale/ipp-strings.c:1248
 msgid "media-color.black"
 msgstr ""
 
 #. TRANSLATORS: Blue
-#: locale/ipp-strings.c:1246
+#: locale/ipp-strings.c:1250
 msgid "media-color.blue"
 msgstr ""
 
 #. TRANSLATORS: Brown
-#: locale/ipp-strings.c:1248
+#: locale/ipp-strings.c:1252
 msgid "media-color.brown"
 msgstr ""
 
 #. TRANSLATORS: Buff
-#: locale/ipp-strings.c:1250
+#: locale/ipp-strings.c:1254
 msgid "media-color.buff"
 msgstr ""
 
 #. TRANSLATORS: Clear Black
-#: locale/ipp-strings.c:1252
+#: locale/ipp-strings.c:1256
 msgid "media-color.clear-black"
 msgstr ""
 
 #. TRANSLATORS: Clear Blue
-#: locale/ipp-strings.c:1254
+#: locale/ipp-strings.c:1258
 msgid "media-color.clear-blue"
 msgstr ""
 
 #. TRANSLATORS: Clear Brown
-#: locale/ipp-strings.c:1256
+#: locale/ipp-strings.c:1260
 msgid "media-color.clear-brown"
 msgstr ""
 
 #. TRANSLATORS: Clear Buff
-#: locale/ipp-strings.c:1258
+#: locale/ipp-strings.c:1262
 msgid "media-color.clear-buff"
 msgstr ""
 
 #. TRANSLATORS: Clear Cyan
-#: locale/ipp-strings.c:1260
+#: locale/ipp-strings.c:1264
 msgid "media-color.clear-cyan"
 msgstr ""
 
 #. TRANSLATORS: Clear Gold
-#: locale/ipp-strings.c:1262
+#: locale/ipp-strings.c:1266
 msgid "media-color.clear-gold"
 msgstr ""
 
 #. TRANSLATORS: Clear Goldenrod
-#: locale/ipp-strings.c:1264
+#: locale/ipp-strings.c:1268
 msgid "media-color.clear-goldenrod"
 msgstr ""
 
 #. TRANSLATORS: Clear Gray
-#: locale/ipp-strings.c:1266
+#: locale/ipp-strings.c:1270
 msgid "media-color.clear-gray"
 msgstr ""
 
 #. TRANSLATORS: Clear Green
-#: locale/ipp-strings.c:1268
+#: locale/ipp-strings.c:1272
 msgid "media-color.clear-green"
 msgstr ""
 
 #. TRANSLATORS: Clear Ivory
-#: locale/ipp-strings.c:1270
+#: locale/ipp-strings.c:1274
 msgid "media-color.clear-ivory"
 msgstr ""
 
 #. TRANSLATORS: Clear Magenta
-#: locale/ipp-strings.c:1272
+#: locale/ipp-strings.c:1276
 msgid "media-color.clear-magenta"
 msgstr ""
 
 #. TRANSLATORS: Clear Multi Color
-#: locale/ipp-strings.c:1274
+#: locale/ipp-strings.c:1278
 msgid "media-color.clear-multi-color"
 msgstr ""
 
 #. TRANSLATORS: Clear Mustard
-#: locale/ipp-strings.c:1276
+#: locale/ipp-strings.c:1280
 msgid "media-color.clear-mustard"
 msgstr ""
 
 #. TRANSLATORS: Clear Orange
-#: locale/ipp-strings.c:1278
+#: locale/ipp-strings.c:1282
 msgid "media-color.clear-orange"
 msgstr ""
 
 #. TRANSLATORS: Clear Pink
-#: locale/ipp-strings.c:1280
+#: locale/ipp-strings.c:1284
 msgid "media-color.clear-pink"
 msgstr ""
 
 #. TRANSLATORS: Clear Red
-#: locale/ipp-strings.c:1282
+#: locale/ipp-strings.c:1286
 msgid "media-color.clear-red"
 msgstr ""
 
 #. TRANSLATORS: Clear Silver
-#: locale/ipp-strings.c:1284
+#: locale/ipp-strings.c:1288
 msgid "media-color.clear-silver"
 msgstr ""
 
 #. TRANSLATORS: Clear Turquoise
-#: locale/ipp-strings.c:1286
+#: locale/ipp-strings.c:1290
 msgid "media-color.clear-turquoise"
 msgstr ""
 
 #. TRANSLATORS: Clear Violet
-#: locale/ipp-strings.c:1288
+#: locale/ipp-strings.c:1292
 msgid "media-color.clear-violet"
 msgstr ""
 
 #. TRANSLATORS: Clear White
-#: locale/ipp-strings.c:1290
+#: locale/ipp-strings.c:1294
 msgid "media-color.clear-white"
 msgstr ""
 
 #. TRANSLATORS: Clear Yellow
-#: locale/ipp-strings.c:1292
+#: locale/ipp-strings.c:1296
 msgid "media-color.clear-yellow"
 msgstr ""
 
 #. TRANSLATORS: Cyan
-#: locale/ipp-strings.c:1294
+#: locale/ipp-strings.c:1298
 msgid "media-color.cyan"
 msgstr ""
 
 #. TRANSLATORS: Dark Blue
-#: locale/ipp-strings.c:1296
+#: locale/ipp-strings.c:1300
 msgid "media-color.dark-blue"
 msgstr ""
 
 #. TRANSLATORS: Dark Brown
-#: locale/ipp-strings.c:1298
+#: locale/ipp-strings.c:1302
 msgid "media-color.dark-brown"
 msgstr ""
 
 #. TRANSLATORS: Dark Buff
-#: locale/ipp-strings.c:1300
+#: locale/ipp-strings.c:1304
 msgid "media-color.dark-buff"
 msgstr ""
 
 #. TRANSLATORS: Dark Cyan
-#: locale/ipp-strings.c:1302
+#: locale/ipp-strings.c:1306
 msgid "media-color.dark-cyan"
 msgstr ""
 
 #. TRANSLATORS: Dark Gold
-#: locale/ipp-strings.c:1304
+#: locale/ipp-strings.c:1308
 msgid "media-color.dark-gold"
 msgstr ""
 
 #. TRANSLATORS: Dark Goldenrod
-#: locale/ipp-strings.c:1306
+#: locale/ipp-strings.c:1310
 msgid "media-color.dark-goldenrod"
 msgstr ""
 
 #. TRANSLATORS: Dark Gray
-#: locale/ipp-strings.c:1308
+#: locale/ipp-strings.c:1312
 msgid "media-color.dark-gray"
 msgstr ""
 
 #. TRANSLATORS: Dark Green
-#: locale/ipp-strings.c:1310
+#: locale/ipp-strings.c:1314
 msgid "media-color.dark-green"
 msgstr ""
 
 #. TRANSLATORS: Dark Ivory
-#: locale/ipp-strings.c:1312
+#: locale/ipp-strings.c:1316
 msgid "media-color.dark-ivory"
 msgstr ""
 
 #. TRANSLATORS: Dark Magenta
-#: locale/ipp-strings.c:1314
+#: locale/ipp-strings.c:1318
 msgid "media-color.dark-magenta"
 msgstr ""
 
 #. TRANSLATORS: Dark Mustard
-#: locale/ipp-strings.c:1316
+#: locale/ipp-strings.c:1320
 msgid "media-color.dark-mustard"
 msgstr ""
 
 #. TRANSLATORS: Dark Orange
-#: locale/ipp-strings.c:1318
+#: locale/ipp-strings.c:1322
 msgid "media-color.dark-orange"
 msgstr ""
 
 #. TRANSLATORS: Dark Pink
-#: locale/ipp-strings.c:1320
+#: locale/ipp-strings.c:1324
 msgid "media-color.dark-pink"
 msgstr ""
 
 #. TRANSLATORS: Dark Red
-#: locale/ipp-strings.c:1322
+#: locale/ipp-strings.c:1326
 msgid "media-color.dark-red"
 msgstr ""
 
 #. TRANSLATORS: Dark Silver
-#: locale/ipp-strings.c:1324
+#: locale/ipp-strings.c:1328
 msgid "media-color.dark-silver"
 msgstr ""
 
 #. TRANSLATORS: Dark Turquoise
-#: locale/ipp-strings.c:1326
+#: locale/ipp-strings.c:1330
 msgid "media-color.dark-turquoise"
 msgstr ""
 
 #. TRANSLATORS: Dark Violet
-#: locale/ipp-strings.c:1328
+#: locale/ipp-strings.c:1332
 msgid "media-color.dark-violet"
 msgstr ""
 
 #. TRANSLATORS: Dark Yellow
-#: locale/ipp-strings.c:1330
+#: locale/ipp-strings.c:1334
 msgid "media-color.dark-yellow"
 msgstr ""
 
 #. TRANSLATORS: Gold
-#: locale/ipp-strings.c:1332
+#: locale/ipp-strings.c:1336
 msgid "media-color.gold"
 msgstr ""
 
 #. TRANSLATORS: Goldenrod
-#: locale/ipp-strings.c:1334
+#: locale/ipp-strings.c:1338
 msgid "media-color.goldenrod"
 msgstr ""
 
 #. TRANSLATORS: Gray
-#: locale/ipp-strings.c:1336
+#: locale/ipp-strings.c:1340
 msgid "media-color.gray"
 msgstr ""
 
 #. TRANSLATORS: Green
-#: locale/ipp-strings.c:1338
+#: locale/ipp-strings.c:1342
 msgid "media-color.green"
 msgstr ""
 
 #. TRANSLATORS: Ivory
-#: locale/ipp-strings.c:1340
+#: locale/ipp-strings.c:1344
 msgid "media-color.ivory"
 msgstr ""
 
 #. TRANSLATORS: Light Black
-#: locale/ipp-strings.c:1342
+#: locale/ipp-strings.c:1346
 msgid "media-color.light-black"
 msgstr ""
 
 #. TRANSLATORS: Light Blue
-#: locale/ipp-strings.c:1344
+#: locale/ipp-strings.c:1348
 msgid "media-color.light-blue"
 msgstr ""
 
 #. TRANSLATORS: Light Brown
-#: locale/ipp-strings.c:1346
+#: locale/ipp-strings.c:1350
 msgid "media-color.light-brown"
 msgstr ""
 
 #. TRANSLATORS: Light Buff
-#: locale/ipp-strings.c:1348
+#: locale/ipp-strings.c:1352
 msgid "media-color.light-buff"
 msgstr ""
 
 #. TRANSLATORS: Light Cyan
-#: locale/ipp-strings.c:1350
+#: locale/ipp-strings.c:1354
 msgid "media-color.light-cyan"
 msgstr ""
 
 #. TRANSLATORS: Light Gold
-#: locale/ipp-strings.c:1352
+#: locale/ipp-strings.c:1356
 msgid "media-color.light-gold"
 msgstr ""
 
 #. TRANSLATORS: Light Goldenrod
-#: locale/ipp-strings.c:1354
+#: locale/ipp-strings.c:1358
 msgid "media-color.light-goldenrod"
 msgstr ""
 
 #. TRANSLATORS: Light Gray
-#: locale/ipp-strings.c:1356
+#: locale/ipp-strings.c:1360
 msgid "media-color.light-gray"
 msgstr ""
 
 #. TRANSLATORS: Light Green
-#: locale/ipp-strings.c:1358
+#: locale/ipp-strings.c:1362
 msgid "media-color.light-green"
 msgstr ""
 
 #. TRANSLATORS: Light Ivory
-#: locale/ipp-strings.c:1360
+#: locale/ipp-strings.c:1364
 msgid "media-color.light-ivory"
 msgstr ""
 
 #. TRANSLATORS: Light Magenta
-#: locale/ipp-strings.c:1362
+#: locale/ipp-strings.c:1366
 msgid "media-color.light-magenta"
 msgstr ""
 
 #. TRANSLATORS: Light Mustard
-#: locale/ipp-strings.c:1364
+#: locale/ipp-strings.c:1368
 msgid "media-color.light-mustard"
 msgstr ""
 
 #. TRANSLATORS: Light Orange
-#: locale/ipp-strings.c:1366
+#: locale/ipp-strings.c:1370
 msgid "media-color.light-orange"
 msgstr ""
 
 #. TRANSLATORS: Light Pink
-#: locale/ipp-strings.c:1368
+#: locale/ipp-strings.c:1372
 msgid "media-color.light-pink"
 msgstr ""
 
 #. TRANSLATORS: Light Red
-#: locale/ipp-strings.c:1370
+#: locale/ipp-strings.c:1374
 msgid "media-color.light-red"
 msgstr ""
 
 #. TRANSLATORS: Light Silver
-#: locale/ipp-strings.c:1372
+#: locale/ipp-strings.c:1376
 msgid "media-color.light-silver"
 msgstr ""
 
 #. TRANSLATORS: Light Turquoise
-#: locale/ipp-strings.c:1374
+#: locale/ipp-strings.c:1378
 msgid "media-color.light-turquoise"
 msgstr ""
 
 #. TRANSLATORS: Light Violet
-#: locale/ipp-strings.c:1376
+#: locale/ipp-strings.c:1380
 msgid "media-color.light-violet"
 msgstr ""
 
 #. TRANSLATORS: Light Yellow
-#: locale/ipp-strings.c:1378
+#: locale/ipp-strings.c:1382
 msgid "media-color.light-yellow"
 msgstr ""
 
 #. TRANSLATORS: Magenta
-#: locale/ipp-strings.c:1380
+#: locale/ipp-strings.c:1384
 msgid "media-color.magenta"
 msgstr ""
 
 #. TRANSLATORS: Multi-color
-#: locale/ipp-strings.c:1382
+#: locale/ipp-strings.c:1386
 msgid "media-color.multi-color"
 msgstr ""
 
 #. TRANSLATORS: Mustard
-#: locale/ipp-strings.c:1384
+#: locale/ipp-strings.c:1388
 msgid "media-color.mustard"
 msgstr ""
 
 #. TRANSLATORS: No Color
-#: locale/ipp-strings.c:1386
+#: locale/ipp-strings.c:1390
 msgid "media-color.no-color"
 msgstr ""
 
 #. TRANSLATORS: Orange
-#: locale/ipp-strings.c:1388
+#: locale/ipp-strings.c:1392
 msgid "media-color.orange"
 msgstr ""
 
 #. TRANSLATORS: Pink
-#: locale/ipp-strings.c:1390
+#: locale/ipp-strings.c:1394
 msgid "media-color.pink"
 msgstr ""
 
 #. TRANSLATORS: Red
-#: locale/ipp-strings.c:1392
+#: locale/ipp-strings.c:1396
 msgid "media-color.red"
 msgstr ""
 
 #. TRANSLATORS: Silver
-#: locale/ipp-strings.c:1394
+#: locale/ipp-strings.c:1398
 msgid "media-color.silver"
 msgstr ""
 
 #. TRANSLATORS: Turquoise
-#: locale/ipp-strings.c:1396
+#: locale/ipp-strings.c:1400
 msgid "media-color.turquoise"
 msgstr ""
 
 #. TRANSLATORS: Violet
-#: locale/ipp-strings.c:1398
+#: locale/ipp-strings.c:1402
 msgid "media-color.violet"
 msgstr ""
 
 #. TRANSLATORS: White
-#: locale/ipp-strings.c:1400
+#: locale/ipp-strings.c:1404
 msgid "media-color.white"
 msgstr ""
 
 #. TRANSLATORS: Yellow
-#: locale/ipp-strings.c:1402
+#: locale/ipp-strings.c:1406
 msgid "media-color.yellow"
 msgstr ""
 
 #. TRANSLATORS: Front Coating of Media
-#: locale/ipp-strings.c:1404
+#: locale/ipp-strings.c:1408
 msgid "media-front-coating"
 msgstr ""
 
 #. TRANSLATORS: Media Grain
-#: locale/ipp-strings.c:1406
+#: locale/ipp-strings.c:1410
 msgid "media-grain"
 msgstr ""
 
 #. TRANSLATORS: Cross-Feed Direction
-#: locale/ipp-strings.c:1408
+#: locale/ipp-strings.c:1412
 msgid "media-grain.x-direction"
 msgstr ""
 
 #. TRANSLATORS: Feed Direction
-#: locale/ipp-strings.c:1410
+#: locale/ipp-strings.c:1414
 msgid "media-grain.y-direction"
 msgstr ""
 
 #. TRANSLATORS: Media Hole Count
-#: locale/ipp-strings.c:1412
+#: locale/ipp-strings.c:1416
 msgid "media-hole-count"
 msgstr ""
 
 #. TRANSLATORS: Media Info
-#: locale/ipp-strings.c:1414
+#: locale/ipp-strings.c:1418
 msgid "media-info"
 msgstr ""
 
 #. TRANSLATORS: Force Media
-#: locale/ipp-strings.c:1416
+#: locale/ipp-strings.c:1420
 msgid "media-input-tray-check"
 msgstr ""
 
 #. TRANSLATORS: Media Left Margin
-#: locale/ipp-strings.c:1418
+#: locale/ipp-strings.c:1422
 msgid "media-left-margin"
 msgstr ""
 
 #. TRANSLATORS: Pre-printed Media
-#: locale/ipp-strings.c:1420
+#: locale/ipp-strings.c:1424
 msgid "media-pre-printed"
 msgstr ""
 
 #. TRANSLATORS: Blank
-#: locale/ipp-strings.c:1422
+#: locale/ipp-strings.c:1426
 msgid "media-pre-printed.blank"
 msgstr ""
 
 #. TRANSLATORS: Letterhead
-#: locale/ipp-strings.c:1424
+#: locale/ipp-strings.c:1428
 msgid "media-pre-printed.letter-head"
 msgstr ""
 
 #. TRANSLATORS: Pre-printed
-#: locale/ipp-strings.c:1426
+#: locale/ipp-strings.c:1430
 msgid "media-pre-printed.pre-printed"
 msgstr ""
 
 #. TRANSLATORS: Recycled Media
-#: locale/ipp-strings.c:1428
+#: locale/ipp-strings.c:1432
 msgid "media-recycled"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:1430
+#: locale/ipp-strings.c:1434
 msgid "media-recycled.none"
 msgstr ""
 
 #. TRANSLATORS: Standard
-#: locale/ipp-strings.c:1432
+#: locale/ipp-strings.c:1436
 msgid "media-recycled.standard"
 msgstr ""
 
 #. TRANSLATORS: Media Right Margin
-#: locale/ipp-strings.c:1434
+#: locale/ipp-strings.c:1438
 msgid "media-right-margin"
 msgstr ""
 
 #. TRANSLATORS: Media Dimensions
-#: locale/ipp-strings.c:1436
+#: locale/ipp-strings.c:1440
 msgid "media-size"
 msgstr ""
 
 #. TRANSLATORS: Media Name
-#: locale/ipp-strings.c:1438
+#: locale/ipp-strings.c:1442
 msgid "media-size-name"
 msgstr ""
 
 #. TRANSLATORS: Media Source
-#: locale/ipp-strings.c:1440
+#: locale/ipp-strings.c:1444
 msgid "media-source"
 msgstr ""
 
 #. TRANSLATORS: Alternate
-#: locale/ipp-strings.c:1442
+#: locale/ipp-strings.c:1446
 msgid "media-source.alternate"
 msgstr ""
 
 #. TRANSLATORS: Alternate Roll
-#: locale/ipp-strings.c:1444
+#: locale/ipp-strings.c:1448
 msgid "media-source.alternate-roll"
 msgstr ""
 
 #. TRANSLATORS: Automatic
-#: locale/ipp-strings.c:1446
+#: locale/ipp-strings.c:1450
 msgid "media-source.auto"
 msgstr ""
 
 #. TRANSLATORS: Bottom
-#: locale/ipp-strings.c:1448
+#: locale/ipp-strings.c:1452
 msgid "media-source.bottom"
 msgstr ""
 
 #. TRANSLATORS: By-pass Tray
-#: locale/ipp-strings.c:1450
+#: locale/ipp-strings.c:1454
 msgid "media-source.by-pass-tray"
 msgstr ""
 
 #. TRANSLATORS: Center
-#: locale/ipp-strings.c:1452
+#: locale/ipp-strings.c:1456
 msgid "media-source.center"
 msgstr ""
 
 #. TRANSLATORS: Disc
-#: locale/ipp-strings.c:1454
+#: locale/ipp-strings.c:1458
 msgid "media-source.disc"
 msgstr ""
 
 #. TRANSLATORS: Envelope
-#: locale/ipp-strings.c:1456
+#: locale/ipp-strings.c:1460
 msgid "media-source.envelope"
 msgstr ""
 
 #. TRANSLATORS: Hagaki
-#: locale/ipp-strings.c:1458
+#: locale/ipp-strings.c:1462
 msgid "media-source.hagaki"
 msgstr ""
 
 #. TRANSLATORS: Large Capacity
-#: locale/ipp-strings.c:1460
+#: locale/ipp-strings.c:1464
 msgid "media-source.large-capacity"
 msgstr ""
 
 #. TRANSLATORS: Left
-#: locale/ipp-strings.c:1462
+#: locale/ipp-strings.c:1466
 msgid "media-source.left"
 msgstr ""
 
 #. TRANSLATORS: Main
-#: locale/ipp-strings.c:1464
+#: locale/ipp-strings.c:1468
 msgid "media-source.main"
 msgstr ""
 
 #. TRANSLATORS: Main Roll
-#: locale/ipp-strings.c:1466
+#: locale/ipp-strings.c:1470
 msgid "media-source.main-roll"
 msgstr ""
 
 #. TRANSLATORS: Manual
-#: locale/ipp-strings.c:1468
+#: locale/ipp-strings.c:1472
 msgid "media-source.manual"
 msgstr ""
 
 #. TRANSLATORS: Middle
-#: locale/ipp-strings.c:1470
+#: locale/ipp-strings.c:1474
 msgid "media-source.middle"
 msgstr ""
 
 #. TRANSLATORS: Photo
-#: locale/ipp-strings.c:1472
+#: locale/ipp-strings.c:1476
 msgid "media-source.photo"
 msgstr ""
 
 #. TRANSLATORS: Rear
-#: locale/ipp-strings.c:1474
+#: locale/ipp-strings.c:1478
 msgid "media-source.rear"
 msgstr ""
 
 #. TRANSLATORS: Right
-#: locale/ipp-strings.c:1476
+#: locale/ipp-strings.c:1480
 msgid "media-source.right"
 msgstr ""
 
 #. TRANSLATORS: Roll 1
-#: locale/ipp-strings.c:1478
+#: locale/ipp-strings.c:1482
 msgid "media-source.roll-1"
 msgstr ""
 
 #. TRANSLATORS: Roll 10
-#: locale/ipp-strings.c:1480
+#: locale/ipp-strings.c:1484
 msgid "media-source.roll-10"
 msgstr ""
 
 #. TRANSLATORS: Roll 2
-#: locale/ipp-strings.c:1482
+#: locale/ipp-strings.c:1486
 msgid "media-source.roll-2"
 msgstr ""
 
 #. TRANSLATORS: Roll 3
-#: locale/ipp-strings.c:1484
+#: locale/ipp-strings.c:1488
 msgid "media-source.roll-3"
 msgstr ""
 
 #. TRANSLATORS: Roll 4
-#: locale/ipp-strings.c:1486
+#: locale/ipp-strings.c:1490
 msgid "media-source.roll-4"
 msgstr ""
 
 #. TRANSLATORS: Roll 5
-#: locale/ipp-strings.c:1488
+#: locale/ipp-strings.c:1492
 msgid "media-source.roll-5"
 msgstr ""
 
 #. TRANSLATORS: Roll 6
-#: locale/ipp-strings.c:1490
+#: locale/ipp-strings.c:1494
 msgid "media-source.roll-6"
 msgstr ""
 
 #. TRANSLATORS: Roll 7
-#: locale/ipp-strings.c:1492
+#: locale/ipp-strings.c:1496
 msgid "media-source.roll-7"
 msgstr ""
 
 #. TRANSLATORS: Roll 8
-#: locale/ipp-strings.c:1494
+#: locale/ipp-strings.c:1498
 msgid "media-source.roll-8"
 msgstr ""
 
 #. TRANSLATORS: Roll 9
-#: locale/ipp-strings.c:1496
+#: locale/ipp-strings.c:1500
 msgid "media-source.roll-9"
 msgstr ""
 
 #. TRANSLATORS: Side
-#: locale/ipp-strings.c:1498
+#: locale/ipp-strings.c:1502
 msgid "media-source.side"
 msgstr ""
 
 #. TRANSLATORS: Top
-#: locale/ipp-strings.c:1500
+#: locale/ipp-strings.c:1504
 msgid "media-source.top"
 msgstr ""
 
 #. TRANSLATORS: Tray 1
-#: locale/ipp-strings.c:1502
+#: locale/ipp-strings.c:1506
 msgid "media-source.tray-1"
 msgstr ""
 
 #. TRANSLATORS: Tray 10
-#: locale/ipp-strings.c:1504
+#: locale/ipp-strings.c:1508
 msgid "media-source.tray-10"
 msgstr ""
 
 #. TRANSLATORS: Tray 11
-#: locale/ipp-strings.c:1506
+#: locale/ipp-strings.c:1510
 msgid "media-source.tray-11"
 msgstr ""
 
 #. TRANSLATORS: Tray 12
-#: locale/ipp-strings.c:1508
+#: locale/ipp-strings.c:1512
 msgid "media-source.tray-12"
 msgstr ""
 
 #. TRANSLATORS: Tray 13
-#: locale/ipp-strings.c:1510
+#: locale/ipp-strings.c:1514
 msgid "media-source.tray-13"
 msgstr ""
 
 #. TRANSLATORS: Tray 14
-#: locale/ipp-strings.c:1512
+#: locale/ipp-strings.c:1516
 msgid "media-source.tray-14"
 msgstr ""
 
 #. TRANSLATORS: Tray 15
-#: locale/ipp-strings.c:1514
+#: locale/ipp-strings.c:1518
 msgid "media-source.tray-15"
 msgstr ""
 
 #. TRANSLATORS: Tray 16
-#: locale/ipp-strings.c:1516
+#: locale/ipp-strings.c:1520
 msgid "media-source.tray-16"
 msgstr ""
 
 #. TRANSLATORS: Tray 17
-#: locale/ipp-strings.c:1518
+#: locale/ipp-strings.c:1522
 msgid "media-source.tray-17"
 msgstr ""
 
 #. TRANSLATORS: Tray 18
-#: locale/ipp-strings.c:1520
+#: locale/ipp-strings.c:1524
 msgid "media-source.tray-18"
 msgstr ""
 
 #. TRANSLATORS: Tray 19
-#: locale/ipp-strings.c:1522
+#: locale/ipp-strings.c:1526
 msgid "media-source.tray-19"
 msgstr ""
 
 #. TRANSLATORS: Tray 2
-#: locale/ipp-strings.c:1524
+#: locale/ipp-strings.c:1528
 msgid "media-source.tray-2"
 msgstr ""
 
 #. TRANSLATORS: Tray 20
-#: locale/ipp-strings.c:1526
+#: locale/ipp-strings.c:1530
 msgid "media-source.tray-20"
 msgstr ""
 
 #. TRANSLATORS: Tray 3
-#: locale/ipp-strings.c:1528
+#: locale/ipp-strings.c:1532
 msgid "media-source.tray-3"
 msgstr ""
 
 #. TRANSLATORS: Tray 4
-#: locale/ipp-strings.c:1530
+#: locale/ipp-strings.c:1534
 msgid "media-source.tray-4"
 msgstr ""
 
 #. TRANSLATORS: Tray 5
-#: locale/ipp-strings.c:1532
+#: locale/ipp-strings.c:1536
 msgid "media-source.tray-5"
 msgstr ""
 
 #. TRANSLATORS: Tray 6
-#: locale/ipp-strings.c:1534
+#: locale/ipp-strings.c:1538
 msgid "media-source.tray-6"
 msgstr ""
 
 #. TRANSLATORS: Tray 7
-#: locale/ipp-strings.c:1536
+#: locale/ipp-strings.c:1540
 msgid "media-source.tray-7"
 msgstr ""
 
 #. TRANSLATORS: Tray 8
-#: locale/ipp-strings.c:1538
+#: locale/ipp-strings.c:1542
 msgid "media-source.tray-8"
 msgstr ""
 
 #. TRANSLATORS: Tray 9
-#: locale/ipp-strings.c:1540
+#: locale/ipp-strings.c:1544
 msgid "media-source.tray-9"
 msgstr ""
 
 #. TRANSLATORS: Media Thickness
-#: locale/ipp-strings.c:1542
+#: locale/ipp-strings.c:1546
 msgid "media-thickness"
 msgstr ""
 
 #. TRANSLATORS: Media Tooth (Texture)
-#: locale/ipp-strings.c:1544
+#: locale/ipp-strings.c:1548
 msgid "media-tooth"
 msgstr ""
 
 #. TRANSLATORS: Antique
-#: locale/ipp-strings.c:1546
+#: locale/ipp-strings.c:1550
 msgid "media-tooth.antique"
 msgstr ""
 
 #. TRANSLATORS: Extra Smooth
-#: locale/ipp-strings.c:1548
+#: locale/ipp-strings.c:1552
 msgid "media-tooth.calendared"
 msgstr ""
 
 #. TRANSLATORS: Coarse
-#: locale/ipp-strings.c:1550
+#: locale/ipp-strings.c:1554
 msgid "media-tooth.coarse"
 msgstr ""
 
 #. TRANSLATORS: Fine
-#: locale/ipp-strings.c:1552
+#: locale/ipp-strings.c:1556
 msgid "media-tooth.fine"
 msgstr ""
 
 #. TRANSLATORS: Linen
-#: locale/ipp-strings.c:1554
+#: locale/ipp-strings.c:1558
 msgid "media-tooth.linen"
 msgstr ""
 
 #. TRANSLATORS: Medium
-#: locale/ipp-strings.c:1556
+#: locale/ipp-strings.c:1560
 msgid "media-tooth.medium"
 msgstr ""
 
 #. TRANSLATORS: Smooth
-#: locale/ipp-strings.c:1558
+#: locale/ipp-strings.c:1562
 msgid "media-tooth.smooth"
 msgstr ""
 
 #. TRANSLATORS: Stipple
-#: locale/ipp-strings.c:1560
+#: locale/ipp-strings.c:1564
 msgid "media-tooth.stipple"
 msgstr ""
 
 #. TRANSLATORS: Rough
-#: locale/ipp-strings.c:1562
+#: locale/ipp-strings.c:1566
 msgid "media-tooth.uncalendared"
 msgstr ""
 
 #. TRANSLATORS: Vellum
-#: locale/ipp-strings.c:1564
+#: locale/ipp-strings.c:1568
 msgid "media-tooth.vellum"
 msgstr ""
 
 #. TRANSLATORS: Media Top Margin
-#: locale/ipp-strings.c:1566
+#: locale/ipp-strings.c:1570
 msgid "media-top-margin"
 msgstr ""
 
 #. TRANSLATORS: Media Type
-#: locale/ipp-strings.c:1568
+#: locale/ipp-strings.c:1572
 msgid "media-type"
 msgstr ""
 
 #. TRANSLATORS: Aluminum
-#: locale/ipp-strings.c:1570
+#: locale/ipp-strings.c:1574
 msgid "media-type.aluminum"
 msgstr ""
 
 #. TRANSLATORS: Automatic
-#: locale/ipp-strings.c:1572
+#: locale/ipp-strings.c:1576
 msgid "media-type.auto"
 msgstr ""
 
 #. TRANSLATORS: Back Print Film
-#: locale/ipp-strings.c:1574
+#: locale/ipp-strings.c:1578
 msgid "media-type.back-print-film"
 msgstr ""
 
 #. TRANSLATORS: Cardboard
-#: locale/ipp-strings.c:1576
+#: locale/ipp-strings.c:1580
 msgid "media-type.cardboard"
 msgstr ""
 
 #. TRANSLATORS: Cardstock
-#: locale/ipp-strings.c:1578
+#: locale/ipp-strings.c:1582
 msgid "media-type.cardstock"
 msgstr ""
 
 #. TRANSLATORS: CD
-#: locale/ipp-strings.c:1580
+#: locale/ipp-strings.c:1584
 msgid "media-type.cd"
 msgstr ""
 
+#. TRANSLATORS: Photo Advanced Paper
+#: locale/ipp-strings.c:1586
+msgid "media-type.com.hp.advanced-photo"
+msgstr ""
+
+#. TRANSLATORS: Brochure Glossy Paper
+#: locale/ipp-strings.c:1588
+msgid "media-type.com.hp.brochure-glossy"
+msgstr ""
+
+#. TRANSLATORS: Brochure Matte Paper
+#: locale/ipp-strings.c:1590
+msgid "media-type.com.hp.brochure-matte"
+msgstr ""
+
+#. TRANSLATORS: Matte Coverstock
+#: locale/ipp-strings.c:1592
+msgid "media-type.com.hp.cover-matte"
+msgstr ""
+
+#. TRANSLATORS: EcoSMART Lite Paper
+#: locale/ipp-strings.c:1594
+msgid "media-type.com.hp.ecosmart-lite"
+msgstr ""
+
+#. TRANSLATORS: Everyday Glossy Paper
+#: locale/ipp-strings.c:1596
+msgid "media-type.com.hp.everyday-glossy"
+msgstr ""
+
+#. TRANSLATORS: Everyday Matte Paper
+#: locale/ipp-strings.c:1598
+msgid "media-type.com.hp.everyday-matte"
+msgstr ""
+
+#. TRANSLATORS: Extra Heavyweight Paper
+#: locale/ipp-strings.c:1600
+msgid "media-type.com.hp.extra-heavy"
+msgstr ""
+
+#. TRANSLATORS: Intermediate Paper
+#: locale/ipp-strings.c:1602
+msgid "media-type.com.hp.intermediate"
+msgstr ""
+
+#. TRANSLATORS: Mid-Weight Paper
+#: locale/ipp-strings.c:1604
+msgid "media-type.com.hp.mid-weight"
+msgstr ""
+
+#. TRANSLATORS: Inkjet Premium Paper
+#: locale/ipp-strings.c:1606
+msgid "media-type.com.hp.premium-inkjet"
+msgstr ""
+
+#. TRANSLATORS: Photo Premium Paper
+#: locale/ipp-strings.c:1608
+msgid "media-type.com.hp.premium-photo"
+msgstr ""
+
+#. TRANSLATORS: Premium Matte Presentation Paper
+#: locale/ipp-strings.c:1610
+msgid "media-type.com.hp.premium-presentation-matte"
+msgstr ""
+
 #. TRANSLATORS: Continuous
-#: locale/ipp-strings.c:1582
+#: locale/ipp-strings.c:1612
 msgid "media-type.continuous"
 msgstr ""
 
 #. TRANSLATORS: Continuous Long
-#: locale/ipp-strings.c:1584
+#: locale/ipp-strings.c:1614
 msgid "media-type.continuous-long"
 msgstr ""
 
 #. TRANSLATORS: Continuous Short
-#: locale/ipp-strings.c:1586
+#: locale/ipp-strings.c:1616
 msgid "media-type.continuous-short"
 msgstr ""
 
 #. TRANSLATORS: Corrugated Board
-#: locale/ipp-strings.c:1588
+#: locale/ipp-strings.c:1618
 msgid "media-type.corrugated-board"
 msgstr ""
 
 #. TRANSLATORS: Optical Disc
-#: locale/ipp-strings.c:1590
+#: locale/ipp-strings.c:1620
 msgid "media-type.disc"
 msgstr ""
 
 #. TRANSLATORS: Glossy Optical Disc
-#: locale/ipp-strings.c:1592
+#: locale/ipp-strings.c:1622
 msgid "media-type.disc-glossy"
 msgstr ""
 
 #. TRANSLATORS: High Gloss Optical Disc
-#: locale/ipp-strings.c:1594
+#: locale/ipp-strings.c:1624
 msgid "media-type.disc-high-gloss"
 msgstr ""
 
 #. TRANSLATORS: Matte Optical Disc
-#: locale/ipp-strings.c:1596
+#: locale/ipp-strings.c:1626
 msgid "media-type.disc-matte"
 msgstr ""
 
 #. TRANSLATORS: Satin Optical Disc
-#: locale/ipp-strings.c:1598
+#: locale/ipp-strings.c:1628
 msgid "media-type.disc-satin"
 msgstr ""
 
 #. TRANSLATORS: Semi-Gloss Optical Disc
-#: locale/ipp-strings.c:1600
+#: locale/ipp-strings.c:1630
 msgid "media-type.disc-semi-gloss"
 msgstr ""
 
 #. TRANSLATORS: Double Wall
-#: locale/ipp-strings.c:1602
+#: locale/ipp-strings.c:1632
 msgid "media-type.double-wall"
 msgstr ""
 
 #. TRANSLATORS: Dry Film
-#: locale/ipp-strings.c:1604
+#: locale/ipp-strings.c:1634
 msgid "media-type.dry-film"
 msgstr ""
 
 #. TRANSLATORS: DVD
-#: locale/ipp-strings.c:1606
+#: locale/ipp-strings.c:1636
 msgid "media-type.dvd"
 msgstr ""
 
 #. TRANSLATORS: Embossing Foil
-#: locale/ipp-strings.c:1608
+#: locale/ipp-strings.c:1638
 msgid "media-type.embossing-foil"
 msgstr ""
 
 #. TRANSLATORS: End Board
-#: locale/ipp-strings.c:1610
+#: locale/ipp-strings.c:1640
 msgid "media-type.end-board"
 msgstr ""
 
 #. TRANSLATORS: Envelope
-#: locale/ipp-strings.c:1612
+#: locale/ipp-strings.c:1642
 msgid "media-type.envelope"
 msgstr ""
 
 #. TRANSLATORS: Archival Envelope
-#: locale/ipp-strings.c:1614
+#: locale/ipp-strings.c:1644
 msgid "media-type.envelope-archival"
 msgstr ""
 
 #. TRANSLATORS: Bond Envelope
-#: locale/ipp-strings.c:1616
+#: locale/ipp-strings.c:1646
 msgid "media-type.envelope-bond"
 msgstr ""
 
 #. TRANSLATORS: Coated Envelope
-#: locale/ipp-strings.c:1618
+#: locale/ipp-strings.c:1648
 msgid "media-type.envelope-coated"
 msgstr ""
 
 #. TRANSLATORS: Cotton Envelope
-#: locale/ipp-strings.c:1620
+#: locale/ipp-strings.c:1650
 msgid "media-type.envelope-cotton"
 msgstr ""
 
 #. TRANSLATORS: Fine Envelope
-#: locale/ipp-strings.c:1622
+#: locale/ipp-strings.c:1652
 msgid "media-type.envelope-fine"
 msgstr ""
 
 #. TRANSLATORS: Heavyweight Envelope
-#: locale/ipp-strings.c:1624
+#: locale/ipp-strings.c:1654
 msgid "media-type.envelope-heavyweight"
 msgstr ""
 
 #. TRANSLATORS: Inkjet Envelope
-#: locale/ipp-strings.c:1626
+#: locale/ipp-strings.c:1656
 msgid "media-type.envelope-inkjet"
 msgstr ""
 
 #. TRANSLATORS: Lightweight Envelope
-#: locale/ipp-strings.c:1628
+#: locale/ipp-strings.c:1658
 msgid "media-type.envelope-lightweight"
 msgstr ""
 
 #. TRANSLATORS: Plain Envelope
-#: locale/ipp-strings.c:1630
+#: locale/ipp-strings.c:1660
 msgid "media-type.envelope-plain"
 msgstr ""
 
 #. TRANSLATORS: Preprinted Envelope
-#: locale/ipp-strings.c:1632
+#: locale/ipp-strings.c:1662
 msgid "media-type.envelope-preprinted"
 msgstr ""
 
 #. TRANSLATORS: Windowed Envelope
-#: locale/ipp-strings.c:1634
+#: locale/ipp-strings.c:1664
 msgid "media-type.envelope-window"
 msgstr ""
 
 #. TRANSLATORS: Fabric
-#: locale/ipp-strings.c:1636
+#: locale/ipp-strings.c:1666
 msgid "media-type.fabric"
 msgstr ""
 
 #. TRANSLATORS: Archival Fabric
-#: locale/ipp-strings.c:1638
+#: locale/ipp-strings.c:1668
 msgid "media-type.fabric-archival"
 msgstr ""
 
 #. TRANSLATORS: Glossy Fabric
-#: locale/ipp-strings.c:1640
+#: locale/ipp-strings.c:1670
 msgid "media-type.fabric-glossy"
 msgstr ""
 
 #. TRANSLATORS: High Gloss Fabric
-#: locale/ipp-strings.c:1642
+#: locale/ipp-strings.c:1672
 msgid "media-type.fabric-high-gloss"
 msgstr ""
 
 #. TRANSLATORS: Matte Fabric
-#: locale/ipp-strings.c:1644
+#: locale/ipp-strings.c:1674
 msgid "media-type.fabric-matte"
 msgstr ""
 
 #. TRANSLATORS: Semi-Gloss Fabric
-#: locale/ipp-strings.c:1646
+#: locale/ipp-strings.c:1676
 msgid "media-type.fabric-semi-gloss"
 msgstr ""
 
 #. TRANSLATORS: Waterproof Fabric
-#: locale/ipp-strings.c:1648
+#: locale/ipp-strings.c:1678
 msgid "media-type.fabric-waterproof"
 msgstr ""
 
 #. TRANSLATORS: Film
-#: locale/ipp-strings.c:1650
+#: locale/ipp-strings.c:1680
 msgid "media-type.film"
 msgstr ""
 
 #. TRANSLATORS: Flexo Base
-#: locale/ipp-strings.c:1652
+#: locale/ipp-strings.c:1682
 msgid "media-type.flexo-base"
 msgstr ""
 
 #. TRANSLATORS: Flexo Photo Polymer
-#: locale/ipp-strings.c:1654
+#: locale/ipp-strings.c:1684
 msgid "media-type.flexo-photo-polymer"
 msgstr ""
 
 #. TRANSLATORS: Flute
-#: locale/ipp-strings.c:1656
+#: locale/ipp-strings.c:1686
 msgid "media-type.flute"
 msgstr ""
 
 #. TRANSLATORS: Foil
-#: locale/ipp-strings.c:1658
+#: locale/ipp-strings.c:1688
 msgid "media-type.foil"
 msgstr ""
 
 #. TRANSLATORS: Full Cut Tabs
-#: locale/ipp-strings.c:1660
+#: locale/ipp-strings.c:1690
 msgid "media-type.full-cut-tabs"
 msgstr ""
 
 #. TRANSLATORS: Glass
-#: locale/ipp-strings.c:1662
+#: locale/ipp-strings.c:1692
 msgid "media-type.glass"
 msgstr ""
 
 #. TRANSLATORS: Glass Colored
-#: locale/ipp-strings.c:1664
+#: locale/ipp-strings.c:1694
 msgid "media-type.glass-colored"
 msgstr ""
 
 #. TRANSLATORS: Glass Opaque
-#: locale/ipp-strings.c:1666
+#: locale/ipp-strings.c:1696
 msgid "media-type.glass-opaque"
 msgstr ""
 
 #. TRANSLATORS: Glass Surfaced
-#: locale/ipp-strings.c:1668
+#: locale/ipp-strings.c:1698
 msgid "media-type.glass-surfaced"
 msgstr ""
 
 #. TRANSLATORS: Glass Textured
-#: locale/ipp-strings.c:1670
+#: locale/ipp-strings.c:1700
 msgid "media-type.glass-textured"
 msgstr ""
 
 #. TRANSLATORS: Gravure Cylinder
-#: locale/ipp-strings.c:1672
+#: locale/ipp-strings.c:1702
 msgid "media-type.gravure-cylinder"
 msgstr ""
 
 #. TRANSLATORS: Image Setter Paper
-#: locale/ipp-strings.c:1674
+#: locale/ipp-strings.c:1704
 msgid "media-type.image-setter-paper"
 msgstr ""
 
 #. TRANSLATORS: Imaging Cylinder
-#: locale/ipp-strings.c:1676
+#: locale/ipp-strings.c:1706
 msgid "media-type.imaging-cylinder"
 msgstr ""
 
+#. TRANSLATORS: Photo Paper Plus Glossy II
+#: locale/ipp-strings.c:1708
+msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+#: locale/ipp-strings.c:1710
+msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Plus Glossy II
+#: locale/ipp-strings.c:1712
+msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+#: locale/ipp-strings.c:1714
+msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
+msgstr ""
+
 #. TRANSLATORS: Labels
-#: locale/ipp-strings.c:1678
+#: locale/ipp-strings.c:1716
 msgid "media-type.labels"
 msgstr ""
 
 #. TRANSLATORS: Colored Labels
-#: locale/ipp-strings.c:1680
+#: locale/ipp-strings.c:1718
 msgid "media-type.labels-colored"
 msgstr ""
 
 #. TRANSLATORS: Glossy Labels
-#: locale/ipp-strings.c:1682
+#: locale/ipp-strings.c:1720
 msgid "media-type.labels-glossy"
 msgstr ""
 
 #. TRANSLATORS: High Gloss Labels
-#: locale/ipp-strings.c:1684
+#: locale/ipp-strings.c:1722
 msgid "media-type.labels-high-gloss"
 msgstr ""
 
 #. TRANSLATORS: Inkjet Labels
-#: locale/ipp-strings.c:1686
+#: locale/ipp-strings.c:1724
 msgid "media-type.labels-inkjet"
 msgstr ""
 
 #. TRANSLATORS: Matte Labels
-#: locale/ipp-strings.c:1688
+#: locale/ipp-strings.c:1726
 msgid "media-type.labels-matte"
 msgstr ""
 
 #. TRANSLATORS: Permanent Labels
-#: locale/ipp-strings.c:1690
+#: locale/ipp-strings.c:1728
 msgid "media-type.labels-permanent"
 msgstr ""
 
 #. TRANSLATORS: Satin Labels
-#: locale/ipp-strings.c:1692
+#: locale/ipp-strings.c:1730
 msgid "media-type.labels-satin"
 msgstr ""
 
 #. TRANSLATORS: Security Labels
-#: locale/ipp-strings.c:1694
+#: locale/ipp-strings.c:1732
 msgid "media-type.labels-security"
 msgstr ""
 
 #. TRANSLATORS: Semi-Gloss Labels
-#: locale/ipp-strings.c:1696
+#: locale/ipp-strings.c:1734
 msgid "media-type.labels-semi-gloss"
 msgstr ""
 
 #. TRANSLATORS: Laminating Foil
-#: locale/ipp-strings.c:1698
+#: locale/ipp-strings.c:1736
 msgid "media-type.laminating-foil"
 msgstr ""
 
 #. TRANSLATORS: Letterhead
-#: locale/ipp-strings.c:1700
+#: locale/ipp-strings.c:1738
 msgid "media-type.letterhead"
 msgstr ""
 
 #. TRANSLATORS: Metal
-#: locale/ipp-strings.c:1702
+#: locale/ipp-strings.c:1740
 msgid "media-type.metal"
 msgstr ""
 
 #. TRANSLATORS: Metal Glossy
-#: locale/ipp-strings.c:1704
+#: locale/ipp-strings.c:1742
 msgid "media-type.metal-glossy"
 msgstr ""
 
 #. TRANSLATORS: Metal High Gloss
-#: locale/ipp-strings.c:1706
+#: locale/ipp-strings.c:1744
 msgid "media-type.metal-high-gloss"
 msgstr ""
 
 #. TRANSLATORS: Metal Matte
-#: locale/ipp-strings.c:1708
+#: locale/ipp-strings.c:1746
 msgid "media-type.metal-matte"
 msgstr ""
 
 #. TRANSLATORS: Metal Satin
-#: locale/ipp-strings.c:1710
+#: locale/ipp-strings.c:1748
 msgid "media-type.metal-satin"
 msgstr ""
 
 #. TRANSLATORS: Metal Semi Gloss
-#: locale/ipp-strings.c:1712
+#: locale/ipp-strings.c:1750
 msgid "media-type.metal-semi-gloss"
 msgstr ""
 
 #. TRANSLATORS: Mounting Tape
-#: locale/ipp-strings.c:1714
+#: locale/ipp-strings.c:1752
 msgid "media-type.mounting-tape"
 msgstr ""
 
 #. TRANSLATORS: Multi Layer
-#: locale/ipp-strings.c:1716
+#: locale/ipp-strings.c:1754
 msgid "media-type.multi-layer"
 msgstr ""
 
 #. TRANSLATORS: Multi Part Form
-#: locale/ipp-strings.c:1718
+#: locale/ipp-strings.c:1756
 msgid "media-type.multi-part-form"
 msgstr ""
 
 #. TRANSLATORS: Other
-#: locale/ipp-strings.c:1720
+#: locale/ipp-strings.c:1758
 msgid "media-type.other"
 msgstr ""
 
 #. TRANSLATORS: Paper
-#: locale/ipp-strings.c:1722
+#: locale/ipp-strings.c:1760
 msgid "media-type.paper"
 msgstr ""
 
 #. TRANSLATORS: Photo Paper
-#: locale/ipp-strings.c:1724
+#: locale/ipp-strings.c:1762
 msgid "media-type.photographic"
 msgstr ""
 
 #. TRANSLATORS: Photographic Archival
-#: locale/ipp-strings.c:1726
+#: locale/ipp-strings.c:1764
 msgid "media-type.photographic-archival"
 msgstr ""
 
 #. TRANSLATORS: Photo Film
-#: locale/ipp-strings.c:1728
+#: locale/ipp-strings.c:1766
 msgid "media-type.photographic-film"
 msgstr ""
 
 #. TRANSLATORS: Glossy Photo Paper
-#: locale/ipp-strings.c:1730
+#: locale/ipp-strings.c:1768
 msgid "media-type.photographic-glossy"
 msgstr ""
 
 #. TRANSLATORS: High Gloss Photo Paper
-#: locale/ipp-strings.c:1732
+#: locale/ipp-strings.c:1770
 msgid "media-type.photographic-high-gloss"
 msgstr ""
 
 #. TRANSLATORS: Matte Photo Paper
-#: locale/ipp-strings.c:1734
+#: locale/ipp-strings.c:1772
 msgid "media-type.photographic-matte"
 msgstr ""
 
 #. TRANSLATORS: Satin Photo Paper
-#: locale/ipp-strings.c:1736
+#: locale/ipp-strings.c:1774
 msgid "media-type.photographic-satin"
 msgstr ""
 
 #. TRANSLATORS: Semi-Gloss Photo Paper
-#: locale/ipp-strings.c:1738
+#: locale/ipp-strings.c:1776
 msgid "media-type.photographic-semi-gloss"
 msgstr ""
 
 #. TRANSLATORS: Plastic
-#: locale/ipp-strings.c:1740
+#: locale/ipp-strings.c:1778
 msgid "media-type.plastic"
 msgstr ""
 
 #. TRANSLATORS: Plastic Archival
-#: locale/ipp-strings.c:1742
+#: locale/ipp-strings.c:1780
 msgid "media-type.plastic-archival"
 msgstr ""
 
 #. TRANSLATORS: Plastic Colored
-#: locale/ipp-strings.c:1744
+#: locale/ipp-strings.c:1782
 msgid "media-type.plastic-colored"
 msgstr ""
 
 #. TRANSLATORS: Plastic Glossy
-#: locale/ipp-strings.c:1746
+#: locale/ipp-strings.c:1784
 msgid "media-type.plastic-glossy"
 msgstr ""
 
 #. TRANSLATORS: Plastic High Gloss
-#: locale/ipp-strings.c:1748
+#: locale/ipp-strings.c:1786
 msgid "media-type.plastic-high-gloss"
 msgstr ""
 
 #. TRANSLATORS: Plastic Matte
-#: locale/ipp-strings.c:1750
+#: locale/ipp-strings.c:1788
 msgid "media-type.plastic-matte"
 msgstr ""
 
 #. TRANSLATORS: Plastic Satin
-#: locale/ipp-strings.c:1752
+#: locale/ipp-strings.c:1790
 msgid "media-type.plastic-satin"
 msgstr ""
 
 #. TRANSLATORS: Plastic Semi Gloss
-#: locale/ipp-strings.c:1754
+#: locale/ipp-strings.c:1792
 msgid "media-type.plastic-semi-gloss"
 msgstr ""
 
 #. TRANSLATORS: Plate
-#: locale/ipp-strings.c:1756
+#: locale/ipp-strings.c:1794
 msgid "media-type.plate"
 msgstr ""
 
 #. TRANSLATORS: Polyester
-#: locale/ipp-strings.c:1758
+#: locale/ipp-strings.c:1796
 msgid "media-type.polyester"
 msgstr ""
 
 #. TRANSLATORS: Pre Cut Tabs
-#: locale/ipp-strings.c:1760
+#: locale/ipp-strings.c:1798
 msgid "media-type.pre-cut-tabs"
 msgstr ""
 
 #. TRANSLATORS: Roll
-#: locale/ipp-strings.c:1762
+#: locale/ipp-strings.c:1800
 msgid "media-type.roll"
 msgstr ""
 
 #. TRANSLATORS: Screen
-#: locale/ipp-strings.c:1764
+#: locale/ipp-strings.c:1802
 msgid "media-type.screen"
 msgstr ""
 
 #. TRANSLATORS: Screen Paged
-#: locale/ipp-strings.c:1766
+#: locale/ipp-strings.c:1804
 msgid "media-type.screen-paged"
 msgstr ""
 
 #. TRANSLATORS: Self Adhesive
-#: locale/ipp-strings.c:1768
+#: locale/ipp-strings.c:1806
 msgid "media-type.self-adhesive"
 msgstr ""
 
 #. TRANSLATORS: Self Adhesive Film
-#: locale/ipp-strings.c:1770
+#: locale/ipp-strings.c:1808
 msgid "media-type.self-adhesive-film"
 msgstr ""
 
 #. TRANSLATORS: Shrink Foil
-#: locale/ipp-strings.c:1772
+#: locale/ipp-strings.c:1810
 msgid "media-type.shrink-foil"
 msgstr ""
 
 #. TRANSLATORS: Single Face
-#: locale/ipp-strings.c:1774
+#: locale/ipp-strings.c:1812
 msgid "media-type.single-face"
 msgstr ""
 
 #. TRANSLATORS: Single Wall
-#: locale/ipp-strings.c:1776
+#: locale/ipp-strings.c:1814
 msgid "media-type.single-wall"
 msgstr ""
 
 #. TRANSLATORS: Sleeve
-#: locale/ipp-strings.c:1778
+#: locale/ipp-strings.c:1816
 msgid "media-type.sleeve"
 msgstr ""
 
 #. TRANSLATORS: Stationery
-#: locale/ipp-strings.c:1780
+#: locale/ipp-strings.c:1818
 msgid "media-type.stationery"
 msgstr ""
 
 #. TRANSLATORS: Stationery Archival
-#: locale/ipp-strings.c:1782
+#: locale/ipp-strings.c:1820
 msgid "media-type.stationery-archival"
 msgstr ""
 
 #. TRANSLATORS: Coated Paper
-#: locale/ipp-strings.c:1784
+#: locale/ipp-strings.c:1822
 msgid "media-type.stationery-coated"
 msgstr ""
 
 #. TRANSLATORS: Stationery Cotton
-#: locale/ipp-strings.c:1786
+#: locale/ipp-strings.c:1824
 msgid "media-type.stationery-cotton"
 msgstr ""
 
 #. TRANSLATORS: Vellum Paper
-#: locale/ipp-strings.c:1788
+#: locale/ipp-strings.c:1826
 msgid "media-type.stationery-fine"
 msgstr ""
 
 #. TRANSLATORS: Heavyweight Paper
-#: locale/ipp-strings.c:1790
+#: locale/ipp-strings.c:1828
 msgid "media-type.stationery-heavyweight"
 msgstr ""
 
 #. TRANSLATORS: Stationery Heavyweight Coated
-#: locale/ipp-strings.c:1792
+#: locale/ipp-strings.c:1830
 msgid "media-type.stationery-heavyweight-coated"
 msgstr ""
 
 #. TRANSLATORS: Stationery Inkjet Paper
-#: locale/ipp-strings.c:1794
+#: locale/ipp-strings.c:1832
 msgid "media-type.stationery-inkjet"
 msgstr ""
 
 #. TRANSLATORS: Letterhead
-#: locale/ipp-strings.c:1796
+#: locale/ipp-strings.c:1834
 msgid "media-type.stationery-letterhead"
 msgstr ""
 
 #. TRANSLATORS: Lightweight Paper
-#: locale/ipp-strings.c:1798
+#: locale/ipp-strings.c:1836
 msgid "media-type.stationery-lightweight"
 msgstr ""
 
 #. TRANSLATORS: Preprinted Paper
-#: locale/ipp-strings.c:1800
+#: locale/ipp-strings.c:1838
 msgid "media-type.stationery-preprinted"
 msgstr ""
 
 #. TRANSLATORS: Punched Paper
-#: locale/ipp-strings.c:1802
+#: locale/ipp-strings.c:1840
 msgid "media-type.stationery-prepunched"
 msgstr ""
 
 #. TRANSLATORS: Tab Stock
-#: locale/ipp-strings.c:1804
+#: locale/ipp-strings.c:1842
 msgid "media-type.tab-stock"
 msgstr ""
 
 #. TRANSLATORS: Tractor
-#: locale/ipp-strings.c:1806
+#: locale/ipp-strings.c:1844
 msgid "media-type.tractor"
 msgstr ""
 
 #. TRANSLATORS: Transfer
-#: locale/ipp-strings.c:1808
+#: locale/ipp-strings.c:1846
 msgid "media-type.transfer"
 msgstr ""
 
 #. TRANSLATORS: Transparency
-#: locale/ipp-strings.c:1810
+#: locale/ipp-strings.c:1848
 msgid "media-type.transparency"
 msgstr ""
 
 #. TRANSLATORS: Triple Wall
-#: locale/ipp-strings.c:1812
+#: locale/ipp-strings.c:1850
 msgid "media-type.triple-wall"
 msgstr ""
 
 #. TRANSLATORS: Wet Film
-#: locale/ipp-strings.c:1814
+#: locale/ipp-strings.c:1852
 msgid "media-type.wet-film"
 msgstr ""
 
 #. TRANSLATORS: Media Weight (grams per m²)
-#: locale/ipp-strings.c:1816
+#: locale/ipp-strings.c:1854
 msgid "media-weight-metric"
 msgstr ""
 
 #. TRANSLATORS: 28 x 40″
-#: locale/ipp-strings.c:1818
+#: locale/ipp-strings.c:1856
 msgid "media.asme_f_28x40in"
 msgstr ""
 
 #. TRANSLATORS: A4 or US Letter
-#: locale/ipp-strings.c:1820
+#: locale/ipp-strings.c:1858
 msgid "media.choice_iso_a4_210x297mm_na_letter_8.5x11in"
 msgstr ""
 
 #. TRANSLATORS: 2a0
-#: locale/ipp-strings.c:1822
+#: locale/ipp-strings.c:1860
 msgid "media.iso_2a0_1189x1682mm"
 msgstr ""
 
 #. TRANSLATORS: A0
-#: locale/ipp-strings.c:1824
+#: locale/ipp-strings.c:1862
 msgid "media.iso_a0_841x1189mm"
 msgstr ""
 
 #. TRANSLATORS: A0x3
-#: locale/ipp-strings.c:1826
+#: locale/ipp-strings.c:1864
 msgid "media.iso_a0x3_1189x2523mm"
 msgstr ""
 
 #. TRANSLATORS: A10
-#: locale/ipp-strings.c:1828
+#: locale/ipp-strings.c:1866
 msgid "media.iso_a10_26x37mm"
 msgstr ""
 
 #. TRANSLATORS: A1
-#: locale/ipp-strings.c:1830
+#: locale/ipp-strings.c:1868
 msgid "media.iso_a1_594x841mm"
 msgstr ""
 
 #. TRANSLATORS: A1x3
-#: locale/ipp-strings.c:1832
+#: locale/ipp-strings.c:1870
 msgid "media.iso_a1x3_841x1783mm"
 msgstr ""
 
 #. TRANSLATORS: A1x4
-#: locale/ipp-strings.c:1834
+#: locale/ipp-strings.c:1872
 msgid "media.iso_a1x4_841x2378mm"
 msgstr ""
 
 #. TRANSLATORS: A2
-#: locale/ipp-strings.c:1836
+#: locale/ipp-strings.c:1874
 msgid "media.iso_a2_420x594mm"
 msgstr ""
 
 #. TRANSLATORS: A2x3
-#: locale/ipp-strings.c:1838
+#: locale/ipp-strings.c:1876
 msgid "media.iso_a2x3_594x1261mm"
 msgstr ""
 
 #. TRANSLATORS: A2x4
-#: locale/ipp-strings.c:1840
+#: locale/ipp-strings.c:1878
 msgid "media.iso_a2x4_594x1682mm"
 msgstr ""
 
 #. TRANSLATORS: A2x5
-#: locale/ipp-strings.c:1842
+#: locale/ipp-strings.c:1880
 msgid "media.iso_a2x5_594x2102mm"
 msgstr ""
 
 #. TRANSLATORS: A3 (Extra)
-#: locale/ipp-strings.c:1844
+#: locale/ipp-strings.c:1882
 msgid "media.iso_a3-extra_322x445mm"
 msgstr ""
 
 #. TRANSLATORS: A3
-#: locale/ipp-strings.c:1846
+#: locale/ipp-strings.c:1884
 msgid "media.iso_a3_297x420mm"
 msgstr ""
 
 #. TRANSLATORS: A3x3
-#: locale/ipp-strings.c:1848
+#: locale/ipp-strings.c:1886
 msgid "media.iso_a3x3_420x891mm"
 msgstr ""
 
 #. TRANSLATORS: A3x4
-#: locale/ipp-strings.c:1850
+#: locale/ipp-strings.c:1888
 msgid "media.iso_a3x4_420x1189mm"
 msgstr ""
 
 #. TRANSLATORS: A3x5
-#: locale/ipp-strings.c:1852
+#: locale/ipp-strings.c:1890
 msgid "media.iso_a3x5_420x1486mm"
 msgstr ""
 
 #. TRANSLATORS: A3x6
-#: locale/ipp-strings.c:1854
+#: locale/ipp-strings.c:1892
 msgid "media.iso_a3x6_420x1783mm"
 msgstr ""
 
 #. TRANSLATORS: A3x7
-#: locale/ipp-strings.c:1856
+#: locale/ipp-strings.c:1894
 msgid "media.iso_a3x7_420x2080mm"
 msgstr ""
 
 #. TRANSLATORS: A4 (Extra)
-#: locale/ipp-strings.c:1858
+#: locale/ipp-strings.c:1896
 msgid "media.iso_a4-extra_235.5x322.3mm"
 msgstr ""
 
 #. TRANSLATORS: A4 (Tab)
-#: locale/ipp-strings.c:1860
+#: locale/ipp-strings.c:1898
 msgid "media.iso_a4-tab_225x297mm"
 msgstr ""
 
 #. TRANSLATORS: A4
-#: locale/ipp-strings.c:1862
+#: locale/ipp-strings.c:1900
 msgid "media.iso_a4_210x297mm"
 msgstr ""
 
 #. TRANSLATORS: A4x3
-#: locale/ipp-strings.c:1864
+#: locale/ipp-strings.c:1902
 msgid "media.iso_a4x3_297x630mm"
 msgstr ""
 
 #. TRANSLATORS: A4x4
-#: locale/ipp-strings.c:1866
+#: locale/ipp-strings.c:1904
 msgid "media.iso_a4x4_297x841mm"
 msgstr ""
 
 #. TRANSLATORS: A4x5
-#: locale/ipp-strings.c:1868
+#: locale/ipp-strings.c:1906
 msgid "media.iso_a4x5_297x1051mm"
 msgstr ""
 
 #. TRANSLATORS: A4x6
-#: locale/ipp-strings.c:1870
+#: locale/ipp-strings.c:1908
 msgid "media.iso_a4x6_297x1261mm"
 msgstr ""
 
 #. TRANSLATORS: A4x7
-#: locale/ipp-strings.c:1872
+#: locale/ipp-strings.c:1910
 msgid "media.iso_a4x7_297x1471mm"
 msgstr ""
 
 #. TRANSLATORS: A4x8
-#: locale/ipp-strings.c:1874
+#: locale/ipp-strings.c:1912
 msgid "media.iso_a4x8_297x1682mm"
 msgstr ""
 
 #. TRANSLATORS: A4x9
-#: locale/ipp-strings.c:1876
+#: locale/ipp-strings.c:1914
 msgid "media.iso_a4x9_297x1892mm"
 msgstr ""
 
 #. TRANSLATORS: A5 (Extra)
-#: locale/ipp-strings.c:1878
+#: locale/ipp-strings.c:1916
 msgid "media.iso_a5-extra_174x235mm"
 msgstr ""
 
 #. TRANSLATORS: A5
-#: locale/ipp-strings.c:1880
+#: locale/ipp-strings.c:1918
 msgid "media.iso_a5_148x210mm"
 msgstr ""
 
 #. TRANSLATORS: A6
-#: locale/ipp-strings.c:1882
+#: locale/ipp-strings.c:1920
 msgid "media.iso_a6_105x148mm"
 msgstr ""
 
 #. TRANSLATORS: A7
-#: locale/ipp-strings.c:1884
+#: locale/ipp-strings.c:1922
 msgid "media.iso_a7_74x105mm"
 msgstr ""
 
 #. TRANSLATORS: A8
-#: locale/ipp-strings.c:1886
+#: locale/ipp-strings.c:1924
 msgid "media.iso_a8_52x74mm"
 msgstr ""
 
 #. TRANSLATORS: A9
-#: locale/ipp-strings.c:1888
+#: locale/ipp-strings.c:1926
 msgid "media.iso_a9_37x52mm"
 msgstr ""
 
 #. TRANSLATORS: B0
-#: locale/ipp-strings.c:1890
+#: locale/ipp-strings.c:1928
 msgid "media.iso_b0_1000x1414mm"
 msgstr ""
 
 #. TRANSLATORS: B10
-#: locale/ipp-strings.c:1892
+#: locale/ipp-strings.c:1930
 msgid "media.iso_b10_31x44mm"
 msgstr ""
 
 #. TRANSLATORS: B1
-#: locale/ipp-strings.c:1894
+#: locale/ipp-strings.c:1932
 msgid "media.iso_b1_707x1000mm"
 msgstr ""
 
 #. TRANSLATORS: B2
-#: locale/ipp-strings.c:1896
+#: locale/ipp-strings.c:1934
 msgid "media.iso_b2_500x707mm"
 msgstr ""
 
 #. TRANSLATORS: B3
-#: locale/ipp-strings.c:1898
+#: locale/ipp-strings.c:1936
 msgid "media.iso_b3_353x500mm"
 msgstr ""
 
 #. TRANSLATORS: B4
-#: locale/ipp-strings.c:1900
+#: locale/ipp-strings.c:1938
 msgid "media.iso_b4_250x353mm"
 msgstr ""
 
 #. TRANSLATORS: B5 (Extra)
-#: locale/ipp-strings.c:1902
+#: locale/ipp-strings.c:1940
 msgid "media.iso_b5-extra_201x276mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope B5
-#: locale/ipp-strings.c:1904
+#: locale/ipp-strings.c:1942
 msgid "media.iso_b5_176x250mm"
 msgstr ""
 
 #. TRANSLATORS: B6
-#: locale/ipp-strings.c:1906
+#: locale/ipp-strings.c:1944
 msgid "media.iso_b6_125x176mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope B6/C4
-#: locale/ipp-strings.c:1908
+#: locale/ipp-strings.c:1946
 msgid "media.iso_b6c4_125x324mm"
 msgstr ""
 
 #. TRANSLATORS: B7
-#: locale/ipp-strings.c:1910
+#: locale/ipp-strings.c:1948
 msgid "media.iso_b7_88x125mm"
 msgstr ""
 
 #. TRANSLATORS: B8
-#: locale/ipp-strings.c:1912
+#: locale/ipp-strings.c:1950
 msgid "media.iso_b8_62x88mm"
 msgstr ""
 
 #. TRANSLATORS: B9
-#: locale/ipp-strings.c:1914
+#: locale/ipp-strings.c:1952
 msgid "media.iso_b9_44x62mm"
 msgstr ""
 
 #. TRANSLATORS: CEnvelope 0
-#: locale/ipp-strings.c:1916
+#: locale/ipp-strings.c:1954
 msgid "media.iso_c0_917x1297mm"
 msgstr ""
 
 #. TRANSLATORS: CEnvelope 10
-#: locale/ipp-strings.c:1918
+#: locale/ipp-strings.c:1956
 msgid "media.iso_c10_28x40mm"
 msgstr ""
 
 #. TRANSLATORS: CEnvelope 1
-#: locale/ipp-strings.c:1920
+#: locale/ipp-strings.c:1958
 msgid "media.iso_c1_648x917mm"
 msgstr ""
 
 #. TRANSLATORS: CEnvelope 2
-#: locale/ipp-strings.c:1922
+#: locale/ipp-strings.c:1960
 msgid "media.iso_c2_458x648mm"
 msgstr ""
 
 #. TRANSLATORS: CEnvelope 3
-#: locale/ipp-strings.c:1924
+#: locale/ipp-strings.c:1962
 msgid "media.iso_c3_324x458mm"
 msgstr ""
 
 #. TRANSLATORS: CEnvelope 4
-#: locale/ipp-strings.c:1926
+#: locale/ipp-strings.c:1964
 msgid "media.iso_c4_229x324mm"
 msgstr ""
 
 #. TRANSLATORS: CEnvelope 5
-#: locale/ipp-strings.c:1928
+#: locale/ipp-strings.c:1966
 msgid "media.iso_c5_162x229mm"
 msgstr ""
 
 #. TRANSLATORS: CEnvelope 6
-#: locale/ipp-strings.c:1930
+#: locale/ipp-strings.c:1968
 msgid "media.iso_c6_114x162mm"
 msgstr ""
 
 #. TRANSLATORS: CEnvelope 6c5
-#: locale/ipp-strings.c:1932
+#: locale/ipp-strings.c:1970
 msgid "media.iso_c6c5_114x229mm"
 msgstr ""
 
 #. TRANSLATORS: CEnvelope 7
-#: locale/ipp-strings.c:1934
+#: locale/ipp-strings.c:1972
 msgid "media.iso_c7_81x114mm"
 msgstr ""
 
 #. TRANSLATORS: CEnvelope 7c6
-#: locale/ipp-strings.c:1936
+#: locale/ipp-strings.c:1974
 msgid "media.iso_c7c6_81x162mm"
 msgstr ""
 
 #. TRANSLATORS: CEnvelope 8
-#: locale/ipp-strings.c:1938
+#: locale/ipp-strings.c:1976
 msgid "media.iso_c8_57x81mm"
 msgstr ""
 
 #. TRANSLATORS: CEnvelope 9
-#: locale/ipp-strings.c:1940
+#: locale/ipp-strings.c:1978
 msgid "media.iso_c9_40x57mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope DL
-#: locale/ipp-strings.c:1942
+#: locale/ipp-strings.c:1980
 msgid "media.iso_dl_110x220mm"
 msgstr ""
 
 #. TRANSLATORS: Id-1
-#: locale/ipp-strings.c:1944
+#: locale/ipp-strings.c:1982
 msgid "media.iso_id-1_53.98x85.6mm"
 msgstr ""
 
 #. TRANSLATORS: Id-3
-#: locale/ipp-strings.c:1946
+#: locale/ipp-strings.c:1984
 msgid "media.iso_id-3_88x125mm"
 msgstr ""
 
 #. TRANSLATORS: ISO RA0
-#: locale/ipp-strings.c:1948
+#: locale/ipp-strings.c:1986
 msgid "media.iso_ra0_860x1220mm"
 msgstr ""
 
 #. TRANSLATORS: ISO RA1
-#: locale/ipp-strings.c:1950
+#: locale/ipp-strings.c:1988
 msgid "media.iso_ra1_610x860mm"
 msgstr ""
 
 #. TRANSLATORS: ISO RA2
-#: locale/ipp-strings.c:1952
+#: locale/ipp-strings.c:1990
 msgid "media.iso_ra2_430x610mm"
 msgstr ""
 
 #. TRANSLATORS: ISO RA3
-#: locale/ipp-strings.c:1954
+#: locale/ipp-strings.c:1992
 msgid "media.iso_ra3_305x430mm"
 msgstr ""
 
 #. TRANSLATORS: ISO RA4
-#: locale/ipp-strings.c:1956
+#: locale/ipp-strings.c:1994
 msgid "media.iso_ra4_215x305mm"
 msgstr ""
 
 #. TRANSLATORS: ISO SRA0
-#: locale/ipp-strings.c:1958
+#: locale/ipp-strings.c:1996
 msgid "media.iso_sra0_900x1280mm"
 msgstr ""
 
 #. TRANSLATORS: ISO SRA1
-#: locale/ipp-strings.c:1960
+#: locale/ipp-strings.c:1998
 msgid "media.iso_sra1_640x900mm"
 msgstr ""
 
 #. TRANSLATORS: ISO SRA2
-#: locale/ipp-strings.c:1962
+#: locale/ipp-strings.c:2000
 msgid "media.iso_sra2_450x640mm"
 msgstr ""
 
 #. TRANSLATORS: ISO SRA3
-#: locale/ipp-strings.c:1964
+#: locale/ipp-strings.c:2002
 msgid "media.iso_sra3_320x450mm"
 msgstr ""
 
 #. TRANSLATORS: ISO SRA4
-#: locale/ipp-strings.c:1966
+#: locale/ipp-strings.c:2004
 msgid "media.iso_sra4_225x320mm"
 msgstr ""
 
 #. TRANSLATORS: JIS B0
-#: locale/ipp-strings.c:1968
+#: locale/ipp-strings.c:2006
 msgid "media.jis_b0_1030x1456mm"
 msgstr ""
 
 #. TRANSLATORS: JIS B10
-#: locale/ipp-strings.c:1970
+#: locale/ipp-strings.c:2008
 msgid "media.jis_b10_32x45mm"
 msgstr ""
 
 #. TRANSLATORS: JIS B1
-#: locale/ipp-strings.c:1972
+#: locale/ipp-strings.c:2010
 msgid "media.jis_b1_728x1030mm"
 msgstr ""
 
 #. TRANSLATORS: JIS B2
-#: locale/ipp-strings.c:1974
+#: locale/ipp-strings.c:2012
 msgid "media.jis_b2_515x728mm"
 msgstr ""
 
 #. TRANSLATORS: JIS B3
-#: locale/ipp-strings.c:1976
+#: locale/ipp-strings.c:2014
 msgid "media.jis_b3_364x515mm"
 msgstr ""
 
 #. TRANSLATORS: JIS B4
-#: locale/ipp-strings.c:1978
+#: locale/ipp-strings.c:2016
 msgid "media.jis_b4_257x364mm"
 msgstr ""
 
 #. TRANSLATORS: JIS B5
-#: locale/ipp-strings.c:1980
+#: locale/ipp-strings.c:2018
 msgid "media.jis_b5_182x257mm"
 msgstr ""
 
 #. TRANSLATORS: JIS B6
-#: locale/ipp-strings.c:1982
+#: locale/ipp-strings.c:2020
 msgid "media.jis_b6_128x182mm"
 msgstr ""
 
 #. TRANSLATORS: JIS B7
-#: locale/ipp-strings.c:1984
+#: locale/ipp-strings.c:2022
 msgid "media.jis_b7_91x128mm"
 msgstr ""
 
 #. TRANSLATORS: JIS B8
-#: locale/ipp-strings.c:1986
+#: locale/ipp-strings.c:2024
 msgid "media.jis_b8_64x91mm"
 msgstr ""
 
 #. TRANSLATORS: JIS B9
-#: locale/ipp-strings.c:1988
+#: locale/ipp-strings.c:2026
 msgid "media.jis_b9_45x64mm"
 msgstr ""
 
 #. TRANSLATORS: JIS Executive
-#: locale/ipp-strings.c:1990
+#: locale/ipp-strings.c:2028
 msgid "media.jis_exec_216x330mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Chou 2
-#: locale/ipp-strings.c:1992
+#: locale/ipp-strings.c:2030
 msgid "media.jpn_chou2_111.1x146mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Chou 3
-#: locale/ipp-strings.c:1994
+#: locale/ipp-strings.c:2032
 msgid "media.jpn_chou3_120x235mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Chou 40
-#: locale/ipp-strings.c:1996
+#: locale/ipp-strings.c:2034
 msgid "media.jpn_chou40_90x225mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Chou 4
-#: locale/ipp-strings.c:1998
+#: locale/ipp-strings.c:2036
 msgid "media.jpn_chou4_90x205mm"
 msgstr ""
 
 #. TRANSLATORS: Hagaki
-#: locale/ipp-strings.c:2000
+#: locale/ipp-strings.c:2038
 msgid "media.jpn_hagaki_100x148mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Kahu
-#: locale/ipp-strings.c:2002
+#: locale/ipp-strings.c:2040
 msgid "media.jpn_kahu_240x322.1mm"
 msgstr ""
 
 #. TRANSLATORS: 270 x 382mm
-#: locale/ipp-strings.c:2004
+#: locale/ipp-strings.c:2042
 msgid "media.jpn_kaku1_270x382mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Kahu 2
-#: locale/ipp-strings.c:2006
+#: locale/ipp-strings.c:2044
 msgid "media.jpn_kaku2_240x332mm"
 msgstr ""
 
 #. TRANSLATORS: 216 x 277mm
-#: locale/ipp-strings.c:2008
+#: locale/ipp-strings.c:2046
 msgid "media.jpn_kaku3_216x277mm"
 msgstr ""
 
 #. TRANSLATORS: 197 x 267mm
-#: locale/ipp-strings.c:2010
+#: locale/ipp-strings.c:2048
 msgid "media.jpn_kaku4_197x267mm"
 msgstr ""
 
 #. TRANSLATORS: 190 x 240mm
-#: locale/ipp-strings.c:2012
+#: locale/ipp-strings.c:2050
 msgid "media.jpn_kaku5_190x240mm"
 msgstr ""
 
 #. TRANSLATORS: 142 x 205mm
-#: locale/ipp-strings.c:2014
+#: locale/ipp-strings.c:2052
 msgid "media.jpn_kaku7_142x205mm"
 msgstr ""
 
 #. TRANSLATORS: 119 x 197mm
-#: locale/ipp-strings.c:2016
+#: locale/ipp-strings.c:2054
 msgid "media.jpn_kaku8_119x197mm"
 msgstr ""
 
 #. TRANSLATORS: Oufuku Reply Postcard
-#: locale/ipp-strings.c:2018
+#: locale/ipp-strings.c:2056
 msgid "media.jpn_oufuku_148x200mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope You 4
-#: locale/ipp-strings.c:2020
+#: locale/ipp-strings.c:2058
 msgid "media.jpn_you4_105x235mm"
 msgstr ""
 
 #. TRANSLATORS: 10 x 11″
-#: locale/ipp-strings.c:2022
+#: locale/ipp-strings.c:2060
 msgid "media.na_10x11_10x11in"
 msgstr ""
 
 #. TRANSLATORS: 10 x 13″
-#: locale/ipp-strings.c:2024
+#: locale/ipp-strings.c:2062
 msgid "media.na_10x13_10x13in"
 msgstr ""
 
 #. TRANSLATORS: 10 x 14″
-#: locale/ipp-strings.c:2026
+#: locale/ipp-strings.c:2064
 msgid "media.na_10x14_10x14in"
 msgstr ""
 
 #. TRANSLATORS: 10 x 15″
-#: locale/ipp-strings.c:2028
+#: locale/ipp-strings.c:2066
 msgid "media.na_10x15_10x15in"
 msgstr ""
 
 #. TRANSLATORS: 11 x 12″
-#: locale/ipp-strings.c:2030
+#: locale/ipp-strings.c:2068
 msgid "media.na_11x12_11x12in"
 msgstr ""
 
 #. TRANSLATORS: 11 x 15″
-#: locale/ipp-strings.c:2032
+#: locale/ipp-strings.c:2070
 msgid "media.na_11x15_11x15in"
 msgstr ""
 
 #. TRANSLATORS: 12 x 19″
-#: locale/ipp-strings.c:2034
+#: locale/ipp-strings.c:2072
 msgid "media.na_12x19_12x19in"
 msgstr ""
 
 #. TRANSLATORS: 5 x 7″
-#: locale/ipp-strings.c:2036
+#: locale/ipp-strings.c:2074
 msgid "media.na_5x7_5x7in"
 msgstr ""
 
 #. TRANSLATORS: 6 x 9″
-#: locale/ipp-strings.c:2038
+#: locale/ipp-strings.c:2076
 msgid "media.na_6x9_6x9in"
 msgstr ""
 
 #. TRANSLATORS: 7 x 9″
-#: locale/ipp-strings.c:2040
+#: locale/ipp-strings.c:2078
 msgid "media.na_7x9_7x9in"
 msgstr ""
 
 #. TRANSLATORS: 9 x 11″
-#: locale/ipp-strings.c:2042
+#: locale/ipp-strings.c:2080
 msgid "media.na_9x11_9x11in"
 msgstr ""
 
 #. TRANSLATORS: Envelope A2
-#: locale/ipp-strings.c:2044
+#: locale/ipp-strings.c:2082
 msgid "media.na_a2_4.375x5.75in"
 msgstr ""
 
 #. TRANSLATORS: 9 x 12″
-#: locale/ipp-strings.c:2046
+#: locale/ipp-strings.c:2084
 msgid "media.na_arch-a_9x12in"
 msgstr ""
 
 #. TRANSLATORS: 12 x 18″
-#: locale/ipp-strings.c:2048
+#: locale/ipp-strings.c:2086
 msgid "media.na_arch-b_12x18in"
 msgstr ""
 
 #. TRANSLATORS: 18 x 24″
-#: locale/ipp-strings.c:2050
+#: locale/ipp-strings.c:2088
 msgid "media.na_arch-c_18x24in"
 msgstr ""
 
 #. TRANSLATORS: 24 x 36″
-#: locale/ipp-strings.c:2052
+#: locale/ipp-strings.c:2090
 msgid "media.na_arch-d_24x36in"
 msgstr ""
 
 #. TRANSLATORS: 26 x 38″
-#: locale/ipp-strings.c:2054
+#: locale/ipp-strings.c:2092
 msgid "media.na_arch-e2_26x38in"
 msgstr ""
 
 #. TRANSLATORS: 27 x 39″
-#: locale/ipp-strings.c:2056
+#: locale/ipp-strings.c:2094
 msgid "media.na_arch-e3_27x39in"
 msgstr ""
 
 #. TRANSLATORS: 36 x 48″
-#: locale/ipp-strings.c:2058
+#: locale/ipp-strings.c:2096
 msgid "media.na_arch-e_36x48in"
 msgstr ""
 
 #. TRANSLATORS: 12 x 19.17″
-#: locale/ipp-strings.c:2060
+#: locale/ipp-strings.c:2098
 msgid "media.na_b-plus_12x19.17in"
 msgstr ""
 
 #. TRANSLATORS: Envelope C5
-#: locale/ipp-strings.c:2062
+#: locale/ipp-strings.c:2100
 msgid "media.na_c5_6.5x9.5in"
 msgstr ""
 
 #. TRANSLATORS: 17 x 22″
-#: locale/ipp-strings.c:2064
+#: locale/ipp-strings.c:2102
 msgid "media.na_c_17x22in"
 msgstr ""
 
 #. TRANSLATORS: 22 x 34″
-#: locale/ipp-strings.c:2066
+#: locale/ipp-strings.c:2104
 msgid "media.na_d_22x34in"
 msgstr ""
 
 #. TRANSLATORS: 34 x 44″
-#: locale/ipp-strings.c:2068
+#: locale/ipp-strings.c:2106
 msgid "media.na_e_34x44in"
 msgstr ""
 
 #. TRANSLATORS: 11 x 14″
-#: locale/ipp-strings.c:2070
+#: locale/ipp-strings.c:2108
 msgid "media.na_edp_11x14in"
 msgstr ""
 
 #. TRANSLATORS: 12 x 14″
-#: locale/ipp-strings.c:2072
+#: locale/ipp-strings.c:2110
 msgid "media.na_eur-edp_12x14in"
 msgstr ""
 
 #. TRANSLATORS: Executive
-#: locale/ipp-strings.c:2074
+#: locale/ipp-strings.c:2112
 msgid "media.na_executive_7.25x10.5in"
 msgstr ""
 
 #. TRANSLATORS: 44 x 68″
-#: locale/ipp-strings.c:2076
+#: locale/ipp-strings.c:2114
 msgid "media.na_f_44x68in"
 msgstr ""
 
 #. TRANSLATORS: European Fanfold
-#: locale/ipp-strings.c:2078
+#: locale/ipp-strings.c:2116
 msgid "media.na_fanfold-eur_8.5x12in"
 msgstr ""
 
 #. TRANSLATORS: US Fanfold
-#: locale/ipp-strings.c:2080
+#: locale/ipp-strings.c:2118
 msgid "media.na_fanfold-us_11x14.875in"
 msgstr ""
 
 #. TRANSLATORS: Foolscap
-#: locale/ipp-strings.c:2082
+#: locale/ipp-strings.c:2120
 msgid "media.na_foolscap_8.5x13in"
 msgstr ""
 
 #. TRANSLATORS: 8 x 13″
-#: locale/ipp-strings.c:2084
+#: locale/ipp-strings.c:2122
 msgid "media.na_govt-legal_8x13in"
 msgstr ""
 
 #. TRANSLATORS: 8 x 10″
-#: locale/ipp-strings.c:2086
+#: locale/ipp-strings.c:2124
 msgid "media.na_govt-letter_8x10in"
 msgstr ""
 
 #. TRANSLATORS: 3 x 5″
-#: locale/ipp-strings.c:2088
+#: locale/ipp-strings.c:2126
 msgid "media.na_index-3x5_3x5in"
 msgstr ""
 
 #. TRANSLATORS: 6 x 8″
-#: locale/ipp-strings.c:2090
+#: locale/ipp-strings.c:2128
 msgid "media.na_index-4x6-ext_6x8in"
 msgstr ""
 
 #. TRANSLATORS: 4 x 6″
-#: locale/ipp-strings.c:2092
+#: locale/ipp-strings.c:2130
 msgid "media.na_index-4x6_4x6in"
 msgstr ""
 
 #. TRANSLATORS: 5 x 8″
-#: locale/ipp-strings.c:2094
+#: locale/ipp-strings.c:2132
 msgid "media.na_index-5x8_5x8in"
 msgstr ""
 
 #. TRANSLATORS: Statement
-#: locale/ipp-strings.c:2096
+#: locale/ipp-strings.c:2134
 msgid "media.na_invoice_5.5x8.5in"
 msgstr ""
 
 #. TRANSLATORS: 11 x 17″
-#: locale/ipp-strings.c:2098
+#: locale/ipp-strings.c:2136
 msgid "media.na_ledger_11x17in"
 msgstr ""
 
 #. TRANSLATORS: US Legal (Extra)
-#: locale/ipp-strings.c:2100
+#: locale/ipp-strings.c:2138
 msgid "media.na_legal-extra_9.5x15in"
 msgstr ""
 
 #. TRANSLATORS: US Legal
-#: locale/ipp-strings.c:2102
+#: locale/ipp-strings.c:2140
 msgid "media.na_legal_8.5x14in"
 msgstr ""
 
 #. TRANSLATORS: US Letter (Extra)
-#: locale/ipp-strings.c:2104
+#: locale/ipp-strings.c:2142
 msgid "media.na_letter-extra_9.5x12in"
 msgstr ""
 
 #. TRANSLATORS: US Letter (Plus)
-#: locale/ipp-strings.c:2106
+#: locale/ipp-strings.c:2144
 msgid "media.na_letter-plus_8.5x12.69in"
 msgstr ""
 
 #. TRANSLATORS: US Letter
-#: locale/ipp-strings.c:2108
+#: locale/ipp-strings.c:2146
 msgid "media.na_letter_8.5x11in"
 msgstr ""
 
 #. TRANSLATORS: Envelope Monarch
-#: locale/ipp-strings.c:2110
+#: locale/ipp-strings.c:2148
 msgid "media.na_monarch_3.875x7.5in"
 msgstr ""
 
 #. TRANSLATORS: Envelope #10
-#: locale/ipp-strings.c:2112
+#: locale/ipp-strings.c:2150
 msgid "media.na_number-10_4.125x9.5in"
 msgstr ""
 
 #. TRANSLATORS: Envelope #11
-#: locale/ipp-strings.c:2114
+#: locale/ipp-strings.c:2152
 msgid "media.na_number-11_4.5x10.375in"
 msgstr ""
 
 #. TRANSLATORS: Envelope #12
-#: locale/ipp-strings.c:2116
+#: locale/ipp-strings.c:2154
 msgid "media.na_number-12_4.75x11in"
 msgstr ""
 
 #. TRANSLATORS: Envelope #14
-#: locale/ipp-strings.c:2118
+#: locale/ipp-strings.c:2156
 msgid "media.na_number-14_5x11.5in"
 msgstr ""
 
 #. TRANSLATORS: Envelope #9
-#: locale/ipp-strings.c:2120
+#: locale/ipp-strings.c:2158
 msgid "media.na_number-9_3.875x8.875in"
 msgstr ""
 
 #. TRANSLATORS: 8.5 x 13.4″
-#: locale/ipp-strings.c:2122
+#: locale/ipp-strings.c:2160
 msgid "media.na_oficio_8.5x13.4in"
 msgstr ""
 
 #. TRANSLATORS: Envelope Personal
-#: locale/ipp-strings.c:2124
+#: locale/ipp-strings.c:2162
 msgid "media.na_personal_3.625x6.5in"
 msgstr ""
 
 #. TRANSLATORS: Quarto
-#: locale/ipp-strings.c:2126
+#: locale/ipp-strings.c:2164
 msgid "media.na_quarto_8.5x10.83in"
 msgstr ""
 
 #. TRANSLATORS: 8.94 x 14″
-#: locale/ipp-strings.c:2128
+#: locale/ipp-strings.c:2166
 msgid "media.na_super-a_8.94x14in"
 msgstr ""
 
 #. TRANSLATORS: 13 x 19″
-#: locale/ipp-strings.c:2130
+#: locale/ipp-strings.c:2168
 msgid "media.na_super-b_13x19in"
 msgstr ""
 
 #. TRANSLATORS: 30 x 42″
-#: locale/ipp-strings.c:2132
+#: locale/ipp-strings.c:2170
 msgid "media.na_wide-format_30x42in"
 msgstr ""
 
 #. TRANSLATORS: 12 x 16″
-#: locale/ipp-strings.c:2134
+#: locale/ipp-strings.c:2172
 msgid "media.oe_12x16_12x16in"
 msgstr ""
 
 #. TRANSLATORS: 14 x 17″
-#: locale/ipp-strings.c:2136
+#: locale/ipp-strings.c:2174
 msgid "media.oe_14x17_14x17in"
 msgstr ""
 
 #. TRANSLATORS: 18 x 22″
-#: locale/ipp-strings.c:2138
+#: locale/ipp-strings.c:2176
 msgid "media.oe_18x22_18x22in"
 msgstr ""
 
 #. TRANSLATORS: 17 x 24″
-#: locale/ipp-strings.c:2140
+#: locale/ipp-strings.c:2178
 msgid "media.oe_a2plus_17x24in"
 msgstr ""
 
 #. TRANSLATORS: 2 x 3.5″
-#: locale/ipp-strings.c:2142
+#: locale/ipp-strings.c:2180
 msgid "media.oe_business-card_2x3.5in"
 msgstr ""
 
 #. TRANSLATORS: 10 x 12″
-#: locale/ipp-strings.c:2144
+#: locale/ipp-strings.c:2182
 msgid "media.oe_photo-10r_10x12in"
 msgstr ""
 
 #. TRANSLATORS: 20 x 24″
-#: locale/ipp-strings.c:2146
+#: locale/ipp-strings.c:2184
 msgid "media.oe_photo-20r_20x24in"
 msgstr ""
 
 #. TRANSLATORS: 3.5 x 5″
-#: locale/ipp-strings.c:2148
+#: locale/ipp-strings.c:2186
 msgid "media.oe_photo-l_3.5x5in"
 msgstr ""
 
 #. TRANSLATORS: 10 x 15″
-#: locale/ipp-strings.c:2150
+#: locale/ipp-strings.c:2188
 msgid "media.oe_photo-s10r_10x15in"
 msgstr ""
 
 #. TRANSLATORS: 4 x 4″
-#: locale/ipp-strings.c:2152
+#: locale/ipp-strings.c:2190
 msgid "media.oe_square-photo_4x4in"
 msgstr ""
 
 #. TRANSLATORS: 5 x 5″
-#: locale/ipp-strings.c:2154
+#: locale/ipp-strings.c:2192
 msgid "media.oe_square-photo_5x5in"
 msgstr ""
 
 #. TRANSLATORS: 184 x 260mm
-#: locale/ipp-strings.c:2156
+#: locale/ipp-strings.c:2194
 msgid "media.om_16k_184x260mm"
 msgstr ""
 
 #. TRANSLATORS: 195 x 270mm
-#: locale/ipp-strings.c:2158
+#: locale/ipp-strings.c:2196
 msgid "media.om_16k_195x270mm"
 msgstr ""
 
 #. TRANSLATORS: 55 x 85mm
-#: locale/ipp-strings.c:2160
+#: locale/ipp-strings.c:2198
 msgid "media.om_business-card_55x85mm"
 msgstr ""
 
 #. TRANSLATORS: 55 x 91mm
-#: locale/ipp-strings.c:2162
+#: locale/ipp-strings.c:2200
 msgid "media.om_business-card_55x91mm"
 msgstr ""
 
 #. TRANSLATORS: 54 x 86mm
-#: locale/ipp-strings.c:2164
+#: locale/ipp-strings.c:2202
 msgid "media.om_card_54x86mm"
 msgstr ""
 
 #. TRANSLATORS: 275 x 395mm
-#: locale/ipp-strings.c:2166
+#: locale/ipp-strings.c:2204
 msgid "media.om_dai-pa-kai_275x395mm"
 msgstr ""
 
 #. TRANSLATORS: 89 x 119mm
-#: locale/ipp-strings.c:2168
+#: locale/ipp-strings.c:2206
 msgid "media.om_dsc-photo_89x119mm"
 msgstr ""
 
 #. TRANSLATORS: Folio
-#: locale/ipp-strings.c:2170
+#: locale/ipp-strings.c:2208
 msgid "media.om_folio-sp_215x315mm"
 msgstr ""
 
 #. TRANSLATORS: Folio (Special)
-#: locale/ipp-strings.c:2172
+#: locale/ipp-strings.c:2210
 msgid "media.om_folio_210x330mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Invitation
-#: locale/ipp-strings.c:2174
+#: locale/ipp-strings.c:2212
 msgid "media.om_invite_220x220mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Italian
-#: locale/ipp-strings.c:2176
+#: locale/ipp-strings.c:2214
 msgid "media.om_italian_110x230mm"
 msgstr ""
 
 #. TRANSLATORS: 198 x 275mm
-#: locale/ipp-strings.c:2178
+#: locale/ipp-strings.c:2216
 msgid "media.om_juuro-ku-kai_198x275mm"
 msgstr ""
 
 #. TRANSLATORS: 200 x 300
-#: locale/ipp-strings.c:2180
+#: locale/ipp-strings.c:2218
 msgid "media.om_large-photo_200x300"
 msgstr ""
 
 #. TRANSLATORS: 130 x 180mm
-#: locale/ipp-strings.c:2182
+#: locale/ipp-strings.c:2220
 msgid "media.om_medium-photo_130x180mm"
 msgstr ""
 
 #. TRANSLATORS: 267 x 389mm
-#: locale/ipp-strings.c:2184
+#: locale/ipp-strings.c:2222
 msgid "media.om_pa-kai_267x389mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Postfix
-#: locale/ipp-strings.c:2186
+#: locale/ipp-strings.c:2224
 msgid "media.om_postfix_114x229mm"
 msgstr ""
 
 #. TRANSLATORS: 100 x 150mm
-#: locale/ipp-strings.c:2188
+#: locale/ipp-strings.c:2226
 msgid "media.om_small-photo_100x150mm"
 msgstr ""
 
 #. TRANSLATORS: 89 x 89mm
-#: locale/ipp-strings.c:2190
+#: locale/ipp-strings.c:2228
 msgid "media.om_square-photo_89x89mm"
 msgstr ""
 
 #. TRANSLATORS: 100 x 200mm
-#: locale/ipp-strings.c:2192
+#: locale/ipp-strings.c:2230
 msgid "media.om_wide-photo_100x200mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Chinese #10
-#: locale/ipp-strings.c:2194
+#: locale/ipp-strings.c:2232
 msgid "media.prc_10_324x458mm"
 msgstr ""
 
 #. TRANSLATORS: Chinese 16k
-#: locale/ipp-strings.c:2196
+#: locale/ipp-strings.c:2234
 msgid "media.prc_16k_146x215mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Chinese #1
-#: locale/ipp-strings.c:2198
+#: locale/ipp-strings.c:2236
 msgid "media.prc_1_102x165mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Chinese #2
-#: locale/ipp-strings.c:2200
+#: locale/ipp-strings.c:2238
 msgid "media.prc_2_102x176mm"
 msgstr ""
 
 #. TRANSLATORS: Chinese 32k
-#: locale/ipp-strings.c:2202
+#: locale/ipp-strings.c:2240
 msgid "media.prc_32k_97x151mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Chinese #3
-#: locale/ipp-strings.c:2204
+#: locale/ipp-strings.c:2242
 msgid "media.prc_3_125x176mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Chinese #4
-#: locale/ipp-strings.c:2206
+#: locale/ipp-strings.c:2244
 msgid "media.prc_4_110x208mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Chinese #5
-#: locale/ipp-strings.c:2208
+#: locale/ipp-strings.c:2246
 msgid "media.prc_5_110x220mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Chinese #6
-#: locale/ipp-strings.c:2210
+#: locale/ipp-strings.c:2248
 msgid "media.prc_6_120x320mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Chinese #7
-#: locale/ipp-strings.c:2212
+#: locale/ipp-strings.c:2250
 msgid "media.prc_7_160x230mm"
 msgstr ""
 
 #. TRANSLATORS: Envelope Chinese #8
-#: locale/ipp-strings.c:2214
+#: locale/ipp-strings.c:2252
 msgid "media.prc_8_120x309mm"
 msgstr ""
 
 #. TRANSLATORS: ROC 16k
-#: locale/ipp-strings.c:2216
+#: locale/ipp-strings.c:2254
 msgid "media.roc_16k_7.75x10.75in"
 msgstr ""
 
 #. TRANSLATORS: ROC 8k
-#: locale/ipp-strings.c:2218
+#: locale/ipp-strings.c:2256
 msgid "media.roc_8k_10.75x15.5in"
 msgstr ""
 
@@ -12806,82 +12925,82 @@
 msgstr ""
 
 #. TRANSLATORS: Multiple Document Handling
-#: locale/ipp-strings.c:2220
+#: locale/ipp-strings.c:2258
 msgid "multiple-document-handling"
 msgstr ""
 
 #. TRANSLATORS: Separate Documents Collated Copies
-#: locale/ipp-strings.c:2222
+#: locale/ipp-strings.c:2260
 msgid "multiple-document-handling.separate-documents-collated-copies"
 msgstr ""
 
 #. TRANSLATORS: Separate Documents Uncollated Copies
-#: locale/ipp-strings.c:2224
+#: locale/ipp-strings.c:2262
 msgid "multiple-document-handling.separate-documents-uncollated-copies"
 msgstr ""
 
 #. TRANSLATORS: Single Document
-#: locale/ipp-strings.c:2226
+#: locale/ipp-strings.c:2264
 msgid "multiple-document-handling.single-document"
 msgstr ""
 
 #. TRANSLATORS: Single Document New Sheet
-#: locale/ipp-strings.c:2228
+#: locale/ipp-strings.c:2266
 msgid "multiple-document-handling.single-document-new-sheet"
 msgstr ""
 
 #. TRANSLATORS: Multiple Object Handling
-#: locale/ipp-strings.c:2230
+#: locale/ipp-strings.c:2268
 msgid "multiple-object-handling"
 msgstr ""
 
 #. TRANSLATORS: Multiple Object Handling Actual
-#: locale/ipp-strings.c:2232
+#: locale/ipp-strings.c:2270
 msgid "multiple-object-handling-actual"
 msgstr ""
 
 #. TRANSLATORS: Automatic
-#: locale/ipp-strings.c:2234
+#: locale/ipp-strings.c:2272
 msgid "multiple-object-handling.auto"
 msgstr ""
 
 #. TRANSLATORS: Best Fit
-#: locale/ipp-strings.c:2236
+#: locale/ipp-strings.c:2274
 msgid "multiple-object-handling.best-fit"
 msgstr ""
 
 #. TRANSLATORS: Best Quality
-#: locale/ipp-strings.c:2238
+#: locale/ipp-strings.c:2276
 msgid "multiple-object-handling.best-quality"
 msgstr ""
 
 #. TRANSLATORS: Best Speed
-#: locale/ipp-strings.c:2240
+#: locale/ipp-strings.c:2278
 msgid "multiple-object-handling.best-speed"
 msgstr ""
 
 #. TRANSLATORS: One At A Time
-#: locale/ipp-strings.c:2242
+#: locale/ipp-strings.c:2280
 msgid "multiple-object-handling.one-at-a-time"
 msgstr ""
 
 #. TRANSLATORS: On Timeout
-#: locale/ipp-strings.c:2244
+#: locale/ipp-strings.c:2282
 msgid "multiple-operation-time-out-action"
 msgstr ""
 
 #. TRANSLATORS: Abort Job
-#: locale/ipp-strings.c:2246
+#: locale/ipp-strings.c:2284
 msgid "multiple-operation-time-out-action.abort-job"
 msgstr ""
 
 #. TRANSLATORS: Hold Job
-#: locale/ipp-strings.c:2248
+#: locale/ipp-strings.c:2286
 msgid "multiple-operation-time-out-action.hold-job"
 msgstr ""
 
 #. TRANSLATORS: Process Job
-#: locale/ipp-strings.c:2250
+#: locale/ipp-strings.c:2288
 msgid "multiple-operation-time-out-action.process-job"
 msgstr ""
 
@@ -12894,22 +13013,22 @@
 msgstr ""
 
 #. TRANSLATORS: Noise Removal
-#: locale/ipp-strings.c:2252
+#: locale/ipp-strings.c:2290
 msgid "noise-removal"
 msgstr ""
 
 #. TRANSLATORS: Notify Attributes
-#: locale/ipp-strings.c:2254
+#: locale/ipp-strings.c:2292
 msgid "notify-attributes"
 msgstr ""
 
 #. TRANSLATORS: Notify Charset
-#: locale/ipp-strings.c:2256
+#: locale/ipp-strings.c:2294
 msgid "notify-charset"
 msgstr ""
 
 #. TRANSLATORS: Notify Events
-#: locale/ipp-strings.c:2258
+#: locale/ipp-strings.c:2296
 msgid "notify-events"
 msgstr ""
 
@@ -12918,137 +13037,137 @@
 msgstr ""
 
 #. TRANSLATORS: Document Completed
-#: locale/ipp-strings.c:2260
+#: locale/ipp-strings.c:2298
 msgid "notify-events.document-completed"
 msgstr ""
 
 #. TRANSLATORS: Document Config Changed
-#: locale/ipp-strings.c:2262
+#: locale/ipp-strings.c:2300
 msgid "notify-events.document-config-changed"
 msgstr ""
 
 #. TRANSLATORS: Document Created
-#: locale/ipp-strings.c:2264
+#: locale/ipp-strings.c:2302
 msgid "notify-events.document-created"
 msgstr ""
 
 #. TRANSLATORS: Document Fetchable
-#: locale/ipp-strings.c:2266
+#: locale/ipp-strings.c:2304
 msgid "notify-events.document-fetchable"
 msgstr ""
 
 #. TRANSLATORS: Document State Changed
-#: locale/ipp-strings.c:2268
+#: locale/ipp-strings.c:2306
 msgid "notify-events.document-state-changed"
 msgstr ""
 
 #. TRANSLATORS: Document Stopped
-#: locale/ipp-strings.c:2270
+#: locale/ipp-strings.c:2308
 msgid "notify-events.document-stopped"
 msgstr ""
 
 #. TRANSLATORS: Job Completed
-#: locale/ipp-strings.c:2272
+#: locale/ipp-strings.c:2310
 msgid "notify-events.job-completed"
 msgstr ""
 
 #. TRANSLATORS: Job Config Changed
-#: locale/ipp-strings.c:2274
+#: locale/ipp-strings.c:2312
 msgid "notify-events.job-config-changed"
 msgstr ""
 
 #. TRANSLATORS: Job Created
-#: locale/ipp-strings.c:2276
+#: locale/ipp-strings.c:2314
 msgid "notify-events.job-created"
 msgstr ""
 
 #. TRANSLATORS: Job Fetchable
-#: locale/ipp-strings.c:2278
+#: locale/ipp-strings.c:2316
 msgid "notify-events.job-fetchable"
 msgstr ""
 
 #. TRANSLATORS: Job Progress
-#: locale/ipp-strings.c:2280
+#: locale/ipp-strings.c:2318
 msgid "notify-events.job-progress"
 msgstr ""
 
 #. TRANSLATORS: Job State Changed
-#: locale/ipp-strings.c:2282
+#: locale/ipp-strings.c:2320
 msgid "notify-events.job-state-changed"
 msgstr ""
 
 #. TRANSLATORS: Job Stopped
-#: locale/ipp-strings.c:2284
+#: locale/ipp-strings.c:2322
 msgid "notify-events.job-stopped"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:2286
+#: locale/ipp-strings.c:2324
 msgid "notify-events.none"
 msgstr ""
 
 #. TRANSLATORS: Printer Config Changed
-#: locale/ipp-strings.c:2288
+#: locale/ipp-strings.c:2326
 msgid "notify-events.printer-config-changed"
 msgstr ""
 
 #. TRANSLATORS: Printer Finishings Changed
-#: locale/ipp-strings.c:2290
+#: locale/ipp-strings.c:2328
 msgid "notify-events.printer-finishings-changed"
 msgstr ""
 
 #. TRANSLATORS: Printer Media Changed
-#: locale/ipp-strings.c:2292
+#: locale/ipp-strings.c:2330
 msgid "notify-events.printer-media-changed"
 msgstr ""
 
 #. TRANSLATORS: Printer Queue Order Changed
-#: locale/ipp-strings.c:2294
+#: locale/ipp-strings.c:2332
 msgid "notify-events.printer-queue-order-changed"
 msgstr ""
 
 #. TRANSLATORS: Printer Restarted
-#: locale/ipp-strings.c:2296
+#: locale/ipp-strings.c:2334
 msgid "notify-events.printer-restarted"
 msgstr ""
 
 #. TRANSLATORS: Printer Shutdown
-#: locale/ipp-strings.c:2298
+#: locale/ipp-strings.c:2336
 msgid "notify-events.printer-shutdown"
 msgstr ""
 
 #. TRANSLATORS: Printer State Changed
-#: locale/ipp-strings.c:2300
+#: locale/ipp-strings.c:2338
 msgid "notify-events.printer-state-changed"
 msgstr ""
 
 #. TRANSLATORS: Printer Stopped
-#: locale/ipp-strings.c:2302
+#: locale/ipp-strings.c:2340
 msgid "notify-events.printer-stopped"
 msgstr ""
 
 #. TRANSLATORS: Notify Get Interval
-#: locale/ipp-strings.c:2304
+#: locale/ipp-strings.c:2342
 msgid "notify-get-interval"
 msgstr ""
 
 #. TRANSLATORS: Notify Lease Duration
-#: locale/ipp-strings.c:2306
+#: locale/ipp-strings.c:2344
 msgid "notify-lease-duration"
 msgstr ""
 
 #. TRANSLATORS: Notify Natural Language
-#: locale/ipp-strings.c:2308
+#: locale/ipp-strings.c:2346
 msgid "notify-natural-language"
 msgstr ""
 
 #. TRANSLATORS: Notify Pull Method
-#: locale/ipp-strings.c:2310
+#: locale/ipp-strings.c:2348
 msgid "notify-pull-method"
 msgstr ""
 
 #. TRANSLATORS: Notify Recipient
-#: locale/ipp-strings.c:2312
+#: locale/ipp-strings.c:2350
 msgid "notify-recipient-uri"
 msgstr ""
 
@@ -13063,397 +13182,397 @@
 msgstr ""
 
 #. TRANSLATORS: Notify Sequence Numbers
-#: locale/ipp-strings.c:2314
+#: locale/ipp-strings.c:2352
 msgid "notify-sequence-numbers"
 msgstr ""
 
 #. TRANSLATORS: Notify Subscription Ids
-#: locale/ipp-strings.c:2316
+#: locale/ipp-strings.c:2354
 msgid "notify-subscription-ids"
 msgstr ""
 
 #. TRANSLATORS: Notify Time Interval
-#: locale/ipp-strings.c:2318
+#: locale/ipp-strings.c:2356
 msgid "notify-time-interval"
 msgstr ""
 
 #. TRANSLATORS: Notify User Data
-#: locale/ipp-strings.c:2320
+#: locale/ipp-strings.c:2358
 msgid "notify-user-data"
 msgstr ""
 
 #. TRANSLATORS: Notify Wait
-#: locale/ipp-strings.c:2322
+#: locale/ipp-strings.c:2360
 msgid "notify-wait"
 msgstr ""
 
 #. TRANSLATORS: Number Of Retries
-#: locale/ipp-strings.c:2324
+#: locale/ipp-strings.c:2362
 msgid "number-of-retries"
 msgstr ""
 
 #. TRANSLATORS: Number-Up
-#: locale/ipp-strings.c:2326
+#: locale/ipp-strings.c:2364
 msgid "number-up"
 msgstr ""
 
 #. TRANSLATORS: Object Offset
-#: locale/ipp-strings.c:2328
+#: locale/ipp-strings.c:2366
 msgid "object-offset"
 msgstr ""
 
 #. TRANSLATORS: Object Size
-#: locale/ipp-strings.c:2330
+#: locale/ipp-strings.c:2368
 msgid "object-size"
 msgstr ""
 
 #. TRANSLATORS: Organization Name
-#: locale/ipp-strings.c:2332
+#: locale/ipp-strings.c:2370
 msgid "organization-name"
 msgstr ""
 
 #. TRANSLATORS: Orientation
-#: locale/ipp-strings.c:2334
+#: locale/ipp-strings.c:2372
 msgid "orientation-requested"
 msgstr ""
 
 #. TRANSLATORS: Portrait
-#: locale/ipp-strings.c:2336
+#: locale/ipp-strings.c:2374
 msgid "orientation-requested.3"
 msgstr ""
 
 #. TRANSLATORS: Landscape
-#: locale/ipp-strings.c:2338
+#: locale/ipp-strings.c:2376
 msgid "orientation-requested.4"
 msgstr ""
 
 #. TRANSLATORS: Reverse Landscape
-#: locale/ipp-strings.c:2340
+#: locale/ipp-strings.c:2378
 msgid "orientation-requested.5"
 msgstr ""
 
 #. TRANSLATORS: Reverse Portrait
-#: locale/ipp-strings.c:2342
+#: locale/ipp-strings.c:2380
 msgid "orientation-requested.6"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:2344
+#: locale/ipp-strings.c:2382
 msgid "orientation-requested.7"
 msgstr ""
 
 #. TRANSLATORS: Scanned Image Options
-#: locale/ipp-strings.c:2346
+#: locale/ipp-strings.c:2384
 msgid "output-attributes"
 msgstr ""
 
 #. TRANSLATORS: Output Tray
-#: locale/ipp-strings.c:2348
+#: locale/ipp-strings.c:2386
 msgid "output-bin"
 msgstr ""
 
 #. TRANSLATORS: Automatic
-#: locale/ipp-strings.c:2350
+#: locale/ipp-strings.c:2388
 msgid "output-bin.auto"
 msgstr ""
 
 #. TRANSLATORS: Bottom
-#: locale/ipp-strings.c:2352
+#: locale/ipp-strings.c:2390
 msgid "output-bin.bottom"
 msgstr ""
 
 #. TRANSLATORS: Center
-#: locale/ipp-strings.c:2354
+#: locale/ipp-strings.c:2392
 msgid "output-bin.center"
 msgstr ""
 
 #. TRANSLATORS: Face Down
-#: locale/ipp-strings.c:2356
+#: locale/ipp-strings.c:2394
 msgid "output-bin.face-down"
 msgstr ""
 
 #. TRANSLATORS: Face Up
-#: locale/ipp-strings.c:2358
+#: locale/ipp-strings.c:2396
 msgid "output-bin.face-up"
 msgstr ""
 
 #. TRANSLATORS: Large Capacity
-#: locale/ipp-strings.c:2360
+#: locale/ipp-strings.c:2398
 msgid "output-bin.large-capacity"
 msgstr ""
 
 #. TRANSLATORS: Left
-#: locale/ipp-strings.c:2362
+#: locale/ipp-strings.c:2400
 msgid "output-bin.left"
 msgstr ""
 
 #. TRANSLATORS: Mailbox 1
-#: locale/ipp-strings.c:2364
+#: locale/ipp-strings.c:2402
 msgid "output-bin.mailbox-1"
 msgstr ""
 
 #. TRANSLATORS: Mailbox 10
-#: locale/ipp-strings.c:2366
+#: locale/ipp-strings.c:2404
 msgid "output-bin.mailbox-10"
 msgstr ""
 
 #. TRANSLATORS: Mailbox 2
-#: locale/ipp-strings.c:2368
+#: locale/ipp-strings.c:2406
 msgid "output-bin.mailbox-2"
 msgstr ""
 
 #. TRANSLATORS: Mailbox 3
-#: locale/ipp-strings.c:2370
+#: locale/ipp-strings.c:2408
 msgid "output-bin.mailbox-3"
 msgstr ""
 
 #. TRANSLATORS: Mailbox 4
-#: locale/ipp-strings.c:2372
+#: locale/ipp-strings.c:2410
 msgid "output-bin.mailbox-4"
 msgstr ""
 
 #. TRANSLATORS: Mailbox 5
-#: locale/ipp-strings.c:2374
+#: locale/ipp-strings.c:2412
 msgid "output-bin.mailbox-5"
 msgstr ""
 
 #. TRANSLATORS: Mailbox 6
-#: locale/ipp-strings.c:2376
+#: locale/ipp-strings.c:2414
 msgid "output-bin.mailbox-6"
 msgstr ""
 
 #. TRANSLATORS: Mailbox 7
-#: locale/ipp-strings.c:2378
+#: locale/ipp-strings.c:2416
 msgid "output-bin.mailbox-7"
 msgstr ""
 
 #. TRANSLATORS: Mailbox 8
-#: locale/ipp-strings.c:2380
+#: locale/ipp-strings.c:2418
 msgid "output-bin.mailbox-8"
 msgstr ""
 
 #. TRANSLATORS: Mailbox 9
-#: locale/ipp-strings.c:2382
+#: locale/ipp-strings.c:2420
 msgid "output-bin.mailbox-9"
 msgstr ""
 
 #. TRANSLATORS: Middle
-#: locale/ipp-strings.c:2384
+#: locale/ipp-strings.c:2422
 msgid "output-bin.middle"
 msgstr ""
 
 #. TRANSLATORS: My Mailbox
-#: locale/ipp-strings.c:2386
+#: locale/ipp-strings.c:2424
 msgid "output-bin.my-mailbox"
 msgstr ""
 
 #. TRANSLATORS: Rear
-#: locale/ipp-strings.c:2388
+#: locale/ipp-strings.c:2426
 msgid "output-bin.rear"
 msgstr ""
 
 #. TRANSLATORS: Right
-#: locale/ipp-strings.c:2390
+#: locale/ipp-strings.c:2428
 msgid "output-bin.right"
 msgstr ""
 
 #. TRANSLATORS: Side
-#: locale/ipp-strings.c:2392
+#: locale/ipp-strings.c:2430
 msgid "output-bin.side"
 msgstr ""
 
 #. TRANSLATORS: Stacker 1
-#: locale/ipp-strings.c:2394
+#: locale/ipp-strings.c:2432
 msgid "output-bin.stacker-1"
 msgstr ""
 
 #. TRANSLATORS: Stacker 10
-#: locale/ipp-strings.c:2396
+#: locale/ipp-strings.c:2434
 msgid "output-bin.stacker-10"
 msgstr ""
 
 #. TRANSLATORS: Stacker 2
-#: locale/ipp-strings.c:2398
+#: locale/ipp-strings.c:2436
 msgid "output-bin.stacker-2"
 msgstr ""
 
 #. TRANSLATORS: Stacker 3
-#: locale/ipp-strings.c:2400
+#: locale/ipp-strings.c:2438
 msgid "output-bin.stacker-3"
 msgstr ""
 
 #. TRANSLATORS: Stacker 4
-#: locale/ipp-strings.c:2402
+#: locale/ipp-strings.c:2440
 msgid "output-bin.stacker-4"
 msgstr ""
 
 #. TRANSLATORS: Stacker 5
-#: locale/ipp-strings.c:2404
+#: locale/ipp-strings.c:2442
 msgid "output-bin.stacker-5"
 msgstr ""
 
 #. TRANSLATORS: Stacker 6
-#: locale/ipp-strings.c:2406
+#: locale/ipp-strings.c:2444
 msgid "output-bin.stacker-6"
 msgstr ""
 
 #. TRANSLATORS: Stacker 7
-#: locale/ipp-strings.c:2408
+#: locale/ipp-strings.c:2446
 msgid "output-bin.stacker-7"
 msgstr ""
 
 #. TRANSLATORS: Stacker 8
-#: locale/ipp-strings.c:2410
+#: locale/ipp-strings.c:2448
 msgid "output-bin.stacker-8"
 msgstr ""
 
 #. TRANSLATORS: Stacker 9
-#: locale/ipp-strings.c:2412
+#: locale/ipp-strings.c:2450
 msgid "output-bin.stacker-9"
 msgstr ""
 
 #. TRANSLATORS: Top
-#: locale/ipp-strings.c:2414
+#: locale/ipp-strings.c:2452
 msgid "output-bin.top"
 msgstr ""
 
 #. TRANSLATORS: Tray 1
-#: locale/ipp-strings.c:2416
+#: locale/ipp-strings.c:2454
 msgid "output-bin.tray-1"
 msgstr ""
 
 #. TRANSLATORS: Tray 10
-#: locale/ipp-strings.c:2418
+#: locale/ipp-strings.c:2456
 msgid "output-bin.tray-10"
 msgstr ""
 
 #. TRANSLATORS: Tray 2
-#: locale/ipp-strings.c:2420
+#: locale/ipp-strings.c:2458
 msgid "output-bin.tray-2"
 msgstr ""
 
 #. TRANSLATORS: Tray 3
-#: locale/ipp-strings.c:2422
+#: locale/ipp-strings.c:2460
 msgid "output-bin.tray-3"
 msgstr ""
 
 #. TRANSLATORS: Tray 4
-#: locale/ipp-strings.c:2424
+#: locale/ipp-strings.c:2462
 msgid "output-bin.tray-4"
 msgstr ""
 
 #. TRANSLATORS: Tray 5
-#: locale/ipp-strings.c:2426
+#: locale/ipp-strings.c:2464
 msgid "output-bin.tray-5"
 msgstr ""
 
 #. TRANSLATORS: Tray 6
-#: locale/ipp-strings.c:2428
+#: locale/ipp-strings.c:2466
 msgid "output-bin.tray-6"
 msgstr ""
 
 #. TRANSLATORS: Tray 7
-#: locale/ipp-strings.c:2430
+#: locale/ipp-strings.c:2468
 msgid "output-bin.tray-7"
 msgstr ""
 
 #. TRANSLATORS: Tray 8
-#: locale/ipp-strings.c:2432
+#: locale/ipp-strings.c:2470
 msgid "output-bin.tray-8"
 msgstr ""
 
 #. TRANSLATORS: Tray 9
-#: locale/ipp-strings.c:2434
+#: locale/ipp-strings.c:2472
 msgid "output-bin.tray-9"
 msgstr ""
 
 #. TRANSLATORS: Scanned Image Quality
-#: locale/ipp-strings.c:2436
+#: locale/ipp-strings.c:2474
 msgid "output-compression-quality-factor"
 msgstr ""
 
 #. TRANSLATORS: Page Delivery
-#: locale/ipp-strings.c:2438
+#: locale/ipp-strings.c:2476
 msgid "page-delivery"
 msgstr ""
 
 #. TRANSLATORS: Reverse Order Face-down
-#: locale/ipp-strings.c:2440
+#: locale/ipp-strings.c:2478
 msgid "page-delivery.reverse-order-face-down"
 msgstr ""
 
 #. TRANSLATORS: Reverse Order Face-up
-#: locale/ipp-strings.c:2442
+#: locale/ipp-strings.c:2480
 msgid "page-delivery.reverse-order-face-up"
 msgstr ""
 
 #. TRANSLATORS: Same Order Face-down
-#: locale/ipp-strings.c:2444
+#: locale/ipp-strings.c:2482
 msgid "page-delivery.same-order-face-down"
 msgstr ""
 
 #. TRANSLATORS: Same Order Face-up
-#: locale/ipp-strings.c:2446
+#: locale/ipp-strings.c:2484
 msgid "page-delivery.same-order-face-up"
 msgstr ""
 
 #. TRANSLATORS: System Specified
-#: locale/ipp-strings.c:2448
+#: locale/ipp-strings.c:2486
 msgid "page-delivery.system-specified"
 msgstr ""
 
 #. TRANSLATORS: Page Order Received
-#: locale/ipp-strings.c:2450
+#: locale/ipp-strings.c:2488
 msgid "page-order-received"
 msgstr ""
 
 #. TRANSLATORS: 1 To N
-#: locale/ipp-strings.c:2452
+#: locale/ipp-strings.c:2490
 msgid "page-order-received.1-to-n-order"
 msgstr ""
 
 #. TRANSLATORS: N To 1
-#: locale/ipp-strings.c:2454
+#: locale/ipp-strings.c:2492
 msgid "page-order-received.n-to-1-order"
 msgstr ""
 
 #. TRANSLATORS: Page Ranges
-#: locale/ipp-strings.c:2456
+#: locale/ipp-strings.c:2494
 msgid "page-ranges"
 msgstr ""
 
 #. TRANSLATORS: Pages
-#: locale/ipp-strings.c:2458
+#: locale/ipp-strings.c:2496
 msgid "pages"
 msgstr ""
 
 #. TRANSLATORS: Pages Per Subset
-#: locale/ipp-strings.c:2460
+#: locale/ipp-strings.c:2498
 msgid "pages-per-subset"
 msgstr ""
 
 #. TRANSLATORS: Pclm Raster Back Side
-#: locale/ipp-strings.c:2462
+#: locale/ipp-strings.c:2500
 msgid "pclm-raster-back-side"
 msgstr ""
 
 #. TRANSLATORS: Flipped
-#: locale/ipp-strings.c:2464
+#: locale/ipp-strings.c:2502
 msgid "pclm-raster-back-side.flipped"
 msgstr ""
 
 #. TRANSLATORS: Normal
-#: locale/ipp-strings.c:2466
+#: locale/ipp-strings.c:2504
 msgid "pclm-raster-back-side.normal"
 msgstr ""
 
 #. TRANSLATORS: Rotated
-#: locale/ipp-strings.c:2468
+#: locale/ipp-strings.c:2506
 msgid "pclm-raster-back-side.rotated"
 msgstr ""
 
 #. TRANSLATORS: Pclm Source Resolution
-#: locale/ipp-strings.c:2470
+#: locale/ipp-strings.c:2508
 msgid "pclm-source-resolution"
 msgstr ""
 
@@ -13462,27 +13581,27 @@
 msgstr ""
 
 #. TRANSLATORS: Platform Shape
-#: locale/ipp-strings.c:2472
+#: locale/ipp-strings.c:2510
 msgid "platform-shape"
 msgstr ""
 
 #. TRANSLATORS: Round
-#: locale/ipp-strings.c:2474
+#: locale/ipp-strings.c:2512
 msgid "platform-shape.ellipse"
 msgstr ""
 
 #. TRANSLATORS: Rectangle
-#: locale/ipp-strings.c:2476
+#: locale/ipp-strings.c:2514
 msgid "platform-shape.rectangle"
 msgstr ""
 
 #. TRANSLATORS: Platform Temperature
-#: locale/ipp-strings.c:2478
+#: locale/ipp-strings.c:2516
 msgid "platform-temperature"
 msgstr ""
 
 #. TRANSLATORS: Post-dial String
-#: locale/ipp-strings.c:2480
+#: locale/ipp-strings.c:2518
 msgid "post-dial-string"
 msgstr ""
 
@@ -13960,297 +14079,297 @@
 msgstr ""
 
 #. TRANSLATORS: Pre-dial String
-#: locale/ipp-strings.c:2482
+#: locale/ipp-strings.c:2520
 msgid "pre-dial-string"
 msgstr ""
 
 #. TRANSLATORS: Number-Up Layout
-#: locale/ipp-strings.c:2484
+#: locale/ipp-strings.c:2522
 msgid "presentation-direction-number-up"
 msgstr ""
 
 #. TRANSLATORS: Top-bottom, Right-left
-#: locale/ipp-strings.c:2486
+#: locale/ipp-strings.c:2524
 msgid "presentation-direction-number-up.tobottom-toleft"
 msgstr ""
 
 #. TRANSLATORS: Top-bottom, Left-right
-#: locale/ipp-strings.c:2488
+#: locale/ipp-strings.c:2526
 msgid "presentation-direction-number-up.tobottom-toright"
 msgstr ""
 
 #. TRANSLATORS: Right-left, Top-bottom
-#: locale/ipp-strings.c:2490
+#: locale/ipp-strings.c:2528
 msgid "presentation-direction-number-up.toleft-tobottom"
 msgstr ""
 
 #. TRANSLATORS: Right-left, Bottom-top
-#: locale/ipp-strings.c:2492
+#: locale/ipp-strings.c:2530
 msgid "presentation-direction-number-up.toleft-totop"
 msgstr ""
 
 #. TRANSLATORS: Left-right, Top-bottom
-#: locale/ipp-strings.c:2494
+#: locale/ipp-strings.c:2532
 msgid "presentation-direction-number-up.toright-tobottom"
 msgstr ""
 
 #. TRANSLATORS: Left-right, Bottom-top
-#: locale/ipp-strings.c:2496
+#: locale/ipp-strings.c:2534
 msgid "presentation-direction-number-up.toright-totop"
 msgstr ""
 
 #. TRANSLATORS: Bottom-top, Right-left
-#: locale/ipp-strings.c:2498
+#: locale/ipp-strings.c:2536
 msgid "presentation-direction-number-up.totop-toleft"
 msgstr ""
 
 #. TRANSLATORS: Bottom-top, Left-right
-#: locale/ipp-strings.c:2500
+#: locale/ipp-strings.c:2538
 msgid "presentation-direction-number-up.totop-toright"
 msgstr ""
 
 #. TRANSLATORS: Print Accuracy
-#: locale/ipp-strings.c:2502
+#: locale/ipp-strings.c:2540
 msgid "print-accuracy"
 msgstr ""
 
 #. TRANSLATORS: Print Base
-#: locale/ipp-strings.c:2504
+#: locale/ipp-strings.c:2542
 msgid "print-base"
 msgstr ""
 
 #. TRANSLATORS: Print Base Actual
-#: locale/ipp-strings.c:2506
+#: locale/ipp-strings.c:2544
 msgid "print-base-actual"
 msgstr ""
 
 #. TRANSLATORS: Brim
-#: locale/ipp-strings.c:2508
+#: locale/ipp-strings.c:2546
 msgid "print-base.brim"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:2510
+#: locale/ipp-strings.c:2548
 msgid "print-base.none"
 msgstr ""
 
 #. TRANSLATORS: Raft
-#: locale/ipp-strings.c:2512
+#: locale/ipp-strings.c:2550
 msgid "print-base.raft"
 msgstr ""
 
 #. TRANSLATORS: Skirt
-#: locale/ipp-strings.c:2514
+#: locale/ipp-strings.c:2552
 msgid "print-base.skirt"
 msgstr ""
 
 #. TRANSLATORS: Standard
-#: locale/ipp-strings.c:2516
+#: locale/ipp-strings.c:2554
 msgid "print-base.standard"
 msgstr ""
 
 #. TRANSLATORS: Print Color Mode
-#: locale/ipp-strings.c:2518
+#: locale/ipp-strings.c:2556
 msgid "print-color-mode"
 msgstr ""
 
 #. TRANSLATORS: Automatic
-#: locale/ipp-strings.c:2520
+#: locale/ipp-strings.c:2558
 msgid "print-color-mode.auto"
 msgstr ""
 
 #. TRANSLATORS: Auto Monochrome
-#: locale/ipp-strings.c:2522
+#: locale/ipp-strings.c:2560
 msgid "print-color-mode.auto-monochrome"
 msgstr ""
 
 #. TRANSLATORS: Text
-#: locale/ipp-strings.c:2524
+#: locale/ipp-strings.c:2562
 msgid "print-color-mode.bi-level"
 msgstr ""
 
 #. TRANSLATORS: Color
-#: locale/ipp-strings.c:2526
+#: locale/ipp-strings.c:2564
 msgid "print-color-mode.color"
 msgstr ""
 
 #. TRANSLATORS: Highlight
-#: locale/ipp-strings.c:2528
+#: locale/ipp-strings.c:2566
 msgid "print-color-mode.highlight"
 msgstr ""
 
 #. TRANSLATORS: Monochrome
-#: locale/ipp-strings.c:2530
+#: locale/ipp-strings.c:2568
 msgid "print-color-mode.monochrome"
 msgstr ""
 
 #. TRANSLATORS: Process Text
-#: locale/ipp-strings.c:2532
+#: locale/ipp-strings.c:2570
 msgid "print-color-mode.process-bi-level"
 msgstr ""
 
 #. TRANSLATORS: Process Monochrome
-#: locale/ipp-strings.c:2534
+#: locale/ipp-strings.c:2572
 msgid "print-color-mode.process-monochrome"
 msgstr ""
 
 #. TRANSLATORS: Print Optimization
-#: locale/ipp-strings.c:2536
+#: locale/ipp-strings.c:2574
 msgid "print-content-optimize"
 msgstr ""
 
 #. TRANSLATORS: Print Content Optimize Actual
-#: locale/ipp-strings.c:2538
+#: locale/ipp-strings.c:2576
 msgid "print-content-optimize-actual"
 msgstr ""
 
 #. TRANSLATORS: Automatic
-#: locale/ipp-strings.c:2540
+#: locale/ipp-strings.c:2578
 msgid "print-content-optimize.auto"
 msgstr ""
 
 #. TRANSLATORS: Graphics
-#: locale/ipp-strings.c:2542
+#: locale/ipp-strings.c:2580
 msgid "print-content-optimize.graphic"
 msgstr ""
 
 #. TRANSLATORS: Graphics
-#: locale/ipp-strings.c:2544
+#: locale/ipp-strings.c:2582
 msgid "print-content-optimize.graphics"
 msgstr ""
 
 #. TRANSLATORS: Photo
-#: locale/ipp-strings.c:2546
+#: locale/ipp-strings.c:2584
 msgid "print-content-optimize.photo"
 msgstr ""
 
 #. TRANSLATORS: Text
-#: locale/ipp-strings.c:2548
+#: locale/ipp-strings.c:2586
 msgid "print-content-optimize.text"
 msgstr ""
 
 #. TRANSLATORS: Text and Graphics
-#: locale/ipp-strings.c:2550
+#: locale/ipp-strings.c:2588
 msgid "print-content-optimize.text-and-graphic"
 msgstr ""
 
 #. TRANSLATORS: Text And Graphics
-#: locale/ipp-strings.c:2552
+#: locale/ipp-strings.c:2590
 msgid "print-content-optimize.text-and-graphics"
 msgstr ""
 
 #. TRANSLATORS: Print Objects
-#: locale/ipp-strings.c:2554
+#: locale/ipp-strings.c:2592
 msgid "print-objects"
 msgstr ""
 
 #. TRANSLATORS: Print Quality
-#: locale/ipp-strings.c:2556
+#: locale/ipp-strings.c:2594
 msgid "print-quality"
 msgstr ""
 
 #. TRANSLATORS: Draft
-#: locale/ipp-strings.c:2558
+#: locale/ipp-strings.c:2596
 msgid "print-quality.3"
 msgstr ""
 
 #. TRANSLATORS: Normal
-#: locale/ipp-strings.c:2560
+#: locale/ipp-strings.c:2598
 msgid "print-quality.4"
 msgstr ""
 
 #. TRANSLATORS: High
-#: locale/ipp-strings.c:2562
+#: locale/ipp-strings.c:2600
 msgid "print-quality.5"
 msgstr ""
 
 #. TRANSLATORS: Print Rendering Intent
-#: locale/ipp-strings.c:2564
+#: locale/ipp-strings.c:2602
 msgid "print-rendering-intent"
 msgstr ""
 
 #. TRANSLATORS: Absolute
-#: locale/ipp-strings.c:2566
+#: locale/ipp-strings.c:2604
 msgid "print-rendering-intent.absolute"
 msgstr ""
 
 #. TRANSLATORS: Automatic
-#: locale/ipp-strings.c:2568
+#: locale/ipp-strings.c:2606
 msgid "print-rendering-intent.auto"
 msgstr ""
 
 #. TRANSLATORS: Perceptual
-#: locale/ipp-strings.c:2570
+#: locale/ipp-strings.c:2608
 msgid "print-rendering-intent.perceptual"
 msgstr ""
 
 #. TRANSLATORS: Relative
-#: locale/ipp-strings.c:2572
+#: locale/ipp-strings.c:2610
 msgid "print-rendering-intent.relative"
 msgstr ""
 
 #. TRANSLATORS: Relative w/Black Point Compensation
-#: locale/ipp-strings.c:2574
+#: locale/ipp-strings.c:2612
 msgid "print-rendering-intent.relative-bpc"
 msgstr ""
 
 #. TRANSLATORS: Saturation
-#: locale/ipp-strings.c:2576
+#: locale/ipp-strings.c:2614
 msgid "print-rendering-intent.saturation"
 msgstr ""
 
 #. TRANSLATORS: Print Scaling
-#: locale/ipp-strings.c:2578
+#: locale/ipp-strings.c:2616
 msgid "print-scaling"
 msgstr ""
 
 #. TRANSLATORS: Automatic
-#: locale/ipp-strings.c:2580
+#: locale/ipp-strings.c:2618
 msgid "print-scaling.auto"
 msgstr ""
 
 #. TRANSLATORS: Auto-fit
-#: locale/ipp-strings.c:2582
+#: locale/ipp-strings.c:2620
 msgid "print-scaling.auto-fit"
 msgstr ""
 
 #. TRANSLATORS: Fill
-#: locale/ipp-strings.c:2584
+#: locale/ipp-strings.c:2622
 msgid "print-scaling.fill"
 msgstr ""
 
 #. TRANSLATORS: Fit
-#: locale/ipp-strings.c:2586
+#: locale/ipp-strings.c:2624
 msgid "print-scaling.fit"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:2588
+#: locale/ipp-strings.c:2626
 msgid "print-scaling.none"
 msgstr ""
 
 #. TRANSLATORS: Print Supports
-#: locale/ipp-strings.c:2590
+#: locale/ipp-strings.c:2628
 msgid "print-supports"
 msgstr ""
 
 #. TRANSLATORS: Print Supports Actual
-#: locale/ipp-strings.c:2592
+#: locale/ipp-strings.c:2630
 msgid "print-supports-actual"
 msgstr ""
 
 #. TRANSLATORS: With Specified Material
-#: locale/ipp-strings.c:2594
+#: locale/ipp-strings.c:2632
 msgid "print-supports.material"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:2596
+#: locale/ipp-strings.c:2634
 msgid "print-supports.none"
 msgstr ""
 
 #. TRANSLATORS: Standard
-#: locale/ipp-strings.c:2598
+#: locale/ipp-strings.c:2636
 msgid "print-supports.standard"
 msgstr ""
 
@@ -14290,4067 +14409,4067 @@
 msgstr ""
 
 #. TRANSLATORS: Printer Kind
-#: locale/ipp-strings.c:2600
+#: locale/ipp-strings.c:2638
 msgid "printer-kind"
 msgstr ""
 
 #. TRANSLATORS: Disc
-#: locale/ipp-strings.c:2602
+#: locale/ipp-strings.c:2640
 msgid "printer-kind.disc"
 msgstr ""
 
 #. TRANSLATORS: Document
-#: locale/ipp-strings.c:2604
+#: locale/ipp-strings.c:2642
 msgid "printer-kind.document"
 msgstr ""
 
 #. TRANSLATORS: Envelope
-#: locale/ipp-strings.c:2606
+#: locale/ipp-strings.c:2644
 msgid "printer-kind.envelope"
 msgstr ""
 
 #. TRANSLATORS: Label
-#: locale/ipp-strings.c:2608
+#: locale/ipp-strings.c:2646
 msgid "printer-kind.label"
 msgstr ""
 
 #. TRANSLATORS: Large Format
-#: locale/ipp-strings.c:2610
+#: locale/ipp-strings.c:2648
 msgid "printer-kind.large-format"
 msgstr ""
 
 #. TRANSLATORS: Photo
-#: locale/ipp-strings.c:2612
+#: locale/ipp-strings.c:2650
 msgid "printer-kind.photo"
 msgstr ""
 
 #. TRANSLATORS: Postcard
-#: locale/ipp-strings.c:2614
+#: locale/ipp-strings.c:2652
 msgid "printer-kind.postcard"
 msgstr ""
 
 #. TRANSLATORS: Receipt
-#: locale/ipp-strings.c:2616
+#: locale/ipp-strings.c:2654
 msgid "printer-kind.receipt"
 msgstr ""
 
 #. TRANSLATORS: Roll
-#: locale/ipp-strings.c:2618
+#: locale/ipp-strings.c:2656
 msgid "printer-kind.roll"
 msgstr ""
 
 #. TRANSLATORS: Message From Operator
-#: locale/ipp-strings.c:2620
+#: locale/ipp-strings.c:2658
 msgid "printer-message-from-operator"
 msgstr ""
 
 #. TRANSLATORS: Print Resolution
-#: locale/ipp-strings.c:2622
+#: locale/ipp-strings.c:2660
 msgid "printer-resolution"
 msgstr ""
 
 #. TRANSLATORS: Printer State
-#: locale/ipp-strings.c:2624
+#: locale/ipp-strings.c:2662
 msgid "printer-state"
 msgstr ""
 
 #. TRANSLATORS: Detailed Printer State
-#: locale/ipp-strings.c:2626
+#: locale/ipp-strings.c:2664
 msgid "printer-state-reasons"
 msgstr ""
 
 #. TRANSLATORS: Old Alerts Have Been Removed
-#: locale/ipp-strings.c:2628
+#: locale/ipp-strings.c:2666
 msgid "printer-state-reasons.alert-removal-of-binary-change-entry"
 msgstr ""
 
 #. TRANSLATORS: Bander Added
-#: locale/ipp-strings.c:2630
+#: locale/ipp-strings.c:2668
 msgid "printer-state-reasons.bander-added"
 msgstr ""
 
 #. TRANSLATORS: Bander Almost Empty
-#: locale/ipp-strings.c:2632
+#: locale/ipp-strings.c:2670
 msgid "printer-state-reasons.bander-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Bander Almost Full
-#: locale/ipp-strings.c:2634
+#: locale/ipp-strings.c:2672
 msgid "printer-state-reasons.bander-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Bander At Limit
-#: locale/ipp-strings.c:2636
+#: locale/ipp-strings.c:2674
 msgid "printer-state-reasons.bander-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Bander Closed
-#: locale/ipp-strings.c:2638
+#: locale/ipp-strings.c:2676
 msgid "printer-state-reasons.bander-closed"
 msgstr ""
 
 #. TRANSLATORS: Bander Configuration Change
-#: locale/ipp-strings.c:2640
+#: locale/ipp-strings.c:2678
 msgid "printer-state-reasons.bander-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Bander Cover Closed
-#: locale/ipp-strings.c:2642
+#: locale/ipp-strings.c:2680
 msgid "printer-state-reasons.bander-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Bander Cover Open
-#: locale/ipp-strings.c:2644
+#: locale/ipp-strings.c:2682
 msgid "printer-state-reasons.bander-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Bander Empty
-#: locale/ipp-strings.c:2646
+#: locale/ipp-strings.c:2684
 msgid "printer-state-reasons.bander-empty"
 msgstr ""
 
 #. TRANSLATORS: Bander Full
-#: locale/ipp-strings.c:2648
+#: locale/ipp-strings.c:2686
 msgid "printer-state-reasons.bander-full"
 msgstr ""
 
 #. TRANSLATORS: Bander Interlock Closed
-#: locale/ipp-strings.c:2650
+#: locale/ipp-strings.c:2688
 msgid "printer-state-reasons.bander-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Bander Interlock Open
-#: locale/ipp-strings.c:2652
+#: locale/ipp-strings.c:2690
 msgid "printer-state-reasons.bander-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Bander Jam
-#: locale/ipp-strings.c:2654
+#: locale/ipp-strings.c:2692
 msgid "printer-state-reasons.bander-jam"
 msgstr ""
 
 #. TRANSLATORS: Bander Life Almost Over
-#: locale/ipp-strings.c:2656
+#: locale/ipp-strings.c:2694
 msgid "printer-state-reasons.bander-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Bander Life Over
-#: locale/ipp-strings.c:2658
+#: locale/ipp-strings.c:2696
 msgid "printer-state-reasons.bander-life-over"
 msgstr ""
 
 #. TRANSLATORS: Bander Memory Exhausted
-#: locale/ipp-strings.c:2660
+#: locale/ipp-strings.c:2698
 msgid "printer-state-reasons.bander-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Bander Missing
-#: locale/ipp-strings.c:2662
+#: locale/ipp-strings.c:2700
 msgid "printer-state-reasons.bander-missing"
 msgstr ""
 
 #. TRANSLATORS: Bander Motor Failure
-#: locale/ipp-strings.c:2664
+#: locale/ipp-strings.c:2702
 msgid "printer-state-reasons.bander-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Bander Near Limit
-#: locale/ipp-strings.c:2666
+#: locale/ipp-strings.c:2704
 msgid "printer-state-reasons.bander-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Bander Offline
-#: locale/ipp-strings.c:2668
+#: locale/ipp-strings.c:2706
 msgid "printer-state-reasons.bander-offline"
 msgstr ""
 
 #. TRANSLATORS: Bander Opened
-#: locale/ipp-strings.c:2670
+#: locale/ipp-strings.c:2708
 msgid "printer-state-reasons.bander-opened"
 msgstr ""
 
 #. TRANSLATORS: Bander Over Temperature
-#: locale/ipp-strings.c:2672
+#: locale/ipp-strings.c:2710
 msgid "printer-state-reasons.bander-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Bander Power Saver
-#: locale/ipp-strings.c:2674
+#: locale/ipp-strings.c:2712
 msgid "printer-state-reasons.bander-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Bander Recoverable Failure
-#: locale/ipp-strings.c:2676
+#: locale/ipp-strings.c:2714
 msgid "printer-state-reasons.bander-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Bander Recoverable Storage
-#: locale/ipp-strings.c:2678
+#: locale/ipp-strings.c:2716
 msgid "printer-state-reasons.bander-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Bander Removed
-#: locale/ipp-strings.c:2680
+#: locale/ipp-strings.c:2718
 msgid "printer-state-reasons.bander-removed"
 msgstr ""
 
 #. TRANSLATORS: Bander Resource Added
-#: locale/ipp-strings.c:2682
+#: locale/ipp-strings.c:2720
 msgid "printer-state-reasons.bander-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Bander Resource Removed
-#: locale/ipp-strings.c:2684
+#: locale/ipp-strings.c:2722
 msgid "printer-state-reasons.bander-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Bander Thermistor Failure
-#: locale/ipp-strings.c:2686
+#: locale/ipp-strings.c:2724
 msgid "printer-state-reasons.bander-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Bander Timing Failure
-#: locale/ipp-strings.c:2688
+#: locale/ipp-strings.c:2726
 msgid "printer-state-reasons.bander-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Bander Turned Off
-#: locale/ipp-strings.c:2690
+#: locale/ipp-strings.c:2728
 msgid "printer-state-reasons.bander-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Bander Turned On
-#: locale/ipp-strings.c:2692
+#: locale/ipp-strings.c:2730
 msgid "printer-state-reasons.bander-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Bander Under Temperature
-#: locale/ipp-strings.c:2694
+#: locale/ipp-strings.c:2732
 msgid "printer-state-reasons.bander-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Bander Unrecoverable Failure
-#: locale/ipp-strings.c:2696
+#: locale/ipp-strings.c:2734
 msgid "printer-state-reasons.bander-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Bander Unrecoverable Storage Error
-#: locale/ipp-strings.c:2698
+#: locale/ipp-strings.c:2736
 msgid "printer-state-reasons.bander-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Bander Warming Up
-#: locale/ipp-strings.c:2700
+#: locale/ipp-strings.c:2738
 msgid "printer-state-reasons.bander-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Binder Added
-#: locale/ipp-strings.c:2702
+#: locale/ipp-strings.c:2740
 msgid "printer-state-reasons.binder-added"
 msgstr ""
 
 #. TRANSLATORS: Binder Almost Empty
-#: locale/ipp-strings.c:2704
+#: locale/ipp-strings.c:2742
 msgid "printer-state-reasons.binder-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Binder Almost Full
-#: locale/ipp-strings.c:2706
+#: locale/ipp-strings.c:2744
 msgid "printer-state-reasons.binder-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Binder At Limit
-#: locale/ipp-strings.c:2708
+#: locale/ipp-strings.c:2746
 msgid "printer-state-reasons.binder-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Binder Closed
-#: locale/ipp-strings.c:2710
+#: locale/ipp-strings.c:2748
 msgid "printer-state-reasons.binder-closed"
 msgstr ""
 
 #. TRANSLATORS: Binder Configuration Change
-#: locale/ipp-strings.c:2712
+#: locale/ipp-strings.c:2750
 msgid "printer-state-reasons.binder-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Binder Cover Closed
-#: locale/ipp-strings.c:2714
+#: locale/ipp-strings.c:2752
 msgid "printer-state-reasons.binder-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Binder Cover Open
-#: locale/ipp-strings.c:2716
+#: locale/ipp-strings.c:2754
 msgid "printer-state-reasons.binder-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Binder Empty
-#: locale/ipp-strings.c:2718
+#: locale/ipp-strings.c:2756
 msgid "printer-state-reasons.binder-empty"
 msgstr ""
 
 #. TRANSLATORS: Binder Full
-#: locale/ipp-strings.c:2720
+#: locale/ipp-strings.c:2758
 msgid "printer-state-reasons.binder-full"
 msgstr ""
 
 #. TRANSLATORS: Binder Interlock Closed
-#: locale/ipp-strings.c:2722
+#: locale/ipp-strings.c:2760
 msgid "printer-state-reasons.binder-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Binder Interlock Open
-#: locale/ipp-strings.c:2724
+#: locale/ipp-strings.c:2762
 msgid "printer-state-reasons.binder-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Binder Jam
-#: locale/ipp-strings.c:2726
+#: locale/ipp-strings.c:2764
 msgid "printer-state-reasons.binder-jam"
 msgstr ""
 
 #. TRANSLATORS: Binder Life Almost Over
-#: locale/ipp-strings.c:2728
+#: locale/ipp-strings.c:2766
 msgid "printer-state-reasons.binder-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Binder Life Over
-#: locale/ipp-strings.c:2730
+#: locale/ipp-strings.c:2768
 msgid "printer-state-reasons.binder-life-over"
 msgstr ""
 
 #. TRANSLATORS: Binder Memory Exhausted
-#: locale/ipp-strings.c:2732
+#: locale/ipp-strings.c:2770
 msgid "printer-state-reasons.binder-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Binder Missing
-#: locale/ipp-strings.c:2734
+#: locale/ipp-strings.c:2772
 msgid "printer-state-reasons.binder-missing"
 msgstr ""
 
 #. TRANSLATORS: Binder Motor Failure
-#: locale/ipp-strings.c:2736
+#: locale/ipp-strings.c:2774
 msgid "printer-state-reasons.binder-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Binder Near Limit
-#: locale/ipp-strings.c:2738
+#: locale/ipp-strings.c:2776
 msgid "printer-state-reasons.binder-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Binder Offline
-#: locale/ipp-strings.c:2740
+#: locale/ipp-strings.c:2778
 msgid "printer-state-reasons.binder-offline"
 msgstr ""
 
 #. TRANSLATORS: Binder Opened
-#: locale/ipp-strings.c:2742
+#: locale/ipp-strings.c:2780
 msgid "printer-state-reasons.binder-opened"
 msgstr ""
 
 #. TRANSLATORS: Binder Over Temperature
-#: locale/ipp-strings.c:2744
+#: locale/ipp-strings.c:2782
 msgid "printer-state-reasons.binder-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Binder Power Saver
-#: locale/ipp-strings.c:2746
+#: locale/ipp-strings.c:2784
 msgid "printer-state-reasons.binder-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Binder Recoverable Failure
-#: locale/ipp-strings.c:2748
+#: locale/ipp-strings.c:2786
 msgid "printer-state-reasons.binder-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Binder Recoverable Storage
-#: locale/ipp-strings.c:2750
+#: locale/ipp-strings.c:2788
 msgid "printer-state-reasons.binder-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Binder Removed
-#: locale/ipp-strings.c:2752
+#: locale/ipp-strings.c:2790
 msgid "printer-state-reasons.binder-removed"
 msgstr ""
 
 #. TRANSLATORS: Binder Resource Added
-#: locale/ipp-strings.c:2754
+#: locale/ipp-strings.c:2792
 msgid "printer-state-reasons.binder-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Binder Resource Removed
-#: locale/ipp-strings.c:2756
+#: locale/ipp-strings.c:2794
 msgid "printer-state-reasons.binder-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Binder Thermistor Failure
-#: locale/ipp-strings.c:2758
+#: locale/ipp-strings.c:2796
 msgid "printer-state-reasons.binder-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Binder Timing Failure
-#: locale/ipp-strings.c:2760
+#: locale/ipp-strings.c:2798
 msgid "printer-state-reasons.binder-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Binder Turned Off
-#: locale/ipp-strings.c:2762
+#: locale/ipp-strings.c:2800
 msgid "printer-state-reasons.binder-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Binder Turned On
-#: locale/ipp-strings.c:2764
+#: locale/ipp-strings.c:2802
 msgid "printer-state-reasons.binder-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Binder Under Temperature
-#: locale/ipp-strings.c:2766
+#: locale/ipp-strings.c:2804
 msgid "printer-state-reasons.binder-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Binder Unrecoverable Failure
-#: locale/ipp-strings.c:2768
+#: locale/ipp-strings.c:2806
 msgid "printer-state-reasons.binder-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Binder Unrecoverable Storage Error
-#: locale/ipp-strings.c:2770
+#: locale/ipp-strings.c:2808
 msgid "printer-state-reasons.binder-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Binder Warming Up
-#: locale/ipp-strings.c:2772
+#: locale/ipp-strings.c:2810
 msgid "printer-state-reasons.binder-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Camera Failure
-#: locale/ipp-strings.c:2774
+#: locale/ipp-strings.c:2812
 msgid "printer-state-reasons.camera-failure"
 msgstr ""
 
 #. TRANSLATORS: Chamber Cooling
-#: locale/ipp-strings.c:2776
+#: locale/ipp-strings.c:2814
 msgid "printer-state-reasons.chamber-cooling"
 msgstr ""
 
 #. TRANSLATORS: Chamber Failure
-#: locale/ipp-strings.c:2778
+#: locale/ipp-strings.c:2816
 msgid "printer-state-reasons.chamber-failure"
 msgstr ""
 
 #. TRANSLATORS: Chamber Heating
-#: locale/ipp-strings.c:2780
+#: locale/ipp-strings.c:2818
 msgid "printer-state-reasons.chamber-heating"
 msgstr ""
 
 #. TRANSLATORS: Chamber Temperature High
-#: locale/ipp-strings.c:2782
+#: locale/ipp-strings.c:2820
 msgid "printer-state-reasons.chamber-temperature-high"
 msgstr ""
 
 #. TRANSLATORS: Chamber Temperature Low
-#: locale/ipp-strings.c:2784
+#: locale/ipp-strings.c:2822
 msgid "printer-state-reasons.chamber-temperature-low"
 msgstr ""
 
 #. TRANSLATORS: Cleaner Life Almost Over
-#: locale/ipp-strings.c:2786
+#: locale/ipp-strings.c:2824
 msgid "printer-state-reasons.cleaner-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Cleaner Life Over
-#: locale/ipp-strings.c:2788
+#: locale/ipp-strings.c:2826
 msgid "printer-state-reasons.cleaner-life-over"
 msgstr ""
 
 #. TRANSLATORS: Configuration Change
-#: locale/ipp-strings.c:2790
+#: locale/ipp-strings.c:2828
 msgid "printer-state-reasons.configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Connecting To Device
-#: locale/ipp-strings.c:2792
+#: locale/ipp-strings.c:2830
 msgid "printer-state-reasons.connecting-to-device"
 msgstr ""
 
 #. TRANSLATORS: Cover Open
-#: locale/ipp-strings.c:2794
+#: locale/ipp-strings.c:2832
 msgid "printer-state-reasons.cover-open"
 msgstr ""
 
 #. TRANSLATORS: Deactivated
-#: locale/ipp-strings.c:2796
+#: locale/ipp-strings.c:2834
 msgid "printer-state-reasons.deactivated"
 msgstr ""
 
 #. TRANSLATORS: Developer Empty
-#: locale/ipp-strings.c:2798
+#: locale/ipp-strings.c:2836
 msgid "printer-state-reasons.developer-empty"
 msgstr ""
 
 #. TRANSLATORS: Developer Low
-#: locale/ipp-strings.c:2800
+#: locale/ipp-strings.c:2838
 msgid "printer-state-reasons.developer-low"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Added
-#: locale/ipp-strings.c:2802
+#: locale/ipp-strings.c:2840
 msgid "printer-state-reasons.die-cutter-added"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Almost Empty
-#: locale/ipp-strings.c:2804
+#: locale/ipp-strings.c:2842
 msgid "printer-state-reasons.die-cutter-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Almost Full
-#: locale/ipp-strings.c:2806
+#: locale/ipp-strings.c:2844
 msgid "printer-state-reasons.die-cutter-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter At Limit
-#: locale/ipp-strings.c:2808
+#: locale/ipp-strings.c:2846
 msgid "printer-state-reasons.die-cutter-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Closed
-#: locale/ipp-strings.c:2810
+#: locale/ipp-strings.c:2848
 msgid "printer-state-reasons.die-cutter-closed"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Configuration Change
-#: locale/ipp-strings.c:2812
+#: locale/ipp-strings.c:2850
 msgid "printer-state-reasons.die-cutter-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Cover Closed
-#: locale/ipp-strings.c:2814
+#: locale/ipp-strings.c:2852
 msgid "printer-state-reasons.die-cutter-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Cover Open
-#: locale/ipp-strings.c:2816
+#: locale/ipp-strings.c:2854
 msgid "printer-state-reasons.die-cutter-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Empty
-#: locale/ipp-strings.c:2818
+#: locale/ipp-strings.c:2856
 msgid "printer-state-reasons.die-cutter-empty"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Full
-#: locale/ipp-strings.c:2820
+#: locale/ipp-strings.c:2858
 msgid "printer-state-reasons.die-cutter-full"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Interlock Closed
-#: locale/ipp-strings.c:2822
+#: locale/ipp-strings.c:2860
 msgid "printer-state-reasons.die-cutter-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Interlock Open
-#: locale/ipp-strings.c:2824
+#: locale/ipp-strings.c:2862
 msgid "printer-state-reasons.die-cutter-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Jam
-#: locale/ipp-strings.c:2826
+#: locale/ipp-strings.c:2864
 msgid "printer-state-reasons.die-cutter-jam"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Life Almost Over
-#: locale/ipp-strings.c:2828
+#: locale/ipp-strings.c:2866
 msgid "printer-state-reasons.die-cutter-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Life Over
-#: locale/ipp-strings.c:2830
+#: locale/ipp-strings.c:2868
 msgid "printer-state-reasons.die-cutter-life-over"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Memory Exhausted
-#: locale/ipp-strings.c:2832
+#: locale/ipp-strings.c:2870
 msgid "printer-state-reasons.die-cutter-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Missing
-#: locale/ipp-strings.c:2834
+#: locale/ipp-strings.c:2872
 msgid "printer-state-reasons.die-cutter-missing"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Motor Failure
-#: locale/ipp-strings.c:2836
+#: locale/ipp-strings.c:2874
 msgid "printer-state-reasons.die-cutter-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Near Limit
-#: locale/ipp-strings.c:2838
+#: locale/ipp-strings.c:2876
 msgid "printer-state-reasons.die-cutter-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Offline
-#: locale/ipp-strings.c:2840
+#: locale/ipp-strings.c:2878
 msgid "printer-state-reasons.die-cutter-offline"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Opened
-#: locale/ipp-strings.c:2842
+#: locale/ipp-strings.c:2880
 msgid "printer-state-reasons.die-cutter-opened"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Over Temperature
-#: locale/ipp-strings.c:2844
+#: locale/ipp-strings.c:2882
 msgid "printer-state-reasons.die-cutter-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Power Saver
-#: locale/ipp-strings.c:2846
+#: locale/ipp-strings.c:2884
 msgid "printer-state-reasons.die-cutter-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Recoverable Failure
-#: locale/ipp-strings.c:2848
+#: locale/ipp-strings.c:2886
 msgid "printer-state-reasons.die-cutter-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Recoverable Storage
-#: locale/ipp-strings.c:2850
+#: locale/ipp-strings.c:2888
 msgid "printer-state-reasons.die-cutter-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Removed
-#: locale/ipp-strings.c:2852
+#: locale/ipp-strings.c:2890
 msgid "printer-state-reasons.die-cutter-removed"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Resource Added
-#: locale/ipp-strings.c:2854
+#: locale/ipp-strings.c:2892
 msgid "printer-state-reasons.die-cutter-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Resource Removed
-#: locale/ipp-strings.c:2856
+#: locale/ipp-strings.c:2894
 msgid "printer-state-reasons.die-cutter-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Thermistor Failure
-#: locale/ipp-strings.c:2858
+#: locale/ipp-strings.c:2896
 msgid "printer-state-reasons.die-cutter-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Timing Failure
-#: locale/ipp-strings.c:2860
+#: locale/ipp-strings.c:2898
 msgid "printer-state-reasons.die-cutter-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Turned Off
-#: locale/ipp-strings.c:2862
+#: locale/ipp-strings.c:2900
 msgid "printer-state-reasons.die-cutter-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Turned On
-#: locale/ipp-strings.c:2864
+#: locale/ipp-strings.c:2902
 msgid "printer-state-reasons.die-cutter-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Under Temperature
-#: locale/ipp-strings.c:2866
+#: locale/ipp-strings.c:2904
 msgid "printer-state-reasons.die-cutter-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Unrecoverable Failure
-#: locale/ipp-strings.c:2868
+#: locale/ipp-strings.c:2906
 msgid "printer-state-reasons.die-cutter-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Unrecoverable Storage Error
-#: locale/ipp-strings.c:2870
+#: locale/ipp-strings.c:2908
 msgid "printer-state-reasons.die-cutter-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Die Cutter Warming Up
-#: locale/ipp-strings.c:2872
+#: locale/ipp-strings.c:2910
 msgid "printer-state-reasons.die-cutter-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Door Open
-#: locale/ipp-strings.c:2874
+#: locale/ipp-strings.c:2912
 msgid "printer-state-reasons.door-open"
 msgstr ""
 
 #. TRANSLATORS: Extruder Cooling
-#: locale/ipp-strings.c:2876
+#: locale/ipp-strings.c:2914
 msgid "printer-state-reasons.extruder-cooling"
 msgstr ""
 
 #. TRANSLATORS: Extruder Failure
-#: locale/ipp-strings.c:2878
+#: locale/ipp-strings.c:2916
 msgid "printer-state-reasons.extruder-failure"
 msgstr ""
 
 #. TRANSLATORS: Extruder Heating
-#: locale/ipp-strings.c:2880
+#: locale/ipp-strings.c:2918
 msgid "printer-state-reasons.extruder-heating"
 msgstr ""
 
 #. TRANSLATORS: Extruder Jam
-#: locale/ipp-strings.c:2882
+#: locale/ipp-strings.c:2920
 msgid "printer-state-reasons.extruder-jam"
 msgstr ""
 
 #. TRANSLATORS: Extruder Temperature High
-#: locale/ipp-strings.c:2884
+#: locale/ipp-strings.c:2922
 msgid "printer-state-reasons.extruder-temperature-high"
 msgstr ""
 
 #. TRANSLATORS: Extruder Temperature Low
-#: locale/ipp-strings.c:2886
+#: locale/ipp-strings.c:2924
 msgid "printer-state-reasons.extruder-temperature-low"
 msgstr ""
 
 #. TRANSLATORS: Fan Failure
-#: locale/ipp-strings.c:2888
+#: locale/ipp-strings.c:2926
 msgid "printer-state-reasons.fan-failure"
 msgstr ""
 
 #. TRANSLATORS: Fax Modem Life Almost Over
-#: locale/ipp-strings.c:2890
+#: locale/ipp-strings.c:2928
 msgid "printer-state-reasons.fax-modem-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Fax Modem Life Over
-#: locale/ipp-strings.c:2892
+#: locale/ipp-strings.c:2930
 msgid "printer-state-reasons.fax-modem-life-over"
 msgstr ""
 
 #. TRANSLATORS: Fax Modem Missing
-#: locale/ipp-strings.c:2894
+#: locale/ipp-strings.c:2932
 msgid "printer-state-reasons.fax-modem-missing"
 msgstr ""
 
 #. TRANSLATORS: Fax Modem Turned Off
-#: locale/ipp-strings.c:2896
+#: locale/ipp-strings.c:2934
 msgid "printer-state-reasons.fax-modem-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Fax Modem Turned On
-#: locale/ipp-strings.c:2898
+#: locale/ipp-strings.c:2936
 msgid "printer-state-reasons.fax-modem-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Folder Added
-#: locale/ipp-strings.c:2900
+#: locale/ipp-strings.c:2938
 msgid "printer-state-reasons.folder-added"
 msgstr ""
 
 #. TRANSLATORS: Folder Almost Empty
-#: locale/ipp-strings.c:2902
+#: locale/ipp-strings.c:2940
 msgid "printer-state-reasons.folder-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Folder Almost Full
-#: locale/ipp-strings.c:2904
+#: locale/ipp-strings.c:2942
 msgid "printer-state-reasons.folder-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Folder At Limit
-#: locale/ipp-strings.c:2906
+#: locale/ipp-strings.c:2944
 msgid "printer-state-reasons.folder-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Folder Closed
-#: locale/ipp-strings.c:2908
+#: locale/ipp-strings.c:2946
 msgid "printer-state-reasons.folder-closed"
 msgstr ""
 
 #. TRANSLATORS: Folder Configuration Change
-#: locale/ipp-strings.c:2910
+#: locale/ipp-strings.c:2948
 msgid "printer-state-reasons.folder-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Folder Cover Closed
-#: locale/ipp-strings.c:2912
+#: locale/ipp-strings.c:2950
 msgid "printer-state-reasons.folder-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Folder Cover Open
-#: locale/ipp-strings.c:2914
+#: locale/ipp-strings.c:2952
 msgid "printer-state-reasons.folder-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Folder Empty
-#: locale/ipp-strings.c:2916
+#: locale/ipp-strings.c:2954
 msgid "printer-state-reasons.folder-empty"
 msgstr ""
 
 #. TRANSLATORS: Folder Full
-#: locale/ipp-strings.c:2918
+#: locale/ipp-strings.c:2956
 msgid "printer-state-reasons.folder-full"
 msgstr ""
 
 #. TRANSLATORS: Folder Interlock Closed
-#: locale/ipp-strings.c:2920
+#: locale/ipp-strings.c:2958
 msgid "printer-state-reasons.folder-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Folder Interlock Open
-#: locale/ipp-strings.c:2922
+#: locale/ipp-strings.c:2960
 msgid "printer-state-reasons.folder-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Folder Jam
-#: locale/ipp-strings.c:2924
+#: locale/ipp-strings.c:2962
 msgid "printer-state-reasons.folder-jam"
 msgstr ""
 
 #. TRANSLATORS: Folder Life Almost Over
-#: locale/ipp-strings.c:2926
+#: locale/ipp-strings.c:2964
 msgid "printer-state-reasons.folder-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Folder Life Over
-#: locale/ipp-strings.c:2928
+#: locale/ipp-strings.c:2966
 msgid "printer-state-reasons.folder-life-over"
 msgstr ""
 
 #. TRANSLATORS: Folder Memory Exhausted
-#: locale/ipp-strings.c:2930
+#: locale/ipp-strings.c:2968
 msgid "printer-state-reasons.folder-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Folder Missing
-#: locale/ipp-strings.c:2932
+#: locale/ipp-strings.c:2970
 msgid "printer-state-reasons.folder-missing"
 msgstr ""
 
 #. TRANSLATORS: Folder Motor Failure
-#: locale/ipp-strings.c:2934
+#: locale/ipp-strings.c:2972
 msgid "printer-state-reasons.folder-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Folder Near Limit
-#: locale/ipp-strings.c:2936
+#: locale/ipp-strings.c:2974
 msgid "printer-state-reasons.folder-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Folder Offline
-#: locale/ipp-strings.c:2938
+#: locale/ipp-strings.c:2976
 msgid "printer-state-reasons.folder-offline"
 msgstr ""
 
 #. TRANSLATORS: Folder Opened
-#: locale/ipp-strings.c:2940
+#: locale/ipp-strings.c:2978
 msgid "printer-state-reasons.folder-opened"
 msgstr ""
 
 #. TRANSLATORS: Folder Over Temperature
-#: locale/ipp-strings.c:2942
+#: locale/ipp-strings.c:2980
 msgid "printer-state-reasons.folder-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Folder Power Saver
-#: locale/ipp-strings.c:2944
+#: locale/ipp-strings.c:2982
 msgid "printer-state-reasons.folder-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Folder Recoverable Failure
-#: locale/ipp-strings.c:2946
+#: locale/ipp-strings.c:2984
 msgid "printer-state-reasons.folder-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Folder Recoverable Storage
-#: locale/ipp-strings.c:2948
+#: locale/ipp-strings.c:2986
 msgid "printer-state-reasons.folder-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Folder Removed
-#: locale/ipp-strings.c:2950
+#: locale/ipp-strings.c:2988
 msgid "printer-state-reasons.folder-removed"
 msgstr ""
 
 #. TRANSLATORS: Folder Resource Added
-#: locale/ipp-strings.c:2952
+#: locale/ipp-strings.c:2990
 msgid "printer-state-reasons.folder-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Folder Resource Removed
-#: locale/ipp-strings.c:2954
+#: locale/ipp-strings.c:2992
 msgid "printer-state-reasons.folder-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Folder Thermistor Failure
-#: locale/ipp-strings.c:2956
+#: locale/ipp-strings.c:2994
 msgid "printer-state-reasons.folder-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Folder Timing Failure
-#: locale/ipp-strings.c:2958
+#: locale/ipp-strings.c:2996
 msgid "printer-state-reasons.folder-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Folder Turned Off
-#: locale/ipp-strings.c:2960
+#: locale/ipp-strings.c:2998
 msgid "printer-state-reasons.folder-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Folder Turned On
-#: locale/ipp-strings.c:2962
+#: locale/ipp-strings.c:3000
 msgid "printer-state-reasons.folder-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Folder Under Temperature
-#: locale/ipp-strings.c:2964
+#: locale/ipp-strings.c:3002
 msgid "printer-state-reasons.folder-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Folder Unrecoverable Failure
-#: locale/ipp-strings.c:2966
+#: locale/ipp-strings.c:3004
 msgid "printer-state-reasons.folder-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Folder Unrecoverable Storage Error
-#: locale/ipp-strings.c:2968
+#: locale/ipp-strings.c:3006
 msgid "printer-state-reasons.folder-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Folder Warming Up
-#: locale/ipp-strings.c:2970
+#: locale/ipp-strings.c:3008
 msgid "printer-state-reasons.folder-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Fuser temperature high
-#: locale/ipp-strings.c:2972
+#: locale/ipp-strings.c:3010
 msgid "printer-state-reasons.fuser-over-temp"
 msgstr ""
 
 #. TRANSLATORS: Fuser temperature low
-#: locale/ipp-strings.c:2974
+#: locale/ipp-strings.c:3012
 msgid "printer-state-reasons.fuser-under-temp"
 msgstr ""
 
 #. TRANSLATORS: Hold New Jobs
-#: locale/ipp-strings.c:2976
+#: locale/ipp-strings.c:3014
 msgid "printer-state-reasons.hold-new-jobs"
 msgstr ""
 
 #. TRANSLATORS: Identify Printer
-#: locale/ipp-strings.c:2978
+#: locale/ipp-strings.c:3016
 msgid "printer-state-reasons.identify-printer-requested"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Added
-#: locale/ipp-strings.c:2980
+#: locale/ipp-strings.c:3018
 msgid "printer-state-reasons.imprinter-added"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Almost Empty
-#: locale/ipp-strings.c:2982
+#: locale/ipp-strings.c:3020
 msgid "printer-state-reasons.imprinter-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Almost Full
-#: locale/ipp-strings.c:2984
+#: locale/ipp-strings.c:3022
 msgid "printer-state-reasons.imprinter-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Imprinter At Limit
-#: locale/ipp-strings.c:2986
+#: locale/ipp-strings.c:3024
 msgid "printer-state-reasons.imprinter-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Closed
-#: locale/ipp-strings.c:2988
+#: locale/ipp-strings.c:3026
 msgid "printer-state-reasons.imprinter-closed"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Configuration Change
-#: locale/ipp-strings.c:2990
+#: locale/ipp-strings.c:3028
 msgid "printer-state-reasons.imprinter-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Cover Closed
-#: locale/ipp-strings.c:2992
+#: locale/ipp-strings.c:3030
 msgid "printer-state-reasons.imprinter-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Cover Open
-#: locale/ipp-strings.c:2994
+#: locale/ipp-strings.c:3032
 msgid "printer-state-reasons.imprinter-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Empty
-#: locale/ipp-strings.c:2996
+#: locale/ipp-strings.c:3034
 msgid "printer-state-reasons.imprinter-empty"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Full
-#: locale/ipp-strings.c:2998
+#: locale/ipp-strings.c:3036
 msgid "printer-state-reasons.imprinter-full"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Interlock Closed
-#: locale/ipp-strings.c:3000
+#: locale/ipp-strings.c:3038
 msgid "printer-state-reasons.imprinter-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Interlock Open
-#: locale/ipp-strings.c:3002
+#: locale/ipp-strings.c:3040
 msgid "printer-state-reasons.imprinter-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Jam
-#: locale/ipp-strings.c:3004
+#: locale/ipp-strings.c:3042
 msgid "printer-state-reasons.imprinter-jam"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Life Almost Over
-#: locale/ipp-strings.c:3006
+#: locale/ipp-strings.c:3044
 msgid "printer-state-reasons.imprinter-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Life Over
-#: locale/ipp-strings.c:3008
+#: locale/ipp-strings.c:3046
 msgid "printer-state-reasons.imprinter-life-over"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Memory Exhausted
-#: locale/ipp-strings.c:3010
+#: locale/ipp-strings.c:3048
 msgid "printer-state-reasons.imprinter-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Missing
-#: locale/ipp-strings.c:3012
+#: locale/ipp-strings.c:3050
 msgid "printer-state-reasons.imprinter-missing"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Motor Failure
-#: locale/ipp-strings.c:3014
+#: locale/ipp-strings.c:3052
 msgid "printer-state-reasons.imprinter-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Near Limit
-#: locale/ipp-strings.c:3016
+#: locale/ipp-strings.c:3054
 msgid "printer-state-reasons.imprinter-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Offline
-#: locale/ipp-strings.c:3018
+#: locale/ipp-strings.c:3056
 msgid "printer-state-reasons.imprinter-offline"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Opened
-#: locale/ipp-strings.c:3020
+#: locale/ipp-strings.c:3058
 msgid "printer-state-reasons.imprinter-opened"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Over Temperature
-#: locale/ipp-strings.c:3022
+#: locale/ipp-strings.c:3060
 msgid "printer-state-reasons.imprinter-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Power Saver
-#: locale/ipp-strings.c:3024
+#: locale/ipp-strings.c:3062
 msgid "printer-state-reasons.imprinter-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Recoverable Failure
-#: locale/ipp-strings.c:3026
+#: locale/ipp-strings.c:3064
 msgid "printer-state-reasons.imprinter-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Recoverable Storage
-#: locale/ipp-strings.c:3028
+#: locale/ipp-strings.c:3066
 msgid "printer-state-reasons.imprinter-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Removed
-#: locale/ipp-strings.c:3030
+#: locale/ipp-strings.c:3068
 msgid "printer-state-reasons.imprinter-removed"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Resource Added
-#: locale/ipp-strings.c:3032
+#: locale/ipp-strings.c:3070
 msgid "printer-state-reasons.imprinter-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Resource Removed
-#: locale/ipp-strings.c:3034
+#: locale/ipp-strings.c:3072
 msgid "printer-state-reasons.imprinter-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Thermistor Failure
-#: locale/ipp-strings.c:3036
+#: locale/ipp-strings.c:3074
 msgid "printer-state-reasons.imprinter-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Timing Failure
-#: locale/ipp-strings.c:3038
+#: locale/ipp-strings.c:3076
 msgid "printer-state-reasons.imprinter-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Turned Off
-#: locale/ipp-strings.c:3040
+#: locale/ipp-strings.c:3078
 msgid "printer-state-reasons.imprinter-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Turned On
-#: locale/ipp-strings.c:3042
+#: locale/ipp-strings.c:3080
 msgid "printer-state-reasons.imprinter-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Under Temperature
-#: locale/ipp-strings.c:3044
+#: locale/ipp-strings.c:3082
 msgid "printer-state-reasons.imprinter-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Unrecoverable Failure
-#: locale/ipp-strings.c:3046
+#: locale/ipp-strings.c:3084
 msgid "printer-state-reasons.imprinter-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Unrecoverable Storage Error
-#: locale/ipp-strings.c:3048
+#: locale/ipp-strings.c:3086
 msgid "printer-state-reasons.imprinter-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Imprinter Warming Up
-#: locale/ipp-strings.c:3050
+#: locale/ipp-strings.c:3088
 msgid "printer-state-reasons.imprinter-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Input Cannot Feed Size Selected
-#: locale/ipp-strings.c:3052
+#: locale/ipp-strings.c:3090
 msgid "printer-state-reasons.input-cannot-feed-size-selected"
 msgstr ""
 
 #. TRANSLATORS: Input Manual Input Request
-#: locale/ipp-strings.c:3054
+#: locale/ipp-strings.c:3092
 msgid "printer-state-reasons.input-manual-input-request"
 msgstr ""
 
 #. TRANSLATORS: Input Media Color Change
-#: locale/ipp-strings.c:3056
+#: locale/ipp-strings.c:3094
 msgid "printer-state-reasons.input-media-color-change"
 msgstr ""
 
 #. TRANSLATORS: Input Media Form Parts Change
-#: locale/ipp-strings.c:3058
+#: locale/ipp-strings.c:3096
 msgid "printer-state-reasons.input-media-form-parts-change"
 msgstr ""
 
 #. TRANSLATORS: Input Media Size Change
-#: locale/ipp-strings.c:3060
+#: locale/ipp-strings.c:3098
 msgid "printer-state-reasons.input-media-size-change"
 msgstr ""
 
 #. TRANSLATORS: Input Media Tray Failure
-#: locale/ipp-strings.c:3062
+#: locale/ipp-strings.c:3100
 msgid "printer-state-reasons.input-media-tray-failure"
 msgstr ""
 
 #. TRANSLATORS: Input Media Tray Feed Error
-#: locale/ipp-strings.c:3064
+#: locale/ipp-strings.c:3102
 msgid "printer-state-reasons.input-media-tray-feed-error"
 msgstr ""
 
 #. TRANSLATORS: Input Media Tray Jam
-#: locale/ipp-strings.c:3066
+#: locale/ipp-strings.c:3104
 msgid "printer-state-reasons.input-media-tray-jam"
 msgstr ""
 
 #. TRANSLATORS: Input Media Type Change
-#: locale/ipp-strings.c:3068
+#: locale/ipp-strings.c:3106
 msgid "printer-state-reasons.input-media-type-change"
 msgstr ""
 
 #. TRANSLATORS: Input Media Weight Change
-#: locale/ipp-strings.c:3070
+#: locale/ipp-strings.c:3108
 msgid "printer-state-reasons.input-media-weight-change"
 msgstr ""
 
 #. TRANSLATORS: Input Pick Roller Failure
-#: locale/ipp-strings.c:3072
+#: locale/ipp-strings.c:3110
 msgid "printer-state-reasons.input-pick-roller-failure"
 msgstr ""
 
 #. TRANSLATORS: Input Pick Roller Life Over
-#: locale/ipp-strings.c:3074
+#: locale/ipp-strings.c:3112
 msgid "printer-state-reasons.input-pick-roller-life-over"
 msgstr ""
 
 #. TRANSLATORS: Input Pick Roller Life Warn
-#: locale/ipp-strings.c:3076
+#: locale/ipp-strings.c:3114
 msgid "printer-state-reasons.input-pick-roller-life-warn"
 msgstr ""
 
 #. TRANSLATORS: Input Pick Roller Missing
-#: locale/ipp-strings.c:3078
+#: locale/ipp-strings.c:3116
 msgid "printer-state-reasons.input-pick-roller-missing"
 msgstr ""
 
 #. TRANSLATORS: Input Tray Elevation Failure
-#: locale/ipp-strings.c:3080
+#: locale/ipp-strings.c:3118
 msgid "printer-state-reasons.input-tray-elevation-failure"
 msgstr ""
 
 #. TRANSLATORS: Paper tray is missing
-#: locale/ipp-strings.c:3082
+#: locale/ipp-strings.c:3120
 msgid "printer-state-reasons.input-tray-missing"
 msgstr ""
 
 #. TRANSLATORS: Input Tray Position Failure
-#: locale/ipp-strings.c:3084
+#: locale/ipp-strings.c:3122
 msgid "printer-state-reasons.input-tray-position-failure"
 msgstr ""
 
 #. TRANSLATORS: Inserter Added
-#: locale/ipp-strings.c:3086
+#: locale/ipp-strings.c:3124
 msgid "printer-state-reasons.inserter-added"
 msgstr ""
 
 #. TRANSLATORS: Inserter Almost Empty
-#: locale/ipp-strings.c:3088
+#: locale/ipp-strings.c:3126
 msgid "printer-state-reasons.inserter-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Inserter Almost Full
-#: locale/ipp-strings.c:3090
+#: locale/ipp-strings.c:3128
 msgid "printer-state-reasons.inserter-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Inserter At Limit
-#: locale/ipp-strings.c:3092
+#: locale/ipp-strings.c:3130
 msgid "printer-state-reasons.inserter-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Inserter Closed
-#: locale/ipp-strings.c:3094
+#: locale/ipp-strings.c:3132
 msgid "printer-state-reasons.inserter-closed"
 msgstr ""
 
 #. TRANSLATORS: Inserter Configuration Change
-#: locale/ipp-strings.c:3096
+#: locale/ipp-strings.c:3134
 msgid "printer-state-reasons.inserter-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Inserter Cover Closed
-#: locale/ipp-strings.c:3098
+#: locale/ipp-strings.c:3136
 msgid "printer-state-reasons.inserter-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Inserter Cover Open
-#: locale/ipp-strings.c:3100
+#: locale/ipp-strings.c:3138
 msgid "printer-state-reasons.inserter-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Inserter Empty
-#: locale/ipp-strings.c:3102
+#: locale/ipp-strings.c:3140
 msgid "printer-state-reasons.inserter-empty"
 msgstr ""
 
 #. TRANSLATORS: Inserter Full
-#: locale/ipp-strings.c:3104
+#: locale/ipp-strings.c:3142
 msgid "printer-state-reasons.inserter-full"
 msgstr ""
 
 #. TRANSLATORS: Inserter Interlock Closed
-#: locale/ipp-strings.c:3106
+#: locale/ipp-strings.c:3144
 msgid "printer-state-reasons.inserter-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Inserter Interlock Open
-#: locale/ipp-strings.c:3108
+#: locale/ipp-strings.c:3146
 msgid "printer-state-reasons.inserter-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Inserter Jam
-#: locale/ipp-strings.c:3110
+#: locale/ipp-strings.c:3148
 msgid "printer-state-reasons.inserter-jam"
 msgstr ""
 
 #. TRANSLATORS: Inserter Life Almost Over
-#: locale/ipp-strings.c:3112
+#: locale/ipp-strings.c:3150
 msgid "printer-state-reasons.inserter-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Inserter Life Over
-#: locale/ipp-strings.c:3114
+#: locale/ipp-strings.c:3152
 msgid "printer-state-reasons.inserter-life-over"
 msgstr ""
 
 #. TRANSLATORS: Inserter Memory Exhausted
-#: locale/ipp-strings.c:3116
+#: locale/ipp-strings.c:3154
 msgid "printer-state-reasons.inserter-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Inserter Missing
-#: locale/ipp-strings.c:3118
+#: locale/ipp-strings.c:3156
 msgid "printer-state-reasons.inserter-missing"
 msgstr ""
 
 #. TRANSLATORS: Inserter Motor Failure
-#: locale/ipp-strings.c:3120
+#: locale/ipp-strings.c:3158
 msgid "printer-state-reasons.inserter-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Inserter Near Limit
-#: locale/ipp-strings.c:3122
+#: locale/ipp-strings.c:3160
 msgid "printer-state-reasons.inserter-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Inserter Offline
-#: locale/ipp-strings.c:3124
+#: locale/ipp-strings.c:3162
 msgid "printer-state-reasons.inserter-offline"
 msgstr ""
 
 #. TRANSLATORS: Inserter Opened
-#: locale/ipp-strings.c:3126
+#: locale/ipp-strings.c:3164
 msgid "printer-state-reasons.inserter-opened"
 msgstr ""
 
 #. TRANSLATORS: Inserter Over Temperature
-#: locale/ipp-strings.c:3128
+#: locale/ipp-strings.c:3166
 msgid "printer-state-reasons.inserter-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Inserter Power Saver
-#: locale/ipp-strings.c:3130
+#: locale/ipp-strings.c:3168
 msgid "printer-state-reasons.inserter-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Inserter Recoverable Failure
-#: locale/ipp-strings.c:3132
+#: locale/ipp-strings.c:3170
 msgid "printer-state-reasons.inserter-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Inserter Recoverable Storage
-#: locale/ipp-strings.c:3134
+#: locale/ipp-strings.c:3172
 msgid "printer-state-reasons.inserter-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Inserter Removed
-#: locale/ipp-strings.c:3136
+#: locale/ipp-strings.c:3174
 msgid "printer-state-reasons.inserter-removed"
 msgstr ""
 
 #. TRANSLATORS: Inserter Resource Added
-#: locale/ipp-strings.c:3138
+#: locale/ipp-strings.c:3176
 msgid "printer-state-reasons.inserter-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Inserter Resource Removed
-#: locale/ipp-strings.c:3140
+#: locale/ipp-strings.c:3178
 msgid "printer-state-reasons.inserter-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Inserter Thermistor Failure
-#: locale/ipp-strings.c:3142
+#: locale/ipp-strings.c:3180
 msgid "printer-state-reasons.inserter-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Inserter Timing Failure
-#: locale/ipp-strings.c:3144
+#: locale/ipp-strings.c:3182
 msgid "printer-state-reasons.inserter-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Inserter Turned Off
-#: locale/ipp-strings.c:3146
+#: locale/ipp-strings.c:3184
 msgid "printer-state-reasons.inserter-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Inserter Turned On
-#: locale/ipp-strings.c:3148
+#: locale/ipp-strings.c:3186
 msgid "printer-state-reasons.inserter-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Inserter Under Temperature
-#: locale/ipp-strings.c:3150
+#: locale/ipp-strings.c:3188
 msgid "printer-state-reasons.inserter-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Inserter Unrecoverable Failure
-#: locale/ipp-strings.c:3152
+#: locale/ipp-strings.c:3190
 msgid "printer-state-reasons.inserter-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Inserter Unrecoverable Storage Error
-#: locale/ipp-strings.c:3154
+#: locale/ipp-strings.c:3192
 msgid "printer-state-reasons.inserter-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Inserter Warming Up
-#: locale/ipp-strings.c:3156
+#: locale/ipp-strings.c:3194
 msgid "printer-state-reasons.inserter-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Interlock Closed
-#: locale/ipp-strings.c:3158
+#: locale/ipp-strings.c:3196
 msgid "printer-state-reasons.interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Interlock Open
-#: locale/ipp-strings.c:3160
+#: locale/ipp-strings.c:3198
 msgid "printer-state-reasons.interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Interpreter Cartridge Added
-#: locale/ipp-strings.c:3162
+#: locale/ipp-strings.c:3200
 msgid "printer-state-reasons.interpreter-cartridge-added"
 msgstr ""
 
 #. TRANSLATORS: Interpreter Cartridge Removed
-#: locale/ipp-strings.c:3164
+#: locale/ipp-strings.c:3202
 msgid "printer-state-reasons.interpreter-cartridge-deleted"
 msgstr ""
 
 #. TRANSLATORS: Interpreter Complex Page Encountered
-#: locale/ipp-strings.c:3166
+#: locale/ipp-strings.c:3204
 msgid "printer-state-reasons.interpreter-complex-page-encountered"
 msgstr ""
 
 #. TRANSLATORS: Interpreter Memory Decrease
-#: locale/ipp-strings.c:3168
+#: locale/ipp-strings.c:3206
 msgid "printer-state-reasons.interpreter-memory-decrease"
 msgstr ""
 
 #. TRANSLATORS: Interpreter Memory Increase
-#: locale/ipp-strings.c:3170
+#: locale/ipp-strings.c:3208
 msgid "printer-state-reasons.interpreter-memory-increase"
 msgstr ""
 
 #. TRANSLATORS: Interpreter Resource Added
-#: locale/ipp-strings.c:3172
+#: locale/ipp-strings.c:3210
 msgid "printer-state-reasons.interpreter-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Interpreter Resource Deleted
-#: locale/ipp-strings.c:3174
+#: locale/ipp-strings.c:3212
 msgid "printer-state-reasons.interpreter-resource-deleted"
 msgstr ""
 
 #. TRANSLATORS: Printer resource unavailable
-#: locale/ipp-strings.c:3176
+#: locale/ipp-strings.c:3214
 msgid "printer-state-reasons.interpreter-resource-unavailable"
 msgstr ""
 
 #. TRANSLATORS: Lamp At End of Life
-#: locale/ipp-strings.c:3178
+#: locale/ipp-strings.c:3216
 msgid "printer-state-reasons.lamp-at-eol"
 msgstr ""
 
 #. TRANSLATORS: Lamp Failure
-#: locale/ipp-strings.c:3180
+#: locale/ipp-strings.c:3218
 msgid "printer-state-reasons.lamp-failure"
 msgstr ""
 
 #. TRANSLATORS: Lamp Near End of Life
-#: locale/ipp-strings.c:3182
+#: locale/ipp-strings.c:3220
 msgid "printer-state-reasons.lamp-near-eol"
 msgstr ""
 
 #. TRANSLATORS: Laser At End of Life
-#: locale/ipp-strings.c:3184
+#: locale/ipp-strings.c:3222
 msgid "printer-state-reasons.laser-at-eol"
 msgstr ""
 
 #. TRANSLATORS: Laser Failure
-#: locale/ipp-strings.c:3186
+#: locale/ipp-strings.c:3224
 msgid "printer-state-reasons.laser-failure"
 msgstr ""
 
 #. TRANSLATORS: Laser Near End of Life
-#: locale/ipp-strings.c:3188
+#: locale/ipp-strings.c:3226
 msgid "printer-state-reasons.laser-near-eol"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Added
-#: locale/ipp-strings.c:3190
+#: locale/ipp-strings.c:3228
 msgid "printer-state-reasons.make-envelope-added"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Almost Empty
-#: locale/ipp-strings.c:3192
+#: locale/ipp-strings.c:3230
 msgid "printer-state-reasons.make-envelope-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Almost Full
-#: locale/ipp-strings.c:3194
+#: locale/ipp-strings.c:3232
 msgid "printer-state-reasons.make-envelope-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker At Limit
-#: locale/ipp-strings.c:3196
+#: locale/ipp-strings.c:3234
 msgid "printer-state-reasons.make-envelope-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Closed
-#: locale/ipp-strings.c:3198
+#: locale/ipp-strings.c:3236
 msgid "printer-state-reasons.make-envelope-closed"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Configuration Change
-#: locale/ipp-strings.c:3200
+#: locale/ipp-strings.c:3238
 msgid "printer-state-reasons.make-envelope-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Cover Closed
-#: locale/ipp-strings.c:3202
+#: locale/ipp-strings.c:3240
 msgid "printer-state-reasons.make-envelope-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Cover Open
-#: locale/ipp-strings.c:3204
+#: locale/ipp-strings.c:3242
 msgid "printer-state-reasons.make-envelope-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Empty
-#: locale/ipp-strings.c:3206
+#: locale/ipp-strings.c:3244
 msgid "printer-state-reasons.make-envelope-empty"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Full
-#: locale/ipp-strings.c:3208
+#: locale/ipp-strings.c:3246
 msgid "printer-state-reasons.make-envelope-full"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Interlock Closed
-#: locale/ipp-strings.c:3210
+#: locale/ipp-strings.c:3248
 msgid "printer-state-reasons.make-envelope-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Interlock Open
-#: locale/ipp-strings.c:3212
+#: locale/ipp-strings.c:3250
 msgid "printer-state-reasons.make-envelope-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Jam
-#: locale/ipp-strings.c:3214
+#: locale/ipp-strings.c:3252
 msgid "printer-state-reasons.make-envelope-jam"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Life Almost Over
-#: locale/ipp-strings.c:3216
+#: locale/ipp-strings.c:3254
 msgid "printer-state-reasons.make-envelope-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Life Over
-#: locale/ipp-strings.c:3218
+#: locale/ipp-strings.c:3256
 msgid "printer-state-reasons.make-envelope-life-over"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Memory Exhausted
-#: locale/ipp-strings.c:3220
+#: locale/ipp-strings.c:3258
 msgid "printer-state-reasons.make-envelope-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Missing
-#: locale/ipp-strings.c:3222
+#: locale/ipp-strings.c:3260
 msgid "printer-state-reasons.make-envelope-missing"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Motor Failure
-#: locale/ipp-strings.c:3224
+#: locale/ipp-strings.c:3262
 msgid "printer-state-reasons.make-envelope-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Near Limit
-#: locale/ipp-strings.c:3226
+#: locale/ipp-strings.c:3264
 msgid "printer-state-reasons.make-envelope-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Offline
-#: locale/ipp-strings.c:3228
+#: locale/ipp-strings.c:3266
 msgid "printer-state-reasons.make-envelope-offline"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Opened
-#: locale/ipp-strings.c:3230
+#: locale/ipp-strings.c:3268
 msgid "printer-state-reasons.make-envelope-opened"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Over Temperature
-#: locale/ipp-strings.c:3232
+#: locale/ipp-strings.c:3270
 msgid "printer-state-reasons.make-envelope-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Power Saver
-#: locale/ipp-strings.c:3234
+#: locale/ipp-strings.c:3272
 msgid "printer-state-reasons.make-envelope-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Recoverable Failure
-#: locale/ipp-strings.c:3236
+#: locale/ipp-strings.c:3274
 msgid "printer-state-reasons.make-envelope-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Recoverable Storage
-#: locale/ipp-strings.c:3238
+#: locale/ipp-strings.c:3276
 msgid "printer-state-reasons.make-envelope-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Removed
-#: locale/ipp-strings.c:3240
+#: locale/ipp-strings.c:3278
 msgid "printer-state-reasons.make-envelope-removed"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Resource Added
-#: locale/ipp-strings.c:3242
+#: locale/ipp-strings.c:3280
 msgid "printer-state-reasons.make-envelope-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Resource Removed
-#: locale/ipp-strings.c:3244
+#: locale/ipp-strings.c:3282
 msgid "printer-state-reasons.make-envelope-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Thermistor Failure
-#: locale/ipp-strings.c:3246
+#: locale/ipp-strings.c:3284
 msgid "printer-state-reasons.make-envelope-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Timing Failure
-#: locale/ipp-strings.c:3248
+#: locale/ipp-strings.c:3286
 msgid "printer-state-reasons.make-envelope-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Turned Off
-#: locale/ipp-strings.c:3250
+#: locale/ipp-strings.c:3288
 msgid "printer-state-reasons.make-envelope-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Turned On
-#: locale/ipp-strings.c:3252
+#: locale/ipp-strings.c:3290
 msgid "printer-state-reasons.make-envelope-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Under Temperature
-#: locale/ipp-strings.c:3254
+#: locale/ipp-strings.c:3292
 msgid "printer-state-reasons.make-envelope-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Unrecoverable Failure
-#: locale/ipp-strings.c:3256
+#: locale/ipp-strings.c:3294
 msgid "printer-state-reasons.make-envelope-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Unrecoverable Storage Error
-#: locale/ipp-strings.c:3258
+#: locale/ipp-strings.c:3296
 msgid "printer-state-reasons.make-envelope-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Envelope Maker Warming Up
-#: locale/ipp-strings.c:3260
+#: locale/ipp-strings.c:3298
 msgid "printer-state-reasons.make-envelope-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Marker Adjusting Print Quality
-#: locale/ipp-strings.c:3262
+#: locale/ipp-strings.c:3300
 msgid "printer-state-reasons.marker-adjusting-print-quality"
 msgstr ""
 
 #. TRANSLATORS: Marker Cleaner Missing
-#: locale/ipp-strings.c:3264
+#: locale/ipp-strings.c:3302
 msgid "printer-state-reasons.marker-cleaner-missing"
 msgstr ""
 
 #. TRANSLATORS: Marker Developer Almost Empty
-#: locale/ipp-strings.c:3266
+#: locale/ipp-strings.c:3304
 msgid "printer-state-reasons.marker-developer-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Marker Developer Empty
-#: locale/ipp-strings.c:3268
+#: locale/ipp-strings.c:3306
 msgid "printer-state-reasons.marker-developer-empty"
 msgstr ""
 
 #. TRANSLATORS: Marker Developer Missing
-#: locale/ipp-strings.c:3270
+#: locale/ipp-strings.c:3308
 msgid "printer-state-reasons.marker-developer-missing"
 msgstr ""
 
 #. TRANSLATORS: Marker Fuser Missing
-#: locale/ipp-strings.c:3272
+#: locale/ipp-strings.c:3310
 msgid "printer-state-reasons.marker-fuser-missing"
 msgstr ""
 
 #. TRANSLATORS: Marker Fuser Thermistor Failure
-#: locale/ipp-strings.c:3274
+#: locale/ipp-strings.c:3312
 msgid "printer-state-reasons.marker-fuser-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Marker Fuser Timing Failure
-#: locale/ipp-strings.c:3276
+#: locale/ipp-strings.c:3314
 msgid "printer-state-reasons.marker-fuser-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Marker Ink Almost Empty
-#: locale/ipp-strings.c:3278
+#: locale/ipp-strings.c:3316
 msgid "printer-state-reasons.marker-ink-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Marker Ink Empty
-#: locale/ipp-strings.c:3280
+#: locale/ipp-strings.c:3318
 msgid "printer-state-reasons.marker-ink-empty"
 msgstr ""
 
 #. TRANSLATORS: Marker Ink Missing
-#: locale/ipp-strings.c:3282
+#: locale/ipp-strings.c:3320
 msgid "printer-state-reasons.marker-ink-missing"
 msgstr ""
 
 #. TRANSLATORS: Marker Opc Missing
-#: locale/ipp-strings.c:3284
+#: locale/ipp-strings.c:3322
 msgid "printer-state-reasons.marker-opc-missing"
 msgstr ""
 
 #. TRANSLATORS: Marker Print Ribbon Almost Empty
-#: locale/ipp-strings.c:3286
+#: locale/ipp-strings.c:3324
 msgid "printer-state-reasons.marker-print-ribbon-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Marker Print Ribbon Empty
-#: locale/ipp-strings.c:3288
+#: locale/ipp-strings.c:3326
 msgid "printer-state-reasons.marker-print-ribbon-empty"
 msgstr ""
 
 #. TRANSLATORS: Marker Print Ribbon Missing
-#: locale/ipp-strings.c:3290
+#: locale/ipp-strings.c:3328
 msgid "printer-state-reasons.marker-print-ribbon-missing"
 msgstr ""
 
 #. TRANSLATORS: Marker Supply Almost Empty
-#: locale/ipp-strings.c:3292
+#: locale/ipp-strings.c:3330
 msgid "printer-state-reasons.marker-supply-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Ink/toner empty
-#: locale/ipp-strings.c:3294
+#: locale/ipp-strings.c:3332
 msgid "printer-state-reasons.marker-supply-empty"
 msgstr ""
 
 #. TRANSLATORS: Ink/toner low
-#: locale/ipp-strings.c:3296
+#: locale/ipp-strings.c:3334
 msgid "printer-state-reasons.marker-supply-low"
 msgstr ""
 
 #. TRANSLATORS: Marker Supply Missing
-#: locale/ipp-strings.c:3298
+#: locale/ipp-strings.c:3336
 msgid "printer-state-reasons.marker-supply-missing"
 msgstr ""
 
 #. TRANSLATORS: Marker Toner Cartridge Missing
-#: locale/ipp-strings.c:3300
+#: locale/ipp-strings.c:3338
 msgid "printer-state-reasons.marker-toner-cartridge-missing"
 msgstr ""
 
 #. TRANSLATORS: Marker Toner Missing
-#: locale/ipp-strings.c:3302
+#: locale/ipp-strings.c:3340
 msgid "printer-state-reasons.marker-toner-missing"
 msgstr ""
 
 #. TRANSLATORS: Ink/toner waste bin almost full
-#: locale/ipp-strings.c:3304
+#: locale/ipp-strings.c:3342
 msgid "printer-state-reasons.marker-waste-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Ink/toner waste bin full
-#: locale/ipp-strings.c:3306
+#: locale/ipp-strings.c:3344
 msgid "printer-state-reasons.marker-waste-full"
 msgstr ""
 
 #. TRANSLATORS: Marker Waste Ink Receptacle Almost Full
-#: locale/ipp-strings.c:3308
+#: locale/ipp-strings.c:3346
 msgid "printer-state-reasons.marker-waste-ink-receptacle-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Marker Waste Ink Receptacle Full
-#: locale/ipp-strings.c:3310
+#: locale/ipp-strings.c:3348
 msgid "printer-state-reasons.marker-waste-ink-receptacle-full"
 msgstr ""
 
 #. TRANSLATORS: Marker Waste Ink Receptacle Missing
-#: locale/ipp-strings.c:3312
+#: locale/ipp-strings.c:3350
 msgid "printer-state-reasons.marker-waste-ink-receptacle-missing"
 msgstr ""
 
 #. TRANSLATORS: Marker Waste Missing
-#: locale/ipp-strings.c:3314
+#: locale/ipp-strings.c:3352
 msgid "printer-state-reasons.marker-waste-missing"
 msgstr ""
 
 #. TRANSLATORS: Marker Waste Toner Receptacle Almost Full
-#: locale/ipp-strings.c:3316
+#: locale/ipp-strings.c:3354
 msgid "printer-state-reasons.marker-waste-toner-receptacle-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Marker Waste Toner Receptacle Full
-#: locale/ipp-strings.c:3318
+#: locale/ipp-strings.c:3356
 msgid "printer-state-reasons.marker-waste-toner-receptacle-full"
 msgstr ""
 
 #. TRANSLATORS: Marker Waste Toner Receptacle Missing
-#: locale/ipp-strings.c:3320
+#: locale/ipp-strings.c:3358
 msgid "printer-state-reasons.marker-waste-toner-receptacle-missing"
 msgstr ""
 
 #. TRANSLATORS: Material Empty
-#: locale/ipp-strings.c:3322
+#: locale/ipp-strings.c:3360
 msgid "printer-state-reasons.material-empty"
 msgstr ""
 
 #. TRANSLATORS: Material Low
-#: locale/ipp-strings.c:3324
+#: locale/ipp-strings.c:3362
 msgid "printer-state-reasons.material-low"
 msgstr ""
 
 #. TRANSLATORS: Material Needed
-#: locale/ipp-strings.c:3326
+#: locale/ipp-strings.c:3364
 msgid "printer-state-reasons.material-needed"
 msgstr ""
 
 #. TRANSLATORS: Media Drying
-#: locale/ipp-strings.c:3328
+#: locale/ipp-strings.c:3366
 msgid "printer-state-reasons.media-drying"
 msgstr ""
 
 #. TRANSLATORS: Paper tray is empty
-#: locale/ipp-strings.c:3330
+#: locale/ipp-strings.c:3368
 msgid "printer-state-reasons.media-empty"
 msgstr ""
 
 #. TRANSLATORS: Paper jam
-#: locale/ipp-strings.c:3332
+#: locale/ipp-strings.c:3370
 msgid "printer-state-reasons.media-jam"
 msgstr ""
 
 #. TRANSLATORS: Paper tray is almost empty
-#: locale/ipp-strings.c:3334
+#: locale/ipp-strings.c:3372
 msgid "printer-state-reasons.media-low"
 msgstr ""
 
 #. TRANSLATORS: Load paper
-#: locale/ipp-strings.c:3336
+#: locale/ipp-strings.c:3374
 msgid "printer-state-reasons.media-needed"
 msgstr ""
 
 #. TRANSLATORS: Media Path Cannot Do 2-Sided Printing
-#: locale/ipp-strings.c:3338
+#: locale/ipp-strings.c:3376
 msgid "printer-state-reasons.media-path-cannot-duplex-media-selected"
 msgstr ""
 
 #. TRANSLATORS: Media Path Failure
-#: locale/ipp-strings.c:3340
+#: locale/ipp-strings.c:3378
 msgid "printer-state-reasons.media-path-failure"
 msgstr ""
 
 #. TRANSLATORS: Media Path Input Empty
-#: locale/ipp-strings.c:3342
+#: locale/ipp-strings.c:3380
 msgid "printer-state-reasons.media-path-input-empty"
 msgstr ""
 
 #. TRANSLATORS: Media Path Input Feed Error
-#: locale/ipp-strings.c:3344
+#: locale/ipp-strings.c:3382
 msgid "printer-state-reasons.media-path-input-feed-error"
 msgstr ""
 
 #. TRANSLATORS: Media Path Input Jam
-#: locale/ipp-strings.c:3346
+#: locale/ipp-strings.c:3384
 msgid "printer-state-reasons.media-path-input-jam"
 msgstr ""
 
 #. TRANSLATORS: Media Path Input Request
-#: locale/ipp-strings.c:3348
+#: locale/ipp-strings.c:3386
 msgid "printer-state-reasons.media-path-input-request"
 msgstr ""
 
 #. TRANSLATORS: Media Path Jam
-#: locale/ipp-strings.c:3350
+#: locale/ipp-strings.c:3388
 msgid "printer-state-reasons.media-path-jam"
 msgstr ""
 
 #. TRANSLATORS: Media Path Media Tray Almost Full
-#: locale/ipp-strings.c:3352
+#: locale/ipp-strings.c:3390
 msgid "printer-state-reasons.media-path-media-tray-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Media Path Media Tray Full
-#: locale/ipp-strings.c:3354
+#: locale/ipp-strings.c:3392
 msgid "printer-state-reasons.media-path-media-tray-full"
 msgstr ""
 
 #. TRANSLATORS: Media Path Media Tray Missing
-#: locale/ipp-strings.c:3356
+#: locale/ipp-strings.c:3394
 msgid "printer-state-reasons.media-path-media-tray-missing"
 msgstr ""
 
 #. TRANSLATORS: Media Path Output Feed Error
-#: locale/ipp-strings.c:3358
+#: locale/ipp-strings.c:3396
 msgid "printer-state-reasons.media-path-output-feed-error"
 msgstr ""
 
 #. TRANSLATORS: Media Path Output Full
-#: locale/ipp-strings.c:3360
+#: locale/ipp-strings.c:3398
 msgid "printer-state-reasons.media-path-output-full"
 msgstr ""
 
 #. TRANSLATORS: Media Path Output Jam
-#: locale/ipp-strings.c:3362
+#: locale/ipp-strings.c:3400
 msgid "printer-state-reasons.media-path-output-jam"
 msgstr ""
 
 #. TRANSLATORS: Media Path Pick Roller Failure
-#: locale/ipp-strings.c:3364
+#: locale/ipp-strings.c:3402
 msgid "printer-state-reasons.media-path-pick-roller-failure"
 msgstr ""
 
 #. TRANSLATORS: Media Path Pick Roller Life Over
-#: locale/ipp-strings.c:3366
+#: locale/ipp-strings.c:3404
 msgid "printer-state-reasons.media-path-pick-roller-life-over"
 msgstr ""
 
 #. TRANSLATORS: Media Path Pick Roller Life Warn
-#: locale/ipp-strings.c:3368
+#: locale/ipp-strings.c:3406
 msgid "printer-state-reasons.media-path-pick-roller-life-warn"
 msgstr ""
 
 #. TRANSLATORS: Media Path Pick Roller Missing
-#: locale/ipp-strings.c:3370
+#: locale/ipp-strings.c:3408
 msgid "printer-state-reasons.media-path-pick-roller-missing"
 msgstr ""
 
 #. TRANSLATORS: Motor Failure
-#: locale/ipp-strings.c:3372
+#: locale/ipp-strings.c:3410
 msgid "printer-state-reasons.motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Printer going offline
-#: locale/ipp-strings.c:3374
+#: locale/ipp-strings.c:3412
 msgid "printer-state-reasons.moving-to-paused"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:3376
+#: locale/ipp-strings.c:3414
 msgid "printer-state-reasons.none"
 msgstr ""
 
 #. TRANSLATORS: Optical Photoconductor Life Over
-#: locale/ipp-strings.c:3378
+#: locale/ipp-strings.c:3416
 msgid "printer-state-reasons.opc-life-over"
 msgstr ""
 
 #. TRANSLATORS: OPC almost at end-of-life
-#: locale/ipp-strings.c:3380
+#: locale/ipp-strings.c:3418
 msgid "printer-state-reasons.opc-near-eol"
 msgstr ""
 
 #. TRANSLATORS: Check the printer for errors
-#: locale/ipp-strings.c:3382
+#: locale/ipp-strings.c:3420
 msgid "printer-state-reasons.other"
 msgstr ""
 
 #. TRANSLATORS: Output bin is almost full
-#: locale/ipp-strings.c:3384
+#: locale/ipp-strings.c:3422
 msgid "printer-state-reasons.output-area-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Output bin is full
-#: locale/ipp-strings.c:3386
+#: locale/ipp-strings.c:3424
 msgid "printer-state-reasons.output-area-full"
 msgstr ""
 
 #. TRANSLATORS: Output Mailbox Select Failure
-#: locale/ipp-strings.c:3388
+#: locale/ipp-strings.c:3426
 msgid "printer-state-reasons.output-mailbox-select-failure"
 msgstr ""
 
 #. TRANSLATORS: Output Media Tray Failure
-#: locale/ipp-strings.c:3390
+#: locale/ipp-strings.c:3428
 msgid "printer-state-reasons.output-media-tray-failure"
 msgstr ""
 
 #. TRANSLATORS: Output Media Tray Feed Error
-#: locale/ipp-strings.c:3392
+#: locale/ipp-strings.c:3430
 msgid "printer-state-reasons.output-media-tray-feed-error"
 msgstr ""
 
 #. TRANSLATORS: Output Media Tray Jam
-#: locale/ipp-strings.c:3394
+#: locale/ipp-strings.c:3432
 msgid "printer-state-reasons.output-media-tray-jam"
 msgstr ""
 
 #. TRANSLATORS: Output tray is missing
-#: locale/ipp-strings.c:3396
+#: locale/ipp-strings.c:3434
 msgid "printer-state-reasons.output-tray-missing"
 msgstr ""
 
 #. TRANSLATORS: Paused
-#: locale/ipp-strings.c:3398
+#: locale/ipp-strings.c:3436
 msgid "printer-state-reasons.paused"
 msgstr ""
 
 #. TRANSLATORS: Perforater Added
-#: locale/ipp-strings.c:3400
+#: locale/ipp-strings.c:3438
 msgid "printer-state-reasons.perforater-added"
 msgstr ""
 
 #. TRANSLATORS: Perforater Almost Empty
-#: locale/ipp-strings.c:3402
+#: locale/ipp-strings.c:3440
 msgid "printer-state-reasons.perforater-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Perforater Almost Full
-#: locale/ipp-strings.c:3404
+#: locale/ipp-strings.c:3442
 msgid "printer-state-reasons.perforater-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Perforater At Limit
-#: locale/ipp-strings.c:3406
+#: locale/ipp-strings.c:3444
 msgid "printer-state-reasons.perforater-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Perforater Closed
-#: locale/ipp-strings.c:3408
+#: locale/ipp-strings.c:3446
 msgid "printer-state-reasons.perforater-closed"
 msgstr ""
 
 #. TRANSLATORS: Perforater Configuration Change
-#: locale/ipp-strings.c:3410
+#: locale/ipp-strings.c:3448
 msgid "printer-state-reasons.perforater-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Perforater Cover Closed
-#: locale/ipp-strings.c:3412
+#: locale/ipp-strings.c:3450
 msgid "printer-state-reasons.perforater-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Perforater Cover Open
-#: locale/ipp-strings.c:3414
+#: locale/ipp-strings.c:3452
 msgid "printer-state-reasons.perforater-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Perforater Empty
-#: locale/ipp-strings.c:3416
+#: locale/ipp-strings.c:3454
 msgid "printer-state-reasons.perforater-empty"
 msgstr ""
 
 #. TRANSLATORS: Perforater Full
-#: locale/ipp-strings.c:3418
+#: locale/ipp-strings.c:3456
 msgid "printer-state-reasons.perforater-full"
 msgstr ""
 
 #. TRANSLATORS: Perforater Interlock Closed
-#: locale/ipp-strings.c:3420
+#: locale/ipp-strings.c:3458
 msgid "printer-state-reasons.perforater-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Perforater Interlock Open
-#: locale/ipp-strings.c:3422
+#: locale/ipp-strings.c:3460
 msgid "printer-state-reasons.perforater-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Perforater Jam
-#: locale/ipp-strings.c:3424
+#: locale/ipp-strings.c:3462
 msgid "printer-state-reasons.perforater-jam"
 msgstr ""
 
 #. TRANSLATORS: Perforater Life Almost Over
-#: locale/ipp-strings.c:3426
+#: locale/ipp-strings.c:3464
 msgid "printer-state-reasons.perforater-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Perforater Life Over
-#: locale/ipp-strings.c:3428
+#: locale/ipp-strings.c:3466
 msgid "printer-state-reasons.perforater-life-over"
 msgstr ""
 
 #. TRANSLATORS: Perforater Memory Exhausted
-#: locale/ipp-strings.c:3430
+#: locale/ipp-strings.c:3468
 msgid "printer-state-reasons.perforater-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Perforater Missing
-#: locale/ipp-strings.c:3432
+#: locale/ipp-strings.c:3470
 msgid "printer-state-reasons.perforater-missing"
 msgstr ""
 
 #. TRANSLATORS: Perforater Motor Failure
-#: locale/ipp-strings.c:3434
+#: locale/ipp-strings.c:3472
 msgid "printer-state-reasons.perforater-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Perforater Near Limit
-#: locale/ipp-strings.c:3436
+#: locale/ipp-strings.c:3474
 msgid "printer-state-reasons.perforater-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Perforater Offline
-#: locale/ipp-strings.c:3438
+#: locale/ipp-strings.c:3476
 msgid "printer-state-reasons.perforater-offline"
 msgstr ""
 
 #. TRANSLATORS: Perforater Opened
-#: locale/ipp-strings.c:3440
+#: locale/ipp-strings.c:3478
 msgid "printer-state-reasons.perforater-opened"
 msgstr ""
 
 #. TRANSLATORS: Perforater Over Temperature
-#: locale/ipp-strings.c:3442
+#: locale/ipp-strings.c:3480
 msgid "printer-state-reasons.perforater-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Perforater Power Saver
-#: locale/ipp-strings.c:3444
+#: locale/ipp-strings.c:3482
 msgid "printer-state-reasons.perforater-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Perforater Recoverable Failure
-#: locale/ipp-strings.c:3446
+#: locale/ipp-strings.c:3484
 msgid "printer-state-reasons.perforater-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Perforater Recoverable Storage
-#: locale/ipp-strings.c:3448
+#: locale/ipp-strings.c:3486
 msgid "printer-state-reasons.perforater-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Perforater Removed
-#: locale/ipp-strings.c:3450
+#: locale/ipp-strings.c:3488
 msgid "printer-state-reasons.perforater-removed"
 msgstr ""
 
 #. TRANSLATORS: Perforater Resource Added
-#: locale/ipp-strings.c:3452
+#: locale/ipp-strings.c:3490
 msgid "printer-state-reasons.perforater-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Perforater Resource Removed
-#: locale/ipp-strings.c:3454
+#: locale/ipp-strings.c:3492
 msgid "printer-state-reasons.perforater-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Perforater Thermistor Failure
-#: locale/ipp-strings.c:3456
+#: locale/ipp-strings.c:3494
 msgid "printer-state-reasons.perforater-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Perforater Timing Failure
-#: locale/ipp-strings.c:3458
+#: locale/ipp-strings.c:3496
 msgid "printer-state-reasons.perforater-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Perforater Turned Off
-#: locale/ipp-strings.c:3460
+#: locale/ipp-strings.c:3498
 msgid "printer-state-reasons.perforater-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Perforater Turned On
-#: locale/ipp-strings.c:3462
+#: locale/ipp-strings.c:3500
 msgid "printer-state-reasons.perforater-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Perforater Under Temperature
-#: locale/ipp-strings.c:3464
+#: locale/ipp-strings.c:3502
 msgid "printer-state-reasons.perforater-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Perforater Unrecoverable Failure
-#: locale/ipp-strings.c:3466
+#: locale/ipp-strings.c:3504
 msgid "printer-state-reasons.perforater-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Perforater Unrecoverable Storage Error
-#: locale/ipp-strings.c:3468
+#: locale/ipp-strings.c:3506
 msgid "printer-state-reasons.perforater-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Perforater Warming Up
-#: locale/ipp-strings.c:3470
+#: locale/ipp-strings.c:3508
 msgid "printer-state-reasons.perforater-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Platform Cooling
-#: locale/ipp-strings.c:3472
+#: locale/ipp-strings.c:3510
 msgid "printer-state-reasons.platform-cooling"
 msgstr ""
 
 #. TRANSLATORS: Platform Failure
-#: locale/ipp-strings.c:3474
+#: locale/ipp-strings.c:3512
 msgid "printer-state-reasons.platform-failure"
 msgstr ""
 
 #. TRANSLATORS: Platform Heating
-#: locale/ipp-strings.c:3476
+#: locale/ipp-strings.c:3514
 msgid "printer-state-reasons.platform-heating"
 msgstr ""
 
 #. TRANSLATORS: Platform Temperature High
-#: locale/ipp-strings.c:3478
+#: locale/ipp-strings.c:3516
 msgid "printer-state-reasons.platform-temperature-high"
 msgstr ""
 
 #. TRANSLATORS: Platform Temperature Low
-#: locale/ipp-strings.c:3480
+#: locale/ipp-strings.c:3518
 msgid "printer-state-reasons.platform-temperature-low"
 msgstr ""
 
 #. TRANSLATORS: Power Down
-#: locale/ipp-strings.c:3482
+#: locale/ipp-strings.c:3520
 msgid "printer-state-reasons.power-down"
 msgstr ""
 
 #. TRANSLATORS: Power Up
-#: locale/ipp-strings.c:3484
+#: locale/ipp-strings.c:3522
 msgid "printer-state-reasons.power-up"
 msgstr ""
 
 #. TRANSLATORS: Printer Reset Manually
-#: locale/ipp-strings.c:3486
+#: locale/ipp-strings.c:3524
 msgid "printer-state-reasons.printer-manual-reset"
 msgstr ""
 
 #. TRANSLATORS: Printer Reset Remotely
-#: locale/ipp-strings.c:3488
+#: locale/ipp-strings.c:3526
 msgid "printer-state-reasons.printer-nms-reset"
 msgstr ""
 
 #. TRANSLATORS: Printer Ready To Print
-#: locale/ipp-strings.c:3490
+#: locale/ipp-strings.c:3528
 msgid "printer-state-reasons.printer-ready-to-print"
 msgstr ""
 
 #. TRANSLATORS: Puncher Added
-#: locale/ipp-strings.c:3492
+#: locale/ipp-strings.c:3530
 msgid "printer-state-reasons.puncher-added"
 msgstr ""
 
 #. TRANSLATORS: Puncher Almost Empty
-#: locale/ipp-strings.c:3494
+#: locale/ipp-strings.c:3532
 msgid "printer-state-reasons.puncher-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Puncher Almost Full
-#: locale/ipp-strings.c:3496
+#: locale/ipp-strings.c:3534
 msgid "printer-state-reasons.puncher-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Puncher At Limit
-#: locale/ipp-strings.c:3498
+#: locale/ipp-strings.c:3536
 msgid "printer-state-reasons.puncher-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Puncher Closed
-#: locale/ipp-strings.c:3500
+#: locale/ipp-strings.c:3538
 msgid "printer-state-reasons.puncher-closed"
 msgstr ""
 
 #. TRANSLATORS: Puncher Configuration Change
-#: locale/ipp-strings.c:3502
+#: locale/ipp-strings.c:3540
 msgid "printer-state-reasons.puncher-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Puncher Cover Closed
-#: locale/ipp-strings.c:3504
+#: locale/ipp-strings.c:3542
 msgid "printer-state-reasons.puncher-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Puncher Cover Open
-#: locale/ipp-strings.c:3506
+#: locale/ipp-strings.c:3544
 msgid "printer-state-reasons.puncher-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Puncher Empty
-#: locale/ipp-strings.c:3508
+#: locale/ipp-strings.c:3546
 msgid "printer-state-reasons.puncher-empty"
 msgstr ""
 
 #. TRANSLATORS: Puncher Full
-#: locale/ipp-strings.c:3510
+#: locale/ipp-strings.c:3548
 msgid "printer-state-reasons.puncher-full"
 msgstr ""
 
 #. TRANSLATORS: Puncher Interlock Closed
-#: locale/ipp-strings.c:3512
+#: locale/ipp-strings.c:3550
 msgid "printer-state-reasons.puncher-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Puncher Interlock Open
-#: locale/ipp-strings.c:3514
+#: locale/ipp-strings.c:3552
 msgid "printer-state-reasons.puncher-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Puncher Jam
-#: locale/ipp-strings.c:3516
+#: locale/ipp-strings.c:3554
 msgid "printer-state-reasons.puncher-jam"
 msgstr ""
 
 #. TRANSLATORS: Puncher Life Almost Over
-#: locale/ipp-strings.c:3518
+#: locale/ipp-strings.c:3556
 msgid "printer-state-reasons.puncher-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Puncher Life Over
-#: locale/ipp-strings.c:3520
+#: locale/ipp-strings.c:3558
 msgid "printer-state-reasons.puncher-life-over"
 msgstr ""
 
 #. TRANSLATORS: Puncher Memory Exhausted
-#: locale/ipp-strings.c:3522
+#: locale/ipp-strings.c:3560
 msgid "printer-state-reasons.puncher-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Puncher Missing
-#: locale/ipp-strings.c:3524
+#: locale/ipp-strings.c:3562
 msgid "printer-state-reasons.puncher-missing"
 msgstr ""
 
 #. TRANSLATORS: Puncher Motor Failure
-#: locale/ipp-strings.c:3526
+#: locale/ipp-strings.c:3564
 msgid "printer-state-reasons.puncher-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Puncher Near Limit
-#: locale/ipp-strings.c:3528
+#: locale/ipp-strings.c:3566
 msgid "printer-state-reasons.puncher-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Puncher Offline
-#: locale/ipp-strings.c:3530
+#: locale/ipp-strings.c:3568
 msgid "printer-state-reasons.puncher-offline"
 msgstr ""
 
 #. TRANSLATORS: Puncher Opened
-#: locale/ipp-strings.c:3532
+#: locale/ipp-strings.c:3570
 msgid "printer-state-reasons.puncher-opened"
 msgstr ""
 
 #. TRANSLATORS: Puncher Over Temperature
-#: locale/ipp-strings.c:3534
+#: locale/ipp-strings.c:3572
 msgid "printer-state-reasons.puncher-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Puncher Power Saver
-#: locale/ipp-strings.c:3536
+#: locale/ipp-strings.c:3574
 msgid "printer-state-reasons.puncher-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Puncher Recoverable Failure
-#: locale/ipp-strings.c:3538
+#: locale/ipp-strings.c:3576
 msgid "printer-state-reasons.puncher-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Puncher Recoverable Storage
-#: locale/ipp-strings.c:3540
+#: locale/ipp-strings.c:3578
 msgid "printer-state-reasons.puncher-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Puncher Removed
-#: locale/ipp-strings.c:3542
+#: locale/ipp-strings.c:3580
 msgid "printer-state-reasons.puncher-removed"
 msgstr ""
 
 #. TRANSLATORS: Puncher Resource Added
-#: locale/ipp-strings.c:3544
+#: locale/ipp-strings.c:3582
 msgid "printer-state-reasons.puncher-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Puncher Resource Removed
-#: locale/ipp-strings.c:3546
+#: locale/ipp-strings.c:3584
 msgid "printer-state-reasons.puncher-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Puncher Thermistor Failure
-#: locale/ipp-strings.c:3548
+#: locale/ipp-strings.c:3586
 msgid "printer-state-reasons.puncher-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Puncher Timing Failure
-#: locale/ipp-strings.c:3550
+#: locale/ipp-strings.c:3588
 msgid "printer-state-reasons.puncher-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Puncher Turned Off
-#: locale/ipp-strings.c:3552
+#: locale/ipp-strings.c:3590
 msgid "printer-state-reasons.puncher-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Puncher Turned On
-#: locale/ipp-strings.c:3554
+#: locale/ipp-strings.c:3592
 msgid "printer-state-reasons.puncher-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Puncher Under Temperature
-#: locale/ipp-strings.c:3556
+#: locale/ipp-strings.c:3594
 msgid "printer-state-reasons.puncher-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Puncher Unrecoverable Failure
-#: locale/ipp-strings.c:3558
+#: locale/ipp-strings.c:3596
 msgid "printer-state-reasons.puncher-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Puncher Unrecoverable Storage Error
-#: locale/ipp-strings.c:3560
+#: locale/ipp-strings.c:3598
 msgid "printer-state-reasons.puncher-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Puncher Warming Up
-#: locale/ipp-strings.c:3562
+#: locale/ipp-strings.c:3600
 msgid "printer-state-reasons.puncher-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Added
-#: locale/ipp-strings.c:3564
+#: locale/ipp-strings.c:3602
 msgid "printer-state-reasons.separation-cutter-added"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Almost Empty
-#: locale/ipp-strings.c:3566
+#: locale/ipp-strings.c:3604
 msgid "printer-state-reasons.separation-cutter-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Almost Full
-#: locale/ipp-strings.c:3568
+#: locale/ipp-strings.c:3606
 msgid "printer-state-reasons.separation-cutter-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter At Limit
-#: locale/ipp-strings.c:3570
+#: locale/ipp-strings.c:3608
 msgid "printer-state-reasons.separation-cutter-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Closed
-#: locale/ipp-strings.c:3572
+#: locale/ipp-strings.c:3610
 msgid "printer-state-reasons.separation-cutter-closed"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Configuration Change
-#: locale/ipp-strings.c:3574
+#: locale/ipp-strings.c:3612
 msgid "printer-state-reasons.separation-cutter-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Cover Closed
-#: locale/ipp-strings.c:3576
+#: locale/ipp-strings.c:3614
 msgid "printer-state-reasons.separation-cutter-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Cover Open
-#: locale/ipp-strings.c:3578
+#: locale/ipp-strings.c:3616
 msgid "printer-state-reasons.separation-cutter-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Empty
-#: locale/ipp-strings.c:3580
+#: locale/ipp-strings.c:3618
 msgid "printer-state-reasons.separation-cutter-empty"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Full
-#: locale/ipp-strings.c:3582
+#: locale/ipp-strings.c:3620
 msgid "printer-state-reasons.separation-cutter-full"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Interlock Closed
-#: locale/ipp-strings.c:3584
+#: locale/ipp-strings.c:3622
 msgid "printer-state-reasons.separation-cutter-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Interlock Open
-#: locale/ipp-strings.c:3586
+#: locale/ipp-strings.c:3624
 msgid "printer-state-reasons.separation-cutter-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Jam
-#: locale/ipp-strings.c:3588
+#: locale/ipp-strings.c:3626
 msgid "printer-state-reasons.separation-cutter-jam"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Life Almost Over
-#: locale/ipp-strings.c:3590
+#: locale/ipp-strings.c:3628
 msgid "printer-state-reasons.separation-cutter-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Life Over
-#: locale/ipp-strings.c:3592
+#: locale/ipp-strings.c:3630
 msgid "printer-state-reasons.separation-cutter-life-over"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Memory Exhausted
-#: locale/ipp-strings.c:3594
+#: locale/ipp-strings.c:3632
 msgid "printer-state-reasons.separation-cutter-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Missing
-#: locale/ipp-strings.c:3596
+#: locale/ipp-strings.c:3634
 msgid "printer-state-reasons.separation-cutter-missing"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Motor Failure
-#: locale/ipp-strings.c:3598
+#: locale/ipp-strings.c:3636
 msgid "printer-state-reasons.separation-cutter-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Near Limit
-#: locale/ipp-strings.c:3600
+#: locale/ipp-strings.c:3638
 msgid "printer-state-reasons.separation-cutter-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Offline
-#: locale/ipp-strings.c:3602
+#: locale/ipp-strings.c:3640
 msgid "printer-state-reasons.separation-cutter-offline"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Opened
-#: locale/ipp-strings.c:3604
+#: locale/ipp-strings.c:3642
 msgid "printer-state-reasons.separation-cutter-opened"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Over Temperature
-#: locale/ipp-strings.c:3606
+#: locale/ipp-strings.c:3644
 msgid "printer-state-reasons.separation-cutter-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Power Saver
-#: locale/ipp-strings.c:3608
+#: locale/ipp-strings.c:3646
 msgid "printer-state-reasons.separation-cutter-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Recoverable Failure
-#: locale/ipp-strings.c:3610
+#: locale/ipp-strings.c:3648
 msgid "printer-state-reasons.separation-cutter-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Recoverable Storage
-#: locale/ipp-strings.c:3612
+#: locale/ipp-strings.c:3650
 msgid "printer-state-reasons.separation-cutter-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Removed
-#: locale/ipp-strings.c:3614
+#: locale/ipp-strings.c:3652
 msgid "printer-state-reasons.separation-cutter-removed"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Resource Added
-#: locale/ipp-strings.c:3616
+#: locale/ipp-strings.c:3654
 msgid "printer-state-reasons.separation-cutter-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Resource Removed
-#: locale/ipp-strings.c:3618
+#: locale/ipp-strings.c:3656
 msgid "printer-state-reasons.separation-cutter-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Thermistor Failure
-#: locale/ipp-strings.c:3620
+#: locale/ipp-strings.c:3658
 msgid "printer-state-reasons.separation-cutter-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Timing Failure
-#: locale/ipp-strings.c:3622
+#: locale/ipp-strings.c:3660
 msgid "printer-state-reasons.separation-cutter-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Turned Off
-#: locale/ipp-strings.c:3624
+#: locale/ipp-strings.c:3662
 msgid "printer-state-reasons.separation-cutter-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Turned On
-#: locale/ipp-strings.c:3626
+#: locale/ipp-strings.c:3664
 msgid "printer-state-reasons.separation-cutter-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Under Temperature
-#: locale/ipp-strings.c:3628
+#: locale/ipp-strings.c:3666
 msgid "printer-state-reasons.separation-cutter-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Unrecoverable Failure
-#: locale/ipp-strings.c:3630
+#: locale/ipp-strings.c:3668
 msgid "printer-state-reasons.separation-cutter-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Unrecoverable Storage Error
-#: locale/ipp-strings.c:3632
+#: locale/ipp-strings.c:3670
 msgid "printer-state-reasons.separation-cutter-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Separation Cutter Warming Up
-#: locale/ipp-strings.c:3634
+#: locale/ipp-strings.c:3672
 msgid "printer-state-reasons.separation-cutter-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Added
-#: locale/ipp-strings.c:3636
+#: locale/ipp-strings.c:3674
 msgid "printer-state-reasons.sheet-rotator-added"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Almost Empty
-#: locale/ipp-strings.c:3638
+#: locale/ipp-strings.c:3676
 msgid "printer-state-reasons.sheet-rotator-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Almost Full
-#: locale/ipp-strings.c:3640
+#: locale/ipp-strings.c:3678
 msgid "printer-state-reasons.sheet-rotator-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator At Limit
-#: locale/ipp-strings.c:3642
+#: locale/ipp-strings.c:3680
 msgid "printer-state-reasons.sheet-rotator-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Closed
-#: locale/ipp-strings.c:3644
+#: locale/ipp-strings.c:3682
 msgid "printer-state-reasons.sheet-rotator-closed"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Configuration Change
-#: locale/ipp-strings.c:3646
+#: locale/ipp-strings.c:3684
 msgid "printer-state-reasons.sheet-rotator-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Cover Closed
-#: locale/ipp-strings.c:3648
+#: locale/ipp-strings.c:3686
 msgid "printer-state-reasons.sheet-rotator-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Cover Open
-#: locale/ipp-strings.c:3650
+#: locale/ipp-strings.c:3688
 msgid "printer-state-reasons.sheet-rotator-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Empty
-#: locale/ipp-strings.c:3652
+#: locale/ipp-strings.c:3690
 msgid "printer-state-reasons.sheet-rotator-empty"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Full
-#: locale/ipp-strings.c:3654
+#: locale/ipp-strings.c:3692
 msgid "printer-state-reasons.sheet-rotator-full"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Interlock Closed
-#: locale/ipp-strings.c:3656
+#: locale/ipp-strings.c:3694
 msgid "printer-state-reasons.sheet-rotator-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Interlock Open
-#: locale/ipp-strings.c:3658
+#: locale/ipp-strings.c:3696
 msgid "printer-state-reasons.sheet-rotator-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Jam
-#: locale/ipp-strings.c:3660
+#: locale/ipp-strings.c:3698
 msgid "printer-state-reasons.sheet-rotator-jam"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Life Almost Over
-#: locale/ipp-strings.c:3662
+#: locale/ipp-strings.c:3700
 msgid "printer-state-reasons.sheet-rotator-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Life Over
-#: locale/ipp-strings.c:3664
+#: locale/ipp-strings.c:3702
 msgid "printer-state-reasons.sheet-rotator-life-over"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Memory Exhausted
-#: locale/ipp-strings.c:3666
+#: locale/ipp-strings.c:3704
 msgid "printer-state-reasons.sheet-rotator-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Missing
-#: locale/ipp-strings.c:3668
+#: locale/ipp-strings.c:3706
 msgid "printer-state-reasons.sheet-rotator-missing"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Motor Failure
-#: locale/ipp-strings.c:3670
+#: locale/ipp-strings.c:3708
 msgid "printer-state-reasons.sheet-rotator-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Near Limit
-#: locale/ipp-strings.c:3672
+#: locale/ipp-strings.c:3710
 msgid "printer-state-reasons.sheet-rotator-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Offline
-#: locale/ipp-strings.c:3674
+#: locale/ipp-strings.c:3712
 msgid "printer-state-reasons.sheet-rotator-offline"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Opened
-#: locale/ipp-strings.c:3676
+#: locale/ipp-strings.c:3714
 msgid "printer-state-reasons.sheet-rotator-opened"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Over Temperature
-#: locale/ipp-strings.c:3678
+#: locale/ipp-strings.c:3716
 msgid "printer-state-reasons.sheet-rotator-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Power Saver
-#: locale/ipp-strings.c:3680
+#: locale/ipp-strings.c:3718
 msgid "printer-state-reasons.sheet-rotator-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Recoverable Failure
-#: locale/ipp-strings.c:3682
+#: locale/ipp-strings.c:3720
 msgid "printer-state-reasons.sheet-rotator-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Recoverable Storage
-#: locale/ipp-strings.c:3684
+#: locale/ipp-strings.c:3722
 msgid "printer-state-reasons.sheet-rotator-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Removed
-#: locale/ipp-strings.c:3686
+#: locale/ipp-strings.c:3724
 msgid "printer-state-reasons.sheet-rotator-removed"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Resource Added
-#: locale/ipp-strings.c:3688
+#: locale/ipp-strings.c:3726
 msgid "printer-state-reasons.sheet-rotator-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Resource Removed
-#: locale/ipp-strings.c:3690
+#: locale/ipp-strings.c:3728
 msgid "printer-state-reasons.sheet-rotator-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Thermistor Failure
-#: locale/ipp-strings.c:3692
+#: locale/ipp-strings.c:3730
 msgid "printer-state-reasons.sheet-rotator-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Timing Failure
-#: locale/ipp-strings.c:3694
+#: locale/ipp-strings.c:3732
 msgid "printer-state-reasons.sheet-rotator-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Turned Off
-#: locale/ipp-strings.c:3696
+#: locale/ipp-strings.c:3734
 msgid "printer-state-reasons.sheet-rotator-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Turned On
-#: locale/ipp-strings.c:3698
+#: locale/ipp-strings.c:3736
 msgid "printer-state-reasons.sheet-rotator-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Under Temperature
-#: locale/ipp-strings.c:3700
+#: locale/ipp-strings.c:3738
 msgid "printer-state-reasons.sheet-rotator-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Unrecoverable Failure
-#: locale/ipp-strings.c:3702
+#: locale/ipp-strings.c:3740
 msgid "printer-state-reasons.sheet-rotator-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Unrecoverable Storage Error
-#: locale/ipp-strings.c:3704
+#: locale/ipp-strings.c:3742
 msgid "printer-state-reasons.sheet-rotator-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Sheet Rotator Warming Up
-#: locale/ipp-strings.c:3706
+#: locale/ipp-strings.c:3744
 msgid "printer-state-reasons.sheet-rotator-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Printer offline
-#: locale/ipp-strings.c:3708
+#: locale/ipp-strings.c:3746
 msgid "printer-state-reasons.shutdown"
 msgstr ""
 
 #. TRANSLATORS: Slitter Added
-#: locale/ipp-strings.c:3710
+#: locale/ipp-strings.c:3748
 msgid "printer-state-reasons.slitter-added"
 msgstr ""
 
 #. TRANSLATORS: Slitter Almost Empty
-#: locale/ipp-strings.c:3712
+#: locale/ipp-strings.c:3750
 msgid "printer-state-reasons.slitter-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Slitter Almost Full
-#: locale/ipp-strings.c:3714
+#: locale/ipp-strings.c:3752
 msgid "printer-state-reasons.slitter-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Slitter At Limit
-#: locale/ipp-strings.c:3716
+#: locale/ipp-strings.c:3754
 msgid "printer-state-reasons.slitter-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Slitter Closed
-#: locale/ipp-strings.c:3718
+#: locale/ipp-strings.c:3756
 msgid "printer-state-reasons.slitter-closed"
 msgstr ""
 
 #. TRANSLATORS: Slitter Configuration Change
-#: locale/ipp-strings.c:3720
+#: locale/ipp-strings.c:3758
 msgid "printer-state-reasons.slitter-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Slitter Cover Closed
-#: locale/ipp-strings.c:3722
+#: locale/ipp-strings.c:3760
 msgid "printer-state-reasons.slitter-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Slitter Cover Open
-#: locale/ipp-strings.c:3724
+#: locale/ipp-strings.c:3762
 msgid "printer-state-reasons.slitter-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Slitter Empty
-#: locale/ipp-strings.c:3726
+#: locale/ipp-strings.c:3764
 msgid "printer-state-reasons.slitter-empty"
 msgstr ""
 
 #. TRANSLATORS: Slitter Full
-#: locale/ipp-strings.c:3728
+#: locale/ipp-strings.c:3766
 msgid "printer-state-reasons.slitter-full"
 msgstr ""
 
 #. TRANSLATORS: Slitter Interlock Closed
-#: locale/ipp-strings.c:3730
+#: locale/ipp-strings.c:3768
 msgid "printer-state-reasons.slitter-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Slitter Interlock Open
-#: locale/ipp-strings.c:3732
+#: locale/ipp-strings.c:3770
 msgid "printer-state-reasons.slitter-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Slitter Jam
-#: locale/ipp-strings.c:3734
+#: locale/ipp-strings.c:3772
 msgid "printer-state-reasons.slitter-jam"
 msgstr ""
 
 #. TRANSLATORS: Slitter Life Almost Over
-#: locale/ipp-strings.c:3736
+#: locale/ipp-strings.c:3774
 msgid "printer-state-reasons.slitter-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Slitter Life Over
-#: locale/ipp-strings.c:3738
+#: locale/ipp-strings.c:3776
 msgid "printer-state-reasons.slitter-life-over"
 msgstr ""
 
 #. TRANSLATORS: Slitter Memory Exhausted
-#: locale/ipp-strings.c:3740
+#: locale/ipp-strings.c:3778
 msgid "printer-state-reasons.slitter-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Slitter Missing
-#: locale/ipp-strings.c:3742
+#: locale/ipp-strings.c:3780
 msgid "printer-state-reasons.slitter-missing"
 msgstr ""
 
 #. TRANSLATORS: Slitter Motor Failure
-#: locale/ipp-strings.c:3744
+#: locale/ipp-strings.c:3782
 msgid "printer-state-reasons.slitter-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Slitter Near Limit
-#: locale/ipp-strings.c:3746
+#: locale/ipp-strings.c:3784
 msgid "printer-state-reasons.slitter-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Slitter Offline
-#: locale/ipp-strings.c:3748
+#: locale/ipp-strings.c:3786
 msgid "printer-state-reasons.slitter-offline"
 msgstr ""
 
 #. TRANSLATORS: Slitter Opened
-#: locale/ipp-strings.c:3750
+#: locale/ipp-strings.c:3788
 msgid "printer-state-reasons.slitter-opened"
 msgstr ""
 
 #. TRANSLATORS: Slitter Over Temperature
-#: locale/ipp-strings.c:3752
+#: locale/ipp-strings.c:3790
 msgid "printer-state-reasons.slitter-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Slitter Power Saver
-#: locale/ipp-strings.c:3754
+#: locale/ipp-strings.c:3792
 msgid "printer-state-reasons.slitter-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Slitter Recoverable Failure
-#: locale/ipp-strings.c:3756
+#: locale/ipp-strings.c:3794
 msgid "printer-state-reasons.slitter-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Slitter Recoverable Storage
-#: locale/ipp-strings.c:3758
+#: locale/ipp-strings.c:3796
 msgid "printer-state-reasons.slitter-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Slitter Removed
-#: locale/ipp-strings.c:3760
+#: locale/ipp-strings.c:3798
 msgid "printer-state-reasons.slitter-removed"
 msgstr ""
 
 #. TRANSLATORS: Slitter Resource Added
-#: locale/ipp-strings.c:3762
+#: locale/ipp-strings.c:3800
 msgid "printer-state-reasons.slitter-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Slitter Resource Removed
-#: locale/ipp-strings.c:3764
+#: locale/ipp-strings.c:3802
 msgid "printer-state-reasons.slitter-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Slitter Thermistor Failure
-#: locale/ipp-strings.c:3766
+#: locale/ipp-strings.c:3804
 msgid "printer-state-reasons.slitter-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Slitter Timing Failure
-#: locale/ipp-strings.c:3768
+#: locale/ipp-strings.c:3806
 msgid "printer-state-reasons.slitter-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Slitter Turned Off
-#: locale/ipp-strings.c:3770
+#: locale/ipp-strings.c:3808
 msgid "printer-state-reasons.slitter-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Slitter Turned On
-#: locale/ipp-strings.c:3772
+#: locale/ipp-strings.c:3810
 msgid "printer-state-reasons.slitter-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Slitter Under Temperature
-#: locale/ipp-strings.c:3774
+#: locale/ipp-strings.c:3812
 msgid "printer-state-reasons.slitter-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Slitter Unrecoverable Failure
-#: locale/ipp-strings.c:3776
+#: locale/ipp-strings.c:3814
 msgid "printer-state-reasons.slitter-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Slitter Unrecoverable Storage Error
-#: locale/ipp-strings.c:3778
+#: locale/ipp-strings.c:3816
 msgid "printer-state-reasons.slitter-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Slitter Warming Up
-#: locale/ipp-strings.c:3780
+#: locale/ipp-strings.c:3818
 msgid "printer-state-reasons.slitter-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Spool Area Full
-#: locale/ipp-strings.c:3782
+#: locale/ipp-strings.c:3820
 msgid "printer-state-reasons.spool-area-full"
 msgstr ""
 
 #. TRANSLATORS: Stacker Added
-#: locale/ipp-strings.c:3784
+#: locale/ipp-strings.c:3822
 msgid "printer-state-reasons.stacker-added"
 msgstr ""
 
 #. TRANSLATORS: Stacker Almost Empty
-#: locale/ipp-strings.c:3786
+#: locale/ipp-strings.c:3824
 msgid "printer-state-reasons.stacker-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Stacker Almost Full
-#: locale/ipp-strings.c:3788
+#: locale/ipp-strings.c:3826
 msgid "printer-state-reasons.stacker-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Stacker At Limit
-#: locale/ipp-strings.c:3790
+#: locale/ipp-strings.c:3828
 msgid "printer-state-reasons.stacker-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Stacker Closed
-#: locale/ipp-strings.c:3792
+#: locale/ipp-strings.c:3830
 msgid "printer-state-reasons.stacker-closed"
 msgstr ""
 
 #. TRANSLATORS: Stacker Configuration Change
-#: locale/ipp-strings.c:3794
+#: locale/ipp-strings.c:3832
 msgid "printer-state-reasons.stacker-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Stacker Cover Closed
-#: locale/ipp-strings.c:3796
+#: locale/ipp-strings.c:3834
 msgid "printer-state-reasons.stacker-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Stacker Cover Open
-#: locale/ipp-strings.c:3798
+#: locale/ipp-strings.c:3836
 msgid "printer-state-reasons.stacker-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Stacker Empty
-#: locale/ipp-strings.c:3800
+#: locale/ipp-strings.c:3838
 msgid "printer-state-reasons.stacker-empty"
 msgstr ""
 
 #. TRANSLATORS: Stacker Full
-#: locale/ipp-strings.c:3802
+#: locale/ipp-strings.c:3840
 msgid "printer-state-reasons.stacker-full"
 msgstr ""
 
 #. TRANSLATORS: Stacker Interlock Closed
-#: locale/ipp-strings.c:3804
+#: locale/ipp-strings.c:3842
 msgid "printer-state-reasons.stacker-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Stacker Interlock Open
-#: locale/ipp-strings.c:3806
+#: locale/ipp-strings.c:3844
 msgid "printer-state-reasons.stacker-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Stacker Jam
-#: locale/ipp-strings.c:3808
+#: locale/ipp-strings.c:3846
 msgid "printer-state-reasons.stacker-jam"
 msgstr ""
 
 #. TRANSLATORS: Stacker Life Almost Over
-#: locale/ipp-strings.c:3810
+#: locale/ipp-strings.c:3848
 msgid "printer-state-reasons.stacker-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Stacker Life Over
-#: locale/ipp-strings.c:3812
+#: locale/ipp-strings.c:3850
 msgid "printer-state-reasons.stacker-life-over"
 msgstr ""
 
 #. TRANSLATORS: Stacker Memory Exhausted
-#: locale/ipp-strings.c:3814
+#: locale/ipp-strings.c:3852
 msgid "printer-state-reasons.stacker-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Stacker Missing
-#: locale/ipp-strings.c:3816
+#: locale/ipp-strings.c:3854
 msgid "printer-state-reasons.stacker-missing"
 msgstr ""
 
 #. TRANSLATORS: Stacker Motor Failure
-#: locale/ipp-strings.c:3818
+#: locale/ipp-strings.c:3856
 msgid "printer-state-reasons.stacker-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Stacker Near Limit
-#: locale/ipp-strings.c:3820
+#: locale/ipp-strings.c:3858
 msgid "printer-state-reasons.stacker-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Stacker Offline
-#: locale/ipp-strings.c:3822
+#: locale/ipp-strings.c:3860
 msgid "printer-state-reasons.stacker-offline"
 msgstr ""
 
 #. TRANSLATORS: Stacker Opened
-#: locale/ipp-strings.c:3824
+#: locale/ipp-strings.c:3862
 msgid "printer-state-reasons.stacker-opened"
 msgstr ""
 
 #. TRANSLATORS: Stacker Over Temperature
-#: locale/ipp-strings.c:3826
+#: locale/ipp-strings.c:3864
 msgid "printer-state-reasons.stacker-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Stacker Power Saver
-#: locale/ipp-strings.c:3828
+#: locale/ipp-strings.c:3866
 msgid "printer-state-reasons.stacker-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Stacker Recoverable Failure
-#: locale/ipp-strings.c:3830
+#: locale/ipp-strings.c:3868
 msgid "printer-state-reasons.stacker-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Stacker Recoverable Storage
-#: locale/ipp-strings.c:3832
+#: locale/ipp-strings.c:3870
 msgid "printer-state-reasons.stacker-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Stacker Removed
-#: locale/ipp-strings.c:3834
+#: locale/ipp-strings.c:3872
 msgid "printer-state-reasons.stacker-removed"
 msgstr ""
 
 #. TRANSLATORS: Stacker Resource Added
-#: locale/ipp-strings.c:3836
+#: locale/ipp-strings.c:3874
 msgid "printer-state-reasons.stacker-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Stacker Resource Removed
-#: locale/ipp-strings.c:3838
+#: locale/ipp-strings.c:3876
 msgid "printer-state-reasons.stacker-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Stacker Thermistor Failure
-#: locale/ipp-strings.c:3840
+#: locale/ipp-strings.c:3878
 msgid "printer-state-reasons.stacker-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Stacker Timing Failure
-#: locale/ipp-strings.c:3842
+#: locale/ipp-strings.c:3880
 msgid "printer-state-reasons.stacker-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Stacker Turned Off
-#: locale/ipp-strings.c:3844
+#: locale/ipp-strings.c:3882
 msgid "printer-state-reasons.stacker-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Stacker Turned On
-#: locale/ipp-strings.c:3846
+#: locale/ipp-strings.c:3884
 msgid "printer-state-reasons.stacker-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Stacker Under Temperature
-#: locale/ipp-strings.c:3848
+#: locale/ipp-strings.c:3886
 msgid "printer-state-reasons.stacker-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Stacker Unrecoverable Failure
-#: locale/ipp-strings.c:3850
+#: locale/ipp-strings.c:3888
 msgid "printer-state-reasons.stacker-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Stacker Unrecoverable Storage Error
-#: locale/ipp-strings.c:3852
+#: locale/ipp-strings.c:3890
 msgid "printer-state-reasons.stacker-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Stacker Warming Up
-#: locale/ipp-strings.c:3854
+#: locale/ipp-strings.c:3892
 msgid "printer-state-reasons.stacker-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Stapler Added
-#: locale/ipp-strings.c:3856
+#: locale/ipp-strings.c:3894
 msgid "printer-state-reasons.stapler-added"
 msgstr ""
 
 #. TRANSLATORS: Stapler Almost Empty
-#: locale/ipp-strings.c:3858
+#: locale/ipp-strings.c:3896
 msgid "printer-state-reasons.stapler-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Stapler Almost Full
-#: locale/ipp-strings.c:3860
+#: locale/ipp-strings.c:3898
 msgid "printer-state-reasons.stapler-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Stapler At Limit
-#: locale/ipp-strings.c:3862
+#: locale/ipp-strings.c:3900
 msgid "printer-state-reasons.stapler-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Stapler Closed
-#: locale/ipp-strings.c:3864
+#: locale/ipp-strings.c:3902
 msgid "printer-state-reasons.stapler-closed"
 msgstr ""
 
 #. TRANSLATORS: Stapler Configuration Change
-#: locale/ipp-strings.c:3866
+#: locale/ipp-strings.c:3904
 msgid "printer-state-reasons.stapler-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Stapler Cover Closed
-#: locale/ipp-strings.c:3868
+#: locale/ipp-strings.c:3906
 msgid "printer-state-reasons.stapler-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Stapler Cover Open
-#: locale/ipp-strings.c:3870
+#: locale/ipp-strings.c:3908
 msgid "printer-state-reasons.stapler-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Stapler Empty
-#: locale/ipp-strings.c:3872
+#: locale/ipp-strings.c:3910
 msgid "printer-state-reasons.stapler-empty"
 msgstr ""
 
 #. TRANSLATORS: Stapler Full
-#: locale/ipp-strings.c:3874
+#: locale/ipp-strings.c:3912
 msgid "printer-state-reasons.stapler-full"
 msgstr ""
 
 #. TRANSLATORS: Stapler Interlock Closed
-#: locale/ipp-strings.c:3876
+#: locale/ipp-strings.c:3914
 msgid "printer-state-reasons.stapler-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Stapler Interlock Open
-#: locale/ipp-strings.c:3878
+#: locale/ipp-strings.c:3916
 msgid "printer-state-reasons.stapler-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Stapler Jam
-#: locale/ipp-strings.c:3880
+#: locale/ipp-strings.c:3918
 msgid "printer-state-reasons.stapler-jam"
 msgstr ""
 
 #. TRANSLATORS: Stapler Life Almost Over
-#: locale/ipp-strings.c:3882
+#: locale/ipp-strings.c:3920
 msgid "printer-state-reasons.stapler-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Stapler Life Over
-#: locale/ipp-strings.c:3884
+#: locale/ipp-strings.c:3922
 msgid "printer-state-reasons.stapler-life-over"
 msgstr ""
 
 #. TRANSLATORS: Stapler Memory Exhausted
-#: locale/ipp-strings.c:3886
+#: locale/ipp-strings.c:3924
 msgid "printer-state-reasons.stapler-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Stapler Missing
-#: locale/ipp-strings.c:3888
+#: locale/ipp-strings.c:3926
 msgid "printer-state-reasons.stapler-missing"
 msgstr ""
 
 #. TRANSLATORS: Stapler Motor Failure
-#: locale/ipp-strings.c:3890
+#: locale/ipp-strings.c:3928
 msgid "printer-state-reasons.stapler-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Stapler Near Limit
-#: locale/ipp-strings.c:3892
+#: locale/ipp-strings.c:3930
 msgid "printer-state-reasons.stapler-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Stapler Offline
-#: locale/ipp-strings.c:3894
+#: locale/ipp-strings.c:3932
 msgid "printer-state-reasons.stapler-offline"
 msgstr ""
 
 #. TRANSLATORS: Stapler Opened
-#: locale/ipp-strings.c:3896
+#: locale/ipp-strings.c:3934
 msgid "printer-state-reasons.stapler-opened"
 msgstr ""
 
 #. TRANSLATORS: Stapler Over Temperature
-#: locale/ipp-strings.c:3898
+#: locale/ipp-strings.c:3936
 msgid "printer-state-reasons.stapler-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Stapler Power Saver
-#: locale/ipp-strings.c:3900
+#: locale/ipp-strings.c:3938
 msgid "printer-state-reasons.stapler-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Stapler Recoverable Failure
-#: locale/ipp-strings.c:3902
+#: locale/ipp-strings.c:3940
 msgid "printer-state-reasons.stapler-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Stapler Recoverable Storage
-#: locale/ipp-strings.c:3904
+#: locale/ipp-strings.c:3942
 msgid "printer-state-reasons.stapler-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Stapler Removed
-#: locale/ipp-strings.c:3906
+#: locale/ipp-strings.c:3944
 msgid "printer-state-reasons.stapler-removed"
 msgstr ""
 
 #. TRANSLATORS: Stapler Resource Added
-#: locale/ipp-strings.c:3908
+#: locale/ipp-strings.c:3946
 msgid "printer-state-reasons.stapler-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Stapler Resource Removed
-#: locale/ipp-strings.c:3910
+#: locale/ipp-strings.c:3948
 msgid "printer-state-reasons.stapler-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Stapler Thermistor Failure
-#: locale/ipp-strings.c:3912
+#: locale/ipp-strings.c:3950
 msgid "printer-state-reasons.stapler-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Stapler Timing Failure
-#: locale/ipp-strings.c:3914
+#: locale/ipp-strings.c:3952
 msgid "printer-state-reasons.stapler-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Stapler Turned Off
-#: locale/ipp-strings.c:3916
+#: locale/ipp-strings.c:3954
 msgid "printer-state-reasons.stapler-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Stapler Turned On
-#: locale/ipp-strings.c:3918
+#: locale/ipp-strings.c:3956
 msgid "printer-state-reasons.stapler-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Stapler Under Temperature
-#: locale/ipp-strings.c:3920
+#: locale/ipp-strings.c:3958
 msgid "printer-state-reasons.stapler-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Stapler Unrecoverable Failure
-#: locale/ipp-strings.c:3922
+#: locale/ipp-strings.c:3960
 msgid "printer-state-reasons.stapler-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Stapler Unrecoverable Storage Error
-#: locale/ipp-strings.c:3924
+#: locale/ipp-strings.c:3962
 msgid "printer-state-reasons.stapler-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Stapler Warming Up
-#: locale/ipp-strings.c:3926
+#: locale/ipp-strings.c:3964
 msgid "printer-state-reasons.stapler-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Added
-#: locale/ipp-strings.c:3928
+#: locale/ipp-strings.c:3966
 msgid "printer-state-reasons.stitcher-added"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Almost Empty
-#: locale/ipp-strings.c:3930
+#: locale/ipp-strings.c:3968
 msgid "printer-state-reasons.stitcher-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Almost Full
-#: locale/ipp-strings.c:3932
+#: locale/ipp-strings.c:3970
 msgid "printer-state-reasons.stitcher-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Stitcher At Limit
-#: locale/ipp-strings.c:3934
+#: locale/ipp-strings.c:3972
 msgid "printer-state-reasons.stitcher-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Closed
-#: locale/ipp-strings.c:3936
+#: locale/ipp-strings.c:3974
 msgid "printer-state-reasons.stitcher-closed"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Configuration Change
-#: locale/ipp-strings.c:3938
+#: locale/ipp-strings.c:3976
 msgid "printer-state-reasons.stitcher-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Cover Closed
-#: locale/ipp-strings.c:3940
+#: locale/ipp-strings.c:3978
 msgid "printer-state-reasons.stitcher-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Cover Open
-#: locale/ipp-strings.c:3942
+#: locale/ipp-strings.c:3980
 msgid "printer-state-reasons.stitcher-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Empty
-#: locale/ipp-strings.c:3944
+#: locale/ipp-strings.c:3982
 msgid "printer-state-reasons.stitcher-empty"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Full
-#: locale/ipp-strings.c:3946
+#: locale/ipp-strings.c:3984
 msgid "printer-state-reasons.stitcher-full"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Interlock Closed
-#: locale/ipp-strings.c:3948
+#: locale/ipp-strings.c:3986
 msgid "printer-state-reasons.stitcher-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Interlock Open
-#: locale/ipp-strings.c:3950
+#: locale/ipp-strings.c:3988
 msgid "printer-state-reasons.stitcher-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Jam
-#: locale/ipp-strings.c:3952
+#: locale/ipp-strings.c:3990
 msgid "printer-state-reasons.stitcher-jam"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Life Almost Over
-#: locale/ipp-strings.c:3954
+#: locale/ipp-strings.c:3992
 msgid "printer-state-reasons.stitcher-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Life Over
-#: locale/ipp-strings.c:3956
+#: locale/ipp-strings.c:3994
 msgid "printer-state-reasons.stitcher-life-over"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Memory Exhausted
-#: locale/ipp-strings.c:3958
+#: locale/ipp-strings.c:3996
 msgid "printer-state-reasons.stitcher-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Missing
-#: locale/ipp-strings.c:3960
+#: locale/ipp-strings.c:3998
 msgid "printer-state-reasons.stitcher-missing"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Motor Failure
-#: locale/ipp-strings.c:3962
+#: locale/ipp-strings.c:4000
 msgid "printer-state-reasons.stitcher-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Near Limit
-#: locale/ipp-strings.c:3964
+#: locale/ipp-strings.c:4002
 msgid "printer-state-reasons.stitcher-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Offline
-#: locale/ipp-strings.c:3966
+#: locale/ipp-strings.c:4004
 msgid "printer-state-reasons.stitcher-offline"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Opened
-#: locale/ipp-strings.c:3968
+#: locale/ipp-strings.c:4006
 msgid "printer-state-reasons.stitcher-opened"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Over Temperature
-#: locale/ipp-strings.c:3970
+#: locale/ipp-strings.c:4008
 msgid "printer-state-reasons.stitcher-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Power Saver
-#: locale/ipp-strings.c:3972
+#: locale/ipp-strings.c:4010
 msgid "printer-state-reasons.stitcher-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Recoverable Failure
-#: locale/ipp-strings.c:3974
+#: locale/ipp-strings.c:4012
 msgid "printer-state-reasons.stitcher-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Recoverable Storage
-#: locale/ipp-strings.c:3976
+#: locale/ipp-strings.c:4014
 msgid "printer-state-reasons.stitcher-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Removed
-#: locale/ipp-strings.c:3978
+#: locale/ipp-strings.c:4016
 msgid "printer-state-reasons.stitcher-removed"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Resource Added
-#: locale/ipp-strings.c:3980
+#: locale/ipp-strings.c:4018
 msgid "printer-state-reasons.stitcher-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Resource Removed
-#: locale/ipp-strings.c:3982
+#: locale/ipp-strings.c:4020
 msgid "printer-state-reasons.stitcher-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Thermistor Failure
-#: locale/ipp-strings.c:3984
+#: locale/ipp-strings.c:4022
 msgid "printer-state-reasons.stitcher-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Timing Failure
-#: locale/ipp-strings.c:3986
+#: locale/ipp-strings.c:4024
 msgid "printer-state-reasons.stitcher-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Turned Off
-#: locale/ipp-strings.c:3988
+#: locale/ipp-strings.c:4026
 msgid "printer-state-reasons.stitcher-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Turned On
-#: locale/ipp-strings.c:3990
+#: locale/ipp-strings.c:4028
 msgid "printer-state-reasons.stitcher-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Under Temperature
-#: locale/ipp-strings.c:3992
+#: locale/ipp-strings.c:4030
 msgid "printer-state-reasons.stitcher-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Unrecoverable Failure
-#: locale/ipp-strings.c:3994
+#: locale/ipp-strings.c:4032
 msgid "printer-state-reasons.stitcher-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Unrecoverable Storage Error
-#: locale/ipp-strings.c:3996
+#: locale/ipp-strings.c:4034
 msgid "printer-state-reasons.stitcher-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Stitcher Warming Up
-#: locale/ipp-strings.c:3998
+#: locale/ipp-strings.c:4036
 msgid "printer-state-reasons.stitcher-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Partially stopped
-#: locale/ipp-strings.c:4000
+#: locale/ipp-strings.c:4038
 msgid "printer-state-reasons.stopped-partly"
 msgstr ""
 
 #. TRANSLATORS: Stopping
-#: locale/ipp-strings.c:4002
+#: locale/ipp-strings.c:4040
 msgid "printer-state-reasons.stopping"
 msgstr ""
 
 #. TRANSLATORS: Subunit Added
-#: locale/ipp-strings.c:4004
+#: locale/ipp-strings.c:4042
 msgid "printer-state-reasons.subunit-added"
 msgstr ""
 
 #. TRANSLATORS: Subunit Almost Empty
-#: locale/ipp-strings.c:4006
+#: locale/ipp-strings.c:4044
 msgid "printer-state-reasons.subunit-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Subunit Almost Full
-#: locale/ipp-strings.c:4008
+#: locale/ipp-strings.c:4046
 msgid "printer-state-reasons.subunit-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Subunit At Limit
-#: locale/ipp-strings.c:4010
+#: locale/ipp-strings.c:4048
 msgid "printer-state-reasons.subunit-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Subunit Closed
-#: locale/ipp-strings.c:4012
+#: locale/ipp-strings.c:4050
 msgid "printer-state-reasons.subunit-closed"
 msgstr ""
 
 #. TRANSLATORS: Subunit Cooling Down
-#: locale/ipp-strings.c:4014
+#: locale/ipp-strings.c:4052
 msgid "printer-state-reasons.subunit-cooling-down"
 msgstr ""
 
 #. TRANSLATORS: Subunit Empty
-#: locale/ipp-strings.c:4016
+#: locale/ipp-strings.c:4054
 msgid "printer-state-reasons.subunit-empty"
 msgstr ""
 
 #. TRANSLATORS: Subunit Full
-#: locale/ipp-strings.c:4018
+#: locale/ipp-strings.c:4056
 msgid "printer-state-reasons.subunit-full"
 msgstr ""
 
 #. TRANSLATORS: Subunit Life Almost Over
-#: locale/ipp-strings.c:4020
+#: locale/ipp-strings.c:4058
 msgid "printer-state-reasons.subunit-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Subunit Life Over
-#: locale/ipp-strings.c:4022
+#: locale/ipp-strings.c:4060
 msgid "printer-state-reasons.subunit-life-over"
 msgstr ""
 
 #. TRANSLATORS: Subunit Memory Exhausted
-#: locale/ipp-strings.c:4024
+#: locale/ipp-strings.c:4062
 msgid "printer-state-reasons.subunit-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Subunit Missing
-#: locale/ipp-strings.c:4026
+#: locale/ipp-strings.c:4064
 msgid "printer-state-reasons.subunit-missing"
 msgstr ""
 
 #. TRANSLATORS: Subunit Motor Failure
-#: locale/ipp-strings.c:4028
+#: locale/ipp-strings.c:4066
 msgid "printer-state-reasons.subunit-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Subunit Near Limit
-#: locale/ipp-strings.c:4030
+#: locale/ipp-strings.c:4068
 msgid "printer-state-reasons.subunit-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Subunit Offline
-#: locale/ipp-strings.c:4032
+#: locale/ipp-strings.c:4070
 msgid "printer-state-reasons.subunit-offline"
 msgstr ""
 
 #. TRANSLATORS: Subunit Opened
-#: locale/ipp-strings.c:4034
+#: locale/ipp-strings.c:4072
 msgid "printer-state-reasons.subunit-opened"
 msgstr ""
 
 #. TRANSLATORS: Subunit Over Temperature
-#: locale/ipp-strings.c:4036
+#: locale/ipp-strings.c:4074
 msgid "printer-state-reasons.subunit-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Subunit Power Saver
-#: locale/ipp-strings.c:4038
+#: locale/ipp-strings.c:4076
 msgid "printer-state-reasons.subunit-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Subunit Recoverable Failure
-#: locale/ipp-strings.c:4040
+#: locale/ipp-strings.c:4078
 msgid "printer-state-reasons.subunit-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Subunit Recoverable Storage
-#: locale/ipp-strings.c:4042
+#: locale/ipp-strings.c:4080
 msgid "printer-state-reasons.subunit-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Subunit Removed
-#: locale/ipp-strings.c:4044
+#: locale/ipp-strings.c:4082
 msgid "printer-state-reasons.subunit-removed"
 msgstr ""
 
 #. TRANSLATORS: Subunit Resource Added
-#: locale/ipp-strings.c:4046
+#: locale/ipp-strings.c:4084
 msgid "printer-state-reasons.subunit-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Subunit Resource Removed
-#: locale/ipp-strings.c:4048
+#: locale/ipp-strings.c:4086
 msgid "printer-state-reasons.subunit-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Subunit Thermistor Failure
-#: locale/ipp-strings.c:4050
+#: locale/ipp-strings.c:4088
 msgid "printer-state-reasons.subunit-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Subunit Timing Failure
-#: locale/ipp-strings.c:4052
+#: locale/ipp-strings.c:4090
 msgid "printer-state-reasons.subunit-timing-Failure"
 msgstr ""
 
 #. TRANSLATORS: Subunit Turned Off
-#: locale/ipp-strings.c:4054
+#: locale/ipp-strings.c:4092
 msgid "printer-state-reasons.subunit-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Subunit Turned On
-#: locale/ipp-strings.c:4056
+#: locale/ipp-strings.c:4094
 msgid "printer-state-reasons.subunit-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Subunit Under Temperature
-#: locale/ipp-strings.c:4058
+#: locale/ipp-strings.c:4096
 msgid "printer-state-reasons.subunit-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Subunit Unrecoverable Failure
-#: locale/ipp-strings.c:4060
+#: locale/ipp-strings.c:4098
 msgid "printer-state-reasons.subunit-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Subunit Unrecoverable Storage
-#: locale/ipp-strings.c:4062
+#: locale/ipp-strings.c:4100
 msgid "printer-state-reasons.subunit-unrecoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Subunit Warming Up
-#: locale/ipp-strings.c:4064
+#: locale/ipp-strings.c:4102
 msgid "printer-state-reasons.subunit-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Printer stopped responding
-#: locale/ipp-strings.c:4066
+#: locale/ipp-strings.c:4104
 msgid "printer-state-reasons.timed-out"
 msgstr ""
 
 #. TRANSLATORS: Out of toner
-#: locale/ipp-strings.c:4068
+#: locale/ipp-strings.c:4106
 msgid "printer-state-reasons.toner-empty"
 msgstr ""
 
 #. TRANSLATORS: Toner low
-#: locale/ipp-strings.c:4070
+#: locale/ipp-strings.c:4108
 msgid "printer-state-reasons.toner-low"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Added
-#: locale/ipp-strings.c:4072
+#: locale/ipp-strings.c:4110
 msgid "printer-state-reasons.trimmer-added"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Almost Empty
-#: locale/ipp-strings.c:4074
+#: locale/ipp-strings.c:4112
 msgid "printer-state-reasons.trimmer-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Almost Full
-#: locale/ipp-strings.c:4076
+#: locale/ipp-strings.c:4114
 msgid "printer-state-reasons.trimmer-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Trimmer At Limit
-#: locale/ipp-strings.c:4078
+#: locale/ipp-strings.c:4116
 msgid "printer-state-reasons.trimmer-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Closed
-#: locale/ipp-strings.c:4080
+#: locale/ipp-strings.c:4118
 msgid "printer-state-reasons.trimmer-closed"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Configuration Change
-#: locale/ipp-strings.c:4082
+#: locale/ipp-strings.c:4120
 msgid "printer-state-reasons.trimmer-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Cover Closed
-#: locale/ipp-strings.c:4084
+#: locale/ipp-strings.c:4122
 msgid "printer-state-reasons.trimmer-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Cover Open
-#: locale/ipp-strings.c:4086
+#: locale/ipp-strings.c:4124
 msgid "printer-state-reasons.trimmer-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Empty
-#: locale/ipp-strings.c:4088
+#: locale/ipp-strings.c:4126
 msgid "printer-state-reasons.trimmer-empty"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Full
-#: locale/ipp-strings.c:4090
+#: locale/ipp-strings.c:4128
 msgid "printer-state-reasons.trimmer-full"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Interlock Closed
-#: locale/ipp-strings.c:4092
+#: locale/ipp-strings.c:4130
 msgid "printer-state-reasons.trimmer-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Interlock Open
-#: locale/ipp-strings.c:4094
+#: locale/ipp-strings.c:4132
 msgid "printer-state-reasons.trimmer-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Jam
-#: locale/ipp-strings.c:4096
+#: locale/ipp-strings.c:4134
 msgid "printer-state-reasons.trimmer-jam"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Life Almost Over
-#: locale/ipp-strings.c:4098
+#: locale/ipp-strings.c:4136
 msgid "printer-state-reasons.trimmer-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Life Over
-#: locale/ipp-strings.c:4100
+#: locale/ipp-strings.c:4138
 msgid "printer-state-reasons.trimmer-life-over"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Memory Exhausted
-#: locale/ipp-strings.c:4102
+#: locale/ipp-strings.c:4140
 msgid "printer-state-reasons.trimmer-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Missing
-#: locale/ipp-strings.c:4104
+#: locale/ipp-strings.c:4142
 msgid "printer-state-reasons.trimmer-missing"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Motor Failure
-#: locale/ipp-strings.c:4106
+#: locale/ipp-strings.c:4144
 msgid "printer-state-reasons.trimmer-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Near Limit
-#: locale/ipp-strings.c:4108
+#: locale/ipp-strings.c:4146
 msgid "printer-state-reasons.trimmer-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Offline
-#: locale/ipp-strings.c:4110
+#: locale/ipp-strings.c:4148
 msgid "printer-state-reasons.trimmer-offline"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Opened
-#: locale/ipp-strings.c:4112
+#: locale/ipp-strings.c:4150
 msgid "printer-state-reasons.trimmer-opened"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Over Temperature
-#: locale/ipp-strings.c:4114
+#: locale/ipp-strings.c:4152
 msgid "printer-state-reasons.trimmer-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Power Saver
-#: locale/ipp-strings.c:4116
+#: locale/ipp-strings.c:4154
 msgid "printer-state-reasons.trimmer-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Recoverable Failure
-#: locale/ipp-strings.c:4118
+#: locale/ipp-strings.c:4156
 msgid "printer-state-reasons.trimmer-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Recoverable Storage
-#: locale/ipp-strings.c:4120
+#: locale/ipp-strings.c:4158
 msgid "printer-state-reasons.trimmer-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Removed
-#: locale/ipp-strings.c:4122
+#: locale/ipp-strings.c:4160
 msgid "printer-state-reasons.trimmer-removed"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Resource Added
-#: locale/ipp-strings.c:4124
+#: locale/ipp-strings.c:4162
 msgid "printer-state-reasons.trimmer-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Resource Removed
-#: locale/ipp-strings.c:4126
+#: locale/ipp-strings.c:4164
 msgid "printer-state-reasons.trimmer-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Thermistor Failure
-#: locale/ipp-strings.c:4128
+#: locale/ipp-strings.c:4166
 msgid "printer-state-reasons.trimmer-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Timing Failure
-#: locale/ipp-strings.c:4130
+#: locale/ipp-strings.c:4168
 msgid "printer-state-reasons.trimmer-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Turned Off
-#: locale/ipp-strings.c:4132
+#: locale/ipp-strings.c:4170
 msgid "printer-state-reasons.trimmer-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Turned On
-#: locale/ipp-strings.c:4134
+#: locale/ipp-strings.c:4172
 msgid "printer-state-reasons.trimmer-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Under Temperature
-#: locale/ipp-strings.c:4136
+#: locale/ipp-strings.c:4174
 msgid "printer-state-reasons.trimmer-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Unrecoverable Failure
-#: locale/ipp-strings.c:4138
+#: locale/ipp-strings.c:4176
 msgid "printer-state-reasons.trimmer-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Unrecoverable Storage Error
-#: locale/ipp-strings.c:4140
+#: locale/ipp-strings.c:4178
 msgid "printer-state-reasons.trimmer-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Trimmer Warming Up
-#: locale/ipp-strings.c:4142
+#: locale/ipp-strings.c:4180
 msgid "printer-state-reasons.trimmer-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Unknown
-#: locale/ipp-strings.c:4144
+#: locale/ipp-strings.c:4182
 msgid "printer-state-reasons.unknown"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Added
-#: locale/ipp-strings.c:4146
+#: locale/ipp-strings.c:4184
 msgid "printer-state-reasons.wrapper-added"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Almost Empty
-#: locale/ipp-strings.c:4148
+#: locale/ipp-strings.c:4186
 msgid "printer-state-reasons.wrapper-almost-empty"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Almost Full
-#: locale/ipp-strings.c:4150
+#: locale/ipp-strings.c:4188
 msgid "printer-state-reasons.wrapper-almost-full"
 msgstr ""
 
 #. TRANSLATORS: Wrapper At Limit
-#: locale/ipp-strings.c:4152
+#: locale/ipp-strings.c:4190
 msgid "printer-state-reasons.wrapper-at-limit"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Closed
-#: locale/ipp-strings.c:4154
+#: locale/ipp-strings.c:4192
 msgid "printer-state-reasons.wrapper-closed"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Configuration Change
-#: locale/ipp-strings.c:4156
+#: locale/ipp-strings.c:4194
 msgid "printer-state-reasons.wrapper-configuration-change"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Cover Closed
-#: locale/ipp-strings.c:4158
+#: locale/ipp-strings.c:4196
 msgid "printer-state-reasons.wrapper-cover-closed"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Cover Open
-#: locale/ipp-strings.c:4160
+#: locale/ipp-strings.c:4198
 msgid "printer-state-reasons.wrapper-cover-open"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Empty
-#: locale/ipp-strings.c:4162
+#: locale/ipp-strings.c:4200
 msgid "printer-state-reasons.wrapper-empty"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Full
-#: locale/ipp-strings.c:4164
+#: locale/ipp-strings.c:4202
 msgid "printer-state-reasons.wrapper-full"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Interlock Closed
-#: locale/ipp-strings.c:4166
+#: locale/ipp-strings.c:4204
 msgid "printer-state-reasons.wrapper-interlock-closed"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Interlock Open
-#: locale/ipp-strings.c:4168
+#: locale/ipp-strings.c:4206
 msgid "printer-state-reasons.wrapper-interlock-open"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Jam
-#: locale/ipp-strings.c:4170
+#: locale/ipp-strings.c:4208
 msgid "printer-state-reasons.wrapper-jam"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Life Almost Over
-#: locale/ipp-strings.c:4172
+#: locale/ipp-strings.c:4210
 msgid "printer-state-reasons.wrapper-life-almost-over"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Life Over
-#: locale/ipp-strings.c:4174
+#: locale/ipp-strings.c:4212
 msgid "printer-state-reasons.wrapper-life-over"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Memory Exhausted
-#: locale/ipp-strings.c:4176
+#: locale/ipp-strings.c:4214
 msgid "printer-state-reasons.wrapper-memory-exhausted"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Missing
-#: locale/ipp-strings.c:4178
+#: locale/ipp-strings.c:4216
 msgid "printer-state-reasons.wrapper-missing"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Motor Failure
-#: locale/ipp-strings.c:4180
+#: locale/ipp-strings.c:4218
 msgid "printer-state-reasons.wrapper-motor-failure"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Near Limit
-#: locale/ipp-strings.c:4182
+#: locale/ipp-strings.c:4220
 msgid "printer-state-reasons.wrapper-near-limit"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Offline
-#: locale/ipp-strings.c:4184
+#: locale/ipp-strings.c:4222
 msgid "printer-state-reasons.wrapper-offline"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Opened
-#: locale/ipp-strings.c:4186
+#: locale/ipp-strings.c:4224
 msgid "printer-state-reasons.wrapper-opened"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Over Temperature
-#: locale/ipp-strings.c:4188
+#: locale/ipp-strings.c:4226
 msgid "printer-state-reasons.wrapper-over-temperature"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Power Saver
-#: locale/ipp-strings.c:4190
+#: locale/ipp-strings.c:4228
 msgid "printer-state-reasons.wrapper-power-saver"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Recoverable Failure
-#: locale/ipp-strings.c:4192
+#: locale/ipp-strings.c:4230
 msgid "printer-state-reasons.wrapper-recoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Recoverable Storage
-#: locale/ipp-strings.c:4194
+#: locale/ipp-strings.c:4232
 msgid "printer-state-reasons.wrapper-recoverable-storage"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Removed
-#: locale/ipp-strings.c:4196
+#: locale/ipp-strings.c:4234
 msgid "printer-state-reasons.wrapper-removed"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Resource Added
-#: locale/ipp-strings.c:4198
+#: locale/ipp-strings.c:4236
 msgid "printer-state-reasons.wrapper-resource-added"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Resource Removed
-#: locale/ipp-strings.c:4200
+#: locale/ipp-strings.c:4238
 msgid "printer-state-reasons.wrapper-resource-removed"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Thermistor Failure
-#: locale/ipp-strings.c:4202
+#: locale/ipp-strings.c:4240
 msgid "printer-state-reasons.wrapper-thermistor-failure"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Timing Failure
-#: locale/ipp-strings.c:4204
+#: locale/ipp-strings.c:4242
 msgid "printer-state-reasons.wrapper-timing-failure"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Turned Off
-#: locale/ipp-strings.c:4206
+#: locale/ipp-strings.c:4244
 msgid "printer-state-reasons.wrapper-turned-off"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Turned On
-#: locale/ipp-strings.c:4208
+#: locale/ipp-strings.c:4246
 msgid "printer-state-reasons.wrapper-turned-on"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Under Temperature
-#: locale/ipp-strings.c:4210
+#: locale/ipp-strings.c:4248
 msgid "printer-state-reasons.wrapper-under-temperature"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Unrecoverable Failure
-#: locale/ipp-strings.c:4212
+#: locale/ipp-strings.c:4250
 msgid "printer-state-reasons.wrapper-unrecoverable-failure"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Unrecoverable Storage Error
-#: locale/ipp-strings.c:4214
+#: locale/ipp-strings.c:4252
 msgid "printer-state-reasons.wrapper-unrecoverable-storage-error"
 msgstr ""
 
 #. TRANSLATORS: Wrapper Warming Up
-#: locale/ipp-strings.c:4216
+#: locale/ipp-strings.c:4254
 msgid "printer-state-reasons.wrapper-warming-up"
 msgstr ""
 
 #. TRANSLATORS: Idle
-#: locale/ipp-strings.c:4218
+#: locale/ipp-strings.c:4256
 msgid "printer-state.3"
 msgstr ""
 
 #. TRANSLATORS: Processing
-#: locale/ipp-strings.c:4220
+#: locale/ipp-strings.c:4258
 msgid "printer-state.4"
 msgstr ""
 
 #. TRANSLATORS: Stopped
-#: locale/ipp-strings.c:4222
+#: locale/ipp-strings.c:4260
 msgid "printer-state.5"
 msgstr ""
 
 #. TRANSLATORS: Printer Uptime
-#: locale/ipp-strings.c:4224
+#: locale/ipp-strings.c:4262
 msgid "printer-up-time"
 msgstr ""
 
@@ -18359,52 +18478,52 @@
 msgstr ""
 
 #. TRANSLATORS: Proof Print
-#: locale/ipp-strings.c:4226
+#: locale/ipp-strings.c:4264
 msgid "proof-print"
 msgstr ""
 
 #. TRANSLATORS: Proof Print Copies
-#: locale/ipp-strings.c:4228
+#: locale/ipp-strings.c:4266
 msgid "proof-print-copies"
 msgstr ""
 
 #. TRANSLATORS: Punching
-#: locale/ipp-strings.c:4230
+#: locale/ipp-strings.c:4268
 msgid "punching"
 msgstr ""
 
 #. TRANSLATORS: Punching Locations
-#: locale/ipp-strings.c:4232
+#: locale/ipp-strings.c:4270
 msgid "punching-locations"
 msgstr ""
 
 #. TRANSLATORS: Punching Offset
-#: locale/ipp-strings.c:4234
+#: locale/ipp-strings.c:4272
 msgid "punching-offset"
 msgstr ""
 
 #. TRANSLATORS: Punch Edge
-#: locale/ipp-strings.c:4236
+#: locale/ipp-strings.c:4274
 msgid "punching-reference-edge"
 msgstr ""
 
 #. TRANSLATORS: Bottom
-#: locale/ipp-strings.c:4238
+#: locale/ipp-strings.c:4276
 msgid "punching-reference-edge.bottom"
 msgstr ""
 
 #. TRANSLATORS: Left
-#: locale/ipp-strings.c:4240
+#: locale/ipp-strings.c:4278
 msgid "punching-reference-edge.left"
 msgstr ""
 
 #. TRANSLATORS: Right
-#: locale/ipp-strings.c:4242
+#: locale/ipp-strings.c:4280
 msgid "punching-reference-edge.right"
 msgstr ""
 
 #. TRANSLATORS: Top
-#: locale/ipp-strings.c:4244
+#: locale/ipp-strings.c:4282
 msgid "punching-reference-edge.top"
 msgstr ""
 
@@ -18418,57 +18537,57 @@
 msgstr ""
 
 #. TRANSLATORS: Requested Attributes
-#: locale/ipp-strings.c:4246
+#: locale/ipp-strings.c:4284
 msgid "requested-attributes"
 msgstr ""
 
 #. TRANSLATORS: Retry Interval
-#: locale/ipp-strings.c:4248
+#: locale/ipp-strings.c:4286
 msgid "retry-interval"
 msgstr ""
 
 #. TRANSLATORS: Retry Timeout
-#: locale/ipp-strings.c:4250
+#: locale/ipp-strings.c:4288
 msgid "retry-time-out"
 msgstr ""
 
 #. TRANSLATORS: Save Disposition
-#: locale/ipp-strings.c:4252
+#: locale/ipp-strings.c:4290
 msgid "save-disposition"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:4254
+#: locale/ipp-strings.c:4292
 msgid "save-disposition.none"
 msgstr ""
 
 #. TRANSLATORS: Print and Save
-#: locale/ipp-strings.c:4256
+#: locale/ipp-strings.c:4294
 msgid "save-disposition.print-save"
 msgstr ""
 
 #. TRANSLATORS: Save Only
-#: locale/ipp-strings.c:4258
+#: locale/ipp-strings.c:4296
 msgid "save-disposition.save-only"
 msgstr ""
 
 #. TRANSLATORS: Save Document Format
-#: locale/ipp-strings.c:4260
+#: locale/ipp-strings.c:4298
 msgid "save-document-format"
 msgstr ""
 
 #. TRANSLATORS: Save Info
-#: locale/ipp-strings.c:4262
+#: locale/ipp-strings.c:4300
 msgid "save-info"
 msgstr ""
 
 #. TRANSLATORS: Save Location
-#: locale/ipp-strings.c:4264
+#: locale/ipp-strings.c:4302
 msgid "save-location"
 msgstr ""
 
 #. TRANSLATORS: Save Name
-#: locale/ipp-strings.c:4266
+#: locale/ipp-strings.c:4304
 msgid "save-name"
 msgstr ""
 
@@ -18481,61 +18600,61 @@
 msgstr ""
 
 #. TRANSLATORS: Separator Sheets
-#: locale/ipp-strings.c:4268
+#: locale/ipp-strings.c:4306
 msgid "separator-sheets"
 msgstr ""
 
 #. TRANSLATORS: Type of Separator Sheets
-#: locale/ipp-strings.c:4270
+#: locale/ipp-strings.c:4308
 msgid "separator-sheets-type"
 msgstr ""
 
 #. TRANSLATORS: Start and End Sheets
-#: locale/ipp-strings.c:4272
+#: locale/ipp-strings.c:4310
 msgid "separator-sheets-type.both-sheets"
 msgstr ""
 
 #. TRANSLATORS: End Sheet
-#: locale/ipp-strings.c:4274
+#: locale/ipp-strings.c:4312
 msgid "separator-sheets-type.end-sheet"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:4276
+#: locale/ipp-strings.c:4314
 msgid "separator-sheets-type.none"
 msgstr ""
 
 #. TRANSLATORS: Slip Sheets
-#: locale/ipp-strings.c:4278
+#: locale/ipp-strings.c:4316
 msgid "separator-sheets-type.slip-sheets"
 msgstr ""
 
 #. TRANSLATORS: Start Sheet
-#: locale/ipp-strings.c:4280
+#: locale/ipp-strings.c:4318
 msgid "separator-sheets-type.start-sheet"
 msgstr ""
 
 #. TRANSLATORS: 2-Sided Printing
-#: locale/ipp-strings.c:4282
+#: locale/ipp-strings.c:4320
 msgid "sides"
 msgstr ""
 
 #. TRANSLATORS: Off
-#: locale/ipp-strings.c:4284
+#: locale/ipp-strings.c:4322
 msgid "sides.one-sided"
 msgstr ""
 
 #. TRANSLATORS: On (Portrait)
-#: locale/ipp-strings.c:4286
+#: locale/ipp-strings.c:4324
 msgid "sides.two-sided-long-edge"
 msgstr ""
 
 #. TRANSLATORS: On (Landscape)
-#: locale/ipp-strings.c:4288
+#: locale/ipp-strings.c:4326
 msgid "sides.two-sided-short-edge"
 msgstr ""
 
-#: cups/adminutil.c:1384
+#: cups/adminutil.c:1380
 #, c-format
 msgid "stat of %s failed: %s"
 msgstr ""
@@ -18545,72 +18664,72 @@
 msgstr ""
 
 #. TRANSLATORS: Status Message
-#: locale/ipp-strings.c:4290
+#: locale/ipp-strings.c:4328
 msgid "status-message"
 msgstr ""
 
 #. TRANSLATORS: Staple
-#: locale/ipp-strings.c:4292
+#: locale/ipp-strings.c:4330
 msgid "stitching"
 msgstr ""
 
 #. TRANSLATORS: Stitching Angle
-#: locale/ipp-strings.c:4294
+#: locale/ipp-strings.c:4332
 msgid "stitching-angle"
 msgstr ""
 
 #. TRANSLATORS: Stitching Locations
-#: locale/ipp-strings.c:4296
+#: locale/ipp-strings.c:4334
 msgid "stitching-locations"
 msgstr ""
 
 #. TRANSLATORS: Staple Method
-#: locale/ipp-strings.c:4298
+#: locale/ipp-strings.c:4336
 msgid "stitching-method"
 msgstr ""
 
 #. TRANSLATORS: Automatic
-#: locale/ipp-strings.c:4300
+#: locale/ipp-strings.c:4338
 msgid "stitching-method.auto"
 msgstr ""
 
 #. TRANSLATORS: Crimp
-#: locale/ipp-strings.c:4302
+#: locale/ipp-strings.c:4340
 msgid "stitching-method.crimp"
 msgstr ""
 
 #. TRANSLATORS: Wire
-#: locale/ipp-strings.c:4304
+#: locale/ipp-strings.c:4342
 msgid "stitching-method.wire"
 msgstr ""
 
 #. TRANSLATORS: Stitching Offset
-#: locale/ipp-strings.c:4306
+#: locale/ipp-strings.c:4344
 msgid "stitching-offset"
 msgstr ""
 
 #. TRANSLATORS: Staple Edge
-#: locale/ipp-strings.c:4308
+#: locale/ipp-strings.c:4346
 msgid "stitching-reference-edge"
 msgstr ""
 
 #. TRANSLATORS: Bottom
-#: locale/ipp-strings.c:4310
+#: locale/ipp-strings.c:4348
 msgid "stitching-reference-edge.bottom"
 msgstr ""
 
 #. TRANSLATORS: Left
-#: locale/ipp-strings.c:4312
+#: locale/ipp-strings.c:4350
 msgid "stitching-reference-edge.left"
 msgstr ""
 
 #. TRANSLATORS: Right
-#: locale/ipp-strings.c:4314
+#: locale/ipp-strings.c:4352
 msgid "stitching-reference-edge.right"
 msgstr ""
 
 #. TRANSLATORS: Top
-#: locale/ipp-strings.c:4316
+#: locale/ipp-strings.c:4354
 msgid "stitching-reference-edge.top"
 msgstr ""
 
@@ -18619,62 +18738,62 @@
 msgstr ""
 
 #. TRANSLATORS: Subject
-#: locale/ipp-strings.c:4318
+#: locale/ipp-strings.c:4356
 msgid "subject"
 msgstr ""
 
 #. TRANSLATORS: Subscription Privacy Attributes
-#: locale/ipp-strings.c:4320
+#: locale/ipp-strings.c:4358
 msgid "subscription-privacy-attributes"
 msgstr ""
 
 #. TRANSLATORS: All
-#: locale/ipp-strings.c:4322
+#: locale/ipp-strings.c:4360
 msgid "subscription-privacy-attributes.all"
 msgstr ""
 
 #. TRANSLATORS: Default
-#: locale/ipp-strings.c:4324
+#: locale/ipp-strings.c:4362
 msgid "subscription-privacy-attributes.default"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:4326
+#: locale/ipp-strings.c:4364
 msgid "subscription-privacy-attributes.none"
 msgstr ""
 
 #. TRANSLATORS: Subscription Description
-#: locale/ipp-strings.c:4328
+#: locale/ipp-strings.c:4366
 msgid "subscription-privacy-attributes.subscription-description"
 msgstr ""
 
 #. TRANSLATORS: Subscription Template
-#: locale/ipp-strings.c:4330
+#: locale/ipp-strings.c:4368
 msgid "subscription-privacy-attributes.subscription-template"
 msgstr ""
 
 #. TRANSLATORS: Subscription Privacy Scope
-#: locale/ipp-strings.c:4332
+#: locale/ipp-strings.c:4370
 msgid "subscription-privacy-scope"
 msgstr ""
 
 #. TRANSLATORS: All
-#: locale/ipp-strings.c:4334
+#: locale/ipp-strings.c:4372
 msgid "subscription-privacy-scope.all"
 msgstr ""
 
 #. TRANSLATORS: Default
-#: locale/ipp-strings.c:4336
+#: locale/ipp-strings.c:4374
 msgid "subscription-privacy-scope.default"
 msgstr ""
 
 #. TRANSLATORS: None
-#: locale/ipp-strings.c:4338
+#: locale/ipp-strings.c:4376
 msgid "subscription-privacy-scope.none"
 msgstr ""
 
 #. TRANSLATORS: Owner
-#: locale/ipp-strings.c:4340
+#: locale/ipp-strings.c:4378
 msgid "subscription-privacy-scope.owner"
 msgstr ""
 
@@ -18689,142 +18808,142 @@
 msgstr ""
 
 #. TRANSLATORS: T33 Subaddress
-#: locale/ipp-strings.c:4342
+#: locale/ipp-strings.c:4380
 msgid "t33-subaddress"
 msgstr ""
 
 #. TRANSLATORS: To Name
-#: locale/ipp-strings.c:4344
+#: locale/ipp-strings.c:4382
 msgid "to-name"
 msgstr ""
 
 #. TRANSLATORS: Transmission Status
-#: locale/ipp-strings.c:4346
+#: locale/ipp-strings.c:4384
 msgid "transmission-status"
 msgstr ""
 
 #. TRANSLATORS: Pending
-#: locale/ipp-strings.c:4348
+#: locale/ipp-strings.c:4386
 msgid "transmission-status.3"
 msgstr ""
 
 #. TRANSLATORS: Pending Retry
-#: locale/ipp-strings.c:4350
+#: locale/ipp-strings.c:4388
 msgid "transmission-status.4"
 msgstr ""
 
 #. TRANSLATORS: Processing
-#: locale/ipp-strings.c:4352
+#: locale/ipp-strings.c:4390
 msgid "transmission-status.5"
 msgstr ""
 
 #. TRANSLATORS: Canceled
-#: locale/ipp-strings.c:4354
+#: locale/ipp-strings.c:4392
 msgid "transmission-status.7"
 msgstr ""
 
 #. TRANSLATORS: Aborted
-#: locale/ipp-strings.c:4356
+#: locale/ipp-strings.c:4394
 msgid "transmission-status.8"
 msgstr ""
 
 #. TRANSLATORS: Completed
-#: locale/ipp-strings.c:4358
+#: locale/ipp-strings.c:4396
 msgid "transmission-status.9"
 msgstr ""
 
 #. TRANSLATORS: Cut
-#: locale/ipp-strings.c:4360
+#: locale/ipp-strings.c:4398
 msgid "trimming"
 msgstr ""
 
 #. TRANSLATORS: Cut Position
-#: locale/ipp-strings.c:4362
+#: locale/ipp-strings.c:4400
 msgid "trimming-offset"
 msgstr ""
 
 #. TRANSLATORS: Cut Edge
-#: locale/ipp-strings.c:4364
+#: locale/ipp-strings.c:4402
 msgid "trimming-reference-edge"
 msgstr ""
 
 #. TRANSLATORS: Bottom
-#: locale/ipp-strings.c:4366
+#: locale/ipp-strings.c:4404
 msgid "trimming-reference-edge.bottom"
 msgstr ""
 
 #. TRANSLATORS: Left
-#: locale/ipp-strings.c:4368
+#: locale/ipp-strings.c:4406
 msgid "trimming-reference-edge.left"
 msgstr ""
 
 #. TRANSLATORS: Right
-#: locale/ipp-strings.c:4370
+#: locale/ipp-strings.c:4408
 msgid "trimming-reference-edge.right"
 msgstr ""
 
 #. TRANSLATORS: Top
-#: locale/ipp-strings.c:4372
+#: locale/ipp-strings.c:4410
 msgid "trimming-reference-edge.top"
 msgstr ""
 
 #. TRANSLATORS: Type of Cut
-#: locale/ipp-strings.c:4374
+#: locale/ipp-strings.c:4412
 msgid "trimming-type"
 msgstr ""
 
 #. TRANSLATORS: Draw Line
-#: locale/ipp-strings.c:4376
+#: locale/ipp-strings.c:4414
 msgid "trimming-type.draw-line"
 msgstr ""
 
 #. TRANSLATORS: Full
-#: locale/ipp-strings.c:4378
+#: locale/ipp-strings.c:4416
 msgid "trimming-type.full"
 msgstr ""
 
 #. TRANSLATORS: Partial
-#: locale/ipp-strings.c:4380
+#: locale/ipp-strings.c:4418
 msgid "trimming-type.partial"
 msgstr ""
 
 #. TRANSLATORS: Perforate
-#: locale/ipp-strings.c:4382
+#: locale/ipp-strings.c:4420
 msgid "trimming-type.perforate"
 msgstr ""
 
 #. TRANSLATORS: Score
-#: locale/ipp-strings.c:4384
+#: locale/ipp-strings.c:4422
 msgid "trimming-type.score"
 msgstr ""
 
 #. TRANSLATORS: Tab
-#: locale/ipp-strings.c:4386
+#: locale/ipp-strings.c:4424
 msgid "trimming-type.tab"
 msgstr ""
 
 #. TRANSLATORS: Cut After
-#: locale/ipp-strings.c:4388
+#: locale/ipp-strings.c:4426
 msgid "trimming-when"
 msgstr ""
 
 #. TRANSLATORS: Every Document
-#: locale/ipp-strings.c:4390
+#: locale/ipp-strings.c:4428
 msgid "trimming-when.after-documents"
 msgstr ""
 
 #. TRANSLATORS: Job
-#: locale/ipp-strings.c:4392
+#: locale/ipp-strings.c:4430
 msgid "trimming-when.after-job"
 msgstr ""
 
 #. TRANSLATORS: Every Set
-#: locale/ipp-strings.c:4394
+#: locale/ipp-strings.c:4432
 msgid "trimming-when.after-sets"
 msgstr ""
 
 #. TRANSLATORS: Every Page
-#: locale/ipp-strings.c:4396
+#: locale/ipp-strings.c:4434
 msgid "trimming-when.after-sheets"
 msgstr ""
 
@@ -18841,57 +18960,57 @@
 msgstr ""
 
 #. TRANSLATORS: X Accuracy
-#: locale/ipp-strings.c:4398
+#: locale/ipp-strings.c:4436
 msgid "x-accuracy"
 msgstr ""
 
 #. TRANSLATORS: X Dimension
-#: locale/ipp-strings.c:4400
+#: locale/ipp-strings.c:4438
 msgid "x-dimension"
 msgstr ""
 
 #. TRANSLATORS: X Offset
-#: locale/ipp-strings.c:4402
+#: locale/ipp-strings.c:4440
 msgid "x-offset"
 msgstr ""
 
 #. TRANSLATORS: X Origin
-#: locale/ipp-strings.c:4404
+#: locale/ipp-strings.c:4442
 msgid "x-origin"
 msgstr ""
 
 #. TRANSLATORS: Y Accuracy
-#: locale/ipp-strings.c:4406
+#: locale/ipp-strings.c:4444
 msgid "y-accuracy"
 msgstr ""
 
 #. TRANSLATORS: Y Dimension
-#: locale/ipp-strings.c:4408
+#: locale/ipp-strings.c:4446
 msgid "y-dimension"
 msgstr ""
 
 #. TRANSLATORS: Y Offset
-#: locale/ipp-strings.c:4410
+#: locale/ipp-strings.c:4448
 msgid "y-offset"
 msgstr ""
 
 #. TRANSLATORS: Y Origin
-#: locale/ipp-strings.c:4412
+#: locale/ipp-strings.c:4450
 msgid "y-origin"
 msgstr ""
 
 #. TRANSLATORS: Z Accuracy
-#: locale/ipp-strings.c:4414
+#: locale/ipp-strings.c:4452
 msgid "z-accuracy"
 msgstr ""
 
 #. TRANSLATORS: Z Dimension
-#: locale/ipp-strings.c:4416
+#: locale/ipp-strings.c:4454
 msgid "z-dimension"
 msgstr ""
 
 #. TRANSLATORS: Z Offset
-#: locale/ipp-strings.c:4418
+#: locale/ipp-strings.c:4456
 msgid "z-offset"
 msgstr ""
 
@@ -18931,6 +19050,6 @@
 msgid "{}                      URI"
 msgstr ""
 
-#: cups/dest.c:1864
+#: cups/dest.c:1863
 msgid "~/.cups/lpoptions file names default destination that does not exist."
 msgstr ""
diff --git a/locale/cups.strings b/locale/cups.strings
index 0c69de5..aedc92f 100644
--- a/locale/cups.strings
+++ b/locale/cups.strings
@@ -347,6 +347,7 @@
 "--name regex            Match service name to regular expression" = "--name regex            Match service name to regular expression";
 "--no-web-forms          Disable web forms for media and supplies" = "--no-web-forms          Disable web forms for media and supplies";
 "--not expression        Unary NOT of expression" = "--not expression        Unary NOT of expression";
+"--pam-service service   Use the named PAM service" = "--pam-service service   Use the named PAM service";
 "--path regex            Match resource path to regular expression" = "--path regex            Match resource path to regular expression";
 "--port number[-number]  Match port to number or range" = "--port number[-number]  Match port to number or range";
 "--print                 Print URI if true" = "--print                 Print URI if true";
@@ -402,6 +403,7 @@
 "-9" = "-9";
 "-90" = "-90";
 "-95" = "-95";
+"-A                      Enable authentication" = "-A                      Enable authentication";
 "-C                      Send requests using chunking (default)" = "-C                      Send requests using chunking (default)";
 "-D description          Specify the textual description of the printer" = "-D description          Specify the textual description of the printer";
 "-D device-uri           Set the device URI for the printer" = "-D device-uri           Set the device URI for the printer";
@@ -456,6 +458,7 @@
 "-d                      Show the default destination" = "-d                      Show the default destination";
 "-d destination          Set default destination" = "-d destination          Set default destination";
 "-d destination          Set the named destination as the server default" = "-d destination          Set the named destination as the server default";
+"-d destination          Specify the destination" = "-d destination          Specify the destination";
 "-d name=value           Set named variable to value" = "-d name=value           Set named variable to value";
 "-d regex                Match domain to regular expression" = "-d regex                Match domain to regular expression";
 "-d spool-directory      Set spool directory" = "-d spool-directory      Set spool directory";
@@ -649,6 +652,7 @@
 "30 mm/sec." = "30 mm/sec.";
 "300 mm/sec." = "300 mm/sec.";
 "300dpi" = "300dpi";
+"30859 Paint Can Label" = "30859 Paint Can Label";
 "35" = "35";
 "360dpi" = "360dpi";
 "360x180dpi" = "360x180dpi";
@@ -854,6 +858,7 @@
 "CustominTearInterval" = "CustominTearInterval";
 "Cut" = "Cut";
 "Cutter" = "Cutter";
+"DYMO" = "DYMO";
 "Dark" = "Dark";
 "Darkness" = "Darkness";
 "Data file sent successfully." = "Data file sent successfully.";
@@ -877,7 +882,6 @@
 "Document #%d does not exist in job #%d." = "Document #%d does not exist in job #%d.";
 "Draft" = "Draft";
 "Duplexer" = "Duplexer";
-"Dymo" = "Dymo";
 "EPL1 Label Printer" = "EPL1 Label Printer";
 "EPL2 Label Printer" = "EPL2 Label Printer";
 "Edit Configuration File" = "Edit Configuration File";
@@ -1086,6 +1090,7 @@
 "Local printer created." = "Local printer created.";
 "Long-Edge (Portrait)" = "Long-Edge (Portrait)";
 "Looking for printer." = "Looking for printer.";
+"Main Roll" = "Main Roll";
 "Manual Feed" = "Manual Feed";
 "Media Size" = "Media Size";
 "Media Source" = "Media Source";
@@ -1258,6 +1263,7 @@
 "Rewind" = "Rewind";
 "SEQUENCE uses indefinite length" = "SEQUENCE uses indefinite length";
 "SSL/TLS Negotiation Error" = "SSL/TLS Negotiation Error";
+"Second Roll (DUO/Twin Only)" = "Second Roll (DUO/Twin Only)";
 "See Other" = "See Other";
 "See remote printer." = "See remote printer.";
 "Self-signed credentials are blocked." = "Self-signed credentials are blocked.";
@@ -2114,6 +2120,10 @@
 "finishing-template.trim-after-job" = "Trim After Job";
 // TRANSLATORS: Trim After Every Page
 "finishing-template.trim-after-pages" = "Trim After Every Page";
+// TRANSLATORS: Trim After Every Set
+"finishing-template.trim-after-sets" = "Trim After Every Set";
+// TRANSLATORS: Trim After Every Page
+"finishing-template.trim-after-sheets" = "Trim After Every Page";
 // TRANSLATORS: Finishings
 "finishings" = "Finishings";
 // TRANSLATORS: Finishings
@@ -2358,7 +2368,7 @@
 // TRANSLATORS: Job Accounting User ID
 "job-accounting-user-id" = "Job Accounting User ID";
 // TRANSLATORS: Job Cancel After
-"job-cancel-after" = "job-cancel-after";
+"job-cancel-after" = "Cancel job after";
 // TRANSLATORS: Copies
 "job-copies" = "Copies";
 // TRANSLATORS: Back Cover
@@ -2469,21 +2479,21 @@
 // TRANSLATORS: Job Recipient Name
 "job-recipient-name" = "Job Recipient Name";
 // TRANSLATORS: Job Retain Until
-"job-retain-until" = "job-retain-until";
+"job-retain-until" = "Retain job until";
 // TRANSLATORS: Job Retain Until Interval
-"job-retain-until-interval" = "job-retain-until-interval";
+"job-retain-until-interval" = "Retain job until interval";
 // TRANSLATORS: Job Retain Until Time
-"job-retain-until-time" = "job-retain-until-time";
+"job-retain-until-time" = "Retain job until time";
 // TRANSLATORS: End Of Day
-"job-retain-until.end-of-day" = "job-retain-until.end-of-day";
+"job-retain-until.end-of-day" = "End of day";
 // TRANSLATORS: End Of Month
-"job-retain-until.end-of-month" = "job-retain-until.end-of-month";
+"job-retain-until.end-of-month" = "End of month";
 // TRANSLATORS: End Of Week
-"job-retain-until.end-of-week" = "job-retain-until.end-of-week";
+"job-retain-until.end-of-week" = "End of week";
 // TRANSLATORS: Indefinite
-"job-retain-until.indefinite" = "job-retain-until.indefinite";
+"job-retain-until.indefinite" = "Indefinitely";
 // TRANSLATORS: None
-"job-retain-until.none" = "job-retain-until.none";
+"job-retain-until.none" = "Never";
 // TRANSLATORS: Job Save Disposition
 "job-save-disposition" = "Job Save Disposition";
 // TRANSLATORS: Job Sheet Message
@@ -3207,6 +3217,32 @@
 "media-type.cardstock" = "Cardstock";
 // TRANSLATORS: CD
 "media-type.cd" = "CD";
+// TRANSLATORS: Photo Advanced Paper
+"media-type.com.hp.advanced-photo" = "Photo Advanced Paper";
+// TRANSLATORS: Brochure Glossy Paper
+"media-type.com.hp.brochure-glossy" = "Brochure Glossy Paper";
+// TRANSLATORS: Brochure Matte Paper
+"media-type.com.hp.brochure-matte" = "Brochure Matte Paper";
+// TRANSLATORS: Matte Coverstock
+"media-type.com.hp.cover-matte" = "Matte Coverstock";
+// TRANSLATORS: EcoSMART Lite Paper
+"media-type.com.hp.ecosmart-lite" = "EcoSMART Lite Paper";
+// TRANSLATORS: Everyday Glossy Paper
+"media-type.com.hp.everyday-glossy" = "Everyday Glossy Paper";
+// TRANSLATORS: Everyday Matte Paper
+"media-type.com.hp.everyday-matte" = "Everyday Matte Paper";
+// TRANSLATORS: Extra Heavyweight Paper
+"media-type.com.hp.extra-heavy" = "Extra Heavyweight Paper";
+// TRANSLATORS: Intermediate Paper
+"media-type.com.hp.intermediate" = "Intermediate Paper";
+// TRANSLATORS: Mid-Weight Paper
+"media-type.com.hp.mid-weight" = "Mid-Weight Paper";
+// TRANSLATORS: Inkjet Premium Paper
+"media-type.com.hp.premium-inkjet" = "Inkjet Premium Paper";
+// TRANSLATORS: Photo Premium Paper
+"media-type.com.hp.premium-photo" = "Photo Premium Paper";
+// TRANSLATORS: Premium Matte Presentation Paper
+"media-type.com.hp.premium-presentation-matte" = "Premium Matte Presentation Paper";
 // TRANSLATORS: Continuous
 "media-type.continuous" = "Continuous";
 // TRANSLATORS: Continuous Long
@@ -3303,6 +3339,14 @@
 "media-type.image-setter-paper" = "Image Setter Paper";
 // TRANSLATORS: Imaging Cylinder
 "media-type.imaging-cylinder" = "Imaging Cylinder";
+// TRANSLATORS: Photo Paper Plus Glossy II
+"media-type.jp.co.canon-photo-paper-plus-glossy-ii" = "Photo Paper Plus Glossy II";
+// TRANSLATORS: Photo Paper Pro Platinum
+"media-type.jp.co.canon-photo-paper-pro-platinum" = "Photo Paper Pro Platinum";
+// TRANSLATORS: Photo Paper Plus Glossy II
+"media-type.jp.co.canon_photo-paper-plus-glossy-ii" = "Photo Paper Plus Glossy II";
+// TRANSLATORS: Photo Paper Pro Platinum
+"media-type.jp.co.canon_photo-paper-pro-platinum" = "Photo Paper Pro Platinum";
 // TRANSLATORS: Labels
 "media-type.labels" = "Labels";
 // TRANSLATORS: Colored Labels
@@ -3622,7 +3666,7 @@
 // TRANSLATORS: Envelope Chou 3
 "media.jpn_chou3_120x235mm" = "Envelope Chou 3";
 // TRANSLATORS: Envelope Chou 40
-"media.jpn_chou40_90x225mm" = "media.jpn_chou40_90x225mm";
+"media.jpn_chou40_90x225mm" = "Envelope Chou 40";
 // TRANSLATORS: Envelope Chou 4
 "media.jpn_chou4_90x205mm" = "Envelope Chou 4";
 // TRANSLATORS: Hagaki
@@ -4265,13 +4309,13 @@
 // TRANSLATORS: Print Optimization
 "print-content-optimize" = "Print Optimization";
 // TRANSLATORS: Print Content Optimize Actual
-"print-content-optimize-actual" = "print-content-optimize-actual";
+"print-content-optimize-actual" = "Print Optimization";
 // TRANSLATORS: Automatic
 "print-content-optimize.auto" = "Automatic";
 // TRANSLATORS: Graphics
 "print-content-optimize.graphic" = "Graphics";
 // TRANSLATORS: Graphics
-"print-content-optimize.graphics" = "print-content-optimize.graphics";
+"print-content-optimize.graphics" = "Graphics";
 // TRANSLATORS: Photo
 "print-content-optimize.photo" = "Photo";
 // TRANSLATORS: Text
@@ -4279,7 +4323,7 @@
 // TRANSLATORS: Text and Graphics
 "print-content-optimize.text-and-graphic" = "Text and Graphics";
 // TRANSLATORS: Text And Graphics
-"print-content-optimize.text-and-graphics" = "print-content-optimize.text-and-graphics";
+"print-content-optimize.text-and-graphics" = "Text and Graphics";
 // TRANSLATORS: Print Objects
 "print-objects" = "Print Objects";
 // TRANSLATORS: Print Quality
@@ -4334,25 +4378,25 @@
 "printer %s/%s is idle.  enabled since %s" = "printer %s/%s is idle.  enabled since %s";
 "printer %s/%s now printing %s-%d.  enabled since %s" = "printer %s/%s now printing %s-%d.  enabled since %s";
 // TRANSLATORS: Printer Kind
-"printer-kind" = "printer-kind";
+"printer-kind" = "Printer Kind";
 // TRANSLATORS: Disc
-"printer-kind.disc" = "printer-kind.disc";
+"printer-kind.disc" = "Disc";
 // TRANSLATORS: Document
-"printer-kind.document" = "printer-kind.document";
+"printer-kind.document" = "Document";
 // TRANSLATORS: Envelope
-"printer-kind.envelope" = "printer-kind.envelope";
+"printer-kind.envelope" = "Envelope";
 // TRANSLATORS: Label
-"printer-kind.label" = "printer-kind.label";
+"printer-kind.label" = "Label";
 // TRANSLATORS: Large Format
-"printer-kind.large-format" = "printer-kind.large-format";
+"printer-kind.large-format" = "Large format";
 // TRANSLATORS: Photo
-"printer-kind.photo" = "printer-kind.photo";
+"printer-kind.photo" = "Photo";
 // TRANSLATORS: Postcard
-"printer-kind.postcard" = "printer-kind.postcard";
+"printer-kind.postcard" = "Postcard";
 // TRANSLATORS: Receipt
-"printer-kind.receipt" = "printer-kind.receipt";
+"printer-kind.receipt" = "Receipt";
 // TRANSLATORS: Roll
-"printer-kind.roll" = "printer-kind.roll";
+"printer-kind.roll" = "Roll";
 // TRANSLATORS: Message From Operator
 "printer-message-from-operator" = "Message From Operator";
 // TRANSLATORS: Print Resolution
@@ -4624,15 +4668,15 @@
 // TRANSLATORS: Fan Failure
 "printer-state-reasons.fan-failure" = "Fan Failure";
 // TRANSLATORS: Fax Modem Life Almost Over
-"printer-state-reasons.fax-modem-life-almost-over" = "printer-state-reasons.fax-modem-life-almost-over";
+"printer-state-reasons.fax-modem-life-almost-over" = "Fax Modem Life Almost Over";
 // TRANSLATORS: Fax Modem Life Over
-"printer-state-reasons.fax-modem-life-over" = "printer-state-reasons.fax-modem-life-over";
+"printer-state-reasons.fax-modem-life-over" = "Fax Modem Life Over";
 // TRANSLATORS: Fax Modem Missing
-"printer-state-reasons.fax-modem-missing" = "printer-state-reasons.fax-modem-missing";
+"printer-state-reasons.fax-modem-missing" = "Fax Modem Missing";
 // TRANSLATORS: Fax Modem Turned Off
-"printer-state-reasons.fax-modem-turned-off" = "printer-state-reasons.fax-modem-turned-off";
+"printer-state-reasons.fax-modem-turned-off" = "Fax Modem Turned Off";
 // TRANSLATORS: Fax Modem Turned On
-"printer-state-reasons.fax-modem-turned-on" = "printer-state-reasons.fax-modem-turned-on";
+"printer-state-reasons.fax-modem-turned-on" = "Fax Modem Turned On";
 // TRANSLATORS: Folder Added
 "printer-state-reasons.folder-added" = "Folder Added";
 // TRANSLATORS: Folder Almost Empty
@@ -4796,23 +4840,23 @@
 // TRANSLATORS: Input Media Size Change
 "printer-state-reasons.input-media-size-change" = "Input Media Size Change";
 // TRANSLATORS: Input Media Tray Failure
-"printer-state-reasons.input-media-tray-failure" = "printer-state-reasons.input-media-tray-failure";
+"printer-state-reasons.input-media-tray-failure" = "Input Media Tray Failure";
 // TRANSLATORS: Input Media Tray Feed Error
-"printer-state-reasons.input-media-tray-feed-error" = "printer-state-reasons.input-media-tray-feed-error";
+"printer-state-reasons.input-media-tray-feed-error" = "Input Media Tray Feed Error";
 // TRANSLATORS: Input Media Tray Jam
-"printer-state-reasons.input-media-tray-jam" = "printer-state-reasons.input-media-tray-jam";
+"printer-state-reasons.input-media-tray-jam" = "Input Media Tray Jam";
 // TRANSLATORS: Input Media Type Change
 "printer-state-reasons.input-media-type-change" = "Input Media Type Change";
 // TRANSLATORS: Input Media Weight Change
 "printer-state-reasons.input-media-weight-change" = "Input Media Weight Change";
 // TRANSLATORS: Input Pick Roller Failure
-"printer-state-reasons.input-pick-roller-failure" = "printer-state-reasons.input-pick-roller-failure";
+"printer-state-reasons.input-pick-roller-failure" = "Input Pick Roller Failure";
 // TRANSLATORS: Input Pick Roller Life Over
-"printer-state-reasons.input-pick-roller-life-over" = "printer-state-reasons.input-pick-roller-life-over";
+"printer-state-reasons.input-pick-roller-life-over" = "Input Pick Roller Life Over";
 // TRANSLATORS: Input Pick Roller Life Warn
-"printer-state-reasons.input-pick-roller-life-warn" = "printer-state-reasons.input-pick-roller-life-warn";
+"printer-state-reasons.input-pick-roller-life-warn" = "Input Pick Roller Life Warn";
 // TRANSLATORS: Input Pick Roller Missing
-"printer-state-reasons.input-pick-roller-missing" = "printer-state-reasons.input-pick-roller-missing";
+"printer-state-reasons.input-pick-roller-missing" = "Input Pick Roller Missing";
 // TRANSLATORS: Input Tray Elevation Failure
 "printer-state-reasons.input-tray-elevation-failure" = "Input Tray Elevation Failure";
 // TRANSLATORS: Paper tray is missing
@@ -4998,63 +5042,63 @@
 // TRANSLATORS: Marker Adjusting Print Quality
 "printer-state-reasons.marker-adjusting-print-quality" = "Marker Adjusting Print Quality";
 // TRANSLATORS: Marker Cleaner Missing
-"printer-state-reasons.marker-cleaner-missing" = "printer-state-reasons.marker-cleaner-missing";
+"printer-state-reasons.marker-cleaner-missing" = "Marker Cleaner Missing";
 // TRANSLATORS: Marker Developer Almost Empty
 "printer-state-reasons.marker-developer-almost-empty" = "Marker Developer Almost Empty";
 // TRANSLATORS: Marker Developer Empty
 "printer-state-reasons.marker-developer-empty" = "Marker Developer Empty";
 // TRANSLATORS: Marker Developer Missing
-"printer-state-reasons.marker-developer-missing" = "printer-state-reasons.marker-developer-missing";
+"printer-state-reasons.marker-developer-missing" = "Marker Developer Missing";
 // TRANSLATORS: Marker Fuser Missing
-"printer-state-reasons.marker-fuser-missing" = "printer-state-reasons.marker-fuser-missing";
+"printer-state-reasons.marker-fuser-missing" = "Marker Fuser Missing";
 // TRANSLATORS: Marker Fuser Thermistor Failure
 "printer-state-reasons.marker-fuser-thermistor-failure" = "Marker Fuser Thermistor Failure";
 // TRANSLATORS: Marker Fuser Timing Failure
 "printer-state-reasons.marker-fuser-timing-failure" = "Marker Fuser Timing Failure";
 // TRANSLATORS: Marker Ink Almost Empty
-"printer-state-reasons.marker-ink-almost-empty" = "Marker Ink Almost Empty";
+"printer-state-reasons.marker-ink-almost-empty" = "Low ink";
 // TRANSLATORS: Marker Ink Empty
-"printer-state-reasons.marker-ink-empty" = "Marker Ink Empty";
+"printer-state-reasons.marker-ink-empty" = "Ink empty";
 // TRANSLATORS: Marker Ink Missing
-"printer-state-reasons.marker-ink-missing" = "printer-state-reasons.marker-ink-missing";
+"printer-state-reasons.marker-ink-missing" = "Ink missing";
 // TRANSLATORS: Marker Opc Missing
-"printer-state-reasons.marker-opc-missing" = "printer-state-reasons.marker-opc-missing";
+"printer-state-reasons.marker-opc-missing" = "OPC missing";
 // TRANSLATORS: Marker Print Ribbon Almost Empty
-"printer-state-reasons.marker-print-ribbon-almost-empty" = "Marker Print Ribbon Almost Empty";
+"printer-state-reasons.marker-print-ribbon-almost-empty" = "Print ribbon Almost Empty";
 // TRANSLATORS: Marker Print Ribbon Empty
-"printer-state-reasons.marker-print-ribbon-empty" = "Marker Print Ribbon Empty";
+"printer-state-reasons.marker-print-ribbon-empty" = "Print ribbon Empty";
 // TRANSLATORS: Marker Print Ribbon Missing
-"printer-state-reasons.marker-print-ribbon-missing" = "printer-state-reasons.marker-print-ribbon-missing";
+"printer-state-reasons.marker-print-ribbon-missing" = "Print ribbon missing";
 // TRANSLATORS: Marker Supply Almost Empty
-"printer-state-reasons.marker-supply-almost-empty" = "printer-state-reasons.marker-supply-almost-empty";
+"printer-state-reasons.marker-supply-almost-empty" = "Ink/toner almost empty";
 // TRANSLATORS: Ink/toner empty
-"printer-state-reasons.marker-supply-empty" = "Marker Supply Empty";
+"printer-state-reasons.marker-supply-empty" = "Ink/toner empty";
 // TRANSLATORS: Ink/toner low
-"printer-state-reasons.marker-supply-low" = "Marker Supply Low";
+"printer-state-reasons.marker-supply-low" = "Ink/toner low";
 // TRANSLATORS: Marker Supply Missing
-"printer-state-reasons.marker-supply-missing" = "printer-state-reasons.marker-supply-missing";
+"printer-state-reasons.marker-supply-missing" = "Ink/toner missing";
 // TRANSLATORS: Marker Toner Cartridge Missing
-"printer-state-reasons.marker-toner-cartridge-missing" = "Marker Toner Cartridge Missing";
+"printer-state-reasons.marker-toner-cartridge-missing" = "Toner cartridge missing";
 // TRANSLATORS: Marker Toner Missing
-"printer-state-reasons.marker-toner-missing" = "printer-state-reasons.marker-toner-missing";
+"printer-state-reasons.marker-toner-missing" = "Toner missing";
 // TRANSLATORS: Ink/toner waste bin almost full
-"printer-state-reasons.marker-waste-almost-full" = "Marker Waste Almost Full";
+"printer-state-reasons.marker-waste-almost-full" = "Ink/toner waste bin almost full";
 // TRANSLATORS: Ink/toner waste bin full
-"printer-state-reasons.marker-waste-full" = "Marker Waste Full";
+"printer-state-reasons.marker-waste-full" = "Ink/toner waste bin full";
 // TRANSLATORS: Marker Waste Ink Receptacle Almost Full
 "printer-state-reasons.marker-waste-ink-receptacle-almost-full" = "Marker Waste Ink Receptacle Almost Full";
 // TRANSLATORS: Marker Waste Ink Receptacle Full
 "printer-state-reasons.marker-waste-ink-receptacle-full" = "Marker Waste Ink Receptacle Full";
 // TRANSLATORS: Marker Waste Ink Receptacle Missing
-"printer-state-reasons.marker-waste-ink-receptacle-missing" = "printer-state-reasons.marker-waste-ink-receptacle-missing";
+"printer-state-reasons.marker-waste-ink-receptacle-missing" = "Marker Waste Ink Receptacle Missing";
 // TRANSLATORS: Marker Waste Missing
-"printer-state-reasons.marker-waste-missing" = "printer-state-reasons.marker-waste-missing";
+"printer-state-reasons.marker-waste-missing" = "Ink/toner waste bin missing";
 // TRANSLATORS: Marker Waste Toner Receptacle Almost Full
 "printer-state-reasons.marker-waste-toner-receptacle-almost-full" = "Marker Waste Toner Receptacle Almost Full";
 // TRANSLATORS: Marker Waste Toner Receptacle Full
 "printer-state-reasons.marker-waste-toner-receptacle-full" = "Marker Waste Toner Receptacle Full";
 // TRANSLATORS: Marker Waste Toner Receptacle Missing
-"printer-state-reasons.marker-waste-toner-receptacle-missing" = "printer-state-reasons.marker-waste-toner-receptacle-missing";
+"printer-state-reasons.marker-waste-toner-receptacle-missing" = "Marker Waste Toner Receptacle Missing";
 // TRANSLATORS: Material Empty
 "printer-state-reasons.material-empty" = "Material Empty";
 // TRANSLATORS: Material Low
diff --git a/locale/cups_ca.po b/locale/cups_ca.po
index f614af3..7e189e6 100644
--- a/locale/cups_ca.po
+++ b/locale/cups_ca.po
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: CUPS 2.3\n"
 "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
-"POT-Creation-Date: 2019-08-23 09:13-0400\n"
+"POT-Creation-Date: 2019-12-18 20:19-0500\n"
 "PO-Revision-Date: 2012-09-29 11:21+0200\n"
 "Last-Translator: Àngel Mompó <mecatxis@gmail.com>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
@@ -1579,6 +1579,9 @@
 msgid "--not expression        Unary NOT of expression"
 msgstr ""
 
+msgid "--pam-service service   Use the named PAM service"
+msgstr ""
+
 msgid "--path regex            Match resource path to regular expression"
 msgstr ""
 
@@ -1749,6 +1752,9 @@
 msgid "-95"
 msgstr "-95"
 
+msgid "-A                      Enable authentication"
+msgstr ""
+
 msgid "-C                      Send requests using chunking (default)"
 msgstr ""
 
@@ -1920,6 +1926,9 @@
 msgid "-d destination          Set the named destination as the server default"
 msgstr ""
 
+msgid "-d destination          Specify the destination"
+msgstr ""
+
 msgid "-d name=value           Set named variable to value"
 msgstr ""
 
@@ -2529,6 +2538,9 @@
 msgid "300dpi"
 msgstr "300ppp"
 
+msgid "30859 Paint Can Label"
+msgstr ""
+
 msgid "35"
 msgstr "35"
 
@@ -3179,6 +3191,9 @@
 msgid "Cutter"
 msgstr "Ganiveta"
 
+msgid "DYMO"
+msgstr ""
+
 msgid "Dark"
 msgstr "Fosc"
 
@@ -3268,9 +3283,6 @@
 msgid "Duplexer"
 msgstr "Unitat d'impressió a dues cares"
 
-msgid "Dymo"
-msgstr "Dymo"
-
 msgid "EPL1 Label Printer"
 msgstr "Impressora d'etiquetes EPL1"
 
@@ -3927,6 +3939,9 @@
 msgid "Looking for printer."
 msgstr "S'està buscant la impressora."
 
+msgid "Main Roll"
+msgstr ""
+
 msgid "Manual Feed"
 msgstr "Alimentació manual"
 
@@ -4465,6 +4480,9 @@
 msgid "SSL/TLS Negotiation Error"
 msgstr "S'ha produït un error mentre es negociava el SSL/TLS"
 
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
 msgid "See Other"
 msgstr "Vegeu altres"
 
@@ -6596,6 +6614,14 @@
 msgid "finishing-template.trim-after-pages"
 msgstr ""
 
+#. TRANSLATORS: Trim After Every Set
+msgid "finishing-template.trim-after-sets"
+msgstr ""
+
+#. TRANSLATORS: Trim After Every Page
+msgid "finishing-template.trim-after-sheets"
+msgstr ""
+
 #. TRANSLATORS: Finishings
 msgid "finishings"
 msgstr ""
@@ -8939,6 +8965,58 @@
 msgid "media-type.cd"
 msgstr ""
 
+#. TRANSLATORS: Photo Advanced Paper
+msgid "media-type.com.hp.advanced-photo"
+msgstr ""
+
+#. TRANSLATORS: Brochure Glossy Paper
+msgid "media-type.com.hp.brochure-glossy"
+msgstr ""
+
+#. TRANSLATORS: Brochure Matte Paper
+msgid "media-type.com.hp.brochure-matte"
+msgstr ""
+
+#. TRANSLATORS: Matte Coverstock
+msgid "media-type.com.hp.cover-matte"
+msgstr ""
+
+#. TRANSLATORS: EcoSMART Lite Paper
+msgid "media-type.com.hp.ecosmart-lite"
+msgstr ""
+
+#. TRANSLATORS: Everyday Glossy Paper
+msgid "media-type.com.hp.everyday-glossy"
+msgstr ""
+
+#. TRANSLATORS: Everyday Matte Paper
+msgid "media-type.com.hp.everyday-matte"
+msgstr ""
+
+#. TRANSLATORS: Extra Heavyweight Paper
+msgid "media-type.com.hp.extra-heavy"
+msgstr ""
+
+#. TRANSLATORS: Intermediate Paper
+msgid "media-type.com.hp.intermediate"
+msgstr ""
+
+#. TRANSLATORS: Mid-Weight Paper
+msgid "media-type.com.hp.mid-weight"
+msgstr ""
+
+#. TRANSLATORS: Inkjet Premium Paper
+msgid "media-type.com.hp.premium-inkjet"
+msgstr ""
+
+#. TRANSLATORS: Photo Premium Paper
+msgid "media-type.com.hp.premium-photo"
+msgstr ""
+
+#. TRANSLATORS: Premium Matte Presentation Paper
+msgid "media-type.com.hp.premium-presentation-matte"
+msgstr ""
+
 #. TRANSLATORS: Continuous
 msgid "media-type.continuous"
 msgstr ""
@@ -9131,6 +9209,22 @@
 msgid "media-type.imaging-cylinder"
 msgstr ""
 
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
+msgstr ""
+
 #. TRANSLATORS: Labels
 msgid "media-type.labels"
 msgstr ""
@@ -15161,6 +15255,9 @@
 #~ "Necessiteu una nom d'usuari de Samba per exportar els controladors "
 #~ "d'impressora"
 
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
 #~ msgid "Export Printers to Samba"
 #~ msgstr "Exportar les impressores al Samba"
 
diff --git a/locale/cups_cs.po b/locale/cups_cs.po
index bd244a4..329e9ff 100644
--- a/locale/cups_cs.po
+++ b/locale/cups_cs.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: CUPS 2.3\n"
 "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
-"POT-Creation-Date: 2019-08-23 09:13-0400\n"
+"POT-Creation-Date: 2019-12-18 20:19-0500\n"
 "PO-Revision-Date: 2012-09-14 10:26+0100\n"
 "Last-Translator: Jan Bartos <jan.bartos@madeta.cz>\n"
 "Language-Team: Czech\n"
@@ -1428,6 +1428,9 @@
 msgid "--not expression        Unary NOT of expression"
 msgstr ""
 
+msgid "--pam-service service   Use the named PAM service"
+msgstr ""
+
 msgid "--path regex            Match resource path to regular expression"
 msgstr ""
 
@@ -1598,6 +1601,9 @@
 msgid "-95"
 msgstr "-95"
 
+msgid "-A                      Enable authentication"
+msgstr ""
+
 msgid "-C                      Send requests using chunking (default)"
 msgstr ""
 
@@ -1769,6 +1775,9 @@
 msgid "-d destination          Set the named destination as the server default"
 msgstr ""
 
+msgid "-d destination          Specify the destination"
+msgstr ""
+
 msgid "-d name=value           Set named variable to value"
 msgstr ""
 
@@ -2378,6 +2387,9 @@
 msgid "300dpi"
 msgstr "300 dpi"
 
+msgid "30859 Paint Can Label"
+msgstr ""
+
 msgid "35"
 msgstr "35"
 
@@ -3024,6 +3036,9 @@
 msgid "Cutter"
 msgstr "Výstřižek"
 
+msgid "DYMO"
+msgstr ""
+
 msgid "Dark"
 msgstr "Tmavý"
 
@@ -3107,9 +3122,6 @@
 msgid "Duplexer"
 msgstr "Duplexní jednotka"
 
-msgid "Dymo"
-msgstr "Dymo"
-
 msgid "EPL1 Label Printer"
 msgstr "Tiskárna štítků EPL1"
 
@@ -3762,6 +3774,9 @@
 msgid "Looking for printer."
 msgstr ""
 
+msgid "Main Roll"
+msgstr ""
+
 msgid "Manual Feed"
 msgstr "Ruční podávání"
 
@@ -4293,6 +4308,9 @@
 msgid "SSL/TLS Negotiation Error"
 msgstr ""
 
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
 msgid "See Other"
 msgstr "Viz další"
 
@@ -6394,6 +6412,14 @@
 msgid "finishing-template.trim-after-pages"
 msgstr ""
 
+#. TRANSLATORS: Trim After Every Set
+msgid "finishing-template.trim-after-sets"
+msgstr ""
+
+#. TRANSLATORS: Trim After Every Page
+msgid "finishing-template.trim-after-sheets"
+msgstr ""
+
 #. TRANSLATORS: Finishings
 msgid "finishings"
 msgstr ""
@@ -8720,6 +8746,58 @@
 msgid "media-type.cd"
 msgstr ""
 
+#. TRANSLATORS: Photo Advanced Paper
+msgid "media-type.com.hp.advanced-photo"
+msgstr ""
+
+#. TRANSLATORS: Brochure Glossy Paper
+msgid "media-type.com.hp.brochure-glossy"
+msgstr ""
+
+#. TRANSLATORS: Brochure Matte Paper
+msgid "media-type.com.hp.brochure-matte"
+msgstr ""
+
+#. TRANSLATORS: Matte Coverstock
+msgid "media-type.com.hp.cover-matte"
+msgstr ""
+
+#. TRANSLATORS: EcoSMART Lite Paper
+msgid "media-type.com.hp.ecosmart-lite"
+msgstr ""
+
+#. TRANSLATORS: Everyday Glossy Paper
+msgid "media-type.com.hp.everyday-glossy"
+msgstr ""
+
+#. TRANSLATORS: Everyday Matte Paper
+msgid "media-type.com.hp.everyday-matte"
+msgstr ""
+
+#. TRANSLATORS: Extra Heavyweight Paper
+msgid "media-type.com.hp.extra-heavy"
+msgstr ""
+
+#. TRANSLATORS: Intermediate Paper
+msgid "media-type.com.hp.intermediate"
+msgstr ""
+
+#. TRANSLATORS: Mid-Weight Paper
+msgid "media-type.com.hp.mid-weight"
+msgstr ""
+
+#. TRANSLATORS: Inkjet Premium Paper
+msgid "media-type.com.hp.premium-inkjet"
+msgstr ""
+
+#. TRANSLATORS: Photo Premium Paper
+msgid "media-type.com.hp.premium-photo"
+msgstr ""
+
+#. TRANSLATORS: Premium Matte Presentation Paper
+msgid "media-type.com.hp.premium-presentation-matte"
+msgstr ""
+
 #. TRANSLATORS: Continuous
 msgid "media-type.continuous"
 msgstr ""
@@ -8912,6 +8990,22 @@
 msgid "media-type.imaging-cylinder"
 msgstr ""
 
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
+msgstr ""
+
 #. TRANSLATORS: Labels
 msgid "media-type.labels"
 msgstr ""
@@ -14903,5 +14997,8 @@
 msgid "~/.cups/lpoptions file names default destination that does not exist."
 msgstr ""
 
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
 #~ msgid "Export Printers to Samba"
 #~ msgstr "Export tiskáren do Samby"
diff --git a/locale/cups_de.po b/locale/cups_de.po
index 0363a3c..6ac08cb 100644
--- a/locale/cups_de.po
+++ b/locale/cups_de.po
@@ -22,7 +22,7 @@
 msgstr ""
 "Project-Id-Version: CUPS 2.3\n"
 "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
-"POT-Creation-Date: 2019-08-23 09:13-0400\n"
+"POT-Creation-Date: 2019-12-18 20:19-0500\n"
 "PO-Revision-Date: 2017-10-25 14:57+0200\n"
 "Last-Translator: Joachim Schwender <joachim.schwender@web.de>\n"
 "Language-Team: German <LL@li.org>\n"
@@ -1495,6 +1495,9 @@
 msgid "--not expression        Unary NOT of expression"
 msgstr ""
 
+msgid "--pam-service service   Use the named PAM service"
+msgstr ""
+
 msgid "--path regex            Match resource path to regular expression"
 msgstr ""
 
@@ -1665,6 +1668,9 @@
 msgid "-95"
 msgstr "-95"
 
+msgid "-A                      Enable authentication"
+msgstr ""
+
 msgid "-C                      Send requests using chunking (default)"
 msgstr ""
 
@@ -1836,6 +1842,9 @@
 msgid "-d destination          Set the named destination as the server default"
 msgstr ""
 
+msgid "-d destination          Specify the destination"
+msgstr ""
+
 msgid "-d name=value           Set named variable to value"
 msgstr ""
 
@@ -2450,6 +2459,9 @@
 msgid "300dpi"
 msgstr "300 dpi"
 
+msgid "30859 Paint Can Label"
+msgstr ""
+
 msgid "35"
 msgstr "35"
 
@@ -3099,6 +3111,9 @@
 msgid "Cutter"
 msgstr "Abschneider"
 
+msgid "DYMO"
+msgstr ""
+
 msgid "Dark"
 msgstr "Dunkel"
 
@@ -3188,9 +3203,6 @@
 msgid "Duplexer"
 msgstr "Duplexer"
 
-msgid "Dymo"
-msgstr "Dymo"
-
 msgid "EPL1 Label Printer"
 msgstr "EPL1 Etikettendrucker"
 
@@ -3845,6 +3857,9 @@
 msgid "Looking for printer."
 msgstr "Suche nach Drucker."
 
+msgid "Main Roll"
+msgstr ""
+
 msgid "Manual Feed"
 msgstr "Manuelle Papierzufuhr"
 
@@ -4381,6 +4396,9 @@
 msgid "SSL/TLS Negotiation Error"
 msgstr "SSL/TLS Verhandlungsfehler"
 
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
 msgid "See Other"
 msgstr "Siehe auch"
 
@@ -6510,6 +6528,14 @@
 msgid "finishing-template.trim-after-pages"
 msgstr ""
 
+#. TRANSLATORS: Trim After Every Set
+msgid "finishing-template.trim-after-sets"
+msgstr ""
+
+#. TRANSLATORS: Trim After Every Page
+msgid "finishing-template.trim-after-sheets"
+msgstr ""
+
 #. TRANSLATORS: Finishings
 msgid "finishings"
 msgstr ""
@@ -8843,6 +8869,58 @@
 msgid "media-type.cd"
 msgstr ""
 
+#. TRANSLATORS: Photo Advanced Paper
+msgid "media-type.com.hp.advanced-photo"
+msgstr ""
+
+#. TRANSLATORS: Brochure Glossy Paper
+msgid "media-type.com.hp.brochure-glossy"
+msgstr ""
+
+#. TRANSLATORS: Brochure Matte Paper
+msgid "media-type.com.hp.brochure-matte"
+msgstr ""
+
+#. TRANSLATORS: Matte Coverstock
+msgid "media-type.com.hp.cover-matte"
+msgstr ""
+
+#. TRANSLATORS: EcoSMART Lite Paper
+msgid "media-type.com.hp.ecosmart-lite"
+msgstr ""
+
+#. TRANSLATORS: Everyday Glossy Paper
+msgid "media-type.com.hp.everyday-glossy"
+msgstr ""
+
+#. TRANSLATORS: Everyday Matte Paper
+msgid "media-type.com.hp.everyday-matte"
+msgstr ""
+
+#. TRANSLATORS: Extra Heavyweight Paper
+msgid "media-type.com.hp.extra-heavy"
+msgstr ""
+
+#. TRANSLATORS: Intermediate Paper
+msgid "media-type.com.hp.intermediate"
+msgstr ""
+
+#. TRANSLATORS: Mid-Weight Paper
+msgid "media-type.com.hp.mid-weight"
+msgstr ""
+
+#. TRANSLATORS: Inkjet Premium Paper
+msgid "media-type.com.hp.premium-inkjet"
+msgstr ""
+
+#. TRANSLATORS: Photo Premium Paper
+msgid "media-type.com.hp.premium-photo"
+msgstr ""
+
+#. TRANSLATORS: Premium Matte Presentation Paper
+msgid "media-type.com.hp.premium-presentation-matte"
+msgstr ""
+
 #. TRANSLATORS: Continuous
 msgid "media-type.continuous"
 msgstr ""
@@ -9035,6 +9113,22 @@
 msgid "media-type.imaging-cylinder"
 msgstr ""
 
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
+msgstr ""
+
 #. TRANSLATORS: Labels
 msgid "media-type.labels"
 msgstr ""
@@ -15034,6 +15128,9 @@
 #~ msgstr ""
 #~ "Ein Samba-Benutzername ist erforderlich, um Druckertreiber zu exportieren"
 
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
 #~ msgid "Export Printers to Samba"
 #~ msgstr "Drucker zu Samba exportieren"
 
diff --git a/locale/cups_en.po b/locale/cups_en.po
index fdb34d6..fd7ea0a 100644
--- a/locale/cups_en.po
+++ b/locale/cups_en.po
@@ -24,7 +24,7 @@
 msgstr ""
 "Project-Id-Version: CUPS 2.3.0\n"
 "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
-"POT-Creation-Date: 2019-08-23 09:13-0400\n"
+"POT-Creation-Date: 2019-12-18 20:19-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: English\n"
@@ -1599,6 +1599,9 @@
 msgid "--not expression        Unary NOT of expression"
 msgstr "--not expression        Unary NOT of expression"
 
+msgid "--pam-service service   Use the named PAM service"
+msgstr ""
+
 msgid "--path regex            Match resource path to regular expression"
 msgstr "--path regex            Match resource path to regular expression"
 
@@ -1774,6 +1777,9 @@
 msgid "-95"
 msgstr "-95"
 
+msgid "-A                      Enable authentication"
+msgstr ""
+
 msgid "-C                      Send requests using chunking (default)"
 msgstr "-C                      Send requests using chunking (default)"
 
@@ -1955,6 +1961,9 @@
 msgstr ""
 "-d destination          Set the named destination as the server default"
 
+msgid "-d destination          Specify the destination"
+msgstr ""
+
 msgid "-d name=value           Set named variable to value"
 msgstr "-d name=value           Set named variable to value"
 
@@ -2596,6 +2605,9 @@
 msgid "300dpi"
 msgstr "300dpi"
 
+msgid "30859 Paint Can Label"
+msgstr ""
+
 msgid "35"
 msgstr "35"
 
@@ -3245,6 +3257,9 @@
 msgid "Cutter"
 msgstr "Cutter"
 
+msgid "DYMO"
+msgstr ""
+
 msgid "Dark"
 msgstr "Dark"
 
@@ -3334,9 +3349,6 @@
 msgid "Duplexer"
 msgstr "Duplexer"
 
-msgid "Dymo"
-msgstr "Dymo"
-
 msgid "EPL1 Label Printer"
 msgstr "EPL1 Label Printer"
 
@@ -3994,6 +4006,9 @@
 msgid "Looking for printer."
 msgstr "Looking for printer."
 
+msgid "Main Roll"
+msgstr ""
+
 msgid "Manual Feed"
 msgstr "Manual Feed"
 
@@ -4530,6 +4545,9 @@
 msgid "SSL/TLS Negotiation Error"
 msgstr "SSL/TLS Negotiation Error"
 
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
 msgid "See Other"
 msgstr "See Other"
 
@@ -6678,6 +6696,14 @@
 msgid "finishing-template.trim-after-pages"
 msgstr "Trim After Every Page"
 
+#. TRANSLATORS: Trim After Every Set
+msgid "finishing-template.trim-after-sets"
+msgstr "Trim After Every Set"
+
+#. TRANSLATORS: Trim After Every Page
+msgid "finishing-template.trim-after-sheets"
+msgstr "Trim After Every Page"
+
 #. TRANSLATORS: Finishings
 msgid "finishings"
 msgstr "Finishings"
@@ -9022,6 +9048,58 @@
 msgid "media-type.cd"
 msgstr "CD"
 
+#. TRANSLATORS: Photo Advanced Paper
+msgid "media-type.com.hp.advanced-photo"
+msgstr "Photo Advanced Paper"
+
+#. TRANSLATORS: Brochure Glossy Paper
+msgid "media-type.com.hp.brochure-glossy"
+msgstr "Brochure Glossy Paper"
+
+#. TRANSLATORS: Brochure Matte Paper
+msgid "media-type.com.hp.brochure-matte"
+msgstr "Brochure Matte Paper"
+
+#. TRANSLATORS: Matte Coverstock
+msgid "media-type.com.hp.cover-matte"
+msgstr "Matte Coverstock"
+
+#. TRANSLATORS: EcoSMART Lite Paper
+msgid "media-type.com.hp.ecosmart-lite"
+msgstr "EcoSMART Lite Paper"
+
+#. TRANSLATORS: Everyday Glossy Paper
+msgid "media-type.com.hp.everyday-glossy"
+msgstr "Everyday Glossy Paper"
+
+#. TRANSLATORS: Everyday Matte Paper
+msgid "media-type.com.hp.everyday-matte"
+msgstr "Everyday Matte Paper"
+
+#. TRANSLATORS: Extra Heavyweight Paper
+msgid "media-type.com.hp.extra-heavy"
+msgstr "Extra Heavyweight Paper"
+
+#. TRANSLATORS: Intermediate Paper
+msgid "media-type.com.hp.intermediate"
+msgstr "Intermediate Paper"
+
+#. TRANSLATORS: Mid-Weight Paper
+msgid "media-type.com.hp.mid-weight"
+msgstr "Mid-Weight Paper"
+
+#. TRANSLATORS: Inkjet Premium Paper
+msgid "media-type.com.hp.premium-inkjet"
+msgstr "Inkjet Premium Paper"
+
+#. TRANSLATORS: Photo Premium Paper
+msgid "media-type.com.hp.premium-photo"
+msgstr "Photo Premium Paper"
+
+#. TRANSLATORS: Premium Matte Presentation Paper
+msgid "media-type.com.hp.premium-presentation-matte"
+msgstr "Premium Matte Presentation Paper"
+
 #. TRANSLATORS: Continuous
 msgid "media-type.continuous"
 msgstr "Continuous"
@@ -9214,6 +9292,22 @@
 msgid "media-type.imaging-cylinder"
 msgstr "Imaging Cylinder"
 
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
+msgstr "Photo Paper Plus Glossy II"
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
+msgstr "Photo Paper Pro Platinum"
+
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
+msgstr "Photo Paper Plus Glossy II"
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
+msgstr "Photo Paper Pro Platinum"
+
 #. TRANSLATORS: Labels
 msgid "media-type.labels"
 msgstr "Labels"
@@ -12870,15 +12964,15 @@
 msgid "printer-state-reasons.marker-opc-missing"
 msgstr "OPC missing"
 
-#. TRANSLATORS: Print ribbon Almost Empty
+#. TRANSLATORS: Marker Print Ribbon Almost Empty
 msgid "printer-state-reasons.marker-print-ribbon-almost-empty"
 msgstr "Print ribbon Almost Empty"
 
-#. TRANSLATORS: Print ribbon Empty
+#. TRANSLATORS: Marker Print Ribbon Empty
 msgid "printer-state-reasons.marker-print-ribbon-empty"
 msgstr "Print ribbon Empty"
 
-#. TRANSLATORS: Print ribbon Missing
+#. TRANSLATORS: Marker Print Ribbon Missing
 msgid "printer-state-reasons.marker-print-ribbon-missing"
 msgstr "Print ribbon missing"
 
@@ -15210,3 +15304,6 @@
 
 msgid "~/.cups/lpoptions file names default destination that does not exist."
 msgstr "~/.cups/lpoptions file names default destination that does not exist."
+
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
diff --git a/locale/cups_es.po b/locale/cups_es.po
index 6bf4831..3a31f4d 100644
--- a/locale/cups_es.po
+++ b/locale/cups_es.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: CUPS 2.3\n"
 "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
-"POT-Creation-Date: 2019-08-23 09:13-0400\n"
+"POT-Creation-Date: 2019-12-18 20:19-0500\n"
 "PO-Revision-Date: 2016-06-26 21:17+0100\n"
 "Last-Translator: Juan Pablo González Riopedre <jpgriopedre@yahoo.es>\n"
 "Language-Team: Spanish\n"
@@ -1582,6 +1582,9 @@
 msgid "--not expression        Unary NOT of expression"
 msgstr ""
 
+msgid "--pam-service service   Use the named PAM service"
+msgstr ""
+
 msgid "--path regex            Match resource path to regular expression"
 msgstr ""
 
@@ -1752,6 +1755,9 @@
 msgid "-95"
 msgstr "-95"
 
+msgid "-A                      Enable authentication"
+msgstr ""
+
 msgid "-C                      Send requests using chunking (default)"
 msgstr ""
 
@@ -1923,6 +1929,9 @@
 msgid "-d destination          Set the named destination as the server default"
 msgstr ""
 
+msgid "-d destination          Specify the destination"
+msgstr ""
+
 msgid "-d name=value           Set named variable to value"
 msgstr ""
 
@@ -2532,6 +2541,9 @@
 msgid "300dpi"
 msgstr "300ppp"
 
+msgid "30859 Paint Can Label"
+msgstr ""
+
 msgid "35"
 msgstr "35"
 
@@ -3182,6 +3194,9 @@
 msgid "Cutter"
 msgstr "Cortadora"
 
+msgid "DYMO"
+msgstr ""
+
 msgid "Dark"
 msgstr "Oscuro"
 
@@ -3271,9 +3286,6 @@
 msgid "Duplexer"
 msgstr "Unidad de impresión dúplex"
 
-msgid "Dymo"
-msgstr "Dymo"
-
 msgid "EPL1 Label Printer"
 msgstr "Impresora de etiquetas EPL1"
 
@@ -3928,6 +3940,9 @@
 msgid "Looking for printer."
 msgstr ""
 
+msgid "Main Roll"
+msgstr ""
+
 msgid "Manual Feed"
 msgstr "Alimentación manual"
 
@@ -4465,6 +4480,9 @@
 msgid "SSL/TLS Negotiation Error"
 msgstr "Error en negociación SSL/TLS"
 
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
 msgid "See Other"
 msgstr "Ver otros"
 
@@ -6612,6 +6630,14 @@
 msgid "finishing-template.trim-after-pages"
 msgstr ""
 
+#. TRANSLATORS: Trim After Every Set
+msgid "finishing-template.trim-after-sets"
+msgstr ""
+
+#. TRANSLATORS: Trim After Every Page
+msgid "finishing-template.trim-after-sheets"
+msgstr ""
+
 #. TRANSLATORS: Finishings
 msgid "finishings"
 msgstr ""
@@ -8953,6 +8979,58 @@
 msgid "media-type.cd"
 msgstr ""
 
+#. TRANSLATORS: Photo Advanced Paper
+msgid "media-type.com.hp.advanced-photo"
+msgstr ""
+
+#. TRANSLATORS: Brochure Glossy Paper
+msgid "media-type.com.hp.brochure-glossy"
+msgstr ""
+
+#. TRANSLATORS: Brochure Matte Paper
+msgid "media-type.com.hp.brochure-matte"
+msgstr ""
+
+#. TRANSLATORS: Matte Coverstock
+msgid "media-type.com.hp.cover-matte"
+msgstr ""
+
+#. TRANSLATORS: EcoSMART Lite Paper
+msgid "media-type.com.hp.ecosmart-lite"
+msgstr ""
+
+#. TRANSLATORS: Everyday Glossy Paper
+msgid "media-type.com.hp.everyday-glossy"
+msgstr ""
+
+#. TRANSLATORS: Everyday Matte Paper
+msgid "media-type.com.hp.everyday-matte"
+msgstr ""
+
+#. TRANSLATORS: Extra Heavyweight Paper
+msgid "media-type.com.hp.extra-heavy"
+msgstr ""
+
+#. TRANSLATORS: Intermediate Paper
+msgid "media-type.com.hp.intermediate"
+msgstr ""
+
+#. TRANSLATORS: Mid-Weight Paper
+msgid "media-type.com.hp.mid-weight"
+msgstr ""
+
+#. TRANSLATORS: Inkjet Premium Paper
+msgid "media-type.com.hp.premium-inkjet"
+msgstr ""
+
+#. TRANSLATORS: Photo Premium Paper
+msgid "media-type.com.hp.premium-photo"
+msgstr ""
+
+#. TRANSLATORS: Premium Matte Presentation Paper
+msgid "media-type.com.hp.premium-presentation-matte"
+msgstr ""
+
 #. TRANSLATORS: Continuous
 msgid "media-type.continuous"
 msgstr ""
@@ -9145,6 +9223,22 @@
 msgid "media-type.imaging-cylinder"
 msgstr ""
 
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
+msgstr ""
+
 #. TRANSLATORS: Labels
 msgid "media-type.labels"
 msgstr ""
@@ -15172,6 +15266,9 @@
 #~ "Se requiere un nombre de usuario Samba para exportar los controladores de "
 #~ "impresora"
 
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
 #~ msgid "Export Printers to Samba"
 #~ msgstr "Exportar impresoras a Samba"
 
diff --git a/locale/cups_fr.po b/locale/cups_fr.po
index f965def..7d22828 100644
--- a/locale/cups_fr.po
+++ b/locale/cups_fr.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: CUPS 2.3\n"
 "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
-"POT-Creation-Date: 2019-08-23 09:13-0400\n"
+"POT-Creation-Date: 2019-12-18 20:19-0500\n"
 "PO-Revision-Date: 2012-12-12 11:12+0100\n"
 "Last-Translator: Stéphane Blondon <stephane.blondon@gmail.com>\n"
 "Language-Team: French <LL@li.org>\n"
@@ -1439,6 +1439,9 @@
 msgid "--not expression        Unary NOT of expression"
 msgstr ""
 
+msgid "--pam-service service   Use the named PAM service"
+msgstr ""
+
 msgid "--path regex            Match resource path to regular expression"
 msgstr ""
 
@@ -1609,6 +1612,9 @@
 msgid "-95"
 msgstr "-95"
 
+msgid "-A                      Enable authentication"
+msgstr ""
+
 msgid "-C                      Send requests using chunking (default)"
 msgstr ""
 
@@ -1780,6 +1786,9 @@
 msgid "-d destination          Set the named destination as the server default"
 msgstr ""
 
+msgid "-d destination          Specify the destination"
+msgstr ""
+
 msgid "-d name=value           Set named variable to value"
 msgstr ""
 
@@ -2389,6 +2398,9 @@
 msgid "300dpi"
 msgstr "300 ppp"
 
+msgid "30859 Paint Can Label"
+msgstr ""
+
 msgid "35"
 msgstr "35"
 
@@ -3035,6 +3047,9 @@
 msgid "Cutter"
 msgstr "Cutter"
 
+msgid "DYMO"
+msgstr ""
+
 msgid "Dark"
 msgstr "Foncé"
 
@@ -3120,9 +3135,6 @@
 msgid "Duplexer"
 msgstr "Duplexeur"
 
-msgid "Dymo"
-msgstr "Dymo"
-
 msgid "EPL1 Label Printer"
 msgstr "Imprimante pour étiquettes EPL1"
 
@@ -3775,6 +3787,9 @@
 msgid "Looking for printer."
 msgstr "Recherche d'imprimante en cours."
 
+msgid "Main Roll"
+msgstr ""
+
 msgid "Manual Feed"
 msgstr ""
 
@@ -4306,6 +4321,9 @@
 msgid "SSL/TLS Negotiation Error"
 msgstr "Erreur de négotiation SSL/TLS"
 
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
 msgid "See Other"
 msgstr "Autres"
 
@@ -6412,6 +6430,14 @@
 msgid "finishing-template.trim-after-pages"
 msgstr ""
 
+#. TRANSLATORS: Trim After Every Set
+msgid "finishing-template.trim-after-sets"
+msgstr ""
+
+#. TRANSLATORS: Trim After Every Page
+msgid "finishing-template.trim-after-sheets"
+msgstr ""
+
 #. TRANSLATORS: Finishings
 msgid "finishings"
 msgstr ""
@@ -8738,6 +8764,58 @@
 msgid "media-type.cd"
 msgstr ""
 
+#. TRANSLATORS: Photo Advanced Paper
+msgid "media-type.com.hp.advanced-photo"
+msgstr ""
+
+#. TRANSLATORS: Brochure Glossy Paper
+msgid "media-type.com.hp.brochure-glossy"
+msgstr ""
+
+#. TRANSLATORS: Brochure Matte Paper
+msgid "media-type.com.hp.brochure-matte"
+msgstr ""
+
+#. TRANSLATORS: Matte Coverstock
+msgid "media-type.com.hp.cover-matte"
+msgstr ""
+
+#. TRANSLATORS: EcoSMART Lite Paper
+msgid "media-type.com.hp.ecosmart-lite"
+msgstr ""
+
+#. TRANSLATORS: Everyday Glossy Paper
+msgid "media-type.com.hp.everyday-glossy"
+msgstr ""
+
+#. TRANSLATORS: Everyday Matte Paper
+msgid "media-type.com.hp.everyday-matte"
+msgstr ""
+
+#. TRANSLATORS: Extra Heavyweight Paper
+msgid "media-type.com.hp.extra-heavy"
+msgstr ""
+
+#. TRANSLATORS: Intermediate Paper
+msgid "media-type.com.hp.intermediate"
+msgstr ""
+
+#. TRANSLATORS: Mid-Weight Paper
+msgid "media-type.com.hp.mid-weight"
+msgstr ""
+
+#. TRANSLATORS: Inkjet Premium Paper
+msgid "media-type.com.hp.premium-inkjet"
+msgstr ""
+
+#. TRANSLATORS: Photo Premium Paper
+msgid "media-type.com.hp.premium-photo"
+msgstr ""
+
+#. TRANSLATORS: Premium Matte Presentation Paper
+msgid "media-type.com.hp.premium-presentation-matte"
+msgstr ""
+
 #. TRANSLATORS: Continuous
 msgid "media-type.continuous"
 msgstr ""
@@ -8930,6 +9008,22 @@
 msgid "media-type.imaging-cylinder"
 msgstr ""
 
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
+msgstr ""
+
 #. TRANSLATORS: Labels
 msgid "media-type.labels"
 msgstr ""
@@ -14921,5 +15015,8 @@
 msgid "~/.cups/lpoptions file names default destination that does not exist."
 msgstr ""
 
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
 #~ msgid "Export Printers to Samba"
 #~ msgstr "Exporter les imprimantes vers SAMBA"
diff --git a/locale/cups_it.po b/locale/cups_it.po
index ff5e45f..90bcb38 100644
--- a/locale/cups_it.po
+++ b/locale/cups_it.po
@@ -12,7 +12,7 @@
 msgstr ""
 "Project-Id-Version: CUPS 2.3\n"
 "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
-"POT-Creation-Date: 2019-08-23 09:13-0400\n"
+"POT-Creation-Date: 2019-12-18 20:19-0500\n"
 "PO-Revision-Date: 2013-07-14 12:00+0200\n"
 "Last-Translator: Giovanni Scafora <giovanni@archlinux.org>\n"
 "Language-Team: Italian - Arch Linux Italian Team <giovanni@archlinux.org>\n"
@@ -1579,6 +1579,9 @@
 msgid "--not expression        Unary NOT of expression"
 msgstr ""
 
+msgid "--pam-service service   Use the named PAM service"
+msgstr ""
+
 msgid "--path regex            Match resource path to regular expression"
 msgstr ""
 
@@ -1749,6 +1752,9 @@
 msgid "-95"
 msgstr "-95"
 
+msgid "-A                      Enable authentication"
+msgstr ""
+
 msgid "-C                      Send requests using chunking (default)"
 msgstr ""
 
@@ -1920,6 +1926,9 @@
 msgid "-d destination          Set the named destination as the server default"
 msgstr ""
 
+msgid "-d destination          Specify the destination"
+msgstr ""
+
 msgid "-d name=value           Set named variable to value"
 msgstr ""
 
@@ -2529,6 +2538,9 @@
 msgid "300dpi"
 msgstr "300dpi"
 
+msgid "30859 Paint Can Label"
+msgstr ""
+
 msgid "35"
 msgstr "35"
 
@@ -3178,6 +3190,9 @@
 msgid "Cutter"
 msgstr "Taglierino"
 
+msgid "DYMO"
+msgstr ""
+
 msgid "Dark"
 msgstr "Scuro"
 
@@ -3268,9 +3283,6 @@
 msgid "Duplexer"
 msgstr "Duplexer"
 
-msgid "Dymo"
-msgstr "Dymo"
-
 msgid "EPL1 Label Printer"
 msgstr "EPL1 Label Printer"
 
@@ -3925,6 +3937,9 @@
 msgid "Looking for printer."
 msgstr "Cerca una stampante."
 
+msgid "Main Roll"
+msgstr ""
+
 msgid "Manual Feed"
 msgstr "Alimentazione manuale"
 
@@ -4462,6 +4477,9 @@
 msgid "SSL/TLS Negotiation Error"
 msgstr "Errore di negoziazione SSL/TLS"
 
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
 msgid "See Other"
 msgstr "Vedi altro"
 
@@ -6597,6 +6615,14 @@
 msgid "finishing-template.trim-after-pages"
 msgstr ""
 
+#. TRANSLATORS: Trim After Every Set
+msgid "finishing-template.trim-after-sets"
+msgstr ""
+
+#. TRANSLATORS: Trim After Every Page
+msgid "finishing-template.trim-after-sheets"
+msgstr ""
+
 #. TRANSLATORS: Finishings
 msgid "finishings"
 msgstr ""
@@ -8935,6 +8961,58 @@
 msgid "media-type.cd"
 msgstr ""
 
+#. TRANSLATORS: Photo Advanced Paper
+msgid "media-type.com.hp.advanced-photo"
+msgstr ""
+
+#. TRANSLATORS: Brochure Glossy Paper
+msgid "media-type.com.hp.brochure-glossy"
+msgstr ""
+
+#. TRANSLATORS: Brochure Matte Paper
+msgid "media-type.com.hp.brochure-matte"
+msgstr ""
+
+#. TRANSLATORS: Matte Coverstock
+msgid "media-type.com.hp.cover-matte"
+msgstr ""
+
+#. TRANSLATORS: EcoSMART Lite Paper
+msgid "media-type.com.hp.ecosmart-lite"
+msgstr ""
+
+#. TRANSLATORS: Everyday Glossy Paper
+msgid "media-type.com.hp.everyday-glossy"
+msgstr ""
+
+#. TRANSLATORS: Everyday Matte Paper
+msgid "media-type.com.hp.everyday-matte"
+msgstr ""
+
+#. TRANSLATORS: Extra Heavyweight Paper
+msgid "media-type.com.hp.extra-heavy"
+msgstr ""
+
+#. TRANSLATORS: Intermediate Paper
+msgid "media-type.com.hp.intermediate"
+msgstr ""
+
+#. TRANSLATORS: Mid-Weight Paper
+msgid "media-type.com.hp.mid-weight"
+msgstr ""
+
+#. TRANSLATORS: Inkjet Premium Paper
+msgid "media-type.com.hp.premium-inkjet"
+msgstr ""
+
+#. TRANSLATORS: Photo Premium Paper
+msgid "media-type.com.hp.premium-photo"
+msgstr ""
+
+#. TRANSLATORS: Premium Matte Presentation Paper
+msgid "media-type.com.hp.premium-presentation-matte"
+msgstr ""
+
 #. TRANSLATORS: Continuous
 msgid "media-type.continuous"
 msgstr ""
@@ -9127,6 +9205,22 @@
 msgid "media-type.imaging-cylinder"
 msgstr ""
 
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
+msgstr ""
+
 #. TRANSLATORS: Labels
 msgid "media-type.labels"
 msgstr ""
@@ -15151,6 +15245,9 @@
 #~ msgstr ""
 #~ "Per esportare i driver della stampante è richiesto un username di Samba"
 
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
 #~ msgid "Export Printers to Samba"
 #~ msgstr "Esporta le stampanti per Samba"
 
diff --git a/locale/cups_ja.po b/locale/cups_ja.po
index b47e7f1..a287be2 100644
--- a/locale/cups_ja.po
+++ b/locale/cups_ja.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: CUPS 2.3\n"
 "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
-"POT-Creation-Date: 2019-08-23 09:13-0400\n"
+"POT-Creation-Date: 2019-12-18 20:19-0500\n"
 "PO-Revision-Date: 2014-11-15 19:27+0900\n"
 "Last-Translator: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
 "Language-Team: Japanese - OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
@@ -1573,6 +1573,9 @@
 msgid "--not expression        Unary NOT of expression"
 msgstr ""
 
+msgid "--pam-service service   Use the named PAM service"
+msgstr ""
+
 msgid "--path regex            Match resource path to regular expression"
 msgstr ""
 
@@ -1743,6 +1746,9 @@
 msgid "-95"
 msgstr "-95"
 
+msgid "-A                      Enable authentication"
+msgstr ""
+
 msgid "-C                      Send requests using chunking (default)"
 msgstr ""
 
@@ -1914,6 +1920,9 @@
 msgid "-d destination          Set the named destination as the server default"
 msgstr ""
 
+msgid "-d destination          Specify the destination"
+msgstr ""
+
 msgid "-d name=value           Set named variable to value"
 msgstr ""
 
@@ -2523,6 +2532,9 @@
 msgid "300dpi"
 msgstr "300dpi"
 
+msgid "30859 Paint Can Label"
+msgstr ""
+
 msgid "35"
 msgstr "35"
 
@@ -3172,6 +3184,9 @@
 msgid "Cutter"
 msgstr "カッター"
 
+msgid "DYMO"
+msgstr ""
+
 msgid "Dark"
 msgstr "濃い"
 
@@ -3264,9 +3279,6 @@
 msgid "Duplexer"
 msgstr "両面オプション"
 
-msgid "Dymo"
-msgstr "Dymo"
-
 msgid "EPL1 Label Printer"
 msgstr "EPL1 ラベルプリンター"
 
@@ -3923,6 +3935,9 @@
 msgid "Looking for printer."
 msgstr "プリンターを探しています。"
 
+msgid "Main Roll"
+msgstr ""
+
 msgid "Manual Feed"
 msgstr "手差し"
 
@@ -4458,6 +4473,9 @@
 msgid "SSL/TLS Negotiation Error"
 msgstr "SSL/TLS のネゴシエーションエラー"
 
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
 msgid "See Other"
 msgstr "残りを見てください"
 
@@ -6580,6 +6598,14 @@
 msgid "finishing-template.trim-after-pages"
 msgstr ""
 
+#. TRANSLATORS: Trim After Every Set
+msgid "finishing-template.trim-after-sets"
+msgstr ""
+
+#. TRANSLATORS: Trim After Every Page
+msgid "finishing-template.trim-after-sheets"
+msgstr ""
+
 #. TRANSLATORS: Finishings
 msgid "finishings"
 msgstr ""
@@ -8927,6 +8953,58 @@
 msgid "media-type.cd"
 msgstr ""
 
+#. TRANSLATORS: Photo Advanced Paper
+msgid "media-type.com.hp.advanced-photo"
+msgstr ""
+
+#. TRANSLATORS: Brochure Glossy Paper
+msgid "media-type.com.hp.brochure-glossy"
+msgstr ""
+
+#. TRANSLATORS: Brochure Matte Paper
+msgid "media-type.com.hp.brochure-matte"
+msgstr ""
+
+#. TRANSLATORS: Matte Coverstock
+msgid "media-type.com.hp.cover-matte"
+msgstr ""
+
+#. TRANSLATORS: EcoSMART Lite Paper
+msgid "media-type.com.hp.ecosmart-lite"
+msgstr ""
+
+#. TRANSLATORS: Everyday Glossy Paper
+msgid "media-type.com.hp.everyday-glossy"
+msgstr ""
+
+#. TRANSLATORS: Everyday Matte Paper
+msgid "media-type.com.hp.everyday-matte"
+msgstr ""
+
+#. TRANSLATORS: Extra Heavyweight Paper
+msgid "media-type.com.hp.extra-heavy"
+msgstr ""
+
+#. TRANSLATORS: Intermediate Paper
+msgid "media-type.com.hp.intermediate"
+msgstr ""
+
+#. TRANSLATORS: Mid-Weight Paper
+msgid "media-type.com.hp.mid-weight"
+msgstr ""
+
+#. TRANSLATORS: Inkjet Premium Paper
+msgid "media-type.com.hp.premium-inkjet"
+msgstr ""
+
+#. TRANSLATORS: Photo Premium Paper
+msgid "media-type.com.hp.premium-photo"
+msgstr ""
+
+#. TRANSLATORS: Premium Matte Presentation Paper
+msgid "media-type.com.hp.premium-presentation-matte"
+msgstr ""
+
 #. TRANSLATORS: Continuous
 msgid "media-type.continuous"
 msgstr ""
@@ -9119,6 +9197,22 @@
 msgid "media-type.imaging-cylinder"
 msgstr ""
 
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
+msgstr ""
+
 #. TRANSLATORS: Labels
 msgid "media-type.labels"
 msgstr ""
@@ -15169,6 +15263,9 @@
 #~ msgstr ""
 #~ "プリンタードライバーをエクスポートするには、Samba のユーザー名が必要です。"
 
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
 #~ msgid "Export Printers to Samba"
 #~ msgstr "Samba へプリンターをエクスポート"
 
diff --git a/locale/cups_pt_BR.po b/locale/cups_pt_BR.po
index e5fd768..cdb4392 100644
--- a/locale/cups_pt_BR.po
+++ b/locale/cups_pt_BR.po
@@ -22,7 +22,7 @@
 msgstr ""
 "Project-Id-Version: CUPS 2.3\n"
 "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
-"POT-Creation-Date: 2019-08-23 09:13-0400\n"
+"POT-Creation-Date: 2019-12-18 20:19-0500\n"
 "PO-Revision-Date: 2016-01-31 16:45-0200\n"
 "Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <traducao-cups-pt-br@googlegroups.com>\n"
@@ -1586,6 +1586,9 @@
 msgid "--not expression        Unary NOT of expression"
 msgstr ""
 
+msgid "--pam-service service   Use the named PAM service"
+msgstr ""
+
 msgid "--path regex            Match resource path to regular expression"
 msgstr ""
 
@@ -1756,6 +1759,9 @@
 msgid "-95"
 msgstr "-95"
 
+msgid "-A                      Enable authentication"
+msgstr ""
+
 msgid "-C                      Send requests using chunking (default)"
 msgstr ""
 
@@ -1927,6 +1933,9 @@
 msgid "-d destination          Set the named destination as the server default"
 msgstr ""
 
+msgid "-d destination          Specify the destination"
+msgstr ""
+
 msgid "-d name=value           Set named variable to value"
 msgstr ""
 
@@ -2536,6 +2545,9 @@
 msgid "300dpi"
 msgstr "300dpi"
 
+msgid "30859 Paint Can Label"
+msgstr ""
+
 msgid "35"
 msgstr "35"
 
@@ -3186,6 +3198,9 @@
 msgid "Cutter"
 msgstr "Cortador"
 
+msgid "DYMO"
+msgstr ""
+
 msgid "Dark"
 msgstr "Escuro"
 
@@ -3275,9 +3290,6 @@
 msgid "Duplexer"
 msgstr "Duplexador"
 
-msgid "Dymo"
-msgstr "Dymo"
-
 msgid "EPL1 Label Printer"
 msgstr "Impressora de etiqueta EPL1"
 
@@ -3932,6 +3944,9 @@
 msgid "Looking for printer."
 msgstr "Procurando impressoras."
 
+msgid "Main Roll"
+msgstr ""
+
 msgid "Manual Feed"
 msgstr "Alimentação manual"
 
@@ -4470,6 +4485,9 @@
 msgid "SSL/TLS Negotiation Error"
 msgstr "Erro de negociação SSL/TLS"
 
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
 msgid "See Other"
 msgstr "Veja outro"
 
@@ -6607,6 +6625,14 @@
 msgid "finishing-template.trim-after-pages"
 msgstr ""
 
+#. TRANSLATORS: Trim After Every Set
+msgid "finishing-template.trim-after-sets"
+msgstr ""
+
+#. TRANSLATORS: Trim After Every Page
+msgid "finishing-template.trim-after-sheets"
+msgstr ""
+
 #. TRANSLATORS: Finishings
 msgid "finishings"
 msgstr ""
@@ -8944,6 +8970,58 @@
 msgid "media-type.cd"
 msgstr ""
 
+#. TRANSLATORS: Photo Advanced Paper
+msgid "media-type.com.hp.advanced-photo"
+msgstr ""
+
+#. TRANSLATORS: Brochure Glossy Paper
+msgid "media-type.com.hp.brochure-glossy"
+msgstr ""
+
+#. TRANSLATORS: Brochure Matte Paper
+msgid "media-type.com.hp.brochure-matte"
+msgstr ""
+
+#. TRANSLATORS: Matte Coverstock
+msgid "media-type.com.hp.cover-matte"
+msgstr ""
+
+#. TRANSLATORS: EcoSMART Lite Paper
+msgid "media-type.com.hp.ecosmart-lite"
+msgstr ""
+
+#. TRANSLATORS: Everyday Glossy Paper
+msgid "media-type.com.hp.everyday-glossy"
+msgstr ""
+
+#. TRANSLATORS: Everyday Matte Paper
+msgid "media-type.com.hp.everyday-matte"
+msgstr ""
+
+#. TRANSLATORS: Extra Heavyweight Paper
+msgid "media-type.com.hp.extra-heavy"
+msgstr ""
+
+#. TRANSLATORS: Intermediate Paper
+msgid "media-type.com.hp.intermediate"
+msgstr ""
+
+#. TRANSLATORS: Mid-Weight Paper
+msgid "media-type.com.hp.mid-weight"
+msgstr ""
+
+#. TRANSLATORS: Inkjet Premium Paper
+msgid "media-type.com.hp.premium-inkjet"
+msgstr ""
+
+#. TRANSLATORS: Photo Premium Paper
+msgid "media-type.com.hp.premium-photo"
+msgstr ""
+
+#. TRANSLATORS: Premium Matte Presentation Paper
+msgid "media-type.com.hp.premium-presentation-matte"
+msgstr ""
+
 #. TRANSLATORS: Continuous
 msgid "media-type.continuous"
 msgstr ""
@@ -9136,6 +9214,22 @@
 msgid "media-type.imaging-cylinder"
 msgstr ""
 
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
+msgstr ""
+
 #. TRANSLATORS: Labels
 msgid "media-type.labels"
 msgstr ""
@@ -15148,6 +15242,9 @@
 #~ "Um nome de usuário do Samba é necessário para exportar drivers de "
 #~ "impressora"
 
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
 #~ msgid "Export Printers to Samba"
 #~ msgstr "Exportar impressoras para o Samba"
 
diff --git a/locale/cups_ru.po b/locale/cups_ru.po
index dc078f6..5a0d0da 100644
--- a/locale/cups_ru.po
+++ b/locale/cups_ru.po
@@ -2,7 +2,7 @@
 msgstr ""
 "Project-Id-Version: CUPS 2.0\n"
 "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
-"POT-Creation-Date: 2019-08-23 09:13-0400\n"
+"POT-Creation-Date: 2019-12-18 20:19-0500\n"
 "PO-Revision-Date: 2015-01-28 12:00-0800\n"
 "Last-Translator: Aleksandr Proklov\n"
 "Language-Team: Russian - PuppyRus Linux Team\n"
@@ -1554,6 +1554,9 @@
 msgid "--not expression        Unary NOT of expression"
 msgstr ""
 
+msgid "--pam-service service   Use the named PAM service"
+msgstr ""
+
 msgid "--path regex            Match resource path to regular expression"
 msgstr ""
 
@@ -1724,6 +1727,9 @@
 msgid "-95"
 msgstr "-95"
 
+msgid "-A                      Enable authentication"
+msgstr ""
+
 msgid "-C                      Send requests using chunking (default)"
 msgstr ""
 
@@ -1895,6 +1901,9 @@
 msgid "-d destination          Set the named destination as the server default"
 msgstr ""
 
+msgid "-d destination          Specify the destination"
+msgstr ""
+
 msgid "-d name=value           Set named variable to value"
 msgstr ""
 
@@ -2504,6 +2513,9 @@
 msgid "300dpi"
 msgstr "300dpi"
 
+msgid "30859 Paint Can Label"
+msgstr ""
+
 msgid "35"
 msgstr "35"
 
@@ -3153,6 +3165,9 @@
 msgid "Cutter"
 msgstr "Резак"
 
+msgid "DYMO"
+msgstr ""
+
 msgid "Dark"
 msgstr "Темный"
 
@@ -3236,9 +3251,6 @@
 msgid "Duplexer"
 msgstr "Дуплексер"
 
-msgid "Dymo"
-msgstr "Dymo"
-
 msgid "EPL1 Label Printer"
 msgstr "Принтер для печати этикеток EPL1"
 
@@ -3893,6 +3905,9 @@
 msgid "Looking for printer."
 msgstr "Поиск принтера."
 
+msgid "Main Roll"
+msgstr ""
+
 msgid "Manual Feed"
 msgstr "Ручная подача"
 
@@ -4430,6 +4445,9 @@
 msgid "SSL/TLS Negotiation Error"
 msgstr "SSL/TLS Negotiation Error"
 
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
 msgid "See Other"
 msgstr "Посмотреть другие"
 
@@ -6556,6 +6574,14 @@
 msgid "finishing-template.trim-after-pages"
 msgstr ""
 
+#. TRANSLATORS: Trim After Every Set
+msgid "finishing-template.trim-after-sets"
+msgstr ""
+
+#. TRANSLATORS: Trim After Every Page
+msgid "finishing-template.trim-after-sheets"
+msgstr ""
+
 #. TRANSLATORS: Finishings
 msgid "finishings"
 msgstr ""
@@ -8892,6 +8918,58 @@
 msgid "media-type.cd"
 msgstr ""
 
+#. TRANSLATORS: Photo Advanced Paper
+msgid "media-type.com.hp.advanced-photo"
+msgstr ""
+
+#. TRANSLATORS: Brochure Glossy Paper
+msgid "media-type.com.hp.brochure-glossy"
+msgstr ""
+
+#. TRANSLATORS: Brochure Matte Paper
+msgid "media-type.com.hp.brochure-matte"
+msgstr ""
+
+#. TRANSLATORS: Matte Coverstock
+msgid "media-type.com.hp.cover-matte"
+msgstr ""
+
+#. TRANSLATORS: EcoSMART Lite Paper
+msgid "media-type.com.hp.ecosmart-lite"
+msgstr ""
+
+#. TRANSLATORS: Everyday Glossy Paper
+msgid "media-type.com.hp.everyday-glossy"
+msgstr ""
+
+#. TRANSLATORS: Everyday Matte Paper
+msgid "media-type.com.hp.everyday-matte"
+msgstr ""
+
+#. TRANSLATORS: Extra Heavyweight Paper
+msgid "media-type.com.hp.extra-heavy"
+msgstr ""
+
+#. TRANSLATORS: Intermediate Paper
+msgid "media-type.com.hp.intermediate"
+msgstr ""
+
+#. TRANSLATORS: Mid-Weight Paper
+msgid "media-type.com.hp.mid-weight"
+msgstr ""
+
+#. TRANSLATORS: Inkjet Premium Paper
+msgid "media-type.com.hp.premium-inkjet"
+msgstr ""
+
+#. TRANSLATORS: Photo Premium Paper
+msgid "media-type.com.hp.premium-photo"
+msgstr ""
+
+#. TRANSLATORS: Premium Matte Presentation Paper
+msgid "media-type.com.hp.premium-presentation-matte"
+msgstr ""
+
 #. TRANSLATORS: Continuous
 msgid "media-type.continuous"
 msgstr ""
@@ -9084,6 +9162,22 @@
 msgid "media-type.imaging-cylinder"
 msgstr ""
 
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
+msgstr ""
+
 #. TRANSLATORS: Labels
 msgid "media-type.labels"
 msgstr ""
@@ -15098,6 +15192,9 @@
 #~ msgid "A Samba username is required to export printer drivers"
 #~ msgstr "Для экспорта драйверов принтера требуется имя пользователя Samba"
 
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
 #~ msgid "Export Printers to Samba"
 #~ msgstr "Экспортировать принтеры в Samba"
 
diff --git a/locale/cups_zh_CN.po b/locale/cups_zh_CN.po
index 818df30..c1dd080 100644
--- a/locale/cups_zh_CN.po
+++ b/locale/cups_zh_CN.po
@@ -12,7 +12,7 @@
 msgstr ""
 "Project-Id-Version: CUPS 2.3\n"
 "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
-"POT-Creation-Date: 2019-08-23 09:13-0400\n"
+"POT-Creation-Date: 2019-12-18 20:19-0500\n"
 "PO-Revision-Date: 2018-10-09 00:21-0500\n"
 "Last-Translator: Mingcong Bai <jeffbai@aosc.io>\n"
 "Language-Team: Chinese (Simplified)\n"
@@ -1538,6 +1538,9 @@
 msgid "--not expression        Unary NOT of expression"
 msgstr ""
 
+msgid "--pam-service service   Use the named PAM service"
+msgstr ""
+
 msgid "--path regex            Match resource path to regular expression"
 msgstr ""
 
@@ -1708,6 +1711,9 @@
 msgid "-95"
 msgstr "-95"
 
+msgid "-A                      Enable authentication"
+msgstr ""
+
 msgid "-C                      Send requests using chunking (default)"
 msgstr ""
 
@@ -1879,6 +1885,9 @@
 msgid "-d destination          Set the named destination as the server default"
 msgstr ""
 
+msgid "-d destination          Specify the destination"
+msgstr ""
+
 msgid "-d name=value           Set named variable to value"
 msgstr ""
 
@@ -2488,6 +2497,9 @@
 msgid "300dpi"
 msgstr "300 dpi"
 
+msgid "30859 Paint Can Label"
+msgstr ""
+
 msgid "35"
 msgstr "35"
 
@@ -3137,6 +3149,9 @@
 msgid "Cutter"
 msgstr "车床刀具"
 
+msgid "DYMO"
+msgstr ""
+
 msgid "Dark"
 msgstr "暗色"
 
@@ -3226,9 +3241,6 @@
 msgid "Duplexer"
 msgstr "双工器"
 
-msgid "Dymo"
-msgstr "Dymo"
-
 msgid "EPL1 Label Printer"
 msgstr "EPL1 标签打印机"
 
@@ -3882,6 +3894,9 @@
 msgid "Looking for printer."
 msgstr "正在寻找打印机。"
 
+msgid "Main Roll"
+msgstr ""
+
 msgid "Manual Feed"
 msgstr "手动喂纸"
 
@@ -4420,6 +4435,9 @@
 msgid "SSL/TLS Negotiation Error"
 msgstr "SSL/TLS 协商错误"
 
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
 msgid "See Other"
 msgstr "查看其他"
 
@@ -6526,6 +6544,14 @@
 msgid "finishing-template.trim-after-pages"
 msgstr ""
 
+#. TRANSLATORS: Trim After Every Set
+msgid "finishing-template.trim-after-sets"
+msgstr ""
+
+#. TRANSLATORS: Trim After Every Page
+msgid "finishing-template.trim-after-sheets"
+msgstr ""
+
 #. TRANSLATORS: Finishings
 msgid "finishings"
 msgstr ""
@@ -8860,6 +8886,58 @@
 msgid "media-type.cd"
 msgstr ""
 
+#. TRANSLATORS: Photo Advanced Paper
+msgid "media-type.com.hp.advanced-photo"
+msgstr ""
+
+#. TRANSLATORS: Brochure Glossy Paper
+msgid "media-type.com.hp.brochure-glossy"
+msgstr ""
+
+#. TRANSLATORS: Brochure Matte Paper
+msgid "media-type.com.hp.brochure-matte"
+msgstr ""
+
+#. TRANSLATORS: Matte Coverstock
+msgid "media-type.com.hp.cover-matte"
+msgstr ""
+
+#. TRANSLATORS: EcoSMART Lite Paper
+msgid "media-type.com.hp.ecosmart-lite"
+msgstr ""
+
+#. TRANSLATORS: Everyday Glossy Paper
+msgid "media-type.com.hp.everyday-glossy"
+msgstr ""
+
+#. TRANSLATORS: Everyday Matte Paper
+msgid "media-type.com.hp.everyday-matte"
+msgstr ""
+
+#. TRANSLATORS: Extra Heavyweight Paper
+msgid "media-type.com.hp.extra-heavy"
+msgstr ""
+
+#. TRANSLATORS: Intermediate Paper
+msgid "media-type.com.hp.intermediate"
+msgstr ""
+
+#. TRANSLATORS: Mid-Weight Paper
+msgid "media-type.com.hp.mid-weight"
+msgstr ""
+
+#. TRANSLATORS: Inkjet Premium Paper
+msgid "media-type.com.hp.premium-inkjet"
+msgstr ""
+
+#. TRANSLATORS: Photo Premium Paper
+msgid "media-type.com.hp.premium-photo"
+msgstr ""
+
+#. TRANSLATORS: Premium Matte Presentation Paper
+msgid "media-type.com.hp.premium-presentation-matte"
+msgstr ""
+
 #. TRANSLATORS: Continuous
 msgid "media-type.continuous"
 msgstr ""
@@ -9052,6 +9130,22 @@
 msgid "media-type.imaging-cylinder"
 msgstr ""
 
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Plus Glossy II
+msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
+msgstr ""
+
+#. TRANSLATORS: Photo Paper Pro Platinum
+msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
+msgstr ""
+
 #. TRANSLATORS: Labels
 msgid "media-type.labels"
 msgstr ""
@@ -15054,6 +15148,9 @@
 #~ msgid "A Samba username is required to export printer drivers"
 #~ msgstr "需要 Samba 用户名以导出打印机驱动"
 
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
 #~ msgid "Export Printers to Samba"
 #~ msgstr "将打印机导出到 Samba"
 
diff --git a/locale/ipp-strings.c b/locale/ipp-strings.c
index 0e7c09c..40b246c 100644
--- a/locale/ipp-strings.c
+++ b/locale/ipp-strings.c
@@ -576,6 +576,10 @@
 _("finishing-template.trim-after-job");
 /* TRANSLATORS: Trim After Every Page */
 _("finishing-template.trim-after-pages");
+/* TRANSLATORS: Trim After Every Set */
+_("finishing-template.trim-after-sets");
+/* TRANSLATORS: Trim After Every Page */
+_("finishing-template.trim-after-sheets");
 /* TRANSLATORS: Finishings */
 _("finishings");
 /* TRANSLATORS: Finishings */
@@ -1578,6 +1582,32 @@
 _("media-type.cardstock");
 /* TRANSLATORS: CD */
 _("media-type.cd");
+/* TRANSLATORS: Photo Advanced Paper */
+_("media-type.com.hp.advanced-photo");
+/* TRANSLATORS: Brochure Glossy Paper */
+_("media-type.com.hp.brochure-glossy");
+/* TRANSLATORS: Brochure Matte Paper */
+_("media-type.com.hp.brochure-matte");
+/* TRANSLATORS: Matte Coverstock */
+_("media-type.com.hp.cover-matte");
+/* TRANSLATORS: EcoSMART Lite Paper */
+_("media-type.com.hp.ecosmart-lite");
+/* TRANSLATORS: Everyday Glossy Paper */
+_("media-type.com.hp.everyday-glossy");
+/* TRANSLATORS: Everyday Matte Paper */
+_("media-type.com.hp.everyday-matte");
+/* TRANSLATORS: Extra Heavyweight Paper */
+_("media-type.com.hp.extra-heavy");
+/* TRANSLATORS: Intermediate Paper */
+_("media-type.com.hp.intermediate");
+/* TRANSLATORS: Mid-Weight Paper */
+_("media-type.com.hp.mid-weight");
+/* TRANSLATORS: Inkjet Premium Paper */
+_("media-type.com.hp.premium-inkjet");
+/* TRANSLATORS: Photo Premium Paper */
+_("media-type.com.hp.premium-photo");
+/* TRANSLATORS: Premium Matte Presentation Paper */
+_("media-type.com.hp.premium-presentation-matte");
 /* TRANSLATORS: Continuous */
 _("media-type.continuous");
 /* TRANSLATORS: Continuous Long */
@@ -1674,6 +1704,14 @@
 _("media-type.image-setter-paper");
 /* TRANSLATORS: Imaging Cylinder */
 _("media-type.imaging-cylinder");
+/* TRANSLATORS: Photo Paper Plus Glossy II*/
+_("media-type.jp.co.canon-photo-paper-plus-glossy-ii");
+/* TRANSLATORS: Photo Paper Pro Platinum*/
+_("media-type.jp.co.canon-photo-paper-pro-platinum");
+/* TRANSLATORS: Photo Paper Plus Glossy II*/
+_("media-type.jp.co.canon_photo-paper-plus-glossy-ii");
+/* TRANSLATORS: Photo Paper Pro Platinum*/
+_("media-type.jp.co.canon_photo-paper-pro-platinum");
 /* TRANSLATORS: Labels */
 _("media-type.labels");
 /* TRANSLATORS: Colored Labels */
diff --git a/packaging/cups.spec b/packaging/cups.spec
index 90a7b62..82d803e 100644
--- a/packaging/cups.spec
+++ b/packaging/cups.spec
@@ -40,12 +40,12 @@
 
 Summary: CUPS
 Name: cups
-Version: 2.3.1
+Version: 2.3.3
 Release: 0
 Epoch: 1
 License: GPL
 Group: System Environment/Daemons
-Source: https://github.com/apple/cups/releases/download/v2.3.1/cups-2.3.1-source.tar.gz
+Source: https://github.com/apple/cups/releases/download/v2.3.3/cups-2.3.3-source.tar.gz
 Url: http://www.cups.org
 Packager: Anonymous <anonymous@example.com>
 Vendor: Example Corp
diff --git a/ppdc/ppdc-source.cxx b/ppdc/ppdc-source.cxx
index c25d496..b28c472 100644
--- a/ppdc/ppdc-source.cxx
+++ b/ppdc/ppdc-source.cxx
@@ -1743,15 +1743,17 @@
 
   switch (sscanf(name, "%dx%d", &xdpi, &ydpi))
   {
-    case 0 :
-        _cupsLangPrintf(stderr,
-	                _("ppdc: Bad resolution name \"%s\" on line %d of "
-			  "%s."), name, fp->line, fp->filename);
-        break;
     case 1 :
         ydpi = xdpi;
-	break;
-  }
+        break;
+    case 2 :
+        break;
+    default :
+        _cupsLangPrintf(stderr,
+                  _("ppdc: Bad resolution name \"%s\" on line %d of "
+        "%s."), name, fp->line, fp->filename);
+        break;
+}
 
   // Create the necessary PS commands...
   snprintf(command, sizeof(command),
diff --git a/scheduler/printers.c b/scheduler/printers.c
index 8069039..e341bdb 100644
--- a/scheduler/printers.c
+++ b/scheduler/printers.c
@@ -446,7 +446,7 @@
 
   /* cups-version */
   ippAddString(CommonData, IPP_TAG_PRINTER, IPP_TAG_TEXT | IPP_TAG_COPY,
-               "cups-version", NULL, CUPS_SVERSION + 6);
+               "cups-version", NULL, &CUPS_SVERSION[6]);
 
   /* generated-natural-language-supported (no IPP_TAG_COPY) */
   ippAddString(CommonData, IPP_TAG_PRINTER, IPP_TAG_LANGUAGE,
diff --git a/vcnet/config.h b/vcnet/config.h
index 4ad1dc8..76fc7fd 100644
--- a/vcnet/config.h
+++ b/vcnet/config.h
@@ -97,8 +97,8 @@
  * Version of software...
  */
 
-#define CUPS_SVERSION "CUPS v2.3.1"
-#define CUPS_MINIMAL "CUPS/2.3.1"
+#define CUPS_SVERSION "CUPS v2.3.3"
+#define CUPS_MINIMAL "CUPS/2.3.3"
 
 
 /*
diff --git a/xcode/config.h b/xcode/config.h
index 38998ee..5953431 100644
--- a/xcode/config.h
+++ b/xcode/config.h
@@ -18,8 +18,8 @@
  * Version of software...
  */
 
-#define CUPS_SVERSION "CUPS v2.3.1"
-#define CUPS_MINIMAL "CUPS/2.3.1"
+#define CUPS_SVERSION "CUPS v2.3.3"
+#define CUPS_MINIMAL "CUPS/2.3.3"
 
 
 /*